I hope someone can help me with this barrier script.
I would like the tank to keep going in a loop when it is fixed apart when the barrier is built.
Also I would like the barrier to be rebuildable once it has been dynamited and the tank has gone past it.
My plan is that allies will have a patrolling tank that can be stopped by axis building a barrier which is dynamitable but rebuildable so that it is there when the tank comes round again and again etc
(Hope that makes sense.)
This is my first go at tanks so I am using pythons demo tank script that he published.
I wont be needing the turret to move or the gun to fire shell.
barrier1
{
spawn
{
wait 400
trigger barrier1 setup
wm_addteamvoiceannounce 1 "goldrush_allies_tankbar_destroy"
constructible_class 3
}
trigger setup
{
setstate barrier1_materials default
setstate barrier1_materials_clip default
setstate barrier1_flag default
globalaccum 0 bitreset 0
wm_addteamvoiceannounce 0 "goldrush_axis_tankbar_construct"
}
built final
{
setstate barrier1_materials invisible
setstate barrier1_materials_clip invisible
setstate barrier1_flag invisible
wm_announce "The Tank Barrier has been constructed."
globalaccum 0 bitset 0
wm_teamvoiceannounce 0 "goldrush_axis_tankbar_constructed"
wm_removeteamvoiceannounce 0 "goldrush_axis_tankbar_construct"
}
decayed final
{
setstate barrier1_materials default
setstate barrier1_materials_clip default
setstate barrier1_flag default
}
death
{
trigger self setup
wm_announce "The Tank Barrier has been destroyed."
wm_teamvoiceannounce 0 "goldrush_axis_tankbar_destroyed"
wm_teamvoiceannounce 1 "goldrush_allies_tankbar_destroyed"
}
trigger remove
{
setstate barrier1_toi invisible
setstate barrier1_materials invisible
setstate barrier1_materials_clip invisible
setstate barrier1_flag invisible
wm_removeteamvoiceannounce 0 "goldrush_axis_tankbar_construct"
wm_removeteamvoiceannounce 1 "goldrush_allies_tankbar_destroy"
remove
}
}
tank
{
// accum 0, track state
// accum 1
// - bit 0: barrier1 state ( 0 = not built, 1 = built )
// - bit 1: barrier2 state ( 0 = not built, 1 = built )
// - bit 2: spline status ( 0 = not moving, 1 = moving )
// - bit 3: stuck check flag ( 0 = not stuck, 1 = stuck )
// - bit 4: flag for message ( 0 = dont display, 1= display )
// - bit 5: blank
// - bit 6: temp register (XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)
// - bit 7: death status ( 0 = alive, 1 = dead )
// - bit 8: player check ( 0 = players, 1 = no players )
// - bit 9: visible state ( 0 = alive, 1 = dead )
// accum 2, blank
// accum 3, current movement loop position
// accum 4, stop counter
// accum 5, lockout ref counter
// accum 6, blank
// accum 7, blank
spawn
{
wait 400
followspline 0 spln0 50000 length 32 wait
followspline 1 spln0 50000 length 32 wait
trigger tank sound_idle
trigger tank tracks_stop
}
death
{
accum 1 bitset 7
}
rebirth
{
accum 1 bitreset 9 // we're visibly alive
accum 1 bitreset 7 // we're alive again
trigger self script_lockout
changemodel models/mapobjects/tanks_sd/jagdpanther_africa_tracks.md3
setstate tank_smoke invisible
wm_teamvoiceannounce 0 "axis_hq_tank_repaired_allies"
wm_teamvoiceannounce 1 "allies_hq_tank_repaired"
trigger tank_sound rebirth
wait 500
trigger self script_lockout_stop
}
trigger barrier_built
{
accum 1 bitset 1
}
trigger barrier_destroyed
{
accum 1 bitreset 1
}
trigger deathcheck
{
accum 1 abort_if_not_bitset 7 // abort if tank not damaged
accum 1 abort_if_bitset 9 // abort if tank already visibly dead
accum 1 abort_if_bitset 2 // abort if we are following a spline
accum 5 abort_if_not_equal 0 // abort if we are in a script lockout
accum 1 bitset 9 // we're now visibly dead
trigger self deathcheck_message
accum 1 bitset 4
changemodel models/mapobjects/tanks_sd/jagdpanther_africa_tracks2.md3
setstate tank_smoke default
kill tank_construct
trigger self sound_death
trigger self tracks_stop
trigger self script_lockout
trigger self tracks_stop
startanimation 45 10 15 nolerp norandom
wait 666
startanimation 0 1 15 nolerp norandom
trigger self script_lockout_stop
resetscript
}
trigger deathcheck_message
{
accum 1 abort_if_not_bitset 4
wm_announce "The tank has been damaged!"
wm_teamvoiceannounce 0 "axis_hq_tank_damaged"
wm_teamvoiceannounce 1 "allies_hq_tank_damaged_axis"
}
// ========================
// movement
trigger dispatch
{
accum 3 trigger_if_equal 0 tank run_0
accum 3 trigger_if_equal 1 tank run_1
accum 3 trigger_if_equal 2 tank run_2
accum 3 trigger_if_equal 3 tank run_3
accum 3 trigger_if_equal 4 tank run_4
accum 3 trigger_if_equal 5 tank run_5
accum 3 trigger_if_equal 6 tank run_6
accum 3 trigger_if_equal 7 tank run_7
}
trigger move
{
trigger self move_check
wait 500
trigger self move
}
trigger move_check
{
trigger self stuck_check
accum 1 abort_if_bitset 3
trigger self dispatch
}
trigger run_continue
{
accum 3 inc 1
trigger self deathcheck
trigger self stopcheck
trigger self move
}
trigger run_0
{
trigger self tracks_forward
accum 1 bitset 2
followspline 0 spln0 80 wait
accum 1 bitreset 2
trigger self run_continue
}
trigger run_1
{
trigger self tracks_forward
accum 1 bitset 2
followspline 0 spln1 80 wait
accum 1 bitreset 2
trigger self run_continue
}
trigger run_2
{
trigger self tracks_forward
accum 1 bitset 2
followspline 0 spln2 80 wait
accum 1 bitreset 2
trigger self run_continue
}
trigger run_3
{
trigger self tracks_forward
accum 1 bitset 2
// =======================
trigger barrier1 remove
// =======================
followspline 0 spln3 80 wait
accum 1 bitreset 2
trigger self run_continue
}
trigger run_4
{
trigger self tracks_forward
accum 1 bitset 2
followspline 0 spln4 80 wait
accum 1 bitreset 2
trigger self run_continue
}
trigger run_5
{
trigger self tracks_forward
accum 1 bitset 2
followspline 0 spln5 80 wait
accum 1 bitreset 2
trigger self run_continue
}
trigger run_6
{
trigger self tracks_forward
accum 1 bitset 2
followspline 0 spln6 80 wait
accum 1 bitreset 2
trigger self run_continue
}
trigger run_7
{
trigger self tracks_forward
accum 1 bitset 2
followspline 0 spln7 80 wait
accum 1 bitreset 2
trigger self script_lockout
accum 3 inc 1
trigger tank_sound stop
trigger self tracks_stop
startanimation 5 10 15 nolerp norandom // stopping
wait 666
startanimation 0 1 15 nolerp norandom // stopped
wait 900
trigger tank_turret turn
}
// =========================
// script lockouts
trigger script_lockout
{
accum 5 inc 1
}
trigger script_lockout_stop
{
accum 5 inc -1
}
trigger sound_idle
{
stopsound
playsound sound/vehicles/tank/tank_idle.wav looping volume 512
}
trigger sound_start
{
stopsound
playsound sound/vehicles/tank/tank_revup.wav volume 196
}
trigger sound_move
{
stopsound
playsound sound/vehicles/tank/tank_move.wav looping volume 512
}
trigger sound_stop
{
stopsound
playsound sound/vehicles/tank/tank_revdown.wav volume 196
}
trigger sound_death
{
stopsound
playsound sound/vehicles/tank/tank_stop.wav volume 256
}
trigger sound_rebirth
{
stopsound
playsound sound/vehicles/tank/tank_start.wav volume 196
}
// ================================
// stop check
trigger stopcheck
{
trigger self stopcheck_setup
accum 1 abort_if_not_bitset 6
trigger self script_lockout
trigger tank_sound stop
trigger self tracks_stop
startanimation 45 10 15 nolerp norandom
wait 666
startanimation 0 1 15 nolerp norandom
wait 900
trigger self script_lockout_stop
resetscript
}
trigger stopcheck_setup
{
accum 1 bitset 6 // stop if we're stuck/no-one's pushing :)
accum 1 abort_if_bitset 8 // no one in the trigger, abort
trigger self stuck_check // call the stop check function
accum 1 abort_if_bitset 3 // we're stuck so break out
accum 1 bitreset 6 // we're free to move
}
// ======================================
// stuck checking
trigger stuck_check
{
accum 1 bitreset 3
trigger self stuck_check_barrier
trigger self stuck_check_scriptlockout
trigger self stuck_check_finished
}
trigger stuck_check_finished
{
// The check should be the final spln nbr + 1
accum 3 abort_if_less_than 8
accum 1 bitset 3
}
trigger stuck_check_scriptlockout
{
accum 5 abort_if_equal 0
accum 1 bitset 3
}
trigger stuck_check_barrier
{
accum 3 abort_if_not_equal 3
globalaccum 0 abort_if_not_bitset 0 // abort if barrier not built
accum 1 bitset 3
}
trigger tank_disable
{
accum 4 inc 1 // up the stop counter
accum 4 abort_if_less_than 4
accum 1 bitset 8 // set stop check
trigger self deathcheck
}
trigger tank_enable
{
trigger self stuck_check
accum 1 abort_if_bitset 3 // stuck check
accum 4 set 0 // reset stop counter
accum 1 bitreset 8 // reset stop check
accum 1 abort_if_bitset 2 // already following spline
accum 5 abort_if_not_equal 0 // are we not in a script lockout?
accum 1 abort_if_bitset 7 // death check
trigger self script_lockout
trigger tank_sound start
startanimation 55 10 15 nolerp norandom
wait 666
startanimation 5 40 15 nolerp norandom
wait 500
trigger self tracks_forward
trigger self script_lockout_stop
trigger self move
}
trigger tracks_forward
{
accum 0 abort_if_equal 1
accum 0 set 1
remapshader models/mapobjects/tanks_sd/jag_tracks_left models/mapobjects/tanks_sd/jag_tracks_alt_forward
remapshader models/mapobjects/tanks_sd/jag_tracks_right models/mapobjects/tanks_sd/jag_tracks_alt_forward
remapshader models/mapobjects/tanks_sd/jag_wheels_left models/mapobjects/tanks_sd/jag_wheels_alt_forward
remapshader models/mapobjects/tanks_sd/jag_wheels_right models/mapobjects/tanks_sd/jag_wheels_alt_forward
remapshader models/mapobjects/tanks_sd/jag_cogs_left models/mapobjects/tanks_sd/jag_cogs_alt_forward
remapshader models/mapobjects/tanks_sd/jag_cogs_right models/mapobjects/tanks_sd/jag_cogs_alt_forward
remapshaderflush
}
trigger tracks_stop
{
accum 0 abort_if_equal 0
accum 0 set 0
remapshader models/mapobjects/tanks_sd/jag_tracks_left models/mapobjects/tanks_sd/jag_tracks_left
remapshader models/mapobjects/tanks_sd/jag_tracks_right models/mapobjects/tanks_sd/jag_tracks_right
remapshader models/mapobjects/tanks_sd/jag_wheels_left models/mapobjects/tanks_sd/jag_wheels_left
remapshader models/mapobjects/tanks_sd/jag_wheels_right models/mapobjects/tanks_sd/jag_wheels_right
remapshader models/mapobjects/tanks_sd/jag_cogs_left models/mapobjects/tanks_sd/jag_cogs_left
remapshader models/mapobjects/tanks_sd/jag_cogs_right models/mapobjects/tanks_sd/jag_cogs_right
remapshaderflush
}
trigger tracks_turn_left
{
accum 0 abort_if_equal 2
accum 0 set 2
remapshader models/mapobjects/tanks_sd/jag_tracks_left models/mapobjects/tanks_sd/jag_tracks_alt_backward
remapshader models/mapobjects/tanks_sd/jag_tracks_right models/mapobjects/tanks_sd/jag_tracks_alt_forward
remapshader models/mapobjects/tanks_sd/jag_wheels_left models/mapobjects/tanks_sd/jag_wheels_alt_backward
remapshader models/mapobjects/tanks_sd/jag_wheels_right models/mapobjects/tanks_sd/jag_wheels_alt_forward
remapshader models/mapobjects/tanks_sd/jag_cogs_left models/mapobjects/tanks_sd/jag_cogs_alt_backward
remapshader models/mapobjects/tanks_sd/jag_cogs_right models/mapobjects/tanks_sd/jag_cogs_alt_forward
remapshaderflush
}
trigger tracks_turn_right
{
accum 0 abort_if_equal 3
accum 0 set 3
remapshader models/mapobjects/tanks_sd/jag_tracks_left models/mapobjects/tanks_sd/jag_tracks_alt_forward
remapshader models/mapobjects/tanks_sd/jag_tracks_right models/mapobjects/tanks_sd/jag_tracks_alt_backward
remapshader models/mapobjects/tanks_sd/jag_wheels_left models/mapobjects/tanks_sd/jag_wheels_alt_forward
remapshader models/mapobjects/tanks_sd/jag_wheels_right models/mapobjects/tanks_sd/jag_wheels_alt_backward
remapshader models/mapobjects/tanks_sd/jag_cogs_left models/mapobjects/tanks_sd/jag_cogs_alt_forward
remapshader models/mapobjects/tanks_sd/jag_cogs_right models/mapobjects/tanks_sd/jag_cogs_alt_backward
remapshaderflush
}
trigger startfire
{
startanimation 67 8 10 nolerp norandom noloop
}
trigger stopfire
{
startanimation 0 1 15 nolerp norandom
}
}
tank_build
{
spawn
{
wait 500
attachtotag tank_shell tag_turret
}
}
tank_construct
{
spawn
{
wait 1000
kill tank
constructible_class 2
constructible_health 1200
constructible_constructxpbonus 10
constructible_destructxpbonus 10
}
built final
{
alertentity tank
wm_announce "The tank has been repaired!"
}
}
tank_disabler
{
trigger run
{
trigger tank tank_disable
}
}
tank_enabler
{
trigger run
{
trigger tank tank_enable
}
}
tank_fire_sound
{
trigger run
{
setposition tank
alertentity tank_fire_sound
}
}
tank_flash
{
spawn
{
wait 300
attachtotag tank_turret tag_flash
setstate tank_flash invisible
}
trigger run
{
setstate tank_gunsmoke default
setstate tank_flash default
wait 100
setstate tank_flash invisible
setstate tank_gunsmoke invisible
}
}
tank_gunsmoke
{
spawn
{
wait 300
attachtotag tank_turret tag_flash
setstate tank_gunsmoke invisible
}
}
tank_shell
{
spawn
{
wait 400
attachtotag tank tag_tank
}
}
tank_smoke
{
spawn
{
wait 300
attachtotag tank_shell tag_smoke
setstate tank_smoke invisible
}
}
tank_sound
{
trigger start
{
trigger tank sound_start
wait 3400
trigger tank sound_move
}
trigger stop
{
trigger tank sound_stop
wait 1400
trigger tank sound_idle
}
trigger rebirth
{
trigger tank sound_rebirth
wait 1400
trigger tank sound_idle
}
}
tank_trigger
{
spawn
{
wait 500
attachtotag tank_shell tag_turret
}
}
tank_turret
{
spawn
{
wait 500
attachtotag tank_shell tag_turret
}
trigger turn
{
wait 1000
playsound sound/vehicles/tank/turret_spin.wav looping
faceangles 0 340 0 3000
stopsound
playsound sound/vehicles/tank/turret_end.wav
wait 500
trigger tank startfire
playsound sound/vehicles/tank/tank_fire.wav
trigger tank_flash run
wait 600
trigger tank stopfire
playsound sound/vehicles/tank/turret_spin.wav looping
faceangles 0 0 0 3000
stopsound
playsound sound/vehicles/tank/turret_end.wav
trigger tank sound_death
trigger tank script_lockout_stop
}
}
Would be marvellous if someone could edit this for me, Many Tanks !!!