Renaz Posted May 12, 2019 Share 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? Link to comment
#DeltaSCR Posted May 13, 2019 Share 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) Link to comment
OrbTanT Posted May 13, 2019 Share 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) Link to comment
#DeltaSCR Posted May 13, 2019 Share 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. Link to comment
Jonas^ Posted May 13, 2019 Share Posted May 13, 2019 Output também falta um argumento. Link to comment
#DeltaSCR Posted May 14, 2019 Share 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. Link to comment
brunob22 Posted May 14, 2019 Share Posted May 14, 2019 minha dica e não use setTimer. porque se o servidor trava o timer tb para ^^ pode causar ate bugs Link to comment
#DeltaSCR Posted May 14, 2019 Share Posted May 14, 2019 1 minute ago, Renazz said: então o que uso? Pode usar setTimer, pois é coisa de pouco tempo. Link to comment
DNL291 Posted May 14, 2019 Share 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 Link to comment
Renaz Posted May 14, 2019 Author Share 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' Link to comment
#DeltaSCR Posted May 14, 2019 Share Posted May 14, 2019 (edited) Dê uma revisada na estrutura de seu código Edited May 14, 2019 by #DeltaSCR Link to comment
Other Languages Moderators Lord Henry Posted May 14, 2019 Other Languages Moderators Share Posted May 14, 2019 Não existe aquela vírgula depois do end da linha 31. Link to comment
Renaz Posted May 14, 2019 Author Share Posted May 14, 2019 ficou dando erro na mesma . só que agora na 32 Link to comment
#DeltaSCR Posted May 14, 2019 Share Posted May 14, 2019 @Renazz você também está usando alguns elementos errados Link to comment
Other Languages Moderators Lord Henry Posted May 14, 2019 Other Languages Moderators Share 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 Link to comment
Renaz Posted May 14, 2019 Author Share Posted May 14, 2019 não, estou usando o alvo para quem o policial quer prender . Link to comment
#DeltaSCR Posted May 14, 2019 Share Posted May 14, 2019 @Lord Henry Tem erro em alguns elementos na verificação de ACL Link to comment
Other Languages Moderators Lord Henry Posted May 14, 2019 Other Languages Moderators Share Posted May 14, 2019 Só substituir o hitElement por thePlayer. Link to comment
#DeltaSCR Posted May 14, 2019 Share Posted May 14, 2019 Infelizmente não posso aplicar correções no código agora, pois não estou no PC. Link to comment
Renaz Posted May 14, 2019 Author Share Posted May 14, 2019 agora funcionou! mas como coloco para aparecer o tempo na tela? Link to comment
Other Languages Moderators Lord Henry Posted May 14, 2019 Other Languages Moderators Share 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. Link to comment
Renaz Posted May 14, 2019 Author Share 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 Link to comment
Renaz Posted May 14, 2019 Author Share 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 Link to comment
Other Languages Moderators Lord Henry Posted May 14, 2019 Other Languages Moderators Share 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 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