用ABLUA写一个会员证 - 神奇石器发布网
石器时代发布网 - 神奇石器旗下石器私服技术交流网 - 业务联系QQ:420004208

用ABLUA写一个会员证

  • 内容
  • 相关

1、创建个名为vip.lua的lua

2、创建道具函数,函数名定义成vip

3、函数内容如下,注释SA60(神奇的牧羊人)已经写好了,请自行看

--声明道具执行函数(道具索引, 使用者索引, 物品作用对象索引, 道具栏位置)
function vip(itemindex, charaindex, toindex, haveitemindex)
	--获取道具字段
	local data = item.getChar(itemindex, "字段")
	--分割字段取第一个|符号前的字符串并转换整数(这里是定义会员等级)
	local viplevel = other.atoi(other.getString(data, "|", 1))
	--分割字段取第二个|符号前的字符串并转换整数(这里是定义会员有效时间)
	local viptimer = other.atoi(other.getString(data, "|", 2))
	--取当前会员时间
	local oldviptime = char.getInt(charaindex, "会员时间")
	--这里为了保险起见做个索引判断(防止把会员证给非自己对象使用)
	if charaindex ~= toindex then
		return
	end
	--这里我们要考虑第一件事就是使用者已经有会员并使用了不同等级会员证需要怎么处理
	--这里采用如果使用不同会员等级则按照当前时间增加时间,之前时间清空。当然如果你想直接提高等级就换个写法
	--判断当前会员是否还在有效期注意other.time()和os.time()效果是一样的,都是获取当前时间戳,精确为秒
	if oldviptime > other.time() then
		--判断当会员等级和道具字段等级是否一样
		if char.getInt(charaindex, "会员") == viplevel then
			--如果一样的话直接在已有的会员时间再叠加时间viptimer为天数 24*3600则为一天一共有多少秒
			char.setInt(charaindex, "会员时间", oldviptime + viptimer * 24 * 3600)
		else
		    --如果当前会员等级和使用的等级不一样则給于实际的会员等级并重复赋予时间
		    char.setInt(charaindex, "会员", viplevel)
			char.setInt(charaindex, "会员时间", other.time() + viptimer * 24 * 3600)
		end
	else
	    --这里是当会员时间过期后重新写入会员等级和会员时间
	    char.setInt(charaindex, "会员", viplevel)
		char.setInt(charaindex, "会员时间", other.time() + viptimer * 24 * 3600)
	end
	--删除道具
	char.DelItem(charaindex, haveitemindex)
	--系统提示
    char.TalkToCli(charaindex, -1, "恭喜你成为本服"..viplevel.."会员,会员有效期至"..os.date("%Y-%m-%d %H:%M:%S", os.time(), "黄色")
end
4、虽然会员等级和时间都有了,但是没有到期后取消会员的功能,因为我们需要加个

function NetLoopFunction()
	--这里是每分钟检查一次全服在线玩家的会员时间是否到期,如果到期把会员和会员时间清0
	local maxplayer = char.getPlayerMaxNum() - 1
	for i = 0, maxplayer do
	    if char.check(i) == 1 then
			if char.getInt(i, "会员时间") < other.time() then
	            char.setInt(charaindex, "会员", 0)
				--其实这里会员有效时间清不清0可以,这里严谨点还是清了吧。
		        char.setInt(charaindex, "会员时间", 0)
			end
		end
	end
end
5、搞定,之后到main里注册一下定义成ITEM_VIP即可。

function main()
	item.addLUAListFunction( "ITEM_VIP", "vip", "")
end
6、道具代码如下:

初级会员周卡,初级会员周卡,获得初级会员资格7天,1|7,,,,,,,ITEM_VIP,,,,,,21000,24176,100,16,2,0,0,-1,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,0,0,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,1,1,0,0,,0,,0,,0,,0,,0

级会员周卡,级会员周卡,获得级会员资格7天,2|7,,,,,,,ITEM_VIP,,,,,,21001,24176,100,16,2,0,0,-1,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,0,0,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,1,1,0,0,,0,,0,,0,,0,,0

级会员周卡,级会员周卡,获得级会员资格7天,3|7,,,,,,,ITEM_VIP,,,,,,21002,24176,100,16,2,0,0,-1,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,0,0,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,1,1,0,0,,0,,0,,0,,0,,0

版权声明:若无特殊注明,本文皆为《sa60》原创,转载请保留文章出处。

本文链接:用ABLUA写一个会员证 - https://www.sa60.com/post-149.html

本文标签:

用ABLUA写一个会员证