PawnO.ExE Posted May 25, 2013 Share Posted May 25, 2013 Hola Pues Queria Pedirles Ayuda Ya Que Soy Nuevo En Esto Y Quiero Aprender Arreglarlo. Bueno Voy a Tema Busco un Script que al morir en DM Sigue el map Asta que muera o llege a hunter Y Al llegar Al Hunter De un Tanto de Dinero como 1000. Pero cuando en DD Quede 1 Termine el Map y Le De Dinero Como 500. Yo Arregle Eso Pero En DD Queda 1 Y no Termina el Map. tiene Que Dar Enter Y no Da Dinero al LLegar a Hunter O Quedar 1 Por favor Ayudenme con Este Problema Link to comment
Bc# Posted May 26, 2013 Share Posted May 26, 2013 Mira por el asunto de cuando llegue al hunter termine el map tienes que editar el destructionderby.lua que esta en la carpeta modes de tu race, y poner una condición con esto: getElementModel(player) == 425 por lo del dd tienes que editar el mismo lua pero tendrás que usar una función como esta para que el auto b funcione detectando que mapa estas jugando: function ismapDM(isim) if string.find(isim, "[DM]", 1, true) then return 1 elseif string.find(isim, "[DD]", 1,true) then return 2 elseif string.find(isim, "[FUN]", 1,true) then return 3 end end Y por ultimo con respecto al asunto de los dineros, no tiene caso ponerle a tu race dinero si no lo usaras en nada, asi que te recomiendo que te consigas o hagas un userpanel. Si te consigues un userpanel lo mas probable es que venga con las funciones de dar dinero por lo que tu pedías así que no sera mucho problema ese tema. Link to comment
PawnO.ExE Posted May 26, 2013 Author Share Posted May 26, 2013 Gracias @Bc. Pero Donde Coloco las Funciones. La Primera Arriba y la Segunda Abajo? Link to comment
Bc# Posted May 27, 2013 Share Posted May 27, 2013 Pon el destructionderby que tienes actualmente y ahi te digo como. Link to comment
PawnO.ExE Posted May 27, 2013 Author Share Posted May 27, 2013 @Bc Este Es el DestructionDerby.Lua Que Tengo Actualmente Abrir Spoiler: 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 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 local rank = self:getPlayerRank(player) 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) showMessage(getPlayerName(activePlayers[1]) .. ' Ha Ganado!', 255, 153, 100) triggerEvent( "onPlayerWinDD",activePlayers[1] ) 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
Bc# Posted May 27, 2013 Share Posted May 27, 2013 Reemplaza lo que tienes por esto deveria funcionar. 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 autoB = 1 function DestructionDerby:onPlayerWasted(player) if isActivePlayer(player) then self:handleFinishActivePlayer(player) if getActivePlayerCount() < autoB then RaceMode.endMap() else if getActivePlayerCount() <= autoB and getElementModel(player) == 425 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() < autoB then RaceMode.endMap() end if getActivePlayerCount() <= autoB and getElementModel(player) == 425 then RaceMode.endMap() end end end function someoneReachedHunter(number, sort, model) if sort == "vehiclechange" and model == 425 then if getActivePlayerCount() <= autoB then RaceMode.endMap() triggerEvent ( "activatePodium", getRootElement()) executeCommandHandler("onMapEndResetDeathList",source) triggerClientEvent ( "onEnd", getRootElement()) end end end addEvent("onPlayerPickUpRacePickup",true) addEventHandler("onPlayerPickUpRacePickup",getRootElement(),someoneReachedHunter) 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 local rank = self:getPlayerRank(player) 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) showMessage(getPlayerName(activePlayers[1]) .. ' Ha Ganado!', 255, 153, 100) triggerEvent( "onPlayerWinDD",activePlayers[1] ) end end ---------------------- -- Automated auto-B ---------------------- addEvent("onMapStarting") addEventHandler("onMapStarting", getRootElement(), function(mapInfo, mapOptions, gameOptions) if (ismapDM(mapInfo.name) == 1) then autoB = 1 elseif (ismapDM(mapInfo.name) == 2) then autoB = 2 elseif (ismapDM(mapInfo.name) == 3) then autoB = 2 end end) function ismapDM(isim) if string.find(isim, "[DM]", 1, true) then return 1 elseif string.find(isim, "[DD]", 1,true) then return 2 elseif string.find(isim, "[FUN]", 1,true) then return 3 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
PawnO.ExE Posted May 28, 2013 Author Share Posted May 28, 2013 @Bc#. Me Tira Un Error, No me Carga el map ni nada. Error: [2013-05-28 12:30:37] SCRIPT ERROR: race\modes\destructionderby.lua:156: 'end' expected (to close 'function' at line 35) near '' [2013-05-28 12:30:37] WARNING: Loading script failed: race\modes\destructionderby.lua:156: 'end' expected (to close 'function' at line 35) near '' Linea: (to close 'function' at line 35) near '' (?) function DestructionDerby:onPlayerWasted(player) if isActivePlayer(player) then self:handleFinishActivePlayer(player) if getActivePlayerCount() < autoB then RaceMode.endMap() else if getActivePlayerCount() <= autoB and getElementModel(player) == 425 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 ==> Ultima Linea <== 'end' expected 156: end Code completo: 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 autoB = 1 function DestructionDerby:onPlayerWasted(player) if isActivePlayer(player) then self:handleFinishActivePlayer(player) if getActivePlayerCount() < autoB then RaceMode.endMap() else if getActivePlayerCount() <= autoB and getElementModel(player) == 425 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() < autoB then RaceMode.endMap() end if getActivePlayerCount() <= autoB and getElementModel(player) == 425 then RaceMode.endMap() end end end function someoneReachedHunter(number, sort, model) if sort == "vehiclechange" and model == 425 then if getActivePlayerCount() <= autoB then RaceMode.endMap() triggerEvent ( "activatePodium", getRootElement()) executeCommandHandler("onMapEndResetDeathList",source) triggerClientEvent ( "onEnd", getRootElement()) end end end addEvent("onPlayerPickUpRacePickup",true) addEventHandler("onPlayerPickUpRacePickup",getRootElement(),someoneReachedHunter) 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 local rank = self:getPlayerRank(player) 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) showMessage(getPlayerName(activePlayers[1]) .. ' Ha Ganado!', 255, 153, 100) triggerEvent( "onPlayerWinDD",activePlayers[1] ) end end ---------------------- -- Automated auto-B ---------------------- addEvent("onMapStarting") addEventHandler("onMapStarting", getRootElement(), function(mapInfo, mapOptions, gameOptions) if (ismapDM(mapInfo.name) == 1) then autoB = 1 elseif (ismapDM(mapInfo.name) == 2) then autoB = 2 elseif (ismapDM(mapInfo.name) == 3) then autoB = 2 end end) function ismapDM(isim) if string.find(isim, "[DM]", 1, true) then return 1 elseif string.find(isim, "[DD]", 1,true) then return 2 elseif string.find(isim, "[FUN]", 1,true) then return 3 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
AlvareZ_ Posted May 28, 2013 Share Posted May 28, 2013 function DestructionDerby:onPlayerWasted(player) if isActivePlayer(player) then self:handleFinishActivePlayer(player) if getActivePlayerCount() < autoB then RaceMode.endMap() else if getActivePlayerCount() <= autoB and getElementModel(player) == 425 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 end Link to comment
Bc# Posted May 28, 2013 Share Posted May 28, 2013 Prueba con eso. function DestructionDerby:onPlayerWasted(player) if isActivePlayer(player) then self:handleFinishActivePlayer(player) if getActivePlayerCount() < autoB then RaceMode.endMap() end if getActivePlayerCount() <= autoB and getElementModel(player) == 425 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 Link to comment
Recommended Posts