void() menu_show_error =
{
- drawstring('0 200 0', "ERROR - MENU IS VISIBLE BUT NO MENU WAS DEFINED!", '8 8 0', '1 0 0', 1, 0);
+ drawstring('0 200 0', _("ERROR - MENU IS VISIBLE BUT NO MENU WAS DEFINED!"), '8 8 0', '1 0 0', 1, 0);
};
// CSQC_Init : Called every time the CSQC code is initialized (essentially at map load)
void WaypointSprite_Load();
void CSQC_Init(void)
{
+ prvm_language = cvar_string("prvm_language");
+
#ifdef USE_FTE
#pragma target ID
__engine_check = checkextension("DP_SV_WRITEPICTURE");
if(!__engine_check)
{
- print("^3Your engine build is outdated\n^3This Server uses a newer QC VM. Please update!\n");
+ print(_("^3Your engine build is outdated\n^3This Server uses a newer QC VM. Please update!\n"));
localcmd("\ndisconnect\n");
return;
}
#pragma target FTE
#endif
-
+
check_unacceptable_compiler_bugs();
#ifdef WATERMARK
- print("^4CSQC Build information: ", WATERMARK(), "\n");
+ print(sprintf(_("^4CSQC Build information: %s\n"), WATERMARK()));
#endif
float i;
- CSQC_CheckEngine();
binddb = db_create();
tempdb = db_create();
ClientProgsDB = db_load("client.db");
compressShortVector_init();
- drawfont = 0;
+ drawfont = FONT_USER+1;
menu_visible = FALSE;
menu_show = menu_show_error;
menu_action = menu_sub_null;
registercmd("-button3");
registercmd("+button4");
registercmd("-button4");
+ registercmd("+showscores");registercmd("-showscores");
registercmd("+showaccuracy");registercmd("-showaccuracy");
#ifndef CAMERATEST
}
#endif
registercvar("hud_usecsqc", "1");
- registercvar("hud_columns", "default", CVAR_SAVE);
+ registercvar("scoreboard_columns", "default", CVAR_SAVE);
gametype = 0;
GetTeam(COLOR_SPECTATOR, true); // add specs first
- cvar_clientsettemp("_supports_weaponpriority", "1");
-
RegisterWeapons();
WaypointSprite_Load();
// precaches
+ precache_sound("misc/hit.wav");
+ precache_sound("misc/typehit.wav");
Projectile_Precache();
+ Hook_Precache();
GibSplash_Precache();
Casings_Precache();
DamageInfo_Precache();
- if(cvar_string("cl_announcer") != cl_announcer_prev) {
+ if(autocvar_cl_announcer != cl_announcer_prev) {
Announcer_Precache();
if(cl_announcer_prev)
strunzone(cl_announcer_prev);
- cl_announcer_prev = strzone(cvar_string("cl_announcer"));
+ cl_announcer_prev = strzone(autocvar_cl_announcer);
}
Tuba_Precache();
-#ifdef UID
- {
- // find the user ID
- string uid;
- registercvar("_cl_userid", "", CVAR_SAVE);
- uid = cvar_string("_cl_userid");
- if(strlen(uid) < 16)
- {
- uid = "";
- for(i = 0; i < 4; ++i)
- uid = strcat(uid, substring(ftos(floor(10000 + random() * 10000)), 1, -1));
- }
- cvar_set("_cl_userid", uid);
- localcmd(strcat("\ncmd uid ", uid, "\n"));
- }
-#endif
-
get_mi_min_max_texcoords(1); // try the CLEVER way first
minimapname = strcat("gfx/", mi_shortname, "_radar.tga");
shortmapname = mi_shortname;
minimapname = strzone(minimapname);
WarpZone_Init();
+ hud_configure_prev = -1;
}
// CSQC_Shutdown : Called every time the CSQC code is shutdown (changing maps, quitting, etc)
remove(players);
db_close(binddb);
db_close(tempdb);
- db_save(ClientProgsDB, "client.db");
+ if(autocvar_cl_db_saveasdump)
+ db_dump(ClientProgsDB, "client.db");
+ else
+ db_save(ClientProgsDB, "client.db");
db_close(ClientProgsDB);
cvar_clientsettemp_restore();
if not(isdemo())
{
if not(calledhooks & HOOK_START)
- localcmd("\n_cl_hook_gamestart nop;");
+ localcmd("\n_cl_hook_gamestart nop\n");
if not(calledhooks & HOOK_END)
- localcmd("\ncl_hook_gameend;");
+ localcmd("\ncl_hook_gameend\n");
}
}
default:
if(GetTeam(Team, false) == NULL)
{
- print("trying to switch to unsupported team ", ftos(Team), "\n");
+ print(sprintf(_("trying to switch to unsupported team %d\n"), Team));
Team = COLOR_SPECTATOR;
}
break;
default:
if(GetTeam(Team, false) == NULL)
{
- print("trying to switch to unsupported team ", ftos(Team), "\n");
+ print(sprintf(_("trying to switch to unsupported team %d\n"), Team));
Team = COLOR_SPECTATOR;
}
break;
{
if(o.has_team)
{
- //print("(DISCONNECT) leave team ", ftos(o.team), "\n");
tm = GetTeam(o.team, false);
tm.team_size -= 1;
o.has_team = 0;
{
if not(o.has_team)
{
- //print("(CONNECT) enter team ", ftos(o.team), "\n");
o.team = Team;
tm = GetTeam(Team, true);
tm.team_size += 1;
}
else if(Team != o.team)
{
- //print("(CHANGE) leave team ", ftos(o.team), "\n");
tm = GetTeam(o.team, false);
tm.team_size -= 1;
o.team = Team;
- //print("(CHANGE) enter team ", ftos(o.team), "\n");
tm = GetTeam(Team, true);
tm.team_size += 1;
return TRUE;
{
if(e.sort_prev)
{
- //print("playerchecker: KILL KILL KILL\n");
// player disconnected
SetTeam(e, -1);
RemovePlayer(e);
{
if not(e.sort_prev)
{
- //print("playerchecker: SPAWN SPAWN SPAWN\n");
// player connected
if not(e)
playerslots[i] = e = spawn();
void TrueAim_Init();
void PostInit(void)
{
- print(strcat("PostInit\n maxclients = ", ftos(maxclients), "\n"));
- localcmd(strcat("\nhud_columns_set ", cvar_string("hud_columns"), ";\n"));
+ localcmd(strcat("\nscoreboard_columns_set ", autocvar_scoreboard_columns, ";\n"));
entity playerchecker;
playerchecker = spawn();
strCmd = argv(0);
if(strCmd == "hud_configure") { // config hud
- cvar_set("_hud_configure", ftos(!cvar("_hud_configure")));
+ cvar_set("_hud_configure", ftos(!autocvar__hud_configure));
return true;
} else if(strCmd == "hud_save") { // save hud config
if(argv(1) == "" || argv(2)) {
- print("Usage:\n");
- print("hud_save configname (saves to hud_skinname_configname.cfg)\n");
+ print(_("Usage:\n"));
+ print(_("hud_save configname (saves to hud_skinname_configname.cfg)\n"));
}
else
HUD_Panel_ExportCfg(argv(1));
button_attack2 = 0;
return false;
} else if(strCmd == "+showscores") {
- sb_showscores = true;
+ scoreboard_showscores = true;
return true;
} else if(strCmd == "-showscores") {
- sb_showscores = false;
+ scoreboard_showscores = false;
return true;
} else if(strCmd == "+showaccuracy") {
- sb_showaccuracy = true;
+ scoreboard_showaccuracy = true;
return true;
} else if(strCmd == "-showaccuracy") {
- sb_showaccuracy = false;
+ scoreboard_showaccuracy = false;
return true;
}
self.angles = view_angles;
self.angles_x = -self.angles_x;
if not(self.cnt)
- R_AddEntity(self);
+ self.drawmask = MASK_NORMAL;
+ else
+ self.drawmask = 0;
}
void ShotOrg_Draw2D()
{
if(time - floor(time) > 0.5)
{
PolyDrawModel(self);
+ self.drawmask = 0;
}
else
{
self.renderflags = 0;
- R_AddEntity(self);
+ self.drawmask = MASK_NORMAL;
}
}
if(argv(0) == "help" || argc == 0)
{
- print("Usage: cl_cmd COMMAND..., where possible commands are:\n");
- print(" settemp cvar value\n");
- print(" hud_columns_set ...\n");
- print(" hud_columns_help\n");
+ print(_("Usage: cl_cmd COMMAND..., where possible commands are:\n"));
+ print(_(" settemp cvar value\n"));
+ print(_(" scoreboard_columns_set ...\n"));
+ print(_(" scoreboard_columns_help\n"));
GameCommand_Generic("help");
return;
}
else if(cmd == "settemp") {
cvar_clientsettemp(argv(1), argv(2));
}
- else if(cmd == "hud_columns_set") {
+ else if(cmd == "scoreboard_columns_set") {
Cmd_HUD_SetFields(argc);
}
- else if(cmd == "hud_columns_help") {
+ else if(cmd == "scoreboard_columns_help") {
Cmd_HUD_Help(argc);
}
#ifdef BLURTEST
e.draw = DrawDebugModel;
e.classname = "debugmodel";
}
+ else if(cmd == "vyes")
+ {
+ if(uid2name_dialog)
+ {
+ vote_active = 0; // force the panel to disappear right as we have selected the value (to prevent it from fading out in the normal vote panel pos)
+ vote_prev = 0;
+ cvar_set("cl_allow_uid2name", "1");
+ vote_change = -9999;
+ }
+ else
+ {
+ localcmd("cmd vote yes\n");
+ }
+ }
+ else if(cmd == "vno")
+ {
+ if(uid2name_dialog)
+ {
+ vote_active = 0;
+ vote_prev = 0;
+ cvar_set("cl_allow_uid2name", "0");
+ vote_change = -9999;
+ }
+ else
+ {
+ localcmd("cmd vote no\n");
+ }
+ }
+
else
{
print("Invalid command. For a list of supported commands, try cl_cmd help.\n");
// bInputType = 0 is key pressed, 1 is key released, 2 is mouse input.
// In the case of keyboard input, nPrimary is the ascii code, and nSecondary is 0.
// In the case of mouse input, nPrimary is xdelta, nSecondary is ydelta.
-float hudconf_active;
float CSQC_InputEvent(float bInputType, float nPrimary, float nSecondary)
{
local float bSkipKey;
bSkipKey = false;
- if(hudconf_active)
- if (HUD_Panel_InputEvent(bInputType, nPrimary, nSecondary))
- return true;
+ if (HUD_Panel_InputEvent(bInputType, nPrimary, nSecondary))
+ return true;
if (MapVote_InputEvent(bInputType, nPrimary, nSecondary))
return true;
if(menu_visible)
if(menu_action(bInputType, nPrimary, nSecondary))
return TRUE;
+
return bSkipKey;
}
#ifdef DP_CSQC_ENTITY_REMOVE_IS_B0RKED
if(!isNew && n != self.sv_entnum)
{
- print("A CSQC entity changed its owner!\n");
+ print(_("A CSQC entity changed its owner!\n"));
isNew = true;
Ent_Remove();
self.enttype = ENT_CLIENT_SCORES;
f = ReadByte();
- sb_showscores_force = (f & 1);
+ scoreboard_showscores_force = (f & 1);
if(f & 2)
{
if(newspectatee_status != spectatee_status)
{
float i;
- // clear the weapon accuracy stats
- for(i = WEP_FIRST; i <= WEP_LAST; ++i) {
- weapon_hits[i] = 0;
- weapon_fired[i] = 0;
- }
// clear race stuff
race_laptime = 0;
psrandom(s);
}
+void Ent_ReadAccuracy(void)
+{
+ float sf, f, w, b;
+ sf = ReadInt24_t();
+ if(sf == 0)
+ {
+ for(w = 0; w <= WEP_LAST - WEP_FIRST; ++w)
+ weapon_accuracy[w] = -1;
+ return;
+ }
+
+ for(w = 0, f = 1; w <= WEP_LAST - WEP_FIRST; ++w, f *= 2)
+ {
+ if(sf & f)
+ {
+ b = ReadByte();
+ if(b == 0)
+ weapon_accuracy[w] = -1;
+ else if(b == 255)
+ weapon_accuracy[w] = 1.0; // no better error handling yet, sorry
+ else
+ weapon_accuracy[w] = (b - 1.0) / 100.0;
+ }
+ }
+}
+
// CSQC_Ent_Update : Called every frame that the server has indicated an update to the SSQC / CSQC entity has occured.
// The only parameter reflects if the entity is "new" to the client, meaning it just came into the client's PVS.
void Ent_RadarLink();
if(self.enttype)
if(t != self.enttype)
{
- print("A CSQC entity changed its type!\n");
+ print(_("A CSQC entity changed its type!\n"));
Ent_Remove();
bIsNewEntity = 1;
}
case ENT_CLIENT_WARPZONE: WarpZone_Read(bIsNewEntity); break;
case ENT_CLIENT_WARPZONE_CAMERA: WarpZone_Camera_Read(bIsNewEntity); break;
case ENT_CLIENT_TRIGGER_MUSIC: Ent_ReadTriggerMusic(); break;
+ case ENT_CLIENT_HOOK: Ent_ReadHook(bIsNewEntity, ENT_CLIENT_HOOK); break;
+ case ENT_CLIENT_LGBEAM: Ent_ReadHook(bIsNewEntity, ENT_CLIENT_LGBEAM); break;
+ case ENT_CLIENT_GAUNTLET: Ent_ReadHook(bIsNewEntity, ENT_CLIENT_GAUNTLET); break;
+ case ENT_CLIENT_ACCURACY: Ent_ReadAccuracy(); break;
default:
- error(strcat("unknown entity type in CSQC_Ent_Update: ", ftos(self.enttype), "\n"));
+ error(strcat(_("unknown entity type in CSQC_Ent_Update: %d\n"), self.enttype));
break;
}
precache_pic("gfx/ons-cp-blue.tga");
precache_pic("gfx/ons-frame.tga");
precache_pic("gfx/ons-frame-team.tga");
- } else if(gametype == GAME_KEYHUNT) {
- precache_pic("gfx/sb_key_carrying");
- precache_pic("gfx/sb_key_carrying_outline");
}
if not(isdemo())
{
- localcmd("\n_cl_hook_gamestart ", GametypeNameFromType(gametype), ";");
+ localcmd("\n_cl_hook_gamestart ", GametypeNameFromType(gametype), "\n");
calledhooks |= HOOK_START;
}
}
nb_pb_period = ReadByte() / 32; //Accuracy of 1/32th
- hook_shotorigin_x = ReadCoord();
- hook_shotorigin_y = ReadCoord();
- hook_shotorigin_z = ReadCoord();
+ hook_shotorigin[0] = decompressShotOrigin(ReadInt24_t());
+ hook_shotorigin[1] = decompressShotOrigin(ReadInt24_t());
+ hook_shotorigin[2] = decompressShotOrigin(ReadInt24_t());
+ hook_shotorigin[3] = decompressShotOrigin(ReadInt24_t());
+ electro_shotorigin[0] = decompressShotOrigin(ReadInt24_t());
+ electro_shotorigin[1] = decompressShotOrigin(ReadInt24_t());
+ electro_shotorigin[2] = decompressShotOrigin(ReadInt24_t());
+ electro_shotorigin[3] = decompressShotOrigin(ReadInt24_t());
+ gauntlet_shotorigin[0] = decompressShotOrigin(ReadInt24_t());
+ gauntlet_shotorigin[1] = decompressShotOrigin(ReadInt24_t());
+ gauntlet_shotorigin[2] = decompressShotOrigin(ReadInt24_t());
+ gauntlet_shotorigin[3] = decompressShotOrigin(ReadInt24_t());
if(forcefog)
strunzone(forcefog);
g_weaponswitchdelay = ReadByte() / 255.0;
- g_balance_grenadelauncher_secondary_bouncefactor = ReadCoord();
- g_balance_grenadelauncher_secondary_bouncestop = ReadCoord();
+ g_balance_grenadelauncher_bouncefactor = ReadCoord();
+ g_balance_grenadelauncher_bouncestop = ReadCoord();
+ g_balance_electro_secondary_bouncefactor = ReadCoord();
+ g_balance_electro_secondary_bouncestop = ReadCoord();
+
+ nex_scope = !ReadByte();
+ sniperrifle_scope = !ReadByte();
+
+ serverflags = ReadByte();
+
+ cr_maxbullets = ReadByte();
+
+ minelayer_maxmines = ReadByte();
+
+ g_trueaim_minrange = ReadCoord();
if(!postinit)
PostInit();
void Net_VoteDialog(float highlight) {
if(highlight) {
- vote_highlighted = ReadShort();
+ vote_highlighted = ReadByte();
return;
}
- vote_yescount = ReadShort();
- vote_nocount = ReadShort();
- vote_needed = ReadShort();
+ vote_yescount = ReadByte();
+ vote_nocount = ReadByte();
+ vote_needed = ReadByte();
vote_active = 1;
}
if(type == CSQC_KILLNOTIFY)
{
- HUD_KillNotify(ReadString(), ReadString(), ReadByte());
+ HUD_KillNotify(ReadString(), ReadString(), ReadString(), ReadShort(), ReadByte());
}
else if(type == CSQC_CENTERPRINT)
{
- HUD_Centerprint(ReadString(), ReadByte());
+ HUD_Centerprint(ReadString(), ReadString(), ReadShort(), ReadByte());
}
}
+void Net_WeaponComplain() {
+ complain_weapon = ReadByte();
+
+ if(complain_weapon_name)
+ strunzone(complain_weapon_name);
+ complain_weapon_name = strzone(ReadString());
+
+ complain_weapon_type = ReadByte();
+
+ complain_weapon_time = time;
+ weapontime = time; // ping the weapon panel
+}
+
// CSQC_Parse_TempEntity : Handles all temporary entity network data in the CSQC layer.
// You must ALWAYS first acquire the temporary ID, which is sent as a byte.
// Return value should be 1 if CSQC handled the temporary entity, otherwise return 0 to have the engine process the event.
Net_ReadRace();
bHandled = true;
break;
- case 13: // TE_BEAM
- Net_GrapplingHook();
- bHandled = true;
- break;
case TE_CSQC_SPAWN:
Net_ReadSpawn();
bHandled = true;
Net_Notify();
bHandled = true;
break;
+ case TE_CSQC_WEAPONCOMPLAIN:
+ Net_WeaponComplain();
+ bHandled = true;
+ break;
default:
// No special logic for this temporary entity; return 0 so the engine can handle it
bHandled = false;
if ("" == keys) {
if (hud_showbinds > 1)
- return strcat(text, " (not bound)");
+ return sprintf(_("%s (not bound)"), text);
else
return text;
}
else if (hud_showbinds > 1)
- return strcat(text, " (", keys, ")");
+ return sprintf(_("%s (%s)"), text, keys);
else
return keys;
}