X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fmiscfunctions.qc;h=7a0257a068b33058814025f3419787e2e7d0c8fb;hb=f15ff9f0d34d7f4aff3de7542b923ef53694a0e5;hp=982a996caea275841815db7b163c0fce9c4a6ef3;hpb=a70a5f90e06701ab9631f993c59bd65b0072cc37;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/miscfunctions.qc b/qcsrc/server/miscfunctions.qc index 982a996ca..7a0257a06 100644 --- a/qcsrc/server/miscfunctions.qc +++ b/qcsrc/server/miscfunctions.qc @@ -81,19 +81,20 @@ float logfile; string GetAdvancedDeathReports(entity enPlayer) // Extra fragmessage information { - local float nPlayerHealth = rint(enPlayer.health); - local float nPlayerArmor = rint(enPlayer.armorvalue); - local float nPlayerHandicap = enPlayer.cvar_cl_handicap; - local float nPlayerPing = rint(enPlayer.ping); - local string strPlayerPingColor; - local string strMessage; + float nPlayerHealth = rint(enPlayer.health); + float nPlayerArmor = rint(enPlayer.armorvalue); + float nPlayerHandicap = enPlayer.cvar_cl_handicap; + float nPlayerPing = rint(enPlayer.ping); + string strPlayerPingColor; + string strMessage; + if(nPlayerPing >= 150) strPlayerPingColor = "^1"; else strPlayerPingColor = "^2"; if((autocvar_sv_fragmessage_information_stats) && (enPlayer.health >= 1)) - strMessage = strcat(strMessage, "\n^7(Health ^1", ftos(nPlayerHealth), "^7 / Armor ^2", ftos(nPlayerArmor), "^7)"); + strMessage = strcat(strMessage, "^7(Health ^1", ftos(nPlayerHealth), "^7 / Armor ^2", ftos(nPlayerArmor), "^7)"); if(autocvar_sv_fragmessage_information_ping) { if(clienttype(enPlayer) == CLIENTTYPE_BOT) // Bots have no ping @@ -113,12 +114,16 @@ string GetAdvancedDeathReports(entity enPlayer) // Extra fragmessage information } else if(autocvar_sv_fragmessage_information_handicap) { if(autocvar_sv_fragmessage_information_handicap == 2) if(nPlayerHandicap <= 1) - strMessage = strcat(strMessage, "\n^7(Handicap ^2Off^7)"); + strMessage = strcat(strMessage, "^7(Handicap ^2Off^7)"); else - strMessage = strcat(strMessage, "\n^7(Handicap ^2", ftos(nPlayerHandicap), "^7)"); + strMessage = strcat(strMessage, "^7(Handicap ^2", ftos(nPlayerHandicap), "^7)"); else if(nPlayerHandicap > 1) - strMessage = strcat(strMessage, "\n^7(Handicap ^2", ftos(nPlayerHandicap), "^7)"); + strMessage = strcat(strMessage, "^7(Handicap ^2", ftos(nPlayerHandicap), "^7)"); } + + if(strMessage) // add new line to the beginning if there is a message + strMessage = strcat("\n", strMessage); + return strMessage; } void bcenterprint(string s) @@ -581,6 +586,7 @@ void GetCvars(float f) GetCvars_handleFloat(s, f, cvar_cl_playerdetailreduction, "cl_playerdetailreduction"); GetCvars_handleString(s, f, cvar_g_xonoticversion, "g_xonoticversion"); GetCvars_handleFloat(s, f, cvar_cl_handicap, "cl_handicap"); + GetCvars_handleFloat(s, f, cvar_cl_clippedspectating, "cl_clippedspectating"); GetCvars_handleString_Fixup(s, f, cvar_cl_weaponpriority, "cl_weaponpriority", W_FixWeaponOrder_ForceComplete_AndBuildImpulseList); GetCvars_handleString_Fixup(s, f, cvar_cl_weaponpriorities[0], "cl_weaponpriority0", W_FixWeaponOrder_AllowIncomplete); GetCvars_handleString_Fixup(s, f, cvar_cl_weaponpriorities[1], "cl_weaponpriority1", W_FixWeaponOrder_AllowIncomplete); @@ -717,12 +723,6 @@ float NumberToTeamNumber(float number) return -1; } -void Send_CSQC_Centerprint_Generic(entity e, float id, string s1, float duration, float countdown_num); -void centerprint(entity e, string s) -{ - Send_CSQC_Centerprint_Generic(e, 0, s, 0, 0); -} - // decolorizes and team colors the player name when needed string playername(entity p) { @@ -1278,7 +1278,6 @@ void readlevelcvars(void) // Sound functions string precache_sound (string s) = #19; -void(entity e, float chan, string samp, float vol, float atten) sound_builtin = #8; float precache_sound_index (string s) = #19; #define SND_VOLUME 1 @@ -1310,12 +1309,24 @@ float sound_allowed(float dest, entity e) return TRUE; } +#ifdef COMPAT_XON010_CHANNELS +void(entity e, float chan, string samp, float vol, float atten) sound_builtin = #8; void sound(entity e, float chan, string samp, float vol, float atten) { if (!sound_allowed(MSG_BROADCAST, e)) return; sound_builtin(e, chan, samp, vol, atten); } +#else +#undef sound +void sound(entity e, float chan, string samp, float vol, float atten) +{ + if (!sound_allowed(MSG_BROADCAST, e)) + return; + sound7(e, chan, samp, vol, atten, 0, 0); +} +#endif + void soundtoat(float dest, entity e, vector o, float chan, string samp, float vol, float atten) { float entno, idx; @@ -1336,7 +1347,7 @@ void soundtoat(float dest, entity e, vector o, float chan, string samp, float vo sflags |= SND_VOLUME; if (atten != 64) sflags |= SND_ATTENUATION; - if (entno >= 8192) + if (entno >= 8192 || chan < 0 || chan > 7) sflags |= SND_LARGEENTITY; if (idx >= 256) sflags |= SND_LARGESOUND; @@ -1377,7 +1388,7 @@ void soundto(float dest, entity e, float chan, string samp, float vol, float att } void soundat(entity e, vector o, float chan, string samp, float vol, float atten) { - soundtoat(MSG_BROADCAST, e, o, chan, samp, vol, atten); + soundtoat(((chan & 8) ? MSG_ALL : MSG_BROADCAST), e, o, chan, samp, vol, atten); } void stopsoundto(float dest, entity e, float chan) { @@ -1388,7 +1399,7 @@ void stopsoundto(float dest, entity e, float chan) entno = num_for_edict(e); - if (entno >= 8192) + if (entno >= 8192 || chan < 0 || chan > 7) { float idx, sflags; idx = precache_sound_index("misc/null.wav"); @@ -1426,7 +1437,7 @@ void play2(entity e, string filename) { //stuffcmd(e, strcat("play2 ", filename, "\n")); msg_entity = e; - soundtoat(MSG_ONE, world, '0 0 0', CHAN_AUTO, filename, VOL_BASE, ATTN_NONE); + soundtoat(MSG_ONE, world, '0 0 0', CH_INFO, filename, VOL_BASE, ATTN_NONE); } // use this one if you might be causing spam (e.g. from touch functions that might get called more than once per frame) @@ -1464,7 +1475,7 @@ void play2all(string samp) if (autocvar_bot_sound_monopoly) return; - sound(world, CHAN_AUTO, samp, VOL_BASE, ATTN_NONE); + sound(world, CH_INFO, samp, VOL_BASE, ATTN_NONE); } void PrecachePlayerSounds(string f); @@ -2003,17 +2014,21 @@ float SUB_NoImpactCheck() #define SUB_OwnerCheck() (other && (other == self.owner)) +void RemoveGrapplingHook(entity pl); float WarpZone_Projectile_Touch_ImpactFilter_Callback() { if(SUB_OwnerCheck()) return TRUE; if(SUB_NoImpactCheck()) { - remove(self); + if(self.classname == "grapplinghook") + RemoveGrapplingHook(self.realowner); + else + remove(self); return TRUE; } if(trace_ent && trace_ent.solid > SOLID_TRIGGER) - UpdateCSQCProjectileNextFrame(self); + UpdateCSQCProjectile(self); return FALSE; } #define PROJECTILE_TOUCH if(WarpZone_Projectile_Touch()) return @@ -2031,7 +2046,11 @@ void URI_Get_Callback(float id, float status, string data) dprint(data); dprint("\nEnd of data.\n"); - if (id == URI_GET_DISCARD) + if(url_URI_Get_Callback(id, status, data)) + { + // handled + } + else if (id == URI_GET_DISCARD) { // discard } @@ -3112,3 +3131,23 @@ float LostMovetypeFollow(entity ent) } return 0; } + +float isPushable(entity e) +{ + if(e.iscreature) + return TRUE; + switch(e.classname) + { + case "body": + case "droppedweapon": + case "keepawayball": + case "nexball_basketball": + case "nexball_football": + return TRUE; + case "bullet": // antilagged bullets can't hit this either + return FALSE; + } + if (e.projectiledeathtype) + return TRUE; + return FALSE; +}