Compartilhe
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 18970
Reputação : 356
Desde : 04/05/2012
Idade : 20
Link : gtamodvicio.blogspot.com
Ver perfil do usuáriohttp://gtamodvicio.blogspot.com
  • Reputação da mensagem: 100% (2 votos)

[GTA SA] GSX - Garage Save eXtender (+mod para salvar placas dos carros automaticamente)

em Seg 18 Dez 2017, 21:18
[EM FASE DE TESTES]
[TÓPICO INCOMPLETO]

Agora é possível adicionar mais informações nos carros que serão salvos nas garagens do jogo facilmente.



Para jogadores:
Agora será possível que outros mods salvem informações próprias nos carros que são salvos pela garagem, são possibilidades ilimitadas, por exemplo: mods de Auto Posto salvando quantidade de combustível, entre outras coisas.

O mod de salvar automaticamente placas dos carros foi feito como uma pequena demonstração do Garage Save eXtender.

Em andamento...

Para modders:

É possível ser notificado de save/load de carros em garagens e então salvar ou carregar dados, pode ser através de scripts CLEO ou mods ASI.

Em andamento...





Explicando a API:

Explicando a API:


Código:
static const wchar_t *GSXPath = L"gsx.asi";

É o nome do arquivo do .asi, se preferir, pode inserir um arquivo de configuração que carrega esse nome, caso pense que alguém pode mudar o nome do .asi principal.

Código:
struct journalNews

É a struct interna que guarda registros de veículos salvos/carregados.

Código:
struct apiCarNotify

É a struct que deve ser enviada para a função getNewCarForeach para retornar um dos veículos recentemente adicionados ou carregados em uma garagem (veremos mais a frente).

Código:
struct externalCallbackStructure

É a struct que sua função de callback deve aceitar como parâmetro.

Código:
void(__cdecl externalCbFun_t)(const externalCallbackStructure*);

Forma de protótipo que sua função de callback deve ter.



As funções a seguir NÃO devem ser usadas na função WinMain.


Código:
void addNotifyCallback(externalCbFun_t fun);

Adiciona uma função sua na lista de callbacks do mod, será sempre chamada quando um carro for carregado ou salvo em uma garagem, é chamada uma vez por carro, então se sua garagem tiver dois carros, será chamada duas vezes e assim por diante.

Código:
void addNotifyTempCallback(externalCbFun_t fun);

Funcionamento quase igual a função acima, com a diferença que a lista de funções adicionadas por essa é limpa quando recarrega o save ou carrega outro save.

Código:
bool getNewCarForeach(size_t &i, apiCarNotify &out);

Caso não seja escolhida a forma de callbacks automáticos, pode usar esta que funciona sendo chamada manualmente e retorna um carro por vez (caso tenha algum mais recente que a última vez checada).

Código:
size_t i = 0;

...


void yourfunction()
{
 using namespace GSX;
 
 apiCarNotify out;
 while (GSXAPI::getNewCarForeach(i, out))
 {
 out.veh; // vehicle
 
 switch(out.status)
 {
 case GSX::LOAD_CAR:
 //
 break;
 
 case GSX::SAVE_CAR:
 //
 break;
 
 default:
 break;
 }
 }
}

void frameThings()
{
 ...
 yourfunction();
 ...
}

Código:
{$CLEO}

0AA2: 0@ = load_library "grgsaveextra.asi" // IF and SET                                                                                  
0AA4: 6@ = get_proc_address "getNewCarGrgForeach" library 0@ // IF and SET

const
   LOAD_CAR = 0
   SAVE_CAR = 1
end


while true
   wait 0        
  
   // Outras coisas
  
   0AC7: 13@ = var 16@ offset    // carInfo - 8 bytes
   0AC6: 14@ = label @positionRegister offset   // 8 bytes
   while true
       0AA7: call_function 6@ num_params 2 pop 2 13@ 14@ retorno 15@  // getNewCarGrgForeach / GSX::getNewCarForeach(i, out)
       if 15@ <> 0
       jf break
                                                                
       0AD0: show_formatted_text_lowpriority "Teste car %.8X status %d" time 1500 16@ 17@  // status: 0 carregado / 1 salvo      
       wait 2000
   end
  
  
   // Outras coisas
end

:carInfo
hex
   00 00 00 00  // veh ptr
   00 00 00 00  // status
end

:positionRegister
hex
    00 00 00 00 00 00 00 00
end


Código:
void setDataToSaveLater(CVehicle *veh, const char *name, int size, void *ptr, bool forceCopyNow);

Aqui precisa ser observado uma coisa, existem duas formas de salvar os dados no mod:
1ª - os dados serão salvos pelo GSX automaticamente quando o carro for salvo. Para isso acontecer, sempre que o carro for carregado é necessário chamar a função acima com o endereço atualizado do dado a ser salvo.
2ª - os dados são salvos instantaneamente, ficando disponível para as funções que testam se existe dado a ser carregado, etc. pode ser feito usando a função pushDirectlyToSavedData (explicação abaixo), ou usando true no parâmetro forceCopyNow.

OBS: ao usar setDataToSaveLater SEM usar true no parâmetro forceCopyNow e salvar o carro, será considerado um dado temporário que estará disponível a próxima vez que o carro ser carregado, mas se não for renovado através de qualquer uma das funções de salvar dados, ele não será salvo de novo.

Use a função de forçar cópia do dado imediatamente com cuidado, principalmente se estiver mexendo com dados grandes.

Código:
void pushDirectlyToSavedData(CVehicle *veh, const char *name, int size, void *ptr);

Salva o dado diretamente nos dados que podem ser carregados através de funções de load (Não atualiza o arquivo de save, ele só é atualizado quando o salvar o jogo).


Em andamento...





Downloads:
Download do GSX - Garage Save eXtender
Mod salvar placas dos carros automaticamente (depende do gsx.asi)

Source do mod de salvar as placas dos carros automaticamente:
Spoiler:

Código:
//#define _CRT_SECURE_NO_WARNINGS
#include <Windows.h>
#include <injector\injector.hpp>
#include <injector\assembly.hpp>
#include <injector\calling.hpp>
#include <injector\saving.hpp>
#include <game_sa\CVehicle.h>
#include <game_sa\CMatrix.h>
#include <game_sa\RenderWare.h>
#include <string>
#include "CStoredCar.h"
#include "GSXAPI.h"

static auto getVehicleModelInfoByID = injector::cstd<CVehicleModelInfo*(int id)>::call<0x00403DA0>;
auto CustomCarPlate_TextureCreate = injector::thiscall<bool(CVehicle *, CVehicleModelInfo *)>::call<0x006D10E0>;

void callback(const GSX::externalCallbackStructure *test)
{
 using namespace GSX;

 if (test->veh)
 {
 switch (test->status)
 {
 case GSX::LOAD_CAR:
 {
 if (dataToLoadExists(test->veh, "carplate"))
 {
 const char *plateText = (const char *)getSavedData(test->veh, "carplate");

 if (plateText != nullptr)
 {
 CVehicleModelInfo *info = getVehicleModelInfoByID(test->veh->m_wModelIndex);

 strncpy(info->m_plateText, plateText, 8u);

 if (CustomCarPlate_TextureCreate(test->veh, info))
 {

 }
 else
 {
 //MessageBoxA(0, "error plate", "", 0);
 }
 }
 }

 break;
 }

 case GSX::SAVE_CAR:
 {
 if (test->veh->m_pCustomCarPlate)
 {
 setDataToSaveLater(test->veh, "carplate", 8, test->veh->m_pCustomCarPlate->name, true);
 }
 break;
 }

 default:
 break;
 }
 }
}

void onload(int id)
{
 static bool loaded = false;

 if (!loaded)
 {
 loaded = true;

 addNotifyCallback(callback);
 }
}

void inject()
{
 injector::save_manager::on_load(onload);
}

BOOL WINAPI DllMain(
 _In_  HINSTANCE hinstDLL,
 _In_  DWORD fdwReason,
 _In_  LPVOID lpvReserved
 ){
 if (fdwReason == DLL_PROCESS_ATTACH) inject();


 return true;
}

API C++ do GSX (também disponível no Download do GSX):
Spoiler:

GSXAPI.h
Código:

#pragma once
#ifndef GARAGESAVEEXTENDERAPI_H
#define GARAGESAVEEXTENDERAPI_H
#include <Windows.h>
#include <cstdint>

// Plugin-SDK dependent headers
#include "CStoredCar.h"
#include <game_sa\CVehicle.h>

namespace GSX
{
 wchar_t *setASIPath(wchar_t *path); // Don't use temporary pointer

 const static uint32_t LOAD_CAR = 0, SAVE_CAR = 1;

 struct journalNews
 {
 CVehicle *veh;
 int32_t status;
 size_t when;

 journalNews()
 {
 veh = nullptr;
 status = 0;
 when = 0;
 }
 };

 struct apiCarNotify
 {
 CVehicle *veh;
 int32_t status;
 };

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

 typedef void(__cdecl externalCbFun_t)(const externalCallbackStructure*);

 void addNotifyCallback(externalCbFun_t fun);
 void addNotifyTempCallback(externalCbFun_t fun); // On game reload, temp callbacks will be erased

 bool getNewCarForeach(size_t &i, apiCarNotify &out);

 void setDataToSaveLater(CVehicle *veh, const char *name, int size, void *ptr, bool forceCopyNow);
 void pushDirectlyToSavedData(CVehicle *veh, const char *name, int size, void *ptr);

 bool dataToSaveLaterExists(CVehicle *veh, const char *name);
 bool dataToLoadExists(CVehicle *veh, const char *name);

 void removeToSaveLaterData(CVehicle *veh, const char *name);
 void removeSavedData(CVehicle *veh, const char *name);

 void *getSavedData(CVehicle *veh, const char *name);
}

#endif


GSXAPI.cpp
Código:

#include "GSXAPI.h"

extern "C" static void(__cdecl *addNotifyCallback)(GSX::externalCbFun_t fun) = nullptr;
extern "C" static void(__cdecl *addNotifyTempCallback)(GSX::externalCbFun_t fun) = nullptr;
extern "C" static int(__cdecl *getNewCarGrgForeach)(size_t *i, GSX::apiCarNotify *out) = nullptr;
extern "C" static void(__cdecl *setDataToSaveLaterVehPtr)(CVehicle *veh, const char *name, int size, void *ptr, bool forceCopyNow) = nullptr;
extern "C" static void(__cdecl *pushDirectlyToSavedData)(CVehicle *veh, const char *name, int size, void *ptr) = nullptr;
extern "C" static int(__cdecl *dataToSaveLaterExists)(CVehicle *veh, const char *name) = nullptr;
extern "C" static void(__cdecl *removeToLoadDataVehPtr)(CVehicle *veh, const char *name) = nullptr;
extern "C" static void(__cdecl *removeToSaveLaterVehPtr)(CVehicle *veh, const char *name) = nullptr;
extern "C" static int(__cdecl *dataToLoadExists)(CVehicle *veh, const char *name) = nullptr;
extern "C" static void* (__cdecl *getLoadDataByVehPtr)(CVehicle *veh, const char *name) = nullptr;
static HMODULE gsxAsi = nullptr;
static wchar_t *GSXPath = L"gsx.asi";

wchar_t *GSX::setASIPath(wchar_t *path)
{
 if (path == nullptr)
 return GSXPath;

 wchar_t *oldPath = GSXPath;
 GSXPath = path;

 return oldPath;
}

template <class T>
static inline void initFun(T &fun, HMODULE lib, const char *name)
{
 fun = (T)GetProcAddress(lib, name);
}

static void load()
{
 static bool loaded = false;
 if (!loaded)
 {
 gsxAsi = LoadLibraryW(GSXPath);

 if (gsxAsi)
 loaded = true;

 initFun(::addNotifyCallback, gsxAsi, "addNotifyCallback");
 initFun(::addNotifyTempCallback, gsxAsi, "addNotifyTempCallback");
 initFun(::getNewCarGrgForeach, gsxAsi, "getNewCarGrgForeach");
 initFun(::setDataToSaveLaterVehPtr, gsxAsi, "setDataToSaveLaterVehPtr");
 initFun(::pushDirectlyToSavedData, gsxAsi, "pushDirectlyToSavedData");
 initFun(::dataToSaveLaterExists, gsxAsi, "dataToSaveLaterExists");
 initFun(::removeToLoadDataVehPtr, gsxAsi, "removeToLoadDataVehPtr");
 initFun(::removeToSaveLaterVehPtr, gsxAsi, "removeToSaveLaterVehPtr");
 initFun(::dataToLoadExists, gsxAsi, "dataToLoadExists");
 initFun(::getLoadDataByVehPtr, gsxAsi, "getLoadDataByVehPtr");
 }
}

void GSX::addNotifyCallback(externalCbFun_t fun)
{
 load();
 ::addNotifyCallback(fun);
}

void GSX::addNotifyTempCallback(externalCbFun_t fun)
{
 load();
 ::addNotifyCallback(fun);
}

bool GSX::getNewCarForeach(size_t &i, apiCarNotify &out)
{
 load();
 return (::getNewCarGrgForeach(&i, &out)) != 0;
}

void GSX::setDataToSaveLater(CVehicle *veh, const char *name, int size, void *ptr, bool forceCopyNow)
{
 load();
 ::setDataToSaveLaterVehPtr(veh, name, size, ptr, forceCopyNow);
}

void GSX::pushDirectlyToSavedData(CVehicle *veh, const char *name, int size, void *ptr)
{
 load();
 ::pushDirectlyToSavedData(veh, name, size, ptr);
}

bool GSX::dataToSaveLaterExists(CVehicle *veh, const char *name)
{
 load();
 return (::dataToSaveLaterExists(veh, name)) != 0;
}

bool GSX::dataToLoadExists(CVehicle *veh, const char *name)
{
 load();
 return (::dataToLoadExists(veh, name)) != 0;
}

void GSX::removeToSaveLaterData(CVehicle *veh, const char *name)
{
 load();
 ::removeToSaveLaterVehPtr(veh, name);
}

void GSX::removeSavedData(CVehicle *veh, const char *name)
{
 load();
 ::dataToLoadExists(veh, name);
}

void *GSX::getSavedData(CVehicle *veh, const char *name)
{
 load();
 return ::getLoadDataByVehPtr(veh, name);
}



É possível usar em CLEO (exemplo bem simples, farei um melhor):
Código:
{$CLEO}

0AA2: 0@ = load_library "gsx.asi" // IF and SET
0AA4: 1@ = get_proc_address "dataToSaveLaterExists" library 0@ // IF and SET      
0AA4: 2@ = get_proc_address "dataToLoadExists" library 0@ // IF and SET
0AA4: 3@ = get_proc_address "getLoadDataByVehPtr" library 0@ // IF and SET    
0AA4: 4@ = get_proc_address "setDataPtrToSaveVehPtr" library 0@ // IF and SET                                                                                
0AA4: 5@ = get_proc_address "pushDirectlyToSavedData" library 0@ // IF and SET                                                                                
0AA4: 6@ = get_proc_address "getNewCarGrgForeach" library 0@ // IF and SET

while true
   wait 0        
  
  
   0AC7: 13@ = var 16@ offset    // carInfo - 8 bytes
   0AC6: 14@ = label @positionRegister offset   // 8 bytes
   while true
       0AA7: call_function 6@ num_params 2 pop 2 13@ 14@ retorno 15@
       if 15@ <> 0
       jf break
                                                             // status: 0 carregado / 1 salvo        
       0AD0: show_formatted_text_lowpriority "Teste car %.8X status %d" time 1500 16@ 17@    
       wait 2000
   end
                            
  
   if 0256: 0
   jf continue          
   if 00DF:   actor $PLAYER_ACTOR driving
   jf continue  
  
   0811: 8@ = actor $PLAYER_ACTOR used_car
   0A97: 9@ = car 8@ struct
  
   //0AA7: call_function 1@ num_params 2 pop 2 "carplate" 9@ retorno 11@  
   0AA7: call_function 2@ num_params 2 pop 2 "carplate" 9@ retorno 12@

   if 12@ <> 0
   then
       0AA7: call_function 3@ num_params 2 pop 2  "carplate" 9@ retorno 10@  
       0AD0: show_formatted_text_lowpriority "Teste %s opcode" time 10 10@
   end
end


0A93: end_custom_thread          

:buflicenseplate
hex
   00 00 00 00 00 00 00 00 00 00 00
end

:carInfo
hex
   00 00 00 00  // veh ptr
   00 00 00 00  // status
end

:positionRegister
hex
    00 00 00 00 00 00 00 00
end


Última edição por Fabio em Qua 10 Jan 2018, 00:18, editado 17 vez(es)

______________________________

Modifico quase qualquer coisa.   :)
------------------>>>http://gtamodvicio.blogspot.com/<<<------------------

Meu PC:
Spoiler:

Configurações PC:
*Processador: Intel Core i7 4790K 4.00GHz LGA1150
*Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
*HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
*HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
*Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
*RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
*Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
*Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
*Monitor: LG 23MP55HQ Full HD HDMI 23'
avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 529
Reputação : 40
Desde : 08/02/2016
Localização : São Paulo
Ver perfil do usuário

Re: [GTA SA] GSX - Garage Save eXtender (+mod para salvar placas dos carros automaticamente)

em Seg 18 Dez 2017, 22:40
Boa!
A ideia do mod é somente salvar a placa do carro ou outras infos também? Não ficou tão claro...
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 18970
Reputação : 356
Desde : 04/05/2012
Idade : 20
Link : gtamodvicio.blogspot.com
Ver perfil do usuáriohttp://gtamodvicio.blogspot.com

Re: [GTA SA] GSX - Garage Save eXtender (+mod para salvar placas dos carros automaticamente)

em Seg 18 Dez 2017, 22:57
@Deadstroke escreveu:Boa!
A ideia do mod é somente salvar a placa do carro ou outras infos também?

O Garage Save eXtender foi feito para qualquer um salvar qualquer coisa. :) :) :)

Vou explicar melhor ainda e construir uma documentação explicando como usar o mod.

Spoiler:
@Deadstroke escreveu:Não ficou tão claro...

[TÓPICO INCOMPLETO]

______________________________

Modifico quase qualquer coisa.   :)
------------------>>>http://gtamodvicio.blogspot.com/<<<------------------

Meu PC:
Spoiler:

Configurações PC:
*Processador: Intel Core i7 4790K 4.00GHz LGA1150
*Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
*HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
*HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
*Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
*RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
*Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
*Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
*Monitor: LG 23MP55HQ Full HD HDMI 23'
avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 529
Reputação : 40
Desde : 08/02/2016
Localização : São Paulo
Ver perfil do usuário

Re: [GTA SA] GSX - Garage Save eXtender (+mod para salvar placas dos carros automaticamente)

em Seg 18 Dez 2017, 22:58
Hahahaahahhaha justo...
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 18970
Reputação : 356
Desde : 04/05/2012
Idade : 20
Link : gtamodvicio.blogspot.com
Ver perfil do usuáriohttp://gtamodvicio.blogspot.com

Re: [GTA SA] GSX - Garage Save eXtender (+mod para salvar placas dos carros automaticamente)

em Seg 18 Dez 2017, 23:05
@Deadstroke escreveu:Hahahaahahhaha justo...

:v:

Seria bom se o máximo de pessoas baixasse o mod e testasse para ter certeza que tudo está funcionando corretamente. :) :)

______________________________

Modifico quase qualquer coisa.   :)
------------------>>>http://gtamodvicio.blogspot.com/<<<------------------

Meu PC:
Spoiler:

Configurações PC:
*Processador: Intel Core i7 4790K 4.00GHz LGA1150
*Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
*HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
*HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
*Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
*RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
*Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
*Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
*Monitor: LG 23MP55HQ Full HD HDMI 23'
avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 529
Reputação : 40
Desde : 08/02/2016
Localização : São Paulo
Ver perfil do usuário

Re: [GTA SA] GSX - Garage Save eXtender (+mod para salvar placas dos carros automaticamente)

em Ter 19 Dez 2017, 00:26
Crash ao logar num save game. Usei save game do Djjr e Scr Log não aponta nenhum mod.

Crash log:
Game version: GTA SA 1.0 US
Unhandled exception at 0x6830FD18 in CLEO.asi (+0x1fd18): 0xC0000005: Access violation reading location 0x00000008.
Register dump:
EAX: 0x00000000 EBX: 0x00000000 ECX: 0x0000007A EDX: 0x00000000
EDI: 0x28FD8BE8 ESI: 0x00A94B68 EBP: 0x0177F470 EIP: 0x6830FD18
ESP: 0x0177F428 EFL: 0x00010287 CS: 0x00000023 SS: 0x0000002B
GS: 0x0000002B FS: 0x00000053 ES: 0x0000002B DS: 0x0000002B

Stack dump:
0x0177F428: 28FD8BE8 68310500 28FD8D40 28FD8BE8 0046A220 714E21CC
0x0177F440: 06250884 0177F470 06250884 00000193 6F13BDE3 3CF5C28F
0x0177F458: 00000000 714CB2AF 70A2EBE0 00000000 00000000 0177F4F8
0x0177F470: 0177F488 70A25A4F 00000000 00000000 FFFFFFFF 0177F4F8
0x0177F488: 0177F4BC 0053BFCC 0397C868 0177F53C FFFFFFFF 4966A700
0x0177F4A0: 0177F4BC 68311E04 0053E986 64C0006A 0177F53C 64C00570
0x0177F4B8: 00000001 0177F504 64BFC0DD 0177F510 03979038 64C58AAC
0x0177F4D0: 0397C868 0000007F 00000000 00000024 00000001 00000000
0x0177F4E8: 00000000 00000070 0177F4CC 0177F4CC 0177F528 64C546C0
0x0177F500: 00000001 0177F518 64C00552 0397904C 00000001 0177F6BC
base: 0x01580000 top: 0x0177F428 bottom: 0x01780000

Backtrace (may be wrong):
=>0x6830FD18 in CLEO.asi (+0x1fd18) (0x0177F470)
0x70A25A4F in ped_spec.asi (+0x5a4f) (0x0177F488)
0x0053BFCC in gta_sa.exe (+0x13bfcc) (0x0177F4BC)
0x64BFC0DD in modloader.asi (+0x1c0dd) (0x0177F504)
0x64C00552 in modloader.asi (+0x20552) (0x0177F518)
0x64BFEBB7 in modloader.asi (+0x1ebb7) (0x0177F534)
0x64C00C06 in modl
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 18970
Reputação : 356
Desde : 04/05/2012
Idade : 20
Link : gtamodvicio.blogspot.com
Ver perfil do usuáriohttp://gtamodvicio.blogspot.com

Re: [GTA SA] GSX - Garage Save eXtender (+mod para salvar placas dos carros automaticamente)

em Ter 19 Dez 2017, 00:30
@Deadstroke escreveu:Crash ao logar num save game. Usei save game do Djjr e Scr Log não aponta nenhum mod.

Crash log:
Game version: GTA SA 1.0 US
Unhandled exception at 0x6830FD18 in CLEO.asi (+0x1fd18): 0xC0000005: Access violation reading location 0x00000008.
   Register dump:
       EAX: 0x00000000  EBX: 0x00000000  ECX: 0x0000007A  EDX: 0x00000000  
       EDI: 0x28FD8BE8  ESI: 0x00A94B68  EBP: 0x0177F470  EIP: 0x6830FD18  
       ESP: 0x0177F428  EFL: 0x00010287  CS: 0x00000023   SS: 0x0000002B  
       GS: 0x0000002B   FS: 0x00000053   ES: 0x0000002B   DS: 0x0000002B  
       
   Stack dump:
       0x0177F428:  28FD8BE8 68310500 28FD8D40 28FD8BE8 0046A220 714E21CC
       0x0177F440:  06250884 0177F470 06250884 00000193 6F13BDE3 3CF5C28F
       0x0177F458:  00000000 714CB2AF 70A2EBE0 00000000 00000000 0177F4F8
       0x0177F470:  0177F488 70A25A4F 00000000 00000000 FFFFFFFF 0177F4F8
       0x0177F488:  0177F4BC 0053BFCC 0397C868 0177F53C FFFFFFFF 4966A700
       0x0177F4A0:  0177F4BC 68311E04 0053E986 64C0006A 0177F53C 64C00570
       0x0177F4B8:  00000001 0177F504 64BFC0DD 0177F510 03979038 64C58AAC
       0x0177F4D0:  0397C868 0000007F 00000000 00000024 00000001 00000000
       0x0177F4E8:  00000000 00000070 0177F4CC 0177F4CC 0177F528 64C546C0
       0x0177F500:  00000001 0177F518 64C00552 0397904C 00000001 0177F6BC
       base: 0x01580000   top: 0x0177F428   bottom: 0x01780000
       
   Backtrace (may be wrong):
       =>0x6830FD18 in CLEO.asi (+0x1fd18) (0x0177F470)
         0x70A25A4F in ped_spec.asi (+0x5a4f) (0x0177F488)
         0x0053BFCC in gta_sa.exe (+0x13bfcc) (0x0177F4BC)
         0x64BFC0DD in modloader.asi (+0x1c0dd) (0x0177F504)
         0x64C00552 in modloader.asi (+0x20552) (0x0177F518)
         0x64BFEBB7 in modloader.asi (+0x1ebb7) (0x0177F534)
         0x64C00C06 in modl

Compilou o script que eu deixei? Lembro de ter testado ele só nos carros já com placa salva.

SCRLOG com a opção de FLUSH ON WRITE?

______________________________

Modifico quase qualquer coisa.   :)
------------------>>>http://gtamodvicio.blogspot.com/<<<------------------

Meu PC:
Spoiler:

Configurações PC:
*Processador: Intel Core i7 4790K 4.00GHz LGA1150
*Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
*HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
*HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
*Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
*RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
*Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
*Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
*Monitor: LG 23MP55HQ Full HD HDMI 23'
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21967
Reputação : 682
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

Re: [GTA SA] GSX - Garage Save eXtender (+mod para salvar placas dos carros automaticamente)

em Qua 20 Dez 2017, 04:19
Casos de uso:

Tuning Mod: Salvar informações de peças instaladas, editadas, novas funcionalidades, tuning etc

VehFuncs: Salvar o novo sistema de peças extras
VehFuncs: Salvar dígitos do odômetro (kms rodados)

GTA Brasil: Salvar informações dos documentos do carro (ou seja, se você é proprietário ou é roubado)

______________________________

avatar
Programador - Avançado
Programador - Avançado
Mensagens : 18970
Reputação : 356
Desde : 04/05/2012
Idade : 20
Link : gtamodvicio.blogspot.com
Ver perfil do usuáriohttp://gtamodvicio.blogspot.com

Re: [GTA SA] GSX - Garage Save eXtender (+mod para salvar placas dos carros automaticamente)

em Seg 25 Dez 2017, 01:02
Atualizei o download do GSX, tem alguns exemplos dentro do download dele.

@Junior_Djjr escreveu:Casos de uso:

Tuning Mod: Salvar informações de peças instaladas, editadas, novas funcionalidades, tuning etc

VehFuncs: Salvar o novo sistema de peças extras
VehFuncs: Salvar dígitos do odômetro (kms rodados)

GTA Brasil: Salvar informações dos documentos do carro (ou seja, se você é proprietário ou é roubado)

:v:

@Fabio escreveu:
@Deadstroke escreveu:Crash ao logar num save game. Usei save game do Djjr e Scr Log não aponta nenhum mod.

Crash log:
Game version: GTA SA 1.0 US
Unhandled exception at 0x6830FD18 in CLEO.asi (+0x1fd18): 0xC0000005: Access violation reading location 0x00000008.
   Register dump:
       EAX: 0x00000000  EBX: 0x00000000  ECX: 0x0000007A  EDX: 0x00000000  
       EDI: 0x28FD8BE8  ESI: 0x00A94B68  EBP: 0x0177F470  EIP: 0x6830FD18  
       ESP: 0x0177F428  EFL: 0x00010287  CS: 0x00000023   SS: 0x0000002B  
       GS: 0x0000002B   FS: 0x00000053   ES: 0x0000002B   DS: 0x0000002B  
       
   Stack dump:
       0x0177F428:  28FD8BE8 68310500 28FD8D40 28FD8BE8 0046A220 714E21CC
       0x0177F440:  06250884 0177F470 06250884 00000193 6F13BDE3 3CF5C28F
       0x0177F458:  00000000 714CB2AF 70A2EBE0 00000000 00000000 0177F4F8
       0x0177F470:  0177F488 70A25A4F 00000000 00000000 FFFFFFFF 0177F4F8
       0x0177F488:  0177F4BC 0053BFCC 0397C868 0177F53C FFFFFFFF 4966A700
       0x0177F4A0:  0177F4BC 68311E04 0053E986 64C0006A 0177F53C 64C00570
       0x0177F4B8:  00000001 0177F504 64BFC0DD 0177F510 03979038 64C58AAC
       0x0177F4D0:  0397C868 0000007F 00000000 00000024 00000001 00000000
       0x0177F4E8:  00000000 00000070 0177F4CC 0177F4CC 0177F528 64C546C0
       0x0177F500:  00000001 0177F518 64C00552 0397904C 00000001 0177F6BC
       base: 0x01580000   top: 0x0177F428   bottom: 0x01780000
       
   Backtrace (may be wrong):
       =>0x6830FD18 in CLEO.asi (+0x1fd18) (0x0177F470)
         0x70A25A4F in ped_spec.asi (+0x5a4f) (0x0177F488)
         0x0053BFCC in gta_sa.exe (+0x13bfcc) (0x0177F4BC)
         0x64BFC0DD in modloader.asi (+0x1c0dd) (0x0177F504)
         0x64C00552 in modloader.asi (+0x20552) (0x0177F518)
         0x64BFEBB7 in modloader.asi (+0x1ebb7) (0x0177F534)
         0x64C00C06 in modl

Compilou o script que eu deixei? Lembro de ter testado ele só nos carros já com placa salva.

SCRLOG com a opção de FLUSH ON WRITE?

philosoraptor philosoraptor

______________________________

Modifico quase qualquer coisa.   :)
------------------>>>http://gtamodvicio.blogspot.com/<<<------------------

Meu PC:
Spoiler:

Configurações PC:
*Processador: Intel Core i7 4790K 4.00GHz LGA1150
*Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
*HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
*HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
*Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
*RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
*Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
*Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
*Monitor: LG 23MP55HQ Full HD HDMI 23'
avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 529
Reputação : 40
Desde : 08/02/2016
Localização : São Paulo
Ver perfil do usuário

Re: [GTA SA] GSX - Garage Save eXtender (+mod para salvar placas dos carros automaticamente)

em Seg 25 Dez 2017, 11:29
Sobre o outro log, deconsidere por enquanto, tinha outros mods que estavam atrapalhando.
Agora tenho tido esse em toda vez que vou salvar o jogo.

Crash log:
Game version: GTA SA 1.0 US
Unhandled exception at 0x00576DA4 in gta_sa.exe (+0x176da4): 0xC0000005: Access violation reading location 0x000005BF.
Register dump:
EAX: 0x0000002B EBX: 0x00000000 ECX: 0x00000594 EDX: 0x0005A599
EDI: 0x0000002B ESI: 0x00BA6748 EBP: 0x0177F4BC EIP: 0x00576DA4
ESP: 0x0177F480 EFL: 0x00010202 CS: 0x00000023 SS: 0x0000002B
GS: 0x0000002B FS: 0x00000053 ES: 0x0000002B DS: 0x0000002B

Stack dump:
0x0177F480: 00000000 00000000 FFFFFFFF 0053BF49 038FC848 0177F53C
0x0177F498: FFFFFFFF 00000000 0177F4BC 6F501E04 0053E986 0F1E006A
0x0177F4B0: 0177F53C 0F1E0570 00000001 0177F504 0F1DC0DD 0177F510
0x0177F4C8: 038F86D8 0F238AAC 038FC848 6F4FF275 00020F82 00000102
0x0177F4E0: 0000001B 00010001 00000102 00010001 0177F4CC 0177F4CC
0x0177F4F8: 0177F528 0F2346C0 00000001 0177F518 0F1E0552 038F86EC
0x0177F510: 00000001 0177F6BC 0177F534 0F1DEBB7 0177F53C 0177F6BC
0x0177F528: 0177F69C 0F2346D8 00000000 0177F6A8 0F1E0C06 0F2389B4
0x0177F540: 038FC848 08BCBA3C 0177F5E8 00000000 0177F69C 0F234965
0x0177F558: FFFFFFFF 0177F6A8 00000000 0177F6BC 14986794 0177F780
base: 0x01580000 top: 0x0177F480 bottom: 0x01780000

Backtrace (may be wrong):
=>0x00576DA4 in gta_sa.exe (+0x176da4) (0x0177F4BC)
0x0F1DC0DD in modloader.asi (+0x1c0dd) (0x0177F504)
0x0F1E0552 in modloader.asi (+0x20552) (0x0177F518)
0x0F1DEBB7 in modloader.asi (+0x1ebb7) (0x0177F534)
0x0F1E0C06 in modloader.asi (+0x20c06) (0x0177F6A8)
0x0F1E0AFC in modloader.asi (+0x20afc) (0x0177F6B4)
0x0FAD6720 in imfx.asi (+0x16720) (0x0177F6C0)
0x0FACBA71 in imfx.asi (+0xba71) (0x0177F6F4)
0x0FAD93D7 in imfx.asi (+0x193d7) (0x0177F744)
0x0FAD8801 in imfx.asi (+0x18801) (0x0177F750)
0x0FACFB74 in imfx.asi (+0xfb74) (0x0177F778)
0x0FACE236 in imfx.asi (+0xe236) (0x0177F87C)
0x0FACCBDE in imfx.asi (+0xcbde) (0x0177F88C)
0x0053ECC2 in gta_sa.exe (+0x13ecc2) (0x0177F894)
0x00619B71 in gta_sa.exe (+0x219b71) (0x0177F8A8)
0x00748DA0 in gta_sa.exe (+0x348da0) (0x0177F948)
0x0F1E0504 in modloader.asi (+0x20504) (0x0177F968)
0x0F1DE756 in modloader.asi (+0x1e756) (0x0177F998)
0x0F1DC01F in modloader.asi (+0x1c01f) (0x0177F9EC)




Shutting down Mod Loader...
Shutting down filesystem watcher...
Shutting down menu...
Unloading plugin "gta3.std.fx"
Unloading plugin "gta3.std.asi"
Unloading plugin "gta3.std.bank"
Unloading plugin "gta3.std.data"
Unloading plugin "gta3.std.movies"
Unloading plugin "gta3.std.scm"
Unloading plugin "gta3.std.text"
Unloading plugin "gta3.std.tracks"
Unloading plugin "gta3.std.sprites"
Unloading plugin "gta3.std.stream"
Mod Loader has been shutdown.
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 18970
Reputação : 356
Desde : 04/05/2012
Idade : 20
Link : gtamodvicio.blogspot.com
Ver perfil do usuáriohttp://gtamodvicio.blogspot.com

Re: [GTA SA] GSX - Garage Save eXtender (+mod para salvar placas dos carros automaticamente)

em Seg 25 Dez 2017, 13:04
Está usando ele instalado no modloader? Só testei ele na pasta principal. philosoraptor

Eu não mexi em nesse nesse endereço, será que não é algum outro mod? philosoraptor

Que mods você está usando? Já testou tirando um por um? philosoraptor


Modifiquei uma coisa relacionada ao set de directory do user documents e atualizei o download. philosoraptor

______________________________

Modifico quase qualquer coisa.   :)
------------------>>>http://gtamodvicio.blogspot.com/<<<------------------

Meu PC:
Spoiler:

Configurações PC:
*Processador: Intel Core i7 4790K 4.00GHz LGA1150
*Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
*HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
*HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
*Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
*RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
*Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
*Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
*Monitor: LG 23MP55HQ Full HD HDMI 23'
Conteúdo patrocinado

Re: [GTA SA] GSX - Garage Save eXtender (+mod para salvar placas dos carros automaticamente)

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum