Jump to content

Abilitare l'Hunter


Recommended Posts

Salve,

Ho notato che nel mio server privato, che usiamo per le CW del clan, l'hunter non spara, ho riguardato un poco le impostazioni della race, ma non trovo nulla di utile. Come mai ciò? Grazie a chi saprà aiutarmi :D

PS: Un saluto ai tipi italiani che conosco u.u

Link to comment
Strano :/

Di sicuro non hai il weapons fire con il value true nel meta.xml

Dove posso trovare questo file? Parli del mta.xml che si trova nel race.zip? Se è quello, ho fatto una piccola ricerca con F3, ma non ho trovato nessuna stringa interessante D:

Inoltre, leggendo i vari post in questa sezione, ho notato che sei il nostro esperto di turno asd, potresti dare anche un'occhiata qui viewtopic.php?f=108&t=45087? Grazie anticipatamente :fadein:

phrenetiick succhia :3

Non so perché ma mi aspettavo una risposta come questa, tua o di sHocKz :3

Link to comment

Allora.

Di sicuro si sta parlando di gamemode race.

Se in una particolare mappa non ti funziona il fire Dell hunter allora devi dargli il true nel meta.xml della mappa.

Ecco un esempio.

Sostituisci il false con il true.

  
<setting name="#vehicleweapons" value='[ "true" ]'></setting> 
  

Se invece il fire Dell hunter non funziona su nessuna mappa allora devi settare il race tramite il pannello admin.

Apri il pannello admin.

Resources

Clicca race e poi clicca setting.

Trova il vehicleweapons e settaci true al posto di false.

E credo di esser stato chiaro.

Link to comment
Per quanto riguarda l altro topic auto b spiegati meglio.

Cosa intendi fare :D

Ehm, hai presente nella Race quando tutti i giocatori muoiono e poi esce la scritta "Tizio Caio is the final survivor.. next map start's in numerosecondi"

Vorrei che quando tutti crepino, l'ultimo giocatore possa continuare a giocare senza che la mappa cambi. Li mi hanno proposto il destructionderby.lua modificato ma non funge D:

Link to comment

Prima di tutto fammi sapere se hai risolto con il vehicleweapons.

Per quanto riguarda " l'auto B " devi editare il destructionderby.lua (come già detto)

getActivePlayerCount() e la funzione che chiama il numero di players ancora in gioco.

Quindi   [ if getActivePlayerCount() <= 1 then ] vuol dire che:

Se il numero dei player vivi e pari ad uno si avvia la funzione next map etc.

Se invece cambi il valore dei player a 0, vuol dire che la funzione next map etc parte quando tutti sono morti.

Quindi sostituisci solo l 1 con 0

  
        if getActivePlayerCount() <= 0 then 
  
  

Link to comment
Prima di tutto fammi sapere se hai risolto con il vehicleweapons.

Per quanto riguarda " l'auto B " devi editare il destructionderby.lua (come già detto)

getActivePlayerCount() e la funzione che chiama il numero di players ancora in gioco.

Quindi   [ if getActivePlayerCount() <= 1 then ] vuol dire che:

Se il numero dei player vivi e pari ad uno si avvia la funzione next map etc.

Se invece cambi il valore dei player a 0, vuol dire che la funzione next map etc parte quando tutti sono morti.

Quindi sostituisci solo l 1 con 0

  
        if getActivePlayerCount() <= 0 then 
  
  

Il problema dell'Hunter ho appena riscontrato che accadeva solo in alcune mappe, quindi basta semplicemente modificare il meta.xml della mappa.

Riguardo al problema del destructionderby, ho già effettuato quella modifica, ma non funziona molto stranamente :\

Link to comment

Allora.

Fai questo che ti dico.

1.apri il destructionderby.lua e cancella tutto.

2. Copia questo che ho modificato io.

  
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 #getAlivePlayers() 
end 
  
function DestructionDerby:onPlayerWasted(player) 
    if RaceMode.isPlayerFinished(player) then 
        return 
    end 
    if not self.rankingBoard then 
        self.rankingBoard = RankingBoard:create() 
        self.rankingBoard:setDirection('up') 
    end 
    local timePassed = self:getTimePassed() 
    self.rankingBoard:add(player, timePassed) 
    local alivePlayers = getAlivePlayers() 
    if #alivePlayers == 1 then 
        self.rankingBoard:add(alivePlayers[1], timePassed) 
        showMessage(getPlayerName(alivePlayers[1]) .. ' is the final survivor!', 0, 255, 0) 
    end 
    if #alivePlayers <= 0 then 
        RaceMode.endMap() 
    else 
        setTimer(clientCall, 2000, 1, player, 'Spectate.start', 'auto') 
    end 
    RaceMode.setPlayerIsFinished(player) 
    showBlipsAttachedTo(player, false) 
end 
  
function DestructionDerby:onPlayerQuit(player) 
    local alivePlayers = getAlivePlayers() 
    for i,pl in ipairs(alivePlayers) do 
        if pl == player then 
            table.remove(alivePlayers, i) 
        end 
    end 
    if not self.rankingBoard then 
        self.rankingBoard = RankingBoard:create() 
        self.rankingBoard:setDirection('up') 
    end 
    local timePassed = self:getTimePassed() 
    self.rankingBoard:add(player, timePassed) 
    if #alivePlayers == 1 then 
        self.rankingBoard:add(alivePlayers[1], timePassed) 
        showMessage(getPlayerName(alivePlayers[1]) .. ' is the final survivor!', 0, 255, 0) 
    end 
    if #alivePlayers <= 0 then 
        RaceMode.endMap() 
    end 
end 
  
--[[ 
function DestructionDerby:pickFreeSpawnpoint() 
    local i = table.find(RaceMode.getSpawnpoints(), 'used', '[nil]') 
    if i then 
        repeat 
            i = math.random(RaceMode.getNumberOfSpawnpoints()) 
        until not RaceMode.getSpawnpoint(i).used 
    else 
        i = math.random(RaceMode.getNumberOfSpawnpoints()) 
    end 
    local spawnpoint = RaceMode.getSpawnpoint(i) 
    spawnpoint.used = true 
    if self.startTick then 
        setTimer(freeSpawnpoint, 10000, 1, i) 
    end 
    return spawnpoint 
end 
--]] 
  
  
  

Salva e prova,fammi sapere.

P.S. Purtroppo sto in USA e non posso testare nulla,se stavo in italia già avevi risolto.

Link to comment
Allora.

Fai questo che ti dico.

1.apri il destructionderby.lua e cancella tutto.

2. Copia questo che ho modificato io.

  
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 #getAlivePlayers() 
end 
  
function DestructionDerby:onPlayerWasted(player) 
    if RaceMode.isPlayerFinished(player) then 
        return 
    end 
    if not self.rankingBoard then 
        self.rankingBoard = RankingBoard:create() 
        self.rankingBoard:setDirection('up') 
    end 
    local timePassed = self:getTimePassed() 
    self.rankingBoard:add(player, timePassed) 
    local alivePlayers = getAlivePlayers() 
    if #alivePlayers == 1 then 
        self.rankingBoard:add(alivePlayers[1], timePassed) 
        showMessage(getPlayerName(alivePlayers[1]) .. ' is the final survivor!', 0, 255, 0) 
    end 
    if #alivePlayers <= 0 then 
        RaceMode.endMap() 
    else 
        setTimer(clientCall, 2000, 1, player, 'Spectate.start', 'auto') 
    end 
    RaceMode.setPlayerIsFinished(player) 
    showBlipsAttachedTo(player, false) 
end 
  
function DestructionDerby:onPlayerQuit(player) 
    local alivePlayers = getAlivePlayers() 
    for i,pl in ipairs(alivePlayers) do 
        if pl == player then 
            table.remove(alivePlayers, i) 
        end 
    end 
    if not self.rankingBoard then 
        self.rankingBoard = RankingBoard:create() 
        self.rankingBoard:setDirection('up') 
    end 
    local timePassed = self:getTimePassed() 
    self.rankingBoard:add(player, timePassed) 
    if #alivePlayers == 1 then 
        self.rankingBoard:add(alivePlayers[1], timePassed) 
        showMessage(getPlayerName(alivePlayers[1]) .. ' is the final survivor!', 0, 255, 0) 
    end 
    if #alivePlayers <= 0 then 
        RaceMode.endMap() 
    end 
end 
  
--[[ 
function DestructionDerby:pickFreeSpawnpoint() 
    local i = table.find(RaceMode.getSpawnpoints(), 'used', '[nil]') 
    if i then 
        repeat 
            i = math.random(RaceMode.getNumberOfSpawnpoints()) 
        until not RaceMode.getSpawnpoint(i).used 
    else 
        i = math.random(RaceMode.getNumberOfSpawnpoints()) 
    end 
    local spawnpoint = RaceMode.getSpawnpoint(i) 
    spawnpoint.used = true 
    if self.startTick then 
        setTimer(freeSpawnpoint, 10000, 1, i) 
    end 
    return spawnpoint 
end 
--]] 
  
  
  

Salva e prova,fammi sapere.

P.S. Purtroppo sto in USA e non posso testare nulla,se stavo in italia già avevi risolto.

Messo, e bugga tutto, molte volte le mappe si bloccano, quando resti vivo per ultimo non fungono i pickup e tanto altro D:

Link to comment

Elimina tutto e copia questo.

Prova e fammi sapere.

  
  
DestructionDerby = setmetatable({}, RaceMode) 
DestructionDerby.__index = DestructionDerby 
  
DestructionDerby:register('Destruction derby') 
  
function DestructionDerby:isApplicable() 
    return not RaceMode.checkpointsExist() and 
Mode.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 DestructionDerby:onPlayerWasted(player) 
    if isActivePlayer(player) then 
        self:handleFinishActivePlayer(player) 
        if 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() <= 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() 
    self.rankingBoard:add(player, timePassed) 
    -- Do remove 
    finishActivePlayer(player) 
    -- Update ranking board if one player left 
    local activePlayers = getActivePlayers() 
    if #activePlayers == 1 then 
        self.rankingBoard:add(activePlayers[1], timePassed) 
        showMessage(getPlayerName(activePlayers[1]) .. ' is the final survivor!', 0, 255, 0) 
    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() 
    return g_CurrentRaceMode.activePlayerList 
end 
  

Link to comment
Elimina tutto e copia questo.

Prova e fammi sapere.

  
  
DestructionDerby = setmetatable({}, RaceMode) 
DestructionDerby.__index = DestructionDerby 
  
DestructionDerby:register('Destruction derby') 
  
function DestructionDerby:isApplicable() 
    return not RaceMode.checkpointsExist() and 
Mode.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 DestructionDerby:onPlayerWasted(player) 
    if isActivePlayer(player) then 
        self:handleFinishActivePlayer(player) 
        if 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() <= 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() 
    self.rankingBoard:add(player, timePassed) 
    -- Do remove 
    finishActivePlayer(player) 
    -- Update ranking board if one player left 
    local activePlayers = getActivePlayers() 
    if #activePlayers == 1 then 
        self.rankingBoard:add(activePlayers[1], timePassed) 
        showMessage(getPlayerName(activePlayers[1]) .. ' is the final survivor!', 0, 255, 0) 
    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() 
    return g_CurrentRaceMode.activePlayerList 
end 
  

Adesso appena riavvio la race, non mi fa partire le mappe, mi da uno schermo nero ò.ò

Link to comment
Evidentemente hai sbagliato qualcosa.

L ultimO codice che ti ho dato deve funzionare per forza.

Prova ad eliminare i file chace,certo che se non sai maneggiare bene il server sarà un po' dura.

Ti ringrazio molto per il tuo aiuto, ho risolto il problema da solo, derivava dal fatto che il mio pannello utente, forniva un destructionderby ed altri file della race diversi, ho effettuato delle modifiche a questi file adattandoli al pannello e alla GM generale. PS: So gestire il server, non è il primo server che ho avuto, ho incontrato problemi perché era la priva volta che suavo questo pannello, e non ero a conoscenza che modificasse altri file nel race.zip, dato che non l'ho installato io.

Adesso avrei un'ultimissima domanda da porgerti.

Ho uno script autoteam, che setta il colore del veicolo del team appena spawnato, c'è però il problema che, quando si cambia veicolo ad un pickup, questo prende un colore random. La resource è installata correttamente ti posto il codice:

Tags = {  
               
              {"EG%//", "EG// European Gamers", "#08c3ff", nil },}ATCarcolor = true 
ATNormalColor = {255, 255, 255} 
function onResourceStartAutoteams() 
    for name, data in ipairs(Tags) do 
        --outputChatBox(" TEST: " .. name .. "   " .. data[1] .. "   " .. data[2] ) -- This is only for Test 
        for id, player in ipairs(getElementsByType("player")) do 
            if string.find(getPlayerName(player), data[1]) then 
                --outputChatBox( "Founded: " .. getPlayerName(players) .. " as " .. data[2]) -- This is only for Test 
                 
                if not isElement(data[2]) or getElementType(data[2]) ~= "team" then 
                    creatingTeam = createTeam( data[2], getColorFromString ( data[3] ) ) 
                    if creatingTeam then 
                        outputDebugString( "Autoteams: Added team '" .. data[2] .. "'." ) 
                        data[4] = creatingTeam 
                    end 
                end 
                 
                setTimer(function() 
                            for name, data in ipairs(Tags) do 
                                for id, player in ipairs(getElementsByType("player")) do 
                                    if string.find(getPlayerName(player), data[1]) then 
                                        movedteam = setPlayerTeam ( player, data[4] ) 
                                        if not movedteam then 
                                            MoveToTeam = getTeamFromName( data[2] ) 
                                            outputDebugString( "Autoteams: Set '" .. getPlayerName(player) .. "' to team as '" .. data[2] .. "'." ) 
                                            setPlayerTeam ( player, MoveToTeam ) 
                                            return 
                                        end 
                                        outputDebugString( "Autoteams: Set '" .. getPlayerName(player) .. "' to team as '" .. data[2] .. "'." ) 
                                    end 
                                end 
                            end 
                         end, 2000, 1) 
            end 
        end 
    end 
end 
addEventHandler( "onResourceStart", getResourceRootElement(getThisResource()), onResourceStartAutoteams ) 
  
function onPlayerChangeNickAutoteams() 
    setTimer(checkPlayerTeam, 2000, 1, source) 
end 
addEventHandler("onPlayerChangeNick", getRootElement(), onPlayerChangeNickAutoteams) 
  
function onPlayerJoinAutoteams() 
    setTimer(checkPlayerTeam, 2000, 1, source) 
end 
addEventHandler( "onPlayerJoin", getRootElement(), onPlayerJoinAutoteams ) 
  
function onPlayerQuitAutoteams() 
    -- Remove teams if players are not team 
    returnPlayerTeam = getPlayerTeam( source ) 
    if returnPlayerTeam then 
        setPlayerTeam( source, nil ) 
        if countPlayersInTeam(returnPlayerTeam) == 0 then 
            destroyElement(returnPlayerTeam) 
        end 
    end 
end 
addEventHandler( "onPlayerQuit", getRootElement(), onPlayerQuitAutoteams ) 
  
function checkPlayerTeam(player) 
    local publicplayer = player 
    for name, data in ipairs(Tags) do 
        if string.find(getPlayerName(player), data[1]) then 
         
            if not isElement(data[4]) or getElementType(data[4]) ~= "team" then 
                creatingTeam = createTeam( data[2], getColorFromString ( data[3] ) ) 
                if creatingTeam then 
                    outputDebugString( "Autoteams: Added team '" .. data[2] .. "'." ) 
                    data[4] = creatingTeam 
                end 
            end 
         
            setTimer(function() 
                        for name, data in ipairs(Tags) do 
                            if string.find(getPlayerName(publicplayer), data[1]) then 
                                movedteam = setPlayerTeam ( publicplayer, data[4] ) 
                                if not movedteam then 
                                    MoveToTeam = getTeamFromName( data[2] ) 
                                    outputDebugString( "Autoteams: Set '" .. getPlayerName(publicplayer) .. "' to team as '" .. data[2] .. "'." ) 
                                    setPlayerTeam ( publicplayer, MoveToTeam ) 
                                    return 
                                end 
                                outputDebugString( "Autoteams: Set '" .. getPlayerName(publicplayer) .. "' to team as '" .. data[2] .. "'." ) 
                            end 
                        end 
                     end, 2000, 1) 
                          
        else 
            -- Remove teams if players are not team 
            returnPlayerTeam = getPlayerTeam( player ) 
            if returnPlayerTeam then 
                setPlayerTeam( player, nil ) 
                if countPlayersInTeam(returnPlayerTeam) == 0 then 
                    destroyElement(returnPlayerTeam) 
                end 
            end 
        end 
    end 
end 
  
function onChangeRaceState(newStateName) 
    for _,player in ipairs(getElementsByType("player")) do 
        if not getPlayerTeam(player) then 
                checkPlayerTeam(player) 
        end 
        if ATCarcolor == true then 
            local r,g,b = ATNormalColor[1], ATNormalColor[2], ATNormalColor[3] 
            local team = getPlayerTeam(player) 
            if team then 
                r,g,b = getTeamColor(team) 
            end 
            local PedIsInVehicle = getPedOccupiedVehicle(player) 
            if PedIsInVehicle then 
                setVehicleColor(PedIsInVehicle, r, g, b) 
            end 
        end 
    end 
end 
addEvent("onRaceStateChanging", true) 
addEventHandler( "onRaceStateChanging", getRootElement(), onChangeRaceState) 
  
  
  
----blips--- 
  
  
function blip(player) 
  
 local team = getPlayerTeam(player) 
if team then 
 for v,blip in pairs(getAttachedElements(player)) do 
    if getElementType(blip)=="blip" then 
          local r,g,b =getTeamColor(team) 
             setBlipColor(blip,r,g,b,255) 
         end 
              end 
                     end  
 end 
    
  
function timer() 
setTimer(blip,3000,1,source) 
end 
  
addEventHandler("onPlayerSpawn",getRootElement(),timer) 

Ti ringrazio ancora per l'aiuto che mi hai fornito, sei molto disponibile xD

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...