# HG changeset patch # User Wuzzy # Date 1460515706 -7200 # Node ID 0e943402b94f7b8b63397e69bfa83b6713da8a9f # Parent 71ebc4c19b7f60862f23cf32b458d66d6ec255b0 CTF: Allow to set capture limit with script param diff -r 71ebc4c19b7f -r 0e943402b94f share/hedgewars/Data/Scripts/Multiplayer/Capture_the_Flag.lua --- a/share/hedgewars/Data/Scripts/Multiplayer/Capture_the_Flag.lua Wed Apr 13 04:33:13 2016 +0200 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Capture_the_Flag.lua Wed Apr 13 04:48:26 2016 +0200 @@ -3,6 +3,9 @@ -- by mikade --------------------------------------- +---- Script parameter +-- With “captures=” you can set your own capture limit, e.g. “captures=5” for 5 captures. + -- Version History --------- -- 0.1 @@ -76,6 +79,7 @@ -- enable awesome translaction support so we can use loc() wherever we want HedgewarsScriptLoad("/Scripts/Locale.lua") +HedgewarsScriptLoad("/Scripts/Params.lua") --------------------------------------------------------------- ----------lots of bad variables and things @@ -85,6 +89,7 @@ local gameStarted = false local gameTurns = 0 +local captureLimit = 3 -------------------------- -- hog and team tracking variales @@ -140,7 +145,7 @@ alt = 0 end - if fCaptures[teamID] == 3 then + if fCaptures[teamID] == captureLimit then for i = 0, (numhhs-1) do if hhs[i] ~= nil then if GetHogClan(hhs[i]) == alt then @@ -444,6 +449,16 @@ -- game methods ------------------------ +function onParameters() + parseParams() + if params["captures"] ~= nil then + local s = string.match(params["captures"], "(%d*)") + if s ~= nil then + captureLimit = math.max(1, tonumber(s)) + end + end +end + function onGameInit() DisableGameFlags(gfKing) @@ -456,32 +471,32 @@ end function showMissionAndScorebar(instaHide) - local place = loc("Flag placement phase: Flags, and their home base will be placed|where each team ends their first turn.") + local captures + if captureLimit == 1 then + captures = string.format(loc("- First team to capture the flag wins"), captureLimit) + else + captures = string.format(loc("- First team to score %d captures wins"), captureLimit) + end local rules = loc("Rules:") .. " |" .. + loc("- Place your team flag at the end of your first turn") .. "|" .. loc("- Return the enemy flag to your base to score") .."|".. - loc("- First team to score 3 captures wins") .."|".. + captures .. "|" .. loc("- You may only score when your flag is in your base") .."|".. loc("- Hogs will drop the flag when killed") .."|".. loc("- Dropped flags may be returned or recaptured").."|".. - loc("- Hogs respawn when killed") - - local mission + loc("- Hogs will be revived") - if gameTurns <= 2 then - mission = place - else - local scoreboard = "" + local scoreboard = "" - if gameStarted then - scoreboard = "|" .. loc("Scores: ") .. "|" - for i=0, 1 do - scoreboard = scoreboard .. string.format(loc("%s: %d"), teamNameArr[i], fCaptures[i]) - if i~=1 then scoreboard = scoreboard .. "|" end - end + if gameStarted then + scoreboard = "|" .. loc("Scores: ") .. "|" + for i=0, 1 do + scoreboard = scoreboard .. string.format(loc("%s: %d"), teamNameArr[i], fCaptures[i]) + if i~=1 then scoreboard = scoreboard .. "|" end end - mission = rules .. scoreboard end + local mission = rules .. scoreboard ShowMission(loc("Capture The Flag"), loc("A Hedgewars minigame"), mission, 0, 0) if instaHide then @@ -533,10 +548,8 @@ showMissionAndScorebar() elseif gameTurns == 2 then fPlaced[0] = true - showMissionAndScorebar() elseif gameTurns == 3 then fPlaced[1] = true - showMissionAndScorebar() StartTheGame() end