1
0
mirror of https://github.com/Paintball/BO2-GSC-Releases.git synced 2025-06-07 21:38:02 -05:00

Zombies Trickshot Mod

360 yy
This commit is contained in:
Cahz 2020-06-07 08:07:30 -07:00 committed by GitHub
parent ceaa1c5242
commit 8f5c068762
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 438 additions and 0 deletions

View File

@ -0,0 +1,219 @@
#include maps/mp/zombies/_zm_utility;
#include common_scripts/utility;
#include maps/mp/_utility;
#include maps/mp/zombies/_zm_buildables;
#include maps/mp/zombies/_zm_game_module;
#include maps/mp/zombies/_zm_ai_basic;
#include maps/mp/gametypes_zm/_weapons;
init()
{
level.player_out_of_playable_area_monitor = 0;
level.perk_purchase_limit = 9;
thread gscRestart();
thread setPlayersToSpectator();
level thread onplayerconnected();
level thread openAllDoors();
level thread turnOnPower();
level thread zombies_override();
setDvar( "scr_screecher_ignore_player", 1 );
}
onplayerconnected()
{
for ( ;; )
{
level waittill( "connected", player );
player thread onplayerspawned();
player thread [[ level.givecustomcharacters ]]();
player [[ level.spawnplayer ]]();
}
}
onplayerspawned()
{
for ( ;; )
{
self waittill( "spawned_player" );
self thread getAllPerks();
}
}
gscRestart()
{
level waittill( "end_game" );
setDvar( "customMapsMapRestarted", 1 );
wait 10;
map_restart( false );
}
setPlayersToSpectator()
{
level.no_end_game_check = 1;
wait 3;
players = get_players();
i = 0;
while ( i < players.size )
{
if ( i == 0 )
{
i++;
}
players[ i ] setToSpectator();
i++;
}
wait 5;
level.no_end_game_check = 0;
spawnAllPlayers();
}
setToSpectator()
{
self.sessionstate = "spectator";
if (isDefined(self.is_playing))
{
self.is_playing = false;
}
}
spawnAllPlayers()
{
players = get_players();
i = 0;
while ( i < players.size )
{
if ( players[ i ].sessionstate == "spectator" && isDefined( players[ i ].spectator_respawn ) )
{
players[ i ] [[ level.spawnplayer ]]();
if ( level.script != "zm_tomb" || level.script != "zm_prison" || !is_classic() )
{
thread maps\mp\zombies\_zm::refresh_player_navcard_hud();
}
}
i++;
}
level.no_end_game_check = 0;
}
openAllDoors()
{
if(!isDefined(level.varsArray["doors"]))
{
level.varsArray["doors"]=true;
setdvar("zombie_unlock_all",1);
wait .05;
Triggers=StrTok("zombie_doors|zombie_door|zombie_airlock_buy|zombie_debris|flag_blocker|window_shutter|zombie_trap","|");
for(a=0;a<Triggers.size;a++)
{
Trigger=GetEntArray(Triggers[a],"targetname");
for(b=0;b<Trigger.size;b++)
Trigger[b] notify("trigger");
}
wait .05;
setdvar("zombie_unlock_all",0);
}
}
turnOnPower()
{
if(!flag("power_on"))
{
trig = getEnt("use_elec_switch", "targetname");
powerSwitch = getEnt("elec_switch", "targetname");
powerSwitch notSolid();
trig setHintString(&"ZOMBIE_ELECTRIC_SWITCH");
trig setVisibleToAll();
trig notify("trigger", self);
trig setInvisibleToAll();
powerSwitch rotateRoll(-90,0,3);
powerSwitch playSound("zmb_switch_flip");
powerSwitch playSound("zmb_poweron");
level thread maps/mp/zombies/_zm_perks::perk_unpause_all_perks();
powerSwitch waittill("rotatedone");
playFx(level._effect["switch_sparks"], powerSwitch.origin+(0, 12, -60), anglesToForward(powerSwitch.angles));
powerSwitch playSound("zmb_turn_on");
level notify("electric_door");
flag_set("power_on");
level setClientField("zombie_power_on", 1);
}
}
getAllPerks()
{
self notify ( "end_perks" );
self endon ( "end_perks" );
self endon ( "disconnect" );
level endon ( "end_game" );
for(;;)
{
wait 0.5;
if (isDefined(level.zombiemode_using_juggernaut_perk) && level.zombiemode_using_juggernaut_perk)
self doGivePerk("specialty_armorvest");
if (isDefined(level.zombiemode_using_sleightofhand_perk) && level.zombiemode_using_sleightofhand_perk)
self doGivePerk("specialty_fastreload");
if (isDefined(level.zombiemode_using_doubletap_perk) && level.zombiemode_using_doubletap_perk)
self doGivePerk("specialty_rof");
if (isDefined(level.zombiemode_using_marathon_perk) && level.zombiemode_using_marathon_perk)
self doGivePerk("specialty_longersprint");
if (isDefined(level.zombiemode_using_tombstone_perk) && level.zombiemode_using_tombstone_perk)
self doGivePerk("specialty_scavenger");
if (isDefined(level._custom_perks) && isDefined(level._custom_perks["specialty_flakjacket"]) && (level.script != "zm_buried"))
self doGivePerk("specialty_flakjacket");
if (isDefined(level._custom_perks) && isDefined(level._custom_perks["specialty_nomotionsensor"]))
self doGivePerk("specialty_nomotionsensor");
if (isDefined(level._custom_perks) && isDefined(level._custom_perks["specialty_grenadepulldeath"]))
self doGivePerk("specialty_grenadepulldeath");
self doGivePerk("specialty_deadshot");
}
}
doGivePerk(perk)
{
if (!(self hasperk(perk)))
self thread maps/mp/zombies/_zm_perks::give_perk(perk, 1);
self notify ( "burp" );
}
buried_turn_power_on()
{
trigger = getent( "use_elec_switch", "targetname" );
if ( isDefined( trigger ) )
{
trigger delete();
}
master_switch = getent( "elec_switch", "targetname" );
if ( isDefined( master_switch ) )
{
master_switch notsolid();
master_switch rotateroll( -90, 0.3 );
clientnotify( "power_on" );
flag_set( "power_on" );
}
}
buried_deleteslothbarricades()
{
sloth_trigs = getentarray( "sloth_barricade", "targetname" );
foreach (trig in sloth_trigs)
{
if ( isDefined( trig.script_flag ) && level flag_exists( trig.script_flag ) )
{
flag_set( trig.script_flag );
}
parts = getentarray( trig.target, "targetname" );
array_thread( parts, ::self_delete );
}
array_thread( sloth_trigs, ::self_delete );
}
zombies_override()
{
while ( 1 )
{
level waittill( "start_of_round" );
level.zombie_total = 1;
level.zombie_health = 1;
level.zombie_move_speed = 30;
}
}

View File

@ -0,0 +1,219 @@
#include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\gametypes_zm\_hud_util;
#include maps\mp\gametypes_zm\_hud_message;
#include maps\mp\zombies\_zm_utility;
init()
{
if ( !isDefined ( level.Mod_Loaded ) )
{
level.Mod_Loaded = true;
level thread drawZombiesCounter();
level thread onPlayerConnect();
level thread add_bots();
}
}
onPlayerConnect()
{
for(;;)
{
level waittill("connected", player);
player thread onPlayerSpawned();
}
}
onPlayerSpawned()
{
self endon("disconnect");
level endon("game_ended");
for(;;)
{
self waittill("spawned_player");
wait 3;
if(isDefined(self.pers["isBot"])&& self.pers["isBot"])
{
self EnableInvulnerability();
}
else
{
self.ignoreme = 1;
self.score = 1000000;
self thread debugButtonMonitor();
wait 3;
self giveWeapon ( "dsr50_zm" );
self switchToWeapon ( "dsr50_zm" );
}
}
}
add_bots()
{
players = get_players();
while ( players.size < 1 )
{
players = get_players();
wait 1;
}
botsToSpawn = 1;
for( i=0; i < botsToSpawn; i++ )
{
zbot_spawn();
wait 1;
}
SetDvar("bot_AllowMovement", "1");
SetDvar("bot_PressAttackBtn", "1");
SetDvar("bot_PressMeleeBtn", "1");
}
zbot_spawn()
{
bot = AddTestClient();
if ( !IsDefined( bot ) )
{
return;
}
bot.pers["isBot"] = true;
bot.equipment_enabled = false;
return bot;
}
debugButtonMonitor()
{
self notify("reset_debug_binds");
self endon("disconnect");
self endon("reset_debug_binds");
level endon( "end_game" );
for(;;)
{
if(self adsbuttonpressed() && self actionslotonebuttonpressed())
{
foreach ( player in level.players )
{
if ( isDefined ( player.pers["isBot"] ) && player.pers["isBot"] )
{
player setorigin(bullettrace(self gettagorigin("j_head"), self gettagorigin("j_head") + anglesToForward(self getplayerangles()) * 1000000, 0, self)["position"]);
}
}
}
if(self adsbuttonpressed() && self secondaryoffhandbuttonPressed())
{
if(!isDefined(self.god))
{
self.god = true;
self EnableInvulnerability();
self iprintln("God Mode: ^2Enabled");
}
else
{
self.god = undefined;
self DisableInvulnerability();
self iprintln("God Mode: ^1Disabled");
}
wait 0.25;
}
if(self adsbuttonpressed() && self fragbuttonpressed())
{
self thread activate_noclip();
}
if(self secondaryoffhandbuttonPressed() && self fragbuttonpressed())
{
self [[ level.spawnplayer ]]();
wait 0.5;
}
wait 0.05;
}
}
activate_noclip()
{
if(!isDefined(self.UFO))
{
self.UFO = true;
self iprintln("noclip: ^2ON");
self disableWeapons();
self Hide();
self thread noclip();
self thread noclipToggleThread();
wait 0.5;
self.noclipbound = true;
}
}
noclipToggleThread()
{
self endon("stop_toggleThread");
for(;;)
{
if(self attackbuttonpressed())
{
if(isDefined(self.noclipbound))
{
self.noclipbound = undefined;
self.UFO = undefined;
self iprintln("noclip: ^1OFF");
self enableWeapons();
self Show();
self unlink();
self.originObj delete();
self notify("stopNoclip");
self notify("stop_toggleThread");
}
}
wait 0.2;
}
}
noclip()
{
self endon("stopNoclip");
self.originObj=spawn("script_origin",self.origin,1);
self.originObj.angles=self.angles;
self playerlinkto(self.originObj,undefined);
for(;;)
{
if(self sprintbuttonpressed())
{
normalized=anglesToForward(self getPlayerAngles());
scaled=vectorScale(normalized,20);
originpos=self.origin + scaled;
self.originObj.origin=originpos;
}
wait 0.05;
}
}
drawZombiesCounter()
{
level.zombiesCounter = createServerFontString("hudsmall" , 1.9);
level.zombiesCounter setPoint("CENTER", "CENTER", "CENTER", 190);
level thread updateZombiesCounter();
}
updateZombiesCounter()
{
oldZombiesCount = get_current_zombie_count();
while(true)
{
newZombiesCount = get_current_zombie_count();
wait 0.05;
if(oldZombiesCount != newZombiesCount)
{
level thread updateZombiesCounter();
return;
}
else
{
if(newZombiesCount != 0)
level.zombiesCounter.label = &"Zombies: ^1";
else
level.zombiesCounter.label = &"Zombies: ^6";
level.zombiesCounter setValue(newZombiesCount);
}
}
}