From 4c4f3efb613d4ce4e9bc9c431de7831fb4182d0b Mon Sep 17 00:00:00 2001 From: Cahz Date: Sat, 8 Aug 2020 10:56:34 -0700 Subject: [PATCH] Updated Github --- Zombies Mods/Weapon Swap Mod/README.md | 4 + Zombies Mods/Weapon Swap Mod/_clientids.gsc | 335 ++++++++++++++++++++ 2 files changed, 339 insertions(+) create mode 100644 Zombies Mods/Weapon Swap Mod/README.md create mode 100644 Zombies Mods/Weapon Swap Mod/_clientids.gsc diff --git a/Zombies Mods/Weapon Swap Mod/README.md b/Zombies Mods/Weapon Swap Mod/README.md new file mode 100644 index 0000000..41a5328 --- /dev/null +++ b/Zombies Mods/Weapon Swap Mod/README.md @@ -0,0 +1,4 @@ +# WEAPON SWAP MOD +This mod is just a meme. Works best with even number of players. Had to make instances where players would refuse trades in order to prevent the loss of weapons. +## DIRECTIONS +- Compile _**_clientids.gsc**_ as _**_clientids.gsc**_ and place it in the directory _**maps/mp/gametypes_zm/_clientids.gsc**_ diff --git a/Zombies Mods/Weapon Swap Mod/_clientids.gsc b/Zombies Mods/Weapon Swap Mod/_clientids.gsc new file mode 100644 index 0000000..0fb5fb5 --- /dev/null +++ b/Zombies Mods/Weapon Swap Mod/_clientids.gsc @@ -0,0 +1,335 @@ +#include maps/mp/_utility; +#include common_scripts/utility; +#include maps/mp/gametypes_zm/_hud_util; +#include maps/mp/zombies/_zm; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_stats; +#include maps/mp/gametypes_zm/_hud_message; + +init() +{ + level thread onPlayerConnect(); + level thread SwapWeapon_Level_Threads(); +} + +onPlayerConnect() +{ + for(;;) + { + level waittill("connected", player); + player thread SwapWeapon_Player_Threads(); + } +} + +SwapWeapon_Level_Threads() +{ + level thread SwapTimer_HUD(); + level thread SwapTimer_Level_Monitor(); +} + +SwapTimer_Start() +{ + if(!isDefined(level.swaptimer_started)) + { + level.swaptimer_started = true; + level thread SwapTimer_Activate(); + } +} + +SwapTimer_Stop() +{ + if(isDefined(level.swaptimer_started)) + { + level.swaptimer_started = undefined; + level notify("reset_time"); + } +} + +SwapTimer_Activate() +{ + level endon("end_game"); + level endon("reset_time"); + level.swaptime_min = 1; + level.swaptime_sec = 0; + wait 1; + for(;;) + { + if(level.swaptime_sec == 0) + { + level.swaptime_sec = 59; + level.swaptime_min -= 1; + } + else + level.swaptime_sec -= 1; + + if(level.swaptime_min == 0 && level.swaptime_sec == 0) + { + wait 1; + foreach(player in level.players) + { + level.currently_switching = true; + player.Times_Attempted = undefined; + player.switched = undefined; + player.playerSwitchedWith = undefined; + + player.old_i = undefined; + player.i = undefined; + + if(level.players_ready > 1) + player thread Swap_Weapons(); + } + level.swaptime_min = 1; + level.swaptime_sec = 0; + wait .25; + for ( i = 0; i < 5; i++ ) + { + level notify("swap_weapons"); + wait .25; + } + wait 1; + level.currently_switching = undefined; + } + wait 1; + } +} + +SwapTimer_HUD() +{ + level endon("end_game"); + + level.swapHUD = createServerFontString("hudsmall" , 1.25); + level.swapHUD setPoint("CENTER", "CENTER", "CENTER", 173); + while(true) + { + level.swapHUD setValue(level.swaptime_sec); + + if(isDefined(level.swaptimer_started) && level.players_ready > 1) + level.swapHUD.alpha = 1; + else + level.swapHUD.alpha = 0; + + if(level.swaptime_min == 0 && level.swaptime_sec == 0 && isDefined(level.swaptimer_started)) + level.swapHUD Blinking_Timer(); + + if(level.swaptime_min == 0) + { + if(level.swaptime_sec < 10) + level.swapHUD.label = &"^1Swap Time : ^70:0"; + else + level.swapHUD.label = &"^1Swap Time : ^70:"; + } + else if(level.swaptime_min == 1) + { + if(level.swaptime_sec < 10) + level.swapHUD.label = &"^1Swap Time : ^71:0"; + else + level.swapHUD.label = &"^1Swap Time : ^71:"; + } + else if(level.swaptime_min == 2) + { + if(level.swaptime_sec < 10) + level.swapHUD.label = &"^1Swap Time : ^72:0"; + else + level.swapHUD.label = &"^1Swap Time : ^72:"; + } + else if(level.swaptime_min == 3) + { + if(level.swaptime_sec < 10) + level.swapHUD.label = &"^1Swap Time : ^73:0"; + else + level.swapHUD.label = &"^1Swap Time : ^73:"; + } + else if(level.swaptime_min == 4) + { + if(level.swaptime_sec < 10) + level.swapHUD.label = &"^1Swap Time : ^74:0"; + else + level.swapHUD.label = &"^1Swap Time : ^74:"; + } + else if(level.swaptime_min == 5) + { + if(level.swaptime_sec < 10) + self.swapHUD.label = &"^1Swap Time : ^75:0"; + else + self.swapHUD.label = &"^1Swap Time : ^75:"; + } + wait 0.05; + } +} + +Blinking_Timer() +{ + wait 0.5; + self fadeovertime(0.5); + self.alpha = 0; + wait 0.5; + self fadeovertime(0.5); + self.alpha = 1; + wait 0.5; + self fadeovertime(0.5); + self.alpha = 0; + wait 0.5; + self fadeovertime(0.5); + self.alpha = 1; + wait 0.5; + self fadeovertime(0.5); + self.alpha = 0; + wait 0.5; + self fadeovertime(0.5); + self.alpha = 1; +} + +SwapTimer_Level_Monitor() +{ + level endon("end_game"); + level.players_ready = 0; + for( ;; ) + { + foreach ( player in level.players ) + { + if ( maps/mp/zombies/_zm_utility::is_player_valid( player ) && !isDefined(player.cantSwitch) ) + level.players_ready++; + } + level notify("counting_done"); + + if( level.players_ready == 1 && isDefined(level.swaptimer_started) ) + level thread SwapTimer_Stop(); + + if( level.players_ready > 1 && !isDefined(level.swaptimer_started) ) + level thread SwapTimer_Start(); + + wait 0.05; + level.players_ready = 0; + } +} + +Swap_Weapons() +{ + self endon("disconnect"); + level endon("end_game"); + + if(isDefined(self.i)) + self.old_i = self.i; + + self.i = RandomIntRange(0,level.players.size); + player = level.players[self.i]; + + if(self.old_i == self.i) + return Swap_Weapons(); + + if( !isDefined(self.Times_Attempted) ) + self.Times_Attempted = 1; + else + self.Times_Attempted++; + + if( self.Times_Attempted > 15 ) + { + self.cantSwitch = true; + self iprintln("^1Couldn't swap with any players!"); + wait 2; + self.cantSwitch = undefined; + return; + } + if( !maps/mp/zombies/_zm_utility::is_player_valid( self ) && !isDefined(level.currently_switching) || isDefined(self.downed) ) + return; + if ( !maps/mp/zombies/_zm_utility::is_player_valid( player ) || player == self || isDefined(player.cantSwitch) || isDefined(player.downed) ) + return Swap_Weapons(); + if ( isinarray( self getweaponslistprimaries(), player.WeaponToSwitch ) && self.WeaponToSwitch != player.WeaponToSwitch ) + { + self.cantSwitch = true; + self iprintln("^1Didn't Swap to prevent loss of your Secondary Weapon!"); + wait 2; + self.cantSwitch = undefined; + return; + } + else + self.cantSwitch = undefined; + + wait 0.05; + level waittill("counting_done"); + + if ( maps/mp/zombies/_zm_utility::is_player_valid( player ) && isDefined(player.WeaponToSwitch) && !isDefined(player.switched)) + { + if ( level.players_ready == 3 || level.players_ready == 5 || level.players_ready == 7) + { + if ( self.name != player.playerSwitchedWith ) + {} + else + return Swap_Weapons(); + } + player.switched = true; + self.playerSwitchedWith = player.name; + level waittill("swap_weapons"); + self takeWeapon(self.WeaponToSwitch); + self giveWeapon(player.WeaponToSwitch); + self SwitchToWeapon(player.WeaponToSwitch); + self setweaponammostock( player.WeaponToSwitch, player.oldammo ); + self setweaponammoclip( player.WeaponToSwitch, player.oldclip ); + self iprintln("You got ^2"+player.name+"'s ^7gun!"); + player iprintln("^1"+self.name+" ^7took your gun!"); + return; + } + else + return Swap_Weapons(); +} + +SwapWeapon_Player_Threads() +{ + self endon("disconnect"); + level endon("end_game"); + for(;;) + { + self waittill( "spawned_player" ); + self.downed = undefined; + self.cantSwitch = undefined; + self thread SwapWeapon_Player_Downed(); + self thread SwapWeapon_Player_Revived(); + self thread SwapWeapon_Weapon_Monitor(); + } +} + +SwapWeapon_Player_Downed() +{ + self endon("disconnect"); + self endon("death"); + level endon("end_game"); + for(;;) + { + self waittill( "player_downed" ); + self.downed = true; + self.cantSwitch = true; + } +} + +SwapWeapon_Player_Revived() +{ + self endon("disconnect"); + self endon("death"); + level endon("end_game"); + for(;;) + { + self waittill( "player_revived" ); + self.downed = undefined; + self.cantSwitch = undefined; + } +} + +SwapWeapon_Weapon_Monitor() +{ + self endon("disconnect"); + self endon("death"); + level endon("end_game"); + + for(;;) + { + if(!isDefined(level.currently_switching) && maps/mp/zombies/_zm_utility::is_player_valid( self )) + { + if ( isinarray( self getweaponslistprimaries(), self getcurrentweapon() ) ) + self.WeaponToSwitch = self getcurrentweapon(); + self.oldammo = self getweaponammostock(self.WeaponToSwitch); + self.oldclip = self getweaponammoclip(self.WeaponToSwitch); + } + wait 0.05; + } +} \ No newline at end of file