X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fclient.qc;h=ee87e2ea286015561b4ae48d76b26e3f2dee47fd;hb=0dec7bcf5fa101452e59fe30b74daf24251d93e8;hp=01c8222e62de1597fb561a31590f8bcb164e9b04;hpb=e2516570a59a8cfb46c528d6d50cbb2d6a39b32b;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/client.qc b/qcsrc/server/client.qc index 01c8222e6..ee87e2ea2 100644 --- a/qcsrc/server/client.qc +++ b/qcsrc/server/client.qc @@ -622,7 +622,10 @@ void PutPlayerInServer(entity this) this.angles = spot.angles; this.angles_z = 0; // never spawn tilted even if the spot says to if (IS_BOT_CLIENT(this)) + { this.v_angle = this.angles; + bot_aim_reset(this); + } this.fixangle = true; // turn this way immediately this.oldvelocity = this.velocity = '0 0 0'; this.avelocity = '0 0 0'; @@ -1054,6 +1057,8 @@ string getwelcomemessage(entity this) return s; } +bool autocvar_sv_qcphysics = false; // TODO this is for testing - remove when qcphysics work + /** ============= ClientConnect @@ -1146,7 +1151,7 @@ void ClientConnect(entity this) if (IS_REAL_CLIENT(this)) sv_notice_join(this); - this.move_qcphysics = true; + this.move_qcphysics = autocvar_sv_qcphysics; // update physics stats (players can spawn before physics runs) Physics_UpdateStats(this); @@ -2708,7 +2713,7 @@ int Say(entity source, int teamsay, entity privatesay, string msgin, bool floodc teamsay = false; } - if(game_stopped) + if (intermission_running) teamsay = false; if (!source) { @@ -2741,6 +2746,24 @@ int Say(entity source, int teamsay, entity privatesay, string msgin, bool floodc int privatemsgprefixlen = 0; if (msgin != "") { + bool found_me = false; + if(strstrofs(msgin, "/me", 0) >= 0) + { + string newmsgin = ""; + string newnamestr = ((teamsay) ? strcat(colorstr, "(", colorprefix, namestr, colorstr, ")", colorprefix) : strcat(colorprefix, namestr, colorprefix)); + FOREACH_WORD(msgin, true, + { + if(strdecolorize(it) == "/me") + { + found_me = true; + newmsgin = cons(newmsgin, newnamestr); + } + else + newmsgin = cons(newmsgin, it); + }); + msgin = newmsgin; + } + if(privatesay) { msgstr = strcat("\{1}\{13}* ", colorprefix, namestr, "^3 tells you: ^7"); @@ -2751,11 +2774,11 @@ int Say(entity source, int teamsay, entity privatesay, string msgin, bool floodc } else if(teamsay) { - if(strstrofs(msgin, "/me", 0) >= 0) + if(found_me) { //msgin = strreplace("/me", "", msgin); //msgin = substring(msgin, 3, strlen(msgin)); - msgin = strreplace("/me", strcat(colorstr, "(", colorprefix, namestr, colorstr, ")^7"), msgin); + //msgin = strreplace("/me", strcat(colorstr, "(", colorprefix, namestr, colorstr, ")^7"), msgin); msgstr = strcat("\{1}\{13}^4* ", "^7", msgin); } else @@ -2764,12 +2787,12 @@ int Say(entity source, int teamsay, entity privatesay, string msgin, bool floodc } else { - if(strstrofs(msgin, "/me", 0) >= 0) + if(found_me) { //msgin = strreplace("/me", "", msgin); //msgin = substring(msgin, 3, strlen(msgin)); - msgin = strreplace("/me", strcat(colorprefix, namestr), msgin); - msgstr = strcat("\{1}^4* ", "^7", msgin); + //msgin = strreplace("/me", strcat(colorprefix, namestr), msgin); + msgstr = strcat("\{1}^4* ^7", msgin); } else { msgstr = "\{1}"; @@ -2924,6 +2947,8 @@ int Say(entity source, int teamsay, entity privatesay, string msgin, bool floodc MUTATOR_CALLHOOK(ChatMessage, source, ret); ret = M_ARGV(1, int); + string event_log_msg = ""; + if(sourcemsgstr != "" && ret != 0) { if(ret < 0) // faked message, because the player is muted @@ -2950,6 +2975,8 @@ int Say(entity source, int teamsay, entity privatesay, string msgin, bool floodc FOREACH_CLIENT(IS_REAL_CLIENT(it) && it != source && CS(it).active_minigame == CS(source).active_minigame && !MUTATOR_CALLHOOK(ChatMessageTo, it, source), { sprint(it, msgstr); }); + event_log_msg = sprintf(":chat_minigame:%d:%s:%s", source.playerid, CS(source).active_minigame.netname, msgin); + } else if(teamsay > 0) // team message, only sent to team mates { @@ -2962,6 +2989,7 @@ int Say(entity source, int teamsay, entity privatesay, string msgin, bool floodc if(cmsgstr != "") centerprint(it, cmsgstr); }); + event_log_msg = sprintf(":chat_team:%d:%d:%s", source.playerid, source.team, strreplace("\n", " ", msgin)); } else if(teamsay < 0) // spectator message, only sent to spectators { @@ -2970,6 +2998,7 @@ int Say(entity source, int teamsay, entity privatesay, string msgin, bool floodc FOREACH_CLIENT(!(IS_PLAYER(it) || it.caplayer) && IS_REAL_CLIENT(it) && it != source && !MUTATOR_CALLHOOK(ChatMessageTo, it, source), { sprint(it, msgstr); }); + event_log_msg = sprintf(":chat_spec:%d:%s", source.playerid, strreplace("\n", " ", msgin)); } else { @@ -2981,9 +3010,14 @@ int Say(entity source, int teamsay, entity privatesay, string msgin, bool floodc FOREACH_CLIENT(IS_REAL_CLIENT(it) && it != source && !MUTATOR_CALLHOOK(ChatMessageTo, it, source), { sprint(it, msgstr); }); + event_log_msg = sprintf(":chat:%d:%s", source.playerid, strreplace("\n", " ", msgin)); } } + if (autocvar_sv_eventlog && (event_log_msg != "")) { + GameLogEcho(event_log_msg); + } + return ret; }