Pesquisa resultou em 27 ocorrências

por Um_Geek
17 Mai 2018, 18:22
Fórum: Scripts & Códigos
Tópico: GSX - Garage Save eXtender
Respostas: 59
Exibições: 4869
Gênero:

GSX - Garage Save eXtender

SpoilerAbrir
Fabio escreveu:
17 Mai 2018, 18:02
Um_Geek escreveu:
SpoilerAbrir
Fabio escreveu: Falta a main com return 0, ao que me parece o Moonloader finaliza o script sem ela.

Outra coisa, você já tem o ponteiro do veículo, c.veh

Código: Selecionar tudo

struct externalCallbackStructure
{
	CVehicle *veh;
	int32_t status;
	CStoredCar *gameStoredData;
};

Tem mais coisas no script, mas só coloquei os require's e a função callback, eu tinha tentado usar c.veh, as vezes crasha.

Printe o valor que estiver recebendo nele por favor.

Você estava usando o c.veh direto, certo? Ele já é o ponteiro para o veículo, não precisa do getCarPointer, por exemplo.

Acredito que não seja problema no GSX.asi porque o .asi de salvar placas utiliza esse sistema, talvez tenha sido algo que eu fiz errado na lib, precisamos ver que valores estão sendo retornados para ter certeza.

no caso o crash vem no dataToLoadExists, serialCode é o que vou gravar, creio que terei que usar memory.strptr, tamanho 16 no minimo.

SpoilerAbrir

Código: Selecionar tudo

function callback(c)
	if c.status==1 then -- save 
		local d = os.date("*t")
		local serialCode = tonumber(string.format("%i%i%i%i%i%i",d.day,d.month,d.year,d.hour,d.min,d.sec))
		printHelpString(serialCode)
	else 
		if gsx.dataToLoadExists(c.veh,"SERIALCODE")==1 then 
			printHelpString("Testando!")
		end
	end
end
gsx.addNotifyCallback(callback) 

Edit 1:

Valor que retorna quando a garagem abre

Código: Selecionar tudo

(script)	Gsx Tests: garage open > cdata<void **>: 0x097429f0

Tentei usar isto para ver se o veiculo existe e veio mais crash

Código: Selecionar tudo

local car = getVehiclePointerHandle(c.veh)
por Um_Geek
17 Mai 2018, 17:57
Fórum: Scripts & Códigos
Tópico: GSX - Garage Save eXtender
Respostas: 59
Exibições: 4869
Gênero:

GSX - Garage Save eXtender

SpoilerAbrir
Fabio escreveu: Falta a main com return 0, ao que me parece o Moonloader finaliza o script sem ela.

Outra coisa, você já tem o ponteiro do veículo, c.veh

Código: Selecionar tudo

struct externalCallbackStructure
{
	CVehicle *veh;
	int32_t status;
	CStoredCar *gameStoredData;
};

Tem mais coisas no script, mas só coloquei os require's e a função callback, eu tinha tentado usar c.veh, as vezes crasha.
por Um_Geek
17 Mai 2018, 13:40
Fórum: Scripts & Códigos
Tópico: GSX - Garage Save eXtender
Respostas: 59
Exibições: 4869
Gênero:

GSX - Garage Save eXtender

Eu estava vendo a lista de funções do moonloader e achei isto.

Código: Selecionar tudo

string str = memory.tostring(uint address, [uint size], [bool unprotect=false])
uint address = memory.strptr(string str)

Assim deve dar para usar o gsx no moonloader sem precisar alocar memoria. :philo:

SpoilerAbrir
Eu estava testando isto, mas parece que pelo que disse não deve funcionar.

Código: Selecionar tudo

local gsx = require 'gsx'
local ffi = require 'ffi'
local memory = require 'memory'

function callback(c)
	local x,y,z= c.gameStoredData.pos.x,c.gameStoredData.pos.y,c.gameStoredData.pos.z;
	local res,veh = findAllRandomVehiclesInSphere(x,y,z,1.0,false,false)
	if res then 
		local ptr = getCarPointer(veh)
		if c.status==1 then -- save 

		else 
			if gsx.dataToLoadExists(ptr,"SERIALCODE")==1 then 
				printHelpString("Testando!")
			end
		end
	end
end
gsx.addNotifyCallback(callback) 
por Um_Geek
16 Mai 2018, 11:49
Fórum: Scripts & Códigos
Tópico: GSX - Garage Save eXtender
Respostas: 59
Exibições: 4869
Gênero:

GSX - Garage Save eXtender

Fabio escreveu: Eu testei antes de postar e estava funcionando, mas me avise caso qualquer erro, acho que precisa de melhorias o arquivo lua do GSX, foi o primeiro que eu fiz para o Moonloader. :fts:

Deve ser um load library do kernel do Windows internamente, não existe problema em dar load múltiplas vezes em uma dll/asi(que é dll), porque o Windows vê que já está carregada e fornece a handle já existente.

Funcionou de boa aqui, é até interessante que adiciona mais um evento no moonloader onVehicleSave(...) :5!!:
Se entende c++ e cleo lua não deve ser problema pelo que fez. Alem de ter opções assim(...)
por Um_Geek
15 Mai 2018, 22:20
Fórum: Scripts & Códigos
Tópico: GSX - Garage Save eXtender
Respostas: 59
Exibições: 4869
Gênero:

GSX - Garage Save eXtender

Israel escreveu:
Um_Geek escreveu:
15 Mai 2018, 22:03
eu só tenho duvidas se ffi.load funciona com* arquivos asi
Arquivos .asi são só DLLs renomeadas.
É que no log do moonloader as libs que ele aceita são luac, lua, dll, mas só testando para conferir. quando fiz eu usei loadDynamicLibrary então não chequei isto.
por Um_Geek
15 Mai 2018, 22:03
Fórum: Scripts & Códigos
Tópico: GSX - Garage Save eXtender
Respostas: 59
Exibições: 4869
Gênero:

GSX - Garage Save eXtender

se isto funcionar vai ficar mais fácil usar em lua, posso tentar usar em um script pequeno, eu só tenho duvidas se ffi.load funciona com* arquivos asi. o MoonAdditions é uma dll, deve dar para fazer um 'require' do gsx semelhante, só que deve tomar tempo.
por Um_Geek
06 Mai 2018, 23:15
Fórum: Scripts & Códigos
Tópico: GSX - Garage Save eXtender
Respostas: 59
Exibições: 4869
Gênero:

GSX - Garage Save eXtender

Não, se refere o momento em que o carro é salvo na garagem (quando a porta é fechada).
No caso eu teria que alocar a memoria, colocar a referencia para ela em uma table, e depois de salvar usar freememory em vez de logo depois da função.

Entendi, da forma que eu estou usando precisaria checar se esta na garagem quando sai do carro. vou ver o que posso fazer para o mod salvar o que precisa. mas já valeu pela ajuda.
por Um_Geek
06 Mai 2018, 22:33
Fórum: Scripts & Códigos
Tópico: GSX - Garage Save eXtender
Respostas: 59
Exibições: 4869
Gênero:

GSX - Garage Save eXtender

Editei o nome das funções ao colar aqui, então ficaram trocados. então salvar se refere ao momento que o jogo é salvo e não no momento de uso da função, isto não estava claro.

Quer dizer que tem um marcador permanente para carros salvos no jogo que não muda mesmo reiniciando o jogo? Testei o handler e o pointer e não são fixos, isto seria útil. :philo:
por Um_Geek
06 Mai 2018, 18:24
Fórum: Scripts & Códigos
Tópico: GSX - Garage Save eXtender
Respostas: 59
Exibições: 4869
Gênero:

GSX - Garage Save eXtender

Para salvar estou usando esta função.
SpoilerAbrir

Código: Selecionar tudo

function gsxSetFloatValue(car,name)
    local value = nil
    if gsx_lib_loaded_ok==true then 
        local res1,getLoadDataByVehPtr = getDynamicLibraryProcedure("getLoadDataByVehPtr",GSXLib)
        local res2,dataToLoadExists = getDynamicLibraryProcedure("dataToLoadExists",GSXLib)
        if res1==true and res2==true then 
			local ptr = getCarPointer(car)
			local sucess = callFunction(dataToLoadExists,2,1,ptr,name)
			if sucess~=nil then -- impedir erro de comparação (nil==numero)
				if sucess==1 then 
					local address = callFunction(getLoadDataByVehPtr,2,1,ptr,name)
					value = memory.getfloat(address,false)
				end
			end
        end
    end 
    return value
end 

Para recarregar uso esta.

SpoilerAbrir

Código: Selecionar tudo

function gsxGetFloatValue(car,name,data)
    local res,lib = loadDynamicLibrary("gsx.asi")
    if gsx_lib_loaded_ok==true then 
        local ptr = getCarPointer(car)
        local res1,setDataToSaveLaterVehPtr = getDynamicLibraryProcedure("setDataToSaveLaterVehPtr",GSXLib)
        if res1==true then
            local address = allocateMemory(8)
            memory.setfloat(address,data,false)
            callFunction(setDataToSaveLaterVehPtr,5,0,ptr,name,8,address,true)
            freeMemory(address)
        end
    end  
end

Da certo as vezes, algumas que falha, mas quando falha só usar o comando reloadall do lua que funciona.
por Um_Geek
06 Mai 2018, 15:25
Fórum: Scripts & Códigos
Tópico: GSX - Garage Save eXtender
Respostas: 59
Exibições: 4869
Gênero:

GSX - Garage Save eXtender

Fabio escreveu: Que tamanho de dado você está usando?
Estou usando 8, já que é só um numero float de 3 digitos.

Não... é tudo salvo e carregado no momento em que fecha ou abre a garagem, como está fazendo?
Eu espero a garagem fechar e salvo, funciona ok se pegar o carro no momento, mas ao abrir o jogo e ir no carro o script morre no momento de buscar o valor suponho.

Talvez, mas não está especificado se são os valores a serem salvos ou os valores que já estavam salvos.
Não entendi, mas é só um esboço, get busca o valor, set salva e sobrescreve. caso não quisesse sobrescrever só usar a função para ver se existe. bem, eu não sei nada do funcionamento interno então não sei seria possível resumir assim.só sugestão mesmo.

Um_Geek escreveu:
06 Mai 2018, 15:02
são observações ao tentar usar as funções do gsx. Em lua não teve nenhum crash durante os testes, só por erros bobos de leitura de memoria cometidos por mim mesmo.
por Um_Geek
06 Mai 2018, 15:02
Fórum: Scripts & Códigos
Tópico: GSX - Garage Save eXtender
Respostas: 59
Exibições: 4869
Gênero:

GSX - Garage Save eXtender

Consegui usar, no entanto é meio complicado de usar para uma ferramenta que só salva e puxa dados, tenho que ficar alocando memoria pelo script, checar se o dado existe separadamente para depois carregar. as vezes também não funciona então recarregando o script funciona,acho que precisa de uma pausa para o gsx achar o valor salvo.

Não entendo bem da logica do c++,mas sera que não poderia ser resumido a isto?

SpoilerAbrir

Código: Selecionar tudo

bool exist << gsxGetExistValue(int *car, const char *name)

float value << gsxGetFloatValue(int *car, const char *name)
int value << gsxGetIntValue(int *car, const char *name)
string value << gsxGetStringValue(int *car, const char *name)

bool sucess << gsxSetFloatValue(int *car, const char *name, float *value)
bool sucess << gsxSetIntValue(int *car, const char *name, int *value)
bool sucess << gsxSetStringValue(int *car, const char *name, const char *value)

gsxRemoveValue(int *car, const char *name)

seria mais fácil adicionar funções dele até mesmo em mods simples.
são observações ao tentar usar as funções do gsx. Em lua tão teve nenhum crash durante os testes, só por erros bobos de leitura de memoria cometidos por mim mesmo
por Um_Geek
29 Abr 2018, 18:17
Fórum: Scripts & Códigos
Tópico: GSX - Garage Save eXtender
Respostas: 59
Exibições: 4869
Gênero:

GSX - Garage Save eXtender

Compilei o codigo exemplo para cleo e não funcionou.

Código: Selecionar tudo

00000203&0: [0AC7] GET_VAR_POINTER l16(0)  -> 49910836
00000211&0: [0AC6] GET_LABEL_POINTER -478 -> 49911534
00000221&0: [0AA7] CALL_FUNCTION_RETURN 0x0 2 2 49910836 49911534

Parece que é nesta função

Código: Selecionar tudo

0AA4: [email protected] = get_proc_address "getNewCarGrgForeach" library [email protected] // IF and SET 
(...)
0AA7: call_function [email protected] num_params 2 pop 2 [email protected] [email protected] retorno [email protected] 

Imagem
Estou tentando usar com o ffi do lua, mas nem sei o que envia e retorna nas funções, alem do meu ida ser 5.0 não consigo ver estas coisas. ficaria mais fácil se as funções estivessem especificadas como nesta pagina.

**http://www.xmlsoft.org/html/libxml-pars ... mlReadFile

*libxml2.dll, torna possível usar xml mesmo com cleo e é uma dll comum do windows

Voltar para “GSX - Garage Save eXtender”