// Prototype // for AI Command void OnAICommand(int charaID, int aiID, int cmd); // for AI partner void AI_Partner_Free(int charaID, int id); // AI partner 自由 void AI_Partner_Attack(int charaID, int id); // AI partner 攻擊 void AI_Partner_Defense(int charaID, int id); // AI partner 防禦 void AI_Partner_Stop(int charaID, int id); // AI partner 停止 // Special Needs void AI_Attack(int charaID, int id); // 此種AI隨便放幾隻,就會自己打得很爽很精彩的那種,絕無冷場型 void AI_Idle(int charaID, int id); // 站得一動也不動,打也不還手,銅像型 void AI_AssBug(int charaID, int id); // 跟會跟隨跟鎖定 // for 單機 void AI_Guard(int charaID, int id); // 小兵,只會畏畏縮縮左右側移出小招,絕不輕言團結刁難玩家,生存的意義是被砍 void AI_Captain(int charaID, int id); // 小兵隊長,攻擊慾望稍強偶爾放小絕,但因領固定薪水便意興闌珊,偶爾會有令人驚豔的演出 void AI_Boss(int charaID, int id); // 頭目,小絕大絕魔化氣爆無一不精,地上招,空中招,讓玩家覺得難打為他的樂趣 void AI_Shooter(int charaID, int id); // 約等於弓箭手角色,遠遠放冷箭,玩家一過去就敗逃,人緣值 = 0 // for 網路 BOT void AI_Easy(int charaID, int id); // 網路玩法,見人就砍,簡單型 void AI_Normal(int charaID, int id); // 網路玩法,見人就砍,中等型 void AI_Hard(int charaID, int id); // 網路玩法,見人就砍,厲害型 // 使用物品, 換武器, void OnAICommand(int charaID, int aiID, int cmd) { if(IsCharaDead(aiID)) return; ClearAIAllBehavior(aiID); SetAICommand(charaID, aiID, cmd); if(cmd == AI_COMMAND_STOP) { Print("Set AI Command Stop\n"); AI_Partner_Stop(charaID, aiID); if(GetCharaAttrib(charaID, CHARA_BODY_TYPE) == BODY_TYPE_WOMAN) CharaSay(aiID, MSG_AI1_KAI, "ai1_kai_001"); else CharaSay(aiID, MSG_AI1_MIA, "ai1_mia_001"); } else if(cmd == AI_COMMAND_FREE) { Print("Set AI Command Free\n"); AI_Partner_Free(charaID, aiID); if(GetCharaAttrib(charaID, CHARA_BODY_TYPE) == BODY_TYPE_WOMAN) CharaSay(aiID, MSG_AI2_KAI, "ai2_kai_001"); else CharaSay(aiID, MSG_AI2_MIA, "ai2_mia_001"); } else if(cmd == AI_COMMAND_ATTACK) { Print("Set AI Command Attack\n"); AI_Partner_Attack(charaID, aiID); if(GetCharaAttrib(charaID, CHARA_BODY_TYPE) == BODY_TYPE_WOMAN) CharaSay(aiID, MSG_AI3_KAI, "ai3_kai_001"); else CharaSay(aiID, MSG_AI3_MIA, "ai3_mia_001"); } else if(cmd == AI_COMMAND_DEFENSE) { Print("Set AI Command Defense\n"); AI_Partner_Defense(charaID, aiID); if(GetCharaAttrib(charaID, CHARA_BODY_TYPE) == BODY_TYPE_WOMAN) CharaSay(aiID, MSG_AI4_KAI, "ai4_kai_001"); else CharaSay(aiID, MSG_AI4_MIA, "ai4_mia_001"); } else { Print("Set AI Command Free\n"); AI_Partner_Free(charaID, aiID); if(GetCharaAttrib(charaID, CHARA_BODY_TYPE) == BODY_TYPE_WOMAN) CharaSay(aiID, MSG_AI2_KAI, "ai2_kai_001"); else CharaSay(aiID, MSG_AI2_MIA, "ai2_mia_001"); } } // AI partner 自由 void AI_Partner_Free(int charaID, int aiID) { ClearAIAllBehavior(aiID); SetAITitle(aiID, AI_TITLE_PARTNER); SetAIAttrib(aiID, AI_LOOK_RANGE, 500); // 視線距離,預設200 SetAIAttrib(aiID, AI_LOOK_ANGLE, 360); // 視線角度,預設180度 SetAIAttrib(aiID, AI_ATTACK_RATE, 70); // 攻擊機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_ATTACK_RANGE, 100); // 攻擊範圍,預設80 SetAIAttrib(aiID, AI_DEFENSE_RATE, 80); // 防禦機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_LEAVE_RANGE, 500); // 跟follow的人距離多遠,預設200 SetAIAttrib(aiID, AI_CHIFLARE_RATE, 20); // 氣爆機率,機率預設0 SetAIAttrib(aiID, AI_ROLLING_RATE, 80); // AI被打倒後是否滾動的機率,機率預設0 SetAIAttrib(aiID, AI_DEMON_RATE, 20); // AI魔化機率,預設為0 // SetAIAttrib(aiID, AI_DODGE_RATE, 50); // 逃跑機率(0 ~ 100),機率預設50 // SetAIAttrib(aiID, AI_JUMP_RATE, 50); // 跳躍機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_DASH_RATE, 50); // 速移機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_WALKSPECIALLINK, 1); // 是否可以走特殊的link,預設0 SetAIAttrib(aiID, AI_ATTACK_STRING, "X", "^X", "vX", "^^X", "v^X", "Y", "^Y", "vY", "^^Y", "v^Y", "X+Y", "^X+Y", "^^X+Y", "B+X+Y"); // AI亂數攻擊時會使用的按鍵,預設為上左右X,上左右Y SetAIAttrib(aiID, AI_MOVE_SPEED, 1); // AI走路速度,(0.0 ~ 1.0), 預設1.0f, 巡邏速度不受此限制 SetAIAttrib(aiID, AI_THINK_SPEED, 100); // AI思考速度, from 10 - 100 SetAIAttrib(aiID, AI_BREAK_DEFENSE, 70); // AI破防機率 SetAIAttrib(aiID, AI_COUNTERATTACK_RATE, 70); // AI防禦反擊機率 SetAIAttrib(aiID, AI_SUPERATTACK_RATE, 70); // 連招設定 SetAIAttrib(aiID, AI_COMBO_RATE, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 雙刺 SetAIAttrib(aiID, AI_COMBO_RATE, 2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 匕首 SetAIAttrib(aiID, AI_COMBO_RATE, 3, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 劍 SetAIAttrib(aiID, AI_COMBO_RATE, 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 槍 SetAIAttrib(aiID, AI_COMBO_RATE, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 刀 SetAIAttrib(aiID, AI_COMBO_RATE, 6, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 錘 SetAIAttrib(aiID, AI_COMBO_RATE, 7, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 指虎 SetAIAttrib(aiID, AI_COMBO_RATE, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 武士刀 SetAIAttrib(aiID, AI_COMBO_RATE, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 忍者刀 SetAIBehavior(aiID, AI_STATE_SEARCH, AI_SEARCH_FOLLOW, 100, charaID); SetAIBehavior(aiID, AI_STATE_LOCK, AI_LOCK_ONE_TARGET, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DIRECT, 50); // SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_NOMOVE, 50); // SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_SHIFTMOVE, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DASH_FRONT, 50); // SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_FARAWAY, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DASH_BACK, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_JUMP_SIDE, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_JUMP, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_MOVE_SIDE, 50); SetAIBehavior(aiID, AI_STATE_ATTACK, AI_ATTACK_RANDOM, 50); SetAIBehavior(aiID, AI_STATE_ATTACK, AI_ATTACK_COMBO, 50); UpdateAIBehavior(aiID); } // AI partner 攻擊 void AI_Partner_Attack(int charaID, int aiID) { ClearAIAllBehavior(aiID); AIPerform(aiID, AI_PERFORM_MOVETOCHARA, charaID); // id, stop range 50, max run time 10. SetAITitle(aiID, AI_TITLE_PARTNER); SetAIAttrib(aiID, AI_LOOK_RANGE, 500); // 視線距離,預設200 SetAIAttrib(aiID, AI_LOOK_ANGLE, 360); // 視線角度,預設180度 SetAIAttrib(aiID, AI_ATTACK_RATE, 90); // 攻擊機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_ATTACK_RANGE, 200); // 攻擊範圍,預設80 SetAIAttrib(aiID, AI_DEFENSE_RATE, 50); // 防禦機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_LEAVE_RANGE, 500); // 跟follow的人距離多遠,預設200 SetAIAttrib(aiID, AI_CHIFLARE_RATE, 50); // 氣爆機率,機率預設0 SetAIAttrib(aiID, AI_ROLLING_RATE, 80); // AI被打倒後是否滾動的機率,機率預設0 SetAIAttrib(aiID, AI_DEMON_RATE, 30); // AI魔化機率,預設為0 // SetAIAttrib(aiID, AI_DODGE_RATE, 50); // 逃跑機率(0 ~ 100),機率預設50 // SetAIAttrib(aiID, AI_JUMP_RATE, 50); // 跳躍機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_DASH_RATE, 50); // 速移機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_WALKSPECIALLINK, 1); // 是否可以走特殊的link,預設0 SetAIAttrib(aiID, AI_ATTACK_STRING, "X", "^X", "vX", "^^X", "v^X", "Y", "^Y", "vY", "^^Y", "v^Y", "X+Y", "^X+Y", "^^X+Y", "B+X+Y"); // AI亂數攻擊時會使用的按鍵,預設為上左右X,上左右Y SetAIAttrib(aiID, AI_MOVE_SPEED, 1); // AI走路速度,(0.0 ~ 1.0), 預設1.0f, 巡邏速度不受此限制 SetAIAttrib(aiID, AI_THINK_SPEED, 100); // AI思考速度, from 10 - 100 SetAIAttrib(aiID, AI_BREAK_DEFENSE, 70); // AI破防機率 SetAIAttrib(aiID, AI_COUNTERATTACK_RATE, 90); // AI防禦反擊機率 SetAIAttrib(aiID, AI_SUPERATTACK_RATE, 70); // 連招設定 SetAIAttrib(aiID, AI_COMBO_RATE, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 雙刺 SetAIAttrib(aiID, AI_COMBO_RATE, 2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 匕首 SetAIAttrib(aiID, AI_COMBO_RATE, 3, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 劍 SetAIAttrib(aiID, AI_COMBO_RATE, 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 槍 SetAIAttrib(aiID, AI_COMBO_RATE, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 刀 SetAIAttrib(aiID, AI_COMBO_RATE, 6, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 錘 SetAIAttrib(aiID, AI_COMBO_RATE, 7, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 指虎 SetAIAttrib(aiID, AI_COMBO_RATE, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 武士刀 SetAIAttrib(aiID, AI_COMBO_RATE, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 忍者刀 SetAIBehavior(aiID, AI_STATE_SEARCH, AI_SEARCH_FOLLOW, 100, charaID); SetAIBehavior(aiID, AI_STATE_LOCK, AI_LOCK_ONE_TARGET, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DIRECT, 50); // SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_NOMOVE, 50); // SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_SHIFTMOVE, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DASH_FRONT, 50); // SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_FARAWAY, 50); // SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DASH_BACK, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_JUMP_SIDE, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_JUMP, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_MOVE_SIDE, 50); SetAIBehavior(aiID, AI_STATE_ATTACK, AI_ATTACK_RANDOM, 50); SetAIBehavior(aiID, AI_STATE_ATTACK, AI_ATTACK_COMBO, 50); UpdateAIBehavior(aiID); } // AI partner 防禦 void AI_Partner_Defense(int charaID, int aiID) { ClearAIAllBehavior(aiID); AIPerform(aiID, AI_PERFORM_MOVETOCHARA, charaID); // id, stop range 50, max run time 10. SetAITitle(aiID, AI_TITLE_PARTNER); SetAIAttrib(aiID, AI_LOOK_RANGE, 500); // 視線距離,預設200 SetAIAttrib(aiID, AI_LOOK_ANGLE, 360); // 視線角度,預設180度 SetAIAttrib(aiID, AI_ATTACK_RATE, 75); // 攻擊機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_ATTACK_RANGE, 80); // 攻擊範圍,預設80 SetAIAttrib(aiID, AI_DEFENSE_RATE, 80); // 防禦機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_LEAVE_RANGE, 50); // 跟follow的人距離多遠,預設200 SetAIAttrib(aiID, AI_CHIFLARE_RATE, 0); // 氣爆機率,機率預設0 SetAIAttrib(aiID, AI_ROLLING_RATE, 50); // AI被打倒後是否滾動的機率,機率預設0 SetAIAttrib(aiID, AI_DEMON_RATE, 30); // AI魔化機率,預設為0 // SetAIAttrib(aiID, AI_DODGE_RATE, 50); // 逃跑機率(0 ~ 100),機率預設50 // SetAIAttrib(aiID, AI_JUMP_RATE, 50); // 跳躍機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_DASH_RATE, 30); // 速移機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_WALKSPECIALLINK, 1); // 是否可以走特殊的link,預設0 SetAIAttrib(aiID, AI_ATTACK_STRING, "X", "^X", "vX", "^^X", "v^X", "Y", "^Y", "vY", "^^Y", "v^Y", "X+Y", "^X+Y", "^^X+Y", "B+X+Y"); SetAIAttrib(aiID, AI_MOVE_SPEED, 1); // AI走路速度,(0.0 ~ 1.0), 預設1.0f, 巡邏速度不受此限制 SetAIAttrib(aiID, AI_THINK_SPEED, 100); // AI思考速度, from 10 - 100 SetAIAttrib(aiID, AI_BREAK_DEFENSE, 50); // AI破防機率 SetAIAttrib(aiID, AI_COUNTERATTACK_RATE, 50); // AI防禦反擊機率 SetAIAttrib(aiID, AI_SUPERATTACK_RATE, 50); // 連招設定 SetAIAttrib(aiID, AI_COMBO_RATE, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 雙刺 SetAIAttrib(aiID, AI_COMBO_RATE, 2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 匕首 SetAIAttrib(aiID, AI_COMBO_RATE, 3, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 劍 SetAIAttrib(aiID, AI_COMBO_RATE, 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 槍 SetAIAttrib(aiID, AI_COMBO_RATE, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 刀 SetAIAttrib(aiID, AI_COMBO_RATE, 6, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 錘 SetAIAttrib(aiID, AI_COMBO_RATE, 7, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 指虎 SetAIAttrib(aiID, AI_COMBO_RATE, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 武士刀 SetAIAttrib(aiID, AI_COMBO_RATE, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 忍者刀 SetAIBehavior(aiID, AI_STATE_SEARCH, AI_SEARCH_FOLLOW, 100, charaID); SetAIBehavior(aiID, AI_STATE_LOCK, AI_LOCK_ONE_TARGET, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DIRECT, 50); SetAIBehavior(aiID, AI_STATE_ATTACK, AI_ATTACK_RANDOM, 100); SetAIBehavior(aiID, AI_STATE_ATTACK, AI_ATTACK_COMBO, 100); UpdateAIBehavior(aiID); } // AI partner 停止 void AI_Partner_Stop(int charaID, int aiID) { ClearAIAllBehavior(aiID); AIPerform(aiID, AI_PERFORM_IDLE, 1); SetAITitle(aiID, AI_TITLE_PARTNER); SetAIAttrib(aiID, AI_LOOK_RANGE, 500); // 視線距離,預設200 SetAIAttrib(aiID, AI_LOOK_ANGLE, 360); // 視線角度,預設180度 SetAIAttrib(aiID, AI_ATTACK_RATE, 0); // 攻擊機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_ATTACK_RANGE, 0); // 攻擊範圍,預設80 SetAIAttrib(aiID, AI_DEFENSE_RATE, 100); // 防禦機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_LEAVE_RANGE, 10000); // 跟follow的人距離多遠,預設200 SetAIAttrib(aiID, AI_CHIFLARE_RATE, 0); // 氣爆機率,機率預設0 SetAIAttrib(aiID, AI_ROLLING_RATE, 0); // AI被打倒後是否滾動的機率,機率預設0 SetAIAttrib(aiID, AI_DEMON_RATE, 0); // AI魔化機率,預設為0 // SetAIAttrib(aiID, AI_DODGE_RATE, 50); // 逃跑機率(0 ~ 100),機率預設50 // SetAIAttrib(aiID, AI_JUMP_RATE, 50); // 跳躍機率(0 ~ 100),機率預設50 // SetAIAttrib(aiID, AI_DASH_RATE, 50); // 速移機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_WALKSPECIALLINK, 1); // 是否可以走特殊的link,預設0 SetAIAttrib(aiID, AI_ATTACK_STRING, ""); // AI亂數攻擊時會使用的按鍵,預設為上左右X,上左右Y SetAIAttrib(aiID, AI_MOVE_SPEED, 0); // AI走路速度,(0.0 ~ 1.0), 預設1.0f, 巡邏速度不受此限制 SetAIAttrib(aiID, AI_THINK_SPEED, 20); // AI思考速度, from 10 - 100 SetAIAttrib(aiID, AI_BREAK_DEFENSE, 0); // AI破防機率 SetAIAttrib(aiID, AI_COUNTERATTACK_RATE, 0); // AI防禦反擊機率 SetAIBehavior(aiID, AI_STATE_SEARCH, AI_SEARCH_IDLE, 100, charaID); UpdateAIBehavior(aiID); } /////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////// void AI_Attack(int charaID, int aiID) { ClearAIAllBehavior(aiID); SetAIAttrib(aiID, AI_LOOK_RANGE, 500); // 視線距離,預設200 SetAIAttrib(aiID, AI_LOOK_ANGLE, 360); // 視線角度,預設180度 SetAIAttrib(aiID, AI_ATTACK_RATE, 90); // 攻擊機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_ATTACK_RANGE, 200); // 攻擊範圍,預設80 SetAIAttrib(aiID, AI_DEFENSE_RATE, 100); // 防禦機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_LEAVE_RANGE, 500); // 跟follow的人距離多遠,預設200 SetAIAttrib(aiID, AI_CHIFLARE_RATE, 50); // 氣爆機率,機率預設0 SetAIAttrib(aiID, AI_ROLLING_RATE, 80); // AI被打倒後是否滾動的機率,機率預設0 SetAIAttrib(aiID, AI_DEMON_RATE, 30); // AI魔化機率,預設為0 // SetAIAttrib(aiID, AI_DODGE_RATE, 50); // 逃跑機率(0 ~ 100),機率預設50 // SetAIAttrib(aiID, AI_JUMP_RATE, 50); // 跳躍機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_DASH_RATE, 70); // 速移機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_WALKSPECIALLINK, 1); // 是否可以走特殊的link,預設0 SetAIAttrib(aiID, AI_ATTACK_STRING, "X", "^X", "vX", "^^X", "v^X", "Y", "^Y", "vY", "^^Y", "v^Y", "X+Y", "^X+Y", "^^X+Y", "B+X+Y"); // AI亂數攻擊時會使用的按鍵,預設為上左右X,上左右Y SetAIAttrib(aiID, AI_MOVE_SPEED, 1); // AI走路速度,(0.0 ~ 1.0), 預設1.0f, 巡邏速度不受此限制 SetAIAttrib(aiID, AI_THINK_SPEED, 100); // AI思考速度, from 10 - 100 SetAIAttrib(aiID, AI_BREAK_DEFENSE, 70); // AI破防機率 SetAIAttrib(aiID, AI_COUNTERATTACK_RATE, 90); // AI防禦反擊機率 SetAIAttrib(aiID, AI_SUPERATTACK_RATE, 70); // 連招設定 SetAIAttrib(aiID, AI_COMBO_RATE, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 雙刺 SetAIAttrib(aiID, AI_COMBO_RATE, 2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 匕首 SetAIAttrib(aiID, AI_COMBO_RATE, 3, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 劍 SetAIAttrib(aiID, AI_COMBO_RATE, 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 槍 SetAIAttrib(aiID, AI_COMBO_RATE, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 刀 SetAIAttrib(aiID, AI_COMBO_RATE, 6, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 錘 SetAIAttrib(aiID, AI_COMBO_RATE, 7, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 指虎 SetAIAttrib(aiID, AI_COMBO_RATE, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 武士刀 SetAIAttrib(aiID, AI_COMBO_RATE, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 忍者刀 // SetAIBehavior(aiID, AI_STATE_SEARCH, AI_SEARCH_IDLE, 100); SetAIBehavior(aiID, AI_STATE_SEARCH, AI_SEARCH_RANDOMRUN, 100); // SetAIBehavior(aiID, AI_STATE_SEARCH, AI_SEARCH_FOLLOW, 100); SetAIBehavior(aiID, AI_STATE_LOCK, AI_LOCK_NEAREST_TARGET, 50); // SetAIBehavior(aiID, AI_STATE_LOCK, AI_LOCK_ONE_TARGET, 50, player); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DIRECT, 50); // SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_NOMOVE, 50); // SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_SHIFTMOVE, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DASH_FRONT, 50); // SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_FARAWAY, 50); // SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DASH_BACK, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_JUMP_SIDE, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_JUMP, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_MOVE_SIDE, 50); SetAIBehavior(aiID, AI_STATE_ATTACK, AI_ATTACK_RANDOM, 50); SetAIBehavior(aiID, AI_STATE_ATTACK, AI_ATTACK_COMBO, 50); UpdateAIBehavior(aiID); } void AI_Idle(int charaID, int aiID) { ClearAIAllBehavior(aiID); AIPerform(aiID, AI_PERFORM_IDLE, 1); SetAIAttrib(aiID, AI_LOOK_RANGE, 500); // 視線距離,預設200 SetAIAttrib(aiID, AI_LOOK_ANGLE, 360); // 視線角度,預設180度 SetAIAttrib(aiID, AI_ATTACK_RATE, 0); // 攻擊機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_ATTACK_RANGE, 0); // 攻擊範圍,預設80 SetAIAttrib(aiID, AI_DEFENSE_RATE, 0); // 防禦機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_LEAVE_RANGE, 10000); // 跟follow的人距離多遠,預設200 SetAIAttrib(aiID, AI_CHIFLARE_RATE, 0); // 氣爆機率,機率預設0 SetAIAttrib(aiID, AI_ROLLING_RATE, 0); // AI被打倒後是否滾動的機率,機率預設0 SetAIAttrib(aiID, AI_DEMON_RATE, 0); // AI魔化機率,預設為0 // SetAIAttrib(aiID, AI_DODGE_RATE, 50); // 逃跑機率(0 ~ 100),機率預設50 // SetAIAttrib(aiID, AI_JUMP_RATE, 50); // 跳躍機率(0 ~ 100),機率預設50 // SetAIAttrib(aiID, AI_DASH_RATE, 50); // 速移機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_WALKSPECIALLINK, 1); // 是否可以走特殊的link,預設0 SetAIAttrib(aiID, AI_ATTACK_STRING, ""); // AI亂數攻擊時會使用的按鍵,預設為上左右X,上左右Y SetAIAttrib(aiID, AI_MOVE_SPEED, 0); // AI走路速度,(0.0 ~ 1.0), 預設1.0f, 巡邏速度不受此限制 SetAIAttrib(aiID, AI_THINK_SPEED, 10); // AI思考速度, from 10 - 100 SetAIAttrib(aiID, AI_BREAK_DEFENSE, 0); // AI破防機率 SetAIAttrib(aiID, AI_COUNTERATTACK_RATE, 0); // AI防禦反擊機率 SetAIBehavior(aiID, AI_STATE_SEARCH, AI_SEARCH_IDLE, 0); UpdateAIBehavior(aiID); } void AI_AssBug(int charaID, int aiID) { ClearAIAllBehavior(aiID); SetAIAttrib(aiID, AI_LOOK_RANGE, 500); // 視線距離,預設200 SetAIAttrib(aiID, AI_LOOK_ANGLE, 360); // 視線角度,預設180度 SetAIAttrib(aiID, AI_ATTACK_RATE, 0); // 攻擊機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_ATTACK_RANGE, 500); // 攻擊範圍,預設80 SetAIAttrib(aiID, AI_DEFENSE_RATE, 0); // 防禦機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_LEAVE_RANGE, 500); // 跟follow的人距離多遠,預設200 SetAIAttrib(aiID, AI_CHIFLARE_RATE, 0); // 氣爆機率,機率預設0 SetAIAttrib(aiID, AI_ROLLING_RATE, 0); // AI被打倒後是否滾動的機率,機率預設0 SetAIAttrib(aiID, AI_DEMON_RATE, 0); // AI魔化機率,預設為0 // SetAIAttrib(aiID, AI_DODGE_RATE, 0); // 逃跑機率(0 ~ 100),機率預設50 // SetAIAttrib(aiID, AI_JUMP_RATE, 0); // 跳躍機率(0 ~ 100),機率預設50 // SetAIAttrib(aiID, AI_DASH_RATE, 0); // 速移機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_WALKSPECIALLINK, 1); // 是否可以走特殊的link,預設0 SetAIAttrib(aiID, AI_ATTACK_STRING, ""); // AI亂數攻擊時會使用的按鍵,預設為上左右X,上左右Y SetAIAttrib(aiID, AI_MOVE_SPEED, 1); // AI走路速度,(0.0 ~ 1.0), 預設1.0f, 巡邏速度不受此限制 SetAIAttrib(aiID, AI_THINK_SPEED, 100); // AI思考速度, from 10 - 100 SetAIAttrib(aiID, AI_BREAK_DEFENSE, 0); // AI破防機率 SetAIAttrib(aiID, AI_COUNTERATTACK_RATE, 0); // AI防禦反擊機率 SetAIBehavior(aiID, AI_STATE_SEARCH ,AI_SEARCH_FOLLOW ,100 ,charaID); SetAIBehavior(aiID, AI_STATE_LOCK ,AI_LOCK_ONE_TARGET ,100 ,charaID); SetAIBehavior(aiID, AI_STATE_PREATTACK ,AI_ATTACKMOVE_DIRECT ,100); UpdateAIBehavior(aiID); } void AI_Guard(int charaID, int aiID) { ClearAIAllBehavior(aiID); SetAITitle(aiID, AI_TITLE_GUARD); SetAIAttrib(aiID, AI_LOOK_RANGE, 300); // 視線距離,預設200 SetAIAttrib(aiID, AI_LOOK_ANGLE, 120); // 視線角度,預設180度 SetAIAttrib(aiID, AI_ATTACK_RATE, 70); // 攻擊機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_ATTACK_RANGE, 100); // 攻擊範圍,預設80 SetAIAttrib(aiID, AI_DEFENSE_RATE, 20); // 防禦機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_LEAVE_RANGE, 400); // 跟follow的人距離多遠,預設200 SetAIAttrib(aiID, AI_CHIFLARE_RATE, 0); // 氣爆機率,機率預設0 SetAIAttrib(aiID, AI_ROLLING_RATE, 20); // AI被打倒後是否滾動的機率,機率預設0 SetAIAttrib(aiID, AI_DEMON_RATE, 0); // AI魔化機率,預設為0 // SetAIAttrib(aiID, AI_DODGE_RATE, 50); // 逃跑機率(0 ~ 100),機率預設50 // SetAIAttrib(aiID, AI_JUMP_RATE, 50); // 跳躍機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_DASH_RATE, 0); // 速移機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_WALKSPECIALLINK, 0); // 是否可以走特殊的link,預設0 SetAIAttrib(aiID, AI_ATTACK_STRING, "X", "^X", "vX", "^^X", "v^X", "Y", "^Y", "vY", "^^Y", "v^Y", "X+Y", "^X+Y", "^^X+Y"); // AI亂數攻擊時會使用的按鍵,預設為上左右X,上左右Y SetAIAttrib(aiID, AI_MOVE_SPEED, 0.8); // AI走路速度,(0.0 ~ 1.0), 預設1.0f, 巡邏速度不受此限制 SetAIAttrib(aiID, AI_THINK_SPEED, 50); // AI思考速度, from 10 - 100 SetAIAttrib(aiID, AI_BREAK_DEFENSE, 0); // AI破防機率 SetAIAttrib(aiID, AI_COUNTERATTACK_RATE, 0); // AI防禦反擊機率 SetAIAttrib(aiID, AI_SUPERATTACK_RATE, 0); // SetAIBehavior(aiID, AI_STATE_SEARCH, AI_SEARCH_IDLE, 100); // id, type, num, rate // SetAIBehavior(aiID, AI_STATE_SEARCH, AI_SEARCH_RANDOMRUN, 100); // id, type, num, rate SetAIBehavior(aiID, AI_STATE_SEARCH, AI_SEARCH_FOLLOW, 100, charaID); SetAIBehavior(aiID, AI_STATE_LOCK, AI_LOCK_NEAREST_TARGET, 50); // SetAIBehavior(aiID, AI_STATE_LOCK, AI_LOCK_ONE_TARGET, 50, player); // SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DIRECT, 50); // SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_NOMOVE, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_SHIFTMOVE, 100); SetAIBehavior(aiID, AI_STATE_ATTACK, AI_ATTACK_RANDOM, 100); UpdateAIBehavior(aiID); } void AI_Captain(int charaID, int aiID) { ClearAIAllBehavior(aiID); SetAITitle(aiID, AI_TITLE_CAPTAIN); SetAIAttrib(aiID, AI_LOOK_RANGE, 500); // 視線距離,預設200 SetAIAttrib(aiID, AI_LOOK_ANGLE, 180); // 視線角度,預設180度 SetAIAttrib(aiID, AI_ATTACK_RATE, 80); // 攻擊機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_ATTACK_RANGE, 150); // 攻擊範圍,預設80 SetAIAttrib(aiID, AI_DEFENSE_RATE, 50); // 防禦機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_LEAVE_RANGE, 500); // 跟follow的人距離多遠,預設200 SetAIAttrib(aiID, AI_CHIFLARE_RATE, 20); // 氣爆機率,機率預設0 SetAIAttrib(aiID, AI_ROLLING_RATE, 50); // AI被打倒後是否滾動的機率,機率預設0 SetAIAttrib(aiID, AI_DEMON_RATE, 0); // AI魔化機率,預設為0 // SetAIAttrib(aiID, AI_DODGE_RATE, 50); // 逃跑機率(0 ~ 100),機率預設50 // SetAIAttrib(aiID, AI_JUMP_RATE, 50); // 跳躍機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_DASH_RATE, 10); // 速移機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_WALKSPECIALLINK, 0); // 是否可以走特殊的link,預設0 SetAIAttrib(aiID, AI_ATTACK_STRING, "X", "^X", "vX", "^^X", "v^X", "Y", "^Y", "vY", "^^Y", "v^Y", "X+Y", "^X+Y", "^^X+Y", "B+X+Y"); // AI亂數攻擊時會使用的按鍵,預設為上左右X,上左右Y SetAIAttrib(aiID, AI_MOVE_SPEED, 0.9); // AI走路速度,(0.0 ~ 1.0), 預設1.0f, 巡邏速度不受此限制 SetAIAttrib(aiID, AI_THINK_SPEED, 70); // AI思考速度, from 10 - 100 SetAIAttrib(aiID, AI_BREAK_DEFENSE, 0); // AI破防機率 SetAIAttrib(aiID, AI_COUNTERATTACK_RATE, 50); // AI防禦反擊機率 SetAIAttrib(aiID, AI_SUPERATTACK_RATE, 0); // SetAIBehavior(aiID, AI_STATE_SEARCH, AI_SEARCH_IDLE, 100); // id, type, num, rate // SetAIBehavior(aiID, AI_STATE_SEARCH, AI_SEARCH_RANDOMRUN, 100); // id, type, num, rate SetAIBehavior(aiID, AI_STATE_SEARCH, AI_SEARCH_FOLLOW, 100, charaID); SetAIBehavior(aiID, AI_STATE_LOCK, AI_LOCK_NEAREST_TARGET, 50); // SetAIBehavior(aiID, AI_STATE_LOCK, AI_LOCK_ONE_TARGET, 50, player); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DIRECT, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DASH_FRONT, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DASH_BACK, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_MOVE_SIDE, 50); SetAIBehavior(aiID, AI_STATE_ATTACK, AI_ATTACK_RANDOM, 200); UpdateAIBehavior(aiID); } void AI_Boss(int charaID, int aiID) { ClearAIAllBehavior(aiID); SetAITitle(aiID, AI_TITLE_BOSS); SetAIAttrib(aiID, AI_LOOK_RANGE, 500); // 視線距離,預設200 SetAIAttrib(aiID, AI_LOOK_ANGLE, 360); // 視線角度,預設180度 SetAIAttrib(aiID, AI_ATTACK_RATE, 90); // 攻擊機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_ATTACK_RANGE, 240); // 攻擊範圍,預設80 SetAIAttrib(aiID, AI_DEFENSE_RATE, 70); // 防禦機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_LEAVE_RANGE, 200); // 跟follow的人距離多遠,預設200 SetAIAttrib(aiID, AI_CHIFLARE_RATE, 20); // 氣爆機率,機率預設0 SetAIAttrib(aiID, AI_ROLLING_RATE, 100); // AI被打倒後是否滾動的機率,機率預設0 SetAIAttrib(aiID, AI_DEMON_RATE, 0); // AI魔化機率,預設為0 // SetAIAttrib(aiID, AI_DODGE_RATE, 0); // 逃跑機率(0 ~ 100),機率預設50 // SetAIAttrib(aiID, AI_JUMP_RATE, 5); // 跳躍機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_DASH_RATE, 50); // 速移機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_WALKSPECIALLINK, 1); // 是否可以走特殊的link,預設0 SetAIAttrib(aiID, AI_ATTACK_STRING, "X", "^X", "vX", "^^X", "v^X", "Y", "^Y", "vY", "^^Y", "v^Y", "X+Y", "^X+Y", "^^X+Y", "B+X+Y"); // AI亂數攻擊時會使用的按鍵,預設為上左右X,上左右Y SetAIAttrib(aiID, AI_MOVE_SPEED, 1); // AI走路速度,(0.0 ~ 1.0), 預設1.0f, 巡邏速度不受此限制 SetAIAttrib(aiID, AI_THINK_SPEED, 100); // AI思考速度, from 10 - 100 SetAIAttrib(aiID, AI_BREAK_DEFENSE, 80); // AI破防機率 SetAIAttrib(aiID, AI_COUNTERATTACK_RATE, 100); // AI防禦反擊機率 SetAIAttrib(aiID, AI_SUPERATTACK_RATE, 100); // 連招設定 SetAIAttrib(aiID, AI_COMBO_RATE, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 雙刺 SetAIAttrib(aiID, AI_COMBO_RATE, 2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 匕首 SetAIAttrib(aiID, AI_COMBO_RATE, 3, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 劍 SetAIAttrib(aiID, AI_COMBO_RATE, 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 槍 SetAIAttrib(aiID, AI_COMBO_RATE, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 刀 SetAIAttrib(aiID, AI_COMBO_RATE, 6, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 錘 SetAIAttrib(aiID, AI_COMBO_RATE, 7, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 指虎 SetAIAttrib(aiID, AI_COMBO_RATE, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 武士刀 SetAIAttrib(aiID, AI_COMBO_RATE, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 忍者刀 // SetAIBehavior(aiID, AI_STATE_SEARCH, AI_SEARCH_IDLE, 100); // id, type, num, rate // SetAIBehavior(aiID, AI_STATE_SEARCH, AI_SEARCH_RANDOMRUN, 100); // id, type, num, rate SetAIBehavior(aiID, AI_STATE_SEARCH, AI_SEARCH_FOLLOW, 100, charaID); SetAIBehavior(aiID, AI_STATE_LOCK, AI_LOCK_NEAREST_TARGET, 50); // SetAIBehavior(aiID, AI_STATE_LOCK, AI_LOCK_ONE_TARGET, 50, player); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DIRECT, 60); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DASH_FRONT, 60); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DASH_BACK, 100); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_JUMP_SIDE, 20); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_JUMP, 20); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_MOVE_SIDE, 100); SetAIBehavior(aiID, AI_STATE_ATTACK, AI_ATTACK_RANDOM, 50); SetAIBehavior(aiID, AI_STATE_ATTACK, AI_ATTACK_COMBO, 200); UpdateAIBehavior(aiID); } void AI_Shooter(int charaID, int aiID) { ClearAIAllBehavior(aiID); SetAITitle(aiID, AI_TITLE_SHOOTER); SetAIAttrib(aiID, AI_LOOK_RANGE, 500); // 視線距離,預設200 SetAIAttrib(aiID, AI_LOOK_ANGLE, 120); // 視線角度,預設180度 SetAIAttrib(aiID, AI_ATTACK_RATE, 70); // 攻擊機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_ATTACK_RANGE, 80); // 攻擊範圍,預設80 SetAIAttrib(aiID, AI_DEFENSE_RATE, 70); // 防禦機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_LEAVE_RANGE, 400); // 跟follow的人距離多遠,預設200 SetAIAttrib(aiID, AI_CHIFLARE_RATE, 0); // 氣爆機率,機率預設0 SetAIAttrib(aiID, AI_ROLLING_RATE, 20); // AI被打倒後是否滾動的機率,機率預設0 SetAIAttrib(aiID, AI_DEMON_RATE, 0); // AI魔化機率,預設為0 // SetAIAttrib(aiID, AI_DODGE_RATE, 50); // 逃跑機率(0 ~ 100),機率預設50 // SetAIAttrib(aiID, AI_JUMP_RATE, 50); // 跳躍機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_DASH_RATE, 0); // 速移機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_WALKSPECIALLINK, 0); // 是否可以走特殊的link,預設0 SetAIAttrib(aiID, AI_ATTACK_STRING, "X", "^X", "vX", "^^X", "v^X", "Y", "^Y", "vY", "^^Y", "v^Y", "X+Y", "^X+Y", "^^X+Y"); // AI亂數攻擊時會使用的按鍵,預設為上左右X,上左右Y SetAIAttrib(aiID, AI_MOVE_SPEED, 1); // AI走路速度,(0.0 ~ 1.0), 預設1.0f, 巡邏速度不受此限制 SetAIAttrib(aiID, AI_THINK_SPEED, 100); // AI思考速度, from 10 - 100 SetAIAttrib(aiID, AI_BREAK_DEFENSE, 0); // AI破防機率 SetAIAttrib(aiID, AI_COUNTERATTACK_RATE, 50); // AI防禦反擊機率 SetAIAttrib(aiID, AI_SUPERATTACK_RATE, 0); // SetAIBehavior(aiID, AI_STATE_SEARCH, AI_SEARCH_IDLE, 100); // id, type, num, rate // SetAIBehavior(aiID, AI_STATE_SEARCH, AI_SEARCH_RANDOMRUN, 100); // id, type, num, rate SetAIBehavior(aiID, AI_STATE_SEARCH, AI_SEARCH_FOLLOW, 100, charaID); SetAIBehavior(aiID, AI_STATE_LOCK, AI_LOCK_NEAREST_TARGET, 50); // SetAIBehavior(aiID, AI_STATE_LOCK, AI_LOCK_ONE_TARGET, 50, charaID); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DIRECT, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_NOMOVE, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_SHIFTMOVE, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_FARAWAY, 50); SetAIBehavior(aiID, AI_STATE_ATTACK, AI_ATTACK_RANDOM, 50); UpdateAIBehavior(aiID); } void AI_Easy(int charaID, int aiID) { ClearAIAllBehavior(aiID); SetAITitle(aiID, AI_TITLE_EASY); SetAIAttrib(aiID, AI_LOOK_RANGE, 500); // 視線距離,預設200 SetAIAttrib(aiID, AI_LOOK_ANGLE, 180); // 視線角度,預設180度 SetAIAttrib(aiID, AI_ATTACK_RATE, 80); // 攻擊機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_ATTACK_RANGE, 200); // 攻擊範圍,預設80 SetAIAttrib(aiID, AI_DEFENSE_RATE, 20); // 防禦機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_LEAVE_RANGE, 400); // 跟follow的人距離多遠,預設200 SetAIAttrib(aiID, AI_CHIFLARE_RATE, 20); // 氣爆機率,機率預設0 SetAIAttrib(aiID, AI_ROLLING_RATE, 50); // AI被打倒後是否滾動的機率,機率預設0 SetAIAttrib(aiID, AI_DEMON_RATE, 0); // AI魔化機率,預設為0 // SetAIAttrib(aiID, AI_DODGE_RATE, 50); // 逃跑機率(0 ~ 100),機率預設50 // SetAIAttrib(aiID, AI_JUMP_RATE, 50); // 跳躍機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_DASH_RATE, 30); // 速移機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_WALKSPECIALLINK, 1); // 是否可以走特殊的link,預設0 SetAIAttrib(aiID, AI_ATTACK_STRING, "X", "^X", "vX", "^^X", "v^X", "Y", "^Y", "vY", "^^Y", "v^Y", "X+Y", "^X+Y", "^^X+Y", "B+X+Y"); // AI亂數攻擊時會使用的按鍵,預設為上左右X,上左右Y SetAIAttrib(aiID, AI_MOVE_SPEED, 1); // AI走路速度,(0.0 ~ 1.0), 預設1.0f, 巡邏速度不受此限制 SetAIAttrib(aiID, AI_THINK_SPEED, 90); // AI思考速度, from 10 - 100 SetAIAttrib(aiID, AI_BREAK_DEFENSE, 20); // AI破防機率 SetAIAttrib(aiID, AI_COUNTERATTACK_RATE, 40); // AI防禦反擊機率 SetAIAttrib(aiID, AI_SUPERATTACK_RATE, 20); SetAIBehavior(aiID, AI_STATE_SEARCH, AI_SEARCH_RANDOMRUN, 100); // id, type, num, rate SetAIBehavior(aiID, AI_STATE_LOCK, AI_LOCK_NEAREST_TARGET, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DIRECT, 500); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DASH_FRONT, 100); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DASH_BACK, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_JUMP_SIDE, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_JUMP, 100); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_MOVE_SIDE, 50); SetAIBehavior(aiID, AI_STATE_ATTACK, AI_ATTACK_RANDOM, 100); // SetAIBehavior(aiID, AI_STATE_ATTACK, AI_ATTACK_DEFENSE, 10); UpdateAIBehavior(aiID); } void AI_Normal(int charaID, int aiID) { ClearAIAllBehavior(aiID); SetAITitle(aiID, AI_TITLE_NORMAL); SetAIAttrib(aiID, AI_LOOK_RANGE, 600); // 視線距離,預設200 SetAIAttrib(aiID, AI_LOOK_ANGLE, 360); // 視線角度,預設180度 SetAIAttrib(aiID, AI_ATTACK_RATE, 90); // 攻擊機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_ATTACK_RANGE, 250); // 攻擊範圍,預設80 SetAIAttrib(aiID, AI_DEFENSE_RATE, 50); // 防禦機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_LEAVE_RANGE, 500); // 跟follow的人距離多遠,預設200 SetAIAttrib(aiID, AI_CHIFLARE_RATE, 50); // 氣爆機率,機率預設0 SetAIAttrib(aiID, AI_ROLLING_RATE, 80); // AI被打倒後是否滾動的機率,機率預設0 SetAIAttrib(aiID, AI_DEMON_RATE, 20); // AI魔化機率,預設為0 // SetAIAttrib(aiID, AI_DODGE_RATE, 50); // 逃跑機率(0 ~ 100),機率預設50 // SetAIAttrib(aiID, AI_JUMP_RATE, 50); // 跳躍機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_DASH_RATE, 40); // 速移機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_WALKSPECIALLINK, 1); // 是否可以走特殊的link,預設0 SetAIAttrib(aiID, AI_ATTACK_STRING, "X", "^X", "vX", "^^X", "v^X", "Y", "^Y", "vY", "^^Y", "v^Y", "X+Y", "^X+Y", "^^X+Y", "B+X+Y"); // AI亂數攻擊時會使用的按鍵,預設為上左右X,上左右Y SetAIAttrib(aiID, AI_MOVE_SPEED, 1); // AI走路速度,(0.0 ~ 1.0), 預設1.0f, 巡邏速度不受此限制 SetAIAttrib(aiID, AI_THINK_SPEED, 100); // AI思考速度, from 10 - 100 SetAIAttrib(aiID, AI_BREAK_DEFENSE, 80); // AI破防機率 SetAIAttrib(aiID, AI_COUNTERATTACK_RATE, 60); // AI防禦反擊機率 SetAIAttrib(aiID, AI_SUPERATTACK_RATE, 50); // 連招設定 SetAIAttrib(aiID, AI_COMBO_RATE, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 雙刺 SetAIAttrib(aiID, AI_COMBO_RATE, 2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 匕首 SetAIAttrib(aiID, AI_COMBO_RATE, 3, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 劍 SetAIAttrib(aiID, AI_COMBO_RATE, 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 槍 SetAIAttrib(aiID, AI_COMBO_RATE, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 刀 SetAIAttrib(aiID, AI_COMBO_RATE, 6, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 錘 SetAIAttrib(aiID, AI_COMBO_RATE, 7, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 指虎 SetAIAttrib(aiID, AI_COMBO_RATE, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 武士刀 SetAIAttrib(aiID, AI_COMBO_RATE, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 忍者刀 SetAIBehavior(aiID, AI_STATE_SEARCH, AI_SEARCH_RANDOMRUN, 100); SetAIBehavior(aiID, AI_STATE_LOCK, AI_LOCK_NEAREST_TARGET, 50); // SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DIRECT, 200); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DASH_FRONT, 100); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DASH_BACK, 50); // SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_JUMP_SIDE, 50); // SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_JUMP, 100); // SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_MOVE_SIDE, 50); SetAIBehavior(aiID, AI_STATE_ATTACK, AI_ATTACK_RANDOM, 100); SetAIBehavior(aiID, AI_STATE_ATTACK, AI_ATTACK_COMBO, 100); // SetAIBehavior(aiID, AI_STATE_ATTACK, AI_ATTACK_DEFENSE, 20); UpdateAIBehavior(aiID); } void AI_Hard(int charaID, int aiID) { ClearAIAllBehavior(aiID); SetAITitle(aiID, AI_TITLE_HARD); SetAIAttrib(aiID, AI_LOOK_RANGE, 800); // 視線距離,預設200 SetAIAttrib(aiID, AI_LOOK_ANGLE, 360); // 視線角度,預設180度 SetAIAttrib(aiID, AI_ATTACK_RATE, 90); // 攻擊機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_ATTACK_RANGE, 250); // 攻擊範圍,預設80 SetAIAttrib(aiID, AI_DEFENSE_RATE, 100); // 防禦機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_LEAVE_RANGE, 500); // 跟follow的人距離多遠,預設200 SetAIAttrib(aiID, AI_CHIFLARE_RATE, 70); // 氣爆機率,機率預設0 SetAIAttrib(aiID, AI_ROLLING_RATE, 80); // AI被打倒後是否滾動的機率,機率預設0 SetAIAttrib(aiID, AI_DEMON_RATE, 50); // AI魔化機率,預設為0 // SetAIAttrib(aiID, AI_DODGE_RATE, 50); // 逃跑機率(0 ~ 100),機率預設50 // SetAIAttrib(aiID, AI_JUMP_RATE, 50); // 跳躍機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_DASH_RATE, 60); // 速移機率(0 ~ 100),機率預設50 SetAIAttrib(aiID, AI_WALKSPECIALLINK, 1); // 是否可以走特殊的link,預設0 SetAIAttrib(aiID, AI_ATTACK_STRING, "X", "^X", "vX", "^^X", "v^X", "Y", "^Y", "vY", "^^Y", "v^Y", "X+Y", "^X+Y", "^^X+Y", "B+X+Y"); // AI亂數攻擊時會使用的按鍵,預設為上左右X,上左右Y SetAIAttrib(aiID, AI_MOVE_SPEED, 1); // AI走路速度,(0.0 ~ 1.0), 預設1.0f, 巡邏速度不受此限制 SetAIAttrib(aiID, AI_THINK_SPEED, 100); // AI思考速度, from 10 - 100 SetAIAttrib(aiID, AI_BREAK_DEFENSE, 100); // AI破防機率 SetAIAttrib(aiID, AI_COUNTERATTACK_RATE, 80); // AI防禦反擊機率 SetAIAttrib(aiID, AI_SUPERATTACK_RATE, 100); // 連招設定 SetAIAttrib(aiID, AI_COMBO_RATE, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 雙刺 SetAIAttrib(aiID, AI_COMBO_RATE, 2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 匕首 SetAIAttrib(aiID, AI_COMBO_RATE, 3, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 劍 SetAIAttrib(aiID, AI_COMBO_RATE, 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 槍 SetAIAttrib(aiID, AI_COMBO_RATE, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 刀 SetAIAttrib(aiID, AI_COMBO_RATE, 6, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 錘 SetAIAttrib(aiID, AI_COMBO_RATE, 7, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 指虎 SetAIAttrib(aiID, AI_COMBO_RATE, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 武士刀 SetAIAttrib(aiID, AI_COMBO_RATE, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // 忍者刀 SetAIBehavior(aiID, AI_STATE_SEARCH, AI_SEARCH_RANDOMRUN, 100); // SetAIBehavior(aiID, AI_STATE_SEARCH, AI_SEARCH_FOLLOW, 100); SetAIBehavior(aiID, AI_STATE_LOCK, AI_LOCK_NEAREST_TARGET, 50); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DIRECT, 200); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DASH_FRONT, 200); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_DASH_BACK, 200); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_JUMP_SIDE, 200); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_JUMP, 200); SetAIBehavior(aiID, AI_STATE_PREATTACK, AI_ATTACKMOVE_MOVE_SIDE, 200); //SetAIBehavior(aiID, AI_STATE_ATTACK, AI_ATTACK_RANDOM, 100); SetAIBehavior(aiID, AI_STATE_ATTACK, AI_ATTACK_COMBO, 200); UpdateAIBehavior(aiID); } /* // AI update functions void CE01_UpdateAI(int id) { ForgetThink(id); AIPerform(id, AI_UNLOCK); AIPerform(id, AI_MOVE_TO_CHARA, charaID); } void CE02_UpdateAI(int id) { } void CE03_UpdateAI(int id) { } void CE04_UpdateAI(int id) { } void CE05_UpdateAI(int id) { } void CE06_UpdateAI(int id) { } void CE07_UpdateAI(int id) { } void CE08_UpdateAI(int id) { } void CE09_UpdateAI(int id) { } void CE10_UpdateAI(int id) { } void CE11_UpdateAI(int id) { } void CE12_UpdateAI(int id) { } void CE13_UpdateAI(int id) { } void CE14_UpdateAI(int id) { } void CE15_UpdateAI(int id) { } void CE16_UpdateAI(int id) { } void CW01_UpdateAI(int id) { } void CW02_UpdateAI(int id) { } void CW03_UpdateAI(int id) { } void CW04_UpdateAI(int id) { } void CW05_UpdateAI(int id) { } void CW06_UpdateAI(int id) { } void CW07_UpdateAI(int id) { } void CW08_UpdateAI(int id) { } void CW09_UpdateAI(int id) { } void CW10_UpdateAI(int id) { } void CW11_UpdateAI(int id) { } */