石器时代用LUA写一个幸运星功能

话不多说,直接开整

1、建立个LUA文件为luckstar.lua

2、代码内容如下,已经把注释写在内容里,直接看即可

--net这个函数我前面就讲解过了,需要把下面定义的那个函数放在这个函数里执行
function NetLoopFunction()
	--定义当前时间小时数
	Hour = tonumber(os.date("%H", os.time()))
	--摩尔求余数,当前时间小数数除60,余数为0的时候则开始执行
    if math.mod(Hour, 60) == 0 then
		--下面定义的函数
		luckstar()
	end
end

--先定义一个函数
function luckstar()
	--定义一个变量,char.getPlayerMaxNum()为获取cf定义的最大人数,-1是因为索引要从0开始
	local maxplayer = char.getPlayerMaxNum() - 1
	--定义一个数组为道具列表,可自定添加道具
	local itemlist = {21000, 21001, 21002, 21003, 21004, 21005}
	--定义一个变量,随机从全部玩家索引里抽取一个
	local start = math.random(maxplayer)
	--开始循环索引了
	for i = 0, maxplayer do
		--定义获奖玩家索引,要抽取一个玩家,当然是从start获取一个值,再加上循环的变量
		charaindex = start + i
		--这里判断当索引值大于最大玩家索引则再次随机抽取一个
		if charaindex > maxplayer then
			charaindex = math.random(maxplayer)
		end
		--检查索引是否存在
		if char.check(charaindex) == 1 then
			--要判断玩家不离线,0是在线,1是离线
			if char.getWorkInt(charaindex, "离线") ==  0 then
				--定义随机变量1~50
				rnd = math.random(50)
				--当小于等于25的时候则增加活力
				if rnd <= 25 then
					char.setInt(charaindex, "活力", char.setInt(charaindex, "活力") + 50)
					char.talkToAllServer("恭喜玩家" .. char.getChar(charaindex, "名字") .. "幸运获得50点活力")
				else
				    --反之则抽取上面定义的数组里的道具列表随机抽取一个道具给予奖励
					i = math.random(1, table.getn(itemlist))
					npc.AddItem(charaindex, itemlist[i])
					char.talkToAllServer("恭喜玩家" .. char.getChar(charaindex, "名字") .. "幸运获得" .. item.getNameFromNumber(itemlist[i]))
                end
				--注意这里,既然是每次抽取一位,这里一定要返回,否则会继续循环下面的数,将会再次抽取。
				return
			end
		end
	end
end



function data()
    NetLoopFunction()
end

function main()
	data()
end

这里不需要写在netloopfunction.lua里,而是重新写在新文件里,一样可以执行。


发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。