Phrenetiick Posted July 9, 2012 Share Posted July 9, 2012 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 PS: Un saluto ai tipi italiani che conosco u.u Link to comment
HunT Posted July 9, 2012 Share Posted July 9, 2012 Strano Di sicuro non hai il weapons fire con il value true nel meta.xml Link to comment
Phrenetiick Posted July 10, 2012 Author Share Posted July 10, 2012 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 phrenetiick succhia :3 Non so perché ma mi aspettavo una risposta come questa, tua o di sHocKz :3 Link to comment
HunT Posted July 10, 2012 Share Posted July 10, 2012 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
HunT Posted July 10, 2012 Share Posted July 10, 2012 Per quanto riguarda l altro topic auto b spiegati meglio. Cosa intendi fare Link to comment
Phrenetiick Posted July 10, 2012 Author Share Posted July 10, 2012 Per quanto riguarda l altro topic auto b spiegati meglio.Cosa intendi fare 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
HunT Posted July 10, 2012 Share Posted July 10, 2012 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
Phrenetiick Posted July 10, 2012 Author Share Posted July 10, 2012 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
HunT Posted July 10, 2012 Share Posted July 10, 2012 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
Phrenetiick Posted July 10, 2012 Author Share Posted July 10, 2012 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
HunT Posted July 10, 2012 Share Posted July 10, 2012 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
Phrenetiick Posted July 10, 2012 Author Share Posted July 10, 2012 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
HunT Posted July 10, 2012 Share Posted July 10, 2012 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. Link to comment
Phrenetiick Posted July 11, 2012 Author Share Posted July 11, 2012 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 Link to comment
HunT Posted July 11, 2012 Share Posted July 11, 2012 Devi settare file al posto di random nell pannello admin. Apri il pannello admin Resources Race Setting Cerca Vehicle color ( qualcosa del genere ) Cambia il valore da " random " a " file " Link to comment
Phrenetiick Posted July 11, 2012 Author Share Posted July 11, 2012 Devi settare file al posto di random nell pannello admin.Apri il pannello admin Resources Race Setting Cerca Vehicle color ( qualcosa del genere ) Cambia il valore da " random " a " file " Grazie, tutto risolto, non conoscevo questo valore D: Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now