diff --git a/src/client/cstrike/progs.src b/src/client/cstrike/progs.src index 0f85f672..117114dc 100755 --- a/src/client/cstrike/progs.src +++ b/src/client/cstrike/progs.src @@ -61,6 +61,7 @@ defs.h ../../shared/decals.c ../../shared/effects.c ../../shared/spraylogo.cpp +../npc.c overview.c ../player.c @@ -74,6 +75,7 @@ nightvision.c hudcrosshair.c hudscope.c hudweaponselect.c +../obituary.c hudorbituaries.c hud.c ../vgui.cpp diff --git a/src/client/damage.c b/src/client/damage.c index f71fdbec..53b015c4 100644 --- a/src/client/damage.c +++ b/src/client/damage.c @@ -80,5 +80,7 @@ CSQC_Parse_Damage(float save, float take, vector abs_pos) pSeat->damage_alpha = 1.0f; } + View_AddPunchAngle([take,0,0]); + return TRUE; } diff --git a/src/client/entities.c b/src/client/entities.c index bbd33f82..973171e2 100644 --- a/src/client/entities.c +++ b/src/client/entities.c @@ -30,6 +30,9 @@ void CSQC_Ent_Update(float new) case ENT_PLAYER: Player_ReadEntity(new); break; + case ENT_NPC: + NPC_ReadEntity(new); + break; case ENT_SPRITE: Sprite_Animated(); break; diff --git a/src/client/entry.c b/src/client/entry.c index 7fec22af..8c4fddf0 100644 --- a/src/client/entry.c +++ b/src/client/entry.c @@ -286,6 +286,7 @@ CSQC_UpdateView(float w, float h, float focus) HUD_Draw(); } + Obituary_Draw(); ///HUD_DrawOrbituaries(); Voice_DrawHUD(); Chat_Draw(); @@ -436,6 +437,9 @@ CSQC_Parse_Event(void) float fHeader = readbyte(); switch (fHeader) { + case EV_OBITUARY: + Obituary_Parse(); + break; case EV_SPEAK: string msg; float pit; diff --git a/src/client/npc.c b/src/client/npc.c new file mode 100644 index 00000000..722a4833 --- /dev/null +++ b/src/client/npc.c @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2016-2019 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +class monster_npc +{ + int body; + int inited; + float frame_last; + + virtual float() predraw; +}; + +float +monster_npc::predraw(void) +{ + /* Only do this once whenever the ent pops into view */ + if (!inited) { + setcustomskin(this, "", sprintf("geomset 1 %i\n", body)); + inited = TRUE; + } + + if (lerpfrac > 0) { + lerpfrac -= frametime * 5; + if (lerpfrac < 0) { + lerpfrac = 0; + } + } + + if (frame != frame_last) { + frame2time = frame1time; + frame2 = frame_last; + frame_last = frame; + lerpfrac = 1.0f; + frame1time = 0.0f; + } + + frame2time += clframetime; + frame1time += clframetime; + bonecontrol5 = getchannellevel(this, CHAN_VOICE) * 20; + + addentity(this); + return PREDRAW_NEXT; +} + +void +NPC_ReadEntity(float new) +{ + monster_npc pl = (monster_npc)self; + if (new == TRUE) { + spawnfunc_monster_npc(); + pl.classname = "npc"; + pl.solid = SOLID_SLIDEBOX; + pl.drawmask = MASK_ENGINE; + pl.customphysics = Empty; + setsize( pl, VEC_HULL_MIN, VEC_HULL_MAX ); + } + + /* TODO: make these conditional */ + pl.modelindex = readshort(); + pl.origin[0] = readcoord(); + pl.origin[1] = readcoord(); + pl.origin[2] = readcoord(); + pl.angles[1] = readfloat(); + pl.angles[2] = readfloat(); + pl.velocity[0] = readcoord(); + pl.velocity[1] = readcoord(); + pl.velocity[2] = readcoord(); + pl.frame = readbyte(); + pl.skin = readbyte(); + pl.body = readbyte(); +} + diff --git a/src/client/obituary.c b/src/client/obituary.c new file mode 100644 index 00000000..0bd13c42 --- /dev/null +++ b/src/client/obituary.c @@ -0,0 +1,170 @@ +/* + * Copyright (c) 2016-2019 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +extern vector g_hud_color; + +#define OBITUARY_LINES 4 +#define OBITUARY_TIME 5 + +typedef struct { + string strAttacker; + string strVictim; + + /* icon */ + string strImage; + vector vecPos; + vector vecSize; + vector vecXY; + vector vecWH; +} obituary_t; + +obituary_t g_obituary[OBITUARY_LINES]; +static int g_obituary_count; +float g_obituary_time; + +void +Obituary_KillIcon(int id, float w) +{ +#ifdef VALVE + vector spr_size; + + if (w > 0) { + spr_size = drawgetimagesize(g_weapons[w].ki_spr); + print(sprintf("Weapon death: %d\n", w)); + /* fill in the entries and calculate some in advance */ + g_obituary[id].strImage = g_weapons[w].ki_spr; + g_obituary[id].vecPos = g_weapons[w].ki_xy; + g_obituary[id].vecSize = g_weapons[w].ki_size; + g_obituary[id].vecXY[0] = g_weapons[w].ki_xy[0] / spr_size[0]; + g_obituary[id].vecXY[1] = g_weapons[w].ki_xy[1] / spr_size[1]; + g_obituary[id].vecWH[0] = g_weapons[w].ki_size[0] / spr_size[0]; + g_obituary[id].vecWH[1] = g_weapons[w].ki_size[1] / spr_size[1]; + } else { + /* fill in the entries and calculate some in advance */ + g_obituary[id].strImage = "sprites/640hud1.spr_0.tga"; + g_obituary[id].vecPos = [192,224]; + g_obituary[id].vecSize = [32,16]; + g_obituary[id].vecXY[0] = 192 / 256; + g_obituary[id].vecXY[1] = 224 / 256; + g_obituary[id].vecWH[0] = 32 / 256; + g_obituary[id].vecWH[1] = 16 / 256; + } +#endif +} + +void +Obituary_Add(string attacker, string victim, float weapon, float flags) +{ + int i; + int x, y; + x = OBITUARY_LINES; + + /* we're not full yet, so fill up the buffer */ + if (g_obituary_count < x) { + y = g_obituary_count; + g_obituary[y].strAttacker = attacker; + g_obituary[y].strVictim = victim; + Obituary_KillIcon(y, weapon); + g_obituary_count++; + } else { + for (i = 0; i < (x-1); i++) { + g_obituary[i].strAttacker = g_obituary[i+1].strAttacker; + g_obituary[i].strVictim = g_obituary[i+1].strVictim; + g_obituary[i].strImage = g_obituary[i+1].strImage; + g_obituary[i].vecPos = g_obituary[i+1].vecPos; + g_obituary[i].vecSize = g_obituary[i+1].vecSize; + g_obituary[i].vecXY = g_obituary[i+1].vecXY; + g_obituary[i].vecWH = g_obituary[i+1].vecWH; + } + /* after rearranging, add the newest to the bottom. */ + g_obituary[x-1].strAttacker = attacker; + g_obituary[x-1].strVictim = victim; + Obituary_KillIcon(x-1, weapon); + } + + g_obituary_time = OBITUARY_TIME; +} + +void Obituary_Draw(void) +{ + int i; + vector vecPos; + drawfont = FONT_CON; + + vecPos = video_mins + [video_res[0] - 18, 56]; + + if (g_obituary_time <= 0 && g_obituary_count > 0) { + for (i = 0; i < (OBITUARY_LINES-1); i++) { + g_obituary[i].strAttacker = g_obituary[i+1].strAttacker; + g_obituary[i].strVictim = g_obituary[i+1].strVictim; + g_obituary[i].strImage = g_obituary[i+1].strImage; + g_obituary[i].vecPos = g_obituary[i+1].vecPos; + g_obituary[i].vecSize = g_obituary[i+1].vecSize; + g_obituary[i].vecXY = g_obituary[i+1].vecXY; + g_obituary[i].vecWH = g_obituary[i+1].vecWH; + } + g_obituary[OBITUARY_LINES-1].strAttacker = ""; + + g_obituary_time = OBITUARY_TIME; + g_obituary_count--; + } + + g_obituary_time -= clframetime; + + if (g_obituary_time <= 0) { + return; + } + + vector vecItem = vecPos; + for (i = 0; i < OBITUARY_LINES; i++) { + string a, v; + + if (!g_obituary[i].strAttacker) { + return; + } + + vecItem[0] = vecPos[0]; + + + v = g_obituary[i].strVictim; + drawstring_r(vecItem + [0,2], v, [12,12], [1,1,1], 1.0f, 0); + vecItem[0] -= stringwidth(v, TRUE, [12,12]) + 4; + + vecItem[0] -= g_obituary[i].vecSize[0]; + drawsubpic(vecItem, g_obituary[i].vecSize, g_obituary[i].strImage, g_obituary[i].vecXY, g_obituary[i].vecWH, g_hud_color, 1.0f, DRAWFLAG_ADDITIVE); + + a = g_obituary[i].strAttacker; + drawstring_r(vecItem + [-4,2], a, [12,12], [1,1,1], 1.0f, 0); + + vecItem[1] += 18; + } +} + +void +Obituary_Parse(void) +{ + string attacker; + string victim; + float weapon; + float flags; + + attacker = readstring(); + victim = readstring(); + weapon = readbyte(); + flags = readbyte(); + + Obituary_Add(attacker, victim, weapon, flags); +} diff --git a/src/client/rewolf/progs.src b/src/client/rewolf/progs.src index 40b5aed3..b98b70d9 100755 --- a/src/client/rewolf/progs.src +++ b/src/client/rewolf/progs.src @@ -38,23 +38,24 @@ decore.cpp ../../shared/decals.c ../../shared/effects.c ../../shared/spraylogo.cpp +../npc.c ../../shared/valve/items.h ../../shared/valve/weapons.h -../../shared/valve/w_crowbar.c -../../shared/valve/w_glock.c -../../shared/valve/w_python.c -../../shared/valve/w_mp5.c ../../shared/valve/w_crossbow.c -../../shared/valve/w_shotgun.c -../../shared/valve/w_rpg.c -../../shared/valve/w_gauss.c +../../shared/valve/w_crowbar.c ../../shared/valve/w_egon.c -../../shared/valve/w_hornetgun.c +../../shared/valve/w_gauss.c +../../shared/valve/w_glock.c ../../shared/valve/w_handgrenade.c -../../shared/valve/w_tripmine.c +../../shared/valve/w_hornetgun.c +../../shared/valve/w_mp5.c +../../shared/valve/w_python.c +../../shared/valve/w_rpg.c ../../shared/valve/w_satchel.c +../../shared/valve/w_shotgun.c ../../shared/valve/w_snark.c +../../shared/valve/w_tripmine.c ../../shared/valve/weapons.c ../../shared/valve/weapon_common.c @@ -68,6 +69,7 @@ decore.cpp ../valve/view.c ../view.c ../damage.c +../obituary.c ../chat.c ../vgui.cpp diff --git a/src/client/scihunt/init.c b/src/client/scihunt/init.c index f4b4a508..a7c81985 100644 --- a/src/client/scihunt/init.c +++ b/src/client/scihunt/init.c @@ -16,31 +16,6 @@ float(entity foo, float chanid) getchannellevel = #0; -/* This really shouldn't be here, but it'll be fine for the time being */ -.int initedsci; -float Scientist_PreDraw(void) -{ - /* Only do this once whenever the ent pops into view */ - if (!self.initedsci) { - setcustomskin(self, "", sprintf("geomset 1 %d\n", self.colormod[0])); - self.initedsci = TRUE; - } - - self.bonecontrol5 = getchannellevel(self, CHAN_VOICE) * 20; - - /* HACK: We're abusing this networked field, so reset */ - self.colormod = [0,0,0]; - addentity(self); - return PREDRAW_NEXT; -} -float Scientist_Update(float new) -{ - if (new) { - self.predraw = Scientist_PreDraw; - self.drawmask = MASK_ENGINE; - } - return TRUE; -} /* ================= @@ -62,9 +37,6 @@ void Client_Init(float apilevel, string enginename, float engineversion) precache_model("sprites/w_cannon.spr"); BEAM_TRIPMINE = particleeffectnum("beam_tripmine"); - - /* FIXME: Replace with manual networking once I've got time? */ - deltalisten("models/scientist.mdl", Scientist_Update, 0); } void Client_InitDone(void) diff --git a/src/client/scihunt/progs.src b/src/client/scihunt/progs.src index 27c9be9b..82b59eba 100644 --- a/src/client/scihunt/progs.src +++ b/src/client/scihunt/progs.src @@ -18,7 +18,6 @@ ../../vgui/include.src ../util.c -init.c ../../gs-entbase/client.src @@ -35,23 +34,25 @@ init.c ../../shared/decals.c ../../shared/effects.c ../../shared/spraylogo.cpp +../npc.c +init.c ../../shared/scihunt/items.h ../../shared/scihunt/weapons.h -../../shared/valve/w_crowbar.c -../../shared/valve/w_glock.c -../../shared/valve/w_python.c -../../shared/valve/w_mp5.c ../../shared/valve/w_crossbow.c -../../shared/valve/w_shotgun.c -../../shared/valve/w_rpg.c -../../shared/valve/w_gauss.c +../../shared/valve/w_crowbar.c ../../shared/valve/w_egon.c -../../shared/valve/w_hornetgun.c +../../shared/valve/w_gauss.c +../../shared/valve/w_glock.c ../../shared/valve/w_handgrenade.c -../../shared/valve/w_tripmine.c +../../shared/valve/w_hornetgun.c +../../shared/valve/w_mp5.c +../../shared/valve/w_python.c +../../shared/valve/w_rpg.c ../../shared/valve/w_satchel.c +../../shared/valve/w_shotgun.c ../../shared/valve/w_snark.c +../../shared/valve/w_tripmine.c ../../shared/scihunt/w_cannon.c ../../shared/scihunt/w_chainsaw.c ../../shared/scihunt/w_hammer.c @@ -68,6 +69,7 @@ init.c ../valve/view.c ../view.c ../damage.c +../obituary.c ../chat.c ../vgui.cpp diff --git a/src/client/util.c b/src/client/util.c index 9444cc79..18494cdb 100644 --- a/src/client/util.c +++ b/src/client/util.c @@ -18,6 +18,6 @@ void drawstring_r(vector p, string t, vector s, vector c, float a, float f) { - p[0] -= stringwidth(t, FALSE, s); + p[0] -= stringwidth(t, TRUE, s); drawstring(p, t, s, c, a, f); } diff --git a/src/client/valve/player.c b/src/client/valve/player.c index 9ef1b36b..8821c9f8 100644 --- a/src/client/valve/player.c +++ b/src/client/valve/player.c @@ -37,31 +37,30 @@ void Player_ReadEntity(float flIsNew) pl.drawmask = MASK_ENGINE; pl.customphysics = Empty; setsize( pl, VEC_HULL_MIN, VEC_HULL_MAX ); - - print(sprintf("Player %g is csqc ent %i\n", pl.entnum, pl)); - } - else - { - if (pl.entnum == player_localentnum) //FIXME: splitscreen - { - pSeat = &seats[0]; //FIXME: splitscreen - for (int i = pl.sequence+1; i <= servercommandframe; i++) - { - if (!getinputstate(i)) + } else { + int i; + //FIXME: splitscreen + if (pl.entnum == player_localentnum) { + //FIXME: splitscreen + pSeat = &seats[0]; + for (i = pl.sequence+1; i <= servercommandframe; i++) { + if (!getinputstate(i)) { break; //erk?... too old? + } input_sequence = i; QPhysics_Run(pl); } - //any differences in things that are read below are now officially from prediction misses. + /* any differences in things that are read below are now + * officially from prediction misses. */ } } - pl.sequence = servercommandframe; - pl.modelindex = readshort(); //make conditional + pl.sequence = servercommandframe; + pl.modelindex = readshort(); // TODO: make conditional pl.origin[0] = readcoord(); pl.origin[1] = readcoord(); - pl.origin[2] = readcoord(); //make conditional + pl.origin[2] = readcoord(); // TODO: make conditional pl.pitch = readfloat(); pl.angles[1] = readfloat(); pl.angles[2] = readfloat(); @@ -69,23 +68,23 @@ void Player_ReadEntity(float flIsNew) pl.velocity[1] = readcoord(); pl.velocity[2] = readcoord(); pl.flags = readfloat(); //make mostly conditional - pl.activeweapon = readbyte(); //make conditional + pl.activeweapon = readbyte(); // TODO: make conditional warnifdiff("weapontime", pl.weapontime, readfloat()); //remove - pl.g_items = readfloat(); //make conditional - pl.health = readbyte(); //make conditional - pl.armor = readbyte(); //make conditional - pl.movetype = readbyte(); //make conditional - pl.view_ofs[2] = readfloat(); //make conditional - pl.viewzoom = readfloat(); //remove? or make conditional + pl.g_items = readfloat(); // TODO: make conditional + pl.health = readbyte(); // TODO: make conditional + pl.armor = readbyte(); // TODO: make conditional + pl.movetype = readbyte(); // TODO: make conditional + pl.view_ofs[2] = readfloat(); // TODO: make conditional + pl.viewzoom = readfloat(); //remove? or make conditional warnifdiff("jumptime", pl.jumptime, readfloat()); //remove warnifdiff("teletime", pl.teleport_time, readfloat()); //remove - pl.baseframe = readbyte(); //make conditional - pl.frame = readbyte(); //make conditional + pl.baseframe = readbyte(); // TODO: make conditional + pl.frame = readbyte(); // TODO: make conditional - pl.a_ammo1 = readbyte(); //make conditional - pl.a_ammo2 = readbyte(); //make conditional - pl.a_ammo3 = readbyte(); //make conditional + pl.a_ammo1 = readbyte(); // TODO: make conditional + pl.a_ammo2 = readbyte(); // TODO: make conditional + pl.a_ammo3 = readbyte(); // TODO: make conditional warnifdiff("attack_next", pl.w_attack_next, readfloat()); //remove warnifdiff("idle_next", pl.w_idle_next, readfloat()); //remove setorigin( pl, pl.origin ); diff --git a/src/client/valve/progs.src b/src/client/valve/progs.src index ec8d8cd9..a39c3fa7 100755 --- a/src/client/valve/progs.src +++ b/src/client/valve/progs.src @@ -35,23 +35,24 @@ init.c ../../shared/decals.c ../../shared/effects.c ../../shared/spraylogo.cpp +../npc.c ../../shared/valve/items.h ../../shared/valve/weapons.h -../../shared/valve/w_crowbar.c -../../shared/valve/w_glock.c -../../shared/valve/w_python.c -../../shared/valve/w_mp5.c ../../shared/valve/w_crossbow.c -../../shared/valve/w_shotgun.c -../../shared/valve/w_rpg.c -../../shared/valve/w_gauss.c +../../shared/valve/w_crowbar.c ../../shared/valve/w_egon.c -../../shared/valve/w_hornetgun.c +../../shared/valve/w_gauss.c +../../shared/valve/w_glock.c ../../shared/valve/w_handgrenade.c -../../shared/valve/w_tripmine.c +../../shared/valve/w_hornetgun.c +../../shared/valve/w_mp5.c +../../shared/valve/w_python.c +../../shared/valve/w_rpg.c ../../shared/valve/w_satchel.c +../../shared/valve/w_shotgun.c ../../shared/valve/w_snark.c +../../shared/valve/w_tripmine.c ../../shared/valve/weapons.c ../../shared/valve/weapon_common.c @@ -65,6 +66,7 @@ game_event.c view.c ../view.c ../damage.c +../obituary.c ../chat.c ../vgui.cpp diff --git a/src/entities.h b/src/entities.h index 12b8fb24..0be4527a 100644 --- a/src/entities.h +++ b/src/entities.h @@ -16,6 +16,7 @@ enum { ENT_PLAYER = 1, + ENT_NPC, ENT_AMBIENTSOUND, ENT_SPRITE, ENT_SPRAY, diff --git a/src/gs-entbase/server/baseentity.cpp b/src/gs-entbase/server/baseentity.cpp index 309cbaa0..771ceb41 100644 --- a/src/gs-entbase/server/baseentity.cpp +++ b/src/gs-entbase/server/baseentity.cpp @@ -119,6 +119,7 @@ void CBaseEntity :: Respawn ( void ) void CBaseEntity :: Hide ( void ) { setmodel( this, "" ); + modelindex = 0; solid = SOLID_NOT; movetype = MOVETYPE_NONE; takedamage = DAMAGE_NO; diff --git a/src/menu-fn/entry.cpp b/src/menu-fn/entry.cpp index a4a6f300..c7d5de31 100644 --- a/src/menu-fn/entry.cpp +++ b/src/menu-fn/entry.cpp @@ -17,7 +17,7 @@ var int g_initialized = FALSE; const string LICENSE_TEXT = "\ -========================================================================\ +==============================================================================\ Copyright (c) 2016-2019 Marco Hladik \ \ Permission to use, copy, modify, and distribute this software for any\ @@ -31,7 +31,7 @@ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\ WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER\ IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING\ OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\ -========================================================================"; +=============================================================================="; void cvar_init(void) { @@ -134,10 +134,12 @@ void m_draw(vector screensize) oldtime = time; } -/*void m_drawloading(vector screensize, float opaque) +void m_drawloading(vector screensize, float opaque) { - -}*/ + vector pos; + pos = (screensize / 2) - [32,32]; + drawpic(pos, "gfx/lambda64", [64,64], [1,1,1], 1.0f); +} float Menu_InputEvent(float evtype, float scanx, float chary, float devid) { diff --git a/src/menu-fn/strings.cpp b/src/menu-fn/strings.cpp index 0208c931..6e4d1ce6 100644 --- a/src/menu-fn/strings.cpp +++ b/src/menu-fn/strings.cpp @@ -20,557 +20,557 @@ void Strings_Init(void) string lstline; /* Populate the strings array with default hl.exe values*/ - m_reslbl[IDS_LANGUAGE] = "English"; - m_reslbl[IDS_BORDERLESS_REGFAIL] = "Could not register Half-Life edit control class."; - m_reslbl[IDS_CHAT_IGNORE_MISLINKED] = "Ignoring mislinked chat room"; - m_reslbl[IDS_CHAT_IGNORE_UNLINKED] = "Ignoring unlinked chat room"; - m_reslbl[IDS_CREATE_MAPSCHANGED] = "The number of maps in the map directory changed."; - m_reslbl[IDS_CREATE_LIBLISTBAD] = "The file 'liblist.gam' in the game directory was malformed, see /valve/liblist.gam for format info."; - m_reslbl[IDS_SOCKET_CONNECTIONFAILURE] = "Your network connection may have failed, continuing anway..."; - m_reslbl[IDS_PLAYERINFO_NOMEM] = "Could not allocate memory for player information instance."; - m_reslbl[IDS_CHAT_NOCONNECTION] = "Could not create chat server connection."; - m_reslbl[IDS_CHAT_NOSTREAM] = "Could not create chat server data stream."; - m_reslbl[IDS_CHAT_NOSELECT] = "Could not prepare chat server client for connection."; - m_reslbl[IDS_CONTROLS_DELETE_LINKED] = "Deletion of linked key action item."; - m_reslbl[IDS_CONTROLS_KBLIST_EMPTY] = "Keyboard bindings file 'kb_act.lst' is empty."; - m_reslbl[IDS_CONTROLS_KBLIST_PARSEERROR] = "Error parsing bindings file 'kb_act.lst'."; - m_reslbl[IDS_CONTROLS_KBKEYS_EMPTY] = "Keyboard bindings file 'kb_keys.lst' is empty."; - m_reslbl[IDS_CONTROLS_KBKEYS_PARSEERROR] = "Error parsing file 'kb_keys.lst'."; - m_reslbl[IDS_CONTROLS_KBKEYS_OVERFLOW] = "Too many actions in file 'kb_keys.lst'."; - m_reslbl[IDS_PROFILE_COLOR] = "Colors"; - m_reslbl[IDS_MAIN_NOCAPS] = "Could not query graphics device capabilities."; - m_reslbl[IDS_MAIN_INSUFFICIENTCAPS] = "Your graphics card does not support a necessary raster operation."; - m_reslbl[IDS_MAIN_REGWNDCLSFAIL] = "Could not register Half-Life's window class."; - m_reslbl[IDS_MAIN_INSUFFICIENTSOCKETS] = "Insufficient number of windows sockets, networking may not operate correctly."; - m_reslbl[IDS_MAIN_MEMMAPFAILURE] = "Memory-mapped file i/o initialization failed."; - m_reslbl[IDS_PROFILE_NOMEM] = "Couldn't allocate memory for player profile, exiting."; - m_reslbl[IDS_BTN_STRANGESIZE] = "Button face bitmap graphics file sizes appear invalid."; - m_reslbl[IDS_MAIN_NOUSERMSGS] = "Could not register user messages."; - m_reslbl[IDS_MAIN_NOFILEMAPPING] = "Could not create file mapping to engine."; - m_reslbl[IDS_MAIN_NOMEMMAPCONNECT] = "Could not connect to server '%s'."; - m_reslbl[IDS_MSG_OVERFLOW] = "SZ_GetSpace overflow without m_bAllowOverflow set"; - m_reslbl[IDS_MSG_REQTOOBIG] = "SZ_GetSpace requested length is greater than available buffer size."; - m_reslbl[IDS_MULTI_NOROOMSTATIC] = "Could not allocate room static text control."; - m_reslbl[IDS_MULTI_NOROOMTAB] = "Could not allocate room tab control."; - m_reslbl[IDS_MULTI_NOCHATWINDOW] = "Could not allocate chat display window control."; - m_reslbl[IDS_MULTI_NOCHATINPUT] = "Could not allocate chat text input control."; - m_reslbl[IDS_MULTI_NOUSERLIST] = "Could not allocate chat user list control."; - m_reslbl[IDS_MULTI_NOSERVERLIST] = "Could not allocate server browser list control."; - m_reslbl[IDS_MULTI_NOSELECTION] = "No servers selected."; - m_reslbl[IDS_MULTI_NOARCHIVE] = "Half-Life could not open the server list archive file: '%s'."; - m_reslbl[IDS_CHAT_USER_NOMEM] = "Could not allocate space for new chat rrom user."; - m_reslbl[IDS_MULTI_SERVER_NOMEM] = "Could not allocate space for a new server."; - m_reslbl[IDS_MULTI_MASTER_BADLISTFILE] = "Could not open master server list file."; - m_reslbl[IDS_MULTI_NODIALOG] = "SetDialog with no dialog!"; - m_reslbl[IDS_PROFILE_REQUIRED] = "You must create or select a player profile to continue."; - m_reslbl[IDS_ODCOMBO_REGFAIL] = "Could not register Half-Life combobox class."; - m_reslbl[IDS_ODEDIT_REGFAIL] = "Could not register Half-Life edit control class."; - m_reslbl[IDS_ODLIST_REGFAIL] = "Could not register Half-Life list control class."; - m_reslbl[IDS_ODSCROLL_REGFAIL] = "Could not register Half-Life scrollbar class."; - m_reslbl[IDS_ODSLIDER_REGFAIL] = "Could not register Half-Life slider class."; - m_reslbl[IDS_ODTAB_REGFAIL] = "Could not register Half-Life tab control class."; - m_reslbl[IDS_PROFILE_NICKREMOVEFAIL] = "Could not remove chat nicknames."; - m_reslbl[IDS_PROFILE_NOPROFILE] = "No chosen profile."; - m_reslbl[IDS_QUICK_NOSERVERS] = "Could not locate any active %s servers with available slots."; - m_reslbl[IDS_QUICK_NOACTIVE] = "Could not connect to any active %s servers."; - m_reslbl[IDS_README_NOMEM] = "Could not allocate buffer for readme: %i bytes"; - m_reslbl[IDS_ROOM_BADNAME] = "The room name was invalid."; - m_reslbl[IDS_SINGLE_NOSELECTION] = "You must select a save game slot from the available slots."; - m_reslbl[IDS_SINGLE_CANTSAVE] = "You must be playing in a single player game to save."; - m_reslbl[IDS_ODLISTBOX_REGFAIL] = "Could not register Half-Life list box class."; - m_reslbl[IDS_DIB_OPENFAIL] = "Could not open bitmap file '%s'."; - m_reslbl[IDS_MCI_OPENFAIL] = "Could not open MCI file for playback: %s"; - m_reslbl[IDS_MCI_GETIDFAIL] = "Could not get MCI Device ID for MCI device"; - m_reslbl[IDS_MCI_WINDOWFAIL] = "Could not set up MCI window for playback of MCI device: %s"; - m_reslbl[IDS_MCI_PUTFAIL] = "Could not display MCI playback of MCI device in window: %s"; - m_reslbl[IDS_MCI_SEEKFAIL] = "Could not seek to start of MCI data: %s"; - m_reslbl[IDS_MCI_BREAKFAIL] = "Could not set break key on MCI data: %s"; - m_reslbl[IDS_MCI_PLAYFAIL] = "Could not start playback of MCI data: %s"; - m_reslbl[IDS_MCI_STOPFAIL] = "Could not stop playback of MCI data: %s"; - m_reslbl[IDS_MCI_CLOSEFAIL] = "Could not close MCI data: %s"; - m_reslbl[IDS_CONTROLS_RESTOREFAIL] = "Could not restore default bindings for player."; - m_reslbl[IDS_SND_BADNAME] = "Invalid sound name"; - m_reslbl[IDS_PROFILE_ALLOCFAIL] = "Could not allocate space for key binding"; - m_reslbl[IDS_AUDIO_NOPROFILE] = "Can't change audio settings without a current player profile."; - m_reslbl[IDS_VIDEO_NOPROFILE] = "Can't change video settings without a current player profile."; - m_reslbl[IDS_CONTROLS_KEYHELP] = "Use your mouse or the arrow keys to select an item. Double-click or press Enter to change an item. Press Delete to clear an item."; - m_reslbl[IDS_ENDDEMO_URL] = "valve/media/order/default.html"; - m_reslbl[IDS_ORDER_URL] = "valve/media/order/default.html"; - m_reslbl[IDS_LOADSAVE_HINT] = "During play, you can quickly save your game by pressing %s. Load this game again by pressing %s."; - m_reslbl[IDS_LAUNCHER_BUTTONSIZE] = "156 26"; - m_reslbl[IDS_MEM_INSUFFICIENT] = "Your system reported only %.2fK of physical memory, Half-Life requires at least 16MB."; - m_reslbl[IDS_MEM_ALLOCFAIL] = "Half-Life was unable to allocate %.2fK of memory."; - m_reslbl[IDS_EVENT_CREATEFAIL] = "Half-Life was unable to create a system object."; - m_reslbl[IDS_OSVER_FAIL] = "Half-Life was unable to retreive system information."; - m_reslbl[IDS_OSVER_OUTDATED] = "Half-Life requires Windows/95 or Windows/NT and above."; - m_reslbl[IDS_OSVER_NTSP3] = "Half-Life requires Service Pack 3 or above"; + m_reslbl[IDS_LANGUAGE] = "English"; + m_reslbl[IDS_BORDERLESS_REGFAIL] = "Could not register Half-Life edit control class."; + m_reslbl[IDS_CHAT_IGNORE_MISLINKED] = "Ignoring mislinked chat room"; + m_reslbl[IDS_CHAT_IGNORE_UNLINKED] = "Ignoring unlinked chat room"; + m_reslbl[IDS_CREATE_MAPSCHANGED] = "The number of maps in the map directory changed."; + m_reslbl[IDS_CREATE_LIBLISTBAD] = "The file 'liblist.gam' in the game directory was malformed, see /valve/liblist.gam for format info."; + m_reslbl[IDS_SOCKET_CONNECTIONFAILURE] = "Your network connection may have failed, continuing anway..."; + m_reslbl[IDS_PLAYERINFO_NOMEM] = "Could not allocate memory for player information instance."; + m_reslbl[IDS_CHAT_NOCONNECTION] = "Could not create chat server connection."; + m_reslbl[IDS_CHAT_NOSTREAM] = "Could not create chat server data stream."; + m_reslbl[IDS_CHAT_NOSELECT] = "Could not prepare chat server client for connection."; + m_reslbl[IDS_CONTROLS_DELETE_LINKED] = "Deletion of linked key action item."; + m_reslbl[IDS_CONTROLS_KBLIST_EMPTY] = "Keyboard bindings file 'kb_act.lst' is empty."; + m_reslbl[IDS_CONTROLS_KBLIST_PARSEERROR] = "Error parsing bindings file 'kb_act.lst'."; + m_reslbl[IDS_CONTROLS_KBKEYS_EMPTY] = "Keyboard bindings file 'kb_keys.lst' is empty."; + m_reslbl[IDS_CONTROLS_KBKEYS_PARSEERROR] = "Error parsing file 'kb_keys.lst'."; + m_reslbl[IDS_CONTROLS_KBKEYS_OVERFLOW] = "Too many actions in file 'kb_keys.lst'."; + m_reslbl[IDS_PROFILE_COLOR] = "Colors"; + m_reslbl[IDS_MAIN_NOCAPS] = "Could not query graphics device capabilities."; + m_reslbl[IDS_MAIN_INSUFFICIENTCAPS] = "Your graphics card does not support a necessary raster operation."; + m_reslbl[IDS_MAIN_REGWNDCLSFAIL] = "Could not register Half-Life's window class."; + m_reslbl[IDS_MAIN_INSUFFICIENTSOCKETS] = "Insufficient number of windows sockets, networking may not operate correctly."; + m_reslbl[IDS_MAIN_MEMMAPFAILURE] = "Memory-mapped file i/o initialization failed."; + m_reslbl[IDS_PROFILE_NOMEM] = "Couldn't allocate memory for player profile, exiting."; + m_reslbl[IDS_BTN_STRANGESIZE] = "Button face bitmap graphics file sizes appear invalid."; + m_reslbl[IDS_MAIN_NOUSERMSGS] = "Could not register user messages."; + m_reslbl[IDS_MAIN_NOFILEMAPPING] = "Could not create file mapping to engine."; + m_reslbl[IDS_MAIN_NOMEMMAPCONNECT] = "Could not connect to server '%s'."; + m_reslbl[IDS_MSG_OVERFLOW] = "SZ_GetSpace overflow without m_bAllowOverflow set"; + m_reslbl[IDS_MSG_REQTOOBIG] = "SZ_GetSpace requested length is greater than available buffer size."; + m_reslbl[IDS_MULTI_NOROOMSTATIC] = "Could not allocate room static text control."; + m_reslbl[IDS_MULTI_NOROOMTAB] = "Could not allocate room tab control."; + m_reslbl[IDS_MULTI_NOCHATWINDOW] = "Could not allocate chat display window control."; + m_reslbl[IDS_MULTI_NOCHATINPUT] = "Could not allocate chat text input control."; + m_reslbl[IDS_MULTI_NOUSERLIST] = "Could not allocate chat user list control."; + m_reslbl[IDS_MULTI_NOSERVERLIST] = "Could not allocate server browser list control."; + m_reslbl[IDS_MULTI_NOSELECTION] = "No servers selected."; + m_reslbl[IDS_MULTI_NOARCHIVE] = "Half-Life could not open the server list archive file: '%s'."; + m_reslbl[IDS_CHAT_USER_NOMEM] = "Could not allocate space for new chat rrom user."; + m_reslbl[IDS_MULTI_SERVER_NOMEM] = "Could not allocate space for a new server."; + m_reslbl[IDS_MULTI_MASTER_BADLISTFILE] = "Could not open master server list file."; + m_reslbl[IDS_MULTI_NODIALOG] = "SetDialog with no dialog!"; + m_reslbl[IDS_PROFILE_REQUIRED] = "You must create or select a player profile to continue."; + m_reslbl[IDS_ODCOMBO_REGFAIL] = "Could not register Half-Life combobox class."; + m_reslbl[IDS_ODEDIT_REGFAIL] = "Could not register Half-Life edit control class."; + m_reslbl[IDS_ODLIST_REGFAIL] = "Could not register Half-Life list control class."; + m_reslbl[IDS_ODSCROLL_REGFAIL] = "Could not register Half-Life scrollbar class."; + m_reslbl[IDS_ODSLIDER_REGFAIL] = "Could not register Half-Life slider class."; + m_reslbl[IDS_ODTAB_REGFAIL] = "Could not register Half-Life tab control class."; + m_reslbl[IDS_PROFILE_NICKREMOVEFAIL] = "Could not remove chat nicknames."; + m_reslbl[IDS_PROFILE_NOPROFILE] = "No chosen profile."; + m_reslbl[IDS_QUICK_NOSERVERS] = "Could not locate any active %s servers with available slots."; + m_reslbl[IDS_QUICK_NOACTIVE] = "Could not connect to any active %s servers."; + m_reslbl[IDS_README_NOMEM] = "Could not allocate buffer for readme: %i bytes"; + m_reslbl[IDS_ROOM_BADNAME] = "The room name was invalid."; + m_reslbl[IDS_SINGLE_NOSELECTION] = "You must select a save game slot from the available slots."; + m_reslbl[IDS_SINGLE_CANTSAVE] = "You must be playing in a single player game to save."; + m_reslbl[IDS_ODLISTBOX_REGFAIL] = "Could not register Half-Life list box class."; + m_reslbl[IDS_DIB_OPENFAIL] = "Could not open bitmap file '%s'."; + m_reslbl[IDS_MCI_OPENFAIL] = "Could not open MCI file for playback: %s"; + m_reslbl[IDS_MCI_GETIDFAIL] = "Could not get MCI Device ID for MCI device"; + m_reslbl[IDS_MCI_WINDOWFAIL] = "Could not set up MCI window for playback of MCI device: %s"; + m_reslbl[IDS_MCI_PUTFAIL] = "Could not display MCI playback of MCI device in window: %s"; + m_reslbl[IDS_MCI_SEEKFAIL] = "Could not seek to start of MCI data: %s"; + m_reslbl[IDS_MCI_BREAKFAIL] = "Could not set break key on MCI data: %s"; + m_reslbl[IDS_MCI_PLAYFAIL] = "Could not start playback of MCI data: %s"; + m_reslbl[IDS_MCI_STOPFAIL] = "Could not stop playback of MCI data: %s"; + m_reslbl[IDS_MCI_CLOSEFAIL] = "Could not close MCI data: %s"; + m_reslbl[IDS_CONTROLS_RESTOREFAIL] = "Could not restore default bindings for player."; + m_reslbl[IDS_SND_BADNAME] = "Invalid sound name"; + m_reslbl[IDS_PROFILE_ALLOCFAIL] = "Could not allocate space for key binding"; + m_reslbl[IDS_AUDIO_NOPROFILE] = "Can't change audio settings without a current player profile."; + m_reslbl[IDS_VIDEO_NOPROFILE] = "Can't change video settings without a current player profile."; + m_reslbl[IDS_CONTROLS_KEYHELP] = "Use your mouse or the arrow keys to select an item. Double-click or press Enter to change an item. Press Delete to clear an item."; + m_reslbl[IDS_ENDDEMO_URL] = "valve/media/order/default.html"; + m_reslbl[IDS_ORDER_URL] = "valve/media/order/default.html"; + m_reslbl[IDS_LOADSAVE_HINT] = "During play, you can quickly save your game by pressing %s. Load this game again by pressing %s."; + m_reslbl[IDS_LAUNCHER_BUTTONSIZE] = "156 26"; + m_reslbl[IDS_MEM_INSUFFICIENT] = "Your system reported only %.2fK of physical memory, Half-Life requires at least 16MB."; + m_reslbl[IDS_MEM_ALLOCFAIL] = "Half-Life was unable to allocate %.2fK of memory."; + m_reslbl[IDS_EVENT_CREATEFAIL] = "Half-Life was unable to create a system object."; + m_reslbl[IDS_OSVER_FAIL] = "Half-Life was unable to retreive system information."; + m_reslbl[IDS_OSVER_OUTDATED] = "Half-Life requires Windows/95 or Windows/NT and above."; + m_reslbl[IDS_OSVER_NTSP3] = "Half-Life requires Service Pack 3 or above"; //m_reslbl[IDS_OSVER_16BIT] = "Half-Life requires 16 bit color. Please change your desktop settings to HiColor. Sometimes this is called] = "";32767 colors";"; or] = "";65535 colors";";."; - m_reslbl[IDS_BINDING_ACTIONHEADING] = "Action"; - m_reslbl[IDS_BINDING_PRIMARYHEADING] = "Key / button"; - m_reslbl[IDS_BINDING_ALTERNATEHEADING] = "Alternate"; - m_reslbl[IDS_BINDING_PROMPT] = "Press a key or button."; - m_reslbl[IDS_URL_BROWSERFAIL] = "Half-Life was unable to display the web page '%s', please make sure you have a web browser installed and that the association for opening .htm files is valid."; - m_reslbl[IDS_SAVELOAD_TIMECOL] = "Time"; - m_reslbl[IDS_SAVELOAD_GAMECOL] = "Game"; - m_reslbl[IDS_SAVELOAD_ELAPSEDCOL] = "Elapsed Time"; - m_reslbl[IDS_SERVER_GAMESERVER] = "Game"; - m_reslbl[IDS_SERVER_SPEED] = "Net Spd"; - m_reslbl[IDS_SERVER_MAP] = "Map"; - m_reslbl[IDS_SERVER_PLAYERS] = "Players/Max"; - m_reslbl[IDS_SERVER_GAME] = "Game Type"; - m_reslbl[IDS_SERVER_NETWORK] = "Network"; - m_reslbl[IDS_QUERY_STARTING] = "Starting..."; - m_reslbl[IDS_QUERY_COMPLETED] = "%s completed."; - m_reslbl[IDS_SERVER_REMOVE] = "Permanently remove %i servers from list?"; - m_reslbl[IDS_SERVER_CONNECT] = "Initiating connection to %s..."; - m_reslbl[IDS_SERVER_LANTAG] = "Lan"; - m_reslbl[IDS_SERVER_INTERNETTAG] = "Internet"; - m_reslbl[IDS_SERVER_MENU_CONNECT] = "Connect"; - m_reslbl[IDS_SERVER_MENU_PLAYERINFO] = "Show player and rule information"; - m_reslbl[IDS_SERVER_MENU_RULEINFO] = "Show rule information"; - m_reslbl[IDS_SERVER_MENU_FILTER] = "Filter server"; - m_reslbl[IDS_SERVER_MENU_ADDTOFAVORITE] = "Add to favorites"; - m_reslbl[IDS_SERVER_MENU_REMOVEFROMFAV] = "Remove from favorites"; - m_reslbl[IDS_SERVER_MENU_REMOVE] = "Permanently remove server"; - m_reslbl[IDS_SERVER_MENU_NOPLAYERINFO] = "No player information available"; - m_reslbl[IDS_SERVER_MENU_NOLANPLAYERINFO] = "Player information is not available for Lan games"; - m_reslbl[IDS_SAVELOAD_QUICKLISTTEXT] = "[quick] %s"; - m_reslbl[IDS_SAVELOAD_AUTOLISTITEM] = "[autosave] %s"; - m_reslbl[IDS_PLAYERINFO_NUMBER] = "#"; - m_reslbl[IDS_PLAYERINFO_NAME] = "Player Name"; - m_reslbl[IDS_PLAYERINFO_KILLS] = "Kills"; - m_reslbl[IDS_PLAYERINFO_TIME] = "Time"; - m_reslbl[IDS_PLAYERINFO_SUIT] = "HEV Suit"; - m_reslbl[IDS_QUICK_REQUEST] = "Requesting list of servers..., %.2f seconds left"; - m_reslbl[IDS_QUICK_GOTLIST] = "List received..."; - m_reslbl[IDS_QUICK_CONTACTING] = "Contacting servers..."; - m_reslbl[IDS_QUICK_COMPLETEDSERVER] = "%s completed."; - m_reslbl[IDS_SAVE_NEWCOMMENT] = "New Saved Game"; - m_reslbl[IDS_SAVE_NEWTIME] = "New"; - m_reslbl[IDS_SAVE_NEWFILETIME] = "Current"; - m_reslbl[IDS_DDRAW_FAILEINIT] = "Direct Draw Init Failed (%08lx):%s\n"; - m_reslbl[IDS_DDRAW_DX4FAIL] = "Direct Draw 4 Init Failed (%08lx):%s\n"; - m_reslbl[IDS_VIDEO_MODECOL] = "Display mode"; - m_reslbl[IDS_ROOM_NAMECOL] = "Name"; - m_reslbl[IDS_ROOM_PEOPLECOL] = "People"; - m_reslbl[IDS_ROOM_SERVERSCOL] = "Servers"; - m_reslbl[IDS_DDRAW_REQUIRED] = "Half-Life requires DirectDraw"; - m_reslbl[IDS_DLL_LOADFAIL] = "Failed to load Engine DLL."; - m_reslbl[IDS_CMDLINE_VTOPTS] = "-vt requires one of software, gl, or d3d."; - m_reslbl[IDS_SAVE_NUMCHANGED] = "Number of saved games changed?"; - m_reslbl[IDS_BINDINGS_ALLOCFAIL] = "Unable to allocate space for binding"; - m_reslbl[IDS_GAMMA_LOADFAIL] = "Unable to locate the gamma image 'gamma.bmp'."; - m_reslbl[IDS_DDRAW_RESTOREMODEFAIL] = "Unable to restore DirectDraw video mode."; - m_reslbl[IDS_AUDIO_VOLUME] = "Game sound volume"; - m_reslbl[IDS_AUDIO_SUITVOL] = "HEV suit volume"; - m_reslbl[IDS_AUDIO_USECD] = "Play CD music."; - m_reslbl[IDS_AUDIO_HIGHQUALITY] = "High quality sound"; - m_reslbl[IDS_CFG_VIDHELP] = "Change screen size, video mode, gamma, and glare reduction."; - m_reslbl[IDS_CFG_AUDIOHELP] = "Change sound volume and quality."; - m_reslbl[IDS_CFG_CONTROLHELP] = "Change keyboard, mouse, and joystick settings."; - m_reslbl[IDS_CFG_RETURNTOMAIN] = "Go back to the Main Menu."; - m_reslbl[IDS_CREATEROOM_TITLE] = "Create Private Room"; - m_reslbl[IDS_CREATEROOM_ROOMNAME] = "Room Name"; - m_reslbl[IDS_CREATEROOM_ROOMTOPIC] = "Room Topic"; - m_reslbl[IDS_CREATESERVER_NAME] = "Server Name:"; - m_reslbl[IDS_CREATESERVER_MAP] = "Map:"; - m_reslbl[IDS_CREATESERVER_ROOM] = "Associated Room:"; - m_reslbl[IDS_CREATESERVER_GAMETYPE] = "Type of Game:"; - m_reslbl[IDS_CREATESERVER_MAXPLAYERS] = "Max. Players:"; - m_reslbl[IDS_FILTER_TITLE] = "Filter the list of Half-Life games"; - m_reslbl[IDS_FILTER_HEADING] = "Show only servers which:"; - m_reslbl[IDS_FILTER_RESPONDING] = "are responding"; - m_reslbl[IDS_FILTER_RESPONSETIME] = "responded more quickly than"; - m_reslbl[IDS_FILTER_NOTFULL] = "are not full"; - m_reslbl[IDS_FILTER_NOTEMPTY] = "have people currently playing"; - m_reslbl[IDS_FILTER_ONFAVORITES] = "are in my 'favorites' list"; - m_reslbl[IDS_FILTER_INCHATROOM] = "are associated with the selected chat room"; - m_reslbl[IDS_FINDPLAYER_PLAYER] = "Player to find:"; - m_reslbl[IDS_OPTS_CROSSHAIR] = "Crosshair"; - m_reslbl[IDS_OPTS_REVERSE] = "Reverse mouse"; - m_reslbl[IDS_OPTS_MLOOK] = "Mouse look"; - m_reslbl[IDS_OPTS_LOOKSPRING] = "Look spring"; - m_reslbl[IDS_OPTS_LOOKSTRAFE] = "Look strafe"; - m_reslbl[IDS_OPTS_MFILTER] = "Mouse filter"; - m_reslbl[IDS_OPTS_JOYSTICK] = "Joystick"; - m_reslbl[IDS_OPTS_CROSSHAIRHELP] = "Enable the weapon aiming crosshair."; - m_reslbl[IDS_OPTS_REVERSEHELP] = "Reverse mouse up/down axis."; - m_reslbl[IDS_OPTS_MLOOKHELP] = "Use the mouse to look around instead of using the mouse to move."; + m_reslbl[IDS_BINDING_ACTIONHEADING] = "Action"; + m_reslbl[IDS_BINDING_PRIMARYHEADING] = "Key / button"; + m_reslbl[IDS_BINDING_ALTERNATEHEADING] = "Alternate"; + m_reslbl[IDS_BINDING_PROMPT] = "Press a key or button."; + m_reslbl[IDS_URL_BROWSERFAIL] = "Half-Life was unable to display the web page '%s', please make sure you have a web browser installed and that the association for opening .htm files is valid."; + m_reslbl[IDS_SAVELOAD_TIMECOL] = "Time"; + m_reslbl[IDS_SAVELOAD_GAMECOL] = "Game"; + m_reslbl[IDS_SAVELOAD_ELAPSEDCOL] = "Elapsed Time"; + m_reslbl[IDS_SERVER_GAMESERVER] = "Game"; + m_reslbl[IDS_SERVER_SPEED] = "Net Spd"; + m_reslbl[IDS_SERVER_MAP] = "Map"; + m_reslbl[IDS_SERVER_PLAYERS] = "Players/Max"; + m_reslbl[IDS_SERVER_GAME] = "Game Type"; + m_reslbl[IDS_SERVER_NETWORK] = "Network"; + m_reslbl[IDS_QUERY_STARTING] = "Starting..."; + m_reslbl[IDS_QUERY_COMPLETED] = "%s completed."; + m_reslbl[IDS_SERVER_REMOVE] = "Permanently remove %i servers from list?"; + m_reslbl[IDS_SERVER_CONNECT] = "Initiating connection to %s..."; + m_reslbl[IDS_SERVER_LANTAG] = "Lan"; + m_reslbl[IDS_SERVER_INTERNETTAG] = "Internet"; + m_reslbl[IDS_SERVER_MENU_CONNECT] = "Connect"; + m_reslbl[IDS_SERVER_MENU_PLAYERINFO] = "Show player and rule information"; + m_reslbl[IDS_SERVER_MENU_RULEINFO] = "Show rule information"; + m_reslbl[IDS_SERVER_MENU_FILTER] = "Filter server"; + m_reslbl[IDS_SERVER_MENU_ADDTOFAVORITE] = "Add to favorites"; + m_reslbl[IDS_SERVER_MENU_REMOVEFROMFAV] = "Remove from favorites"; + m_reslbl[IDS_SERVER_MENU_REMOVE] = "Permanently remove server"; + m_reslbl[IDS_SERVER_MENU_NOPLAYERINFO] = "No player information available"; + m_reslbl[IDS_SERVER_MENU_NOLANPLAYERINFO] = "Player information is not available for Lan games"; + m_reslbl[IDS_SAVELOAD_QUICKLISTTEXT] = "[quick] %s"; + m_reslbl[IDS_SAVELOAD_AUTOLISTITEM] = "[autosave] %s"; + m_reslbl[IDS_PLAYERINFO_NUMBER] = "#"; + m_reslbl[IDS_PLAYERINFO_NAME] = "Player Name"; + m_reslbl[IDS_PLAYERINFO_KILLS] = "Kills"; + m_reslbl[IDS_PLAYERINFO_TIME] = "Time"; + m_reslbl[IDS_PLAYERINFO_SUIT] = "HEV Suit"; + m_reslbl[IDS_QUICK_REQUEST] = "Requesting list of servers..., %.2f seconds left"; + m_reslbl[IDS_QUICK_GOTLIST] = "List received..."; + m_reslbl[IDS_QUICK_CONTACTING] = "Contacting servers..."; + m_reslbl[IDS_QUICK_COMPLETEDSERVER] = "%s completed."; + m_reslbl[IDS_SAVE_NEWCOMMENT] = "New Saved Game"; + m_reslbl[IDS_SAVE_NEWTIME] = "New"; + m_reslbl[IDS_SAVE_NEWFILETIME] = "Current"; + m_reslbl[IDS_DDRAW_FAILEINIT] = "Direct Draw Init Failed (%08lx):%s\n"; + m_reslbl[IDS_DDRAW_DX4FAIL] = "Direct Draw 4 Init Failed (%08lx):%s\n"; + m_reslbl[IDS_VIDEO_MODECOL] = "Display mode"; + m_reslbl[IDS_ROOM_NAMECOL] = "Name"; + m_reslbl[IDS_ROOM_PEOPLECOL] = "People"; + m_reslbl[IDS_ROOM_SERVERSCOL] = "Servers"; + m_reslbl[IDS_DDRAW_REQUIRED] = "Half-Life requires DirectDraw"; + m_reslbl[IDS_DLL_LOADFAIL] = "Failed to load Engine DLL."; + m_reslbl[IDS_CMDLINE_VTOPTS] = "-vt requires one of software, gl, or d3d."; + m_reslbl[IDS_SAVE_NUMCHANGED] = "Number of saved games changed?"; + m_reslbl[IDS_BINDINGS_ALLOCFAIL] = "Unable to allocate space for binding"; + m_reslbl[IDS_GAMMA_LOADFAIL] = "Unable to locate the gamma image 'gamma.bmp'."; + m_reslbl[IDS_DDRAW_RESTOREMODEFAIL] = "Unable to restore DirectDraw video mode."; + m_reslbl[IDS_AUDIO_VOLUME] = "Game sound volume"; + m_reslbl[IDS_AUDIO_SUITVOL] = "HEV suit volume"; + m_reslbl[IDS_AUDIO_USECD] = "Play CD music."; + m_reslbl[IDS_AUDIO_HIGHQUALITY] = "High quality sound"; + m_reslbl[IDS_CFG_VIDHELP] = "Change screen size, video mode, gamma, and glare reduction."; + m_reslbl[IDS_CFG_AUDIOHELP] = "Change sound volume and quality."; + m_reslbl[IDS_CFG_CONTROLHELP] = "Change keyboard, mouse, and joystick settings."; + m_reslbl[IDS_CFG_RETURNTOMAIN] = "Go back to the Main Menu."; + m_reslbl[IDS_CREATEROOM_TITLE] = "Create Private Room"; + m_reslbl[IDS_CREATEROOM_ROOMNAME] = "Room Name"; + m_reslbl[IDS_CREATEROOM_ROOMTOPIC] = "Room Topic"; + m_reslbl[IDS_CREATESERVER_NAME] = "Server Name:"; + m_reslbl[IDS_CREATESERVER_MAP] = "Map:"; + m_reslbl[IDS_CREATESERVER_ROOM] = "Associated Room:"; + m_reslbl[IDS_CREATESERVER_GAMETYPE] = "Type of Game:"; + m_reslbl[IDS_CREATESERVER_MAXPLAYERS] = "Max. Players:"; + m_reslbl[IDS_FILTER_TITLE] = "Filter the list of Half-Life games"; + m_reslbl[IDS_FILTER_HEADING] = "Show only servers which:"; + m_reslbl[IDS_FILTER_RESPONDING] = "are responding"; + m_reslbl[IDS_FILTER_RESPONSETIME] = "responded more quickly than"; + m_reslbl[IDS_FILTER_NOTFULL] = "are not full"; + m_reslbl[IDS_FILTER_NOTEMPTY] = "have people currently playing"; + m_reslbl[IDS_FILTER_ONFAVORITES] = "are in my 'favorites' list"; + m_reslbl[IDS_FILTER_INCHATROOM] = "are associated with the selected chat room"; + m_reslbl[IDS_FINDPLAYER_PLAYER] = "Player to find:"; + m_reslbl[IDS_OPTS_CROSSHAIR] = "Crosshair"; + m_reslbl[IDS_OPTS_REVERSE] = "Reverse mouse"; + m_reslbl[IDS_OPTS_MLOOK] = "Mouse look"; + m_reslbl[IDS_OPTS_LOOKSPRING] = "Look spring"; + m_reslbl[IDS_OPTS_LOOKSTRAFE] = "Look strafe"; + m_reslbl[IDS_OPTS_MFILTER] = "Mouse filter"; + m_reslbl[IDS_OPTS_JOYSTICK] = "Joystick"; + m_reslbl[IDS_OPTS_CROSSHAIRHELP] = "Enable the weapon aiming crosshair."; + m_reslbl[IDS_OPTS_REVERSEHELP] = "Reverse mouse up/down axis."; + m_reslbl[IDS_OPTS_MLOOKHELP] = "Use the mouse to look around instead of using the mouse to move."; //m_reslbl[IDS_OPTS_LOOKSPRINGHELP] = "Causes the screen to] = "";spring";"; back to looking straight ahead when you move forward."; - m_reslbl[IDS_OPTS_LOOKSTRAFEHELP] = "In combination with your mouse look modifier, causes left-right movements to strafe instead of turn."; - m_reslbl[IDS_OPTS_MFILTERHELP] = "Average mouse inputs over the last two frames to smooth out movements."; - m_reslbl[IDS_OPTS_JOYSTICKHELP] = "Enable the joystick."; - m_reslbl[IDS_OPTS_SENSITIVITYHELP] = "Mouse sensitivity."; - m_reslbl[IDS_LOADSAVE_LOADHELP] = "Load a previously saved game"; - m_reslbl[IDS_LOADSAVE_SAVEHELP] = "Save current game."; - m_reslbl[IDS_LOADSAVE_RETURN] = "Go back to the Main Menu."; - m_reslbl[IDS_MAIN_RETURNHELP] = "Return to game."; - m_reslbl[IDS_MAIN_NEWGAMEHELP] = "Start a new game."; - m_reslbl[IDS_MAIN_TRAININGHELP] = sprintf("Learn how to play %s.", games[gameinfo_current].game); - m_reslbl[IDS_MAIN_LOADHELP] = "Load a previously saved game."; - m_reslbl[IDS_MAIN_LOADSAVEHELP] = "Load a saved game, save the current game."; - m_reslbl[IDS_MAIN_CONFIGUREHELP] = "Change game settings, configure controls."; - m_reslbl[IDS_MAIN_READMEHELP] = "View the Readme.txt file."; - m_reslbl[IDS_MAIN_ORDERHELP] = "Order the full version of Half-Life."; - m_reslbl[IDS_MAIN_QUITHELP] = sprintf("Quit playing %s.", games[gameinfo_current].game); - m_reslbl[IDS_MAIN_QUICKHELP] = "Connect to the fastest, active Internet game server found."; - m_reslbl[IDS_MAIN_MULTIPLAYERHELP] = sprintf("Search for %s servers, chat with other players, configure character.", games[gameinfo_current].game); - m_reslbl[IDS_CHAT_PROMPT] = "Type Message:"; - m_reslbl[IDS_NEWGAME_EASYHELP] = sprintf("Play %s on the 'easy' skill setting.", games[gameinfo_current].game); - m_reslbl[IDS_NEWGAME_MEDIUMHELP] = sprintf("Play %s on the 'medium' skill setting.", games[gameinfo_current].game); - m_reslbl[IDS_NEWGAME_DIFFICULTHELP] = sprintf("Play %s on the 'difficult' skill setting.", games[gameinfo_current].game); - m_reslbl[IDS_NEWGAME_RETURNHELP] = "Go back to the Main Menu."; - m_reslbl[IDS_NEWPROFILE_TITLE] = "Select Player"; - m_reslbl[IDS_NEWPROFILE_NAME] = "Na&me:"; - m_reslbl[IDS_NEWPROFILE_PASSWORD] = "Password:"; - m_reslbl[IDS_NEWPROFILE_REMEMBER] = "remember password"; - m_reslbl[IDS_PROFILE_MODEL] = "Player Model"; - m_reslbl[IDS_PROFILE_NICKNAME] = "Player Name"; - m_reslbl[IDS_PROFILE_SELECT] = "Player profile:"; - m_reslbl[IDS_PROFILE_PROCEEDHELP] = "Chat with users and browse for servers."; - m_reslbl[IDS_PROFILE_RETURNHELP] = "Go back to the Main Menu."; - m_reslbl[IDS_VIDEO_SCREENSIZE] = "Screen size"; - m_reslbl[IDS_VIDEO_GAMMA] = "Gamma"; - m_reslbl[IDS_VIDEO_GLARE] = "Glare reduction"; - m_reslbl[IDS_VIDEO_GAMMAHELP] = "Gamma: Adjusts Half-Life's color balance to best suit your monitor. Move the slider until you can just make out the figure standing in shadow on the right side of the sample image."; - m_reslbl[IDS_VIDEO_GLAREHELP] = "Glare Reduction: Adjusts darker colors to reduce the effect of glare on your monitor."; - m_reslbl[IDS_VIDMODE_WINDOWED] = "Run in a &window"; - m_reslbl[IDS_VIDMODE_MOUSE] = "&Use mouse"; - m_reslbl[IDS_VIDMODE_GLLISTHEADER] = "OpenGL Driver"; - m_reslbl[IDS_VIDMODE_D3DHEADER] = "D3D Device"; - m_reslbl[IDS_VIDSELECT_OPTIONSHELP] = "Set video options such as screen size, gamma, and glare reduction."; - m_reslbl[IDS_VIDSELECT_MODESHELP] = "Set video modes and configure 3D accelerators."; - m_reslbl[IDS_VIDSELECT_RETURNHELP] = "Go back to the previous menu."; - m_reslbl[IDS_SERVERS_REFRESH] = "Refreshing servers..."; - m_reslbl[IDS_PROGRESS_START] = "Start"; - m_reslbl[IDS_QUICK_CONTACT] = "Contacting servers..."; - m_reslbl[IDS_QUICK_REQUESTLIST] = "Requesting list of servers..."; - m_reslbl[IDS_README_NOFILE] = "Could not find readme.txt"; - m_reslbl[IDS_STATUS_CONNECTING] = "Connecting to server '%s'"; - m_reslbl[IDS_STATUS_CONNECTIONESTABLISHED] = "Connection established to %s, switching to game"; - m_reslbl[IDS_STATUS_SKIPSERVER] = "Skipping..."; - m_reslbl[IDS_STATUS_ELPASEDTIME] = "%s\n%3.1f Seconds Elapsed"; - m_reslbl[IDS_TRAINING_EXITCURRENT] = "Entering the Hazard Course will exit any current game, OK to exit?"; - m_reslbl[IDS_MAIN_QUITPROMPTINGAME] = sprintf("Quit %s without saving current game?", games[gameinfo_current].game); - m_reslbl[IDS_MAIN_QUITPROMPT] = "Are you sure you want to quit?"; - m_reslbl[IDS_CONTROLS_CANCELPROMPT] = "Exit without saving changes?"; - m_reslbl[IDS_LOAD_LOADPROMPT] = "Loading a game will exit any current game, OK to exit?"; - m_reslbl[IDS_LOADSAVE_DELETEPROMPT] = "Delete selected game?"; - m_reslbl[IDS_NEWGAME_NEWPROMPT] = "Starting a new game will exit any current game, OK to exit?"; - m_reslbl[IDS_NICKNAME_ADD] = "Enter a name:"; - m_reslbl[IDS_PROFILE_CANCELPROMPT] = "Save changes made to profile?"; - m_reslbl[IDS_SAVE_INGAMEPROMPT] = "Can't save, you are not currently playing a game."; - m_reslbl[IDS_SAVE_OVERWRITE] = "Are you sure you want to overwrite this saved game?"; - m_reslbl[IDS_VIDEO_BADSETTINGS] = "Your video settings do not appear to be valid, use these settings anyway?"; - m_reslbl[IDS_AUDIO_A3D] = "Enable A3D hardware support"; - m_reslbl[IDS_BTN_DONE] = "&Done"; - m_reslbl[IDS_BTN_CONTROLS] = "&Controls"; - m_reslbl[IDS_BTN_AUDIO] = "&Audio"; - m_reslbl[IDS_BTN_VIDEO] = "&Video"; - m_reslbl[IDS_BTN_CANCEL] = "&Cancel"; - m_reslbl[IDS_BTN_CREATE] = "Create &room"; - m_reslbl[IDS_BTN_FILTER] = "&Filter"; - m_reslbl[IDS_BTN_FIND] = "&Search"; - m_reslbl[IDS_BTN_RETURN] = "&Return"; - m_reslbl[IDS_BTN_NEWGAME] = "&New game"; - m_reslbl[IDS_BTN_TRAINING] = "&Hazard course"; - m_reslbl[IDS_BTN_CONFIGURE] = "&Configure"; - m_reslbl[IDS_BTN_LOADSAVE] = "&Save/load game"; - m_reslbl[IDS_BTN_LOAD] = "&Load game"; - m_reslbl[IDS_BTN_MULTIPLAYER] = "&Multiplayer"; - m_reslbl[IDS_BTN_README] = "&View readme"; - m_reslbl[IDS_BTN_ORDER] = "&Order"; - m_reslbl[IDS_BTN_QUIT] = "&Quit"; - m_reslbl[IDS_BTN_ADVANCED] = "&Advanced controls"; - m_reslbl[IDS_BTN_REVERT] = "&Cancel"; - m_reslbl[IDS_BTN_RESTORE] = "&Use defaults"; - m_reslbl[IDS_BTN_DELETE] = "&Delete"; - m_reslbl[IDS_BTN_SAVE] = "&Save game"; - m_reslbl[IDS_BTN_LOGIN] = "&Login"; - m_reslbl[IDS_BTN_CONNECT] = "&Connect"; - m_reslbl[IDS_BTN_CREATESV] = "Crea&te game"; - m_reslbl[IDS_BTN_REFRESH] = "&Refresh"; - m_reslbl[IDS_BTN_ROOM] = "&List rooms"; - m_reslbl[IDS_BTN_EASY] = "&Easy"; - m_reslbl[IDS_BTN_MEDIUM] = "&Medium"; - m_reslbl[IDS_BTN_HARD] = "&Difficult"; - m_reslbl[IDS_BTN_YES] = "&Yes"; - m_reslbl[IDS_BTN_NO] = "&No"; - m_reslbl[IDS_BTN_OK] = "&Ok"; - m_reslbl[IDS_BTN_OPTIONS] = "&Video options"; - m_reslbl[IDS_BTN_MODES] = "Video &modes"; - m_reslbl[IDS_BTN_QUICK] = "&Quick start"; - m_reslbl[IDS_PROFILE_LOGO] = "Spraypaint Image"; - m_reslbl[IDS_BTN_BROWSE] = "&Internet games"; - m_reslbl[IDS_MULTI_BROWSEHELP] = sprintf("View a list of %s game servers and join the one of your choice.", games[gameinfo_current].game); - m_reslbl[IDS_BTN_CHAT] = "C&hat rooms"; - m_reslbl[IDS_MULTI_CHATHELP] = sprintf("Talk online with other %s players.", games[gameinfo_current].game); - m_reslbl[IDS_BTN_LAN] = "&Lan game"; - m_reslbl[IDS_MULTI_LANHELP] = sprintf("Set up a %s game on a local area network.", games[gameinfo_current].game); - m_reslbl[IDS_BTN_CUSTOMIZE] = "C&ustomize"; - m_reslbl[IDS_MULTI_CUSTOMIZEHELP] = "Choose your player name, and select visual options for your character."; - m_reslbl[IDS_CREATEROOM_ROOMPASSWORD] = "Room Password (optional)"; - m_reslbl[IDS_PLAYERINFO_RULENAME] = "Server Rule"; - m_reslbl[IDS_PLAYERINFO_RULEVALUE] = "Value"; - m_reslbl[IDS_BTN_SEARCH] = "&Search for Game"; - m_reslbl[IDS_BTN_CHATMODE] = "Chat"; - m_reslbl[IDS_BTN_LISTMODE] = "&Internet games"; - m_reslbl[IDS_BTN_EXIT] = "&Exit"; - m_reslbl[IDS_SERVER_MANUALADD] = "Add a server by manually by IP address..."; - m_reslbl[IDS_SERVER_REQUESTNEWLIST] = "Request updated server list."; - m_reslbl[IDS_PLAYERINFO_SERVERNAME] = "Server hostname:"; - m_reslbl[IDS_PLAYERINFO_SERVERIP] = "Server IP address:"; - m_reslbl[IDS_PLAYERINFO_SERVERPING] = "Server 'ping' time:"; - m_reslbl[IDS_PROFILE_FACE] = "Player Face"; - m_reslbl[IDS_PROFILE_SKIN] = "Player Skin"; - m_reslbl[IDS_BTN_JOIN] = "&Join Game"; - m_reslbl[IDS_BTN_FINDGAME] = "&Find Game"; - m_reslbl[IDS_BTN_START] = "S&tart Game"; - m_reslbl[IDS_PROFILE_LOGOCOLOR] = "Color"; - m_reslbl[IDS_MULTI_RESUMEHELP] = "Return to your current muli-player game."; - m_reslbl[IDS_MULTI_DISCONNECTHELP] = "Disconnect yourself from the game server."; - m_reslbl[IDS_BTN_RESUME] = "Resume"; - m_reslbl[IDS_BTN_DISCONNECT] = "Disconnect"; - m_reslbl[IDS_BTN_ADDSERVER] = "&Add server"; - m_reslbl[IDS_BTN_UPDATE] = "&Update"; - m_reslbl[IDS_BTN_INFO] = "&View game info"; - m_reslbl[IDS_QUICKSTART_TITLE] = "Quick multiplayer"; - m_reslbl[IDS_BTN_LISTROOMS] = "&List rooms"; - m_reslbl[IDS_BTN_GORE] = "C&ontent control"; - m_reslbl[IDS_BTN_AUTOPATCH] = "&Update Half-Life."; - m_reslbl[IDS_CONFIGURE_GOREHELP] = "Disable visuals inappropriate for younger players and multiplayer."; - m_reslbl[IDS_CONFIGURE_AUTOPATCHHELP] = "Download the latest version of Half-Life."; - m_reslbl[IDS_CHAT_NOSERVERS] = "Could not locate any Frag-Net servers."; - m_reslbl[IDS_CHAT_NOPROFILE] = "Couldn't locate player profile"; - m_reslbl[IDS_INIT_DX6REQUIRED] = "Half-Life requires DirectX version 6 or above. Please install DirectX 6 and restart Half-Life."; - m_reslbl[IDS_WON_VALIDATIONFAIL] = "Validation refused\n'%s'"; - m_reslbl[IDS_WON_VALIDATIONFAIL2] = "Validation refused."; - m_reslbl[IDS_WON_AUTHOUTOFORDER] = "Authentication out of order (1)."; - m_reslbl[IDS_WON_AUTHPROBLEM] = "Authentication problem (2)"; - m_reslbl[IDS_WON_ENCRYPTBAD] = "Error creating message (1)."; - m_reslbl[IDS_WON_BADPUBLICKEY] = "Invalid signal from authentication server (1)."; - m_reslbl[IDS_WON_AUTHNOMEM] = "Insufficient memory to receive authentication response."; - m_reslbl[IDS_CD_NEEDCDKEY] = "You must type in a valid CD Key to play Half-Life"; - m_reslbl[IDS_CD_BADKEY] = "The CD Key you typed was invalid, please try again"; - m_reslbl[IDS_CD_BADKEYTYPED] = "Your CD Key is invalid, please reenter the CD key"; - m_reslbl[IDS_MD5_HASHFAIL] = "Could not validate Half-Life"; - m_reslbl[IDS_MAIN_REGISTERMSGFAIL] = "Couldn't register Half-Life user message"; - m_reslbl[IDS_CDCHECK_PROMPT] = "Please Insert the Half-Life CD"; - m_reslbl[IDS_SETTINGS_SERVERTYPEINVALID] = "Bogus list type in %s"; - m_reslbl[IDS_TOKEN_EXPECTLEFTBRACE] = "Expecting { in %s"; - m_reslbl[IDS_TOKEN_EXPECTRIGHTBRACE] = "Expecting } in %s"; - m_reslbl[IDS_MULTI_ADDIPUNRESOLVABLE] = "That IP address could not be resolved."; - m_reslbl[IDS_CHATCTRL_NOMEM] = "Couldn't allocate space for user name"; - m_reslbl[IDS_CHATCTRL_NOTEXTMEM] = "Couldn't allocate space for chat text"; - m_reslbl[IDS_CHATCTRL_WINREGFAIL] = "Couldn't register chat edit control"; - m_reslbl[IDS_PROFILE_DEFAULTMISSING] = "Could not find default keybinding file %s"; - m_reslbl[IDS_QUICK_NOMASTER] = "Unable to retrieve server list, check that your internet connection is active"; - m_reslbl[IDS_QUICK_USINGPREVIOUSLIST] = "Unable to reach master, using previous list..."; - m_reslbl[IDS_CHAT_NOROOMLIST] = "Could not obtain room list"; - m_reslbl[IDS_SAVELOAD_NUMBEROFGAMESCHANGED] = "Number of saved games changed?"; - m_reslbl[IDS_MAIN_EXITMULTIPLAYERPROMPT] = "Entering the multiplayer system will terminate your current single player game, OK to exit without saving?"; - m_reslbl[IDS_CD_ENTERPROMPT] = "Please type in the CD Key displayed on the Half-Life CD case"; - m_reslbl[IDS_MULTISELECT_EXITGAMEPROMPT] = "Exiting the multiplayer system will terminate your current multiplayer game, OK to exit?"; - m_reslbl[IDS_MULTI_ADDSERVERPROMPT] = "Enter server Internet address\r\n(e.g., 209.255.10.255:27015)"; - m_reslbl[IDS_ROOM_NEEDPASS] = "Enter room password:"; - m_reslbl[IDS_SAVE_CANTSAVE] = "Can't save, you are not currently playing a game."; - m_reslbl[IDS_SAVE_OVERWRITEPROMPT] = "Are you sure you want to overwrite this saved game?"; - m_reslbl[IDS_SAVE_DELETEPROMPT] = "Delete selected game?"; - m_reslbl[IDS_AUTH_INUSE] = "Account in use"; - m_reslbl[IDS_AUTH_BADACCOUNT] = "Invalid account"; - m_reslbl[IDS_AUTH_BADREQ] = "Invalid server request"; - m_reslbl[IDS_AUTH_BADCERTIFICATE] = "Invalid client certificate"; - m_reslbl[IDS_AUTH_BADEXE] = "Invalid client value"; - m_reslbl[IDS_AUTH_BADCERTIFICATE2] = "Invalid client certificate"; - m_reslbl[IDS_AUTH_BADLOOKUP] = "Invalid client lookup value"; - m_reslbl[IDS_AUTH_BADBITS] = "Invalid client authentication value"; - m_reslbl[IDS_AUTH_CORRUPT] = "Corrupt executable"; - m_reslbl[IDS_AUTH_INVALIDACCOUNT] = "Unknown account error"; - m_reslbl[IDS_CHAT_STATUSUNCONNECTED] = "Unconnected."; - m_reslbl[IDS_CHAT_WONCONNECT] = "Attempting connection..."; - m_reslbl[IDS_CHAT_USERENTER] = "%s entered...\r\n"; - m_reslbl[IDS_CHAT_USERLEFT] = "%s left...\r\n"; - m_reslbl[IDS_ENG_STARTING] = "Starting engine..."; - m_reslbl[IDS_SERVERS_SEARCHING] = "Searching for servers..."; - m_reslbl[IDS_SERVERS_LISTREC] = "Got Server List..."; - m_reslbl[IDS_SERVERS_CONNECTING] = "Connecting to servers..."; - m_reslbl[IDS_SERVERS_REQUESTINFO] = "Requesting server information"; - m_reslbl[IDS_ROOM_CREATENOTICE] = "Creating room '%s', please wait"; - m_reslbl[IDS_ROOM_CREATEPROMPTTITLE] = "Creating room"; - m_reslbl[IDS_SAVE_TIMEHEADING] = "Time"; - m_reslbl[IDS_SAVE_GAMEHEADING] = "Game"; - m_reslbl[IDS_SAVE_ELAPSEDHEADING] = "Elapsed Time"; - m_reslbl[IDS_SAVE_NEWCAPTION] = "New Saved Game"; - m_reslbl[IDS_SAVE_NEWGAMETXT] = "New"; - m_reslbl[IDS_SAVE_FILETIME] = "Current"; - m_reslbl[IDS_STATUS_CONNECTINGNOTIME] = "Connecting to server '%s'...\n\n%s"; - m_reslbl[IDS_MULTI_CHATROOMCAPTION] = "Room:"; - m_reslbl[IDS_GORE_CHECKBOX] = "Activate content control"; - m_reslbl[IDS_GORE_HELP] = "Check this box and enter password to disable visuals inappropriate for younger players and multiplayer. Anyone wishing to change this setting will need to use this password."; - m_reslbl[IDS_GORE_PWPROMPT1] = "Enter password:"; - m_reslbl[IDS_GORE_PWPROMPT2] = "Enter again to confirm:"; - m_reslbl[IDS_GORE_PWMISMATCHED] = "The passwords you entered did not match, please try again."; - m_reslbl[IDS_GORE_BADPW] = "Incorrect password"; - m_reslbl[IDS_BTN_ADVANCEDSVR] = "&Advanced options"; - m_reslbl[IDS_OPTS_AUTOAIM] = "Autoaim"; - m_reslbl[IDS_OPTS_AUTOAIMHELP] = "Allow Half-Life to help you aim at enemies."; - m_reslbl[IDS_BTN_PREVIEWS] = "&Previews"; - m_reslbl[IDS_MAIN_PREVIEWSHELP] = "Find out more about Valve's product lineup."; - m_reslbl[IDS_SECONDS_LEFT] = "%i seconds left..."; - m_reslbl[IDS_MEDIA_PREVIEWURL] = "http://www.valvesoftware.com/projects.htm"; - m_reslbl[IDS_ADVANCEDSVR_PAGE] = "Page %i of %i"; - m_reslbl[IDS_EMPTY] = ""; - m_reslbl[IDS_MULTI_TYPE] = "Internet Connection Speed"; - m_reslbl[IDS_MULTI_LAN] = "LAN - T1 > 1M"; - m_reslbl[IDS_MULTI_ISDN] = "ISDN - 112K"; - m_reslbl[IDS_MODEM56K] = "Modem - 56K"; - m_reslbl[IDS_MODEM28K] = "Modem - 28.8K"; - m_reslbl[IDS_OPTS_HIMODELS] = "&High quality models (for fast computers)"; - m_reslbl[IDS_OPTS_HIMODELSHELP] = ""; - m_reslbl[IDS_CHAT_SOCKETERROR] = "Chat connection problem, retrying connection..."; - m_reslbl[IDS_CHAT_RECONNECTFAIL] = "Reconnection to chat failed, please verify that you are connected to the internet and try again."; - m_reslbl[IDS_CHAT_RECONNECTSUCCESS] = "Reconnected..."; - m_reslbl[IDS_CHAT_JOINFAILED] = "Could not join room '%s'. Click 'List rooms' to select a different room."; - m_reslbl[IDS_BTN_WON] = "Visit &FRAG-NET.COM"; - m_reslbl[IDS_WON_URL] = "www.frag-net.com"; - m_reslbl[IDS_AUDIO_CDHINT] = "Set CD volume with the Windows multimedia accessory for volume control."; - m_reslbl[IDS_PREVIOUS] = "Previous"; - m_reslbl[IDS_NEXT] = "Next"; - m_reslbl[IDS_MODEM33K] = "Modem - 33.6K"; - m_reslbl[IDS_MODEM14K] = "Modem - 14.4K"; - m_reslbl[IDS_ROOM_PERMANENT] = "Permanent rooms"; - m_reslbl[IDS_ROOM_USER] = "User-created rooms"; - m_reslbl[IDS_MULTI_DONEHELP] = "Go back to the Main Menu."; - m_reslbl[IDS_MULTI_WONHELP] = "Go to the Frag-Net."; - m_reslbl[IDS_AUDIO_EAX] = "Enable EAX hardware support"; - m_reslbl[IDS_GL_NOMODE] = "The selected OpenGL mode is not supported by your video card."; - m_reslbl[IDS_D3D_NOMODE] = "The selected D3D mode is not supported by your video card."; - m_reslbl[IDS_VID_NOMODE] = "The selected video mode is not available."; - m_reslbl[IDS_VID_RESELECT] = "Please select a different video mode."; - m_reslbl[IDS_VID_INITFAIL] = "The video subsystem could not be initialized."; - m_reslbl[IDS_NET_WONCONNFAIL] = "Could not connect to the Frag-Net server. Please check your internet connection."; - m_reslbl[IDS_NET_CORRUPT] = "Your Half-Life executable is out of date. Half-Life will now update to the current version."; - m_reslbl[IDS_CDKEY_BAD] = "Your Half-Life CD Key is invalid."; - m_reslbl[IDS_MULTI_REFRESH] = "Requesting server information"; - m_reslbl[IDS_CHAT_NOROOM] = "Not connected"; - m_reslbl[IDS_RUN_PATCH] = "Check the Internet for updates?"; - m_reslbl[IDS_WON_AUTHFAILURE] = "Unable to authenticate with Frag-Net servers."; - m_reslbl[IDS_WON_LOGIN] = "Logging on to Frag-Net"; - m_reslbl[IDS_LOGO_SIZEMISMATCH] = "Custom logos must have the same width and height."; - m_reslbl[IDS_LOGO_OVERSIZED] = "Custom logos can be no larger than 64 x 64 pixels."; - m_reslbl[IDS_LOGO_POWEROF2] = "Custom logo width and height must be 2, 4, 8, 16, 32, ro 64."; - m_reslbl[IDS_MODEM_CUSTOM] = "Custom"; - m_reslbl[IDS_MODEM_RATE] = "Enter data transfer rate ( 100 - 9999 )"; - m_reslbl[IDS_REGISTRY_UPDATE] = "Updating registry settings for Half-Life. You will need to reconfigure your settings."; - m_reslbl[IDS_CHAT_JOIN] = "Tyring to join %s"; - m_reslbl[IDS_CHAT_FLOOD] = "Too much text, please wait."; - m_reslbl[IDS_CHAT_SEARCH] = "Searching for user %s..."; - m_reslbl[IDS_CHAT_NOINFO] = "Directory server did not return any user information."; - m_reslbl[IDS_CHAT_NOFIND] = "Couldn't find user %s"; - m_reslbl[IDS_CHAT_FIND] = "Found %s in %s"; - m_reslbl[IDS_CHAT_NOAUTH] = "Could not obtain authentication information"; - m_reslbl[IDS_CHAT_NODIR] = "Server did not return any directory information."; - m_reslbl[IDS_CHAT_NOSUCHROOM] = "Could not find room %s"; - m_reslbl[IDS_CHAT_ROOMFULL] = "Can't join %s..., room has too many users ( %i ), try again later"; - m_reslbl[IDS_CREATESV_NOADVANCED] = "No advanced options available"; - m_reslbl[IDS_WON_CDINUSE] = "Your Half-Life CD Key is currently in use. Please try again later."; - m_reslbl[IDS_CHAT_JOINHINT] = "Type /join [roomname] to join another chat room."; - m_reslbl[IDS_WON_BANNED] = "Your CD key cannot be used on the Frag-Net system."; - m_reslbl[IDS_CONTENT_NOMULTIPLAYER] = "Content control configuration - on"; - m_reslbl[IDS_PATCH_ERROR] = "Half-Life AutoPatch Error"; - m_reslbl[IDS_PATCH_NOUTIL] = "Sierra Utilites are not properly installed. Please reinstall from the CD."; - m_reslbl[IDS_PATCH_FAIL] = "Could Not Run the AutoPatch Program"; - m_reslbl[IDS_PATCH_BADINSTALL] = "Half-Life is not properly Installed"; - m_reslbl[IDS_CONNECT_FAILURE] = "Could not connect to game server\r\nReason: %s"; - m_reslbl[IDS_MULTI_NEEDPASSWORD] = "Password required, please enter a password to try connecting again."; - m_reslbl[IDS_VID_HINT] = "640 x 480 is recommended as the most reliable OpenGL mode. Other modes are hardware dependent and may not be available on your card.\n\nIf you have a 3D card that incorporates the Voodoo, Voodoo 2, or Banshee chipsets, select the 3DFX Mini Driver as your OpenGL Driver."; - m_reslbl[IDS_MULTI_LOGODISCONNECT] = "Changing your logo will terminate your current multiplayer game, OK to exit?"; - m_reslbl[IDS_3D_WARNING] = "For 3D support, Half-Life requires the current versions of device drivers on your system. The 3D Info link will help you ensure you have the correct drivers."; - m_reslbl[IDS_3DSITE_URL] = "www.sierrastudios.com/games/half-life/support/3Dinfo/"; - m_reslbl[IDS_WON_MODIFIED] = "Your Half-Life executable has been modified. Please check your system for viruses and then re-install Half-Life."; - m_reslbl[IDS_ADVANCEDMP_OFFSETS] = "0"; - m_reslbl[IDS_AUDIO_OFFSET] = "0 0 0 0"; - m_reslbl[IDS_CONFIGURE_OFFSET] = "0 0"; - m_reslbl[IDS_CREATEROOM_OFFSET] = "0"; - m_reslbl[IDS_CREATESERVER_OFFSET] = "0"; - m_reslbl[IDS_GAMEOPTIONS_OFFSET] = "0 0 0 0"; - m_reslbl[IDS_HLMAIN_OFFSET] = "0"; - m_reslbl[IDS_KEYBOARD_OFFSET] = "0"; - m_reslbl[IDS_LAN_OFFSET] = "110 50 75 80 70"; - m_reslbl[IDS_LOAD_OFFSET] = "0 0"; - m_reslbl[IDS_NETGAMEDLG_OFFSET] = "0 0 0"; - m_reslbl[IDS_NEWGAMEDLG_OFFSET] = "0"; - m_reslbl[IDS_PLAYERINFODLG_OFFSET] = "0"; - m_reslbl[IDS_PLAYERPROFILEDLG_OFFSET] = "0 0"; - m_reslbl[IDS_PROMPT_OFFSET] = "0 0"; - m_reslbl[IDS_ROOM_OFFSET] = "0"; - m_reslbl[IDS_VIDEODLG_OFFSET] = "0"; - m_reslbl[IDS_VIDEOMODEDLG_OFFSET] = "0 0"; - m_reslbl[IDS_VIDSELECTDLG_OFFSET] = "0 0"; - m_reslbl[IDS_UPDATERREGISTRYINSTALLDIR] = "HALFLIFE"; - m_reslbl[IDS_SPANISH] = "0"; - m_reslbl[IDS_FRENCH] = "0"; - m_reslbl[IDS_OPTS_JLOOKHELP] = "Use the joystick to look around instead of using the joystick to move."; - m_reslbl[IDS_OPTS_JLOOK] = "Joystick look"; - m_reslbl[IDS_GERMAN] = "0"; - m_reslbl[IDS_CONNECT_PROTOCOLBAD] = "You cannot connect to a server which is operating under a different protocol version."; - m_reslbl[IDS_SERVER_MENU_QUICK] = "Sort list using best server estimate"; - m_reslbl[IDS_DECAL_LIMIT] = "Maximum number of decals in multiplayer."; - m_reslbl[IDS_SPRITE_SKIP] = "Draw faster software sprites"; - m_reslbl[IDS_MODEL_NAME] = "Player Model: %s"; - m_reslbl[IDS_FILTER_BYGAME] = "are running game "; - m_reslbl[IDS_BTN_SETINFO] = "&Advanced options"; - m_reslbl[IDS_MODLIST_TYPE] = "Type"; - m_reslbl[IDS_MODLIST_NAME] = "Name"; - m_reslbl[IDS_MODLIST_VERSION] = "Version"; - m_reslbl[IDS_MODLIST_SIZE] = "Size"; - m_reslbl[IDS_MODLIST_RATING] = "Rating"; - m_reslbl[IDS_MODLIST_INSTALLED] = "Installed"; - m_reslbl[IDS_MODLIST_SERVERS] = "Servers"; - m_reslbl[IDS_MODLIST_PLAYERS] = "Players"; - m_reslbl[IDS_MOD_DOWNLOADING] = "Downloading '%s'"; - m_reslbl[IDS_MOD_DLSIZEMB] = "Total download size for game %s\r\n%.2fmb"; - m_reslbl[IDS_MOD_DLSIZEKB] = "Total download size for game %s\r\n%.0fkb"; - m_reslbl[IDS_MOD_DLSTATUS] = "Downloading %s from\r\n%s\r\nFile: %s\r\n%.0f%%"; - m_reslbl[IDS_MOD_TIME] = "%.1f seconds"; - m_reslbl[IDS_MOD_CONNECT] = "Connecting to %s"; - m_reslbl[IDS_MOD_GETTINGSIZE] = "Getting download size"; - m_reslbl[IDS_MOD_DLSTATUSSHORT] = "Downloading %s from\r\n%s"; - m_reslbl[IDS_MOD_NOFILES] = "Nothing to download"; - m_reslbl[IDS_MOD_NOLIBLIST] = "Could not find liblist.gam file on remote host\r\nDouble check that %s is a valid custom game site"; - m_reslbl[IDS_INTERNET_CURRENTTOTALS] = "%i servers ( %i players online )"; - m_reslbl[IDS_SERVER_REFRESH] = "Refresh selected server"; - m_reslbl[IDS_CONNECT_NEEDMOD] = "You cannot connect to a server running custom game %s until you install the custom game"; - m_reslbl[IDS_MOD_REMOTEOPENFAIL] = "Could not open %s on remote machine"; - m_reslbl[IDS_MOD_LOCALOPENFAIL] = "Could not open %s on local machine"; - m_reslbl[IDS_BTN_CUSTOMGAME] = "C&ustom game"; - m_reslbl[IDS_MAIN_CUSTOMHELP] = "Select a custom game, search the Internet for custom games"; - m_reslbl[IDS_BTN_ACTIVATE] = "&Activate"; - m_reslbl[IDS_BTN_INSTALL] = "&Install"; - m_reslbl[IDS_BTN_DETAILS] = "Details"; - m_reslbl[IDS_BTN_VISIT] = "&Visit web site"; - m_reslbl[IDS_BTN_REFRESHMODS] = "&Refresh list"; - m_reslbl[IDS_BTN_DEACTIVATE] = "D&eactivate"; - m_reslbl[IDS_MOD_INFO] = "Info:"; - m_reslbl[IDS_YES] = "Yes"; - m_reslbl[IDS_NO] = "No"; - m_reslbl[IDS_UPDATE] = "Update"; - m_reslbl[IDS_MODREQ_TITLE] = "Requesting custom game info"; - m_reslbl[IDS_DOWNLOAD_WARNING] = "You are about to download a custom game. Downloading a custom game for Half-Life has the same issues and risks as downloading any program from the Internet. They could contain viruses, have bugs that will crash your system causing you to lose unsaved work, or could perform operations that might harm your computer.\r\nYou can disable this warning by checking the \"Don't show this warning again\" checkbox at the bottom of this form."; - m_reslbl[IDS_WARN_CHECKPROMPT] = "Don't show this warning again"; - m_reslbl[IDS_MOD_VERSION] = "Custom game '%s' has a new version available, are you sure you want to select it before installing the updated version?"; - m_reslbl[IDS_MOD_REINSTALL] = "Custom game %s is already installed, are you sure you want to re-install?"; - m_reslbl[IDS_WARN_TITLE] = "Custom game download"; - m_reslbl[IDS_MOD_ENGINEVERSION] = "Custom game '%s' was created for a different version of Half-Life than the current version you have installed. Are you sure you want to select it before installing the updated version?"; - m_reslbl[IDS_MOD_CONNVERSION] = "You cannot connect to a server running version %i of custom game '%s' until you upgrade to that version. Your current version is %i"; - m_reslbl[IDS_CONNHLVERSION] = "You are attempting to connect to a server running game '%s' for Half-Life version %s. Your current version of Half-Life is %s. Continue anyway?"; - m_reslbl[IDS_MOD_NOTINSTALLED] = "Can't activate custom game '%s', you must install the custom game first."; - m_reslbl[IDS_REFRESH_SERVERS] = "%i servers remaining"; - m_reslbl[IDS_DEDICATED] = "Dedicated server (faster, but you can't join the server from this machine)."; - m_reslbl[IDS_MOD_MODVERSION] = "You are attempting to connect to a server running version %i of the game '%s', but you only have version %i installed. Continue anyway?"; - m_reslbl[IDS_CONN_FULL] = "Can't connect to %s, server is full."; - m_reslbl[IDS_MOD_UNZIP] = "Do you want to uncompress the files for game '%s'?"; - m_reslbl[IDS_FAVSVRS_CORRUPT] = "The server data file favsvrs.dat appears to be corrupt.\r\n\r\nYou can request a new list of servers by pressing the Update button.\r\n\r\nDo you want to remove the corrupt file ( you will have to re-enter your 'favorites' if you remove the file )?"; + m_reslbl[IDS_OPTS_LOOKSTRAFEHELP] = "In combination with your mouse look modifier, causes left-right movements to strafe instead of turn."; + m_reslbl[IDS_OPTS_MFILTERHELP] = "Average mouse inputs over the last two frames to smooth out movements."; + m_reslbl[IDS_OPTS_JOYSTICKHELP] = "Enable the joystick."; + m_reslbl[IDS_OPTS_SENSITIVITYHELP] = "Mouse sensitivity."; + m_reslbl[IDS_LOADSAVE_LOADHELP] = "Load a previously saved game"; + m_reslbl[IDS_LOADSAVE_SAVEHELP] = "Save current game."; + m_reslbl[IDS_LOADSAVE_RETURN] = "Go back to the Main Menu."; + m_reslbl[IDS_MAIN_RETURNHELP] = "Return to game."; + m_reslbl[IDS_MAIN_NEWGAMEHELP] = "Start a new game."; + m_reslbl[IDS_MAIN_TRAININGHELP] = sprintf("Learn how to play %s.", games[gameinfo_current].game); + m_reslbl[IDS_MAIN_LOADHELP] = "Load a previously saved game."; + m_reslbl[IDS_MAIN_LOADSAVEHELP] = "Load a saved game, save the current game."; + m_reslbl[IDS_MAIN_CONFIGUREHELP] = "Change game settings, configure controls."; + m_reslbl[IDS_MAIN_READMEHELP] = "View the Readme.txt file."; + m_reslbl[IDS_MAIN_ORDERHELP] = "Order the full version of Half-Life."; + m_reslbl[IDS_MAIN_QUITHELP] = sprintf("Quit playing %s.", games[gameinfo_current].game); + m_reslbl[IDS_MAIN_QUICKHELP] = "Connect to the fastest, active Internet game server found."; + m_reslbl[IDS_MAIN_MULTIPLAYERHELP] = sprintf("Search for %s servers, chat with other players, configure character.", games[gameinfo_current].game); + m_reslbl[IDS_CHAT_PROMPT] = "Type Message:"; + m_reslbl[IDS_NEWGAME_EASYHELP] = sprintf("Play %s on the 'easy' skill setting.", games[gameinfo_current].game); + m_reslbl[IDS_NEWGAME_MEDIUMHELP] = sprintf("Play %s on the 'medium' skill setting.", games[gameinfo_current].game); + m_reslbl[IDS_NEWGAME_DIFFICULTHELP] = sprintf("Play %s on the 'difficult' skill setting.", games[gameinfo_current].game); + m_reslbl[IDS_NEWGAME_RETURNHELP] = "Go back to the Main Menu."; + m_reslbl[IDS_NEWPROFILE_TITLE] = "Select Player"; + m_reslbl[IDS_NEWPROFILE_NAME] = "Na&me:"; + m_reslbl[IDS_NEWPROFILE_PASSWORD] = "Password:"; + m_reslbl[IDS_NEWPROFILE_REMEMBER] = "remember password"; + m_reslbl[IDS_PROFILE_MODEL] = "Player Model"; + m_reslbl[IDS_PROFILE_NICKNAME] = "Player Name"; + m_reslbl[IDS_PROFILE_SELECT] = "Player profile:"; + m_reslbl[IDS_PROFILE_PROCEEDHELP] = "Chat with users and browse for servers."; + m_reslbl[IDS_PROFILE_RETURNHELP] = "Go back to the Main Menu."; + m_reslbl[IDS_VIDEO_SCREENSIZE] = "Screen size"; + m_reslbl[IDS_VIDEO_GAMMA] = "Gamma"; + m_reslbl[IDS_VIDEO_GLARE] = "Glare reduction"; + m_reslbl[IDS_VIDEO_GAMMAHELP] = "Gamma: Adjusts Half-Life's color balance to best suit your monitor. Move the slider until you can just make out the figure standing in shadow on the right side of the sample image."; + m_reslbl[IDS_VIDEO_GLAREHELP] = "Glare Reduction: Adjusts darker colors to reduce the effect of glare on your monitor."; + m_reslbl[IDS_VIDMODE_WINDOWED] = "Run in a &window"; + m_reslbl[IDS_VIDMODE_MOUSE] = "&Use mouse"; + m_reslbl[IDS_VIDMODE_GLLISTHEADER] = "OpenGL Driver"; + m_reslbl[IDS_VIDMODE_D3DHEADER] = "D3D Device"; + m_reslbl[IDS_VIDSELECT_OPTIONSHELP] = "Set video options such as screen size, gamma, and glare reduction."; + m_reslbl[IDS_VIDSELECT_MODESHELP] = "Set video modes and configure 3D accelerators."; + m_reslbl[IDS_VIDSELECT_RETURNHELP] = "Go back to the previous menu."; + m_reslbl[IDS_SERVERS_REFRESH] = "Refreshing servers..."; + m_reslbl[IDS_PROGRESS_START] = "Start"; + m_reslbl[IDS_QUICK_CONTACT] = "Contacting servers..."; + m_reslbl[IDS_QUICK_REQUESTLIST] = "Requesting list of servers..."; + m_reslbl[IDS_README_NOFILE] = "Could not find readme.txt"; + m_reslbl[IDS_STATUS_CONNECTING] = "Connecting to server '%s'"; + m_reslbl[IDS_STATUS_CONNECTIONESTABLISHED] = "Connection established to %s, switching to game"; + m_reslbl[IDS_STATUS_SKIPSERVER] = "Skipping..."; + m_reslbl[IDS_STATUS_ELPASEDTIME] = "%s\n%3.1f Seconds Elapsed"; + m_reslbl[IDS_TRAINING_EXITCURRENT] = "Entering the Hazard Course will exit any current game, OK to exit?"; + m_reslbl[IDS_MAIN_QUITPROMPTINGAME] = sprintf("Quit %s without saving current game?", games[gameinfo_current].game); + m_reslbl[IDS_MAIN_QUITPROMPT] = "Are you sure you want to quit?"; + m_reslbl[IDS_CONTROLS_CANCELPROMPT] = "Exit without saving changes?"; + m_reslbl[IDS_LOAD_LOADPROMPT] = "Loading a game will exit any current game, OK to exit?"; + m_reslbl[IDS_LOADSAVE_DELETEPROMPT] = "Delete selected game?"; + m_reslbl[IDS_NEWGAME_NEWPROMPT] = "Starting a new game will exit any current game, OK to exit?"; + m_reslbl[IDS_NICKNAME_ADD] = "Enter a name:"; + m_reslbl[IDS_PROFILE_CANCELPROMPT] = "Save changes made to profile?"; + m_reslbl[IDS_SAVE_INGAMEPROMPT] = "Can't save, you are not currently playing a game."; + m_reslbl[IDS_SAVE_OVERWRITE] = "Are you sure you want to overwrite this saved game?"; + m_reslbl[IDS_VIDEO_BADSETTINGS] = "Your video settings do not appear to be valid, use these settings anyway?"; + m_reslbl[IDS_AUDIO_A3D] = "Enable A3D hardware support"; + m_reslbl[IDS_BTN_DONE] = "&Done"; + m_reslbl[IDS_BTN_CONTROLS] = "&Controls"; + m_reslbl[IDS_BTN_AUDIO] = "&Audio"; + m_reslbl[IDS_BTN_VIDEO] = "&Video"; + m_reslbl[IDS_BTN_CANCEL] = "&Cancel"; + m_reslbl[IDS_BTN_CREATE] = "Create &room"; + m_reslbl[IDS_BTN_FILTER] = "&Filter"; + m_reslbl[IDS_BTN_FIND] = "&Search"; + m_reslbl[IDS_BTN_RETURN] = "&Return"; + m_reslbl[IDS_BTN_NEWGAME] = "&New game"; + m_reslbl[IDS_BTN_TRAINING] = "&Hazard course"; + m_reslbl[IDS_BTN_CONFIGURE] = "&Configure"; + m_reslbl[IDS_BTN_LOADSAVE] = "&Save/load game"; + m_reslbl[IDS_BTN_LOAD] = "&Load game"; + m_reslbl[IDS_BTN_MULTIPLAYER] = "&Multiplayer"; + m_reslbl[IDS_BTN_README] = "&View readme"; + m_reslbl[IDS_BTN_ORDER] = "&Order"; + m_reslbl[IDS_BTN_QUIT] = "&Quit"; + m_reslbl[IDS_BTN_ADVANCED] = "&Advanced controls"; + m_reslbl[IDS_BTN_REVERT] = "&Cancel"; + m_reslbl[IDS_BTN_RESTORE] = "&Use defaults"; + m_reslbl[IDS_BTN_DELETE] = "&Delete"; + m_reslbl[IDS_BTN_SAVE] = "&Save game"; + m_reslbl[IDS_BTN_LOGIN] = "&Login"; + m_reslbl[IDS_BTN_CONNECT] = "&Connect"; + m_reslbl[IDS_BTN_CREATESV] = "Crea&te game"; + m_reslbl[IDS_BTN_REFRESH] = "&Refresh"; + m_reslbl[IDS_BTN_ROOM] = "&List rooms"; + m_reslbl[IDS_BTN_EASY] = "&Easy"; + m_reslbl[IDS_BTN_MEDIUM] = "&Medium"; + m_reslbl[IDS_BTN_HARD] = "&Difficult"; + m_reslbl[IDS_BTN_YES] = "&Yes"; + m_reslbl[IDS_BTN_NO] = "&No"; + m_reslbl[IDS_BTN_OK] = "&Ok"; + m_reslbl[IDS_BTN_OPTIONS] = "&Video options"; + m_reslbl[IDS_BTN_MODES] = "Video &modes"; + m_reslbl[IDS_BTN_QUICK] = "&Quick start"; + m_reslbl[IDS_PROFILE_LOGO] = "Spraypaint Image"; + m_reslbl[IDS_BTN_BROWSE] = "&Internet games"; + m_reslbl[IDS_MULTI_BROWSEHELP] = sprintf("View a list of %s game servers and join the one of your choice.", games[gameinfo_current].game); + m_reslbl[IDS_BTN_CHAT] = "C&hat rooms"; + m_reslbl[IDS_MULTI_CHATHELP] = sprintf("Talk online with other %s players.", games[gameinfo_current].game); + m_reslbl[IDS_BTN_LAN] = "&Lan game"; + m_reslbl[IDS_MULTI_LANHELP] = sprintf("Set up a %s game on a local area network.", games[gameinfo_current].game); + m_reslbl[IDS_BTN_CUSTOMIZE] = "C&ustomize"; + m_reslbl[IDS_MULTI_CUSTOMIZEHELP] = "Choose your player name, and select visual options for your character."; + m_reslbl[IDS_CREATEROOM_ROOMPASSWORD] = "Room Password (optional)"; + m_reslbl[IDS_PLAYERINFO_RULENAME] = "Server Rule"; + m_reslbl[IDS_PLAYERINFO_RULEVALUE] = "Value"; + m_reslbl[IDS_BTN_SEARCH] = "&Search for Game"; + m_reslbl[IDS_BTN_CHATMODE] = "Chat"; + m_reslbl[IDS_BTN_LISTMODE] = "&Internet games"; + m_reslbl[IDS_BTN_EXIT] = "&Exit"; + m_reslbl[IDS_SERVER_MANUALADD] = "Add a server by manually by IP address..."; + m_reslbl[IDS_SERVER_REQUESTNEWLIST] = "Request updated server list."; + m_reslbl[IDS_PLAYERINFO_SERVERNAME] = "Server hostname:"; + m_reslbl[IDS_PLAYERINFO_SERVERIP] = "Server IP address:"; + m_reslbl[IDS_PLAYERINFO_SERVERPING] = "Server 'ping' time:"; + m_reslbl[IDS_PROFILE_FACE] = "Player Face"; + m_reslbl[IDS_PROFILE_SKIN] = "Player Skin"; + m_reslbl[IDS_BTN_JOIN] = "&Join Game"; + m_reslbl[IDS_BTN_FINDGAME] = "&Find Game"; + m_reslbl[IDS_BTN_START] = "S&tart Game"; + m_reslbl[IDS_PROFILE_LOGOCOLOR] = "Color"; + m_reslbl[IDS_MULTI_RESUMEHELP] = "Return to your current muli-player game."; + m_reslbl[IDS_MULTI_DISCONNECTHELP] = "Disconnect yourself from the game server."; + m_reslbl[IDS_BTN_RESUME] = "Resume"; + m_reslbl[IDS_BTN_DISCONNECT] = "Disconnect"; + m_reslbl[IDS_BTN_ADDSERVER] = "&Add server"; + m_reslbl[IDS_BTN_UPDATE] = "&Update"; + m_reslbl[IDS_BTN_INFO] = "&View game info"; + m_reslbl[IDS_QUICKSTART_TITLE] = "Quick multiplayer"; + m_reslbl[IDS_BTN_LISTROOMS] = "&List rooms"; + m_reslbl[IDS_BTN_GORE] = "C&ontent control"; + m_reslbl[IDS_BTN_AUTOPATCH] = "&Update Half-Life."; + m_reslbl[IDS_CONFIGURE_GOREHELP] = "Disable visuals inappropriate for younger players and multiplayer."; + m_reslbl[IDS_CONFIGURE_AUTOPATCHHELP] = "Download the latest version of Half-Life."; + m_reslbl[IDS_CHAT_NOSERVERS] = "Could not locate any Frag-Net servers."; + m_reslbl[IDS_CHAT_NOPROFILE] = "Couldn't locate player profile"; + m_reslbl[IDS_INIT_DX6REQUIRED] = "Half-Life requires DirectX version 6 or above. Please install DirectX 6 and restart Half-Life."; + m_reslbl[IDS_WON_VALIDATIONFAIL] = "Validation refused\n'%s'"; + m_reslbl[IDS_WON_VALIDATIONFAIL2] = "Validation refused."; + m_reslbl[IDS_WON_AUTHOUTOFORDER] = "Authentication out of order (1)."; + m_reslbl[IDS_WON_AUTHPROBLEM] = "Authentication problem (2)"; + m_reslbl[IDS_WON_ENCRYPTBAD] = "Error creating message (1)."; + m_reslbl[IDS_WON_BADPUBLICKEY] = "Invalid signal from authentication server (1)."; + m_reslbl[IDS_WON_AUTHNOMEM] = "Insufficient memory to receive authentication response."; + m_reslbl[IDS_CD_NEEDCDKEY] = "You must type in a valid CD Key to play Half-Life"; + m_reslbl[IDS_CD_BADKEY] = "The CD Key you typed was invalid, please try again"; + m_reslbl[IDS_CD_BADKEYTYPED] = "Your CD Key is invalid, please reenter the CD key"; + m_reslbl[IDS_MD5_HASHFAIL] = "Could not validate Half-Life"; + m_reslbl[IDS_MAIN_REGISTERMSGFAIL] = "Couldn't register Half-Life user message"; + m_reslbl[IDS_CDCHECK_PROMPT] = "Please Insert the Half-Life CD"; + m_reslbl[IDS_SETTINGS_SERVERTYPEINVALID] = "Bogus list type in %s"; + m_reslbl[IDS_TOKEN_EXPECTLEFTBRACE] = "Expecting { in %s"; + m_reslbl[IDS_TOKEN_EXPECTRIGHTBRACE] = "Expecting } in %s"; + m_reslbl[IDS_MULTI_ADDIPUNRESOLVABLE] = "That IP address could not be resolved."; + m_reslbl[IDS_CHATCTRL_NOMEM] = "Couldn't allocate space for user name"; + m_reslbl[IDS_CHATCTRL_NOTEXTMEM] = "Couldn't allocate space for chat text"; + m_reslbl[IDS_CHATCTRL_WINREGFAIL] = "Couldn't register chat edit control"; + m_reslbl[IDS_PROFILE_DEFAULTMISSING] = "Could not find default keybinding file %s"; + m_reslbl[IDS_QUICK_NOMASTER] = "Unable to retrieve server list, check that your internet connection is active"; + m_reslbl[IDS_QUICK_USINGPREVIOUSLIST] = "Unable to reach master, using previous list..."; + m_reslbl[IDS_CHAT_NOROOMLIST] = "Could not obtain room list"; + m_reslbl[IDS_SAVELOAD_NUMBEROFGAMESCHANGED] = "Number of saved games changed?"; + m_reslbl[IDS_MAIN_EXITMULTIPLAYERPROMPT] = "Entering the multiplayer system will terminate your current single player game, OK to exit without saving?"; + m_reslbl[IDS_CD_ENTERPROMPT] = "Please type in the CD Key displayed on the Half-Life CD case"; + m_reslbl[IDS_MULTISELECT_EXITGAMEPROMPT] = "Exiting the multiplayer system will terminate your current multiplayer game, OK to exit?"; + m_reslbl[IDS_MULTI_ADDSERVERPROMPT] = "Enter server Internet address\r\n(e.g., 209.255.10.255:27015)"; + m_reslbl[IDS_ROOM_NEEDPASS] = "Enter room password:"; + m_reslbl[IDS_SAVE_CANTSAVE] = "Can't save, you are not currently playing a game."; + m_reslbl[IDS_SAVE_OVERWRITEPROMPT] = "Are you sure you want to overwrite this saved game?"; + m_reslbl[IDS_SAVE_DELETEPROMPT] = "Delete selected game?"; + m_reslbl[IDS_AUTH_INUSE] = "Account in use"; + m_reslbl[IDS_AUTH_BADACCOUNT] = "Invalid account"; + m_reslbl[IDS_AUTH_BADREQ] = "Invalid server request"; + m_reslbl[IDS_AUTH_BADCERTIFICATE] = "Invalid client certificate"; + m_reslbl[IDS_AUTH_BADEXE] = "Invalid client value"; + m_reslbl[IDS_AUTH_BADCERTIFICATE2] = "Invalid client certificate"; + m_reslbl[IDS_AUTH_BADLOOKUP] = "Invalid client lookup value"; + m_reslbl[IDS_AUTH_BADBITS] = "Invalid client authentication value"; + m_reslbl[IDS_AUTH_CORRUPT] = "Corrupt executable"; + m_reslbl[IDS_AUTH_INVALIDACCOUNT] = "Unknown account error"; + m_reslbl[IDS_CHAT_STATUSUNCONNECTED] = "Unconnected."; + m_reslbl[IDS_CHAT_WONCONNECT] = "Attempting connection..."; + m_reslbl[IDS_CHAT_USERENTER] = "%s entered...\r\n"; + m_reslbl[IDS_CHAT_USERLEFT] = "%s left...\r\n"; + m_reslbl[IDS_ENG_STARTING] = "Starting engine..."; + m_reslbl[IDS_SERVERS_SEARCHING] = "Searching for servers..."; + m_reslbl[IDS_SERVERS_LISTREC] = "Got Server List..."; + m_reslbl[IDS_SERVERS_CONNECTING] = "Connecting to servers..."; + m_reslbl[IDS_SERVERS_REQUESTINFO] = "Requesting server information"; + m_reslbl[IDS_ROOM_CREATENOTICE] = "Creating room '%s', please wait"; + m_reslbl[IDS_ROOM_CREATEPROMPTTITLE] = "Creating room"; + m_reslbl[IDS_SAVE_TIMEHEADING] = "Time"; + m_reslbl[IDS_SAVE_GAMEHEADING] = "Game"; + m_reslbl[IDS_SAVE_ELAPSEDHEADING] = "Elapsed Time"; + m_reslbl[IDS_SAVE_NEWCAPTION] = "New Saved Game"; + m_reslbl[IDS_SAVE_NEWGAMETXT] = "New"; + m_reslbl[IDS_SAVE_FILETIME] = "Current"; + m_reslbl[IDS_STATUS_CONNECTINGNOTIME] = "Connecting to server '%s'...\n\n%s"; + m_reslbl[IDS_MULTI_CHATROOMCAPTION] = "Room:"; + m_reslbl[IDS_GORE_CHECKBOX] = "Activate content control"; + m_reslbl[IDS_GORE_HELP] = "Check this box and enter password to disable visuals inappropriate for younger players and multiplayer. Anyone wishing to change this setting will need to use this password."; + m_reslbl[IDS_GORE_PWPROMPT1] = "Enter password:"; + m_reslbl[IDS_GORE_PWPROMPT2] = "Enter again to confirm:"; + m_reslbl[IDS_GORE_PWMISMATCHED] = "The passwords you entered did not match, please try again."; + m_reslbl[IDS_GORE_BADPW] = "Incorrect password"; + m_reslbl[IDS_BTN_ADVANCEDSVR] = "&Advanced options"; + m_reslbl[IDS_OPTS_AUTOAIM] = "Autoaim"; + m_reslbl[IDS_OPTS_AUTOAIMHELP] = "Allow Half-Life to help you aim at enemies."; + m_reslbl[IDS_BTN_PREVIEWS] = "&Previews"; + m_reslbl[IDS_MAIN_PREVIEWSHELP] = "Find out more about Valve's product lineup."; + m_reslbl[IDS_SECONDS_LEFT] = "%i seconds left..."; + m_reslbl[IDS_MEDIA_PREVIEWURL] = "http://www.valvesoftware.com/projects.htm"; + m_reslbl[IDS_ADVANCEDSVR_PAGE] = "Page %i of %i"; + m_reslbl[IDS_EMPTY] = ""; + m_reslbl[IDS_MULTI_TYPE] = "Internet Connection Speed"; + m_reslbl[IDS_MULTI_LAN] = "LAN - T1 > 1M"; + m_reslbl[IDS_MULTI_ISDN] = "ISDN - 112K"; + m_reslbl[IDS_MODEM56K] = "Modem - 56K"; + m_reslbl[IDS_MODEM28K] = "Modem - 28.8K"; + m_reslbl[IDS_OPTS_HIMODELS] = "&High quality models (for fast computers)"; + m_reslbl[IDS_OPTS_HIMODELSHELP] = ""; + m_reslbl[IDS_CHAT_SOCKETERROR] = "Chat connection problem, retrying connection..."; + m_reslbl[IDS_CHAT_RECONNECTFAIL] = "Reconnection to chat failed, please verify that you are connected to the internet and try again."; + m_reslbl[IDS_CHAT_RECONNECTSUCCESS] = "Reconnected..."; + m_reslbl[IDS_CHAT_JOINFAILED] = "Could not join room '%s'. Click 'List rooms' to select a different room."; + m_reslbl[IDS_BTN_WON] = "Visit &FRAG-NET.COM"; + m_reslbl[IDS_WON_URL] = "www.frag-net.com"; + m_reslbl[IDS_AUDIO_CDHINT] = "Set CD volume with the Windows multimedia accessory for volume control."; + m_reslbl[IDS_PREVIOUS] = "Previous"; + m_reslbl[IDS_NEXT] = "Next"; + m_reslbl[IDS_MODEM33K] = "Modem - 33.6K"; + m_reslbl[IDS_MODEM14K] = "Modem - 14.4K"; + m_reslbl[IDS_ROOM_PERMANENT] = "Permanent rooms"; + m_reslbl[IDS_ROOM_USER] = "User-created rooms"; + m_reslbl[IDS_MULTI_DONEHELP] = "Go back to the Main Menu."; + m_reslbl[IDS_MULTI_WONHELP] = "Go to the Frag-Net."; + m_reslbl[IDS_AUDIO_EAX] = "Enable EAX hardware support"; + m_reslbl[IDS_GL_NOMODE] = "The selected OpenGL mode is not supported by your video card."; + m_reslbl[IDS_D3D_NOMODE] = "The selected D3D mode is not supported by your video card."; + m_reslbl[IDS_VID_NOMODE] = "The selected video mode is not available."; + m_reslbl[IDS_VID_RESELECT] = "Please select a different video mode."; + m_reslbl[IDS_VID_INITFAIL] = "The video subsystem could not be initialized."; + m_reslbl[IDS_NET_WONCONNFAIL] = "Could not connect to the Frag-Net server. Please check your internet connection."; + m_reslbl[IDS_NET_CORRUPT] = "Your Half-Life executable is out of date. Half-Life will now update to the current version."; + m_reslbl[IDS_CDKEY_BAD] = "Your Half-Life CD Key is invalid."; + m_reslbl[IDS_MULTI_REFRESH] = "Requesting server information"; + m_reslbl[IDS_CHAT_NOROOM] = "Not connected"; + m_reslbl[IDS_RUN_PATCH] = "Check the Internet for updates?"; + m_reslbl[IDS_WON_AUTHFAILURE] = "Unable to authenticate with Frag-Net servers."; + m_reslbl[IDS_WON_LOGIN] = "Logging on to Frag-Net"; + m_reslbl[IDS_LOGO_SIZEMISMATCH] = "Custom logos must have the same width and height."; + m_reslbl[IDS_LOGO_OVERSIZED] = "Custom logos can be no larger than 64 x 64 pixels."; + m_reslbl[IDS_LOGO_POWEROF2] = "Custom logo width and height must be 2, 4, 8, 16, 32, ro 64."; + m_reslbl[IDS_MODEM_CUSTOM] = "Custom"; + m_reslbl[IDS_MODEM_RATE] = "Enter data transfer rate ( 100 - 9999 )"; + m_reslbl[IDS_REGISTRY_UPDATE] = "Updating registry settings for Half-Life. You will need to reconfigure your settings."; + m_reslbl[IDS_CHAT_JOIN] = "Tyring to join %s"; + m_reslbl[IDS_CHAT_FLOOD] = "Too much text, please wait."; + m_reslbl[IDS_CHAT_SEARCH] = "Searching for user %s..."; + m_reslbl[IDS_CHAT_NOINFO] = "Directory server did not return any user information."; + m_reslbl[IDS_CHAT_NOFIND] = "Couldn't find user %s"; + m_reslbl[IDS_CHAT_FIND] = "Found %s in %s"; + m_reslbl[IDS_CHAT_NOAUTH] = "Could not obtain authentication information"; + m_reslbl[IDS_CHAT_NODIR] = "Server did not return any directory information."; + m_reslbl[IDS_CHAT_NOSUCHROOM] = "Could not find room %s"; + m_reslbl[IDS_CHAT_ROOMFULL] = "Can't join %s..., room has too many users ( %i ), try again later"; + m_reslbl[IDS_CREATESV_NOADVANCED] = "No advanced options available"; + m_reslbl[IDS_WON_CDINUSE] = "Your Half-Life CD Key is currently in use. Please try again later."; + m_reslbl[IDS_CHAT_JOINHINT] = "Type /join [roomname] to join another chat room."; + m_reslbl[IDS_WON_BANNED] = "Your CD key cannot be used on the Frag-Net system."; + m_reslbl[IDS_CONTENT_NOMULTIPLAYER] = "Content control configuration - on"; + m_reslbl[IDS_PATCH_ERROR] = "Half-Life AutoPatch Error"; + m_reslbl[IDS_PATCH_NOUTIL] = "Sierra Utilites are not properly installed. Please reinstall from the CD."; + m_reslbl[IDS_PATCH_FAIL] = "Could Not Run the AutoPatch Program"; + m_reslbl[IDS_PATCH_BADINSTALL] = "Half-Life is not properly Installed"; + m_reslbl[IDS_CONNECT_FAILURE] = "Could not connect to game server\r\nReason: %s"; + m_reslbl[IDS_MULTI_NEEDPASSWORD] = "Password required, please enter a password to try connecting again."; + m_reslbl[IDS_VID_HINT] = "640 x 480 is recommended as the most reliable OpenGL mode. Other modes are hardware dependent and may not be available on your card.\n\nIf you have a 3D card that incorporates the Voodoo, Voodoo 2, or Banshee chipsets, select the 3DFX Mini Driver as your OpenGL Driver."; + m_reslbl[IDS_MULTI_LOGODISCONNECT] = "Changing your logo will terminate your current multiplayer game, OK to exit?"; + m_reslbl[IDS_3D_WARNING] = "For 3D support, Half-Life requires the current versions of device drivers on your system. The 3D Info link will help you ensure you have the correct drivers."; + m_reslbl[IDS_3DSITE_URL] = "www.sierrastudios.com/games/half-life/support/3Dinfo/"; + m_reslbl[IDS_WON_MODIFIED] = "Your Half-Life executable has been modified. Please check your system for viruses and then re-install Half-Life."; + m_reslbl[IDS_ADVANCEDMP_OFFSETS] = "0"; + m_reslbl[IDS_AUDIO_OFFSET] = "0 0 0 0"; + m_reslbl[IDS_CONFIGURE_OFFSET] = "0 0"; + m_reslbl[IDS_CREATEROOM_OFFSET] = "0"; + m_reslbl[IDS_CREATESERVER_OFFSET] = "0"; + m_reslbl[IDS_GAMEOPTIONS_OFFSET] = "0 0 0 0"; + m_reslbl[IDS_HLMAIN_OFFSET] = "0"; + m_reslbl[IDS_KEYBOARD_OFFSET] = "0"; + m_reslbl[IDS_LAN_OFFSET] = "110 50 75 80 70"; + m_reslbl[IDS_LOAD_OFFSET] = "0 0"; + m_reslbl[IDS_NETGAMEDLG_OFFSET] = "0 0 0"; + m_reslbl[IDS_NEWGAMEDLG_OFFSET] = "0"; + m_reslbl[IDS_PLAYERINFODLG_OFFSET] = "0"; + m_reslbl[IDS_PLAYERPROFILEDLG_OFFSET] = "0 0"; + m_reslbl[IDS_PROMPT_OFFSET] = "0 0"; + m_reslbl[IDS_ROOM_OFFSET] = "0"; + m_reslbl[IDS_VIDEODLG_OFFSET] = "0"; + m_reslbl[IDS_VIDEOMODEDLG_OFFSET] = "0 0"; + m_reslbl[IDS_VIDSELECTDLG_OFFSET] = "0 0"; + m_reslbl[IDS_UPDATERREGISTRYINSTALLDIR] = "HALFLIFE"; + m_reslbl[IDS_SPANISH] = "0"; + m_reslbl[IDS_FRENCH] = "0"; + m_reslbl[IDS_OPTS_JLOOKHELP] = "Use the joystick to look around instead of using the joystick to move."; + m_reslbl[IDS_OPTS_JLOOK] = "Joystick look"; + m_reslbl[IDS_GERMAN] = "0"; + m_reslbl[IDS_CONNECT_PROTOCOLBAD] = "You cannot connect to a server which is operating under a different protocol version."; + m_reslbl[IDS_SERVER_MENU_QUICK] = "Sort list using best server estimate"; + m_reslbl[IDS_DECAL_LIMIT] = "Maximum number of decals in multiplayer."; + m_reslbl[IDS_SPRITE_SKIP] = "Draw faster software sprites"; + m_reslbl[IDS_MODEL_NAME] = "Player Model: %s"; + m_reslbl[IDS_FILTER_BYGAME] = "are running game "; + m_reslbl[IDS_BTN_SETINFO] = "&Advanced options"; + m_reslbl[IDS_MODLIST_TYPE] = "Type"; + m_reslbl[IDS_MODLIST_NAME] = "Name"; + m_reslbl[IDS_MODLIST_VERSION] = "Version"; + m_reslbl[IDS_MODLIST_SIZE] = "Size"; + m_reslbl[IDS_MODLIST_RATING] = "Rating"; + m_reslbl[IDS_MODLIST_INSTALLED] = "Installed"; + m_reslbl[IDS_MODLIST_SERVERS] = "Servers"; + m_reslbl[IDS_MODLIST_PLAYERS] = "Players"; + m_reslbl[IDS_MOD_DOWNLOADING] = "Downloading '%s'"; + m_reslbl[IDS_MOD_DLSIZEMB] = "Total download size for game %s\r\n%.2fmb"; + m_reslbl[IDS_MOD_DLSIZEKB] = "Total download size for game %s\r\n%.0fkb"; + m_reslbl[IDS_MOD_DLSTATUS] = "Downloading %s from\r\n%s\r\nFile: %s\r\n%.0f%%"; + m_reslbl[IDS_MOD_TIME] = "%.1f seconds"; + m_reslbl[IDS_MOD_CONNECT] = "Connecting to %s"; + m_reslbl[IDS_MOD_GETTINGSIZE] = "Getting download size"; + m_reslbl[IDS_MOD_DLSTATUSSHORT] = "Downloading %s from\r\n%s"; + m_reslbl[IDS_MOD_NOFILES] = "Nothing to download"; + m_reslbl[IDS_MOD_NOLIBLIST] = "Could not find liblist.gam file on remote host\r\nDouble check that %s is a valid custom game site"; + m_reslbl[IDS_INTERNET_CURRENTTOTALS] = "%i servers ( %i players online )"; + m_reslbl[IDS_SERVER_REFRESH] = "Refresh selected server"; + m_reslbl[IDS_CONNECT_NEEDMOD] = "You cannot connect to a server running custom game %s until you install the custom game"; + m_reslbl[IDS_MOD_REMOTEOPENFAIL] = "Could not open %s on remote machine"; + m_reslbl[IDS_MOD_LOCALOPENFAIL] = "Could not open %s on local machine"; + m_reslbl[IDS_BTN_CUSTOMGAME] = "C&ustom game"; + m_reslbl[IDS_MAIN_CUSTOMHELP] = "Select a custom game, search the Internet for custom games"; + m_reslbl[IDS_BTN_ACTIVATE] = "&Activate"; + m_reslbl[IDS_BTN_INSTALL] = "&Install"; + m_reslbl[IDS_BTN_DETAILS] = "Details"; + m_reslbl[IDS_BTN_VISIT] = "&Visit web site"; + m_reslbl[IDS_BTN_REFRESHMODS] = "&Refresh list"; + m_reslbl[IDS_BTN_DEACTIVATE] = "D&eactivate"; + m_reslbl[IDS_MOD_INFO] = "Info:"; + m_reslbl[IDS_YES] = "Yes"; + m_reslbl[IDS_NO] = "No"; + m_reslbl[IDS_UPDATE] = "Update"; + m_reslbl[IDS_MODREQ_TITLE] = "Requesting custom game info"; + m_reslbl[IDS_DOWNLOAD_WARNING] = "You are about to download a custom game. Downloading a custom game for Half-Life has the same issues and risks as downloading any program from the Internet. They could contain viruses, have bugs that will crash your system causing you to lose unsaved work, or could perform operations that might harm your computer.\r\nYou can disable this warning by checking the \"Don't show this warning again\" checkbox at the bottom of this form."; + m_reslbl[IDS_WARN_CHECKPROMPT] = "Don't show this warning again"; + m_reslbl[IDS_MOD_VERSION] = "Custom game '%s' has a new version available, are you sure you want to select it before installing the updated version?"; + m_reslbl[IDS_MOD_REINSTALL] = "Custom game %s is already installed, are you sure you want to re-install?"; + m_reslbl[IDS_WARN_TITLE] = "Custom game download"; + m_reslbl[IDS_MOD_ENGINEVERSION] = "Custom game '%s' was created for a different version of Half-Life than the current version you have installed. Are you sure you want to select it before installing the updated version?"; + m_reslbl[IDS_MOD_CONNVERSION] = "You cannot connect to a server running version %i of custom game '%s' until you upgrade to that version. Your current version is %i"; + m_reslbl[IDS_CONNHLVERSION] = "You are attempting to connect to a server running game '%s' for Half-Life version %s. Your current version of Half-Life is %s. Continue anyway?"; + m_reslbl[IDS_MOD_NOTINSTALLED] = "Can't activate custom game '%s', you must install the custom game first."; + m_reslbl[IDS_REFRESH_SERVERS] = "%i servers remaining"; + m_reslbl[IDS_DEDICATED] = "Dedicated server (faster, but you can't join the server from this machine)."; + m_reslbl[IDS_MOD_MODVERSION] = "You are attempting to connect to a server running version %i of the game '%s', but you only have version %i installed. Continue anyway?"; + m_reslbl[IDS_CONN_FULL] = "Can't connect to %s, server is full."; + m_reslbl[IDS_MOD_UNZIP] = "Do you want to uncompress the files for game '%s'?"; + m_reslbl[IDS_FAVSVRS_CORRUPT] = "The server data file favsvrs.dat appears to be corrupt.\r\n\r\nYou can request a new list of servers by pressing the Update button.\r\n\r\nDo you want to remove the corrupt file ( you will have to re-enter your 'favorites' if you remove the file )?"; /* Override the defaults with custom entries */ stringslst = fopen("gfx/shell/strings.lst", FILE_READ); diff --git a/src/menu-vgui/ui_quitgame.cpp b/src/menu-vgui/ui_quitgame.cpp new file mode 100755 index 00000000..d47e6449 --- /dev/null +++ b/src/menu-vgui/ui_quitgame.cpp @@ -0,0 +1,58 @@ +/*** +* +* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved. +* +* See the file LICENSE attached with the sources for usage details. +* +****/ + +int g_iQuitGameInitialized; + +void UI_QuitGame_Show ( void ) +{ + static CUIWindow winQuitGame; + static CUILabel lblSure; + static CUIButton btnQuit; + static CUIButton btnCancel; + + static void QuitGame_Yes ( void ) { + winQuitGame.Hide(); + localcmd( "quit\n" ); + } + static void QuitGame_No ( void ) { + winQuitGame.Hide(); + } + if ( !g_iQuitGameInitialized ) { + g_iQuitGameInitialized = TRUE; + winQuitGame = spawn( CUIWindow ); + winQuitGame.SetTitle( "Quit Game" ); + winQuitGame.SetSize( '256 128' ); + winQuitGame.SetIcon( "textures/ui/icons/cancel" ); + g_uiDesktop.Add( winQuitGame ); + + btnQuit = spawn( CUIButton ); + btnQuit.SetTitle( "Quit" ); + btnQuit.SetSize( '64 24' ); + btnQuit.SetPos( winQuitGame.GetSize() - '152 32' ); + + btnCancel = spawn( CUIButton ); + btnCancel.SetTitle( "Cancel" ); + btnCancel.SetSize( '64 24' ); + btnCancel.SetPos( winQuitGame.GetSize() - '80 32' ); + + lblSure = spawn( CUILabel ); + lblSure.SetTitle( "Do you wish to stop playing now?" ); + lblSure.SetSize( '256 16' ); + lblSure.SetPos( '0 48' ); + + btnQuit.SetFunc( QuitGame_Yes ); + btnCancel.SetFunc( QuitGame_No ); + + winQuitGame.Add( btnQuit ); + winQuitGame.Add( btnCancel ); + winQuitGame.Add( lblSure ); + } + + winQuitGame.Show(); + winQuitGame.SetPos( ( video_res / 2 ) - ( winQuitGame.GetSize() / 2 ) ); +} diff --git a/src/plugins/chatsounds.c b/src/plugins/chatsounds.c new file mode 100755 index 00000000..01ec0a29 --- /dev/null +++ b/src/plugins/chatsounds.c @@ -0,0 +1,106 @@ +/* +Copyright 2019 +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +*/ + +var int autocvar_chatplug_suppresschat = 0; + +entity csndemitter; + +typedef struct { + string sentence; + string sample; +} chatsentence_t; +chatsentence_t *g_chatsounds; +var int g_chatsounds_count; + +int ChatLookUp(string cmd) +{ + for (int i = 0; i < g_chatsounds_count; i++) { + int sc = tokenizebyseparator(g_chatsounds[i].sentence, ";"); + for (int c = 0; c < sc; c++) { + if (cmd == argv(c)) { + int count = tokenizebyseparator(g_chatsounds[i].sample, ";"); + int r = random(0, count); + sound(csndemitter, CHAN_BODY, argv(r), 1.0f, ATTN_NONE, 100, SOUNDFLAG_NOREVERB); + break; + } + } + } + + /* Some jokester might set it to non 0/1 */ + return autocvar_chatplug_suppresschat == 1 ? TRUE : FALSE; +} + +int FMX_ParseClientCommand(string cmd) +{ + tokenize(cmd); + switch (argv(0)) { + case "say": + return ChatLookUp(strtolower(argv(1))); + break; + default: + return FALSE; + } + return TRUE; +} + +void initents(void) +{ + /* Why waste entity slots? */ + if (g_chatsounds_count > 0) { + csndemitter = spawn(); + } +} + +void init(float prevprogs) +{ + filestream chatfile; + chatfile = fopen("chatsounds.txt", FILE_READ); + + if (chatfile >= 0) { + string temp; + int i = 0; + int c = 0; + + /* count lines */ + while ((temp = fgets(chatfile))) { + c = tokenize_console(temp); + if (c != 2) { + continue; + } + g_chatsounds_count++; + } + fseek(chatfile, 0); + print(sprintf("Chat Sound Plugin: %i record(s) initialized\n", g_chatsounds_count)); + + g_chatsounds = memalloc(sizeof(chatsentence_t) * g_chatsounds_count); + while ((temp = fgets(chatfile))) { + c = tokenize_console(temp); + if (c != 2 ) { + continue; + } + g_chatsounds[i].sentence = strtolower(argv(0)); + g_chatsounds[i].sample = strtolower(argv(1)); + c = tokenizebyseparator(g_chatsounds[i].sample, ";"); + for (int x = 0; x < c; x++) { + precache_sound(argv(x)); + print(sprintf("Caching: %s\n", argv(x))); + } + i++; + } + fclose(chatfile); + } else { + print("Chat Sound Plugin: chatsounds.txt not found.\n"); + } +} diff --git a/src/plugins/chatsounds.src b/src/plugins/chatsounds.src new file mode 100755 index 00000000..fe5efd41 --- /dev/null +++ b/src/plugins/chatsounds.src @@ -0,0 +1,8 @@ +#pragma target fte +#pragma PROGS_DAT "../../valve/data.pk3dir/p_chatsounds.dat" +#define QWSSQC + +#includelist +../builtins.h +chatsounds.c +#endlist diff --git a/src/server/rewolf/progs.src b/src/server/rewolf/progs.src index 134ef225..dc2c1fa9 100755 --- a/src/server/rewolf/progs.src +++ b/src/server/rewolf/progs.src @@ -37,20 +37,20 @@ monster_human_unarmed.cpp ../valve/spectator.c ../../shared/valve/items.h ../../shared/valve/weapons.h -../../shared/valve/w_crowbar.c -../../shared/valve/w_glock.c -../../shared/valve/w_python.c -../../shared/valve/w_mp5.c ../../shared/valve/w_crossbow.c -../../shared/valve/w_shotgun.c -../../shared/valve/w_rpg.c -../../shared/valve/w_gauss.c +../../shared/valve/w_crowbar.c ../../shared/valve/w_egon.c -../../shared/valve/w_hornetgun.c +../../shared/valve/w_gauss.c +../../shared/valve/w_glock.c ../../shared/valve/w_handgrenade.c -../../shared/valve/w_tripmine.c +../../shared/valve/w_hornetgun.c +../../shared/valve/w_mp5.c +../../shared/valve/w_python.c +../../shared/valve/w_rpg.c ../../shared/valve/w_satchel.c +../../shared/valve/w_shotgun.c ../../shared/valve/w_snark.c +../../shared/valve/w_tripmine.c ../valve/items.cpp ../valve/item_longjump.cpp ../valve/item_suit.cpp diff --git a/src/server/scihunt/monster_scientist.cpp b/src/server/scihunt/monster_scientist.cpp index d33dce07..998af4cf 100644 --- a/src/server/scihunt/monster_scientist.cpp +++ b/src/server/scihunt/monster_scientist.cpp @@ -246,7 +246,13 @@ string sci_sndscream[] = { "scientist/youinsane.wav", "scientist/scream23.wav", "scientist/scream24.wav", - "scientist/scream25.wav" + "scientist/scream25.wav", + "scientist/whatyoudoing.wav", + "scientist/canttakemore.wav", + "scientist/madness.wav", + "scientist/noplease.wav", + "scientist/getoutofhere.wav", + "scientist/sorryimleaving.wav", }; string sci_sndstop[] = { @@ -279,13 +285,28 @@ string sci_snduseno[] = { "scientist/whyleavehere.wav" }; +string sci_sndidle[] = { + "scientist/hideglasses.wav", + "scientist/weartie.wav", + "scientist/runtest.wav", + "scientist/limitsok.wav", + "scientist/asexpected.wav", + "scientist/thatsodd.wav", + "scientist/allnominal.wav", + "scientist/shutdownchart.wav", + "scientist/reportflux.wav", + "scientist/simulation.wav", + "scientist/hopenominal.wav", +}; class monster_scientist:CBaseEntity { + int m_iBody; vector m_vecLastUserPos; entity m_eUser; entity m_eRescuer; + float m_flScaredTime; float m_flScreamTime; float m_flPainTime; float m_flChangePath; @@ -303,10 +324,34 @@ class monster_scientist:CBaseEntity virtual void() Physics; virtual void() Scream; virtual void() Gib; + virtual float(entity, float) SendEntity; virtual void() WarnOthers; virtual void(string) Speak; + virtual void() IdleChat; }; +float monster_scientist::SendEntity(entity ePEnt, float fChanged) +{ + if (modelindex == 0) { + return FALSE; + } + + WriteByte(MSG_ENTITY, ENT_NPC); + WriteShort(MSG_ENTITY, modelindex); + WriteCoord(MSG_ENTITY, origin[0]); + WriteCoord(MSG_ENTITY, origin[1]); + WriteCoord(MSG_ENTITY, origin[2]); + WriteFloat(MSG_ENTITY, angles[1]); + WriteFloat(MSG_ENTITY, angles[2]); + WriteCoord(MSG_ENTITY, velocity[0]); + WriteCoord(MSG_ENTITY, velocity[1]); + WriteCoord(MSG_ENTITY, velocity[2]); + WriteByte(MSG_ENTITY, frame); + WriteByte(MSG_ENTITY, skin); + WriteByte(MSG_ENTITY, m_iBody); + return TRUE; +} + void monster_scientist::Speak(string msg) { WriteByte(MSG_MULTICAST, SVC_CGAMEPACKET); @@ -330,9 +375,11 @@ void monster_scientist::WarnOthers(void) for (entity b = world; (b = find(b, ::classname, "monster_scientist"));) { if (vlen(b.origin - origin) < 512) { monster_scientist sci = (monster_scientist)b; - sci.m_iFlags |= SCIF_FEAR | SCIF_SEEN; + sci.m_iFlags |= SCIF_SCARED | SCIF_FEAR | SCIF_SEEN; sci.m_eUser = world; sci.m_eRescuer = world; + sci.m_flScaredTime = time + 2.5f; + sci.Scream(); } } } @@ -348,6 +395,17 @@ void monster_scientist::Scream(void) m_flScreamTime = time + 5.0f; } +void monster_scientist::IdleChat(void) +{ + if (m_flScreamTime > time) { + return; + } + + int rand = floor(random(0,sci_sndchitchat.length)); + Speak(sci_sndchitchat[rand]); + m_flScreamTime = time + 5.0f + random(0,20); +} + void monster_scientist::Physics(void) { float spvel; @@ -425,12 +483,13 @@ void monster_scientist::Physics(void) } } } else if (m_iFlags & SCIF_FEAR) { + m_iFlags |= SCIF_SEEN; Scream(); maxspeed = 240 * (autocvar_sh_scispeed/40); input_movevalues = [maxspeed, 0, 0]; if (m_flTraceTime < time) { - traceline(self.origin, self.origin + (v_forward * 32), FALSE, this); + traceline(origin, origin + (v_forward * 64), FALSE, this); if (trace_fraction < 1.0f) { m_flChangePath = 0.0f; @@ -439,10 +498,33 @@ void monster_scientist::Physics(void) } if (m_flChangePath < time) { - v_angle[1] -= 180 + (random(-25, 25)); - v_angle[1] = Math_FixDelta(v_angle[1]); + float add; + vector pos; + + pos = origin + [0,0,-18]; + if (random() < 0.5) { + add = 45; + } else { + add = -45; + } + + /* test every 45 degrees */ + for (int i = 0; i < 8; i++) { + v_angle[1] = Math_FixDelta(v_angle[1] + add); + makevectors(v_angle); + traceline(pos, pos + (v_forward * 64), FALSE, this); + if (trace_fraction >= 1.0f) { + break; + } + } m_flChangePath = time + floor(random(2,10)); } + } else { + IdleChat(); + } + + if (m_flScaredTime < time && m_iFlags & SCIF_SCARED) { + m_iFlags &= ~SCIF_SCARED; } input_angles = angles = v_angle; @@ -464,6 +546,7 @@ void monster_scientist::Physics(void) runstandardplayerphysics(this); Footsteps_Update(); + SendFlags = 1; if (!(flags & FL_ONGROUND) && velocity[2] < -100) { if (!(m_iFlags & SCIF_FALLING)) { @@ -541,6 +624,7 @@ void monster_scientist::vDeath(int iHitBody) think = Respawn; nextthink = time + 10.0f; + SendFlags = 1; m_eUser = world; customphysics = __NULL__; m_iFlags = 0x0; @@ -550,6 +634,7 @@ void monster_scientist::vDeath(int iHitBody) return; } + flags &= ~FL_MONSTER; movetype = MOVETYPE_NONE; solid = SOLID_CORPSE; //takedamage = DAMAGE_NO; @@ -575,6 +660,7 @@ void monster_scientist::Respawn(void) v_angle[1] = Math_FixDelta(m_oldAngle[1]); v_angle[2] = Math_FixDelta(m_oldAngle[2]); + flags |= FL_MONSTER; setorigin(this, m_oldOrigin); angles = v_angle; solid = SOLID_SLIDEBOX; @@ -616,6 +702,9 @@ void monster_scientist::monster_scientist(void) for (int i = 0; i < sci_sndsee.length; i++) { precache_sound(sci_sndsee[i]); } + for (int i = 0; i < sci_sndidle.length; i++) { + precache_sound(sci_sndidle[i]); + } model = "models/scientist.mdl"; CBaseEntity::CBaseEntity(); @@ -624,20 +713,24 @@ void monster_scientist::monster_scientist(void) /* This stuff needs to be persistent because we can't guarantee that * the client-side geomset refresh happens. Don't shove this into Respawn */ - colormod[0] = floor(random(1,5)); - switch (colormod[0]) { + m_iBody = floor(random(1,5)); + switch (m_iBody) { case 1: - m_flPitch = 105; // Walter + m_flPitch = 105; + netname = "Walter"; break; case 2: - m_flPitch = 100; // Einstein + m_flPitch = 100; + netname = "Einstein"; break; case 3: - m_flPitch = 95; // Luther + m_flPitch = 95; + netname = "Luther"; skin = 1; break; default: - m_flPitch = 100; // Slick + m_flPitch = 100; + netname = "Slick"; } } diff --git a/src/server/scihunt/progs.src b/src/server/scihunt/progs.src index cefb5bfd..7522e455 100755 --- a/src/server/scihunt/progs.src +++ b/src/server/scihunt/progs.src @@ -33,20 +33,20 @@ monster_scientist.cpp ../valve/spectator.c ../../shared/scihunt/items.h ../../shared/scihunt/weapons.h -../../shared/valve/w_crowbar.c -../../shared/valve/w_glock.c -../../shared/valve/w_python.c -../../shared/valve/w_mp5.c ../../shared/valve/w_crossbow.c -../../shared/valve/w_shotgun.c -../../shared/valve/w_rpg.c -../../shared/valve/w_gauss.c +../../shared/valve/w_crowbar.c ../../shared/valve/w_egon.c -../../shared/valve/w_hornetgun.c +../../shared/valve/w_gauss.c +../../shared/valve/w_glock.c ../../shared/valve/w_handgrenade.c -../../shared/valve/w_tripmine.c +../../shared/valve/w_hornetgun.c +../../shared/valve/w_mp5.c +../../shared/valve/w_python.c +../../shared/valve/w_rpg.c ../../shared/valve/w_satchel.c +../../shared/valve/w_shotgun.c ../../shared/valve/w_snark.c +../../shared/valve/w_tripmine.c ../../shared/scihunt/w_cannon.c ../../shared/scihunt/w_chainsaw.c ../../shared/scihunt/w_hammer.c diff --git a/src/server/valve/damage.c b/src/server/valve/damage.c index 3d2d0ae9..d5892ce3 100644 --- a/src/server/valve/damage.c +++ b/src/server/valve/damage.c @@ -16,16 +16,16 @@ /* someone dieded */ void -Damage_CastObituary(entity eCulprit, entity eTarget, float weapon, float flags) +Damage_Obituary(entity eCulprit, entity eTarget, float weapon, float flags) { - /*WriteByte(MSG_BROADCAST, SVC_CGAMEPACKET); - WriteByte(MSG_BROADCAST, EV_OBITUARY); - WriteByte(MSG_BROADCAST, num_for_edict(eCulprit) - 1); - WriteByte(MSG_BROADCAST, num_for_edict(eTarget) - 1); - WriteByte(MSG_BROADCAST, weapon); - WriteByte(MSG_BROADCAST, flags); + WriteByte(MSG_MULTICAST, SVC_CGAMEPACKET); + WriteByte(MSG_MULTICAST, EV_OBITUARY); + WriteString(MSG_MULTICAST, eCulprit.netname); + WriteString(MSG_MULTICAST, eTarget.netname); + WriteByte(MSG_MULTICAST, weapon); + WriteByte(MSG_MULTICAST, flags); msg_entity = self; - multicast([0,0,0], MULTICAST_ALL);*/ + multicast([0,0,0], MULTICAST_ALL); } /* generic function that applies damage, pain and suffering */ @@ -73,19 +73,28 @@ Damage_Apply(entity eTarget, entity eCulprit, float fDmg, vector pos, int a) forceinfokey(eTarget, "*deaths", ftos(eTarget.deaths)); } - if (eCulprit.flags & FL_CLIENT) { - if (eTarget == eCulprit) { + if (eTarget.flags & FL_CLIENT || eTarget.flags & FL_MONSTER) + if (eCulprit.flags & FL_CLIENT) + if (eTarget == eCulprit) eCulprit.frags--; - } else { + else eCulprit.frags++; - } - } } entity eOld = self; self = eTarget; if (self.health <= 0) { + if (eTarget.flags & FL_MONSTER || eTarget.flags & FL_CLIENT) { + float w = 0; + /* FIXME: this is unreliable. the culprit might have + * already switched weapons. FIX THIS */ + if (eCulprit.flags & FL_CLIENT) { + player pl = (player)eCulprit; + w = pl.activeweapon; + } + Damage_Obituary(eCulprit, eTarget, w, 0); + } self.vDeath(trace_surface_id); } else { self.vPain(trace_surface_id); diff --git a/src/server/valve/player.c b/src/server/valve/player.c index a60bd6c4..7b791daf 100644 --- a/src/server/valve/player.c +++ b/src/server/valve/player.c @@ -114,6 +114,7 @@ Player_SendEntity float Player_SendEntity(entity ePEnt, float fChanged) { player pl = (player)self; + if (pl.health <= 0 && ePEnt != pl) { return FALSE; } diff --git a/src/server/valve/progs.src b/src/server/valve/progs.src index 4cdeca6b..e401af9a 100755 --- a/src/server/valve/progs.src +++ b/src/server/valve/progs.src @@ -32,20 +32,20 @@ player.c spectator.c ../../shared/valve/items.h ../../shared/valve/weapons.h -../../shared/valve/w_crowbar.c -../../shared/valve/w_glock.c -../../shared/valve/w_python.c -../../shared/valve/w_mp5.c ../../shared/valve/w_crossbow.c -../../shared/valve/w_shotgun.c -../../shared/valve/w_rpg.c -../../shared/valve/w_gauss.c +../../shared/valve/w_crowbar.c ../../shared/valve/w_egon.c -../../shared/valve/w_hornetgun.c +../../shared/valve/w_gauss.c +../../shared/valve/w_glock.c ../../shared/valve/w_handgrenade.c -../../shared/valve/w_tripmine.c +../../shared/valve/w_hornetgun.c +../../shared/valve/w_mp5.c +../../shared/valve/w_python.c +../../shared/valve/w_rpg.c ../../shared/valve/w_satchel.c +../../shared/valve/w_shotgun.c ../../shared/valve/w_snark.c +../../shared/valve/w_tripmine.c items.cpp item_longjump.cpp item_suit.cpp diff --git a/src/shared/scihunt/w_cannon.c b/src/shared/scihunt/w_cannon.c index c00e07d3..7323565c 100644 --- a/src/shared/scihunt/w_cannon.c +++ b/src/shared/scihunt/w_cannon.c @@ -223,6 +223,9 @@ weapon_t w_cannon = ITEM_CANNON, 2, 3, + "sprites/640hud1.spr_0.tga", + [48,16], + [192,80], w_cannon_draw, w_cannon_holster, w_cannon_primary, diff --git a/src/shared/scihunt/w_chainsaw.c b/src/shared/scihunt/w_chainsaw.c index 88a6df04..b4b970e1 100644 --- a/src/shared/scihunt/w_chainsaw.c +++ b/src/shared/scihunt/w_chainsaw.c @@ -152,6 +152,9 @@ weapon_t w_chainsaw = ITEM_CHAINSAW, 0, 2, + "sprites/640hud1.spr_0.tga", + [48,16], + [192,80], w_chainsaw_draw, w_chainsaw_holster, w_chainsaw_primary, diff --git a/src/shared/scihunt/w_hammer.c b/src/shared/scihunt/w_hammer.c index c68e5265..a2eed078 100644 --- a/src/shared/scihunt/w_hammer.c +++ b/src/shared/scihunt/w_hammer.c @@ -218,6 +218,9 @@ weapon_t w_hammer = ITEM_HAMMER, 0, 1, + "sprites/640hud1.spr_0.tga", + [48,16], + [192,80], w_hammer_draw, w_hammer_holster, w_hammer_primary, diff --git a/src/shared/scihunt/weapons.h b/src/shared/scihunt/weapons.h index d3207f6b..d33632c8 100644 --- a/src/shared/scihunt/weapons.h +++ b/src/shared/scihunt/weapons.h @@ -20,6 +20,10 @@ typedef struct int slot; int slot_pos; + string ki_spr; + vector ki_size; + vector ki_xy; + void() draw; void() holster; void() primary; diff --git a/src/shared/valve/w_crossbow.c b/src/shared/valve/w_crossbow.c index 56ce3b46..8af0dc8c 100644 --- a/src/shared/valve/w_crossbow.c +++ b/src/shared/valve/w_crossbow.c @@ -259,6 +259,9 @@ weapon_t w_crossbow = ITEM_CROSSBOW, 2, 2, + "sprites/640hud1.spr_0.tga", + [48,16], + [192,80], w_crossbow_draw, w_crossbow_holster, w_crossbow_primary, diff --git a/src/shared/valve/w_crowbar.c b/src/shared/valve/w_crowbar.c index 5a173d33..eb92e893 100644 --- a/src/shared/valve/w_crowbar.c +++ b/src/shared/valve/w_crowbar.c @@ -174,6 +174,9 @@ weapon_t w_crowbar = ITEM_CROWBAR, 0, 0, + "sprites/640hud1.spr_0.tga", + [48,16], + [192,0], w_crowbar_draw, w_crowbar_holster, w_crowbar_primary, diff --git a/src/shared/valve/w_egon.c b/src/shared/valve/w_egon.c index ebc3c08c..1cfb577a 100644 --- a/src/shared/valve/w_egon.c +++ b/src/shared/valve/w_egon.c @@ -168,6 +168,9 @@ weapon_t w_egon = ITEM_EGON, 3, 2, + "sprites/640hud1.spr_0.tga", + [32,16], + [192,128], w_egon_draw, w_egon_holster, w_egon_primary, diff --git a/src/shared/valve/w_gauss.c b/src/shared/valve/w_gauss.c index 28b0ef6f..a2b402a4 100644 --- a/src/shared/valve/w_gauss.c +++ b/src/shared/valve/w_gauss.c @@ -382,6 +382,9 @@ weapon_t w_gauss = ITEM_GAUSS, 3, 1, + "sprites/640hud1.spr_0.tga", + [32,16], + [192,112], w_gauss_draw, w_gauss_holster, w_gauss_primary, diff --git a/src/shared/valve/w_glock.c b/src/shared/valve/w_glock.c index 84acfb37..02913463 100644 --- a/src/shared/valve/w_glock.c +++ b/src/shared/valve/w_glock.c @@ -248,6 +248,9 @@ weapon_t w_glock = ITEM_GLOCK, 1, 0, + "sprites/640hud1.spr_0.tga", + [32,16], + [192,16], w_glock_draw, w_glock_holster, w_glock_primary, diff --git a/src/shared/valve/w_handgrenade.c b/src/shared/valve/w_handgrenade.c index b6c8b235..d7e42465 100644 --- a/src/shared/valve/w_handgrenade.c +++ b/src/shared/valve/w_handgrenade.c @@ -232,6 +232,9 @@ weapon_t w_handgrenade = ITEM_HANDGRENADE, 4, 0, + "sprites/640hud1.spr_0.tga", + [32,16], + [192,160], w_handgrenade_draw, w_handgrenade_holster, w_handgrenade_primary, diff --git a/src/shared/valve/w_hornetgun.c b/src/shared/valve/w_hornetgun.c index 40f7ad57..8b51c897 100644 --- a/src/shared/valve/w_hornetgun.c +++ b/src/shared/valve/w_hornetgun.c @@ -240,6 +240,9 @@ weapon_t w_hornetgun = ITEM_HORNETGUN, 3, 3, + "sprites/640hud1.spr_0.tga", + [48,16], + [192,144], w_hornetgun_draw, w_hornetgun_holster, w_hornetgun_primary, diff --git a/src/shared/valve/w_mp5.c b/src/shared/valve/w_mp5.c index 808896e3..d82d685d 100644 --- a/src/shared/valve/w_mp5.c +++ b/src/shared/valve/w_mp5.c @@ -266,6 +266,9 @@ weapon_t w_mp5 = { ITEM_MP5, 2, 0, + "sprites/640hud1.spr_0.tga", + [48,16], + [192,48], w_mp5_draw, w_mp5_holster, w_mp5_primary, diff --git a/src/shared/valve/w_python.c b/src/shared/valve/w_python.c index 4cd48486..5aca3195 100644 --- a/src/shared/valve/w_python.c +++ b/src/shared/valve/w_python.c @@ -214,6 +214,9 @@ weapon_t w_python = ITEM_PYTHON, 1, 1, + "sprites/640hud1.spr_0.tga", + [32,16], + [192,32], w_python_draw, w_python_holster, w_python_primary, diff --git a/src/shared/valve/w_rpg.c b/src/shared/valve/w_rpg.c index ca682657..2d40f53d 100644 --- a/src/shared/valve/w_rpg.c +++ b/src/shared/valve/w_rpg.c @@ -240,6 +240,9 @@ weapon_t w_rpg = ITEM_RPG, 3, 0, + "sprites/640hud1.spr_0.tga", + [48,16], + [192,96], w_rpg_draw, w_rpg_holster, w_rpg_primary, diff --git a/src/shared/valve/w_satchel.c b/src/shared/valve/w_satchel.c index 85cf36eb..3fe81875 100644 --- a/src/shared/valve/w_satchel.c +++ b/src/shared/valve/w_satchel.c @@ -251,6 +251,9 @@ weapon_t w_satchel = ITEM_SATCHEL, 4, 1, + "sprites/640hud1.spr_0.tga", + [32,16], + [192,176], w_satchel_draw, w_satchel_holster, w_satchel_primary, diff --git a/src/shared/valve/w_shotgun.c b/src/shared/valve/w_shotgun.c index 2c28d010..ce6b4693 100644 --- a/src/shared/valve/w_shotgun.c +++ b/src/shared/valve/w_shotgun.c @@ -283,6 +283,9 @@ weapon_t w_shotgun = ITEM_SHOTGUN, 2, 1, + "sprites/640hud1.spr_0.tga", + [48,16], + [192,64], w_shotgun_draw, w_shotgun_holster, w_shotgun_primary, diff --git a/src/shared/valve/w_snark.c b/src/shared/valve/w_snark.c index c7231f84..985b3881 100644 --- a/src/shared/valve/w_snark.c +++ b/src/shared/valve/w_snark.c @@ -109,6 +109,7 @@ void w_snark_deploy(void) static void snark_pain(int i) { } entity snark = spawn(); snark.owner = self; + snark.netname = "Snark"; snark.classname = "snark"; setmodel(snark, "models/w_squeak.mdl"); makevectors(self.v_angle); @@ -259,6 +260,9 @@ weapon_t w_snark = ITEM_SNARK, 4, 3, + "sprites/640hud1.spr_0.tga", + [32,16], + [192,208], w_snark_draw, w_snark_holster, w_snark_primary, diff --git a/src/shared/valve/w_tripmine.c b/src/shared/valve/w_tripmine.c index f4dbfecb..caed2aab 100644 --- a/src/shared/valve/w_tripmine.c +++ b/src/shared/valve/w_tripmine.c @@ -273,6 +273,9 @@ weapon_t w_tripmine = ITEM_TRIPMINE, 4, 2, + "sprites/640hud1.spr_0.tga", + [32,16], + [192,192], w_tripmine_draw, w_tripmine_holster, w_tripmine_primary, diff --git a/src/shared/valve/weapons.h b/src/shared/valve/weapons.h index 89d0dab6..ceba3cb9 100644 --- a/src/shared/valve/weapons.h +++ b/src/shared/valve/weapons.h @@ -19,6 +19,9 @@ typedef struct int id; /* bitflag id */ int slot; int slot_pos; + string ki_spr; + vector ki_size; + vector ki_xy; void() draw; void() holster;