X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fmiscfunctions.qc;h=14457679f15c2ab98ba0319046b751d775eb1dd7;hb=df01ffb2ceeacdcffc7ed259ffb65fd53d455ed4;hp=39c42a55695f3e585ecf9f440fe89435d382342b;hpb=228743a67588c5488f678a9d0ead45bf8a50b6c2;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/miscfunctions.qc b/qcsrc/server/miscfunctions.qc index 39c42a556..14457679f 100644 --- a/qcsrc/server/miscfunctions.qc +++ b/qcsrc/server/miscfunctions.qc @@ -26,13 +26,14 @@ #include "../common/items/_mod.qh" #include "../common/state.qh" #include "../common/effects/qc/globalsound.qh" +#include "../common/wepent.qh" #include "../lib/csqcmodel/sv_model.qh" #include "../lib/warpzone/anglestransform.qh" #include "../lib/warpzone/server.qh" void crosshair_trace(entity pl) { - traceline_antilag(pl, pl.cursor_trace_start, pl.cursor_trace_start + normalize(pl.cursor_trace_endpos - pl.cursor_trace_start) * MAX_SHOT_DISTANCE, MOVE_NORMAL, pl, ANTILAG_LATENCY(pl)); + traceline_antilag(pl, pl.cursor_trace_start, pl.cursor_trace_start + normalize(pl.cursor_trace_endpos - pl.cursor_trace_start) * max_shot_distance, MOVE_NORMAL, pl, ANTILAG_LATENCY(pl)); } .bool ctrace_solidchanged; void crosshair_trace_plusvisibletriggers(entity pl) @@ -56,7 +57,7 @@ void crosshair_trace_plusvisibletriggers(entity pl) } void WarpZone_crosshair_trace(entity pl) { - WarpZone_traceline_antilag(pl, pl.cursor_trace_start, pl.cursor_trace_start + normalize(pl.cursor_trace_endpos - pl.cursor_trace_start) * MAX_SHOT_DISTANCE, MOVE_NORMAL, pl, ANTILAG_LATENCY(pl)); + WarpZone_traceline_antilag(pl, pl.cursor_trace_start, pl.cursor_trace_start + normalize(pl.cursor_trace_endpos - pl.cursor_trace_start) * max_shot_distance, MOVE_NORMAL, pl, ANTILAG_LATENCY(pl)); } @@ -216,6 +217,21 @@ string NearestLocation(vector p) return ret; } +string AmmoNameFromWeaponentity(entity wpn) +{ + string ammoitems = "batteries"; + switch((wpn.m_weapon).ammo_field) + { + case ammo_shells: ammoitems = ITEM_Shells.m_name; break; + case ammo_nails: ammoitems = ITEM_Bullets.m_name; break; + case ammo_rockets: ammoitems = ITEM_Rockets.m_name; break; + case ammo_cells: ammoitems = ITEM_Cells.m_name; break; + case ammo_plasma: ammoitems = ITEM_Plasma.m_name; break; + case ammo_fuel: ammoitems = ITEM_JetpackFuel.m_name; break; + } + return ammoitems; +} + string formatmessage(entity this, string msg) { float p, p1, p2; @@ -224,21 +240,9 @@ string formatmessage(entity this, string msg) entity cursor_ent; string escape; string replacement; - string ammoitems; p = 0; n = 7; - ammoitems = "batteries"; - switch((PS(this).m_weapon).ammo_field) - { - case ammo_shells: ammoitems = ITEM_Shells.m_name; break; - case ammo_nails: ammoitems = ITEM_Bullets.m_name; break; - case ammo_rockets: ammoitems = ITEM_Rockets.m_name; break; - case ammo_cells: ammoitems = ITEM_Cells.m_name; break; - case ammo_plasma: ammoitems = ITEM_Plasma.m_name; break; - case ammo_fuel: ammoitems = ITEM_JetpackFuel.m_name; break; - } - WarpZone_crosshair_trace(this); cursor = trace_endpos; cursor_ent = trace_ent; @@ -268,6 +272,8 @@ string formatmessage(entity this, string msg) replacement = substring(msg, p, 2); escape = substring(msg, p + 1, 1); + .entity weaponentity = weaponentities[0]; // TODO: unhardcode + switch(escape) { case "%": replacement = "%"; break; @@ -278,8 +284,8 @@ string formatmessage(entity this, string msg) case "l": replacement = NearestLocation(this.origin); break; case "y": replacement = NearestLocation(cursor); break; case "d": replacement = NearestLocation(this.death_origin); break; - case "w": replacement = ((PS(this).m_weapon == WEP_Null) ? ((PS(this).m_switchweapon == WEP_Null) ? Weapons_from(this.cnt) : PS(this).m_switchweapon) : PS(this).m_weapon).m_name; break; - case "W": replacement = ammoitems; break; + case "w": replacement = ((this.(weaponentity).m_weapon == WEP_Null) ? ((this.(weaponentity).m_switchweapon == WEP_Null) ? Weapons_from(this.(weaponentity).cnt) : this.(weaponentity).m_switchweapon) : this.(weaponentity).m_weapon).m_name; break; + case "W": replacement = AmmoNameFromWeaponentity(this.(weaponentity)); break; case "x": replacement = ((cursor_ent.netname == "" || !cursor_ent) ? "nothing" : cursor_ent.netname); break; case "s": replacement = ftos(vlen(this.velocity - this.velocity_z * '0 0 1')); break; case "S": replacement = ftos(vlen(this.velocity)); break; @@ -456,23 +462,30 @@ void GetCvars(entity this, int f) if (f > 0) { if (s == "cl_weaponpriority") - if (PS(this)) PS(this).m_switchweapon = w_getbestweapon(this); + { + for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot) + { + .entity weaponentity = weaponentities[slot]; + if (this.(weaponentity) && (this.(weaponentity).m_weapon != WEP_Null || slot == 0)) + this.(weaponentity).m_switchweapon = w_getbestweapon(this, weaponentity); + } + } if (s == "cl_allow_uidtracking") PlayerStats_GameReport_AddPlayer(this); } } // decolorizes and team colors the player name when needed -string playername(entity p) +string playername(entity p, bool team_colorize) { string t; - if (teamplay && !gameover && IS_PLAYER(p)) + if (team_colorize && teamplay && !intermission_running && IS_PLAYER(p)) { t = Team_ColorCode(p.team); return strcat(t, strdecolorize(p.netname)); } else - return p.netname; + return ColorTranslateRGB(p.netname); } float want_weapon(entity weaponinfo, float allguns) // WEAPONTODO: what still needs done? @@ -561,6 +574,15 @@ void readplayerstartcvars() g_weaponarena_weapons |= (it.m_wepset); )); } + else if (s == "devall") + { + g_weaponarena = 1; + g_weaponarena_list = "All Weapons"; // TODO: report as more than just all weapons? + FOREACH(Weapons, it != WEP_Null, + { + g_weaponarena_weapons |= (it.m_wepset); + }); + } else if (s == "most") { g_weaponarena = 1; @@ -1082,7 +1104,7 @@ bool WarpZone_Projectile_Touch_ImpactFilter_Callback(entity this, entity toucher if(this.classname == "nade") return false; // no checks here else if(this.classname == "grapplinghook") - RemoveGrapplingHook(this.realowner); + RemoveHook(this); else if(this.classname == "spike") { W_Crylink_Dequeue(this);