.float latency_cnt;
.float latency_time;
entity pingplreport;
-void PingPLReport_Think()
-{SELFPARAM();
+void PingPLReport_Think(entity this)
+{
float delta;
entity e;
void PingPLReport_Spawn()
{
pingplreport = new_pure(pingplreport);
- pingplreport.think = PingPLReport_Think;
+ setthink(pingplreport, PingPLReport_Think);
pingplreport.nextthink = time;
}
}
}
-void GotoFirstMap()
-{SELFPARAM();
+void GotoFirstMap(entity this)
+{
float n;
if(autocvar__sv_init)
{
if(time < 5)
{
- self.nextthink = time;
+ this.nextthink = time;
}
else
{
- self.nextthink = time + 1;
+ this.nextthink = time + 1;
LOG_INFO("Waiting for _sv_init being set to 1 by initialization scripts...\n");
}
}
BADCVAR("sv_autotaunt");
BADCVAR("sv_curl_defaulturl");
BADCVAR("sv_defaultcharacter");
+ BADCVAR("sv_defaultcharacterskin");
BADCVAR("sv_defaultplayercolors");
BADCVAR("sv_defaultplayermodel");
BADCVAR("sv_defaultplayerskin");
WriteShort(MSG_ENTITY, this.cnt);
return true;
}
-void RandomSeed_Think()
-{SELFPARAM();
+void RandomSeed_Think(entity this)
+{
this.cnt = bound(0, floor(random() * 65536), 65535);
this.nextthink = time + 5;
this.SendFlags |= 1;
}
void RandomSeed_Spawn()
-{SELFPARAM();
+{
randomseed = new_pure(randomseed);
- randomseed.think = RandomSeed_Think;
+ setthink(randomseed, RandomSeed_Think);
Net_LinkEntity(randomseed, false, 0, RandomSeed_Send);
- WITHSELF(randomseed, randomseed.think()); // sets random seed and nextthink
+ WITHSELF(randomseed, getthink(randomseed)(randomseed)); // sets random seed and nextthink
}
spawnfunc(__init_dedicated_server)
remove = remove_unsafely;
entity e = spawn();
- e.think = GotoFirstMap;
+ setthink(e, GotoFirstMap);
e.nextthink = time; // this is usually 1 at this point
e = new(info_player_deathmatch); // safeguard against player joining
- self.classname = "worldspawn"; // safeguard against various stuff ;)
+ this.classname = "worldspawn"; // safeguard against various stuff ;)
// needs to be done so early because of the constants they create
static_init();
{
server_is_dedicated = boolean(stof(cvar_defstring("is_dedicated")));
+ bool wantrestart = false;
{
- bool wantrestart = false;
-
if (!server_is_dedicated)
{
// force unloading of server pk3 files when starting a listen server
if(!limits_are_set)
SetLimits(autocvar_fraglimit_override, autocvar_leadlimit_override, autocvar_timelimit_override, -1);
+ if(warmup_limit == 0)
+ warmup_limit = (autocvar_timelimit > 0) ? autocvar_timelimit * 60 : autocvar_timelimit;
+
player_count = 0;
bot_waypoints_for_items = autocvar_g_waypoints_for_items;
if(bot_waypoints_for_items == 1)
- if(self.spawnflags & SPAWNFLAG_NO_WAYPOINTS_FOR_ITEMS)
+ if(this.spawnflags & SPAWNFLAG_NO_WAYPOINTS_FOR_ITEMS)
bot_waypoints_for_items = 0;
precache();
s = ":gameinfo:mutators:LIST";
MUTATOR_CALLHOOK(BuildMutatorsString, s);
- s = ret_string;
+ s = M_ARGV(0, string);
// initialiation stuff, not good in the mutator system
if(!autocvar_g_use_ammunition)
CheatInit();
- localcmd("\n_sv_hook_gamestart ", GetGametype(), "\n");
+ if (!wantrestart) localcmd("\n_sv_hook_gamestart ", GetGametype(), "\n");
// fill sv_curl_serverpackages from .serverpackage files
if (autocvar_sv_curl_serverpackages_auto)
// save it for later
modname = strzone(modname);
- WinningConditionHelper(); // set worldstatus
+ WinningConditionHelper(this); // set worldstatus
world_initialized = 1;
}
spawnfunc(light)
{
- //makestatic (self); // Who the f___ did that?
- remove(self);
+ //makestatic (this); // Who the f___ did that?
+ remove(this);
}
string GetGametype()
============
*/
.float autoscreenshot;
-void IntermissionThink()
-{SELFPARAM();
- FixIntermissionClient(self);
+void IntermissionThink(entity this)
+{
+ FixIntermissionClient(this);
- float server_screenshot = (autocvar_sv_autoscreenshot && self.cvar_cl_autoscreenshot);
- float client_screenshot = (self.cvar_cl_autoscreenshot == 2);
+ float server_screenshot = (autocvar_sv_autoscreenshot && this.cvar_cl_autoscreenshot);
+ float client_screenshot = (this.cvar_cl_autoscreenshot == 2);
if( (server_screenshot || client_screenshot)
- && ((self.autoscreenshot > 0) && (time > self.autoscreenshot)) )
+ && ((this.autoscreenshot > 0) && (time > this.autoscreenshot)) )
{
- self.autoscreenshot = -1;
- if(IS_REAL_CLIENT(self)) { stuffcmd(self, sprintf("\nscreenshot screenshots/autoscreenshot/%s-%s.jpg; echo \"^5A screenshot has been taken at request of the server.\"\n", GetMapname(), strftime(false, "%s"))); }
+ this.autoscreenshot = -1;
+ if(IS_REAL_CLIENT(this)) { stuffcmd(this, sprintf("\nscreenshot screenshots/autoscreenshot/%s-%s.jpg; echo \"^5A screenshot has been taken at request of the server.\"\n", GetMapname(), strftime(false, "%s"))); }
return;
}
return;
if(!mapvote_initialized)
- if (time < intermission_exittime + 10 && !(PHYS_INPUT_BUTTON_ATCK(self) || PHYS_INPUT_BUTTON_JUMP(self) || PHYS_INPUT_BUTTON_ATCK2(self) || PHYS_INPUT_BUTTON_HOOK(self) || PHYS_INPUT_BUTTON_USE(self)))
+ if (time < intermission_exittime + 10 && !(PHYS_INPUT_BUTTON_ATCK(this) || PHYS_INPUT_BUTTON_JUMP(this) || PHYS_INPUT_BUTTON_ATCK2(this) || PHYS_INPUT_BUTTON_HOOK(this) || PHYS_INPUT_BUTTON_USE(this)))
return;
MapVote_Start();
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)), ":");
- if(IS_PLAYER(it) || MUTATOR_CALLHOOK(GetPlayerStatus, it, s))
+ if(IS_PLAYER(it) || MUTATOR_CALLHOOK(GetPlayerStatus, it))
s = strcat(s, ftos(it.team), ":");
else
s = strcat(s, "spectator:");
*/
void NextLevel()
{
- SELFPARAM();
gameover = true;
intermission_running = 1;
Exit deathmatch games upon conditions
============
*/
-void CheckRules_Player()
-{SELFPARAM();
+void CheckRules_Player(entity this)
+{
if (gameover) // someone else quit the game already
return;
float limitreached;
// TODO make everything use THIS winning condition (except LMS)
- WinningConditionHelper();
+ WinningConditionHelper(NULL);
if(teamplay)
{
if(checkrules_status == WINNING_YES)
bprint("Hey! Someone ran out of spawns!\n");
else if(MUTATOR_CALLHOOK(CheckRules_World, checkrules_status, timelimit, fraglimit))
- checkrules_status = ret_float;
+ checkrules_status = M_ARGV(0, float);
else
checkrules_status = WinningCondition_Scores(fraglimit, leadlimit);
float redirection_timeout;
float redirection_nextthink;
float RedirectionThink()
-{SELFPARAM();
+{
float clients_found;
if(redirection_target == "")
clients_found = 0;
FOREACH_CLIENT(IS_REAL_CLIENT(it), LAMBDA(
- setself(it);
// TODO add timer
- LOG_INFO("Redirecting: sending connect command to ", self.netname, "\n");
+ LOG_INFO("Redirecting: sending connect command to ", it.netname, "\n");
if(redirection_target == "self")
- stuffcmd(self, "\ndisconnect; defer ", ftos(autocvar_quit_and_redirect_timer), " reconnect\n");
+ stuffcmd(it, "\ndisconnect; defer ", ftos(autocvar_quit_and_redirect_timer), " reconnect\n");
else
- stuffcmd(self, strcat("\ndisconnect; defer ", ftos(autocvar_quit_and_redirect_timer), " \"connect ", redirection_target, "\"\n"));
+ stuffcmd(it, strcat("\ndisconnect; defer ", ftos(autocvar_quit_and_redirect_timer), " \"connect ", redirection_target, "\"\n"));
++clients_found;
));