Jump to content

[AJUDA]setElementData e TriggerEvent


Recommended Posts

Posted

Pser... O que era pra acontecer: Se o número de Kits do Jogador for maior que 0, então ele consegue executar o resto do código...

Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR

Minha página no Facebook: Delta Scripting - MTA


"Viribus et honor"

  • Moderators
Posted (edited)

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

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

Posted

@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)

 

Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR

Minha página no Facebook: Delta Scripting - MTA


"Viribus et honor"

Posted

Recomendo fazer esse código no lado server.

  • Like 1

Please do not PM me with scripting related question nor support, use the forums instead.

  • Moderators
Posted

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

 

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

Posted (edited)

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

Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR

Minha página no Facebook: Delta Scripting - MTA


"Viribus et honor"

  • Moderators
Posted

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.

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

Posted
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?

Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR

Minha página no Facebook: Delta Scripting - MTA


"Viribus et honor"

Posted (edited)

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

Meu comentário foi útil? Deixe um Thanks :D

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

Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR

Minha página no Facebook: Delta Scripting - MTA


"Viribus et honor"

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