Jump to content

ERRO COM TEXTURAS


Recommended Posts

Olá pessoal, bom eu fiz um script de textura para meu servidor, porém ele contém um bug, se um jogador entrar no meu servidor, e ir em outro servidor a minha textura ira aparecer para ele lá. ou se o jogador entrar no servidor de alguém primeiro e não tiver a textura lá, e entrar no meu ele não consegue ver as texturas, a não ser que eu de restart na resource código:

CLIENT-SIDE


addEventHandler('onClientResourceStart', resourceRoot, function () 
txd = engineLoadTXD ("Textura/texture.txd")
engineImportTXD (txd, 14853) 
end)

 

Edited by OverKILL
Link to comment
  • Other Languages Moderators

Server-side:

addEventHandler ("onPlayerJoin", getRootElement(), function ()
	triggerClientEvent (source, "iniciarTexturas", source) -- Executa o evento "iniciarTexturas" do client.lua somente no jogador que entrou.
end)

addEventHandler ("onPlayerQuit", getRootElement(), function ()
	triggerClientEvent (source, "desativarTexturas", source) -- Executa o evento "desativarTexturas" do client.lua somente no jogador que saiu.
end)

Client-side:

function iniciar ()
	if not txd then -- Se a textura não está ativada, então:
		txd = engineLoadTXD ("Textura/texture.txd")
		engineImportTXD (txd, 14853)
	end
end
addEvent ("iniciarTexturas", true) -- Cria um evento personalizado e permite que ele seja chamado por outros scripts.
addEventHandler ("iniciarTexturas", getRootElement(), iniciar)
addCommandHandler ("enable", iniciar) -- Comando para ativar as texturas manualmente.

function desativar ()
	if isElement (txd) then -- Se existe a textura, então:
		destroyElement (txd) -- Deleta a textura e volta ao original.
		txd = nil
	end
end
addEvent ("desativarTexturas", true) -- Cria um evento personalizado e permite que ele seja chamado por outros scripts.
addEventHandler ("desativarTexturas", getRootElement(), desativar)
addCommandHandler ("disable", desativar) -- Comando para desativar as texturas manualmente.

Obs: Não cheguei a testar.

Edited by Lord Henry
  • Like 1
Link to comment
25 minutes ago, Lord Henry said:

Server-side:


addEventHandler ("onPlayerJoin", getRootElement(), function ()
	triggerClientEvent (source, "iniciarTexturas", source) -- Executa o evento "iniciarTexturas" do client.lua somente no jogador que entrou.
end)

addEventHandler ("onPlayerQuit", getRootElement(), function ()
	triggerClientEvent (source, "desativarTexturas", source) -- Executa o evento "desativarTexturas" do client.lua somente no jogador que saiu.
end)

Client-side:


function iniciar ()
	if not txd then -- Se a textura não está ativada, então:
		txd = engineLoadTXD ("Textura/texture.txd")
		engineImportTXD (txd, 14853)
	end
end
addEvent ("iniciarTexturas", true) -- Cria um evento personalizado e permite que ele seja chamado por outros scripts.
addEventHandler ("iniciarTexturas", getRootElement(), iniciar)
addCommandHandler ("enable", iniciar) -- Comando para ativar as texturas manualmente.

function desativar ()
	if isElement (txd) then -- Se existe a textura, então:
		destroyElement (txd) -- Deleta a textura e volta ao original.
		txd = nil
	end
end
addEvent ("desativarTexturas", true) -- Cria um evento personalizado e permite que ele seja chamado por outros scripts.
addEventHandler ("desativarTexturas", getRootElement(), desativar)
addCommandHandler ("disable", desativar) -- Comando para desativar as texturas manualmente.

Obs: Não cheguei a testar.

Obrigado, esta parte do script que eu não estava conseguindo entender:

addEventHandler ("onPlayerJoin", getRootElement(), function ()
	triggerClientEvent (source, "iniciarTexturas", source) -- Executa o evento "iniciarTexturas" do client.lua somente no jogador que entrou.
end)

addEventHandler ("onPlayerQuit", getRootElement(), function ()
	triggerClientEvent (source, "desativarTexturas", source) -- Executa o evento "desativarTexturas" do client.lua somente no jogador que saiu.
end)

 

43 minutes ago, Lord Henry said:

Server-side:


addEventHandler ("onPlayerJoin", getRootElement(), function ()
	triggerClientEvent (source, "iniciarTexturas", source) -- Executa o evento "iniciarTexturas" do client.lua somente no jogador que entrou.
end)

addEventHandler ("onPlayerQuit", getRootElement(), function ()
	triggerClientEvent (source, "desativarTexturas", source) -- Executa o evento "desativarTexturas" do client.lua somente no jogador que saiu.
end)

Client-side:


function iniciar ()
	if not txd then -- Se a textura não está ativada, então:
		txd = engineLoadTXD ("Textura/texture.txd")
		engineImportTXD (txd, 14853)
	end
end
addEvent ("iniciarTexturas", true) -- Cria um evento personalizado e permite que ele seja chamado por outros scripts.
addEventHandler ("iniciarTexturas", getRootElement(), iniciar)
addCommandHandler ("enable", iniciar) -- Comando para ativar as texturas manualmente.

function desativar ()
	if isElement (txd) then -- Se existe a textura, então:
		destroyElement (txd) -- Deleta a textura e volta ao original.
		txd = nil
	end
end
addEvent ("desativarTexturas", true) -- Cria um evento personalizado e permite que ele seja chamado por outros scripts.
addEventHandler ("desativarTexturas", getRootElement(), desativar)
addCommandHandler ("disable", desativar) -- Comando para desativar as texturas manualmente.

Obs: Não cheguei a testar.

Eu testei aqui, porém percebi uma bug:

Quando um jogador entra no servidor aparece a mensagem que executou realmente o evento, aparece '' Texturas ativadas '' mas, a textura não aparece, apenas se o jogador digitar /desativartexturas e /ativartexturas

Link to comment

Tem alguma forma de fazer o evento não executar quando o jogador entrar e somente quando sair? então: A textura só sera ativada se o jogador usar o comando /ativartexturas e destruida quando o jogador sair do servidor, sera que isso pode ser uma solução? o que não estou entendendo é: Oque esta causando esse BUG

 

OBS: Testei aqui desabilitando o evento do onPlayerJoin, mas não tive sucesso na hora do jogador desconectar ele destroy a textura, porém se entrar em outro servidor ou entrar de novo no meu ele continuar mostrando a textura, mesmo destruindo a txd.

Edited by OverKILL
Link to comment

A textura carregada com funções Lua no MTA só executa na máquina virtual do próprio ambiente, isto é, no servidor. Não sei se realmente existe essa possibilidade, pode ser um bug do MTA ou outro tipo de problema como a textura no próprio GTA.

A propósito, use a função engineRestoreModel quando desativar a textura / sair do servidor, pode ser que corrija.

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