Jump to content

[AJUDA]setElementData e TriggerEvent


Recommended Posts

  • Other Languages Moderators

Mas ele está considerando Kits como nil. No entanto a condição nil or 0 deveria resultar em 0.

Testei aqui e ele está funcionando normal. Mesmo sem a data, ele considera como 0.

function DeltaSCRFix ()
	if getPedOccupiedVehicle(localPlayer) then
		Kits = tonumber(getElementData(localPlayer, "Kit")) or 0
		print ("Kits = "..tostring(Kits))
		if Kits > 0 then
			setElementData(localPlayer, "Kit", Kits -1)
			outputChatBox ("╔═════════════════════════════════════════════════╗", 200, 50, 0)
			outputChatBox ("INFO: #FFFFFFVocê usou seu Kit de Reparo com Sucesso.", 200, 50, 0, true)
			outputChatBox ("INFO: #FFFFFFVocê agora tem mais "..Kits.." usos.", 200, 50, 0, true)
			outputChatBox ("╚═════════════════════════════════════════════════╝", 200, 50, 0)
		end
	end
end
addCommandHandler ("seguro", DeltaSCRFix)

O que provavelmente está acontecendo é que vc está anulando a variável global Kits em outra parte do código. Pois vc não está usando variável local.

Edited by Lord Henry
Link to comment

@Lord Henry As variáveis só são usadas ai:

 

function verifyKits ()
	local Kits = tonumber(getElementData(localPlayer, "Kit")) or 0
	if Kits < 3 then
		setElementData(localPlayer, "Kit", Kits +1)
	else
		setElementData(localPlayer, "Kit", 3)
	end
end

-- @Reparar Veh

function DeltaSCRFix ()
	if getPedOccupiedVehicle(localPlayer) then
		Kits = tonumber(getElementData(localPlayer, "Kit")) or 0
		if Kits > 0 then
			setElementData(localPlayer, "Kit", Kits -1)
			outputChatBox ("╔═════════════════════════════════════════════════╗", 200, 50, 0)
			outputChatBox ("INFO: #FFFFFFVocê usou seu Kit de Reparo com Sucesso.", 200, 50, 0, true)
			outputChatBox ("INFO: #FFFFFFVocê agora tem mais "..Kits.." usos.", 200, 50, 0, true)
			outputChatBox ("╚═════════════════════════════════════════════════╝", 200, 50, 0)
		end
	end
end
addCommandHandler ("seguro", DeltaSCRFix)

 

Link to comment
  • Other Languages Moderators

Ah, por isso então.

Na sua linha 14 ele está dando nil pois ele está tentando pegar a variável local da outra função, mas por ser local ela não existe fora de seu escopo.

Faça Kits ser local também na linha 14.

local Kits = tonumber(getElementData(localPlayer, "Kit")) or 0

 

Link to comment

Agora surgiu uma especie de Bug Grafico: O HP do Veiculo consta como 1000, mas a lataria permanece danificada - Código a Seguir... (Server-Side)

function DeltaSCRFix (thePlayer)
	local playerInCar = getPedOccupiedVehicle(thePlayer)
	if playerInCar then
		local vehicleHealth = getElementHealth (playerInCar) / 10 
		if vehicleHealth < 85 then
			setElementHealth (playerInCar, 1000)
		end
	end
end
addCommandHandler ("fix", DeltaSCRFix)

 

Edited by #DeltaSCR
Link to comment
  • Other Languages Moderators

Isso não é bug. É normal acontecer isso.

Experimente bater seu veículo e depois setar a vida dele em 1000 sem usar a função fixVehicle. Ele vai ficar com a vida cheia mas vai continuar amassado.

O mesmo acontece se vc cancelar o dano no veículo sem blindá-lo com setVehicleDamageProof. Vai amassar normalmente mas não vai diminuir a vida.

Link to comment
3 hours ago, Lord Henry said:

Isso não é bug. É normal acontecer isso.

Experimente bater seu veículo e depois setar a vida dele em 1000 sem usar a função fixVehicle. Ele vai ficar com a vida cheia mas vai continuar amassado.

O mesmo acontece se vc cancelar o dano no veículo sem blindá-lo com setVehicleDamageProof. Vai amassar normalmente mas não vai diminuir a vida.

Então como eu resolvo isso?

Link to comment

Usa o fixVehicle ao invés de setElementHealth '- se tu prestar atenção na mensagem do lord diz
"Experimente bater seu veículo e depois setar a vida dele em 1000 sem usar a função fixVehiclese tu usar setElementHealth seu carro vai continuar "amassado" agora experimente usar fixVehicle  e tu irá ver a mágica. :) 

Edited by #DaNiLiN
Link to comment
4 hours ago, #DaNiLiN said:

Usa o fixVehicle ao invés de setElementHealth '- se tu prestar atenção na mensagem do lord diz
"Experimente bater seu veículo e depois setar a vida dele em 1000 sem usar a função fixVehiclese tu usar setElementHealth seu carro vai continuar "amassado" agora experimente usar fixVehicle  e tu irá ver a mágica. :) 

Realmente, na verdade eu nunca tinha usado fixVehicle, então quando o Lord falou, eu nem me atentei muito.

Link to comment

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...