Skip to content

Commit aa91ad5

Browse files
authored
mapcycler: misc. improvements (#305)
* mapcycler: improve settings definitions for admin panel * mapcycler: add hibernate_when_empty option When set to "true", the server will wait until a player joins to cycle maps if it is empty. This is ignored if the cycle mode is "vote" due to a limitation in votemanager (votes cannot be held without a player present).
1 parent 6b63645 commit aa91ad5

File tree

2 files changed

+45
-5
lines changed

2 files changed

+45
-5
lines changed

[managers]/mapcycler/mapcycler.lua

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,28 @@ addEventHandler("onResourceStart", thisResourceRoot,
1717
end
1818
)
1919

20-
addEvent "onRoundFinished"
20+
addEvent("onRoundFinished")
2121

2222
remainingRounds = 0
2323

2424
function roundCounter()
2525
remainingRounds = remainingRounds - 1
2626
if remainingRounds == 0 then
27-
cyclerFunction()
27+
-- if no players are present, wait until a player joins to cycle
28+
if #getElementsByType("player") == 0 and (get("*hibernate_when_empty") == "true" or cycleMode == "vote") then
29+
addEventHandler("onPlayerJoin", root, cycleOnJoin)
30+
outputDebugString("mapcycler: server empty; hibernating until a player joins")
31+
else
32+
cyclerFunction()
33+
end
2834
end
2935
end
3036

37+
function cycleOnJoin()
38+
cyclerFunction()
39+
removeEventHandler("onPlayerJoin", root, cycleOnJoin)
40+
end
41+
3142
function outputCycler(message, toElement)
3243
local r, g, b = getColorFromString(string.upper(get("color")))
3344
outputChatBox(message, toElement or getRootElement(), r, g, b)

[managers]/mapcycler/meta.xml

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,37 @@
77
<script src="vote_mode.lua" type="server"/>
88
<script src="random_mode.lua" type="server"/>
99
<settings>
10-
<setting name="*mode" value="vote" />
11-
<setting name="*vote_rounds" value="[1]" />
12-
<setting name="*random_rounds" value="[1]" />
10+
<setting
11+
name="*mode"
12+
value="vote"
13+
friendlyname="Cycler mode"
14+
group="Map Cycler"
15+
accept="vote,list,random"
16+
desc="Map cycler mode. 'vote' mode will launch a vote at the end of the round. 'list' mode will use the list defined in mapcycle.xml. 'random' mode will choose a map at random."
17+
/>
18+
<setting
19+
name="*vote_rounds"
20+
value="[1]"
21+
friendlyname="Rounds between votes"
22+
group="Map Cycler"
23+
accept="1-65535"
24+
desc="Number of rounds between map votes. Only effective if cycler mode is set to 'vote'."
25+
/>
26+
<setting
27+
name="*random_rounds"
28+
value="[1]"
29+
friendlyname="Rounds between random selections"
30+
group="Map Cycler"
31+
accept="1-65535"
32+
desc="Number of rounds between random map selections. Only effective if cycler mode is set to 'random'."
33+
/>
34+
<setting
35+
name="*hibernate_when_empty"
36+
value="true"
37+
friendlyname="Hibernate when server is empty"
38+
group="Map Cycler"
39+
accept="true,false"
40+
desc="If true, the server will wait until a player joins to cycle maps. Only effective if cycler mode is set to 'list' or 'random'."
41+
/>
1342
</settings>
1443
</meta>

0 commit comments

Comments
 (0)