Относительно недавно улитка добавила новые РСЗО для события “Ядерная эскалация”. При этом эти РСЗО не только стреляют, но улитка также дала возможность РСЗО атаковать цель напрямую. Т.е. раньше, чтобы заставить РСЗО-бота стрелять, нужно было ставить цель (зону, например) в небо, регулируя таким образом направление и градус атаки. Естественно, ни о какой прицельной стрельбе речи и быть не могло (возможно, конечно, но очень затратно по времени). Теперь же можно напрямую указать наземную цель, и РСЗО будет эту цель атаковать. То же самое, кстати, и для артиллерии.
Также, в триггерах я нашел условие “ИгрокВидитЦель”. Т.е. если игрок смотрит на цель даже через прицельный контейнер, то триггер это понимает. Регулируя параметры (например, угол наблюдения цели), можно давать целеуказание для РСЗО с целью атаки конкретной цели.
Ниже код миссии, где расположены 4 цели на большом удалении. Понадобится Су-30СМ2. Через контейнер наведитесь на желаемую цель и удерживаете ее в течение 10 секунд. Если сделаете все правильно, РСЗО начнет работу.
Код Миссии
selected_tag:t=“”
bin_dump_file:t=“”
mission_settings{
player{
army:i=1
wing:t=“Player”
}
player_teamB{
army:i=2
}
mission{
type:t=“singleMission”
level:t=“levels/tunisia.bin”
environment:t=“Day”
weather:t=“good”
locName:t=“Tunisa - Aim for MLRS Test”
locDesc:t=“Choose target for MLRS strike”
}
}
imports{}
triggers{
isCategory:b=yes
is_enabled:b=yes
“Mission Setting”{
is_enabled:b=yes
comments:t=“”
props{
actionsType:t="PERFORM_ONE_BY_ONE"
conditionsType:t="ALL"
enableAfterComplete:b=no
}
events{
initMission{}
}
conditions{}
actions{
__missionMarkAsRespawnPoint{
loc_name:t=""
radius:r=-1
target:t="Zone_P_Spawn"
team:t="A"
isStrictSpawn:b=yes
isIndividual:b=yes
showOnMap:b=yes
tags{
air:b=yes
type_bomber:b=yes
type_fighter:b=yes
type_assault:b=yes
type_interceptor:b=yes
type_aa_fighter:b=yes
type_light_bomber:b=yes
type_frontline_bomber:b=yes
type_longrange_bomber:b=yes
}
}
unitSetProperties{
object:t="SQUAD_Enemies"
object:t="Smerch"
forceVisibleOnMap:b=yes
}
unitSetProperties{
object:t="Smerch"
attack_type:t="dont_aim"
}
}
else_actions{}
}
Aiming_E01{
is_enabled:b=yes
comments:t=“”
props{
actionsType:t="PERFORM_ONE_BY_ONE"
conditionsType:t="ALL"
enableAfterComplete:b=yes
}
events{
periodicEvent{
time:r=6
}
}
conditions{
playerSeesUnit{
target_type:t="isAlive"
check_targets:t="any"
target:t="E_01"
viewAngle:r=0.05
}
}
actions{
playHint{
hintType:t="standard"
name:t="Preparing coordinates...."
action:t="show"
shouldFadeOut:b=no
isOverFade:b=no
time:r=7
priority:i=0
target_marking:i=0
object_var_name:t=""
object_var_comp_op:t="equal"
object_var_value:i=0
shouldBlink:b=yes
}
wait{
time:r=10
}
triggerActivate{
target:t="MLRS Strike_E01"
activate_type:t="checkConidtions"
check_trigger_status:b=no
after_activation:t="disable"
}
}
else_actions{}
}
“MLRS Strike_E01”{
is_enabled:b=no
comments:t=“”
props{
actionsType:t="PERFORM_ONE_BY_ONE"
conditionsType:t="ALL"
enableAfterComplete:b=no
}
events{
periodicEvent{
time:r=0
}
}
conditions{
playerSeesUnit{
target_type:t="isAlive"
check_targets:t="any"
target:t="E_01"
viewAngle:r=0.05
}
}
actions{
playHint{
hintType:t="standard"
name:t="Coordinates received! MLRS is preparing for strike!"
action:t="show"
shouldFadeOut:b=no
isOverFade:b=no
time:r=3
priority:i=0
target_marking:i=0
object_var_name:t=""
object_var_comp_op:t="equal"
object_var_value:i=0
}
unitRestore{
target_marking:i=0
ressurectIfDead:b=no
fullRestore:b=yes
target:t="Smerch"
ammoRestore:b=yes
}
wait{
time:r=3
}
unitAttackTarget{
playerAttracted:b=no
object:t="Smerch"
target:t="E_01"
}
}
else_actions{
playHint{
hintType:t="standard"
name:t="Failed to transfer coordinates!"
action:t="show"
shouldFadeOut:b=no
isOverFade:b=no
time:r=4
priority:i=0
target_marking:i=0
object_var_name:t=""
object_var_comp_op:t="equal"
object_var_value:i=0
}
}
}
Aiming_E02{
is_enabled:b=yes
comments:t=“”
props{
actionsType:t="PERFORM_ONE_BY_ONE"
conditionsType:t="ALL"
enableAfterComplete:b=yes
}
events{
periodicEvent{
time:r=6
}
}
conditions{
playerSeesUnit{
target_type:t="isAlive"
check_targets:t="any"
target:t="E_02"
viewAngle:r=0.05
}
}
actions{
playHint{
hintType:t="standard"
name:t="Preparing coordinates...."
action:t="show"
shouldFadeOut:b=no
isOverFade:b=no
time:r=7
priority:i=0
target_marking:i=0
object_var_name:t=""
object_var_comp_op:t="equal"
object_var_value:i=0
shouldBlink:b=yes
}
wait{
time:r=10
}
triggerActivate{
target:t="MLRS Strike_E02"
activate_type:t="checkConidtions"
check_trigger_status:b=no
after_activation:t="disable"
}
}
else_actions{}
}
“MLRS Strike_E02”{
is_enabled:b=no
comments:t=“”
props{
actionsType:t="PERFORM_ONE_BY_ONE"
conditionsType:t="ALL"
enableAfterComplete:b=no
}
events{
periodicEvent{
time:r=0
}
}
conditions{
playerSeesUnit{
target_type:t="isAlive"
check_targets:t="any"
target:t="E_02"
viewAngle:r=0.05
}
}
actions{
playHint{
hintType:t="standard"
name:t="Coordinates received! MLRS is preparing for strike!"
action:t="show"
shouldFadeOut:b=no
isOverFade:b=no
time:r=3
priority:i=0
target_marking:i=0
object_var_name:t=""
object_var_comp_op:t="equal"
object_var_value:i=0
}
unitRestore{
target_marking:i=0
ressurectIfDead:b=no
fullRestore:b=yes
target:t="Smerch"
ammoRestore:b=yes
}
wait{
time:r=3
}
unitAttackTarget{
playerAttracted:b=no
object:t="Smerch"
target:t="E_02"
}
}
else_actions{
playHint{
hintType:t="standard"
name:t="Failed to transfer coordinates!"
action:t="show"
shouldFadeOut:b=no
isOverFade:b=no
time:r=4
priority:i=0
target_marking:i=0
object_var_name:t=""
object_var_comp_op:t="equal"
object_var_value:i=0
}
}
}
Aiming_E03{
is_enabled:b=yes
comments:t=“”
props{
actionsType:t="PERFORM_ONE_BY_ONE"
conditionsType:t="ALL"
enableAfterComplete:b=yes
}
events{
periodicEvent{
time:r=6
}
}
conditions{
playerSeesUnit{
target_type:t="isAlive"
check_targets:t="any"
target:t="E_03"
viewAngle:r=0.05
}
}
actions{
playHint{
hintType:t="standard"
name:t="Preparing coordinates...."
action:t="show"
shouldFadeOut:b=no
isOverFade:b=no
time:r=7
priority:i=0
target_marking:i=0
object_var_name:t=""
object_var_comp_op:t="equal"
object_var_value:i=0
shouldBlink:b=yes
}
wait{
time:r=10
}
triggerActivate{
target:t="MLRS Strike_E03"
activate_type:t="checkConidtions"
check_trigger_status:b=no
after_activation:t="disable"
}
}
else_actions{}
}
“MLRS Strike_E03”{
is_enabled:b=no
comments:t=“”
props{
actionsType:t="PERFORM_ONE_BY_ONE"
conditionsType:t="ALL"
enableAfterComplete:b=no
}
events{
periodicEvent{
time:r=0
}
}
conditions{
playerSeesUnit{
target_type:t="isAlive"
check_targets:t="any"
target:t="E_03"
viewAngle:r=0.05
}
}
actions{
playHint{
hintType:t="standard"
name:t="Coordinates received! MLRS is preparing for strike!"
action:t="show"
shouldFadeOut:b=no
isOverFade:b=no
time:r=3
priority:i=0
target_marking:i=0
object_var_name:t=""
object_var_comp_op:t="equal"
object_var_value:i=0
}
unitRestore{
target_marking:i=0
ressurectIfDead:b=no
fullRestore:b=yes
target:t="Smerch"
ammoRestore:b=yes
}
wait{
time:r=3
}
unitAttackTarget{
playerAttracted:b=no
object:t="Smerch"
target:t="E_03"
}
}
else_actions{
playHint{
hintType:t="standard"
name:t="Failed to transfer coordinates!"
action:t="show"
shouldFadeOut:b=no
isOverFade:b=no
time:r=4
priority:i=0
target_marking:i=0
object_var_name:t=""
object_var_comp_op:t="equal"
object_var_value:i=0
}
}
}
Aiming_E04{
is_enabled:b=yes
comments:t=“”
props{
actionsType:t="PERFORM_ONE_BY_ONE"
conditionsType:t="ALL"
enableAfterComplete:b=yes
}
events{
periodicEvent{
time:r=6
}
}
conditions{
playerSeesUnit{
target_type:t="isAlive"
check_targets:t="any"
target:t="E_04"
viewAngle:r=0.05
}
}
actions{
playHint{
hintType:t="standard"
name:t="Preparing coordinates...."
action:t="show"
shouldFadeOut:b=no
isOverFade:b=no
time:r=7
priority:i=0
target_marking:i=0
object_var_name:t=""
object_var_comp_op:t="equal"
object_var_value:i=0
shouldBlink:b=yes
}
wait{
time:r=10
}
triggerActivate{
target:t="MLRS Strike_E04"
activate_type:t="checkConidtions"
check_trigger_status:b=no
after_activation:t="disable"
}
}
else_actions{}
}
“MLRS Strike_E04”{
is_enabled:b=no
comments:t=“”
props{
actionsType:t="PERFORM_ONE_BY_ONE"
conditionsType:t="ALL"
enableAfterComplete:b=no
}
events{
periodicEvent{
time:r=0
}
}
conditions{
playerSeesUnit{
target_type:t="isAlive"
check_targets:t="any"
target:t="E_04"
viewAngle:r=0.05
}
}
actions{
playHint{
hintType:t="standard"
name:t="Coordinates received! MLRS is preparing for strike!"
action:t="show"
shouldFadeOut:b=no
isOverFade:b=no
time:r=3
priority:i=0
target_marking:i=0
object_var_name:t=""
object_var_comp_op:t="equal"
object_var_value:i=0
}
unitRestore{
target_marking:i=0
ressurectIfDead:b=no
fullRestore:b=yes
target:t="Smerch"
ammoRestore:b=yes
}
wait{
time:r=3
}
unitAttackTarget{
playerAttracted:b=no
object:t="Smerch"
target:t="E_04"
}
}
else_actions{
playHint{
hintType:t="standard"
name:t="Failed to transfer coordinates!"
action:t="show"
shouldFadeOut:b=no
isOverFade:b=no
time:r=4
priority:i=0
target_marking:i=0
object_var_name:t=""
object_var_comp_op:t="equal"
object_var_value:i=0
}
}
}
}
mission_objectives{
isCategory:b=yes
is_enabled:b=yes
}
variables{}
dialogs{}
airfields{}
effects{}
units{
tankModels{
name:t=“E_01”
tm:m=[[0.382683, 0, -0.92388] [0, 1, 0] [0.92388, 0, 0.382683] [-8266, 110.934, 22516.2]]
unit_class:t=“us_m1a2_sep3_abrams”
objLayer:i=1
closed_waypoints:b=no
isShipSpline:b=no
shipTurnRadius:r=100
weapons:t=“”
bullets0:t=“”
bullets1:t=“”
bullets2:t=“”
bullets3:t=“”
bulletsCount0:i=0
bulletsCount1:i=0
bulletsCount2:i=0
bulletsCount3:i=0
crewSkillK:r=0
applyAllMods:b=no
props{
army:i=2
count:i=1
formation_type:t="rows"
formation_div:i=3
formation_step:p2=2.5, 2
formation_noise:p2=0.1, 0.1
}
way{}
}
tankModels{
name:t=“E_02”
tm:m=[[0.382683, 0, -0.92388] [0, 1, 0] [0.92388, 0, 0.382683] [-8475.99, 110.934, 22439.3]]
unit_class:t=“us_ai_sam_launcher_m901”
objLayer:i=1
closed_waypoints:b=no
isShipSpline:b=no
shipTurnRadius:r=100
weapons:t=“”
bullets0:t=“”
bullets1:t=“”
bullets2:t=“”
bullets3:t=“”
bulletsCount0:i=0
bulletsCount1:i=0
bulletsCount2:i=0
bulletsCount3:i=0
crewSkillK:r=0
applyAllMods:b=no
props{
army:i=2
count:i=1
formation_type:t="rows"
formation_div:i=3
formation_step:p2=2.5, 2
formation_noise:p2=0.1, 0.1
}
way{}
}
tankModels{
name:t=“E_03”
tm:m=[[-0.34202, 0, 0.939693] [0, 1, 0] [-0.939693, 0, -0.34202] [-7464.2, 97.8672, 22623.7]]
unit_class:t=“us_ai_sam_radar_an_mpq_53”
objLayer:i=1
closed_waypoints:b=no
isShipSpline:b=no
shipTurnRadius:r=100
weapons:t=“”
bullets0:t=“”
bullets1:t=“”
bullets2:t=“”
bullets3:t=“”
bulletsCount0:i=0
bulletsCount1:i=0
bulletsCount2:i=0
bulletsCount3:i=0
crewSkillK:r=0
applyAllMods:b=no
props{
army:i=2
count:i=1
formation_type:t="rows"
formation_div:i=3
formation_step:p2=2.5, 2
formation_noise:p2=0.1, 0.1
}
way{}
}
tankModels{
name:t=“E_04”
tm:m=[[0.573577, 0, -0.819152] [0, 1, 0] [0.819152, 0, 0.573577] [-7307.72, 96.626, 22721.1]]
unit_class:t=“germ_iris_slm_launcher”
objLayer:i=1
closed_waypoints:b=no
isShipSpline:b=no
shipTurnRadius:r=100
weapons:t=“”
bullets0:t=“”
bullets1:t=“”
bullets2:t=“”
bullets3:t=“”
bulletsCount0:i=0
bulletsCount1:i=0
bulletsCount2:i=0
bulletsCount3:i=0
crewSkillK:r=0
applyAllMods:b=no
props{
army:i=2
count:i=1
formation_type:t="rows"
formation_div:i=3
formation_step:p2=2.5, 2
formation_noise:p2=0.1, 0.1
}
way{}
}
squad{
name:t=“SQUAD_Enemies”
tm:m=[[1, 0, 0] [0, 1, 0] [0, 0, 1] [-7899.77, 92.9547, 22766.2]]
props{
squad_members:t="E_01"
squad_members:t="E_02"
squad_members:t="E_03"
squad_members:t="E_04"
}
}
tankModels{
name:t=“Smerch”
tm:m=[[0.347773, 0, 0.937579] [0, 1, 0] [-0.937579, 0, 0.347773] [-7967.1, 139.109, -7676.89]]
unit_class:t=“ussr_ai_mlrs_9a52_2_smerch”
objLayer:i=1
closed_waypoints:b=no
isShipSpline:b=no
shipTurnRadius:r=100
weapons:t=“”
bullets0:t=“”
bullets1:t=“”
bullets2:t=“”
bullets3:t=“”
bulletsCount0:i=0
bulletsCount1:i=0
bulletsCount2:i=0
bulletsCount3:i=0
crewSkillK:r=0
applyAllMods:b=no
props{
army:i=1
count:i=1
formation_type:t="rows"
formation_div:i=3
formation_step:p2=2.5, 2
formation_noise:p2=0.1, 0.1
}
way{}
}
armada{
name:t=“Player”
tm:m=[[0.0871558, 0, 0.996195] [0, 1, 0] [-0.996195, 0, 0.0871558] [-8715.02, 536.616, -15513.3]]
unit_class:t=“su_30sm2”
objLayer:i=1
closed_waypoints:b=no
isShipSpline:b=no
shipTurnRadius:r=100
weapons:t=“su_30sm2_kh_38l”
bullets0:t=“su_x29td_x59m”
bullets1:t=“”
bullets2:t=“”
bullets3:t=“”
bulletsCount0:i=0
bulletsCount1:i=0
bulletsCount2:i=0
bulletsCount3:i=0
modification:t=“su_x29td_x59m”
modification:t=“su_25_x38ml”
modification:t=“t_220”
modification:t=“asm”
modification:t=“su_kab_gps”
crewSkillK:r=0
applyAllMods:b=no
props{
army:i=1
count:i=1
free_distance:r=70
floating_distance:r=50
minimum_distance_to_earth:r=20
altLimit:r=6000
attack_type:t="fire_at_will"
skill:i=4
plane{
wing_formation:t="Diamond"
row_distances:r=3
col_distances:r=3
super_formation:t="Diamond"
super_row_distances:r=1.5
super_col_distances:r=1.5
ai_skill:t="NORMAL"
task:t="FLY_WAYPOINT"
}
}
way{}
}
}
areas{
Zone_P_Spawn{
type:t=“Sphere”
tm:m=[[-84.326, 0, 640.519] [0, 646.046, 0] [-640.519, 0, -84.326] [-9047.65, 3687.1, -20751.9]]
objLayer:i=0
props{}
}
}
objLayers{
layer{
enabled:b=yes
}
layer{
enabled:b=yes
}
layer{
enabled:b=yes
}
layer{
enabled:b=yes
}
}
wayPoints{}
Почему я назвал эту механику полурабочей?
Во-первых, это работает пока только в пользовательских миссиях. Возможно, какой-то другой триггер можно использовать, чтобы выдавать целеуказание в миссиях через полигон.
Во-вторых, данная механика почему-то не работает для сквада, т.е. для каждой цели нужно делать два триггера, что жутко неудобно. Точнее, условие триггера для сквада срабатывает, но вот почему-то РСЗО не хочет атаковать цель из сквада.
У меня в планах было сделать миссию, где в одной из фаз надо найти ЗРК и выдать целеуказание на уничтожение. При этом на карте есть другие цели, поэтому надо искать и идентифицировать приоритетную цель, а не тратить время на уничтожение второстепенных целей. Пока отбой, к сожалению.



