------------------------------------------------- -- ボスAI 1.04 最終更新日:2007/9/7 ------------------------------------------------- require "./AI/USER_AI/MVPBoss.lua" --Bossデータ DEX = 1 --クリエのDEX TeleFlagA = 0 --索敵テレポートを使用するなら1 TeleFlagB = 0 --回避テレポートを使用するなら1 PPFlag = 0 --PPを使用するなら1 Bosschk = 1 --MVP以外のBossも狙うなら1 PPLv = 4 --ケミPPのLv HPPLv = 4 --ホムPPのLv Dis = 10 --ADSのスキル範囲 Packclock = 100 --プログラム全体の稼動クロック Getclock = 2000 --オブジェクト取得クロック times = 0 --プログラムの経過時間 Packtime = 0 --プログラムの稼動予定時間 Gettime = 0 --オブジェクト取得予定時間 Skilltime = 0 --スキルの使用予定時間 MyID = 0 MyOwner = 0 Starget = 0 --ケミターゲットIDを格納 XX,YY = 0,0 --ケミの位置 Firstexe = 0 --初期設定フラグ HPP,HPH = 0,0 --ケミ、ホムの現在HP Skillclock = 0 --スキル使用クロック ------------- ●ターゲット関数● -------------- -- 対象がボスか?(true/false) function IsMVP(id) for i=1,MVPNo do if GetV(7,id) == MVPID[i] then return true end end return false end function IsBoss(id) for i=1,BossNo do if GetV(7,id) == BossID[i] then return true end end return false end ------------- ●以下、メイン関数● -------------- function AI(myid) if GetTick() < Packtime then return end --稼動時間までループ if Firstexe == 0 then --初期設定するなら MyID,MyOwner = myid,GetV(0,myid) --ホムとケミIDを取得 Skillclock = 2100 - 100 * DEX / 15 --ADS使用クロックの変更 HPP,HPH = GetV(8,MyOwner),GetV(8,MyID) --ケミ、ホムの現在HPを取得 Firstexe = 1 end times = GetTick() --現在の時間を取得 Packtime = times + Packclock --次の動作時間を記録 if times >= Gettime then --オブジェクト取得時間になったら Gettime = times + Getclock --次の動作時間を記録 Starget = 0 --ケミターゲットを初期化 XX,YY = GetV(1,MyOwner) --ケミの位置を取得 HPP,HPH = GetV(8,MyOwner),GetV(8,MyID) --ケミ、ホムの現在HPを取得 local actors = GetActors(MyID) --オブジェクト情報を取得 for i,v in ipairs(actors) do --全オブジェクトに対して if IsMVP(v) == true then --MVPBossなら Starget = v --MOBリストに格納 return --抜ける end end if Bosschk == 1 then --通常Bossも狙うなら for i,v in ipairs(actors) do --全オブジェクトに対して if IsBoss(v) == true then --Bossなら Starget = v --MOBリストに格納 end end end end if times >= Skilltime then --スキル使用時間なら if TeleFlagB == 1 then --テレポート使用可なら if GetV(8,MyOwner) < HPP then --ケミHPが減らされたら SkillObject(MyID,1,26,MyOwner) --スキルテレポート return --抜ける elseif GetV(8,MyID) < HPH then --ホムHPが減らされたら SkillObject(MyID,1,26,MyOwner) --スキルテレポート return --抜ける end end if Starget == 0 then --ボスがいないなら Packtime = times + 1000 --稼動クロックを1秒に if PPFlag == 1 then --PP使用可なら if GetV(8,MyOwner) < GetV(10,MyOwner) then --ケミHPが減っていたら SkillObject(MyID,PPLv,231,MyOwner) --オートPP(ケミ) Skilltime = times + Skillclock --次の動作時間を記録 return --抜ける elseif GetV(8,MyID) < GetV(10,MyID) then --ホムHPが減っていたら SkillObject(MyID,HPPLv,231,MyID) --オートPP(ホム) Skilltime = times + Skillclock --次の動作時間を記録 return --抜ける end end if TeleFlagA == 1 then --テレポート使用可なら SkillObject(MyID,1,26,MyOwner) --スキルテレポート return --抜ける end else --ボスがいるなら local EX,EY = GetV(1,Starget) --Mobの現在地を取得 if EX-XX >= -Dis and EX-XX <= Dis then --攻撃範囲内なら if EY-YY >= -Dis and EY-YY <= Dis then SkillObject(MyID,1,490,Starget) --ADS使用 Skilltime = times + Skillclock --次の動作時間を記録 return --抜ける end end end end end -------------------------------------------------