Jump to content

SuleymanM

Members
  • Posts

    306
  • Joined

  • Last visited

Posts posted by SuleymanM

  1. 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" /> 
      
      
      
        

  2. 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?

  3. 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 supplied

    ERROR: [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
     
       
  4. 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 
      
      
    

  5. 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 
    

    lx08.png

  6. 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 
      
      
    

  7. 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

  8. 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 =
×
×
  • Create New...