#include <client/shownames.qh>
#include <client/view.qh>
#include <client/weapons/projectile.qh>
+#include <common/checkextension.qh>
#include <common/deathtypes/all.qh>
#include <common/effects/all.inc>
#include <common/effects/all.qh>
// CSQC_Init : Called every time the CSQC code is initialized (essentially at map load)
// Useful for precaching things
-void CSQC_Init()
+void CSQC_Init(float apilevel, string enginename, float engineversion)
{
prvm_language = strzone(cvar_string("prvm_language"));
LOG_TRACEF("^4CSQC Build information: ^1%s", WATERMARK);
#endif
+ CheckEngineExtensions();
+
{
int i = 0;
for ( ; i < 255; ++i)
localcmd("\n-button12\n");
+ strfree(gametype_custom_name);
+
deactivate_minigame();
HUD_MinigameMenu_Close(NULL, NULL, NULL);
for(int i = 0; i < maxclients;)
for(int f = ReadByte(), b = 0; b < 8 && i < maxclients; ++b, ++i)
if(playerslots[i])
- playerslots[i].ready = (f & BIT(b));
+ playerslots[i].ready = f & BIT(b);
return = true;
return false;
}
+bool autocvar_r_drawfog;
+bool autocvar_r_fog_exp2;
string forcefog;
void Fog_Force()
{
if (autocvar_cl_orthoview && autocvar_cl_orthoview_nofog)
- localcmd("\nr_drawfog 0\n");
+ {
+ if (autocvar_r_drawfog)
+ cvar_set("r_drawfog", "0");
+ }
else if (forcefog != "")
- localcmd(sprintf("\nfog %s\nr_fog_exp2 0\nr_drawfog 1\n", forcefog));
+ {
+ // using cvar_set as it's faster and safer than a command
+ if (!autocvar_r_drawfog)
+ cvar_set("r_drawfog", "1");
+ if (autocvar_r_fog_exp2)
+ cvar_set("r_fog_exp2", "0");
+ localcmd(sprintf("\nfog %s\n", forcefog));
+ }
}
bool net_handle_ServerWelcome();
{
make_pure(this);
gametype = ReadRegistered(Gametypes);
+ strcpy(gametype_custom_name, ReadString());
teamplay = _MapInfo_GetTeamPlayBool(gametype);
HUD_ModIcons_SetFunc();
FOREACH(Scores, true, {
int n = tokenizebyseparator(s, " & ");
string wpn_list = "";
- for (int i = 0; i < n; i++)
+ for (int i = 0; i < n; ++i)
{
Weapon wep = Weapon_from_name(argv(i));
if (wep == WEP_Null)