石器LUA战后事件

2019-11-06 10:17 石器战报 网站编辑

今天给大家讲解一下ABLUA里的战后事件,这里的战后时间仅针对和NPC战斗的战后事件。

先看一下下列代码:

C
function Talked(meindex, talkerindex , szMes, color )
	if npc.isFaceToFace(meindex, talkerindex) == 1 then 
		lssproto.windows(talkerindex, "对话框", "确定|取消", 1, char.getWorkInt( meindex, "对象"), "是否要进行神奇的战后事件测试?")
	end
end

function WindowTalked ( meindex, talkerindex, seqno, select, data)
	if npc.isFaceToFace(meindex, talkerindex) == 1 then 
		if select == 1 then
	        bosstable = {1610, -1, -1, -1, -1, -1, -1, -1, -1, -1}
			battleindex = battle.CreateVsEnemy(talkerindex, meindex, bosstable)
		end
	end
end--和NPC战斗结束事件(NPC索引, 战斗索引,胜负)function BattleOver(meindex, battleindex, iswin)
		--iswin表示NPC的输赢,1为NPC输了,0为NPC赢里		if iswin == 1 then			--从0到4循环开始需要搜索位置			for i=0, 4 do
				--这里玩家索引是通过战斗库的getCharOne来获取上方或者下方的索引				--battle.getCharOne中0表示下方,1则表示上方,i则表示位置数值范围0~4
				charaindex = battle.getCharOne(battleindex, i, 0)
				--检查索引是否存在				if char.check(charaindex) == 1 then					--这里就可以增加任意代码了,比如让赢的玩家随机得到一件物品					--做一个奖励的数组。
					itemid = {21000,21002,21003}
					--定义一个随机值
					r = math.random(1, table.getn(itemid))
					--得到物品(当道具栏满的时则无法得到)
					char.Additem(charaindex, itemid[r])
					--系统提示			        char.TalkToCli(charaindex, -1, "恭喜获得"..item.getNameFromNumber(itemid[r]), "青色")
				end
			end
		end
end

function Create(name, metamo, floorid, x, y, dir)
	index = npc.CreateNpc(name, metamo, floorid, x, y, dir)
	if char.check(index) == 1 then		char.setFunctionPointer(index, "对话事件", "Talked", "")
		char.setFunctionPointer(index, "窗口事件", "WindowTalked", "")
		char.setFunctionPointer(index, "战后事件", "BattleOver", "")
	end
end

function main()
	Create("神奇战后事件", 100000, 2000, 50, 50, 4)end


我们重点看function BattleOver(meindex, battleindex, iswin)这个函数,代码中已经做了注释,相信很好理解。


在战后事件可以发挥自己的想象,增加道具,增加各种货币,或者再增加新的NPC等。