Renaz Posted May 12, 2019 Posted May 12, 2019 Estou criando um script de prender o player e no caso quando o player coloca o tempo /prender (id) (tempo) , ex : /prender 3 10 sería 10 minutos e o player no setTimer seria 10 minutos , e como faço para outros valores?
#DeltaSCR Posted May 13, 2019 Posted May 13, 2019 É só você configurar direto no parâmetros do comando, e usar esse mesmo parâmetro no setTimer. Exemplo: function prenderJogador(thePlayer, cmd, valTimer) --// "valTimer" é o valor de tempo inserido pelo player que está acionando o comando. if not valTimer then --// Se tiver faltado o parâmetro de tempo, então: return outputChatBox("Faltaram parâmetros") --// Retorna uma mensagem informando a ausência ao jogador. end --// Seu código setTimer(function() --// Seu código end, (tonumber(valTimer)) * 60000, 1) --// Tempo declarado pelo player, multiplicado por 60000; 1m = 60000ms; Usei tonumber pois provável que o valor declarado pelo player virá como string. end addCommandHandler("prender", prenderJogador)
OrbTanT Posted May 13, 2019 Posted May 13, 2019 seguindo o exemplo do @#DeltaSCR antes do paramento valTimer declarado na function prenderJogador deve ter um parâmetro para o jogador colocar a ID do jogador. function prenderJogador(thePlayer, cmd, playerid, valTimer) --// playerid é o valor id inserido pelo jogador // "valTimer" é o valor de tempo inserido pelo player que está acionando o comando. -- verifica se o jogador digitou o parametro playerid if not playerid then --// Se tiver faltado o parâmetro de playerid, então: return outputChatBox("Faltar colocar o id do jogador") --// Retorna uma mensagem informando a ausência ao jogador. end if not valTimer then --// Se tiver faltado o parâmetro de tempo, então: return outputChatBox("Faltaram parâmetros") --// Retorna uma mensagem informando a ausência ao jogador. end --// Seu código setTimer(function() --// Seu código end, (tonumber(valTimer)) * 60000, 1) --// Tempo declarado pelo player, multiplicado por 60000; 1m = 60000ms; Usei tonumber pois provável que o valor declarado pelo player virá como string. end addCommandHandler("prender", prenderJogador)
#DeltaSCR Posted May 13, 2019 Posted May 13, 2019 Just now, OrbTanT said: seguindo o exemplo do @#DeltaSCR antes do paramento valTimer declarado na function prenderJogador deve ter um parâmetro para o jogador colocar a ID do jogador. function prenderJogador(thePlayer, cmd, playerid, valTimer) --// playerid é o valor id inserido pelo jogador // "valTimer" é o valor de tempo inserido pelo player que está acionando o comando. -- verifica se o jogador digitou o parametro playerid if not playerid then --// Se tiver faltado o parâmetro de playerid, então: return outputChatBox("Faltar colocar o id do jogador") --// Retorna uma mensagem informando a ausência ao jogador. end if not valTimer then --// Se tiver faltado o parâmetro de tempo, então: return outputChatBox("Faltaram parâmetros") --// Retorna uma mensagem informando a ausência ao jogador. end --// Seu código setTimer(function() --// Seu código end, (tonumber(valTimer)) * 60000, 1) --// Tempo declarado pelo player, multiplicado por 60000; 1m = 60000ms; Usei tonumber pois provável que o valor declarado pelo player virá como string. end addCommandHandler("prender", prenderJogador) Sim, aliás @Renazz, vale ressaltar também que você deve especificar o que é o parâmetro ID.
#DeltaSCR Posted May 14, 2019 Posted May 14, 2019 1 hour ago, Jonas^ said: Output também falta um argumento. Sim sim, tenho essa certa mania ksks como é um exemplo, eu não costumo especificar tudo ao pé da letra.
brunob22 Posted May 14, 2019 Posted May 14, 2019 minha dica e não use setTimer. porque se o servidor trava o timer tb para ^^ pode causar ate bugs
#DeltaSCR Posted May 14, 2019 Posted May 14, 2019 1 minute ago, Renazz said: então o que uso? Pode usar setTimer, pois é coisa de pouco tempo.
DNL291 Posted May 14, 2019 Posted May 14, 2019 12 hours ago, brunob22 said: minha dica e não use setTimer. porque se o servidor trava o timer tb para ^^ pode causar ate bugs Pela lógica na verdade tudo vai travar então, já que o server travou, então o setTimer seria o de menos. 2
Renaz Posted May 14, 2019 Author Posted May 14, 2019 local DelegaciaPrender = createMarker(1535.8380126953,-1672.9124755859,13.3828125,"cylinder",1,255,255,255,50) function prenderJogador(thePlayer, cmd, playerid, valTimer) --// playerid é o valor id inserido pelo jogador // "valTimer" é o valor de tempo inserido pelo player que está acionando o comando. local alvo = exports["[LusoRP](Sistema)ID_System"]:getPlayerID(tonumber(playerid)) if not alvo then --// Se tiver faltado o parâmetro de playerid, então: return outputChatBox("Faltar colocar o id do jogador") --// Retorna uma mensagem informando a ausência ao jogador. end if not valTimer then --// Se tiver faltado o parâmetro de tempo, então: return outputChatBox("Faltaram parâmetros") --// Retorna uma mensagem informando a ausência ao jogador. end if isObjectInACLGroup ("user."..getAccountName(getPlayerAccount (hitElement)), aclGetGroup ("ComandosCorporacoes")) then if isElementWithinMarker(player, DelegaciaPrender) then outputChatBox("use /prender (id) (tempo) para prender o jogador!", player , 255, 255 ,255) else outputChatBox("Você não está no marker da delegacia!",player , 255,255,255) setElementData("preso", alvo) setElementPosition (alvo, 264.42120361328,77.57405090332,1001.0390625) setElementInterior (alvo, 6) setElementDimension (alvo, 1) toggleAllControls(alvo , false) setTimer(function(alvo) toggleAllControls(alvo, true) removeElementData (alvo, "preso", true) setPedAnimation(alvo, nil, nil) removeElementData(alvo,"Algemado") setElementPosition(alvo , 1542.0284423828,-1669.5544433594,13.553701400757) setElementDimension(alvo , 0) setElementInterior(alvo , 0) end , end, (tonumber(valTimer)) * 60000, 1) --// Tempo declarado pelo player, multiplicado por 60000; 1m = 60000ms; Usei tonumber pois provável que o valor declarado pelo player virá como string. end addCommandHandler("prender", prenderJogador) ficou desse jeito. mas tá dando o erro server.lua:31: unexpected symbol near 'end'
#DeltaSCR Posted May 14, 2019 Posted May 14, 2019 (edited) Dê uma revisada na estrutura de seu código Edited May 14, 2019 by #DeltaSCR
Other Languages Moderators Lord Henry Posted May 14, 2019 Other Languages Moderators Posted May 14, 2019 Não existe aquela vírgula depois do end da linha 31.
#DeltaSCR Posted May 14, 2019 Posted May 14, 2019 @Renazz você também está usando alguns elementos errados
Other Languages Moderators Lord Henry Posted May 14, 2019 Other Languages Moderators Posted May 14, 2019 local DelegaciaPrender = createMarker(1535.8380126953,-1672.9124755859,13.3828125,"cylinder",1,255,255,255,50) function prenderJogador(thePlayer, cmd, playerid, valTimer) --// playerid é o valor id inserido pelo jogador // "valTimer" é o valor de tempo inserido pelo player que está acionando o comando. local alvo = exports["[LusoRP](Sistema)ID_System"]:getPlayerID(tonumber(playerid)) if not alvo then --// Se tiver faltado o parâmetro de playerid, então: return outputChatBox("Faltar colocar o id do jogador") --// Retorna uma mensagem informando a ausência ao jogador. end if not valTimer then --// Se tiver faltado o parâmetro de tempo, então: return outputChatBox("Faltaram parâmetros") --// Retorna uma mensagem informando a ausência ao jogador. end if isObjectInACLGroup ("user."..getAccountName(getPlayerAccount (hitElement)), aclGetGroup ("ComandosCorporacoes")) then if isElementWithinMarker(player, DelegaciaPrender) then outputChatBox("use /prender (id) (tempo) para prender o jogador!", player , 255, 255 ,255) else outputChatBox("Você não está no marker da delegacia!",player , 255,255,255) setElementData("preso", alvo) setElementPosition (alvo, 264.42120361328,77.57405090332,1001.0390625) setElementInterior (alvo, 6) setElementDimension (alvo, 1) toggleAllControls(alvo , false) setTimer(function(alvo) toggleAllControls(alvo, true) removeElementData (alvo, "preso", true) setPedAnimation(alvo, nil, nil) removeElementData(alvo,"Algemado") setElementPosition(alvo , 1542.0284423828,-1669.5544433594,13.553701400757) setElementDimension(alvo , 0) setElementInterior(alvo , 0) end, (tonumber(valTimer)) * 60000, 1) --// Tempo declarado pelo player, multiplicado por 60000; 1m = 60000ms; Usei tonumber pois provável que o valor declarado pelo player virá como string. end end end addCommandHandler("prender", prenderJogador) E também estava faltando end 1
Renaz Posted May 14, 2019 Author Posted May 14, 2019 não, estou usando o alvo para quem o policial quer prender .
#DeltaSCR Posted May 14, 2019 Posted May 14, 2019 @Lord Henry Tem erro em alguns elementos na verificação de ACL
Other Languages Moderators Lord Henry Posted May 14, 2019 Other Languages Moderators Posted May 14, 2019 Só substituir o hitElement por thePlayer.
#DeltaSCR Posted May 14, 2019 Posted May 14, 2019 Infelizmente não posso aplicar correções no código agora, pois não estou no PC.
Renaz Posted May 14, 2019 Author Posted May 14, 2019 agora funcionou! mas como coloco para aparecer o tempo na tela?
Other Languages Moderators Lord Henry Posted May 14, 2019 Other Languages Moderators Posted May 14, 2019 (edited) local DelegaciaPrender = createMarker(1535.8380126953,-1672.9124755859,13.3828125,"cylinder",1,255,255,255,50) function prenderJogador(thePlayer, cmd, playerid, valTimer) --// playerid é o valor id inserido pelo jogador // "valTimer" é o valor de tempo inserido pelo player que está acionando o comando. local alvo = exports["[LusoRP](Sistema)ID_System"]:getPlayerID(tonumber(playerid)) if not alvo then --// Se tiver faltado o parâmetro de playerid, então: return outputChatBox("Falta colocar o id do jogador", thePlayer) --// Retorna uma mensagem informando a ausência ao jogador. end if not valTimer then --// Se tiver faltado o parâmetro de tempo, então: return outputChatBox("Faltaram parâmetros", thePlayer) --// Retorna uma mensagem informando a ausência ao jogador. end if isObjectInACLGroup ("user."..getAccountName(getPlayerAccount (thePlayer)), aclGetGroup ("ComandosCorporacoes")) then if isElementWithinMarker(player, DelegaciaPrender) then outputChatBox("use /prender (id) (tempo) para prender o jogador!", thePlayer, 255, 255, 255) else outputChatBox("Você não está no marker da delegacia!", thePlayer, 255, 255, 255) setElementData("preso", alvo) setElementPosition (alvo, 264.42120361328, 77.57405090332, 1001.0390625) setElementInterior (alvo, 6) setElementDimension (alvo, 1) toggleAllControls(alvo, false) setTimer(function(alvo) toggleAllControls(alvo, true) removeElementData (alvo, "preso") setPedAnimation(alvo, nil, nil) removeElementData(alvo,"Algemado") setElementPosition(alvo, 1542.0284423828, -1669.5544433594, 13.553701400757) setElementDimension(alvo, 0) setElementInterior(alvo, 0) end, (tonumber(valTimer)) * 60000, 1) --// Tempo declarado pelo player, multiplicado por 60000; 1m = 60000ms; Usei tonumber pois provável que o valor declarado pelo player virá como string. end end end addCommandHandler("prender", prenderJogador) Um monte de correções. 3 minutes ago, Renazz said: agora funcionou! mas como coloco para aparecer o tempo na tela? Pra isso será necessário passar pro client-side. Edited May 14, 2019 by Lord Henry Correções de novo.
Renaz Posted May 14, 2019 Author Posted May 14, 2019 (edited) 10 minutes ago, Lord Henry said: Pra isso será necessário passar pro client-side. eu raramente uso o client-side. por isso não sei usar mas vou tentar aqui não to conseguindo '-' | outra o tempo que eu vou colocar no /prender id tempo é em minutos ou em milisegundos? Edited May 14, 2019 by Renazz
Renaz Posted May 14, 2019 Author Posted May 14, 2019 estou testando o script com alguns players do meu servidor e quando eu prendo usando /prender 5 1 ele não sai da prisão depois de 1 minuto'-' e fica lá para sempre e também está dando pra usar o comando fora do marker
Other Languages Moderators Lord Henry Posted May 14, 2019 Other Languages Moderators Posted May 14, 2019 (edited) local DelegaciaPrender = createMarker(1535.8380126953,-1672.9124755859,13.3828125,"cylinder",1,255,255,255,50) function prenderJogador(thePlayer, cmd, playerid, valTimer) --// playerid é o valor id inserido pelo jogador // "valTimer" é o valor de tempo inserido pelo player que está acionando o comando. local alvo = exports["[LusoRP](Sistema)ID_System"]:getPlayerID(tonumber(playerid)) if not alvo then --// Se tiver faltado o parâmetro de playerid, então: return outputChatBox("Falta colocar o id do jogador", thePlayer) --// Retorna uma mensagem informando a ausência ao jogador. end if not valTimer then --// Se tiver faltado o parâmetro de tempo, então: return outputChatBox("Faltaram parâmetros", thePlayer) --// Retorna uma mensagem informando a ausência ao jogador. end if isObjectInACLGroup ("user."..getAccountName(getPlayerAccount (thePlayer)), aclGetGroup ("ComandosCorporacoes")) then if isElementWithinMarker(thePlayer, DelegaciaPrender) then setElementData(alvo, "preso", true) setElementPosition (alvo, 264.42120361328, 77.57405090332, 1001.0390625) setElementInterior (alvo, 6) setElementDimension (alvo, 1) toggleAllControls(alvo, false) setTimer(function() toggleAllControls(alvo, true) removeElementData (alvo, "preso") setPedAnimation(alvo, nil, nil) removeElementData(alvo,"Algemado") setElementPosition(alvo, 1542.0284423828, -1669.5544433594, 13.553701400757) setElementDimension(alvo, 0) setElementInterior(alvo, 0) end, (tonumber(valTimer)) * 60000, 1) --// Tempo declarado pelo player, multiplicado por 60000; 1m = 60000ms; Usei tonumber pois provável que o valor declarado pelo player virá como string. else outputChatBox("Você não está no marker da delegacia!", thePlayer, 255, 255, 255) end end end addCommandHandler("prender", prenderJogador) Obs: Não testado. Edited May 14, 2019 by Lord Henry 1
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