ステップコマンド追加

「ステップコマンド追加」の編集履歴(バックアップ)一覧はこちら

ステップコマンド追加」(2006/11/09 (木) 15:01:13) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*クマAIにステップコマンド処理を追加 **注意:処理が重くなったり予期せぬ動作をする場合があるかもしれません **注意2:必ずバックアップを取ってから追加してください *USER_AIフォルダにあるAI.luaの修正 require "./AI/USER_AI/Config.lua" を検索しその真下に下記を追加する ----------------------★------------------------- require "./AI/USER_AI/Command.lua" StepCommand = {0,0,0} -- ステップコマンド格納 SCIndex = 0 -- ステップコマンド用インデックス HERL_ID = {} GHT = GetTick() - 1000 tenko = 0 -----------------------★------------------------- 次に if ( x == MyDestX and y == MyDestY and MOTION_MOVE == GetV(V_MOTION,MyID)) then を検索しその真上に下記を追加 ---------- ▲ステップコマンド入力処理 if GetDistance2(MyID,GetV(V_OWNER,MyID)) <= 14 then local command = InputCommand(x,y) SCIndex = SCIndex + 1 StepCommand[SCIndex] = command TraceAI (" -> Command"..SCIndex.." : "..StepCommand[SCIndex]) if command == 0 then CommandClear() end if (StepCommand[1] == 2 or StepCommand[1] == 8) then JudgeCommand2() if (StepCommand[3] ~= 0) then CommandClear() end return end if (StepCommand[1] == 4 or StepCommand[1] == 5 or StepCommand[1] == 6) then JudgeCommand2() return end if StepCommand[3] ~= 0 then JudgeCommand2() CommandClear() return end else CommandClear() end ---------- ▲ 上記を追加したら次は local rmsg = GetResMsg (myid) を検索しその真下に以下を追加 --------------------------------------★ if ( GHT < GetTick()) then local actors = GetActors () -- ■視野内のオブジェクトを取得して for i,v in ipairs(FRIENDS) do -- ■配列の要素数を数えて IndexFriends = i+1 -- ■インデックスに格納 end HN = 0 for i,v in ipairs(actors) do -- ■視野内のオブジェクトのすべてに対し charaX,charaY = GetV(V_POSITION,v) -- ■座標を取得し charaID = GetV(V_HOMUNTYPE,v) -- ■種類を取得し if (5015519 < v and (0 <= charaID and charaID <= 23) or charaID == 1037 or charaID == 1040 or charaID == 1107 or charaID == 1109 or charaID == 1166 or charaID == 1167 or charaID == 1180 or charaID == 1278 or charaID == 1307 or charaID == 1313 or charaID == 1367 or charaID == 1409 or charaID == 1508 or charaID == 1509 or charaID == 1516 or charaID == 1630 or charaID == 1670 or charaID == 1692 or charaID == 1701 or charaID == 1702 or charaID == 1707 or charaID == 1776 or charaID == 1784) then HN = HN + 1 HERL_ID[HN] = v TraceAI(string.format("Regist Homu %d:%d %d",HN,HERL_ID[HN],charaID)) end end WSaWK = 3 WRoWK = 6 if tenko == 0 then HNum = HN tenko = 1 end GHT = GetTick() + 2000 end --------------------------------------★ 上記全てが追加できたら AIのあるフォルダに新たにCommand.luaファイルを作成する 右クリック→新規作成→テキストドキュメント 作成した新規テキストドキュメント.txtの中に 以下を追加する ------------------------------------------------------- -- 移動先の位置をテンキーの数値で表現し,返す関数 ------------------------------------------------------- function InputCommand(x,y) OwnerX, OwnerY = GetV(V_POSITION,GetV(V_OWNER,MyID)) if x == OwnerX and y == OwnerY then -- 中央:主人の座標(5) return 5 elseif x+1 == OwnerX and y == OwnerY then -- ←:主人の左(4) return 4 elseif x-1 == OwnerX and y == OwnerY then -- →:主人の右(6) return 6 elseif x == OwnerX and y+1 == OwnerY then -- ↓:主人の下(2) return 2 elseif x == OwnerX and y-1 == OwnerY then -- ↑:主人の上(8) return 8 else return 0 end end ------------------------------------------------------- -- ステップコマンドをクリアする関数 ------------------------------------------------------- function CommandClear() StepCommand = {0, 0, 0} SCIndex = 0 end ------------------------------------------------------- HNum = 1 HERL = 84 HERL_LV = 10 PP = 1386 PP_LV = 4 function JudgeCommand2() if (((StepCommand[1] == 2 and StepCommand[2] == 8) or (StepCommand[1] == 8 and StepCommand[2] == 2)) and StepCommand[3] == 5) then -- ★ヒールとピッチャの使用Lv初期化 HERL_LV = 5 -- ★ヒールLvを5に PP_LV = 4 -- ★ピッチャLvを4に TraceAI (string.format("ヒールLvを%dに、ピッチャLvを%dにしました",HERL_LV,PP_LV)) end if StepCommand[1] == 2 and StepCommand[2] == 0 and StepCommand[3] == 0 then -- ★1回2が入力されれば HERL_LV = HERL_LV - 1 -- ★ヒールLvを1段階下げる PP_LV = PP_LV - 1 -- ★ピッチャLvを1段階下げる TraceAI (string.format("ヒールLvを1下げLv%dに、ピッチャLvを1下げLv%dにしました",HERL_LV,PP_LV)) end if StepCommand[1] == 2 and StepCommand[2] == 2 and StepCommand[3] == 0 then -- ★2回2が入力されれば HERL_LV = HERL_LV - 1 -- ★ヒールLvを1段階下げる PP_LV = PP_LV - 1 -- ★ピッチャLvを1段階下げる TraceAI (string.format("ヒールLvを1下げLv%dに、ピッチャLvを1下げLv%dにしました、次回同コマンドによりLv最下位になります",HERL_LV,PP_LV)) end if ((StepCommand[1] == 2 and StepCommand[2] == 2 and StepCommand[3] == 2) or (HERL_LV <= 0 and PP_LV <= 0)) then -- ★3回2が入力されれば HERL_LV = 1 -- ★ヒールLvを1に PP_LV = 1 -- ★ピッチャLvを1に TraceAI (string.format("ヒールLvを%dに、ピッチャLvを%dに下降させました",HERL_LV,PP_LV)) end if StepCommand[1] == 8 and StepCommand[2] == 0 and StepCommand[3] == 0 then -- ★1回8が入力されれば HERL_LV = HERL_LV + 1 -- ★ヒールLvを1段階上げる PP_LV = PP_LV + 1 -- ★ピッチャLvを1段階上げる TraceAI (string.format("ヒールLvを1上げLv%dに、ピッチャLvを1上げLv%dにしました",HERL_LV,PP_LV)) end if StepCommand[1] == 8 and StepCommand[2] == 8 and StepCommand[3] == 0 then -- ★2回8が入力されれば HERL_LV = HERL_LV + 1 -- ★ヒールLvを1段階上げる PP_LV = PP_LV + 1 -- ★ピッチャLvを1段階上げる TraceAI (string.format("ヒールLvを1上げLv%dに、ピッチャLvを1上げLv%dにしました、次回同コマンドによりLv最高位になります",HERL_LV,PP_LV)) end if ((StepCommand[1] == 8 and StepCommand[2] == 8 and StepCommand[3] == 8) or (HERL_LV >= 11 and PP_LV >= 6)) then -- ★3回8が入力されれば HERL_LV = 10 -- ★ヒールLvを10に PP_LV = 5 -- ★ピッチャLvを5に TraceAI (string.format("ヒールLvを%dに、ピッチャLvを%dに上昇させました",HERL_LV,PP_LV)) end if StepCommand[1] == 4 or StepCommand[2] == 4 or StepCommand[3] == 4 then -- ★1度でも4が入力されれば HNum = HNum -1 -- ★ヒール、ピッチャを使用するホムを降順に1つ切り替え if HNum < 1 then -- ★また0を指定しないように処理 HNum = HN end TraceAI (string.format("ID:%dを支援対象に変更しました",HERL_ID[HNum])) CommandClear() end if StepCommand[1] == 6 or StepCommand[2] == 6 or StepCommand[3] == 6 then -- ★1度でも6が入力されれば HNum = HNum + 1 -- ★ヒール、ピッチャを使用するホムを昇順に1つ切り替え if HNum > HN then -- ★また内部に登録されたホムの数よりも増えないように処理 HNum = 1 end TraceAI (string.format("ID:%dを支援対象に変更しました",HERL_ID[HNum])) CommandClear() end if StepCommand[1] == 5 or StepCommand[2] == 5 or StepCommand[3] == 5 then -- ★1度でも5が入力されれば local ifOwner = GetV(V_HOMUNTYPE,GetV(V_OWNER,MyID)) if (ifOwner ~= 18 and ifOwner ~= 4019) then -- ★ケミ、クリエ以外の職業の場合 SkillObject (MyID,HERL_LV,HERL/WSaWK,HERL_ID[HNum]) -- ★ヒールスキルを使用 TraceAI (string.format("ID:%dにヒールLv%dを使用しました",HERL_ID[HNum],HERL_LV)) elseif (ifOwner == 18 or ifOwner == 4019) then -- ★ケミ、クリエの場合 SkillObject (MyID,PP_LV,PP/WRoWK,HERL_ID[HNum]) -- ★ピッチャースキルを使用 TraceAI (string.format("ID:%dにピッチャーLv%dを使用しました",HERL_ID[HNum],PP_LV)) end CommandClear() end end 上記を追加し終えたら ファイル→名前をつけて保存→Command.lua という名前で保存 USER_AIフォルダの中に Command.lua というファイルが作成できていればOK **[[使い方はこちら>こちら]] ---- [[加筆、修正一覧へ>http://www13.atwiki.jp/cocktail/pages/648.html]]
*クマAIにステップコマンド処理を追加 **注意:処理が重くなったり予期せぬ動作をする場合があるかもしれません **注意2:必ずバックアップを取ってから追加してください *USER_AIフォルダにあるAI.luaの修正 require "./AI/USER_AI/Config.lua" を検索しその真下に下記を追加する ----------------------★------------------------- require "./AI/USER_AI/Command.lua" StepCommand = {0,0,0} -- ステップコマンド格納 SCIndex = 0 -- ステップコマンド用インデックス HERL_ID = {} GHT = GetTick() - 1000 tenko = 0 -----------------------★------------------------- 次に if ( x == MyDestX and y == MyDestY and MOTION_MOVE == GetV(V_MOTION,MyID)) then を検索しその真上に下記を追加 ---------- ▲ステップコマンド入力処理 if GetDistance2(MyID,GetV(V_OWNER,MyID)) <= 14 then local command = InputCommand(x,y) SCIndex = SCIndex + 1 StepCommand[SCIndex] = command TraceAI (" -> Command"..SCIndex.." : "..StepCommand[SCIndex]) if command == 0 then CommandClear() end if (StepCommand[1] == 2 or StepCommand[1] == 8) then JudgeCommand2() if (StepCommand[3] ~= 0) then CommandClear() end return end if (StepCommand[1] == 4 or StepCommand[1] == 5 or StepCommand[1] == 6) then JudgeCommand2() return end if StepCommand[3] ~= 0 then JudgeCommand2() CommandClear() return end else CommandClear() end ---------- ▲ 上記を追加したら次は local rmsg = GetResMsg (myid) を検索しその真下に以下を追加 --------------------------------------★ if ( GHT < GetTick()) then local actors = GetActors () -- ■視野内のオブジェクトを取得して for i,v in ipairs(FRIENDS) do -- ■配列の要素数を数えて IndexFriends = i+1 -- ■インデックスに格納 end HN = 0 for i,v in ipairs(actors) do -- ■視野内のオブジェクトのすべてに対し charaX,charaY = GetV(V_POSITION,v) -- ■座標を取得し charaID = GetV(V_HOMUNTYPE,v) -- ■種類を取得し if (5015519 < v and (0 <= charaID and charaID <= 23) or charaID == 1037 or charaID == 1040 or charaID == 1107 or charaID == 1109 or charaID == 1166 or charaID == 1167 or charaID == 1180 or charaID == 1278 or charaID == 1307 or charaID == 1313 or charaID == 1367 or charaID == 1409 or charaID == 1508 or charaID == 1509 or charaID == 1516 or charaID == 1630 or charaID == 1670 or charaID == 1692 or charaID == 1701 or charaID == 1702 or charaID == 1707 or charaID == 1763 or charaID == 1776 or charaID == 1784) then HN = HN + 1 HERL_ID[HN] = v TraceAI(string.format("Regist Homu %d:%d %d",HN,HERL_ID[HN],charaID)) end end WSaWK = 3 WRoWK = 6 if tenko == 0 then HNum = HN tenko = 1 end GHT = GetTick() + 2000 end --------------------------------------★ 上記全てが追加できたら AIのあるフォルダに新たにCommand.luaファイルを作成する 右クリック→新規作成→テキストドキュメント 作成した新規テキストドキュメント.txtの中に 以下を追加する ------------------------------------------------------- -- 移動先の位置をテンキーの数値で表現し,返す関数 ------------------------------------------------------- function InputCommand(x,y) OwnerX, OwnerY = GetV(V_POSITION,GetV(V_OWNER,MyID)) if x == OwnerX and y == OwnerY then -- 中央:主人の座標(5) return 5 elseif x+1 == OwnerX and y == OwnerY then -- ←:主人の左(4) return 4 elseif x-1 == OwnerX and y == OwnerY then -- →:主人の右(6) return 6 elseif x == OwnerX and y+1 == OwnerY then -- ↓:主人の下(2) return 2 elseif x == OwnerX and y-1 == OwnerY then -- ↑:主人の上(8) return 8 else return 0 end end ------------------------------------------------------- -- ステップコマンドをクリアする関数 ------------------------------------------------------- function CommandClear() StepCommand = {0, 0, 0} SCIndex = 0 end ------------------------------------------------------- HNum = 1 HERL = 84 HERL_LV = 10 PP = 1386 PP_LV = 4 function JudgeCommand2() if (((StepCommand[1] == 2 and StepCommand[2] == 8) or (StepCommand[1] == 8 and StepCommand[2] == 2)) and StepCommand[3] == 5) then -- ★ヒールとピッチャの使用Lv初期化 HERL_LV = 5 -- ★ヒールLvを5に PP_LV = 4 -- ★ピッチャLvを4に TraceAI (string.format("ヒールLvを%dに、ピッチャLvを%dにしました",HERL_LV,PP_LV)) end if StepCommand[1] == 2 and StepCommand[2] == 0 and StepCommand[3] == 0 then -- ★1回2が入力されれば HERL_LV = HERL_LV - 1 -- ★ヒールLvを1段階下げる PP_LV = PP_LV - 1 -- ★ピッチャLvを1段階下げる TraceAI (string.format("ヒールLvを1下げLv%dに、ピッチャLvを1下げLv%dにしました",HERL_LV,PP_LV)) end if StepCommand[1] == 2 and StepCommand[2] == 2 and StepCommand[3] == 0 then -- ★2回2が入力されれば HERL_LV = HERL_LV - 1 -- ★ヒールLvを1段階下げる PP_LV = PP_LV - 1 -- ★ピッチャLvを1段階下げる TraceAI (string.format("ヒールLvを1下げLv%dに、ピッチャLvを1下げLv%dにしました、次回同コマンドによりLv最下位になります",HERL_LV,PP_LV)) end if ((StepCommand[1] == 2 and StepCommand[2] == 2 and StepCommand[3] == 2) or (HERL_LV <= 0 and PP_LV <= 0)) then -- ★3回2が入力されれば HERL_LV = 1 -- ★ヒールLvを1に PP_LV = 1 -- ★ピッチャLvを1に TraceAI (string.format("ヒールLvを%dに、ピッチャLvを%dに下降させました",HERL_LV,PP_LV)) end if StepCommand[1] == 8 and StepCommand[2] == 0 and StepCommand[3] == 0 then -- ★1回8が入力されれば HERL_LV = HERL_LV + 1 -- ★ヒールLvを1段階上げる PP_LV = PP_LV + 1 -- ★ピッチャLvを1段階上げる TraceAI (string.format("ヒールLvを1上げLv%dに、ピッチャLvを1上げLv%dにしました",HERL_LV,PP_LV)) end if StepCommand[1] == 8 and StepCommand[2] == 8 and StepCommand[3] == 0 then -- ★2回8が入力されれば HERL_LV = HERL_LV + 1 -- ★ヒールLvを1段階上げる PP_LV = PP_LV + 1 -- ★ピッチャLvを1段階上げる TraceAI (string.format("ヒールLvを1上げLv%dに、ピッチャLvを1上げLv%dにしました、次回同コマンドによりLv最高位になります",HERL_LV,PP_LV)) end if ((StepCommand[1] == 8 and StepCommand[2] == 8 and StepCommand[3] == 8) or (HERL_LV >= 11 and PP_LV >= 6)) then -- ★3回8が入力されれば HERL_LV = 10 -- ★ヒールLvを10に PP_LV = 5 -- ★ピッチャLvを5に TraceAI (string.format("ヒールLvを%dに、ピッチャLvを%dに上昇させました",HERL_LV,PP_LV)) end if StepCommand[1] == 4 or StepCommand[2] == 4 or StepCommand[3] == 4 then -- ★1度でも4が入力されれば HNum = HNum -1 -- ★ヒール、ピッチャを使用するホムを降順に1つ切り替え if HNum < 1 then -- ★また0を指定しないように処理 HNum = HN end TraceAI (string.format("ID:%dを支援対象に変更しました",HERL_ID[HNum])) CommandClear() end if StepCommand[1] == 6 or StepCommand[2] == 6 or StepCommand[3] == 6 then -- ★1度でも6が入力されれば HNum = HNum + 1 -- ★ヒール、ピッチャを使用するホムを昇順に1つ切り替え if HNum > HN then -- ★また内部に登録されたホムの数よりも増えないように処理 HNum = 1 end TraceAI (string.format("ID:%dを支援対象に変更しました",HERL_ID[HNum])) CommandClear() end if StepCommand[1] == 5 or StepCommand[2] == 5 or StepCommand[3] == 5 then -- ★1度でも5が入力されれば local ifOwner = GetV(V_HOMUNTYPE,GetV(V_OWNER,MyID)) if (ifOwner ~= 18 and ifOwner ~= 4019) then -- ★ケミ、クリエ以外の職業の場合 SkillObject (MyID,HERL_LV,HERL/WSaWK,HERL_ID[HNum]) -- ★ヒールスキルを使用 TraceAI (string.format("ID:%dにヒールLv%dを使用しました",HERL_ID[HNum],HERL_LV)) elseif (ifOwner == 18 or ifOwner == 4019) then -- ★ケミ、クリエの場合 SkillObject (MyID,PP_LV,PP/WRoWK,HERL_ID[HNum]) -- ★ピッチャースキルを使用 TraceAI (string.format("ID:%dにピッチャーLv%dを使用しました",HERL_ID[HNum],PP_LV)) end CommandClear() end end 上記を追加し終えたら ファイル→名前をつけて保存→Command.lua という名前で保存 USER_AIフォルダの中に Command.lua というファイルが作成できていればOK **[[使い方はこちら>こちら]] ---- [[加筆、修正一覧へ>http://www13.atwiki.jp/cocktail/pages/648.html]]

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。