AI脚本指令
goto
goto %1
跳转到block%1继续读取指令。
notowns_jump
notowns_jump %1 %2
运行当前AI脚本的电脑玩家不存在单位%1时,就跳转到block%2继续读取指令,和经典触发条件Command(CurrentPlayer, AtMost, 0, %1)效果一致。
wait
wait %1
等待%1游戏帧后继续读取指令,%1最大不得超过65535帧,在游戏速度为最快且没有使用EUD修改游戏速度的情况下,现实时间1秒约等于%1乘以42再除以1000,实际上本指令和开启EUDTurbo后的地图中使用Death计时器效果是一模一样的。
start_town
start_areatown
expand
build
upgrade
tech
wait_build
wait_buildstart
attack_clear
attack_clear
清空当前电脑玩家的参战单位列表,同时取消已经发动的攻击。注意每个电脑玩家只有一个参战单位列表,最大容量为62个单位,如果列表已满,那么剩余未添加的单位将被自动忽略。因此,建议每次发动进攻前保证至少执行了一次attack_clear,且保证本次进攻添加的单位总数不超过62个。
attack_add
attack_add %1 %2
添加%1个%2类型的单位到参战单位列表,相关机制说明及注意事项见attack_clear,此外所有的单位类型均可添加。
attack_prepare
attack_prepare
计算当前电脑玩家自己掌握的区域以及敌人所在的区域,如果有盟友,还要计算盟友的区域以及盟友的敌人所在的区域。然后随机选择一个敌人区域,命令参战单位列表中的单位集结到敌人区域的附近,最后发动进攻。
attack_do
attack_do
执行attack_prepare指令,检查它的返回值,如果为TRUE,则继续读取脚本指令;如果为FALSE,则等待30游戏帧后,重复上述动作。由于attack_do指令包含了attack_prepare指令,因此想让电脑玩家发动进攻只需要写attack_do指令即可,不需要再写attack_prepare指令,以提高代码执行效率,有效降低卡死的几率。
wait_secure
capt_expand
build_bunkers
wait_bunkers
defensebuild_gg
defensebuild_ag
defensebuild_ga
defensebuild_aa
defenseuse_gg
defenseuse_ag
defenseuse_ga
defenseuse_aa
defenseclear_gg
defenseclear_ag
defenseclear_ga
defenseclear_aa
send_suicide
send_suicide 0
执行attack_clear指令清空参战单位列表,然后当前电脑玩家所有没有勾选Ignore "Strategic Suicide Missions" AI的单位,随机选择一个敌方单位并锁定目标,直到敌人所有单位被消灭为止。经典触发中运行AI脚本Send all Units on Strategic Suicide Missions就是执行的本指令。由于该AI指令包含了attack_clear指令,因此打电脑地图里面使用Death计时器循环执行该指令,即可将insaneAI脚本中原先暴雪官方写的所有进攻指令全部取消,从而大大加快insaneAI运营发展的速度。
send_suicide 1
执行attack_clear指令清空参战单位列表,然后当前电脑玩家所有Advanced Flag中没有勾选building的单位,随机选择一个敌方区域,执行一次attack_move,效果相当于经典触发动作Order("men", CurrentPlayer, "Anyware", attack, GetRandomEnemyTown()),如果该区域敌人被消灭后,参战单位会停留在原地不动,不会继续攻击剩余的敌方单位,除非再执行一次本指令。经典触发中运行AI脚本Send all Units on Random Suicide Missions就是执行的本指令。特别注意该AI指令除了包含attack_clear指令以外,还会将本次参战的所有单位脱离AI的控制,也就是说这些单位将不再执行除了send_suicide 1以外的任何AI指令,所以正常发展的AI,除了SCV RUSH的打法以外,不要使用该指令,否则参战的农民将不再自动采矿,也不接受AI脚本发布的任何建造指令。同时由于这些单位脱离了AI的控制,使得他们的进攻行为表现和人类玩家控制的单位一致,因此刷兵的打电脑地图中合理利用本指令,可以有效地突破玩家的堵口战术。
player_enemy
player_ally
default_min
defaultbuild_off
stop
switch_rescue
move_dt
move_dt
控制电脑玩家所有的隐刀(单位类型编号为61或者74,不包括泽拉图),移动到触发动作RunAIScriptAt指定的区域。注意运行本指令后,电脑玩家符合条件的隐刀会脱离AI的控制,且如果此时有正在训练的隐刀,会导致游戏崩溃。
debug
fatal_error
enter_bunker
value_area
transports_off
check_transports
nuke_rate
max_force
clear_combatdata
clear_combatdata
取消已经发动的攻击,该指令和attack_clear的区别是,attack_clear会清空参战单位列表,而clear_combatdata不会。
random_jump
time_jump
time_jump %1 %2
游戏开始%1分钟后跳转到%2继续读取指令,该指令和经典触发条件ElapsedTime(AtLeast, %1 * 60)的效果一致。
farms_notiming
farms_timing
build_turrets
wait_turrets
default_build
harass_factor
start_campaign
race_jump
region_size
get_oldpeons
groundmap_jump
place_guard
wait_force
wait_force %1 %2
如果当前电脑玩家已经完成建造的%1类型单位数量达到%2时,就继续读取脚本指令,否则将该单位类型设置为电脑玩家的待建造单位,同时等待30游戏帧再次执行该指令。需要注意的是,电脑玩家每一帧只能设置一个单位类型待建造。
guard_resources
call
call %1
将下一条指令的内存地址保存到0x6D63F4中,然后跳转到block%1继续读取指令。这个机制决定了整局游戏只能同时保存一个call的返回地址,如果不同电脑玩家运行的AI脚本不一致且都有call指令的话,会导致脚本运行错乱。
return
return
将保存到0x6D63F4中的指令地址取出,然后跳转到保存的地址继续读取指令。利用这个机制,可以让某个电脑玩家的脚本执行一半以后,跳转到另一个脚本中去执行。
eval_harass
creep
panic
player_need
do_morph
do_morph %1 %2
和wait_force机制差不多,唯一的区别就是不会循环检测需要建造的单位是否达到设定数量。
wait_upgrades
multirun
rush
scout_with
scout_with %1
这个指令执行后不会发生任何事情,没有任何意义。
define_max
train
train %1 %2
和wait_force机制差不多,唯一的区别就是检测单位数量时,会包含正在建造的单位。