From 70b5caf1591575f1fd8df38f2917902a9af512ce Mon Sep 17 00:00:00 2001 From: Resxt <55228336+Resxt@users.noreply.github.com> Date: Sat, 21 Jan 2023 03:53:50 +0100 Subject: [PATCH] mapvote 2.1.0 Made it possible to have a default randomized map and mode from a user defined list when the human players count is between two values defined by the user Added dvar mapvote_default_rotation_maps Added dvar mapvote_default_rotation_modes (MP only) Added dvar mapvote_default_rotation_min_players Added dvar mapvote_default_rotation_max_players --- mapvote/README.md | 7 +++ mapvote/mapvote.gsc | Bin 19109 -> 20133 bytes mapvote/mapvote_mp_extend.gsc | Bin 716 -> 668 bytes mapvote/mapvote_zm_extend.gsc | Bin 3043 -> 3007 bytes mapvote/source/mapvote-source.gsc | 56 +++++++++++++++++++- mapvote/source/mapvote_mp_extend-source.gsc | 12 ++--- mapvote/source/mapvote_zm_extend-source.gsc | 3 +- 7 files changed, 68 insertions(+), 10 deletions(-) diff --git a/mapvote/README.md b/mapvote/README.md index 9816125..2e94130 100644 --- a/mapvote/README.md +++ b/mapvote/README.md @@ -77,6 +77,10 @@ Here are the dvars you can configure: | mapvote_blur_fade_in_time | The time (in seconds) it takes for the blur to reach `mapvote_blur_level`. For example if you set it to 10 and `mapvote_blur_level` is 5 then it will progressively blur the screen from 0 to 5 in 10 seconds | 2 | Any number | | mapvote_horizontal_spacing | The horizontal spacing between the map/mode names on the left and the vote counts on the right. I recommend setting this value according to the longest map or mode name length so that it doesn't overlap with the vote counts | 75 | Any plain number | | mapvote_display_wait_time | Once the killcam ends, the time to wait before displaying the vote menu (in seconds) | 1 | Any number superior or equal to 0.05 | +| mapvote_default_rotation_maps | A list of the maps that are available for default rotation | "Hijacked:Raid:Nuketown" | Any map name. Each map is separated with a colon (:) | +| mapvote_default_rotation_modes | A list of the modes that are available for default rotation. It needs to be the name of a CFG file | "tdm" | Any cfg file name. Each cfg file name is separated with a colon (:) | +| mapvote_default_rotation_min_players | The minimum amount of human players required to rotate the default rotation instead of showing the mapvote. If the human players count is smaller than this then it will display the mapvote | 0 | Any plain number from 0 to 18 | +| mapvote_default_rotation_max_players | The maximum amount of human players required to rotate the default rotation instead of showing the mapvote. If the human players count is higher than this then it will display the mapvote | 0 | Any plain number from 0 to 18 | @@ -101,6 +105,9 @@ Here are the dvars you can configure: | mapvote_blur_fade_in_time | The time (in seconds) it takes for the blur to reach `mapvote_blur_level`. For example if you set it to 10 and `mapvote_blur_level` is 5 then it will progressively blur the screen from 0 to 5 in 10 seconds | 2 | Any number | | mapvote_horizontal_spacing | The horizontal spacing between the map names on the left and the vote counts on the right. I recommend setting this value according to the longest map name length so that it doesn't overlap with the vote counts | 75 | Any plain number | | mapvote_display_wait_time | Once the game over screen ends, the time to wait before displaying the vote menu (in seconds) | 1 | Any number above 0.05 | +| mapvote_default_rotation_maps | A list of the maps that are available for default rotation | "Town,zm_standard_town:Farm,zm_standard_farm" | The map name followed by a comma (,) and then the CFG file name. Each block is separated with a colon (:) | +| mapvote_default_rotation_min_players | The minimum amount of human players required to rotate the default rotation instead of showing the mapvote. If the human players count is smaller than this then it will display the mapvote | 0 | Any plain number from 0 to 18 | +| mapvote_default_rotation_max_players | The maximum amount of human players required to rotate the default rotation instead of showing the mapvote. If the human players count is higher than this then it will display the mapvote | 0 | Any plain number from 0 to 18 | diff --git a/mapvote/mapvote.gsc b/mapvote/mapvote.gsc index bd8de46f51d57270a0ac4a2a83fe98a7df1537cf..342ec22b8a28f61f4d89ec50164a8e2f10d5d6e9 100644 GIT binary patch delta 7441 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 delta 6496 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 aggf&Q?!y1c-T4^z`kY-@e zXE0-71e(vlFa=0X1~GtO50JeANUva6&H!XG&IJ+|7`B4hOMvXhU~wjSo;uhnxQK?M~! zl?XTS(i^0{k>BDw6aFSt>@ZKwl(+N(R(Jm;EDY6IxFl<-=@$B z&o5!FbM=8-b$B+f(jO98!n5*7R7AJ4mXjgpDSX=XjoE`Q0JDQlTS-Giq?x>NgPu7??=G2E_X44Zc$LX-l*9K2K7~&? zH)boJDeSGz7*mUkx`W$;+jMl?J-u{=w^ZAgOH^5Q25x#;6Wr@q9) J2)Z&g@U6Mj$B?At50|i=`JLC8m)=P(~4X`0=mJtoJR;+^e@md2J? z^JuqTHbJ3xjqO`+KX{w73rGLj7B5*&t#5fDo+v($QAq_@7ax$@q9VG3xs;4KufwNZ z-I#iOA=4AMfQQue+v|9~b7M#Ft4DFCyNMK6+gNTi#*agCno zq;{A5RJVb^Lwv8vEc6v`@O=^g?%bH2{JsKjxyP7R{E&08V|diLnis*O$mvXz4X~i^ zrUbv0X|mP$pzoLPapz*M;m`g09emokF?0AQ--Vm{;oRD7_@eIz@P4*dk>uE4#OPu8 zirvpkmNw(3NDsL}hR6dlNoL3|QbcbVsUj&+JxVPlp2T4VwQ5e8r78oAYgKg$HZTq{ z*TFak_Q2#? 0 && humanPlayersCount >= GetDvarInt("mapvote_default_rotation_min_players") && humanPlayersCount <= GetDvarInt("mapvote_default_rotation_max_players")) + { + return true; + } + + return false; +} + +RotateDefault() +{ + mapName = ""; + modeCfg = ""; + + if (IsMultiplayerMode()) + { + modeCfg = GetRandomElementInArray(StrTok(GetDvar("mapvote_default_rotation_modes"), ":")); + mapName = GetMapCodeName(GetRandomElementInArray(StrTok(GetDvar("mapvote_default_rotation_maps"), ":"))); + } + else + { + data = GetRandomElementInArray(StrTok(GetDvar("mapvote_default_rotation_maps"), ":")); + dataSplitted = StrTok(data, ","); + + modeCfg = dataSplitted[1]; + mapName = GetMapCodeName(dataSplitted[0]); + } + + SetDvar("sv_maprotationcurrent", "exec " + modeCfg + ".cfg map " + mapName); + SetDvar("sv_maprotation", "exec " + modeCfg + ".cfg map " + mapName); +} + +DoRotation() +{ + if (ShouldRotateDefault()) + { + RotateDefault(); + } + else + { + StartVote(); + ListenForEndVote(); + } +} + /* HUD section */ diff --git a/mapvote/source/mapvote_mp_extend-source.gsc b/mapvote/source/mapvote_mp_extend-source.gsc index 2186f73..0578e19 100644 --- a/mapvote/source/mapvote_mp_extend-source.gsc +++ b/mapvote/source/mapvote_mp_extend-source.gsc @@ -14,19 +14,19 @@ OnKillcamEnd() { if (isRoundBased() && !wasLastRound()) return false; - wait GetDvarInt("mapvote_display_wait_time"); - [[level.mapvote_start_function]](); - [[level.mapvote_end_function]](); + wait GetDvarInt("mapvote_display_wait_time"); + [[level.mapvote_rotate_function]](); + return false; } level waittill("final_killcam_done"); if (isRoundBased() && !wasLastRound()) return true; - wait GetDvarInt("mapvote_display_wait_time"); - [[level.mapvote_start_function]](); - [[level.mapvote_end_function]](); + wait GetDvarInt("mapvote_display_wait_time"); + [[level.mapvote_rotate_function]](); + return true; } \ No newline at end of file diff --git a/mapvote/source/mapvote_zm_extend-source.gsc b/mapvote/source/mapvote_zm_extend-source.gsc index 05ca19c..b564734 100644 --- a/mapvote/source/mapvote_zm_extend-source.gsc +++ b/mapvote/source/mapvote_zm_extend-source.gsc @@ -35,8 +35,7 @@ OnIntermissionStart() wait GetDvarInt("mapvote_display_wait_time"); - [[level.mapvote_start_function]](); - [[level.mapvote_end_function]](); + [[level.mapvote_rotate_function]](); for (i = 0; i < level.players.size; i++) {