X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fg_world.qc;h=4628aef459f4a798df89dcb2868c972a0ff225f6;hb=aaa3b7d4a08f8271df86b2aad2e88fa616b5e7e2;hp=b351d77615732eb249be7c7c775c3bdbb017ceba;hpb=7316a9aaa0fbc3cf415eb52c1e96f76d360b4024;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/g_world.qc b/qcsrc/server/g_world.qc index b351d7761..4628aef45 100644 --- a/qcsrc/server/g_world.qc +++ b/qcsrc/server/g_world.qc @@ -272,7 +272,21 @@ void cvar_changes_init() BADCVAR("bgmvolume"); // private + BADCVAR("developer"); + BADCVAR("g_banned_list"); + BADCVAR("log_dest_udp"); + BADCVAR("log_file"); + BADCVAR("net_address"); + BADCVAR("net_address_ipv6"); + BADCVAR("port"); + BADCVAR("savedgamecfg"); BADCVAR("serverconfig"); + BADCVAR("sv_heartbeatperiod"); + BADCVAR("sv_vote_master_password"); + BADCVAR("sys_colortranslation"); + BADCVAR("sys_specialcharactertranslation"); + BADCVAR("timestamps"); + BADPREFIX("developer_"); BADPREFIX("g_ban_"); BADPREFIX("g_chat_flood_"); BADPREFIX("g_voice_flood_"); @@ -284,22 +298,13 @@ void cvar_changes_init() BADPREFIX("sv_eventlog"); BADPREFIX("sv_logscores_"); BADPREFIX("sv_master"); - BADCVAR("g_banned_list"); - BADCVAR("log_dest_udp"); - BADCVAR("log_file"); - BADCVAR("net_address"); - BADCVAR("port"); - BADCVAR("savedgamecfg"); - BADCVAR("sv_heartbeatperiod"); - BADCVAR("sv_vote_master_password"); - BADCVAR("sys_colortranslation"); - BADCVAR("sys_specialcharactertranslation"); - BADCVAR("timestamps"); - BADCVAR("net_address"); - BADCVAR("net_address_ipv6"); BADPREFIX("sv_weaponstats_"); - BADCVAR("developer"); - BADPREFIX("developer_"); + + // these can contain player IDs, so better hide + BADCVAR("g_forced_team_red"); + BADCVAR("g_forced_team_blue"); + BADCVAR("g_forced_team_yellow"); + BADCVAR("g_forced_team_pink"); // mapinfo BADCVAR("timelimit"); @@ -363,6 +368,7 @@ void cvar_changes_init() BADCVAR("sv_checkforpacketsduringsleep"); BADPREFIX("crypto_"); BADPREFIX("g_chat_"); + BADPREFIX("net_"); BADPREFIX("prvm_"); BADPREFIX("sv_fragmessage_"); BADPREFIX("sv_vote_"); @@ -403,6 +409,7 @@ void cvar_changes_init() BADCVAR("g_maplist_votable_abstain"); BADCVAR("g_maplist_votable_nodetail"); BADCVAR("g_maplist_votable_suggestions"); + BADCVAR("g_minstagib"); BADCVAR("g_nexball_goallimit"); BADCVAR("g_runematch_point_limit"); BADCVAR("g_start_delay"); @@ -420,6 +427,7 @@ void cvar_changes_init() BADCVAR("sv_autoscreenshot"); BADCVAR("sv_curl_defaulturl"); BADCVAR("sv_defaultcharacter"); + BADCVAR("sv_defaultplayercolors"); BADCVAR("sv_defaultplayermodel"); BADCVAR("sv_defaultplayerskin"); BADCVAR("sv_maxidle"); @@ -436,6 +444,12 @@ void cvar_changes_init() BADCVAR("sv_vote_master_password"); BADCVAR("sv_vote_simple_majority_factor"); BADCVAR("timelimit_override"); + + if(cvar("g_minstagib")) + { + BADCVAR("g_grappling_hook"); + BADCVAR("g_jetpack"); + } #undef BADPREFIX #undef BADCVAR @@ -449,6 +463,12 @@ void cvar_changes_init() } } ++cvar_purechanges_count; + // WARNING: this variable is used for the server list + // NEVER dare to skip this code! + // Hacks to intentionally appearing as "pure server" even though you DO have + // modified settings may be punished by removal from the server list. + // You can do to the variables cvar_changes and cvar_purechanges all you want, + // though. } buf_del(h); if(cvar_changes == "") @@ -686,24 +706,34 @@ void spawnfunc_worldspawn (void) MUTATOR_CALLHOOK(BuildMutatorsString); s = ret_string; + // simple, probably not good in the mutator system if(cvar("g_grappling_hook")) s = strcat(s, ":grappling_hook"); + + // initialiation stuff, not good in the mutator system if(!cvar("g_use_ammunition")) s = strcat(s, ":no_use_ammunition"); + + // initialiation stuff, not good in the mutator system if(!cvar("g_pickup_items")) s = strcat(s, ":no_pickup_items"); + + // initialiation stuff, not good in the mutator system if(cvar_string("g_weaponarena") != "0") s = strcat(s, ":", cvar_string("g_weaponarena"), " arena"); - if(cvar("g_vampire")) - s = strcat(s, ":vampire"); - if(cvar("g_laserguided_missile")) - s = strcat(s, ":laserguided_missile"); + + // TODO to mutator system if(cvar("g_norecoil")) s = strcat(s, ":norecoil"); + + // TODO to mutator system if(cvar("g_midair")) s = strcat(s, ":midair"); + + // TODO to mutator system if(cvar("g_minstagib")) s = strcat(s, ":minstagib"); + GameLogEcho(s); GameLogEcho(":gameinfo:end"); } @@ -771,14 +801,13 @@ void spawnfunc_worldspawn (void) addstat(STAT_INVINCIBLE_FINISHED, AS_FLOAT, invincible_finished); addstat(STAT_PRESSED_KEYS, AS_FLOAT, pressedkeys); addstat(STAT_FUEL, AS_INT, ammo_fuel); - addstat(STAT_DAMAGE_HITS, AS_INT, stat_hit); - addstat(STAT_DAMAGE_FIRED, AS_INT, stat_fired); addstat(STAT_SHOTORG, AS_INT, stat_shotorg); addstat(STAT_LEADLIMIT, AS_FLOAT, stat_leadlimit); addstat(STAT_BULLETS_LOADED, AS_INT, campingrifle_bulletcounter); addstat(STAT_LAST_PICKUP, AS_FLOAT, last_pickup); addstat(STAT_NEX_CHARGE, AS_FLOAT, nex_charge); + addstat(STAT_NEX_CHARGEPOOL, AS_FLOAT, nex_charge_pool_ammo); if(g_ca) { @@ -787,6 +816,7 @@ void spawnfunc_worldspawn (void) } // g_movementspeed hack addstat(STAT_MOVEVARS_AIRSPEEDLIMIT_NONQW, AS_FLOAT, stat_sv_airspeedlimit_nonqw); + addstat(STAT_MOVEVARS_MAXSPEED, AS_FLOAT, stat_sv_maxspeed); addstat(STAT_MOVEVARS_AIRACCEL_QW, AS_FLOAT, stat_sv_airaccel_qw); addstat(STAT_MOVEVARS_AIRSTRAFEACCEL_QW, AS_FLOAT, stat_sv_airstrafeaccel_qw); @@ -1512,8 +1542,6 @@ only called if a time or frag limit has expired */ void NextLevel() { - float i; - gameover = TRUE; intermission_running = 1; @@ -1542,52 +1570,10 @@ void NextLevel() GameLogClose(); -// TO DO - -// save the stats to a text file on the client -// stuffcmd(other, log_stats "stats/file_name"); -// bprint stats -// stuffcmd(other, log_stats ""); -// use a filename similar to the demo name - // string file_name; - // file_name = strcat("\nlog_file \"stats/", strftime(TRUE, "%Y-%m-%d_%H-%M"), "_", mapname, ".txt\""); // open the log file - -// write a stats parser for the menu - - if(cvar("sv_accuracy_data_send")) { - string stats_to_send; - - FOR_EACH_CLIENT(other) { // make the string to send - FixIntermissionClient(other); - - if(other.cvar_cl_accuracy_data_share) { - stats_to_send = strcat(stats_to_send, ":hits:", other.netname); - - for(i = WEP_FIRST; i <= WEP_LAST; ++i) - stats_to_send = strcat(stats_to_send, ":", ftos(other.stats_hit[i-1])); - - stats_to_send = strcat(stats_to_send, "\n:fired:", other.netname); - - for(i = WEP_FIRST; i <= WEP_LAST; ++i) - stats_to_send = strcat(stats_to_send, ":", ftos(other.stats_fired[i-1])); - - stats_to_send = strcat(stats_to_send, "\n"); - } - } - - FOR_EACH_REALCLIENT(other) { // only spam humans - Score_NicePrint(other); // print the score - - if(other.cvar_cl_accuracy_data_receive) // send the stats string to all the willing clients - bprint(stats_to_send); - } - } else { // ye olde message - FOR_EACH_PLAYER(other) { - FixIntermissionClient(other); - - if(other.winning) - bprint(other.netname, " ^7wins.\n"); - } + FOR_EACH_PLAYER(other) { + FixIntermissionClient(other); + if(other.winning) + bprint(other.netname, " ^7wins.\n"); } if(cvar("g_campaign"))