1
0
mirror of https://github.com/JezuzLizard/BO2-Reimagined.git synced 2025-06-07 21:59:49 -05:00
BO2-Reimagined/scripts/zm/replaced/_globallogic_player.gsc

364 lines
13 KiB
Plaintext

#include maps\mp\gametypes_zm\_globallogic_player;
#include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\gametypes_zm\_globallogic;
#include maps\mp\zombies\_zm_stats;
#include maps\mp\gametypes_zm\_globallogic_score;
#include maps\mp\gametypes_zm\_hostmigration;
#include maps\mp\gametypes_zm\_globallogic_ui;
#include maps\mp\gametypes_zm\_globallogic_spawn;
#include maps\mp\gametypes_zm\_spectating;
#include maps\mp\gametypes_zm\_globallogic_utils;
#include maps\mp\gametypes_zm\_spawning;
#include maps\mp\gametypes_zm\_hud_message;
#include maps\mp\gametypes_zm\_hud_util;
#include maps\mp\_demo;
#include maps\mp\gametypes_zm\_weapons;
#include maps\mp\gametypes_zm\_spawnlogic;
#include maps\mp\_challenges;
#include maps\mp\gametypes_zm\_tweakables;
#include maps\mp\gametypes_zm\_globallogic_audio;
callback_playerconnect()
{
thread notifyconnecting();
self.statusicon = "hud_status_connecting";
self waittill("begin");
if (isdefined(level.reset_clientdvars))
self [[level.reset_clientdvars]]();
waittillframeend;
self.statusicon = "";
self.guid = self getguid();
profilelog_begintiming(4, "ship");
level notify("connected", self);
if (self ishost())
self thread maps\mp\gametypes_zm\_globallogic::listenforgameend();
if (!level.splitscreen && !isdefined(self.pers["score"]))
iprintln(&"MP_CONNECTED", self);
if (!isdefined(self.pers["score"]))
self thread maps\mp\zombies\_zm_stats::adjustrecentstats();
if (gamemodeismode(level.gamemode_public_match) && !isdefined(self.pers["matchesPlayedStatsTracked"]))
{
gamemode = maps\mp\gametypes_zm\_globallogic::getcurrentgamemode();
self maps\mp\gametypes_zm\_globallogic::incrementmatchcompletionstat(gamemode, "played", "started");
if (!isdefined(self.pers["matchesHostedStatsTracked"]) && self islocaltohost())
{
self maps\mp\gametypes_zm\_globallogic::incrementmatchcompletionstat(gamemode, "hosted", "started");
self.pers["matchesHostedStatsTracked"] = 1;
}
self.pers["matchesPlayedStatsTracked"] = 1;
self thread maps\mp\zombies\_zm_stats::uploadstatssoon();
}
lpselfnum = self getentitynumber();
lpguid = self getguid();
logprint("J;" + lpguid + ";" + lpselfnum + ";" + self.name + "\\n");
bbprint("mpjoins", "name %s client %s", self.name, lpselfnum);
if (!sessionmodeiszombiesgame())
self setclientuivisibilityflag("hud_visible", 1);
if (level.forceradar == 1)
{
self.pers["hasRadar"] = 1;
self.hasspyplane = 1;
level.activeuavs[self getentitynumber()] = 1;
}
if (level.forceradar == 2)
self setclientuivisibilityflag("g_compassShowEnemies", level.forceradar);
else
self setclientuivisibilityflag("g_compassShowEnemies", 0);
self setclientplayersprinttime(level.playersprinttime);
self setclientnumlives(level.numlives);
makedvarserverinfo("cg_drawTalk", 1);
if (level.hardcoremode)
self setclientdrawtalk(3);
if (sessionmodeiszombiesgame())
self [[level.player_stats_init]]();
else
{
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("score");
if (level.resetplayerscoreeveryround)
self.pers["score"] = 0;
self.score = self.pers["score"];
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("momentum", 0);
self.momentum = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("momentum");
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("suicides");
self.suicides = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("suicides");
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("headshots");
self.headshots = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("headshots");
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("challenges");
self.challenges = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("challenges");
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("kills");
self.kills = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("kills");
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("deaths");
self.deaths = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("deaths");
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("assists");
self.assists = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("assists");
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("defends", 0);
self.defends = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("defends");
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("offends", 0);
self.offends = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("offends");
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("plants", 0);
self.plants = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("plants");
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("defuses", 0);
self.defuses = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("defuses");
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("returns", 0);
self.returns = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("returns");
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("captures", 0);
self.captures = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("captures");
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("destructions", 0);
self.destructions = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("destructions");
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("backstabs", 0);
self.backstabs = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("backstabs");
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("longshots", 0);
self.longshots = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("longshots");
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("survived", 0);
self.survived = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("survived");
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("stabs", 0);
self.stabs = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("stabs");
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("tomahawks", 0);
self.tomahawks = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("tomahawks");
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("humiliated", 0);
self.humiliated = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("humiliated");
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("x2score", 0);
self.x2score = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("x2score");
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("agrkills", 0);
self.x2score = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("agrkills");
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("hacks", 0);
self.x2score = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("hacks");
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("sessionbans", 0);
self.sessionbans = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("sessionbans");
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("gametypeban", 0);
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("time_played_total", 0);
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("time_played_alive", 0);
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("teamkills", 0);
self maps\mp\gametypes_zm\_globallogic_score::initpersstat("teamkills_nostats", 0);
self.teamkillpunish = 0;
if (level.minimumallowedteamkills >= 0 && self.pers["teamkills_nostats"] > level.minimumallowedteamkills)
self thread reduceteamkillsovertime();
}
if (getdvar(#"r_reflectionProbeGenerate") == "1")
level waittill("eternity");
self.killedplayerscurrent = [];
if (!isdefined(self.pers["best_kill_streak"]))
{
self.pers["killed_players"] = [];
self.pers["killed_by"] = [];
self.pers["nemesis_tracking"] = [];
self.pers["artillery_kills"] = 0;
self.pers["dog_kills"] = 0;
self.pers["nemesis_name"] = "";
self.pers["nemesis_rank"] = 0;
self.pers["nemesis_rankIcon"] = 0;
self.pers["nemesis_xp"] = 0;
self.pers["nemesis_xuid"] = "";
self.pers["best_kill_streak"] = 0;
}
if (!isdefined(self.pers["music"]))
{
self.pers["music"] = spawnstruct();
self.pers["music"].spawn = 0;
self.pers["music"].inque = 0;
self.pers["music"].currentstate = "SILENT";
self.pers["music"].previousstate = "SILENT";
self.pers["music"].nextstate = "UNDERSCORE";
self.pers["music"].returnstate = "UNDERSCORE";
}
self.leaderdialogqueue = [];
self.leaderdialogactive = 0;
self.leaderdialoggroups = [];
self.currentleaderdialoggroup = "";
self.currentleaderdialog = "";
self.currentleaderdialogtime = 0;
if (!isdefined(self.pers["cur_kill_streak"]))
self.pers["cur_kill_streak"] = 0;
if (!isdefined(self.pers["cur_total_kill_streak"]))
{
self.pers["cur_total_kill_streak"] = 0;
self setplayercurrentstreak(0);
}
if (!isdefined(self.pers["totalKillstreakCount"]))
self.pers["totalKillstreakCount"] = 0;
if (!isdefined(self.pers["killstreaksEarnedThisKillstreak"]))
self.pers["killstreaksEarnedThisKillstreak"] = 0;
if (isdefined(level.usingscorestreaks) && level.usingscorestreaks && !isdefined(self.pers["killstreak_quantity"]))
self.pers["killstreak_quantity"] = [];
if (isdefined(level.usingscorestreaks) && level.usingscorestreaks && !isdefined(self.pers["held_killstreak_ammo_count"]))
self.pers["held_killstreak_ammo_count"] = [];
self.lastkilltime = 0;
self.cur_death_streak = 0;
self disabledeathstreak();
self.death_streak = 0;
self.kill_streak = 0;
self.gametype_kill_streak = 0;
self.spawnqueueindex = -1;
self.deathtime = 0;
self.lastgrenadesuicidetime = -1;
self.teamkillsthisround = 0;
if (!isdefined(level.livesdonotreset) || !level.livesdonotreset || !isdefined(self.pers["lives"]))
self.pers["lives"] = level.numlives;
if (!level.teambased)
self.pers["team"] = undefined;
self.hasspawned = 0;
self.waitingtospawn = 0;
self.wantsafespawn = 0;
self.deathcount = 0;
self.wasaliveatmatchstart = 0;
level.players[level.players.size] = self;
if (level.splitscreen)
setdvar("splitscreen_playerNum", level.players.size);
if (game["state"] == "postgame")
{
self.pers["needteam"] = 1;
self.pers["team"] = "spectator";
self.team = "spectator";
self setclientuivisibilityflag("hud_visible", 0);
self [[level.spawnintermission]]();
self closemenu();
self closeingamemenu();
profilelog_endtiming(4, "gs=" + game["state"] + " zom=" + sessionmodeiszombiesgame());
return;
}
if (level.scr_zm_ui_gametype_group == "zencounter")
{
self maps\mp\zombies\_zm_stats::increment_client_stat("losses");
self updatestatratio("wlratio", "wins", "losses");
if (gamemodeismode(level.gamemode_public_match))
self maps\mp\zombies\_zm_stats::add_location_gametype_stat(level.scr_zm_map_start_location, level.scr_zm_ui_gametype, "losses", 1);
}
else if (level.scr_zm_ui_gametype_group == "zsurvival")
{
if (isdefined(level.should_use_cia))
{
self luinotifyevent(&"hud_update_survival_team", 1, level.should_use_cia);
}
}
level endon("game_ended");
if (isdefined(level.hostmigrationtimer))
self thread maps\mp\gametypes_zm\_hostmigration::hostmigrationtimerthink();
if (level.oldschool)
{
self.pers["class"] = undefined;
self.class = self.pers["class"];
}
if (isdefined(self.pers["team"]))
self.team = self.pers["team"];
if (isdefined(self.pers["class"]))
self.class = self.pers["class"];
if (!isdefined(self.pers["team"]) || isdefined(self.pers["needteam"]))
{
self.pers["needteam"] = undefined;
self.pers["team"] = "spectator";
self.team = "spectator";
self.sessionstate = "dead";
self maps\mp\gametypes_zm\_globallogic_ui::updateobjectivetext();
[[level.spawnspectator]]();
if (level.rankedmatch)
{
[[level.autoassign]](0);
self thread maps\mp\gametypes_zm\_globallogic_spawn::kickifdontspawn();
}
else
[[level.autoassign]](0);
if (self.pers["team"] == "spectator")
{
self.sessionteam = "spectator";
if (!level.teambased)
self.ffateam = "spectator";
self thread spectate_player_watcher();
}
if (level.teambased)
{
self.sessionteam = self.pers["team"];
if (!isalive(self))
self.statusicon = "hud_status_dead";
self thread maps\mp\gametypes_zm\_spectating::setspectatepermissions();
}
}
else if (self.pers["team"] == "spectator")
{
self setclientscriptmainmenu(game["menu_class"]);
[[level.spawnspectator]]();
self.sessionteam = "spectator";
self.sessionstate = "spectator";
if (!level.teambased)
self.ffateam = "spectator";
self thread spectate_player_watcher();
}
else
{
self.sessionteam = self.pers["team"];
self.sessionstate = "dead";
if (!level.teambased)
self.ffateam = self.pers["team"];
self maps\mp\gametypes_zm\_globallogic_ui::updateobjectivetext();
[[level.spawnspectator]]();
if (maps\mp\gametypes_zm\_globallogic_utils::isvalidclass(self.pers["class"]))
self thread [[level.spawnclient]]();
else
self maps\mp\gametypes_zm\_globallogic_ui::showmainmenuforteam();
self thread maps\mp\gametypes_zm\_spectating::setspectatepermissions();
}
if (self.sessionteam != "spectator")
self thread maps\mp\gametypes_zm\_spawning::onspawnplayer_unified(1);
profilelog_endtiming(4, "gs=" + game["state"] + " zom=" + sessionmodeiszombiesgame());
if (isdefined(self.pers["isBot"]))
return;
}