Renazz

Tempo de Prisão.

Recommended Posts

funcionou! agora como faço aquela parte de ficar aparecendo o tempo na tela?

Share this post


Link to post
On 14/05/2019 at 14:20, DNL291 said:

Pela lógica na verdade tudo vai travar então, já que o server travou, então o setTimer seria o de menos.

ele pode usar timestamp.. pq msm que o serve trave.. se passa o tempo ele vai saber

agora no settimer alem do servidor fica travado ele vai fica tentando fazer as coisas do settime.. 

 

melhor entender assim.. vamos supor seu pc travo? e voce continua clickando para abrir as paginas msm com o pc travado isso vai fazer demora mais ainda para destravar

Share this post


Link to post

@brunob22

É válido o pensamento, mas ele precisa executar um trecho de código em tal tempo, e como você varia isso sem o setTimer ? Creio eu que tais soluções seriam menos eficientes ainda quanto ao simples uso do setTimer.

Share this post


Link to post
3 hours ago, MaligNos said:

@brunob22

É válido o pensamento, mas ele precisa executar um trecho de código em tal tempo, e como você varia isso sem o setTimer ? Creio eu que tais soluções seriam menos eficientes ainda quanto ao simples uso do setTimer.

e possivel fazer.. mais da um trabalho mais evitaria problemas futuros

Share this post


Link to post

Sinceramente não acho que vale apena fazer isso... É melhor o programador fazer o esforço otimizando o servidor pra evitar excesso no uso do tráfego e rede e cpu.

E também: o servidor vai ficar instável > nada vai responder e provavelmente terá o aviso do MTA "Network trouble". Se for outro tipo de instabilidade, garanto que será por scripts mal feitos que comprometem o funcionamento do servidor e nesse contexto, o setTimer seria o problema menor, sendo que o verdadeiro problema estaria no servidor.

O que o programador pode fazer quanto a problemas que podem gerar em timers é fazer sempre verificação se elementos/valores são existentes.

Você poderia nos mostrar a solução com getTickCount, pois essa parte eu não entendi como vai funcionar da mesma forma que o setTimer, enfim, me parece que seria um trabalho que não valeria a pena, pelos motivos que já citei.

Share this post


Link to post
Posted (edited)

Ainda neste assunto , eu tentei colocar quando a pessoa fosse presa apareceria uma mensagem para todo o mundo falando que ela foi presa mais ela não está aparecendo!

 

local DelegaciaPrender = createMarker(1535.8380126953,-1672.9124755859,12.3828125,"cylinder",3,0,0,255,50)

function prenderJogador(thePlayer, cmd, playerid, valTimer)
	local alvo = exports["[LusoRP](Sistema)ID_System"]:getPlayerID(tonumber(playerid))
	if not alvo then 
		return outputChatBox("Falta colocar o id do jogador", thePlayer) 
	end
	if not valTimer then 
		return outputChatBox("Faltaram parâmetros", thePlayer) 
	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)
			takeAllWeapons(alvo)
			setPlayerWantedLevel(alvo,0)
			setTimer(function()
			outputChatBox("#0000FF[Policia] #00BFFFO Cidadão ID  #4682B4"..playerid.." #00BFFFOfoi preso pelo Polcial  #4682B4"..thePlayer.."!")
				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)
		else
			outputChatBox("Você não está no marker da delegacia!", thePlayer, 255, 255, 255)
		end
	end
end
addCommandHandler("prender", prenderJogador)

 

Edited by Renazz

Share this post


Link to post

1. Você colocou o output dentro do timer que irá liberar o player, fazendo isso seguindo a lógica essa mensagem só sera retornada quando o jogador for solto e não preso.

2. Seu output falta argumento, você não declarou pra quem ele deve mostrar e nem se é pra todos.

Faça assim:

local DelegaciaPrender = createMarker (1535.8380126953, -1672.9124755859, 12.3828125, "cylinder", 3, 0, 0, 255, 50)

function prenderJogador(thePlayer, cmd, playerid, valTimer)
	local alvo = exports["[LusoRP](Sistema)ID_System"]:getPlayerID(tonumber(playerid))
	if not alvo then 
		return outputChatBox("Falta colocar o id do jogador", thePlayer) 
	end
	if not valTimer then 
		return outputChatBox("Faltaram parâmetros", thePlayer) 
	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)
			takeAllWeapons (alvo)
			setPlayerWantedLevel (alvo,0)
			outputChatBox ("#0000FF[Policia] #00BFFFO Cidadão ID  #4682B4"..playerid.." #00BFFFOfoi preso pelo Polcial  #4682B4"..thePlayer.."!", root)
			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)
		else
			outputChatBox ("Você não está no marker da delegacia!", thePlayer, 255, 255, 255)
		end
	end
end
addCommandHandler ("prender", prenderJogador)

 

  • Thanks 1

Share this post


Link to post
2 minutes ago, Jonas^ said:

Seu output falta argumento, você não declarou pra quem ele deve mostrar e nem se é pra todos.

Quando não declarado nenhum argumento após a string do outputChatBox, ele automaticamente vai enviar para root (todo mundo).

  • Thanks 1

Share this post


Link to post
2 minutes ago, Lord Henry said:

Quando não declarado nenhum argumento após a string do outputChatBox, ele automaticamente vai enviar para root (todo mundo).

Carai, nem sabia disso, porém sempre prefiro declarar até porque o código fica mais bonito auihasaisa se sabe como é né, código não é só bem otimizado, tem que ter uma estética apresentável.

Na verdade nunca vi isso na página do output na wiki.

Até pensei que quando não definia nada ele retornava algum warn ou enviaria somente para o jogador que executou o comando.

@Lord Henry

Na verdade tem eu que nunca prestei muito atenção.

Server

Example 1: This example displays a chat message to all users.

x = 5
y = 10  
-- Displays the message
outputChatBox ( "I have " .. x .. " apples and " .. y .. " oranges." )

Share this post


Link to post

Troque :

outputChatBox ("#0000FF[Policia] #00BFFFO Cidadão ID  #4682B4"..playerid.." #00BFFFOfoi preso pelo Polcial  #4682B4"..thePlayer.."!", root)

Por:

outputChatBox ("#0000FF[Policia] #00BFFFO Cidadão ID  #4682B4"..alvo.." #00BFFFOfoi preso pelo Polcial  #4682B4"..thePlayer.."!", root)

 

  • Thanks 1

Share this post


Link to post
Posted (edited)

ainda não está aparecendo '-' quando vou no marker e me prendo não aparece nada no chat'

 

e agora também não funciona o timer!

Edited by Renazz

Share this post


Link to post

Sim, output esta errado, faça desta forma:

outputChatBox ("[Policia] #00BFFFO Cidadão ID  #4682B4"..playerid.." #00BFFFfoi preso pelo Polcial "..getPlayerName(thePlayer).."!", root, 0, 0, 255, true)

 

  • Thanks 1

Share this post


Link to post

 no caso de eu querer fazer "Foi preso por "..(tempo).."   qual variavel eu usaria ali no tempo

Share this post


Link to post

valTimer

outputChatBox ("[Policia] #00BFFFO Cidadão ID  #4682B4"..playerid.." #00BFFFfoi preso pelo Polcial "..getPlayerName(thePlayer).." por tempo: "..valTimer, root, 0, 0, 255, true)

 

  • Thanks 1

Share this post


Link to post
Posted (edited)
4 hours ago, Jonas^ said:

Carai, nem sabia disso, porém sempre prefiro declarar até porque o código fica mais bonito auihasaisa se sabe como é né, código não é só bem otimizado, tem que ter uma estética apresentável.

Na verdade nunca vi isso na página do output na wiki.

Até pensei que quando não definia nada ele retornava algum warn ou enviaria somente para o jogador que executou o comando.

@Lord Henry

Na verdade tem eu que nunca prestei muito atenção.

Server

Example 1: This example displays a chat message to all users.


x = 5
y = 10  
-- Displays the message
outputChatBox ( "I have " .. x .. " apples and " .. y .. " oranges." )

Na verdade a wiki mostra os argumentos obrigatórios e opcionais. Você pode saber quais a função vai utilizar por padrão desta forma:

bool outputChatBox ( string text [, element visibleTo = getRootElement(), int r = 231, int g = 217, int b = 176, bool colorCoded = false ] )

Note os colchetes e veja tudo que está dentro dele. É assim que a wiki mostra todos os argumentos/parâmetros opcionais de uma função.

visibleTo = getRootElement() - aqui significa que por padrão, o argumento visibleTo receberá getRootElement() (ou root) a menos que você defina ele. E assim por diante.

Edited by DNL291
  • Like 2

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.