-Wed Feb 3 07:23:37 CET 2021
+Sat Feb 27 07:23:43 CET 2021
"Project-Id-Version: Xonotic\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-31 07:23+0100\n"
-"PO-Revision-Date: 2021-01-31 06:23+0000\n"
-"Last-Translator: divVerent <divVerent@xonotic.org>\n"
+"PO-Revision-Date: 2021-02-25 13:50+0000\n"
+"Last-Translator: Mirio <opivy@hotmail.de>\n"
"Language-Team: German (http://www.transifex.com/team-xonotic/xonotic/"
"language/de/)\n"
"Language: de\n"
#: qcsrc/client/hud/panel/scoreboard.qc:1371
msgid "Item stats"
-msgstr ""
+msgstr "Gegenstands-Statistik"
#: qcsrc/client/hud/panel/scoreboard.qc:1482
msgid "Map stats:"
"Project-Id-Version: Xonotic\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-31 07:23+0100\n"
-"PO-Revision-Date: 2021-01-31 06:23+0000\n"
-"Last-Translator: divVerent <divVerent@xonotic.org>\n"
+"PO-Revision-Date: 2021-02-25 13:50+0000\n"
+"Last-Translator: Mirio <opivy@hotmail.de>\n"
"Language-Team: German (http://www.transifex.com/team-xonotic/xonotic/"
"language/de/)\n"
"Language: de\n"
#: qcsrc/client/hud/panel/scoreboard.qc:1371
msgid "Item stats"
-msgstr ""
+msgstr "Gegenstands-Statistik"
#: qcsrc/client/hud/panel/scoreboard.qc:1482
msgid "Map stats:"
# RedGuff <domsau2@yahoo.fr>, 2014
# Yannick Le Guen <leguen.yannick@gmail.com>, 2013
# Hugo Locurcio, 2013
-# Yannick Le Guen <leguen.yannick@gmail.com>, 2013-2020
+# Yannick Le Guen <leguen.yannick@gmail.com>, 2013-2021
msgid ""
msgstr ""
"Project-Id-Version: Xonotic\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-31 07:23+0100\n"
-"PO-Revision-Date: 2021-01-31 06:23+0000\n"
-"Last-Translator: divVerent <divVerent@xonotic.org>\n"
+"PO-Revision-Date: 2021-02-26 22:43+0000\n"
+"Last-Translator: Yannick Le Guen <leguen.yannick@gmail.com>\n"
"Language-Team: French (http://www.transifex.com/team-xonotic/xonotic/"
"language/fr/)\n"
"Language: fr\n"
#: qcsrc/client/hud/panel/scoreboard.qc:1371
msgid "Item stats"
-msgstr ""
+msgstr "Stats objet"
#: qcsrc/client/hud/panel/scoreboard.qc:1482
msgid "Map stats:"
# Translators:
# nad le <nadavlevi726@gmail.com>, 2018
# Omer I.S., 2020
-# Omeritzics Games <omeritzicschwartz@gmail.com>, 2020
-# Omeritzics Games <omeritzicschwartz@gmail.com>, 2020
+# Omer I.S. <omeritzicschwartz@gmail.com>, 2020
+# Omer I.S. <omeritzicschwartz@gmail.com>, 2020
# Roi Asher Gerszkoviez <gerszkoviez@gmail.com>, 2020
# Tal Leibman <leibman2@gmail.com>, 2019
msgid ""
ast "Asturian" "Asturianu" 75%
-de "German" "Deutsch" 99%
-de_CH "German (Switzerland)" "Deutsch (Schweiz)" 99%
+de "German" "Deutsch" 100%
+de_CH "German (Switzerland)" "Deutsch (Schweiz)" 100%
en "English" "English" 100%
en_AU "English (Australia)" "English (Australia)" 74%
es "Spanish" "Español" 99%
-fr "French" "Français" 99%
+fr "French" "Français" 100%
ga "Irish" "Irish" 31%
it "Italian" "Italiano" 100%
hu "Hungarian" "Magyar" 46%
set sv_dodging_height_threshold 10 "the maximum height above ground where to allow dodging"
set sv_dodging_wall_distance_threshold 10 "the maximum distance from a wall that still allows dodging"
set sv_dodging_sound 1 "if 1 dodging makes a sound. if 0 dodging is silent"
-set sv_dodging_frozen 0 "allow dodging while frozen"
+set sv_dodging_frozen 0 "allow dodging while frozen (requires g_dodging to be enabled)"
set sv_dodging_frozen_doubletap 0
set sv_dodging_maxspeed 450 "maximum speed a player can be moving at to use the standard dodging from an (almost) standstill"
set sv_dodging_air_maxspeed 450 "maximum speed a player can be moving at before they dodge again when air dodging is enabled"
else
this.team = NUM_TEAM_1;
- spawnfunc_func_breakable(this);
+ func_breakable_setup(this);
}
spawnfunc(func_assault_wall)
speedaward_uid = player.crypto_idfp;
speedaward_lastupdate = time;
}
- if (speedaward_speed > speedaward_lastsent && time - speedaward_lastupdate > 1)
+ if (speedaward_speed > speedaward_lastsent && (time - speedaward_lastupdate > 1 || intermission_running))
{
string rr = CTS_RECORD;
race_send_speedaward(MSG_ALL);
speedaward_uid = player.crypto_idfp;
speedaward_lastupdate = time;
}
- if (speedaward_speed > speedaward_lastsent && time - speedaward_lastupdate > 1)
+ if (speedaward_speed > speedaward_lastsent && (time - speedaward_lastupdate > 1 || intermission_running))
{
string rr = RACE_RECORD;
race_send_speedaward(MSG_ALL);
func_breakable_behave_restore(this);
}
-// destructible walls that can be used to trigger target_objective_decrease
-spawnfunc(func_breakable)
+void func_breakable_setup(entity this)
{
float n, i;
if(!GetResource(this, RES_HEALTH))
}
// for use in maps with a "model" key set
-spawnfunc(misc_breakablemodel) {
- spawnfunc_func_breakable(this);
-}
+spawnfunc(misc_breakablemodel) { func_breakable_setup(this); }
+
+// destructible walls that can be used to trigger target_objective_decrease
+spawnfunc(func_breakable) { func_breakable_setup(this); }
#endif
const int STATE_BROKEN = 1;
#ifdef SVQC
-spawnfunc(func_breakable);
+void func_breakable_setup(entity this);
#endif
#endif
url_fputs(fh, sprintf("l %s\n", cvar_string("_menu_prvm_language"))); // language
url_fputs(fh, sprintf("c %s\n", cvar_string("_menu_prvm_country"))); // country
- url_fputs(fh, sprintf("g %s\n", cvar_string("_cl_gender"))); // gender
url_fputs(fh, sprintf("n %s\n", cvar_string("_cl_name"))); // name
url_fputs(fh, sprintf("m %s %s\n", cvar_string("_cl_playermodel"), cvar_string("_cl_playerskin"))); // model/skin
*/url_fputs(fh, "\n");
#endif
url_fputs(fh, sprintf("l %s\n", cvar_string("_menu_prvm_language"))); // language
//url_fputs(fh, sprintf("c %s\n", cvar_string("_cl_country"))); // country
- //url_fputs(fh, sprintf("g %s\n", cvar_string("_cl_gender"))); // gender
url_fputs(fh, sprintf("n %s\n", cvar_string("_cl_name"))); // name
url_fputs(fh, sprintf("m %s %s\n", cvar_string("_cl_playermodel"), cvar_string("_cl_playerskin"))); // model/skin
url_fputs(fh, "\n");
#ifdef MENUQC
url_fputs(fh, sprintf("l %s\n", cvar_string("_menu_prvm_language"))); // language
url_fputs(fh, sprintf("c %s\n", cvar_string("_menu_prvm_country"))); // country
- url_fputs(fh, sprintf("g %s\n", cvar_string("_cl_gender"))); // gender
url_fputs(fh, sprintf("n %s\n", cvar_string("_cl_name"))); // name
url_fputs(fh, sprintf("m %s %s\n", cvar_string("_cl_playermodel"), cvar_string("_cl_playerskin"))); // model/skin
#endif
me.gotoRC(me, 16, 3.1); me.setFirstColumn(me, me.currentColumn); // BOTTOM SECTION, TOP POS
//me.gotoRC(me, 13.5, 3.1); me.setFirstColumn(me, me.currentColumn); // BOTTOM SECTION, TOP POS
//me.gotoRC(me, 0.5, 3.1); me.setFirstColumn(me, me.currentColumn); // TOP SECTION, TOP POS
- me.TD(me, 1, 3, e = makeXonoticHeaderLabel(_("Country")));
+ //me.TD(me, 1, 3, e = makeXonoticHeaderLabel(_("Country")));
me.TR(me);
me.TDempty(me, 0.75);
me.TD(me, 4.5, 2, e = makeXonoticLanguageList()); // todo: cl_country: create proper country list
*/
-
- // ================
- // GENDER SECTION
- // ================
- me.gotoRC(me, 13.5, 3.1); me.setFirstColumn(me, me.currentColumn); // BOTTOM SECTION, TOP POS
- //me.gotoRC(me, 19.5, 3.1); me.setFirstColumn(me, me.currentColumn); // BOTTOM SECTION, BOTTOM POS
- //me.gotoRC(me, 6.5, 3.1); me.setFirstColumn(me, me.currentColumn); // TOP SECTION, BOTTOM POS
- #if 0
- me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Gender:")));
- me.TD(me, 1, 2, e = makeXonoticTextSlider("_cl_gender"));
- e.addValue(e, _("Undisclosed"), "0");
- e.addValue(e, _("Female"), "1");
- e.addValue(e, _("Male"), "2");
- e.configureXonoticTextSliderValues(e);
- #else
- me.TD(me, 1, 3, e = makeXonoticHeaderLabel(_("Gender")));
- me.TR(me);
- #define GENDERWIDTH_OFFSET 0.25
- #define GENDERWIDTH_LENGTH 2.5
- #define GENDERWIDTH_ITEM (GENDERWIDTH_LENGTH / 3)
- me.TDempty(me, GENDERWIDTH_OFFSET);
- me.TD(me, 1, GENDERWIDTH_ITEM, e = makeXonoticRadioButton(3, "_cl_gender", "2", _("Female")));
- me.TD(me, 1, GENDERWIDTH_ITEM, e = makeXonoticRadioButton(3, "_cl_gender", "1", _("Male")));
- me.TD(me, 1, GENDERWIDTH_ITEM, e = makeXonoticRadioButton(3, "_cl_gender", "0", _("Undisclosed")));
- #endif
-
me.gotoRC(me, me.rows - 1, 0);
me.TD(me, 1, me.columns, profileApplyButton);
}
}
else
{
- entity e = spawn();
+ entity e = new(func_breakable);
e.model = strzone(argv(1));
e.mdl = "rocket_explode";
SetResourceExplicit(e, RES_HEALTH, 1000);
e.angles = fixedvectoangles2(trace_plane_normal, v_forward);
e.angles = AnglesTransform_ApplyToAngles(e.angles, '-90 0 0'); // so unrotated models work
}
- spawnfunc_func_breakable(e);
+ func_breakable_setup(e);
// now, is it valid?
if(f == 0)
{
void GetPressedKeys(entity this)
{
MUTATOR_CALLHOOK(GetPressedKeys, this);
+ if (game_stopped)
+ {
+ CS(this).pressedkeys = 0;
+ STAT(PRESSED_KEYS, this) = 0;
+ return;
+ }
+
int keys = STAT(PRESSED_KEYS, this);
keys = BITSET(keys, KEY_FORWARD, CS(this).movement.x > 0);
keys = BITSET(keys, KEY_BACKWARD, CS(this).movement.x < 0);
DrownPlayer(this);
UpdateChatBubble(this);
if (CS(this).impulse) ImpulseCommands(this);
+ GetPressedKeys(this);
if (game_stopped)
{
CSQCMODEL_AUTOUPDATE(this);
return;
}
- GetPressedKeys(this);
}
else if (IS_OBSERVER(this) && STAT(PRESSED_KEYS, this))
{
case "prespawn": break; // handled by engine in host_cmd.c
case "sentcvar": break; // handled by server in this file
case "spawn": break; // handled by engine in host_cmd.c
- case "color": case "topcolor": case "bottomcolor": if(teamplay) return; else break; // handled by engine in host_cmd.c
+ case "color": case "topcolor": case "bottomcolor": // handled by engine in host_cmd.c
+ if(!IS_CLIENT(this)) // on connection
+ {
+ // since gamecode doesn't have any calls earlier than this, do the connecting message here
+ Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_CONNECTING, this.netname);
+ }
+ if(teamplay)
+ return;
+ break;
case "c2s": Net_ClientCommand(this, command); return; // handled by net.qh
default:
{
SetPlayerColors(player, new_color);
}
- // TODO: Should we really bother with this?
if(!IS_CLIENT(player))
{
- // since this is an engine function, and gamecode doesn't have any calls earlier than this, do the connecting message here
- Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_CONNECTING,
- player.netname);
return;
}
if (!teamplay)
{
return;
}
- Player_SetTeamIndexChecked(player, Team_TeamToIndex((new_color & 0x0F) +
- 1));
+ Player_SetTeamIndexChecked(player, Team_TeamToIndex((new_color & 0x0F) + 1));
}
int TeamBalance_CompareTeamsInternal(entity team_a, entity team_index_b,
entity player, bool use_score);
-/// \brief Called when the player connects or when they change their color with
-/// the "color" command.
+/// \brief Called when the player changes color with the "color" command.
+/// Note that the "color" command is always called early on player connection
/// \param[in,out] player Player that requested a new color.
/// \param[in] new_color Requested color.
void SV_ChangeTeam(entity player, int new_color);
#define BADPREFIX(p) if(substring(k, 0, strlen(p)) == p) continue
#define BADPRESUFFIX(p,s) if(substring(k, 0, strlen(p)) == p && substring(k, -strlen(s), -1) == s) continue
#define BADCVAR(p) if(k == p) continue
+#define BADVALUE(p, val) if (k == p && v == val) continue
// general excludes and namespaces for server admin used cvars
BADPREFIX("help_"); // PN's server has this listed as changed, let's not rat him out for THAT
BADCVAR("sv_vote_master_commands");
BADCVAR("sv_vote_master_password");
BADCVAR("sv_vote_simple_majority_factor");
+ BADVALUE("sys_ticrate", "0.0166667");
+ BADVALUE("sys_ticrate", "0.0333333");
BADCVAR("teamplay_mode");
BADCVAR("timelimit_override");
BADPREFIX("g_warmup_");
BADCVAR("g_lms_weaponarena");
BADCVAR("g_ctf_stalemate_time");
- if(cvar_string("g_mod_balance") == "Testing")
- {
- // (temporary) while using the Testing balance, any weapon balance cvars are allowed to be changed
- BADPREFIX("g_balance_");
- }
-
#undef BADPRESUFFIX
#undef BADPREFIX
#undef BADCVAR
+#undef BADVALUE
if(pureadding)
{
// player defaults
_cl_color "112.211" // same effect as 112, but menuqc can detect this as the default and not intentionally set
_cl_name ""
-seta _cl_gender 0 "storage cvar for current player gender (0 = undisclosed, 1 = male, 2 = female)"
_cl_playerskin 0
seta cl_reticle 1 "enable zoom reticles"