Jump to content

Tempo de Prisão.


Recommended Posts

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

Link to comment
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

Link to comment
  • Moderators

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.

Link to comment

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
Link to comment

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
Link to comment
  • Other Languages Moderators
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
Link to comment
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." )
Link to comment

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
Link to comment
  • Moderators
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
Link to comment
  • 3 months later...

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...