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机制差不多,唯一的区别就是检测单位数量时,会包含正在建造的单位。