SuleymanM
-
Posts
306 -
Joined
-
Last visited
Posts posted by SuleymanM
-
-
can you add my skype? :=> metin.white
-
i'm trying that but don't function.. is problem with /,< ?
-
Hi guys , i have an problem with meta...
[2014-01-25 14:09:34] ERROR: Couldn't parse meta file for resource 'race2'[2014-01-25 14:09:34] Loading of resource 'race2' failed
i renamed race2 - to race and when i restart server the race not start... i think meta have an problem.
--meta.xml
"Race" description="Xiti's MTA Race" author="Xiti" type="gamemode" version="1" build="1.0 May 2013" edf:definition="edf/race.edf"/> resource="killmessages"/> resource="scoreboard"/> resource="votemanager"/> resource="helpmanager" /> resource="notifications" />
-
RE-Install MTA And it should work. (If its not made by you then only do it.)
bro , stop post only for make posts! Here i need help
Anf crystal , can you contact me via skype? ( metin.white ) or you give me your skype?
-
Please help me:
Problem:
ERROR: [gamemodes]\[race]\[race]\race\racevoting_server.lua:681: Database query failed: table race_mapinfo has 9 columns but 8 values were suppliedERROR: [gamemodes]\[race]\[race]\race\racevoting_server.lua:694: Database query failed: no such column: huntersReached
i dont understand anything , but in 681 , 694 line no any table .. ts only " executeSQLQuery( cmd )" not what is problem
racevoting_server
----
-- racemidvote_server.lua
--
-- Mid-race random map vote and
-- NextMapVote handled in this file
--
local lastVoteStarterName = ''
local lastVoteStarterCount = 0
----------------------------------------------------------------------------
-- displayHilariarseMessage
--
-- Comedy gold
----------------------------------------------------------------------------
function displayHilariarseMessage( player )
if not player then
lastVoteStarterName = ''
else
local playerName = getPlayerName(player)
local msg = ''
if playerName == lastVoteStarterName then
lastVoteStarterCount = lastVoteStarterCount + 1
if lastVoteStarterCount == 5 then
msg = playerName .. ' started a vote. Hardly a suprise.'
elseif lastVoteStarterCount == 10 then
msg = 'Guess what! '..playerName .. ' started ANOTHER vote!'
elseif lastVoteStarterCount < 5 then
msg = playerName .. ' started another vote.'
else
msg = playerName .. ' continues to abuse the vote system.'
end
else
lastVoteStarterCount = 0
lastVoteStarterName = playerName
msg = playerName .. ' started a vote.'
end
outputRace( msg )
end
end
----------------------------------------------------------------------------
-- displayKillerPunchLine
--
-- Sewing kits available in the foyer
----------------------------------------------------------------------------
function displayKillerPunchLine( player )
if lastVoteStarterName ~= '' then
outputRace( 'Offical news: Everybody hates ' .. lastVoteStarterName )
end
end
----------------------------------------------------------------------------
-- startMidMapVoteForRandomMap
--
-- Start the vote menu if during a race and more than 30 seconds from the end
-- No messages if this was not started by a player
----------------------------------------------------------------------------
function startMidMapVoteForRandomMap(player)
-- Check state and race time left
if not stateAllowsRandomMapVote() or g_CurrentRaceMode:getTimeRemaining() < 30000 then
if player then
outputRace( "I'm afraid I can't let you do that, " .. getPlayerName(player) .. ".", player )
end
return
end
displayHilariarseMessage( player )
exports.votemanager:stopPoll()
-- Actual vote started here
local pollDidStart = exports.votemanager:startPoll {
title='Do you want to change to a random map?',
percentage=51,
timeout=15,
allowchange=true,
visibleTo=getRootElement(),
[1]={'Yes', 'midMapVoteResult', getRootElement(), true},
[2]={'No', 'midMapVoteResult', getRootElement(), false;default=true},
}
-- Change state if vote did start
if pollDidStart then
gotoState('MidMapVote')
end
end
addCommandHandler('new',startMidMapVoteForRandomMap)
----------------------------------------------------------------------------
-- event midMapVoteResult
--
-- Called from the votemanager when the poll has completed
----------------------------------------------------------------------------
addEvent('midMapVoteResult')
addEventHandler('midMapVoteResult', getRootElement(),
function( votedYes )
-- Change state back
if stateAllowsRandomMapVoteResult() then
gotoState('Running')
if votedYes then
startRandomMap()
else
displayKillerPunchLine()
end
end
end
)
----------------------------------------------------------------------------
-- startRandomMap
--
-- Changes the current map to a random race map
----------------------------------------------------------------------------
function startRandomMap()
-- Handle forced nextmap setting
if maybeApplyForcedNextMap() then
return
end
-- Get a random map chosen from the 10% of least recently player maps, with enough spawn points for all the players (if required)
local map = getRandomMapCompatibleWithGamemode( getThisResource(), 10, g_GameOptions.ghostmode and 0 or getTotalPlayerCount() )
if map then
g_IgnoreSpawnCountProblems = map -- Uber hack 4000
if not exports.mapmanager:changeGamemodeMap ( map, nil, true ) then
problemChangingMap()
end
else
outputWarning( 'startRandomMap failed' )
end
end
----------------------------------------------------------------------------
-- outputRace
--
-- Race color is defined in the settings
----------------------------------------------------------------------------
function outputRace(message, toElement)
toElement = toElement or g_Root
local r, g, b = getColorFromString(string.upper(get("color")))
if getElementType(toElement) == 'console' then
outputServerLog(message)
else
if toElement == rootElement then
outputServerLog(message)
end
outputChatBox("#. #ffffff"..message, toElement, r, g, b, true)
end
end
----------------------------------------------------------------------------
-- problemChangingMap
--
-- Sort it
----------------------------------------------------------------------------
function problemChangingMap()
outputRace( 'Changing to random map in 5 seconds' )
local currentMap = exports.mapmanager:getRunningGamemodeMap()
TimerManager.createTimerFor("resource","mapproblem"):setTimer(
function()
-- Check that something else hasn't already changed the map
if currentMap == exports.mapmanager:getRunningGamemodeMap() then
startRandomMap()
end
end,
math.random(4500,5500), 1 )
end
--
--
-- NextMapVote
--
--
--
local g_Poll
----------------------------------------------------------------------------
-- startNextMapVote
--
-- Start a votemap for the next map. Should only be called during the
-- race state 'NextMapSelect'
----------------------------------------------------------------------------
function startNextMapVote()
exports.votemanager:stopPoll()
-- Handle forced nextmap setting
if maybeApplyForcedNextMap() then
return
end
-- Get all maps
local compatibleMaps = exports.mapmanager:getMapsCompatibleWithGamemode(getThisResource())
-- limit it to eight random maps
if #compatibleMaps > 8 then
math.randomseed(getTickCount())
repeat
table.remove(compatibleMaps, math.random(1, #compatibleMaps))
until #compatibleMaps == 8
elseif #compatibleMaps < 2 then
return false, errorCode.onlyOneCompatibleMap
end
-- mix up the list order
for i,map in ipairs(compatibleMaps) do
local swapWith = math.random(1, #compatibleMaps)
local temp = compatibleMaps[i]
compatibleMaps[i] = compatibleMaps[swapWith]
compatibleMaps[swapWith] = temp
end
local poll = {
title="Choose the next map:",
visibleTo=getRootElement(),
percentage=51,
timeout=15,
allowchange=true;
}
for index, map in ipairs(compatibleMaps) do
local mapName = getResourceInfo(map, "name") or getResourceName(map)
table.insert(poll, {mapName, 'nextMapVoteResult', getRootElement(), map})
end
local currentMap = exports.mapmanager:getRunningGamemodeMap()
if currentMap then
table.insert(poll, {"Play again", 'nextMapVoteResult', getRootElement(), currentMap})
end
-- Allow addons to modify the poll
g_Poll = poll
triggerEvent('onPollStarting', g_Root, poll )
poll = g_Poll
g_Poll = nil
-
add my skype: i'm trying to make it...= SKYPE: metin.white
-
to compiled it?
-
This is called "kick".
-
Hello,
I want to know an script when in shooter/dd/hunter say "You killed by.." and "You killed..." TY
-
i added first quote to my destructionderby... but not function... what overwrite ??
-- if i add quote #1 and #2 to my destructionderby... not loading maps..
-
edit mods/destructionderby.lua
-
bro , i have other race where function... perfectly..
And ... if i replace destructionderby.lua with that .. no function rankingboard and others..
-- destructionderby.lua (where function podium)
g_CurrentRaceMode = getMapName() DestructionDerby = setmetatable({}, RaceMode) DestructionDerby.__index = DestructionDerby DestructionDerby:register('Destruction derby') function DestructionDerby:isApplicable() return not RaceMode.checkpointsExist() and RaceMode.getMapOption('respawn') == 'none' end function DestructionDerby:getPlayerRank(player) return #getActivePlayers() end -- Copy of old updateRank function DestructionDerby:updateRanks() for i,player in ipairs(g_Players) do if not isPlayerFinished(player) then local rank = self:getPlayerRank(player) if not rank or rank > 0 then setElementData(player, 'race rank', rank) end end end -- Make text look good at the start if not self.running then for i,player in ipairs(g_Players) do setElementData(player, 'race rank', '' ) setElementData(player, 'checkpoint', '' ) end end end function endTheMap() RaceMode.endMap() end function DestructionDerby:onPlayerWasted(player) if isActivePlayer(player) then self:handleFinishActivePlayer(player) if getActivePlayerCount() <= 0 then endTheMap() else TimerManager.createTimerFor("map",player):setTimer(clientCall, 2000, 1, player, 'Spectate.start', 'auto') end end RaceMode.setPlayerIsFinished(player) showBlipsAttachedTo(player, false) end function DestructionDerby:onPlayerQuit(player) if isActivePlayer(player) then self:handleFinishActivePlayer(player) if getActivePlayerCount() <= 0 then endTheMap() end end end function checkForHunter(number,sort,model) if #getElementsByType("player") <= 0 then return end local activePlayers = getActivePlayers() if #activePlayers == 1 then local vehicle = getPedOccupiedVehicle(activePlayers[1]) if getElementModel(vehicle) == 425 then setElementHealth(activePlayers[1],0) end end end addEvent('onPlayerPickUpRacePickup',true) addEventHandler("onPlayerPickUpRacePickup",getRootElement(),checkForHunter) function DestructionDerby:handleFinishActivePlayer(player) -- Update ranking board for player being removed if not self.rankingBoard then self.rankingBoard = RankingBoard:create() self.rankingBoard:setDirection( 'up', getActivePlayerCount() ) end local timePassed = self:getTimePassed() self.rankingBoard:add(player, timePassed) -- Do remove finishActivePlayer(player) -- Update ranking board if one player left local activePlayers = getActivePlayers() if #activePlayers == 2 then triggerClientEvent ( "savetag3",getRootElement(),_getPlayerName(player)) end if #activePlayers == 1 then triggerClientEvent ( "savetag2",getRootElement(),_getPlayerName(player)) end if #activePlayers == 0 then self.rankingBoard:add(activePlayers[1], timePassed) triggerClientEvent ( "savetag",getRootElement(),_getPlayerName(player)) triggerEvent("peds",getRootElement()) --triggerEvent("onPlayerDestructionDerbyWin", getRootElement(), player) --saveDeathPlayer(activePlayers[1]) --addPodiumPlayer(activePlayers[1]) local timeravviato = false if timeravviato == false then setTimer (checkForHunter , 100, 0, player ) timeravviato = true end end if #activePlayers == 1 then --showMessage(getPlayerName(activePlayers[1]) .. ' pwned you all!', 171, 7, 7) triggerClientEvent ( "Winnertext", getRootElement(), activePlayers[1] ) triggerEvent("onPlayerDestructionDerbyWin", getRootElement(), activePlayers[1]) local car = getPedOccupiedVehicle(activePlayers[1]) if car then local model = getElementModel(car) if model == 425 then setElementHealth(activePlayers[1],0) end end end end ------------------------------------------------------------ -- activePlayerList stuff -- function isActivePlayer( player ) return table.find( g_CurrentRaceMode.activePlayerList, player ) end function addActivePlayer( player ) table.insertUnique( g_CurrentRaceMode.activePlayerList, player ) end function removeActivePlayer( player ) table.removevalue( g_CurrentRaceMode.activePlayerList, player ) end function finishActivePlayer( player ) table.removevalue( g_CurrentRaceMode.activePlayerList, player ) table.insertUnique( g_CurrentRaceMode.finishedPlayerList, _getPlayerName(player) ) end function getFinishedPlayerCount() return #g_CurrentRaceMode.finishedPlayerList end function getActivePlayerCount() return #g_CurrentRaceMode.activePlayerList end function getActivePlayers() if #getElementsByType("player") > 0 then return g_CurrentRaceMode.activePlayerList else return false end end
-
Hi all,
I have "NeS's Custom Winner Screen" by Itoko
What need to modify in modes/Destructionderby.lua to function?
-- destructionderby.lua
DestructionDerby = setmetatable({}, RaceMode) DestructionDerby.__index = DestructionDerby DestructionDerby:register('Destruction derby') function DestructionDerby:isApplicable() return not RaceMode.checkpointsExist() end function DestructionDerby:getPlayerRank(player) return #getActivePlayers() end -- Copy of old updateRank function DestructionDerby:updateRanks() for i,player in ipairs(g_Players) do if not isPlayerFinished(player) then local rank = self:getPlayerRank(player) if not rank or rank > 0 then setElementData(player, 'race rank', rank) end end end -- Make text look good at the start if not self.running then for i,player in ipairs(g_Players) do setElementData(player, 'race rank', '' ) setElementData(player, 'checkpoint', '' ) end end end function DestructionDerby:onPlayerWasted(player) if isActivePlayer(player) then self:handleFinishActivePlayer(player) if (getActivePlayerCount() <= 1 and (not g_GameOptions.autob or not isMapDM())) or (getActivePlayerCount() <= 0) then RaceMode.endMap() else TimerManager.createTimerFor("map",player):setTimer(clientCall, 2000, 1, player, 'Spectate.start', 'auto') end end RaceMode.setPlayerIsFinished(player) showBlipsAttachedTo(player, false) end function DestructionDerby:onPlayerQuit(player) if isActivePlayer(player) then self:handleFinishActivePlayer(player) if (getActivePlayerCount() <= 1 and (not g_GameOptions.autob or not isMapDM())) or (getActivePlayerCount() <= 0) then RaceMode.endMap() end end end function DestructionDerby:handleFinishActivePlayer(player) -- Update ranking board for player being removed if not self.rankingBoard then self.rankingBoard = RankingBoard:create() self.rankingBoard:setDirection( 'up', getActivePlayerCount() ) end local timePassed = self:getTimePassed() local rank = self:getPlayerRank(player) self.rankingBoard:add(player, timePassed,rank) -- Do remove if rank == 1 then triggerClientEvent("onServerWantShowCenterMessage",resourceRoot,"The winner is:",getPlayerNametagText(player)) end finishActivePlayer(player) if rank and rank > 1 then triggerEvent( "onPlayerFinishDD",player,tonumber( rank ) ) end -- Update ranking board if one player left local activePlayers = getActivePlayers() if #activePlayers == 1 then self.rankingBoard:add(activePlayers[1], timePassed, #activePlayers) triggerEvent( "onPlayerWinDD",activePlayers[1] ) local vehicle = getPedOccupiedVehicle(activePlayers[1]) if vehicle then local model = getElementModel(vehicle) if model == 425 and g_GameOptions.autob then RaceMode.endMap() end end end end function detectHunterWhileAutoB(_,type,vehicleID) if type == "vehiclechange" and vehicleID == 425 then local activePlayers = getActivePlayers() if g_GameOptions.autob and #activePlayers == 1 then RaceMode.endMap() end end end addEvent("onPlayerPickUpRacePickup",true) addEventHandler("onPlayerPickUpRacePickup",getRootElement(),detectHunterWhileAutoB) ------------------------------------------------------------ -- activePlayerList stuff -- function isActivePlayer( player ) return table.find( g_CurrentRaceMode.activePlayerList, player ) end function addActivePlayer( player ) table.insertUnique( g_CurrentRaceMode.activePlayerList, player ) end function removeActivePlayer( player ) table.removevalue( g_CurrentRaceMode.activePlayerList, player ) end function finishActivePlayer( player ) table.removevalue( g_CurrentRaceMode.activePlayerList, player ) table.insertUnique( g_CurrentRaceMode.finishedPlayerList, _getPlayerName(player) ) end function getFinishedPlayerCount() return #g_CurrentRaceMode.finishedPlayerList end function getActivePlayerCount() return #g_CurrentRaceMode.activePlayerList end function getActivePlayers() return g_CurrentRaceMode.activePlayerList end function isMapDM() return string.find(g_MapInfo.name,"DM") end function isMapWithoutRespawn() return string.find(g_MapInfo.name,"DM") or string.find(g_MapInfo.name,"DD") end
-
thanks bro, but error not solved ... only reduces at 2-3 times...
-
only replace line:152 with this :
?g_CurrentRaceMode = getMapName()
-
Bro, I have race gamemode by arc_ implementator, But i try to solve this problem but not effect.
-----> Rankingboard not function.
Problem:
[gamemodes]\[race]\race\modes\destructionderby.lua:152: attempt to index global 'g_CurrentRaceMode' (a nil value)-- destructionderby.lua
DestructionDerby = setmetatable({}, RaceMode) DestructionDerby.__index = DestructionDerby DestructionDerby:register('Destruction derby') function DestructionDerby:isApplicable() return not RaceMode.checkpointsExist() and RaceMode.getMapOption('respawn') == 'none' end function DestructionDerby:getPlayerRank(player) return #getActivePlayers() end -- Copy of old updateRank function DestructionDerby:updateRanks() for i,player in ipairs(g_Players) do if not isPlayerFinished(player) then local rank = self:getPlayerRank(player) if not rank or rank > 0 then setElementData(player, 'race rank', rank) end end end -- Make text look good at the start if not self.running then for i,player in ipairs(g_Players) do setElementData(player, 'race rank', '' ) setElementData(player, 'checkpoint', '' ) end end end function endTheMap() RaceMode.endMap() end function DestructionDerby:onPlayerWasted(player) if isActivePlayer(player) then self:handleFinishActivePlayer(player) if getActivePlayerCount() <= 0 then endTheMap() else TimerManager.createTimerFor("map",player):setTimer(clientCall, 2000, 1, player, 'Spectate.start', 'auto') end end RaceMode.setPlayerIsFinished(player) showBlipsAttachedTo(player, false) end function DestructionDerby:onPlayerQuit(player) if isActivePlayer(player) then self:handleFinishActivePlayer(player) if getActivePlayerCount() <= 0 then endTheMap() end end end function checkForHunter(number,sort,model) if #getElementsByType("player") <= 0 then return end local activePlayers = getActivePlayers() if #activePlayers == 1 then local vehicle = getPedOccupiedVehicle(activePlayers[1]) if getElementModel(vehicle) == 425 then setElementHealth(activePlayers[1],0) end end end addEvent('onPlayerPickUpRacePickup',true) addEventHandler("onPlayerPickUpRacePickup",getRootElement(),checkForHunter) function DestructionDerby:handleFinishActivePlayer(player) -- Update ranking board for player being removed if not self.rankingBoard then self.rankingBoard = RankingBoard:create() self.rankingBoard:setDirection( 'up', getActivePlayerCount() ) end local timePassed = self:getTimePassed() self.rankingBoard:add(player, timePassed) -- Do remove finishActivePlayer(player) -- Update ranking board if one player left local activePlayers = getActivePlayers() if #activePlayers == 2 then triggerClientEvent ( "savetag3",getRootElement(),_getPlayerName(player)) end if #activePlayers == 1 then triggerClientEvent ( "savetag2",getRootElement(),_getPlayerName(player)) end if #activePlayers == 0 then self.rankingBoard:add(activePlayers[1], timePassed) triggerClientEvent ( "savetag",getRootElement(),_getPlayerName(player)) triggerEvent("peds",getRootElement()) --triggerEvent("onPlayerDestructionDerbyWin", getRootElement(), player) --saveDeathPlayer(activePlayers[1]) --addPodiumPlayer(activePlayers[1]) local timeravviato = false if timeravviato == false then setTimer (checkForHunter , 100, 0, player ) timeravviato = true end end if #activePlayers == 1 then --showMessage(getPlayerName(activePlayers[1]) .. ' pwned you all!', 171, 7, 7) triggerClientEvent ( "Winnertext", getRootElement(), activePlayers[1] ) triggerEvent("onPlayerDestructionDerbyWin", getRootElement(), activePlayers[1]) local car = getPedOccupiedVehicle(activePlayers[1]) if car then local model = getElementModel(car) if model == 425 then setElementHealth(activePlayers[1],0) end end end end ------------------------------------------------------------ -- activePlayerList stuff -- function isActivePlayer( player ) return table.find( g_CurrentRaceMode.activePlayerList, player ) end function addActivePlayer( player ) table.insertUnique( g_CurrentRaceMode.activePlayerList, player ) end function removeActivePlayer( player ) table.removevalue( g_CurrentRaceMode.activePlayerList, player ) end function finishActivePlayer( player ) table.removevalue( g_CurrentRaceMode.activePlayerList, player ) table.insertUnique( g_CurrentRaceMode.finishedPlayerList, _getPlayerName(player) ) end function getFinishedPlayerCount() return #g_CurrentRaceMode.finishedPlayerList end function getActivePlayerCount() return #g_CurrentRaceMode.activePlayerList end function getActivePlayers() if #getElementsByType("player") > 0 then return g_CurrentRaceMode.activePlayerList else return false end end
-
not found what i want...
I want an script or votemanager to can voteredo ... but if vote is 100% [YES] map change only if final survivor is dead.
-
Hi all,
I see in others servers an votemanager to players can vote redo : /vr and if players vote 50%+1 map auto redo.
Please give me an link to download or give me your skype please.
I can't make on that cuz i not understand scripting. TY
-
i see in others resources have an acl acces .. in meta...
-
I need to add in meta !! an line to acces only "Admins" or what i group add , ty
-- Because Resource is compiled.
-
time #5 is -Empty- ?
Or probably toptime not have command in hes resource.
-
add me skype : metin.white
-
Hi all,
Xiti have an small time and help me to can buymaps , and he is busy in last time.... can you help me for userpanel info's ?
Function only "Author" and "Likes"
But Xiti say to me need to add/modify only in "racevonting_server.lua"
Pls help me:
-- racevoting_lua
--
-- racemidvote_server.lua
--
-- Mid-race random map vote and
-- NextMapVote handled in this file
--
local lastVoteStarterName = ''
local lastVoteStarterCount = 0
----------------------------------------------------------------------------
-- displayHilariarseMessage
--
-- Comedy gold
----------------------------------------------------------------------------
function displayHilariarseMessage( player )
if not player then
lastVoteStarterName = ''
else
local playerName = getPlayerName(player)
local msg = ''
if playerName == lastVoteStarterName then
lastVoteStarterCount = lastVoteStarterCount + 1
if lastVoteStarterCount == 5 then
msg = playerName .. ' started a vote. Hardly a suprise.'
elseif lastVoteStarterCount == 10 then
msg = 'Guess what! '..playerName .. ' started ANOTHER vote!'
elseif lastVoteStarterCount < 5 then
msg = playerName .. ' started another vote.'
else
msg = playerName .. ' continues to abuse the vote system.'
end
else
lastVoteStarterCount = 0
lastVoteStarterName = playerName
msg = playerName .. ' started a vote.'
end
outputRace( msg )
end
end
----------------------------------------------------------------------------
-- displayKillerPunchLine
--
-- Sewing kits available in the foyer
----------------------------------------------------------------------------
function displayKillerPunchLine( player )
if lastVoteStarterName ~= '' then
outputRace( 'Offical news: Everybody hates ' .. lastVoteStarterName )
end
end
----------------------------------------------------------------------------
-- startMidMapVoteForRandomMap
--
-- Start the vote menu if during a race and more than 30 seconds from the end
-- No messages if this was not started by a player
----------------------------------------------------------------------------
function startMidMapVoteForRandomMap(player)
-- Check state and race time left
if not stateAllowsRandomMapVote() or g_CurrentRaceMode:getTimeRemaining() < 30000 then
if player then
outputRace( "I'm afraid I can't let you do that, " .. getPlayerName(player) .. ".", player )
end
return
end
displayHilariarseMessage( player )
exports.votemanager:stopPoll()
-- Actual vote started here
local pollDidStart = exports.votemanager:startPoll {
title='Do you want to change to a random map?',
percentage=51,
timeout=15,
allowchange=true,
visibleTo=getRootElement(),
[1]={'Yes', 'midMapVoteResult', getRootElement(), true},
[2]={'No', 'midMapVoteResult', getRootElement(), false;default=true},
}
-- Change state if vote did start
if pollDidStart then
gotoState('MidMapVote')
end
end
addCommandHandler('new',startMidMapVoteForRandomMap)
----------------------------------------------------------------------------
-- event midMapVoteResult
--
-- Called from the votemanager when the poll has completed
----------------------------------------------------------------------------
addEvent('midMapVoteResult')
addEventHandler('midMapVoteResult', getRootElement(),
function( votedYes )
-- Change state back
if stateAllowsRandomMapVoteResult() then
gotoState('Running')
if votedYes then
startRandomMap()
else
displayKillerPunchLine()
end
end
end
)
----------------------------------------------------------------------------
-- startRandomMap
--
-- Changes the current map to a random race map
----------------------------------------------------------------------------
function startRandomMap()
-- Handle forced nextmap setting
if maybeApplyForcedNextMap() then
return
end
-- Get a random map chosen from the 10% of least recently player maps, with enough spawn points for all the players (if required)
local map = getRandomMapCompatibleWithGamemode( getThisResource(), 10, g_GameOptions.ghostmode and 0 or getTotalPlayerCount() )
if map then
g_IgnoreSpawnCountProblems = map -- Uber hack 4000
if not exports.mapmanager:changeGamemodeMap ( map, nil, true ) then
problemChangingMap()
end
else
outputWarning( 'startRandomMap failed' )
end
end
----------------------------------------------------------------------------
-- outputRace
--
-- Race color is defined in the settings
----------------------------------------------------------------------------
function outputRace(message, toElement)
toElement = toElement or g_Root
local r, g, b = getColorFromString(string.upper(get("color")))
if getElementType(toElement) == 'console' then
outputServerLog(message)
else
if toElement == rootElement then
outputServerLog(message)
end
if getElementType(toElement) == 'player' then
message = '[PM] ' .. message
end
outputChatBox(message, toElement, r, g, b)
end
end
----------------------------------------------------------------------------
-- problemChangingMap
--
-- Sort it
----------------------------------------------------------------------------
function problemChangingMap()
outputRace( 'Changing to random map in 5 seconds' )
local currentMap = exports.mapmanager:getRunningGamemodeMap()
TimerManager.createTimerFor("resource","mapproblem"):setTimer(
function()
-- Check that something else hasn't already changed the map
if currentMap == exports.mapmanager:getRunningGamemodeMap() then
startRandomMap()
end
end,
math.random(4500,5500), 1 )
end
--
--
-- NextMapVote
--
--
--
local g_Poll
----------------------------------------------------------------------------
-- startNextMapVote
--
-- Start a votemap for the next map. Should only be called during the
-- race state 'NextMapSelect'
----------------------------------------------------------------------------
function startNextMapVote()
exports.votemanager:stopPoll()
-- Handle forced nextmap setting
if maybeApplyForcedNextMap() then
return
end
-- Get all maps
local compatibleMaps = exports.mapmanager:getMapsCompatibleWithGamemode(getThisResource())
-- limit it to eight random maps
if #compatibleMaps > 8 then
math.randomseed(getTickCount())
repeat
table.remove(compatibleMaps, math.random(1, #compatibleMaps))
until #compatibleMaps == 8
elseif #compatibleMaps < 2 then
return false, errorCode.onlyOneCompatibleMap
end
-- mix up the list order
for i,map in ipairs(compatibleMaps) do
local swapWith = math.random(1, #compatibleMaps)
local temp = compatibleMaps[i]
compatibleMaps[i] = compatibleMaps[swapWith]
compatibleMaps[swapWith] = temp
end
local poll = {
title="Choose the next map:",
visibleTo=getRootElement(),
percentage=51,
timeout=15,
allowchange=true;
}
for index, map in ipairs(compatibleMaps) do
local mapName = getResourceInfo(map, "name") or getResourceName(map)
table.insert(poll, {mapName, 'nextMapVoteResult', getRootElement(), map})
end
local currentMap = exports.mapmanager:getRunningGamemodeMap()
if currentMap then
table.insert(poll, {"Play again", 'nextMapVoteResult', getRootElement(), currentMap})
end
-- Allow addons to modify the poll
g_Poll = poll
triggerEvent('onPollStarting', g_Root, poll )
poll = g_Poll
g_Poll = -
yep
Race times
in Resources
Posted
bro . reinstall server...