|
石器时代LNS野外游走BOSS_LUA脚本- function WalkingBoss_Init( _MeIndex )
- --战斗索引全域变数
- iBattle[_MeIndex] = 0;
- --初始位置全域变数
- iX[_MeIndex] = 0;
- iY[_MeIndex] = 0;
- Timer[_MeIndex] = 1;
- --设置踩踏回应事件
- if (Char.SetPostOverEvent(nil, "WalkingBoss_Covered", _MeIndex) < 0) then
- print("WalkingBoss_Covered注册事件失败。");
- return false;
- end
- if (Char.SetPreOverEvent(nil, "WalkingBoss_Covered", _MeIndex) < 0) then
- print("WalkingBoss_Covered注册事件失败。");
- return false;
- end
- --设置对话回应事件
- if (Char.SetTalkedEvent(nil, "WalkingBoss_Talked", _MeIndex) < 0) then
- print("WalkingBoss_Talked注册事件失败。");
- return false;
- end
- --设置回圈事件
- if (Char.SetLoopEvent(nil, "WalkingBoss_Walk", _MeIndex,1000) < 0) then
- print("WalkingBoss_Walk注册事件失败。");
- return false;
- end
- --更新
- NLG.UpChar(_MeIndex);
- return true;
- end
- function WalkingBoss_Walk( _MeIndex)
- --设置动作为走路
- local walk = 1;
- NLG.SetAction(_MeIndex,walk);
- --随机よ
- local TM_DIR = math.floor(math.random(0, 7));
- --限定范围
- if ( Char.GetData( _MeIndex, %对象_X%) >= iX[_MeIndex]+math.floor(math.random(3, 7))) then
- TM_DIR = 6;
- elseif ( Char.GetData( _MeIndex, %对象_X%) <= iX[_MeIndex]-math.floor(math.random(3, 7))) then
- TM_DIR = 2;
- elseif ( Char.GetData( _MeIndex, %对象_Y%) <= iY[_MeIndex]-math.floor(math.random(3, 7))) then
- TM_DIR = 4;
- elseif ( Char.GetData( _MeIndex, %对象_Y%) >= iY[_MeIndex]+math.floor(math.random(3, 7))) then
- TM_DIR = 0;
- end
- --走路
- if(NLG.WalkMove(_MeIndex,TM_DIR) ~= 0) then
- NLG.WalkMove(_MeIndex,math.floor(math.random(0, 7)));
- end
- --设置よ
- NLG.CharLook(_MeIndex,TM_DIR);
- if Timer[_MeIndex] <= 300 then
- Timer[_MeIndex] = Timer[_MeIndex] + 1;
- else
- local TM_Buff = "[全服通告]" .. Char.GetData(_MeIndex,%对象_原名%) .."在"..TM_MapName[iRdSlMap[_MeIndex]].."作乱,坐标为"..Char.GetData(_MeIndex,%对象_X%)..","..Char.GetData(_MeIndex,%对象_Y%).."。";
- NLG.TalkToCli(-1, TM_Buff, %红色%, 0, -1);
- Timer[_MeIndex] = 1;
- end
- return ;
- end
- function WalkingBoss_Covered( _MeIndex, _PlayerIndex )
- --判断踩中了什么
- if( Char.GetData(_PlayerIndex,%对象_脸%) == 0)then
- return;
- else
- --设置站立动作
- NLG.SetAction(_MeIndex,0);
- NLG.TalkToCli(_PlayerIndex, "呼噜呼噜呼噜噜…………", %黄色%, 0, _MeIndex)
- --敌人阵列信息
- local TM_EnemyIdAr = iBossList;
- local TMP_level = iBossRs[_MeIndex][1];
- local TMP_slt = iBossRs[_MeIndex][2];
- --保存战斗索引
- iBattle[_MeIndex] = NLG.CreateBattle( _PlayerIndex, _MeIndex, nil, TM_EnemyIdAr[TMP_level][TMP_slt]);
- --设置战斗胜利事件
- Battle.SetWinEvent("data/npc/lua/walkingboss/walkingboss.lua","WalkingBoss_BattleOver",iBattle[_MeIndex]);
- --取消踩踏回应事件
- Char.SetPreOverEvent(nil, nil, _MeIndex);
- Char.SetPostOverEvent(nil, nil, _MeIndex);
- --取消对话回应事件并设置新对话回应事件
- Char.SetTalkedEvent(nil, nil, _MeIndex);
- Char.SetTalkedEvent(nil, "WalkingBoss_Talked2", _MeIndex);
- --取消回圈事件并设置新回圈事件(用作检查战斗是否结束)
- Char.SetLoopEvent(nil, nil, _MeIndex,100);
- Char.SetLoopEvent(nil, "WalkingBoss_Check", _MeIndex,500);
- --更新
- NLG.UpChar(_MeIndex);
- end
- return ;
- end
- function WalkingBoss_BattleOver( _BattleIndex, _CreateIndex)
- --取消检查战斗是否结束的回圈事件
- Char.SetLoopEvent(nil, nil, _CreateIndex,1000);
- --减少统计只数
- iCounter = iCounter - 1;
- local PlayerIndex = {-1,-1,-1,-1,-1};
- local count = 1;
- local i = 0;
- local TMP_level = iBossRs[_CreateIndex][1];
- local Tmp_Int;
- --获得战斗中的玩家索引
- while (count < 6) do
- PlayerIndex[count] = Battle.GetPlayIndex(_BattleIndex,0,count-1);
- if(PlayerIndex[count] >= 0) then
- randoma=math.floor(math.random(1, 5000))
- randomb=math.floor(math.random(1, 100))
- if(randoma == 3888)then
- iPrizeList[TMP_level]={22624,22624,22624,22624,22624,22624,22624,22624};
- end
- if(randoma == 1666)then
- iPrizeList[TMP_level]={22624,22624,22624,22624,22624,22624,22624,22624};
- end
- if(randomb == 30)then
- iPrizeList[TMP_level]={22624,22624,22624,22624,22624,22624,22624,22624};
- end
- i = i + 1;
- Tmp_Int = math.floor(math.random(1,8))
- if( iPrizeList[TMP_level][Tmp_Int] >= 0) then
- if(NLG.GiveItem( PlayerIndex[count] , iPrizeList[TMP_level][Tmp_Int]) <= 0)then
- NLG.TalkToCli(PlayerIndex[count], "道具栏位不足!", %黄色%, 0, -1);
- end
- end
- NLG.TalkToCli(PlayerIndex[count], "呼噜噜噜噜噜…………(似乎是打输了很不甘愿的样子…)", %黄色%, 0, _CreateIndex);
- else
- print(NL.GetErrorStr());
- end
- count = count + 1 ;
- end
- --删除NPC
- local Tmp_Buff;
- if( i == 1) then
- Tmp_Buff = "[全服通告]≮勇士≯"..Char.GetData(PlayerIndex[1],%对象_原名%).."打倒了"..Char.GetData(_CreateIndex, %对象_原名%).. ",还有暴走的宠物"..iCounter.."个。";
- NLG.TalkToCli(-1,Tmp_Buff , %绿色%, 0, -1);
- elseif( i == 2) then
- Tmp_Buff = "[全服通告]≮勇士≯"..Char.GetData(PlayerIndex[1],%对象_原名%).."、"..Char.GetData(PlayerIndex[2],%对象_原名%) .."打倒了"..Char.GetData(_CreateIndex, %对象_原名%).. ",还有暴走的宠物"..iCounter.."个。";
- NLG.TalkToCli(-1,Tmp_Buff , %红色%, 0, -1);
- elseif( i == 3) then
- Tmp_Buff = "[全服通告]≮勇士≯"..Char.GetData(PlayerIndex[1],%对象_原名%).."、"..Char.GetData(PlayerIndex[2],%对象_原名%) .."、"..Char.GetData(PlayerIndex[3],%对象_原名%).."打倒了"..Char.GetData(_CreateIndex, %对象_原名%).. ",还有暴走的宠物"..iCounter.."个。";
- NLG.TalkToCli(-1, Tmp_Buff, %红色%, 0, -1);
- elseif( i == 4) then
- Tmp_Buff = "[全服通告]≮勇士≯"..Char.GetData(PlayerIndex[1],%对象_原名%).."、"..Char.GetData(PlayerIndex[2],%对象_原名%) .."、"..Char.GetData(PlayerIndex[3],%对象_原名%).."、"..Char.GetData(PlayerIndex[4],%对象_原名%).."打倒了"..Char.GetData(_CreateIndex, %对象_原名%).. ",还有暴走的宠物"..iCounter.."个。";
- NLG.TalkToCli(-1, Tmp_Buff, %红色%, 0, -1);
- elseif( i == 5) then
- Tmp_Buff = "[全服通告]≮勇士≯"..Char.GetData(PlayerIndex[1],%对象_原名%).."、"..Char.GetData(PlayerIndex[2],%对象_原名%) .."、"..Char.GetData(PlayerIndex[3],%对象_原名%).."、"..Char.GetData(PlayerIndex[4],%对象_原名%).."、 "..Char.GetData(PlayerIndex[5],%对象_原名%).."打倒了"..Char.GetData(_CreateIndex, %对象_原名%).. ",还有暴走的宠物"..iCounter.."个。";
- NLG.TalkToCli(-1, Tmp_Buff, %红色%, 0, -1);
- end
- NL.DelNpc(_CreateIndex);
- return;
- end
- function WalkingBoss_Talked( _MeIndex, _PlayerIndex, _Msg, _Color, _Channel)
- --检查玩家是否站在NPC面前
- if(NLG.CheckInFront(_PlayerIndex, _MeIndex, 2) == false) then
- return ;
- end
- --面向玩家
- local i;
- i = Char.GetData(_PlayerIndex, %对象_方向%);
- if i >= 4 then
- i = i - 4;
- else
- i = i + 4;
- end
- Char.SetData(_MeIndex, %对象_方向%,i);
- NLG.UpChar( _MeIndex);
- --设置站立动作
- NLG.SetAction(_MeIndex,0);
- NLG.TalkToCli(_PlayerIndex, "呼噜呼噜噜…………", %黄色%, 0, _MeIndex);
- --敌人阵列信息
- local TM_EnemyIdAr = iBossList;
- local TMP_level = iBossRs[_MeIndex][1];
- local TMP_slt = iBossRs[_MeIndex][2];
- --保存战斗索引
- iBattle[_MeIndex] = NLG.CreateBattle( _PlayerIndex, _MeIndex, nil, TM_EnemyIdAr[TMP_level][TMP_slt]);
- --设置战斗胜利事件
- Battle.SetWinEvent("data/npc/lua/walkingboss/walkingboss.lua","WalkingBoss_BattleOver",iBattle[_MeIndex]);
- --取消踩踏回应事件
- Char.SetPreOverEvent(nil, nil, _MeIndex);
- Char.SetPostOverEvent(nil, nil, _MeIndex);
- --取消对话回应事件并设置新对话回应事件
- Char.SetTalkedEvent(nil, nil, _MeIndex);
- Char.SetTalkedEvent(nil, "WalkingBoss_Talked2", _MeIndex);
- --取消回圈事件并设置新回圈事件(用作检查战斗是否结束)
- Char.SetLoopEvent(nil, nil, _MeIndex,100);
- Char.SetLoopEvent(nil, "WalkingBoss_Check", _MeIndex,500);
- --更新
- NLG.UpChar(_MeIndex);
- return;
- end
- function WalkingBoss_Talked2( _MeIndex, _PlayerIndex, _Msg, _Color, _Channel)
- --检查玩家是否站在NPC面前
- if(NLG.CheckInFront(_PlayerIndex, _MeIndex, 1) == false) then
- return ;
- end
- --正在战斗中的对话事件
- NLG.TalkToCli(_PlayerIndex, "呼噜噜噜~~~!", %黄色%, 0, _MeIndex);
- NLG.TalkToCli(_PlayerIndex, Char.GetData( _PlayerIndex,%对象_原名%) .. ":(似乎已经有人在战斗了,我想我还是去看看有没有其他的宠物在作乱吧。)", _Color, 0);
- return ;
- end
- function WalkingBoss_Check( _MeIndex)
- --此为检查战斗是否结束的函数
- -- print("ING");
- local PlayerIndex = {-1,-1,-1,-1,-1};
- local count = 1;
- --获取战斗中玩家索引
- while (count < 6) do
- PlayerIndex[count] = Battle.GetPlayIndex(iBattle[_MeIndex],0,count-1);
- count = count + 1 ;
- end
- --如玩家索引不全为零则战斗尚未结束
- --否则判定战斗结束
- --因为如果战斗胜利
- --战斗胜利事件中取消了此回圈事件
- --所以在此可判定战斗失败
- if(PlayerIndex[1] ~=-1 or PlayerIndex[2] ~=-1 or PlayerIndex[3] ~=-1 or PlayerIndex[4] ~=-1 or PlayerIndex[5] ~=-1) then
- --战斗中
- return;
- else
- --战斗失败重设踩踏回应事件
- Char.SetPreOverEvent(nil, nil, _MeIndex);
- Char.SetPreOverEvent(nil, "WalkingBoss_Covered", _MeIndex);
- Char.SetPostOverEvent(nil, nil, _MeIndex);
- Char.SetPostOverEvent(nil, "WalkingBoss_Covered", _MeIndex);
- --战斗失败重设对话回应事件
- Char.SetTalkedEvent(nil, nil, _MeIndex);
- Char.SetTalkedEvent(nil, "WalkingBoss_Talked", _MeIndex);
- --战斗失败重设回圈事件
- Char.SetLoopEvent(nil, nil, _MeIndex,1500);
- Char.SetLoopEvent(nil, "WalkingBoss_Walk", _MeIndex,1000);
- --更新
- NLG.UpChar(_MeIndex);
- return;
- end
- end
复制代码 |
|