Jump to content

[Ajuda] - O que está de errado nesse código?


Recommended Posts

  • Other Languages Moderators
3 minutes ago, MaligNos said:

Não é via de regra possuir extensão, o exemplo que pedi para ele testar também possui e não funciona para ele, deve ser algum problema especifico no servidor dele.

Hmmm, que estranho. O engraçado é que eu testei com uma txd e dff inválida (não sei se influencia em algo). Criei um arquivo de texto, coloquei um "a" e salvei o arquivo como txd e dff. :lol:. Mesmo assim funcionou perfeitamente.

Link to comment
8 minutes ago, asrzk said:

Hmmm, que estranho. O engraçado é que eu testei com uma txd e dff inválida (não sei se influencia em algo). Criei um arquivo de texto, coloquei um "a" e salvei o arquivo como txd e dff. :lol:. Mesmo assim funcionou perfeitamente.

Sim, o sistema de arquivos não é tão avançado assim para conseguir identificar a validade do dado com a extensão (só mexe com o nome mesmo kk).

10 minutes ago, DNL291 said:

Testei com um arquivo sem extensão e funciona também. O problema é com o diretório e extensão errados.

fileExist dele retorna true: https://forum.multitheftauto.com/topic/115189-ajuda-o-que-está-de-errado-nesse-código/?do=findComment&comment=946407

 

 

 

Link to comment
12 minutes ago, MaligNos said:

Eu falei sobre o comentário do asrzk, só dá problema se tiver com a extensão / local incorretos, pode ser um arquivo sem extensão que funciona. Minha colocação deu a entender que foi o que aconteceu com o autor do tópico, fica aí a correção.

Edited by DNL291
Link to comment
27 minutes ago, asrzk said:

Hmmm, que estranho. O engraçado é que eu testei com uma txd e dff inválida (não sei se influencia em algo). Criei um arquivo de texto, coloquei um "a" e salvei o arquivo como txd e dff. :lol:. Mesmo assim funcionou perfeitamente.

 

6 minutes ago, DNL291 said:

Eu falei sobre o comentário do asrzk, só dá problema se tiver com a extensão / local incorretos, pode ser um arquivo sem extensão que funciona. Minha colocação deu a entender que foi o que aconteceu com o autor do tópico, fica aí a correção.

 

19 minutes ago, MaligNos said:

Sim, o sistema de arquivos não é tão avançado assim para conseguir identificar a validade do dado com a extensão (só mexe com o nome mesmo kk).

fileExist dele retorna true: https://forum.multitheftauto.com/topic/115189-ajuda-o-que-está-de-errado-nesse-código/?do=findComment&comment=946407

 

 

 

 

2 hours ago, Lord Henry said:

Então ele tem permissão sim a esta função.

Bom depois de tudo, removi o MTA, limpei os arquivos e o arquivo ainda não renomeia. não sei mais o que fazer, a função não funciona.

Link to comment
15 minutes ago, MatheusCalixto said:

Bom depois de tudo, removi o MTA, limpei os arquivos e o arquivo ainda não renomeia. não sei mais o que fazer, a função não funciona.

Lembro que tú tava com uma pasta do servidor e outra do cliente, você reinstalou qual ? deve ser a do cliente (ou ambas).

  • Thanks 1
Link to comment
32 minutes ago, MaligNos said:

Lembro que tú tava com uma pasta do servidor e outra do cliente, você reinstalou qual ? deve ser a do cliente (ou ambas).

 

31 minutes ago, Lord Henry said:

O ideal é reinstalar tudo. Só fazer backup dos mods que tinha no servidor e pronto.

Não pessoal, eu reinstalei todo mta de novo, a pasta do serve é outra coisa, fiz backup de uma pasta server da instalação e deixei em um arquivo zip qdo eue precisar.

Eu mexi aqui é descobri que o fileRename funciona no server-side, mas não funciona no lado client-side e eu não sei pq não funciona :/

Edited by MatheusCalixto
Link to comment
1 minute ago, Lord Henry said:

Ué. Mas de acordo com a Wiki essa função é both-side.

Eu troquei no script.lua o type="client" para "server" só pra testar e funcionou normal, mas qdo eu coloco "client" da aquele erro.

Link to comment

funciona no lado cliente também. Se você quiser pode upar o resource que está testando em algum site e veremos se há algo errado; senão tiver, o problema só pode ser outro.

Edited by DNL291
Link to comment
32 minutes ago, DNL291 said:

funciona no lado cliente também. Se você quiser pode upar o resource que está testando em algum site e veremos se há algo errado; senão tiver, o problema só pode ser outro.

O resource já foi postado aqui.

Link to comment

@asrzk

@DNL291

@Lord Henry

Pessoal testa o código em algum server aí, e me diz a versão do seu MTA, quero ver se é a minha versão que está com problemas.

4 hours ago, asrzk said:

O arquivo que será renomeado, deve ter uma extensão. Testei aqui e funcionou.

Adicionei a extensão .yuv


local replace_model = {
    { "cmodels/tent.txd", "cmodels/tent.dff", 3243, "cmodels/vvoabC2xENOoQhgpE9MvT8kHWsQXEl.yuv", "cmodels/6edp8dkehrk1sghEJD1cazP0rT8weF.yuv" }
};

 

Me diz qual é a versão do seu MTA do server que você utilizou.

Link to comment
  • Other Languages Moderators
54 minutes ago, MatheusCalixto said:

Me diz qual é a versão do seu MTA do server que você utilizou.

É a versão do nightly MTA, que foi lançada há 11 horas atrás.

  • Thanks 1
Link to comment
  • Other Languages Moderators
7 hours ago, MatheusCalixto said:

meta.xml - protectionserver


<meta>
    <script src="p_client.lua" type="client" cache="false"/>
    <file src="p_moldes/tent.txd" type="client" download="false"/>
    <file src="p_moldes/tent.dff" type="client" download="false"/>
</meta> 

 

Seu meta.xml ainda está assim? Ou está diferente?

Edited by Lord Henry
Link to comment
  • Other Languages Moderators

Teste executado. Resultados:

Detectei alguns problemas relacionados ao seu loop. Fiz algumas alterações e deixei comentários pelo código. Assim está funcionando perfeitamente:

client.lua

local replace_model = { -- Cada arquivo deve estar separado em linha diferente por causa da dupla verificação causada pelos loops.
	{"cmodels/tent.txd", "cmodels/6edp8dkehrk1sghEJD1cazP0rT8weF.txd", 3243},
	{"cmodels/tent.dff", "cmodels/vvoabC2xENOoQhgpE9MvT8kHWsQXEl.dff", 3243}
}

function onStartResourceDeleteFiles()
	for _,data in ipairs(replace_model) do
		if not fileExists(data[2]) then -- Se não existe o arquivo renomeado, então:
			downloadFile(data[1]) -- Baixa o arquivo original do servidor. (pois lá ele não foi renomeado)
		elseif string.find (data[1], ".txd") then -- Senão se o arquivo renomeado é um TXD, então:
			engineImportTXD(engineLoadTXD(data[2]), data[3])
		elseif string.find (data[1], ".dff") then -- Senão se o arquivo renomeado é um DFF, então:
			engineReplaceModel(engineLoadDFF(data[2]), data[3])
		end
	end
end
addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), onStartResourceDeleteFiles)

addEventHandler("onClientFileDownloadComplete", getResourceRootElement(getThisResource()), function(file) -- Esta função é executada a cada arquivo baixado, no caso 2x
	for _, data in ipairs(replace_model) do
		if file == data[1] then -- Se o arquivo que acabou de ser baixado é o que está na data[1], então:
			fileRename(data[1], data[2]) -- Renomeia ele para o que está na data[2].
			if string.find (data[2], ".txd") then -- Se o arquivo renomeado é um TXD, então:
				engineImportTXD(engineLoadTXD(data[2]), data[3]) -- Importa a textura no objeto cujo ID está no data[3]
			elseif string.find (data[2], ".dff") then -- Se o arquivo renomeado é um DFF, então:
				engineReplaceModel(engineLoadDFF(data[2]), data[3]) -- Aplica o modelo no objeto cujo ID está no data[3]
			end
		end    
	end   
end)

meta.xml

<meta>
	<file src="cmodels/tent.txd" type="client" download="false"/>
	<file src="cmodels/tent.dff" type="client" download="false"/>

	<script src="client.lua" type="client" />
</meta>

 

Arquivos após a execução:

Spoiler

QcFusyO.png

 

  • Thanks 1
Link to comment
9 hours ago, Lord Henry said:

Teste executado. Resultados:

Detectei alguns problemas relacionados ao seu loop. Fiz algumas alterações e deixei comentários pelo código. Assim está funcionando perfeitamente:

client.lua


local replace_model = { -- Cada arquivo deve estar separado em linha diferente por causa da dupla verificação causada pelos loops.
	{"cmodels/tent.txd", "cmodels/6edp8dkehrk1sghEJD1cazP0rT8weF.txd", 3243},
	{"cmodels/tent.dff", "cmodels/vvoabC2xENOoQhgpE9MvT8kHWsQXEl.dff", 3243}
}

function onStartResourceDeleteFiles()
	for _,data in ipairs(replace_model) do
		if not fileExists(data[2]) then -- Se não existe o arquivo renomeado, então:
			downloadFile(data[1]) -- Baixa o arquivo original do servidor. (pois lá ele não foi renomeado)
		elseif string.find (data[1], ".txd") then -- Senão se o arquivo renomeado é um TXD, então:
			engineImportTXD(engineLoadTXD(data[2]), data[3])
		elseif string.find (data[1], ".dff") then -- Senão se o arquivo renomeado é um DFF, então:
			engineReplaceModel(engineLoadDFF(data[2]), data[3])
		end
	end
end
addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), onStartResourceDeleteFiles)

addEventHandler("onClientFileDownloadComplete", getResourceRootElement(getThisResource()), function(file) -- Esta função é executada a cada arquivo baixado, no caso 2x
	for _, data in ipairs(replace_model) do
		if file == data[1] then -- Se o arquivo que acabou de ser baixado é o que está na data[1], então:
			fileRename(data[1], data[2]) -- Renomeia ele para o que está na data[2].
			if string.find (data[2], ".txd") then -- Se o arquivo renomeado é um TXD, então:
				engineImportTXD(engineLoadTXD(data[2]), data[3]) -- Importa a textura no objeto cujo ID está no data[3]
			elseif string.find (data[2], ".dff") then -- Se o arquivo renomeado é um DFF, então:
				engineReplaceModel(engineLoadDFF(data[2]), data[3]) -- Aplica o modelo no objeto cujo ID está no data[3]
			end
		end    
	end   
end)

meta.xml


<meta>
	<file src="cmodels/tent.txd" type="client" download="false"/>
	<file src="cmodels/tent.dff" type="client" download="false"/>

	<script src="client.lua" type="client" />
</meta>

 

Arquivos após a execução:

  Reveal hidden contents

QcFusyO.png

 

Amigo, eu preciso saber qual a versão do MTA você utilizou, pq aqui continua com um erro que não renomeia o arquivo, então eu queria testar outra versão para ver se é isso.

Eu removi o MTA por completo do computador, instalei a última versão do nightly MTA e o errou continuou, o código está correto mas não renomeia pra mim, da sempre aquele erro.

Link to comment

Já tentou com um arquivo diferente ou fora de qualquer pasta ou deletando os arquivos do cache do cliente (MTA San Andreas 1.5\mods\deathmatch\resources)?

A versão do MTA com certeza não tem relação com esse problema.

Link to comment
7 minutes ago, DNL291 said:

Já tentou com um arquivo diferente ou fora de qualquer pasta ou deletando os arquivos do cache do cliente (MTA San Andreas 1.5\mods\deathmatch\resources)?

A versão do MTA com certeza não tem relação com esse problema.

Já tentei de tudo, mais parece que algumas funções "FILE" não funciona no lado do cliente pra mim.

Eu tentei utilizar esse, apenas para teste:

https://wiki.multitheftauto.com/wiki/FileCopy

E deu um problema parecido.

Edited by MatheusCalixto
Link to comment

O engraçado é que tem um servidor que utiliza fileRename nos arquivos dele e funciona normalmente pra mim:

oRkplnH.png

14 minutes ago, Lord Henry said:

MTA:SA Server v.1.5.6-release-16557

Você pode zipar a pasta do server que você usou e mandar pra mim?

Link to comment

Bom, agora tenho certeza que só pode ser um problema diferente, talvez com o servidor/sistema do PC. Até por que o mesmo erro ocorreu com o resource do Malignos e pelo que me lembro em nenhum momento a função funcionou pra você.

Se quiser, você pode deixar aqui o log do MTADiag, baixe-o, execute ele e cole aqui o link salvo no clipboard (Ctrl+c) Baixar MTADiag

Edit: Use a função fileRename no lado server que deve funcionar.

Edited by DNL291
Link to comment
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

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