Send_Notification(NOTIF_ONE_ONLY, this, MSG_INFO, INFO_SPECTATE_WARNING, autocvar_g_maxplayers_spectator_blocktime);
}
- this.jointime = time;
+ CS(this).jointime = time;
this.allowed_timeouts = autocvar_sv_timeout_number;
if (IS_REAL_CLIENT(this))
ATTRIB(Client, teamkill_soundsource, entity, this.teamkill_soundsource);
ATTRIB(Client, usekeypressed, bool, this.usekeypressed);
ATTRIB(Client, motd_actived_time, float, this.motd_actived_time);
+ ATTRIB(Client, jointime, float, this.jointime);
METHOD(Client, m_unwind, bool(Client this));
it.netname,
CS(it).ping,
CS(it).ping_packetloss,
- process_time(1, time - it.jointime),
+ process_time(1, time - CS(it).jointime),
tmp_netaddress,
tmp_crypto_idfp));
FOREACH_CLIENT(IS_REAL_CLIENT(it) || (IS_BOT_CLIENT(it) && autocvar_sv_logscores_bots), LAMBDA(
s = strcat(":player:see-labels:", GetPlayerScoreString(it, 0), ":");
- s = strcat(s, ftos(rint(time - it.jointime)), ":");
+ s = strcat(s, ftos(rint(time - CS(it).jointime)), ":");
if(IS_PLAYER(it) || MUTATOR_CALLHOOK(GetPlayerStatus, it))
s = strcat(s, ftos(it.team), ":");
else
if (!allowed_to_spawn && IS_PLAYER(player)) // this is true even when player is trying to join
{
TRANSMUTE(Observer, player);
- if (player.jointime != time && !player.caplayer) // not when connecting
+ if (CS(player).jointime != time && !player.caplayer) // not when connecting
{
player.caplayer = 0.5;
Send_Notification(NOTIF_ONE_ONLY, player, MSG_INFO, INFO_CA_JOIN_LATE);