UGX-Mods Login

or login with an authentication provider below
Sign In with Google
Sign In with Twitter
Sign In with Discord
Sign In with Steam
Sign In with Facebook
Sign In with Twitch

PanzerSoldat problem

broken avatar :(
Created 8 years ago
by jm-390
0 Members and 1 Guest are viewing this topic.
4,179 views
broken avatar :(
×
broken avatar :(
Location: tr
Date Registered: 29 July 2014
Last active: 4 months ago
Posts
108
Respect
Forum Rank
Pack-a-Puncher
Primary Group
Member
×
jm-390's Groups
jm-390's Contact & Social Links
..so I try to added PanzerSoldat and After I followed BluntStuffy tut this one https://ugx-mods.com/forum/index.php?topic=12208
I got server script compile error I checked steps several times and I can't solved  :-\
This topic contains a post which is marked as the Best Answer. Click here to view it.
broken avatar :(
×
broken avatar :(
Location: tr
Date Registered: 29 July 2014
Last active: 4 months ago
Posts
108
Respect
Forum Rank
Pack-a-Puncher
Primary Group
Member
×
jm-390's Groups
jm-390's Contact & Social Links
so any help.....
broken avatar :(
×
broken avatar :(
Location: nlApeldoorn
Date Registered: 17 December 2013
Last active: 1 year ago
Posts
1,187
Respect
1,404Add +1
Forum Rank
Zombie Colossus
Primary Group
Community Scripter Elite
My Groups
More
My Contact & Social Links
More
Personal Quote
It aint much, if it aint Dutch
Signature
×
BluntStuffy's Groups
Donator ♥ Benevolent Soul who has our eternal gratitude and exclusive access to betas and the donator section of the forum.
Community Scripter Elite Has shown excellence and experience in the area of custom scripting in the UGX-Mods community.
Oil Rig Beta Access
Oil Rig Beta Access
BluntStuffy's Contact & Social LinksBluntstuffy@BluntZombieBluntStuffyStuffyZombie
This has nothing to do with the panzer, it's an error a lot of people get creating a new map. Has to do with the ugx-modtools patch if i remember correctly. Did you install the patch?

Do you use teleporters, otherwise just comment out the lines that refer to that function or try adding:

Code Snippet
Plaintext
#include maps\ugx_modder_help;

to the top of the dlc3_teleporter file. I cant remember the exact fix from the top of my head, but there's quite some topics about this:

https://ugx-mods.com/forum/index.php/topic,10515.msg116545.html#msg116545


https://ugx-mods.com/forum/index.php/topic,5825.msg64103.html#msg64103
Last Edit: September 06, 2016, 06:19:51 pm by BluntStuffy
broken avatar :(
×
broken avatar :(
Location: tr
Date Registered: 29 July 2014
Last active: 4 months ago
Posts
108
Respect
Forum Rank
Pack-a-Puncher
Primary Group
Member
×
jm-390's Groups
jm-390's Contact & Social Links
I didn't use teleporters  :-\
also I have added
Code Snippet
Plaintext
#include maps\ugx_modder_help;
before I added panzer in dlc3_code and dlc3_teleport
this is dlc3_teleport file
Code Snippet
Plaintext
// Keep in mind this file is just a copy of nazi_zombie_factory_teleporter.gsc. It has .been adapted for general use (isDefined checks and so on)
#include common_scripts\utility;
#include maps\_utility;
#include maps\_zombiemode_utility;
#include maps\dlc3_code;
#include maps\ugx_modder_help;
//-------------------------------------------------------------------------------
// setup and kick off think functions
//-------------------------------------------------------------------------------
teleporter_init()
{
level.teleport = [];
level.active_links = 0;
level.countdown = 0;

level.teleport_delay = 2;
level.teleport_cost = 1500;
level.teleport_cooldown = 5;
level.is_cooldown = false;
level.active_timer = -1;
level.teleport_time = 0;

flag_init( "teleporter_pad_link_1" );
flag_init( "teleporter_pad_link_2" );
flag_init( "teleporter_pad_link_3" );

wait_for_all_players();

// Get the Pad triggers
for ( i=0; i<3; i++ )
{
trig = GetEnt( "trigger_teleport_pad_" + i, "targetname");
if ( IsDefined(trig) )
{
level.teleporter_pad_trig[i] = trig;
}
}

thread teleport_pad_think( 0 );
thread teleport_pad_think( 1 );
thread teleport_pad_think( 2 );
thread teleport_core_think();

thread start_black_room_fx();
thread init_pack_door();

SetDvar( "factoryAftereffectOverride", "-1" );

packapunch_see = getent( "packapunch_see", "targetname" );
if(isdefined( packapunch_see ) )
{
packapunch_see thread play_packa_see_vox();
}

level.teleport_ae_funcs = [];

if( !IsSplitscreen() )
{
level.teleport_ae_funcs[level.teleport_ae_funcs.size] = maps\dlc3_teleporter::teleport_aftereffect_fov;
}
level.teleport_ae_funcs[level.teleport_ae_funcs.size] = maps\dlc3_teleporter::teleport_aftereffect_shellshock;
level.teleport_ae_funcs[level.teleport_ae_funcs.size] = maps\dlc3_teleporter::teleport_aftereffect_shellshock_electric;
level.teleport_ae_funcs[level.teleport_ae_funcs.size] = maps\dlc3_teleporter::teleport_aftereffect_bw_vision;
level.teleport_ae_funcs[level.teleport_ae_funcs.size] = maps\dlc3_teleporter::teleport_aftereffect_red_vision;
level.teleport_ae_funcs[level.teleport_ae_funcs.size] = maps\dlc3_teleporter::teleport_aftereffect_flashy_vision;
level.teleport_ae_funcs[level.teleport_ae_funcs.size] = maps\dlc3_teleporter::teleport_aftereffect_flare_vision;
}

//-------------------------------------------------------------------------------
// sets up up the pack a punch door
//-------------------------------------------------------------------------------
init_pack_door()
{
door = getent( "pack_door", "targetname" );
if(modderHelp( door, "Missing Pack a Punch door with Targetname KVP 'pack_door'." )) return;
door movez( -50, 0.05, 0 );
wait(1.0);

flag_wait( "all_players_connected" );

door movez(  50, 1.5, 0 );
door playsound( "packa_door_1" );

// Open slightly the first two times
flag_wait( "teleporter_pad_link_1" );
door movez( -35, 1.5, 1 );
door playsound( "packa_door_2" );
door thread packa_door_reminder();
wait(2);

// Second link
flag_wait( "teleporter_pad_link_2" );
door movez( -25, 1.5, 1 );
door playsound( "packa_door_2" );
wait(2);

// Final Link
flag_wait( "teleporter_pad_link_3" );

door movez( -60, 1.5, 1 );
door playsound( "packa_door_2" );

clip = getentarray( "pack_door_clip", "targetname" );
for ( i = 0; i < clip.size; i++ )
{
clip[i] connectpaths();
clip[i] delete();
}
}

//-------------------------------------------------------------------------------
// handles activating and deactivating pads for cool down
//-------------------------------------------------------------------------------
pad_manager()
{
for ( i = 0; i < level.teleporter_pad_trig.size; i++ )
{
// shut off the pads
level.teleporter_pad_trig[i] sethintstring( &"ZOMBIE_TELEPORT_COOLDOWN" );
level.teleporter_pad_trig[i] teleport_trigger_invisible( false );
}

level.is_cooldown = true;
wait( level.teleport_cooldown );
level.is_cooldown = false;

for ( i = 0; i < level.teleporter_pad_trig.size; i++ )
{
if ( level.teleporter_pad_trig[i].teleport_active )
{
level.teleporter_pad_trig[i] sethintstring( &"ZOMBIE_TELEPORT_TO_CORE" );
}
else
{
level.teleporter_pad_trig[i] sethintstring( &"ZOMBIE_LINK_TPAD" );
}
// level.teleporter_pad_trig[i] teleport_trigger_invisible( false );
}
}

//-------------------------------------------------------------------------------
// staggers the black room fx
//-------------------------------------------------------------------------------
start_black_room_fx()
{
for ( i = 901; i <= 904; i++ )
{
wait( 1 );
exploder( i );
}
}

//-------------------------------------------------------------------------------
// handles turning on the pad and waiting for link
//-------------------------------------------------------------------------------
teleport_pad_think( index )
{
if(!isDefined(level.teleporter_pad_trig)) return; //UGX - no teleporters on map, stop
if(!isDefined(level.teleporter_pad_trig[index])) return; // UGX - teleporter doesn't exist, stop

tele_help = getent( "tele_help_" + index, "targetname" );
if(isdefined( tele_help ) )
{
tele_help thread play_tele_help_vox();
}

active = false;

// init the pad
level.teleport[index] = "waiting";

trigger = level.teleporter_pad_trig[ index ];

trigger setcursorhint( "HINT_NOICON" );
trigger sethintstring( &"ZOMBIE_FLAMES_UNAVAILABLE" );

flag_wait( "electricity_on" );

trigger sethintstring( &"ZOMBIE_POWER_UP_TPAD" );
trigger.teleport_active = false;

if ( isdefined( trigger ) )
{
while ( !active )
{
trigger waittill( "trigger" );

if ( level.active_links < 3 )
{
trigger_core = getent( "trigger_teleport_core", "targetname" );

if( modderHelp( trigger_core, "Missing mainframe trigger with Targetname KVP 'trigger_teleport_core'." ) )
{
trigger_core teleport_trigger_invisible( false );
}
}

// when one starts the others disabled
for ( i=0; i<level.teleporter_pad_trig.size; i++ )
{
level.teleporter_pad_trig[ i ] teleport_trigger_invisible( true );
}
level.teleport[index] = "timer_on";

// start the countdown back to the core
trigger thread teleport_pad_countdown( index, 30 );
teleporter_vo( "countdown", trigger );

// wait for the countdown
while ( level.teleport[index] == "timer_on" )
{
wait( .05 );
}

// core was activated in time
if ( level.teleport[index] == "active" )
{
active = true;
ClientNotify( "pw" + index ); // pad wire #

//AUDIO
ClientNotify( "tp" + index ); // Teleporter #

// MM - Auto teleport the first time
teleporter_wire_wait( index );

// trigger teleport_trigger_invisible( true );
trigger thread player_teleporting( index );
}
else
{
// Reenable triggers
  for ( i=0; i<level.teleporter_pad_trig.size; i++ )
  {
  level.teleporter_pad_trig[ i ] teleport_trigger_invisible( false );
  }
}
wait( .05 );
}

if ( level.is_cooldown )
{
// shut off the pads
trigger sethintstring( &"ZOMBIE_TELEPORT_COOLDOWN" );
trigger teleport_trigger_invisible( false );
trigger.teleport_active = true;
}
else
{
trigger thread teleport_pad_active_think( index );
}
}
}

//-------------------------------------------------------------------------------
// updates the teleport pad timer
//-------------------------------------------------------------------------------
teleport_pad_countdown( index, time )
{
self endon( "stop_countdown" );

// iprintlnbold( &"ZOMBIE_START_TPAD" );

if ( level.active_timer < 0 )
{
level.active_timer = index;
}

level.countdown++;

//AUDIO
ClientNotify( "pac" + index );
ClientNotify( "TRf" ); // Teleporter receiver map light flash

// start timer for all players
// Add a second for VO sync
players = get_players();
for( i = 0; i < players.size; i++ )
{
players[i] thread maps\_zombiemode_timer::start_timer( time+1, "stop_countdown" );
}
wait( time+1 );

if ( level.active_timer == index )
{
level.active_timer = -1;
}

// ran out of time to activate teleporter
level.teleport[index] = "timer_off";
// iprintlnbold( "out of time" );
ClientNotify( "TRs" ); // Stop flashing the receiver map light

level.countdown--;
}

//-------------------------------------------------------------------------------
// handles teleporting players when triggered
//-------------------------------------------------------------------------------
teleport_pad_active_think( index )
{
// self endon( "player_teleported" );

// link established, can be used to teleport
self setcursorhint( "HINT_NOICON" );
self.teleport_active = true;

user = undefined;

// self sethintstring( &"ZOMBIE_TELEPORT_TO_CORE" );
// self teleport_trigger_invisible( false );

while ( 1 )
{
self waittill( "trigger", user );

if ( is_player_valid( user ) && user.score >= level.teleport_cost && !level.is_cooldown )
{
for ( i = 0; i < level.teleporter_pad_trig.size; i++ )
{
level.teleporter_pad_trig[i] teleport_trigger_invisible( true );
}

user maps\_zombiemode_score::minus_to_player_score( level.teleport_cost );

// Non-threaded so the trigger doesn't activate before the cooldown
self player_teleporting( index );
}
}
}

//-------------------------------------------------------------------------------
// handles moving the players and fx, etc...moved out so it can be threaded
//-------------------------------------------------------------------------------
player_teleporting( index )
{
time_since_last_teleport = GetTime() - level.teleport_time;

// begin the teleport
// add 3rd person fx
teleport_pad_start_exploder( index );

// play startup fx at the core
exploder( 105 );

//AUDIO
ClientNotify( "tpw" + index );

// start fps fx
self thread teleport_pad_player_fx( level.teleport_delay );

//AUDIO
self thread teleport_2d_audio();

// Activate the TP zombie kill effect
self thread teleport_nuke( 20, 300); // Max 20 zombies and range 300

// wait a bit
wait( level.teleport_delay );

// end fps fx
self notify( "fx_done" );

// add 3rd person beam fx
teleport_pad_end_exploder( index );

// teleport the players
self teleport_players();

//AUDIO
ClientNotify( "tpc" + index );

// only need this if it's not cooling down
if ( level.is_cooldown == false )
{
thread pad_manager();
}

// Now spawn a powerup goodie after a few seconds
wait( 2.0 );
ss = getstruct( "teleporter_powerup", "targetname" );
if ( IsDefined( ss ) )
{
ss thread maps\_zombiemode_powerups::special_powerup_drop(ss.origin);
}
else
{
modderHelp( undefined, "Missing struct with Targetname KVP 'teleporter_powerup'." );
}

// Special for teleporting too much.  The Dogs attack!
if ( time_since_last_teleport < 60000 && level.active_links == 3 && level.round_number > 20 )
{
dog_spawners = GetEntArray( "special_dog_spawner", "targetname" );
if( modderHelp( dog_spawners, "Missing power up dog with Targetname KVP 'special_dog_spawner'." ) )
{
maps\_zombiemode_dogs::special_dog_spawn( undefined, 4 );
}
//iprintlnbold( "Samantha Sez: No Powerup For You!" );
thread play_sound_2d( "sam_nospawn" );
}
level.teleport_time = GetTime();
}

//-------------------------------------------------------------------------------
// pad fx for the start of the teleport
//-------------------------------------------------------------------------------
teleport_pad_start_exploder( index )
{
switch ( index )
{
case 0:
exploder( 202 );
break;

case 1:
exploder( 302 );
break;

case 2:
exploder( 402 );
break;
}
}

//-------------------------------------------------------------------------------
// pad fx for the end of the teleport
//-------------------------------------------------------------------------------
teleport_pad_end_exploder( index )
{
switch ( index )
{
case 0:
exploder( 201 );
break;

case 1:
exploder( 301 );
break;

case 2:
exploder( 401 );
break;
}
}

//-------------------------------------------------------------------------------
// used to enable / disable the pad use trigger for players
//-------------------------------------------------------------------------------
teleport_trigger_invisible( enable )
{
players = getplayers();

for ( i = 0; i < players.size; i++ )
{
if ( isdefined( players[i] ) )
{
self SetInvisibleToPlayer( players[i], enable );
}
}
}

//-------------------------------------------------------------------------------
// checks if player is within radius of the teleport pad
//-------------------------------------------------------------------------------
player_is_near_pad( player )
{
radius = 88;
scale_factor = 2;

dist = Distance2D( player.origin, self.origin );
dist_touching = radius * scale_factor;

if ( dist < dist_touching )
{
return true;
}

return false;
}


//-------------------------------------------------------------------------------
// this is the 1st person effect seen when touching the teleport pad
//-------------------------------------------------------------------------------
teleport_pad_player_fx( delay )
{
self endon( "fx_done" );

while ( 1 )
{
players = getplayers();
for ( i = 0; i < players.size; i++ )
{
if ( isdefined( players[i] ) )
{
if ( self player_is_near_pad( players[i] ) )
{
players[i] SetTransported( delay );
}
else
{
players[i] SetTransported( 0 );
}
}
}
wait ( .05 );
}
}

//-------------------------------------------------------------------------------
// send players back to the core
//-------------------------------------------------------------------------------
teleport_players()
{
player_radius = 16;

players = getplayers();

core_pos = [];
occupied = [];
image_room = [];
players_touching = []; // the players that will actually be teleported

player_idx = 0;

prone_offset = (0, 0, 49);
crouch_offset = (0, 0, 20);
stand_offset = (0, 0, 0);

// send players to a black room to flash images for a few seconds
for ( i = 0; i < 4; i++ )
{
core_pos[i] = getent( "origin_teleport_player_" + i, "targetname" );
modderHelp( core_pos[i], "Missing teleport destination script origin with Targetname KVP 'origin_teleport_player_" + i + "'." );
occupied[i] = false;
image_room[i] = getent( "teleport_room_" + i, "targetname" );
modderHelp( image_room[i], "Missing teleport room script origin with Targetname KVP 'teleport_room_" + i + "'." );

if ( isdefined( players[i] ) )
{
players[i] settransported( 0 );

if ( self player_is_near_pad( players[i] ) )
{
players_touching[player_idx] = i;
player_idx++;

if ( isdefined( image_room[i] ) && !players[i] maps\_laststand::player_is_in_laststand() )
{
players[i] disableOffhandWeapons();
players[i] disableweapons();
if( players[i] getstance() == "prone" )
{
desired_origin = image_room[i].origin + prone_offset;
}
else if( players[i] getstance() == "crouch" )
{
desired_origin = image_room[i].origin + crouch_offset;
}
else
{
desired_origin = image_room[i].origin + stand_offset;
}

players[i].teleport_origin = spawn( "script_origin", players[i].origin );
players[i].teleport_origin.angles = players[i].angles;
players[i] linkto( players[i].teleport_origin );
players[i].teleport_origin.origin = desired_origin;
players[i] FreezeControls( true );
wait_network_frame();

if( IsDefined( players[i] ) )
{
setClientSysState( "levelNotify", "black_box_start", players[i] );
players[i].teleport_origin.angles = image_room[i].angles;
}
}
}
}
}

wait( 2 );

// Nuke anything at the core
core = GetEnt( "trigger_teleport_core", "targetname" );
modderHelp( core, "Missing mainframe trigger with Targetname KVP 'trigger_teleport_core'." );
core thread teleport_nuke( undefined, 300); // Max any zombies at the pad range 300

// check if any players are standing on top of core teleport positions
for ( i = 0; i < players.size; i++ )
{
if ( isdefined( players[i] ) )
{
for ( j = 0; j < 4; j++ )
{
if ( !occupied[j] )
{
dist = Distance2D( core_pos[j].origin, players[i].origin );
if ( dist < player_radius )
{
occupied[j] = true;
}
}
}
setClientSysState( "levelNotify", "black_box_end", players[i] );
}
}

wait_network_frame();

// move players to the core
for ( i = 0; i < players_touching.size; i++ )
{
player_idx = players_touching[i];
player = players[player_idx];

if ( !IsDefined( player ) )
{
continue;
}

// find a free space at the core
slot = i;
start = 0;
while ( occupied[slot] && start < 4 )
{
start++;
slot++;
if ( slot >= 4 )
{
slot = 0;
}
}
occupied[slot] = true;
pos_name = "origin_teleport_player_" + slot;
teleport_core_pos = getent( pos_name, "targetname" );
modderHelp( teleport_core_pos, "Missing teleport core position with Targetname KVP " + pos_name + "." );

player unlink();

assert( IsDefined( player.teleport_origin ) );
player.teleport_origin delete();
player.teleport_origin = undefined;

player enableweapons();
player enableoffhandweapons();
player setorigin( core_pos[slot].origin );
player setplayerangles( core_pos[slot].angles );
player FreezeControls( false );
player thread teleport_aftereffects();

vox_rand = randomintrange(1,100);  //RARE: Sets up rare post-teleport line

if( vox_rand <= 2 )
{
//player teleporter_vo( "vox_tele_sick_rare" );
//iprintlnbold( "Hey, this is the random teleport sickness line!" );
}
else
{
player teleporter_vo( "vox_tele_sick" );
}

player achievement_notify( "DLC3_ZOMBIE_FIVE_TELEPORTS" );
}

// play beam fx at the core
exploder( 106 );
}

//-------------------------------------------------------------------------------
// updates the hint string when countdown is started and expired
//-------------------------------------------------------------------------------
teleport_core_hint_update()
{
self setcursorhint( "HINT_NOICON" );

while ( 1 )
{
// can't use teleporters until power is on
if ( !flag( "electricity_on" ) )
{
self sethintstring( &"ZOMBIE_FLAMES_UNAVAILABLE" );
}
else if ( teleport_pads_are_active() )
{
self sethintstring( &"ZOMBIE_LINK_TPAD" );
}
else if ( level.active_links == 0 )
{
self sethintstring( &"ZOMBIE_INACTIVE_TPAD" );
}
else
{
self sethintstring( "" );
}

wait( .05 );
}
}

//-------------------------------------------------------------------------------
// establishes the link between teleporter pads and the core
//-------------------------------------------------------------------------------
teleport_core_think()
{
trigger = getent( "trigger_teleport_core", "targetname" );
if ( isdefined( trigger ) )
{
trigger thread teleport_core_hint_update();

// disable teleporters to power is turned on
flag_wait( "electricity_on" );

while ( 1 )
{
if ( teleport_pads_are_active() )
{
trigger waittill( "trigger" );

// trigger teleport_trigger_invisible( true );

// iprintlnbold( &"ZOMBIE_LINK_ACTIVE" );

// link the activated pads
for ( i = 0; i < level.teleport.size; i++ )
{
if ( isdefined( level.teleport[i] ) )
{
if ( level.teleport[i] == "timer_on" )
{
level.teleport[i] = "active";
level.active_links++;
flag_set( "teleporter_pad_link_"+level.active_links );

//AUDIO
ClientNotify( "scd" + i );

teleport_core_start_exploder( i );

// check for all teleporters active
if ( level.active_links == 3 )
{
exploder( 101 );
ClientNotify( "pap1" ); // Pack-A-Punch door on
teleporter_vo( "linkall", trigger );
if( level.round_number <= 7 )
{
achievement_notify( "DLC3_ZOMBIE_FAST_LINK" );
}
Earthquake( 0.3, 2.0, trigger.origin, 3700 );
}

// stop the countdown for the teleport pad
pad = "trigger_teleport_pad_" + i;
trigger_pad = getent( pad, "targetname" );
trigger_pad stop_countdown();
ClientNotify( "TRs" ); // Stop flashing the receiver map light
level.active_timer = -1;
}
}
}
}

wait( .05 );
}
}
else
{
modderHelp( undefined, "Missing mainframe trigger with Targetname KVP 'trigger_teleport_core'." );
}
}

stop_countdown()
{
self notify( "stop_countdown" );
players = get_players();

for( i = 0; i < players.size; i++ )
{
players[i] notify( "stop_countdown" );
}
}

//-------------------------------------------------------------------------------
// checks if any of the teleporter pads are counting down
//-------------------------------------------------------------------------------
teleport_pads_are_active()
{
// have any pads started?
if ( isdefined( level.teleport ) )
{
for ( i = 0; i < level.teleport.size; i++ )
{
if ( isdefined( level.teleport[i] ) )
{
if ( level.teleport[i] == "timer_on" )
{
return true;
}
}
}
}

return false;
}

//-------------------------------------------------------------------------------
// starts the exploder for the teleport pad fx
//-------------------------------------------------------------------------------
teleport_core_start_exploder( index )
{
switch ( index )
{
case 0:
exploder( 102 );
break;

case 1:
exploder( 103 );
break;

case 2:
exploder( 104 );
break;
}
}

teleport_2d_audio()
{
self endon( "fx_done" );

while ( 1 )
{
players = getplayers();

wait(1.7);

for ( i = 0; i < players.size; i++ )
{
if ( isdefined( players[i] ) )
{
if ( self player_is_near_pad( players[i] ) )
{
setClientSysState("levelNotify", "t2d", players[i]);
}
}
}
}
}


// kill anything near the pad
teleport_nuke( max_zombies, range )
{
zombies = getaispeciesarray("axis");

zombies = get_array_of_closest( self.origin, zombies, undefined, max_zombies, range );

for (i = 0; i < zombies.size; i++)
{
wait (randomfloatrange(0.2, 0.3));
if( !IsDefined( zombies[i] ) )
{
continue;
}

if( is_magic_bullet_shield_enabled( zombies[i] ) )
{
continue;
}

if( !( zombies[i] enemy_is_dog() ) )
{
zombies[i] maps\_zombiemode_spawner::zombie_head_gib();
}

zombies[i] dodamage( 10000, zombies[i].origin );
playsoundatposition( "nuked", zombies[i].origin );
}
}

teleporter_vo( tele_vo_type, location )
{
if( !isdefined( location ))
{
self thread teleporter_vo_play( tele_vo_type, 2 );
}
else
{
players = get_players();
for (i = 0; i < players.size; i++)
{
if (distance (players[i].origin, location.origin) < 64)
{
switch ( tele_vo_type )
{
case "linkall":
players[i] thread teleporter_vo_play( "vox_tele_linkall" );
break;
case "countdown":
players[i] thread teleporter_vo_play( "vox_tele_count", 3 );
break;
}
}
}
}
}

teleporter_vo_play( vox_type, pre_wait )
{
if(!isdefined( pre_wait ))
{
pre_wait = 0;
}
index = maps\_zombiemode_weapons::get_player_index(self);
plr = "plr_" + index + "_";
wait(pre_wait);
self create_and_play_dialog( plr, vox_type, 0.25 );
}

play_tele_help_vox()
{
level endon( "tele_help_end" );

while(1)
{
self waittill("trigger", who);

if( flag( "electricity_on" ) )
{
who thread teleporter_vo_play( "vox_tele_help" );
level notify( "tele_help_end" );
}

while(IsDefined (who) && (who) IsTouching (self))
{
wait(0.1);
}
}
}

play_packa_see_vox()
{
wait(10);

if( !flag( "teleporter_pad_link_3" ) )
{
self waittill("trigger", who);
who thread teleporter_vo_play( "vox_perk_packa_see" );
}
}


//
// This should match the perk_wire_fx_client function
// waits for the effect to travel along the wire
teleporter_wire_wait( index )
{
targ = getstruct( "pad_"+index+"_wire" ,"targetname");
if ( !IsDefined( targ ) )
{
return;
}

while(isDefined(targ))
{
if(isDefined(targ.target))
{
target = getstruct(targ.target,"targetname");
wait( 0.1 );

targ = target;
}
else
{
break;
}
}
}

// Teleporter Aftereffects
teleport_aftereffects()
{
if( GetDvar( "factoryAftereffectOverride" ) == "-1" )
{
self thread [[ level.teleport_ae_funcs[RandomInt(level.teleport_ae_funcs.size)] ]]();
}
else
{
self thread [[ level.teleport_ae_funcs[int(GetDvar( "factoryAftereffectOverride" ))] ]]();
}
}

teleport_aftereffect_shellshock()
{
println( "*** Explosion Aftereffect***\n" );
self shellshock( "explosion", 4 );
}

teleport_aftereffect_shellshock_electric()
{
println( "***Electric Aftereffect***\n" );
self shellshock( "electrocution", 4 );
}

// tae indicates to Clientscripts that a teleporter aftereffect should start

teleport_aftereffect_fov()
{
setClientSysState( "levelNotify", "tae", self );
}

teleport_aftereffect_bw_vision( localClientNum )
{
setClientSysState( "levelNotify", "tae", self );
}

teleport_aftereffect_red_vision( localClientNum )
{
setClientSysState( "levelNotify", "tae", self );
}

teleport_aftereffect_flashy_vision( localClientNum )
{
setClientSysState( "levelNotify", "tae", self );
}

teleport_aftereffect_flare_vision( localClientNum )
{
setClientSysState( "levelNotify", "tae", self );
}

packa_door_reminder()
{
while( !flag( "teleporter_pad_link_3" ) )
{
rand = randomintrange(4,16);
self playsound( "packa_door_hitch" );
wait(rand);
}
}
and this dlc3_code file
[code]// Sparks (9/12/2009 3:20:27 PM)
// treminaor (6/03/2013 10:54 AM) - This file is an adaptation of nazi_zombie_factory.gsc. Key functions have been pulled out and put here, adapted for general use.
//                          -   The file was originally created for the Sniperbolt Tutorial but as a result contained a couple bugs. I have gone through and fixed them for this Modtools patch.
#include maps\_utility;
#include common_scripts\utility;
#include maps\_zombiemode_utility;
#include maps\_music;
#include maps\ugx_modder_help;
// DLC3 Utilities
#include maps\dlc3_teleporter;

/***********************************************************************
    DLC3 STUFF
***********************************************************************/

initDLC3_Vars()
{
   // Alter The Pulls
   level.pulls_since_last_ray_gun = 0;
   level.pulls_since_last_tesla_gun = 0;
   level.player_drops_tesla_gun = false;
   
   // Coop Heroes Loadout
   if( isDefined( level.DLC3.useCoopHeroes ) && level.DLC3.useCoopHeroes )
   {
      level.use_zombie_heroes = level.DLC3.useCoopHeroes;
   }
   else
   {
      level.use_zombie_heroes = true;
   }

   // Bowie Knife Damage
   if( isDefined( level.DLC3.perk_altMeleeDamage ) && level.DLC3.perk_altMeleeDamage )
   {
      SetDvar( "perk_altMeleeDamage", level.DLC3.perk_altMeleeDamage );
   }
   else
   {
      SetDvar( "perk_altMeleeDamage", 1000 );
   }

   // Dogs Enabled
   if( isDefined( level.DLC3.useHellHounds ))
   {
      level.dogs_enabled = level.DLC3.useHellHounds;
   }
   else
   {
      level.dogs_enabled = false;
   }
   
   // Mixed Crawlers And Dogs
   if( isDefined( level.DLC3.useMixedRounds ) )
   {
      level.mixed_rounds_enabled = level.DLC3.useMixedRounds;
   }
   else
   {
      level.mixed_rounds_enabled = false;
   }
   
   // Array For Burning Zombies, Traps, and Risers -- Leave These
   level.burning_zombies = [];
   level.traps = [];
   level.zombie_rise_spawners = [];
   
   // Barrier Search Override
   if( isDefined( level.DLC3.barrierSearchOverride ) && level.DLC3.barrierSearchOverride )
   {
      level.max_barrier_search_dist_override = level.DLC3.barrierSearchOverride;
   }
   else
   {
      level.max_barrier_search_dist_override = 400;
   }
   
   // Pointer Functions -- These Are Stock
   level.door_dialog_function = maps\_zombiemode::play_door_dialog;
   level.achievement_notify_func = maps\_zombiemode_utility::achievement_notify;
   level.dog_spawn_func = maps\_zombiemode_dogs::dog_spawn_factory_logic;
   
   level.zombie_anim_override = maps\dlc3_code::anim_override_func;
}

initDLC3_Vars2()
{   
   // Special level specific settings
   if( isDefined( level.DLC3.powerUpDropMax ) && level.DLC3.powerUpDropMax )
   {
      set_zombie_var( "zombie_powerup_drop_max_per_round", level.DLC3.powerUpDropMax );   // lower this to make drop happen more often
   }
   {
      set_zombie_var( "zombie_powerup_drop_max_per_round", 3 );   // lower this to make drop happen more often
   }
}

DLC3_threadCalls()
{
   initDLC3_Vars();
   
   script_anims_init();
   
   level thread maps\_callbacksetup::SetupCallbacks();
   
   precacheDLC3();
}

DLC3_threadCalls2()
{
   if( isArray( level.DLC3.initialZones ) && isDefined( level.DLC3.initialZones[ 0 ] ) )
   {
      level thread maps\_zombiemode_zone_manager::manage_zones( level.DLC3.initialZones );
   }
   
   if( isDefined( level.DLC3.useSnow ) && level.DLC3.useSnow )
   {
      level thread player_Snow();
   }
   
   init_sounds();
   
   level thread initDLC3_Vars2();
   
   if( isDefined( level.DLC3.useElectricSwitch ) && level.DLC3.useElectricSwitch )
   {
      // level thread power_electric_switch();
   }
   else
   {
      level thread power_electric_switch_on();
   }
   
   level thread magic_box_init();

   if( isDefined( level.DLC3.useElectricTraps ) && level.DLC3.useElectricTraps )
   {
      thread init_elec_trap_trigs();
   }
   
   // Need this here because of the createFX hack for teleporter FX
   if( !isDefined( level._script_exploders ) )
   {
      level._script_exploders = [];
   }
   
   teleporter_init();
   
   level thread mapStartAudio();
   
   level thread intro_screen();

   level thread jump_from_bridge();
   level lock_additional_player_spawner();

   if( isDefined( level.DLC3.useBridge ) && level.DLC3.useBridge )
   {
      level thread bridge_init();
   }

   level thread perkMachineRattles();
}

precacheDLC3()
{
   precachestring(&"ZOMBIE_FLAMES_UNAVAILABLE");
   precachestring(&"ZOMBIE_ELECTRIC_SWITCH");

   precachestring(&"ZOMBIE_POWER_UP_TPAD");
   precachestring(&"ZOMBIE_TELEPORT_TO_CORE");
   precachestring(&"ZOMBIE_LINK_TPAD");
   precachestring(&"ZOMBIE_LINK_ACTIVE");
   precachestring(&"ZOMBIE_INACTIVE_TPAD");
   precachestring(&"ZOMBIE_START_TPAD");

   precacheshellshock("electrocution");
   precachemodel("zombie_zapper_cagelight_red");
   precachemodel("zombie_zapper_cagelight_green");
   precacheModel("lights_indlight_on" );
   precacheModel("lights_milit_lamp_single_int_on" );
   precacheModel("lights_tinhatlamp_on" );
   precacheModel("lights_berlin_subway_hat_0" );
   precacheModel("lights_berlin_subway_hat_50" );
   precacheModel("lights_berlin_subway_hat_100" );
   precachemodel("collision_geo_32x32x128");

   precachestring(&"ZOMBIE_BETTY_ALREADY_PURCHASED");
   precachestring(&"ZOMBIE_BETTY_HOWTO");
}

intro_screen()
{

   flag_wait( "all_players_connected" );
   wait(2);
   level.intro_hud = [];
   for(i = 0;  i < 3; i++)
   {
      level.intro_hud = newHudElem();
      level.intro_hud.x = 0;
      level.intro_hud.y = 0;
      level.intro_hud.alignX = "left";
      level.intro_hud.alignY = "bottom";
      level.intro_hud.horzAlign = "left";
      level.intro_hud.vertAlign = "bottom";
      level.intro_hud.foreground = true;

      if ( level.splitscreen && !level.hidef )
      {
         level.intro_hud.fontScale = 2.75;
      }
      else
      {
         level.intro_hud.fontScale = 1.75;
      }
      level.intro_hud.alpha = 0.0;
      level.intro_hud.color = (1, 1, 1);
      level.intro_hud.inuse = false;
   }
   level.intro_hud[0].y = -110;
   level.intro_hud[1].y = -90;
   level.intro_hud[2].y = -70;


   level.intro_hud[0] settext(level.DLC3.introString);
   level.intro_hud[1] settext("");
   level.intro_hud[2] settext("");

   for(i = 0 ; i < 3; i++)
   {
      level.intro_hud FadeOverTime( 3.5 );
      level.intro_hud.alpha = 1;
      wait(1.5);
   }
   wait(1.5);
   for(i = 0 ; i < 3; i++)
   {
      level.intro_hud FadeOverTime( 3.5 );
      level.intro_hud.alpha = 0;
      wait(1.5);
   }   
   //wait(1.5);
   for(i = 0 ; i < 3; i++)
   {
      level.intro_hud destroy();
   }
}

init_sounds()
{
   maps\_zombiemode_utility::add_sound( "break_stone", "break_stone" );
   maps\_zombiemode_utility::add_sound( "gate_door",   "open_door" );
   maps\_zombiemode_utility::add_sound( "heavy_door",   "open_door" );
}

include_weapons()
{
   include_weapon( "zombie_colt" );
   include_weapon( "zombie_colt_upgraded", false );
   include_weapon( "zombie_sw_357" );
   include_weapon( "zombie_sw_357_upgraded", false );

   // Bolt Action
   include_weapon( "zombie_kar98k" );
   include_weapon( "zombie_kar98k_upgraded", false );

   // Semi Auto
   include_weapon( "zombie_m1carbine" );
   include_weapon( "zombie_m1carbine_upgraded", false );
   include_weapon( "zombie_m1garand" );
   include_weapon( "zombie_m1garand_upgraded", false );
   include_weapon( "zombie_gewehr43" );
   include_weapon( "zombie_gewehr43_upgraded", false );

   // Full Auto
   include_weapon( "zombie_stg44" );
   include_weapon( "zombie_stg44_upgraded", false );
   include_weapon( "zombie_thompson" );
   include_weapon( "zombie_thompson_upgraded", false );
   include_weapon( "zombie_mp40" );
   include_weapon( "zombie_mp40_upgraded", false );
   include_weapon( "zombie_type100_smg" );
   include_weapon( "zombie_type100_smg_upgraded", false );

   // Scoped
   include_weapon( "ptrs41_zombie" );
   include_weapon( "ptrs41_zombie_upgraded", false );

   // Grenade
   include_weapon( "molotov" );
   include_weapon( "stielhandgranate" );

   // Grenade Launcher   
   include_weapon( "m1garand_gl_zombie" );
   include_weapon( "m1garand_gl_zombie_upgraded", false );
   include_weapon( "m7_launcher_zombie" );
   include_weapon( "m7_launcher_zombie_upgraded", false );

   // Flamethrower
   include_weapon( "m2_flamethrower_zombie" );
   include_weapon( "m2_flamethrower_zombie_upgraded", false );

   // Shotgun
   include_weapon( "zombie_doublebarrel" );
   include_weapon( "zombie_doublebarrel_upgraded", false );
   include_weapon( "zombie_shotgun" );
   include_weapon( "zombie_shotgun_upgraded", false );

   // Heavy MG
   include_weapon( "zombie_bar" );
   include_weapon( "zombie_bar_upgraded", false );
   include_weapon( "zombie_fg42" );
   include_weapon( "zombie_fg42_upgraded", false );

   include_weapon( "zombie_30cal" );
   include_weapon( "zombie_30cal_upgraded", false );
   include_weapon( "zombie_mg42" );
   include_weapon( "zombie_mg42_upgraded", false );
   include_weapon( "zombie_ppsh" );
   include_weapon( "zombie_ppsh_upgraded", false );

   // Rocket Launcher
   include_weapon( "panzerschrek_zombie" );
   include_weapon( "panzerschrek_zombie_upgraded", false );

   // Special
   include_weapon( "ray_gun", true, ::factory_ray_gun_weighting_func );
   include_weapon( "ray_gun_upgraded", false );
   include_weapon( "tesla_gun", true );
   include_weapon( "tesla_gun_upgraded", false );
   include_weapon( "zombie_cymbal_monkey", true, ::factory_cymbal_monkey_weighting_func );

   // Bouncing betties
   include_weapon( "mine_bouncing_betty", false );

   // Limited weapons
   maps\_zombiemode_weapons::add_limited_weapon( "zombie_colt", 0 );
   maps\_zombiemode_weapons::add_limited_weapon( "zombie_gewehr43", 0 );
   maps\_zombiemode_weapons::add_limited_weapon( "zombie_m1garand", 0 );
}

include_powerups()
{
   include_powerup( "nuke" );
   include_powerup( "insta_kill" );
   include_powerup( "double_points" );
   include_powerup( "full_ammo" );
   include_powerup( "carpenter" );
}

DLC3_FX()
{
   // THESE ARE NEEDED FOR ZOMBIE MODE -- LEAVE THESE
   
   // Scripted FX
   level._effect["large_ceiling_dust"]      = LoadFx( "env/dirt/fx_dust_ceiling_impact_lg_mdbrown" );
   level._effect["poltergeist"]         = LoadFx( "misc/fx_zombie_couch_effect" );
   level._effect["gasfire"]             = LoadFx("destructibles/fx_dest_fire_vert");
   level._effect["switch_sparks"]         = loadfx("env/electrical/fx_elec_wire_spark_burst");
   level._effect["wire_sparks_oneshot"] = loadfx("env/electrical/fx_elec_wire_spark_dl_oneshot");
   
   level._effect["rise_burst"]      = LoadFx("maps/mp_maps/fx_mp_zombie_hand_dirt_burst");
   level._effect["rise_billow"]   = LoadFx("maps/mp_maps/fx_mp_zombie_body_dirt_billowing");   
   level._effect["rise_dust"]      = LoadFx("maps/mp_maps/fx_mp_zombie_body_dust_falling");      
      
   level._effect["lght_marker"]         = Loadfx("maps/zombie/fx_zombie_factory_marker");
   level._effect["lght_marker_flare"]      = Loadfx("maps/zombie/fx_zombie_factory_marker_fl");

   level._effect["betty_explode"]         = loadfx("weapon/bouncing_betty/fx_explosion_betty_generic");
   level._effect["betty_trail"]         = loadfx("weapon/bouncing_betty/fx_betty_trail");

   level._effect["zapper_fx"]             = loadfx("misc/fx_zombie_zapper_powerbox_on");   
   level._effect["zapper"]               = loadfx("misc/fx_zombie_electric_trap");
   level._effect["zapper_wall"]          = loadfx("misc/fx_zombie_zapper_wall_control_on");
   level._effect["zapper_light_ready"]      = loadfx("maps/zombie/fx_zombie_light_glow_green");
   level._effect["zapper_light_notready"]   = loadfx("maps/zombie/fx_zombie_light_glow_red");

   level._effect["elec_trail_one_shot"]   = loadfx("misc/fx_zombie_elec_trail_oneshot");
   level._effect["wire_spark"] = loadfx("maps/zombie/fx_zombie_wire_spark");
   level._effect["powerup_on"]             = loadfx( "misc/fx_zombie_powerup_on" );
   
   // Create FX
   
   if( isDefined( level.DLC3.myFX ) )
   {
      [[level.DLC3.myFX]]();
   }
   
   level._effect["zombie_flashback_american"]          = loadfx("maps/zombie/fx_zombie_flashback_american");
   level._effect["gasfire2"]                            = Loadfx("destructibles/fx_dest_fire_vert");   
   level._effect["mp_light_lamp"]                        = Loadfx("maps/mp_maps/fx_mp_light_lamp");   
   level._effect["zombie_difference"]                  = loadfx("maps/zombie/fx_zombie_difference");
   level._effect["zombie_mainframe_steam"]              = loadfx("maps/zombie/fx_zombie_mainframe_steam");   
   level._effect["zombie_heat_sink"]                    = loadfx("maps/zombie/fx_zombie_heat_sink");
   level._effect["mp_smoke_stack"]                      = loadfx("maps/mp_maps/fx_mp_smoke_stack");
   level._effect["mp_elec_spark_fast_random"]            = loadfx("maps/mp_maps/fx_mp_elec_spark_fast_random");
   level._effect["mp_elec_broken_light_1shot"]              = loadfx("maps/mp_maps/fx_mp_elec_broken_light_1shot");   
   level._effect["mp_light_lamp_no_eo"]                  = loadfx("maps/mp_maps/fx_mp_light_lamp_no_eo");
   level._effect["zombie_packapunch"]                  = loadfx("maps/zombie/fx_zombie_packapunch");
   level._effect["electric_short_oneshot"] = loadfx("env/electrical/fx_elec_short_oneshot");
   
   animscripts\utility::setFootstepEffect( "asphalt",    LoadFx( "bio/player/fx_footstep_dust" ) );
   animscripts\utility::setFootstepEffect( "brick",      LoadFx( "bio/player/fx_footstep_dust" ) );
   animscripts\utility::setFootstepEffect( "carpet",     LoadFx( "bio/player/fx_footstep_dust" ) );
   animscripts\utility::setFootstepEffect( "cloth",      LoadFx( "bio/player/fx_footstep_dust" ) );
   animscripts\utility::setFootstepEffect( "concrete",   LoadFx( "bio/player/fx_footstep_dust" ) );
   animscripts\utility::setFootstepEffect( "dirt",       LoadFx( "bio/player/fx_footstep_sand" ) );
   animscripts\utility::setFootstepEffect( "foliage",    LoadFx( "bio/player/fx_footstep_dust" ) );
   animscripts\utility::setFootstepEffect( "gravel",     LoadFx( "bio/player/fx_footstep_sand" ) );
   animscripts\utility::setFootstepEffect( "grass",      LoadFx( "bio/player/fx_footstep_sand" ) );
   animscripts\utility::setFootstepEffect( "metal",      LoadFx( "bio/player/fx_footstep_dust" ) );
   animscripts\utility::setFootstepEffect( "mud",        LoadFx( "bio/player/fx_footstep_mud" ) );
   animscripts\utility::setFootstepEffect( "paper",      LoadFx( "bio/player/fx_footstep_dust" ) );
   animscripts\utility::setFootstepEffect( "plaster",    LoadFx( "bio/player/fx_footstep_dust" ) );
   animscripts\utility::setFootstepEffect( "rock",       LoadFx( "bio/player/fx_footstep_sand" ) );
   animscripts\utility::setFootstepEffect( "sand",       LoadFx( "bio/player/fx_footstep_sand" ) );
   animscripts\utility::setFootstepEffect( "water",      LoadFx( "bio/player/fx_footstep_water" ) );
   animscripts\utility::setFootstepEffect( "wood",       LoadFx( "bio/player/fx_footstep_dust" ) );
   
   [[level.DLC3.createArt]]();
   
   spawnFX();
}

spawnFX()
{
   [[level.DLC3.createFX]]();
   
   maps\createFX\dlc3_fx::main();
}

/***********************************************************************
    TRAP STUFF
***********************************************************************/

init_elec_trap_trigs()
{
   array_thread( getStructArray( "dlc3_electric_trap", "targetname"), ::electric_trap_think );
}

electric_trap_dialog()
{

   self endon ("warning_dialog");
   level endon("switch_flipped");
   timer =0;
   while(1)
   {
      wait(0.5);
      players = get_players();
      for(i = 0; i < players.size; i++)
      {      
         dist = distancesquared(players.origin, self.origin );
         if(dist > 70*70)
         {
            timer = 0;
            continue;
         }
         if(dist < 70*70 && timer < 3)
         {
            wait(0.5);
            timer ++;
         }
         if(dist < 70*70 && timer == 3)
         {
            
            index = maps\_zombiemode_weapons::get_player_index(players);
            plr = "plr_" + index + "_";
            //players create_and_play_dialog( plr, "vox_level_start", 0.25 );
            wait(3);            
            self notify ("warning_dialog");
            //iprintlnbold("warning_given");
         }
      }
   }
}

electric_trap_think()
{
   enable_flag = undefined;
   
   if( !isDefined( self.script_string ) )
   {
      return;
   }
   else
   {
      enable_flag = self.script_string;
   }
   
   self sethintstring(&"ZOMBIE_FLAMES_UNAVAILABLE");
   self.zombie_cost = 1000;
   
   self thread electric_trap_dialog();

   // get a list of all of the other triggers with the same name
   triggers = getentarray( self.targetname, "targetname" );
   flag_wait( "electricity_on" );

   // Get the damage trigger.  This is the unifying element to let us know it's been activated.
   self.zombie_dmg_trig = getent(self.target,"targetname");
   self.zombie_dmg_trig.in_use = 0;

   // Set buy string
   self sethintstring(&"ZOMBIE_BUTTON_NORTH_FLAMES");

   // Getting the light that's related is a little esoteric, but there isn't
   // a better way at the moment.  It uses linknames, which are really dodgy.
   light_name = "";   // scope declaration
   tswitch = getent(self.script_linkto,"script_linkname");
   switch ( tswitch.script_linkname )
   {
   case "10":   // wnuen
   case "11":
      light_name = "zapper_light_wuen";   
      break;

   case "20":   // warehouse
   case "21":
      light_name = "zapper_light_warehouse";
      break;

   case "30":   // Bridge
   case "31":
      light_name = "zapper_light_bridge";
      break;
   }

   // The power is now on, but keep it disabled until a certain condition is met
   //   such as opening the door it is blocking or waiting for the bridge to lower.
   if ( !flag( enable_flag ) )
   {
      self trigger_off();

      zapper_light_red( light_name );
      flag_wait( enable_flag );

      self trigger_on();
   }

   // Open for business! 
   zapper_light_green( light_name );

   while(1)
   {
      //valve_trigs = getentarray(self.script_noteworthy ,"script_noteworthy");      
   
      //wait until someone uses the valve
      self waittill("trigger",who);
      if( who in_revive_trigger() )
      {
         continue;
      }
      
      if( is_player_valid( who ) )
      {
         if( who.score >= self.zombie_cost )
         {            
            if(!self.zombie_dmg_trig.in_use)
            {
               self.zombie_dmg_trig.in_use = 1;

               //turn off the valve triggers associated with this trap until available again
               array_thread (triggers, ::trigger_off);

               play_sound_at_pos( "purchase", who.origin );
               self thread electric_trap_move_switch(self);
               //need to play a 'woosh' sound here, like a gas furnace starting up
               self waittill("switch_activated");
               //set the score
               who maps\_zombiemode_score::minus_to_player_score( self.zombie_cost );

               //this trigger detects zombies walking thru the flames
               self.zombie_dmg_trig trigger_on();

               //play the flame FX and do the actual damage
               self thread activate_electric_trap();               

               //wait until done and then re-enable the valve for purchase again
               self waittill("elec_done");
               
               clientnotify(self.script_string +"off");
                              
               //delete any FX ents
               if(isDefined(self.fx_org))
               {
                  self.fx_org delete();
               }
               if(isDefined(self.zapper_fx_org))
               {
                  self.zapper_fx_org delete();
               }
               if(isDefined(self.zapper_fx_switch_org))
               {
                  self.zapper_fx_switch_org delete();
               }
                              
               //turn the damage detection trigger off until the flames are used again
                self.zombie_dmg_trig trigger_off();
               wait(25);

               array_thread (triggers, ::trigger_on);

               //COLLIN: Play the 'alarm' sound to alert players that the traps are available again (playing on a temp ent in case the PA is already in use.
               //speakerA = getent("loudspeaker", "targetname");
               //playsoundatposition("warning", speakera.origin);
               self notify("available");

               self.zombie_dmg_trig.in_use = 0;
            }
         }
      }
   }
}

electric_trap_move_switch(parent)
{
   light_name = "";   // scope declaration
   tswitch = getent(parent.script_linkto,"script_linkname");
   switch ( tswitch.script_linkname )
   {
   case "10":   // wnuen
   case "11":
      light_name = "zapper_light_wuen";   
      break;

   case "20":   // warehouse
   case "21":
      light_name = "zapper_light_warehouse";
      break;

   case "30":
   case "31":
      light_name = "zapper_light_bridge";
      break;
   }
   
   //turn the light above the door red
   zapper_light_red( light_name );
   tswitch rotatepitch(180,.5);
   tswitch playsound("amb_sparks_l_b");
   tswitch waittill("rotatedone");

   self notify("switch_activated");
   self waittill("available");
   tswitch rotatepitch(-180,.5);

   //turn the light back green once the trap is available again
   zapper_light_green( light_name );
}

activate_electric_trap()
{
   if(isDefined(self.script_string) && self.script_string == "warehouse")
   {
      clientnotify("warehouse");
   }
   else if(isDefined(self.script_string) && self.script_string == "wuen")
   {
      clientnotify("wuen");
   }
   else
   {
      clientnotify("bridge");
   }   
      
   clientnotify(self.target);
   
   fire_points = getentarray(self.target,"targetname");
   
   for(i=0;i<fire_points.size;i++)
   {
      wait_network_frame();
      fire_points thread electric_trap_fx(self);      
   }
   
   //do the damage
   self.zombie_dmg_trig thread elec_barrier_damage();
   
   // reset the zapper model
   level waittill("arc_done");
}

electric_trap_fx(notify_ent)
{
   self.tag_origin = spawn("script_model",self.origin);
   //self.tag_origin setmodel("tag_origin");

   //playfxontag(level._effect["zapper"],self.tag_origin,"tag_origin");

   self.tag_origin playsound("elec_start");
   self.tag_origin playloopsound("elec_loop");
   self thread play_electrical_sound();
   
   wait(25);
      
   self.tag_origin stoploopsound();
      
   self.tag_origin delete();
   notify_ent notify("elec_done");
   level notify ("arc_done");   
}

play_electrical_sound()
{
   level endon ("arc_done");
   while(1)
   {   
      wait(randomfloatrange(0.1, 0.5));
      playsoundatposition("elec_arc", self.origin);
   }
   

}

elec_barrier_damage()
{   
   while(1)
   {
      self waittill("trigger",ent);
      
      //player is standing electricity, dumbass
      if(isplayer(ent) )
      {
         ent thread player_elec_damage();
      }
      else
      {
         if(!isDefined(ent.marked_for_death))
         {
            ent.marked_for_death = true;
            ent thread zombie_elec_death( randomint(100) );
         }
      }
   }
}

play_elec_vocals()
{
   if(IsDefined (self))
   {
      org = self.origin;
      wait(0.15);
      playsoundatposition("elec_vocals", org);
      playsoundatposition("zombie_arc", org);
      playsoundatposition("exp_jib_zombie", org);
   }
}

player_elec_damage()
{   
   self endon("death");
   self endon("disconnect");
   
   if(!IsDefined (level.elec_loop))
   {
      level.elec_loop = 0;
   }   
   
   if( !isDefined(self.is_burning) && !self maps\_laststand::player_is_in_laststand() )
   {
      self.is_burning = 1;      
      self setelectrified(1.25);   
      shocktime = 2.5;         
      //Changed Shellshock to Electrocution so we can have different bus volumes.
      self shellshock("electrocution", shocktime);
      
      if(level.elec_loop == 0)
      {   
         elec_loop = 1;
         //self playloopsound ("electrocution");
         self playsound("zombie_arc");
      }
      if(!self hasperk("specialty_armorvest") || self.health - 100 < 1)
      {
         
         radiusdamage(self.origin,10,self.health + 100,self.health + 100);
         self.is_burning = undefined;
      }
      else
      {
         self dodamage(50, self.origin);
         wait(.1);
         //self playsound("zombie_arc");
         self.is_burning = undefined;
      }
   }
}

zombie_elec_death(flame_chance)
{
   self endon("death");
   
   //10% chance the zombie will burn, a max of 6 burning zombs can be goign at once
   //otherwise the zombie just gibs and dies
   if(flame_chance > 90 && level.burning_zombies.size < 6)
   {
      level.burning_zombies[level.burning_zombies.size] = self;
      self thread zombie_flame_watch();
      self playsound("ignite");
      self thread animscripts\death::flame_death_fx();
      wait(randomfloat(1.25));      
   }
   else
   {
      
      refs[0] = "guts";
      refs[1] = "right_arm";
      refs[2] = "left_arm";
      refs[3] = "right_leg";
      refs[4] = "left_leg";
      refs[5] = "no_legs";
      refs[6] = "head";
      self.a.gib_ref = refs[randomint(refs.size)];

      playsoundatposition("zombie_arc", self.origin);
      if( !self enemy_is_dog() && randomint(100) > 50 )
      {
         self thread electroctute_death_fx();
         self thread play_elec_vocals();
      }
      wait(randomfloat(1.25));
      self playsound("zombie_arc");
   }

   self dodamage(self.health + 666, self.origin);
   iprintlnbold("should be damaged");
}

zombie_flame_watch()
{
   self waittill("death");
   self stoploopsound();
   level.burning_zombies = array_remove_nokeys(level.burning_zombies,self);
}

zapper_light_red( lightname )
{
   zapper_lights = getentarray( lightname, "targetname");
   for(i=0;i<zapper_lights.size;i++)
   {
      zapper_lights setmodel("zombie_zapper_cagelight_red");   

      if(isDefined(zapper_lights.fx))
      {
         zapper_lights.fx delete();
      }

      zapper_lights.fx = maps\_zombiemode_net::network_safe_spawn( "trap_light_red", 2, "script_model", zapper_lights.origin );
      zapper_lights.fx setmodel("tag_origin");
      zapper_lights.fx.angles = zapper_lights.angles+(-90,0,0);
      playfxontag(level._effect["zapper_light_notready"],zapper_lights.fx,"tag_origin");
   }
}

zapper_light_green( lightname )
{
   zapper_lights = getentarray( lightname, "targetname");
   for(i=0;i<zapper_lights.size;i++)
   {
      zapper_lights setmodel("zombie_zapper_cagelight_green");   

      if(isDefined(zapper_lights.fx))
      {
         zapper_lights.fx delete();
      }

      zapper_lights.fx = maps\_zombiemode_net::network_safe_spawn( "trap_light_green&qu
broken avatar :(
×
broken avatar :(
Location: nlApeldoorn
Date Registered: 17 December 2013
Last active: 1 year ago
Posts
1,187
Respect
1,404Add +1
Forum Rank
Zombie Colossus
Primary Group
Community Scripter Elite
My Groups
More
My Contact & Social Links
More
Personal Quote
It aint much, if it aint Dutch
×
BluntStuffy's Groups
Donator ♥ Benevolent Soul who has our eternal gratitude and exclusive access to betas and the donator section of the forum.
Community Scripter Elite Has shown excellence and experience in the area of custom scripting in the UGX-Mods community.
Oil Rig Beta Access
Oil Rig Beta Access
BluntStuffy's Contact & Social LinksBluntstuffy@BluntZombieBluntStuffyStuffyZombie
have you tried just adding the ugx_modder_help.gsc to your mod\maps folder, tick it in the iwd file list and rebuild mod?
Marked as best answer by jm-390 8 years ago
broken avatar :(
×
broken avatar :(
Location: usNew Jersey
Date Registered: 30 July 2013
Last active: 4 weeks ago
Posts
271
Respect
Forum Rank
Mr. Elemental
Primary Group
Community Mapper
My Groups
More
My Contact & Social Links
More
Personal Quote
fk
Signature
iPlay - Facts                               
Hex Tower - Facts
Andromeda - Facts
Octagonal Ascension - Facts
iPlay v2 - Facts
Eclipse - Facts
MW2 Rust - Facts
Gulag - Facts
Decagon - Facts
---------------------------------------------- BO3
Scrapyard - Facts
Rust 2.0 - Facts
Rust MP - Facts
Gulag Again ffs - Facts
Hex Tower - Facts
Octagon - Facts
Decagon - Facts
Cataclysm - Facts
Dome - Bland
×
Psh's Groups
Community Mapper Has released one or more maps to the UGX-Mods community which have been added to the UGX Map Manager.
Psh's Contact & Social LinksAskPshZombiesihaZzRaBieZI_haZzZ_RaBieZz
I got this after installing the panzer as well. Drag your dlc3_teleporter.gsc into your mod and replace it with this. http://pastebin.com/Sxdw3tWs

 
Loading ...