今天给大家讲解一下ABLUA里的战后事件,这里的战后时间仅针对和NPC战斗的战后事件。
先看一下下列代码:
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等。