Striker6225 Posted September 25, 2019 Share Posted September 25, 2019 (edited) Olá, Recentemente tive a ideia de adicionar no meu servidor um script de SAMU, mas esse script que eu coloquei, na linha 2 ele possui uma variável que faz para você coloca o tempo, só que ela não funciona, desde então eu estava caçando codigo de tempo na internet e achei um feito pelo @DNL291 que é este: local time addEvent( "onServerCallAddSetTimer", true ) addEventHandler( "onServerCallAddSetTimer", root, function () time = setTimer(function() time = nil removeEventHandler( "onClientRender", root, renderTime ) end, 180000, 1) addEventHandler( "onClientRender", root, renderTime ) end ) function renderTime() local gDetails = getTimerDetails(time) if not gDetails then return end local remainingTime = secondsToTimeDesc( gDetails / 1000 ) dxDrawText( "Tempo de vida restante: "..tostring(remainingTime), left, top, right, bottom ) end function secondsToTimeDesc( seconds ) if seconds then local results = {} local sec = ( seconds %60 ) local min = math.floor ( ( seconds % 3600 ) /60 ) local hou = math.floor ( ( seconds % 86400 ) /3600 ) local day = math.floor ( seconds /86400 ) if day > 0 then table.insert( results, day .. ( day == 1 and " day" or " days" ) ) end if hou > 0 then table.insert( results, hou .. ( hou == 1 and " hour" or " hours" ) ) end if min > 0 then table.insert( results, min .. ( min == 1 and " minute" or " minutes" ) ) end if sec > 0 then table.insert( results, sec .. ( sec == 1 and " second" or " seconds" ) ) end return string.reverse ( table.concat ( results, ", " ):reverse():gsub(" ,", " dna ", 1 ) ) end return "" end Mas ai começou os problemas, eu não sei um jeito de colocar este tempo criado por ele conectado com o da samu que é este: hpMin = 15 Tempo = {} ColMedic = {} function getPlayerID(id) v = false for i, player in ipairs (getElementsByType("player")) do if getElementData(player, "ID") == id then v = player break end end return v end --==== function ChecarVida() for i, player in pairs (getElementsByType("player")) do if not getElementData(player, "PlayerCaido") then local conta = getAccountName(getPlayerAccount(player)) if getElementHealth(player) >= 1 then if getElementHealth(player) <= hpMin then removePedFromVehicle(player) setElementData(player, "PlayerCaido", true) setElementFrozen(player, true) setPedAnimation(player, "CRACK", "crckdeth3", 1, false, true, false) setTimer(function() if getElementData(player, "PlayerCaido") then killPed(player) end end, 240000, 1) end end else setPedAnimation(player, "CRACK", "crckdeth3", 1, false, true, false) end end end setTimer(ChecarVida, 200, 0) function ChecarVidaA() for i, player in pairs (getElementsByType("player")) do if getElementData(player, "PlayerCaido") then local conta = getAccountName(getPlayerAccount(player)) if getElementHealth(player) >= 31 then setElementData(player, "PlayerCaido", false) setPedAnimation(player, false) setElementFrozen(player, false ) end end end end setTimer(ChecarVidaA, 200, 0) function SetarCaidoComHS() player = source if not getElementData(player, "PlayerCaido") then removePedFromVehicle(player) setElementHealth(player, 20) setElementData(player, "PlayerCaido", true) setPedAnimation(player, "CRACK", "crckdeth3", 1, false, true, false) setTimer(function() if getElementData(player, "PlayerCaido") then killPed(player) end end, 240000, 1) end end addEvent("OnHS", true) addEventHandler("OnHS", getRootElement(), SetarCaidoComHS) function curar_jogador ( thePlayer, comando, id ) if id then id = tonumber ( id ) if id then local accName = getAccountName ( getPlayerAccount ( thePlayer ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Bombeiros") ) then local player_a_ser_curado = getPlayerID(id) if not player_a_ser_curado then return outputChatBox("#bebebeJogador não encontrado!",thePlayer,255,255,255,true) end local samux, samuy, samuz = getElementPosition ( thePlayer ) local curadox, curadoy, curadoz = getElementPosition ( player_a_ser_curado ) local dist = getDistanceBetweenPoints3D ( samux, samuy, samuz, curadox, curadoy, curadoz ) if player_a_ser_curado == thePlayer then outputChatBox("#bebebeVocê não pode se curar!",thePlayer,255,255,255,true) return end if ( dist > 3 ) then outputChatBox("#bebebeChegue mais perto do jogador!", thePlayer, 255, 255, 255, true) elseif ( dist < 3 )then setPedAnimation( thePlayer, "MEDIC", "CPR", 4500, true, false, false, false) setTimer ( function() if not isElement(player_a_ser_curado) then return end setElementHealth ( player_a_ser_curado, 100 ) setPedAnimation(player_a_ser_curado, false) setElementFrozen( player_a_ser_curado, false ) setElementData(player_a_ser_curado,"PlayerCaido",false) end, 4500, 1 ) end end else outputChatBox("#bebebe["..comando.."]: id inválido", thePlayer, 255, 255, 255, true) end else outputChatBox("#bebebeSintaxe: /"..comando.." [id]", thePlayer, 255, 255, 255, true) end end addCommandHandler ( "curar", curar_jogador ) Se alguém pode me ajudar fico agradecido, e obrigado se viu este POST Edited September 25, 2019 by Striker6225 Link to comment
Furzy Posted September 25, 2019 Share Posted September 25, 2019 Joga a script de tempo no client da script samu e usa triggerClientEvent("onServerCallAddSetTimer",player) 1 Link to comment
Striker6225 Posted September 25, 2019 Author Share Posted September 25, 2019 @Furzy Coloco aonde? dentro do codigo ou em qualquer lugar? Link to comment
Furzy Posted September 25, 2019 Share Posted September 25, 2019 2 minutes ago, Striker6225 said: @Furzy Coloco aonde? dentro do codigo ou em qualquer lugar? em ChecarVida() Link to comment
Striker6225 Posted September 25, 2019 Author Share Posted September 25, 2019 1 minute ago, Furzy said: em ChecarVida() Não funcionou Link to comment
Furzy Posted September 25, 2019 Share Posted September 25, 2019 Voce tem que botar a posição qe voce quer no dx nao está especificado na script function renderTime() local gDetails = getTimerDetails(time) if not gDetails then return end local remainingTime = secondsToTimeDesc( gDetails / 1000 ) dxDrawText( "Tempo de vida restante: "..tostring(remainingTime), left, top, right, bottom ) -- aqui se voce hotar 0,0,0,0 vai aparecer no canto superior esquerdo da tela por exemplo end Link to comment
Striker6225 Posted September 26, 2019 Author Share Posted September 26, 2019 5 minutes ago, Furzy said: Voce tem que botar a posição qe voce quer no dx nao está especificado na script function renderTime() local gDetails = getTimerDetails(time) if not gDetails then return end local remainingTime = secondsToTimeDesc( gDetails / 1000 ) dxDrawText( "Tempo de vida restante: "..tostring(remainingTime), left, top, right, bottom ) -- aqui se voce hotar 0,0,0,0 vai aparecer no canto superior esquerdo da tela por exemplo end Funcionu http://prntscr.com/pb19oz, mas é o seguinte queria coloca no centro só que mais para baixo, colocar maior e tirar esses 3 digitos após a virgula. Link to comment
Furzy Posted September 26, 2019 Share Posted September 26, 2019 2 minutes ago, Striker6225 said: Funcionu http://prntscr.com/pb19oz, mas é o seguinte queria coloca no centro só que mais para baixo, colocar maior e tirar esses 3 digitos após a virgula. pegue as coordenadas do centro com o guieditor para tirar os digitos use math.floor local sec = math.floor ( ( seconds %60 ) ) Link to comment
Striker6225 Posted September 26, 2019 Author Share Posted September 26, 2019 13 minutes ago, Furzy said: pegue as coordenadas do centro com o guieditor para tirar os digitos use math.floor local sec = math.floor ( ( seconds %60 ) ) Foi, so que o problema que ta aparecendo no de todo mundo, e quando é finalizado ele n sai ou seja quando morre. Link to comment
Furzy Posted September 26, 2019 Share Posted September 26, 2019 (edited) 20 minutes ago, Striker6225 said: Foi, so que o problema que ta aparecendo no de todo mundo, e quando é finalizado ele n sai ou seja quando morre. Tenta isso local time addEvent( "onServerCallAddSetTimer", true ) addEventHandler( "onServerCallAddSetTimer", localPlayer, function () time = setTimer(function() time = nil removeEventHandler( "onClientRender", root, renderTime ) end, 180000, 1) addEventHandler( "onClientRender", root, renderTime ) end ) addEvent( "fechar", true ) addEventHandler( "fechar", localPlayer, function () removeEventHandler( "onClientRender", root, renderTime ) end) foi mudado o root do event adicionado, para localPlayer e criado um outro evento pra fechar q deve ser inserido no ChecarVidaA() triggerClientEvent("fechar",player) Edited September 26, 2019 by Furzy Link to comment
Striker6225 Posted September 26, 2019 Author Share Posted September 26, 2019 6 minutes ago, Furzy said: Tenta isso local time addEvent( "onServerCallAddSetTimer", true ) addEventHandler( "onServerCallAddSetTimer", localPlayer, function () time = setTimer(function() time = nil removeEventHandler( "onClientRender", root, renderTime ) end, 180000, 1) addEventHandler( "onClientRender", root, renderTime ) end ) addEvent( "fechar", true ) addEventHandler( "fechar", localPlayer, function () removeEventHandler( "onClientRender", root, renderTime ) end) Não foi Link to comment
Furzy Posted September 26, 2019 Share Posted September 26, 2019 Nao sei entao, deveria funcionar Link to comment
Striker6225 Posted September 26, 2019 Author Share Posted September 26, 2019 Não aparece mais o texto. Link to comment
Furzy Posted September 26, 2019 Share Posted September 26, 2019 45 minutes ago, Striker6225 said: Não aparece mais o texto. Eu testei aqui e funcionou Link to comment
DNL291 Posted September 29, 2019 Share Posted September 29, 2019 Tenta adicionando root em localPlayer, em: addEventHandler( "fechar", localPlayer, function () Quando testar use o comando /debugscript 3 Edit O trigger deve ter o jogador especificado no primeiro parâmetro, senão será chamado para todos players. triggerClientEvent("onServerCallAddSetTimer",player) Deve ser: triggerClientEvent(player,"onServerCallAddSetTimer",player) Link to comment
Striker6225 Posted October 5, 2019 Author Share Posted October 5, 2019 On 28/09/2019 at 21:22, DNL291 said: Tenta adicionando root em localPlayer, em: addEventHandler( "fechar", localPlayer, function () Quando testar use o comando /debugscript 3 Edit O trigger deve ter o jogador especificado no primeiro parâmetro, senão será chamado para todos players. triggerClientEvent("onServerCallAddSetTimer",player) Deve ser: triggerClientEvent(player,"onServerCallAddSetTimer",player) Ainda não ta funcionando, coloquei assim: function ChecarVida() for i, player in pairs (getElementsByType("player")) do if not getElementData(player, "PlayerCaido") then local conta = getAccountName(getPlayerAccount(player)) if getElementHealth(player) >= 1 then if getElementHealth(player) <= hpMin then triggerClientEvent(player, "onServerCallAddSetTimer", player) -- AQUI removePedFromVehicle(player) setElementData(player, "PlayerCaido", true) setElementFrozen(player, true) setPedAnimation(player, "CRACK", "crckdeth3", 1, false, true, false) setTimer(function() if getElementData(player, "PlayerCaido") then killPed(player) end end, 240000, 1) end end else setPedAnimation(player, "CRACK", "crckdeth3", 1, false, true, false) end end end setTimer(ChecarVida, 200, 0) function ChecarVidaA() for i, player in pairs (getElementsByType("player")) do if getElementData(player, "PlayerCaido") then local conta = getAccountName(getPlayerAccount(player)) if getElementHealth(player) >= 31 then triggerClientEvent("fechar",player) -- AQUI setElementData(player, "PlayerCaido", false) setPedAnimation(player, false) setElementFrozen(player, false ) end end end end setTimer(ChecarVidaA, 200, 0) Link to comment
DNL291 Posted October 6, 2019 Share Posted October 6, 2019 No seu último trecho postado você não colocou player antes de "fechar" no trigger. Deixe o debug ativado quando testar, se não funcionar, posta o lado client. 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