X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fmapvoting.qc;h=8d747e254e5f8a9da7afa9043019e097c206f6e4;hb=969dc49d01d650a812706aba16c765af488605d0;hp=638b40f65e52f18580b46c5ab890e2e3a4fc118b;hpb=387c8741f204da7abe419adbdbccccaa8110d20d;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/mapvoting.qc b/qcsrc/server/mapvoting.qc index 638b40f65..8d747e254 100644 --- a/qcsrc/server/mapvoting.qc +++ b/qcsrc/server/mapvoting.qc @@ -1,5 +1,9 @@ #include "mapvoting.qh" +#include +#include +#include +#include #include "g_world.qh" #include "command/cmd.qh" #include "command/getreplies.qh" @@ -7,6 +11,7 @@ #include #include "../common/mapinfo.qh" #include "../common/playerstats.qh" +#include #include "../common/util.qh" @@ -43,10 +48,10 @@ entity mapvote_ent; */ Gametype GameTypeVote_Type_FromString(string type_name) { - Gametype type = MapInfo_Type_FromString(type_name); + Gametype type = MapInfo_Type_FromString(type_name, false); if (type == NULL) type = MapInfo_Type_FromString(cvar_string( - strcat("sv_vote_gametype_",type_name,"_type"))); + strcat("sv_vote_gametype_",type_name,"_type")), false); return type; } @@ -54,11 +59,11 @@ int GameTypeVote_AvailabilityStatus(string type_name) { int flag = GTV_FORBIDDEN; - Gametype type = MapInfo_Type_FromString(type_name); + Gametype type = MapInfo_Type_FromString(type_name, false); if ( type == NULL ) { type = MapInfo_Type_FromString(cvar_string( - strcat("sv_vote_gametype_",type_name,"_type"))); + strcat("sv_vote_gametype_",type_name,"_type")), false); flag |= GTV_CUSTOM; } @@ -99,23 +104,15 @@ string GameTypeVote_MapInfo_FixName(string m) void MapVote_ClearAllVotes() { - FOREACH_CLIENT(true, LAMBDA(it.mapvote = 0)); + FOREACH_CLIENT(true, { it.mapvote = 0; }); } void MapVote_UnzoneStrings() { for(int j = 0; j < mapvote_count; ++j) { - if ( mapvote_maps[j] ) - { - strunzone(mapvote_maps[j]); - mapvote_maps[j] = string_null; - } - if ( mapvote_maps_pakfile[j] ) - { - strunzone(mapvote_maps_pakfile[j]); - mapvote_maps_pakfile[j] = string_null; - } + strfree(mapvote_maps[j]); + strfree(mapvote_maps_pakfile[j]); } } @@ -453,7 +450,7 @@ bool MapVote_Finished(int mappos) GameLogEcho(strcat(":vote:suggestion_accepted:", mapvote_maps[mappos])); } - FOREACH_CLIENT(IS_REAL_CLIENT(it), LAMBDA(FixClientCvars(it))); + FOREACH_CLIENT(IS_REAL_CLIENT(it), { FixClientCvars(it); }); if(gametypevote) { @@ -530,7 +527,7 @@ bool MapVote_CheckRules_2() } } firstPlaceVotes = RandomSelection_best_priority; - if ( autocvar_sv_vote_gametype_default_current && currentVotes == firstPlaceVotes ) + if ( autocvar_sv_vote_gametype_default_current && firstPlaceVotes == 0 ) firstPlace = currentPlace; else firstPlace = RandomSelection_chosen_float; @@ -594,12 +591,12 @@ void MapVote_Tick() return; int totalvotes = 0; - FOREACH_CLIENT(IS_REAL_CLIENT(it), LAMBDA( + FOREACH_CLIENT(IS_REAL_CLIENT(it), { // hide scoreboard again - if(it.health != 2342) + if(GetResource(it, RES_HEALTH) != 2342) { - it.health = 2342; - it.impulse = 0; + SetResourceExplicit(it, RES_HEALTH, 2342); + CS(it).impulse = 0; msg_entity = it; WriteByte(MSG_ONE, SVC_FINALE); @@ -610,17 +607,17 @@ void MapVote_Tick() if ( !(mapvote_maps_flags[it.mapvote-1] & GTV_AVAILABLE) ) it.mapvote = 0; // use impulses as new vote - if(it.impulse >= 1 && it.impulse <= mapvote_count) - if( mapvote_maps_flags[it.impulse - 1] & GTV_AVAILABLE ) + if(CS(it).impulse >= 1 && CS(it).impulse <= mapvote_count) + if( mapvote_maps_flags[CS(it).impulse - 1] & GTV_AVAILABLE ) { - it.mapvote = it.impulse; + it.mapvote = CS(it).impulse; MapVote_TouchVotes(it); } - it.impulse = 0; + CS(it).impulse = 0; if(it.mapvote) ++totalvotes; - )); + }); MapVote_CheckRules_1(); // just count } @@ -731,14 +728,14 @@ bool GameTypeVote_Finished(int pos) if(!gametypevote || gametypevote_finished) return false; + localcmd("sv_vote_gametype_hook_all\n"); + localcmd("sv_vote_gametype_hook_", mapvote_maps[pos], "\n"); + if ( !GameTypeVote_SetGametype(GameTypeVote_Type_FromString(mapvote_maps[pos])) ) { LOG_TRACE("Selected gametype is not supported by any map"); } - localcmd("sv_vote_gametype_hook_all\n"); - localcmd("sv_vote_gametype_hook_", mapvote_maps[pos], "\n"); - gametypevote_finished = true; return true;