OK below is the script i have now
I know enough script to setup the Splines
but my trouble is it keeps thinking its hitting an obsticle - so it stops
please someone - can u remove the obsticle checking codes from this script
All i need this tank to do - is run a line from point a to point b - stop and blow up a Gate
and it has to be escorted
so far i have it all ok - except for it stopping cuz it thinks there is an obsticle
so can someone please read this script and remove the obsticle check stuff - cuz im lost
once i have it removed i can finish setting the tank stuff up for my map
please help
SCRIPT CODE
game_manager
{
spawn
{
wm_axis_respawntime 1
wm_allied_respawntime 1
wm_set_round_timelimit 20
setchargetimefactor 0 soldier 0
setchargetimefactor 0 medic 0
setchargetimefactor 0 engineer 0
setchargetimefactor 0 fieldops 0
setchargetimefactor 0 covertops 0
setchargetimefactor 1 soldier 0
setchargetimefactor 1 medic 0
setchargetimefactor 1 engineer 0
setchargetimefactor 1 fieldops 0
setchargetimefactor 1 covertops 0
}
}
//======================================================================
// TANK
//======================================================================
//
// Slot Used for
// ==== ========
// 0 State:
// - Bit 0: Broken 0 = No 1 = Yes
// - Bit 1: Moving 0 = No 1 = Yes
// - Bit 2: Escort present 0 = No 1 = Yes
// - Bit 3: Obstacle in the way 0 = No 1 = Yes
// - Bit 4: Model shown broken 0 = No 1 = Yes
// 1 Path state:
// - Bit 0: Obstacle 000 present 0 = No 1 = Yes
// 2 Waypoint counter
// 3 Stop timer
// 4 ***unused***
// 5 ***unused***
// 6 ***unused***
// 7 ***unused***
// 8 ***unused***
// 9 Script lockout counter
//
tank1
{
//----------------------------------------------------------------------
// The following are events that this entity is capable of triggering
//----------------------------------------------------------------------
spawn
{
// Set variables to defaults
accum 0 set 0 // State
accum 1 set 0 // Path state
accum 1 bitset 0 // Set obstacle 0 as present
accum 3 set 0 // Reset stop timer
accum 9 set 0 // Reset script lockout counter
// Wait for entities to spawn
wait 100
// Set initial position to the first waypoint
followspline 0 waypoint_000 10000
accum 2 set 1
// Set default state (ie. tank ready)
trigger self sound_idle
trigger self anim_tracks_stop
setstate tank1_smoke invisible
}
// Called when the entity is hurt
pain
{
}
// Called when the entity is destroyed
death
{
// Update state bits
accum 0 bitset 0 // Mark as broken, which mean it will stop at next waypoint
}
// Indirectly called when the entity is repaired
rebirth
{
// Lock script
trigger self script_lock
// Change from broken to fixed model
changemodel models/mapobjects/tanks_sd/churchhill.md3
// Remove smoke
setstate tank1_smoke invisible
// Start
trigger tank1_sound rebirth
wait 500
// Update state bits
accum 0 bitreset 0 // Mark as not broken
accum 0 bitreset 4 // Mark as visually not broken
// Unlock script
trigger self script_unlock
}
// Called when a player is using the mounted MG
mg42 mount
{
}
// Called when a player is no longer using the mounted MG
mg42 unmount
{
}
//----------------------------------------------------------------------
// Trigger functions
//----------------------------------------------------------------------
// This function is called when a player moves inside the escort zone
trigger escort_trigger
{
// Check for obstacles
trigger self check_obstacle_status
// Update state bits and counters
accum 0 bitset 2 // Mark as escort present
accum 3 set 0 // Reset stop timer
// Check if allowed to move
accum 0 abort_if_bitset 0 // Abort if its broken
accum 0 abort_if_bitset 1 // Abort if its already moving
accum 0 abort_if_bitset 3 // Abort if an obstacle is in the way
accum 9 abort_if_not_equal 0 // Abort if the script is currently locked
// Lock script
trigger self script_lock
// Starting state
trigger tank1_sound start
startanimation 55 10 15 nolerp norandom
wait 666
// Driving state
trigger self anim_tracks_forward
startanimation 5 40 15 nolerp norandom
// Wait a bit before starting to move
wait 500
// Unlock script
trigger self script_unlock
// Start movement loop
trigger self move
}
// This function is called periodicly by a func_timer entity in the map.
// Each time it checks a counter to see if the escort has been gone too
// long. The counter is reset by the escort trigger function.
trigger timer
{
// Increase counter, and if it hasn't reached 4 then abort
accum 3 inc 1
accum 3 abort_if_less_than 4
// Update state bits
accum 0 bitreset 2 // Mark as not escorted, which means it will stop at next waypoint
// Need to periodicly check if the tank has been damaged
trigger self check_death
}
//----------------------------------------------------------------------
// Waypoint functions that checks if it can proceed to the next waypoint
//----------------------------------------------------------------------
// Check if its broken, and if so change to the broken state
trigger check_death
{
// Check if its broken
accum 0 abort_if_not_bitset 0 // Abort if not broken
accum 0 abort_if_bitset 1 // Abort if its already moving
accum 0 abort_if_bitset 4 // Abort if its already in its broken state
accum 9 abort_if_not_equal 0 // Abort if the script is currently locked
// Lock script
trigger self script_lock
// This target_kill entity will kill the func_constructible so that an engineer can repair it
alertentity tank1_kill
// Change from fixed to broken model
changemodel models/mapobjects/tanks_sd/churchhill_broken.md3
// Start smoking
setstate tank1_smoke default
// Death sound
trigger self sound_death
// Stopping state
trigger self anim_tracks_stop
startanimation 45 10 15 nolerp norandom
wait 666
// Stationary state
startanimation 0 1 15 nolerp norandom
// Update state bits
accum 0 bitset 4 // Mark as visually broken state
// Unlock script
trigger self script_unlock
}
// Check if it isn't escorted, and if not then stop it
trigger check_escort
{
// Check if its not escorted
accum 0 abort_if_bitset 2 // Abort if escort is present
// Lock script
trigger self script_lock
// Stop sound
trigger tank1_sound stop
// Stopping state
trigger self anim_tracks_stop
startanimation 45 10 15 nolerp norandom
wait 666
// Stationary state
startanimation 0 1 15 nolerp norandom
// Unlock script
trigger self script_unlock
}
// Check if there is an obstacle preventing it from continuing to the next waypoint, and if so then stop it
trigger check_obstacle
{
// Update obstacle bit (with the help of the waypoint counter and some of the obstacle functions)
trigger self check_obstacle_status
accum 0 abort_if_not_bitset 3 // Abort if no obstacles in the way
// Lock script
trigger self script_lock
// Stop sound
trigger tank1_sound stop
// Stopping state
trigger self anim_tracks_stop
startanimation 45 10 15 nolerp norandom
wait 666
// Stationary state
startanimation 0 1 15 nolerp norandom
// Unlock script
trigger self script_unlock
}
//----------------------------------------------------------------------
// Obstacle functions
//----------------------------------------------------------------------
// Dispatching obstacle checking function
trigger check_obstacle_status
{
accum 0 bitreset 3 // Mark as no obstacles in the way
accum 2 trigger_if_equal 3 tank1 obstacle_000_check
}
// First obstacle - Checks if the obstacle is blocking the way
trigger obstacle_000_check
{
accum 1 abort_if_not_bitset 0 // Abort if the obstacle has been removed
accum 0 bitset 3 // Mark as an obstacle in the way
}
// First obstacle - Called by the death routine in another entity, once the obstacle is destroyed
trigger obstacle_000_removed
{
accum 1 bitreset 0 // Mark obstacle as removed
}
//----------------------------------------------------------------------
// Misc. functions
//----------------------------------------------------------------------
trigger script_lock {
accum 9 inc 1
}
trigger script_unlock {
accum 9 inc -1
}
//----------------------------------------------------------------------
// Move functions
//----------------------------------------------------------------------
// Dispatching move function
trigger move
{
// The obstacle bit is still valid because of the obstacle check done by the calling function
accum 0 abort_if_bitset 3 // Abort if an obstacle is in the way
// List of waypoints to go to
accum 2 trigger_if_equal 1 tank1 move_to_001
accum 2 trigger_if_equal 2 tank1 move_to_002
accum 2 trigger_if_equal 3 tank1 move_to_003
accum 2 trigger_if_equal 4 tank1 move_to_004
accum 2 trigger_if_equal 5 tank1 move_to_005
accum 2 trigger_if_equal 6 tank1 move_to_006
accum 2 trigger_if_equal 7 tank1 move_to_007
}
// Called at the end of each move. If it passes some checks the movement is repeated
trigger move_increment
{
accum 2 inc 1 // Increment waypoint counter
// Check if its ok to proceed to the next waypoint
trigger self check_death
trigger self check_escort
trigger self check_obstacle
// This loop is used so that the tank can immediately advance after completing the move
trigger self move
}
// Move to waypoint 001
trigger move_to_001
{
accum 0 bitset 1 // Mark as moving
followspline 0 waypoint_001 80 wait length -64
accum 0 bitreset 1 // Mark as not moving
trigger self move_increment
}
// Move to waypoint 002
trigger move_to_002
{
accum 0 bitset 1 // Mark as moving
followspline 0 waypoint_002 80 wait length -64
accum 0 bitreset 1 // Mark as not moving
trigger self move_increment
}
// Move to waypoint 003
trigger move_to_003
{
accum 0 bitset 1 // Mark as moving
followspline 0 waypoint_003 80 wait length -64
accum 0 bitreset 1 // Mark as not moving
// If there is a need to do something after it passes an obstacle then this is the place to do it.
// Ex. hiding func_constructible for the obstacle or voice overs
trigger self move_increment
}
// Move to waypoint 004
trigger move_to_004
{
accum 0 bitset 1 // Mark as moving
followspline 0 waypoint_004 80 wait length -64
accum 0 bitreset 1 // Mark as not moving
trigger self move_increment
}
// Move to waypoint 005
trigger move_to_005
{
accum 0 bitset 1 // Mark as moving
followspline 0 waypoint_005 80 wait length -64
accum 0 bitreset 1 // Mark as not moving
// Lock script
trigger self script_lock
// Stop sound
trigger tank1_sound stop
// Stopping state
trigger self anim_tracks_stop
startanimation 45 10 15 nolerp norandom
wait 666
// Stationary state
startanimation 0 1 15 nolerp norandom
// Wait a little until starting the fireing sequence
wait 900
// Manually increment waypoint counter
accum 2 inc 1
// This turret function will unlock the script when its done
trigger tank1_turret fire_at_target_1
}
// Move to waypoint 006
trigger move_to_006
{
accum 0 bitset 1 // Mark as moving
followspline 0 waypoint_006 80 wait length -64
accum 0 bitreset 1 // Mark as not moving
trigger self move_increment
}
// Move to waypoint 007
trigger move_to_007
{
accum 0 bitset 1 // Mark as moving
followspline 0 waypoint_007 80 wait length -64
accum 0 bitreset 1 // Mark as not moving
// If you want waypoints to loop, this is the place to reset the waypoint counter
// Make sure that the last waypoint targets waypoint_001 to loop correctly
accum 2 set 0 // Make the waypoints loop around
trigger self move_increment
}
//----------------------------------------------------------------------
// Tank sounds
//----------------------------------------------------------------------
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
}
//----------------------------------------------------------------------
// Tank animations
//----------------------------------------------------------------------
trigger anim_tracks_forward
{
remapshader models/mapobjects/tanks_sd/bits_r models/mapobjects/tanks_sd/bits_forward
remapshader models/mapobjects/tanks_sd/wheel_r models/mapobjects/tanks_sd/wheel_forward
remapshader models/mapobjects/tanks_sd/bits_l models/mapobjects/tanks_sd/bits_forward
remapshader models/mapobjects/tanks_sd/wheel_l models/mapobjects/tanks_sd/wheel_forward
remapshaderflush
}
trigger anim_tracks_turningleft
{
remapshader models/mapobjects/tanks_sd/bits_r models/mapobjects/tanks_sd/bits_forward
remapshader models/mapobjects/tanks_sd/wheel_r models/mapobjects/tanks_sd/wheel_forward
remapshader models/mapobjects/tanks_sd/bits_l models/mapobjects/tanks_sd/bits_backward
remapshader models/mapobjects/tanks_sd/wheel_l models/mapobjects/tanks_sd/wheel_backward
remapshaderflush
}
trigger anim_tracks_turningright
{
remapshader models/mapobjects/tanks_sd/bits_r models/mapobjects/tanks_sd/bits_backward
remapshader models/mapobjects/tanks_sd/wheel_r models/mapobjects/tanks_sd/wheel_backward
remapshader models/mapobjects/tanks_sd/bits_l models/mapobjects/tanks_sd/bits_forward
remapshader models/mapobjects/tanks_sd/wheel_l models/mapobjects/tanks_sd/wheel_forward
remapshaderflush
}
trigger anim_tracks_stop
{
remapshader models/mapobjects/tanks_sd/bits_r models/mapobjects/tanks_sd/bits_r
remapshader models/mapobjects/tanks_sd/wheel_r models/mapobjects/tanks_sd/wheel_r
remapshader models/mapobjects/tanks_sd/bits_l models/mapobjects/tanks_sd/bits_l
remapshader models/mapobjects/tanks_sd/wheel_l models/mapobjects/tanks_sd/wheel_l
remapshaderflush
}
trigger anim_fire_start
{
startanimation 67 8 10 nolerp norandom
}
trigger anim_fire_stop
{
startanimation 0 1 15 nolerp norandom
}
}
//======================================================================
// Tank turret
//======================================================================
tank1_turret
{
spawn
{
// Wait for host entity to spawn
wait 100
// Attaches itself to a tag on the script_mover
attachtotag tank1 tag_turret
}
//----------------------------------------------------------------------
// Turret sequence
//----------------------------------------------------------------------
trigger fire_at_target_1
{
// Wait a little until starting sequence
wait 1000
// Turn turret towards target
trigger tank1_sound turret_turn_start
faceangles 0 60 0 4000 // Adjust angles to match the target
trigger tank1_sound turret_turn_stop
wait 500
// Fire at target
trigger tank1_sound turret_fire
trigger tank1 anim_fire_start
setstate tank1_flash default
wait 50
setstate tank1_flash invisible
wait 200
trigger tank1 anim_fire_stop
// BUG: Apparently the entitys scriptblock is completely removed after its blown up the first time
trigger target_000 blow_up
wait 1000
// Turn turret back to target
trigger tank1_sound turret_turn_start
faceangles 0 0 0 4000
trigger tank1_sound turret_turn_stop
// Wait a little until its ready to move again
wait 500
// Unlock script
trigger tank1 script_unlock
}
//----------------------------------------------------------------------
// Turret sounds
//----------------------------------------------------------------------
trigger sound_fire
{
stopsound
playsound sound/vehicles/tank/tank_fire.wav volume 300
}
trigger sound_turn_start
{
stopsound
playsound sound/vehicles/tank/turret_spin.wav looping volume 127
}
trigger sound_turn_stop
{
stopsound
playsound sound/vehicles/tank/turret_end.wav volume 96
}
}
//======================================================================
// The following are related entities which are attached because they need to follow the script_mover
//======================================================================
tank1_enabler_trigger
{
spawn
{
// Wait for host entity to spawn
wait 100
// Attaches itself to a tag on the script_mover
attachtotag tank1 tag_turret
}
}
tank1_flash
{
spawn
{
// Wait for host entity to spawn
wait 200
// Attaches itself to a tag on the script_mover
attachtotag tank1_turret tag_flash
// Hides the flash
setstate tank1_flash invisible
}
}
tank1_smoke
{
spawn
{
// Wait for host entity to spawn
wait 100
// Attaches itself to a tag on the script_mover
attachtotag tank1 tag_turret
// Turn off smoking
alertentity tank1_smoke
}
}
tank1_toi
{
spawn
{
// Wait for host entity to spawn
wait 100
// Attaches itself to a tag on the script_mover
attachtotag tank1 tag_turret
}
}
//======================================================================
// The following are the remaining entities
//======================================================================
tank1_construct
{
spawn
{
// Needed for the icon to reappear correctly on the command map
constructible_class 2
}
// Called when the repairs are starting
buildstart final
{
}
// Called when the repairs have failed
decayed final
{
}
// Called when the repairs have failed
failed
{
}
// Called when the repairs are done
built final
{
// Resurrect the entity. This fills up its health and trigger the ::rebirth function
alertentity tank1
}
}
tank1_disabler
{
spawn
{
}
trigger run
{
// Call the function which controls the escort timeout
trigger tank1 timer
}
}
tank1_enabler
{
spawn
{
}
trigger run
{
// Call the function which handles the escort
trigger tank1 escort_trigger
}
}
tank1_kill
{
spawn
{
}
}
tank1_timer
{
spawn
{
}
}
//======================================================================
// This block contains sound redirectors. Since commands are executed in order
// the only way to have multiple waits at the same time is to play them through another scriptblock
//======================================================================
tank1_sound
{
spawn
{
}
trigger start
{
trigger tank1 sound_start
wait 3400
trigger tank1 sound_move
}
trigger stop
{
trigger tank1 sound_stop
wait 1400
trigger tank1 sound_idle
}
trigger rebirth
{
trigger tank1 sound_rebirth
wait 1400
trigger tank1 sound_idle
}
trigger turret_fire
{
trigger tank1_turret sound_fire
}
trigger turret_turn_start
{
trigger tank1_turret sound_turn_start
}
trigger turret_turn_stop
{
trigger tank1_turret sound_turn_stop
}
}
//======================================================================
// OBSTACLES
//======================================================================
obstacle_000
{
spawn
{
}
pain
{
}
death
{
// Notify relevant parts of the script that the obstacle has been destroyed
trigger tank1 obstacle_000_removed
}
}
//======================================================================
// TARGETS
//======================================================================
//
// Slot Used for
// ==== ========
// 0 State:
// - Bit 0: Broken 0 = No 1 = Yes
//
target_000
{
spawn
{
// Reset state bits
accum 0 bitset 0 // Mark as not blown up
}
pain
{
}
// If you need to notify other parts of the script that the target has been removed, then do it here.
death
{
}
// Called when the entity should be destroyed
trigger blow_up
{
// Check if we have already been blown up
accum 0 abort_if_not_bitset 0 // Abort if already blown up
// Update state bits
accum 0 bitreset 0 // Mark as blown up
// Blow up
alertentity target_000
}
}
