не понимаю как хукнуть

nonelike

Известный
Автор темы
40
2
1728854998508.png

Код:
void* __fastcall CChat_CChat(void* this_ptr, void *edx, void* pDevice, void* pFontRenderer, const char* Source);
inline c_hook<decltype(&CChat_CChat)> CChat_CChat_hook{};

void* __fastcall CChat_CChat(void* this_ptr, void* edx, void* pDevice, void* pFontRenderer, const char* Source) {
    
    return CChat_CChat_hook.call_original(this_ptr, edx, pDevice, pFontRenderer, Source);
}
не могу сообразить как поменять значение в 14й строчке на нужное, этот this ставит в ступор
 

moreveal

Известный
Проверенный
914
613
Открой список структур в IDA и посмотри из чего состоит CChat; обращение по указателю - это фактически разыменовывание адреса по смещению от начала структуры до нужного элемента, m_nPageSize является первым элементом структуры, поэтому тебе повезло - просто представь адрес this в виде 32-битного числа (тип dd в IDA) и поменяй его на нужное

C++:
*reinterpret_cast<int32_t*>(this_ptr) = 15;

Но в твоем случае нужно, разумеется, патчить функцию, а не ставить хук, чтобы получить адрес на this, поскольку если ты сперва изменишь его, а потом вызовешь оригинал - оно ресетнется в 10
 
Последнее редактирование:
  • Нравится
Реакции: shuzaru

nonelike

Известный
Автор темы
40
2
Открой список структур в IDA и посмотри из чего состоит CChat; обращение по указателю - это фактически разыменовывание адреса по смещению от начала структуры до нужного элемента, m_nPageSize является первым элементом структуры, поэтому тебе повезло - просто представь адрес this в виде 32-битного числа (тип dd в IDA) и поменяй его на нужное

C++:
*reinterpret_cast<int32_t*>(this_ptr) = 15;

Но в твоем случае нужно, разумеется, патчить функцию, а не ставить хук, чтобы получить адрес на this, поскольку если ты сперва изменишь его, а потом вызовешь оригинал - оно ресетнется в 10
Код:
.text:10067C05 56                          push    esi

.text:10067C6F C7 06 0A 00                 mov     dword ptr [esi], 0Ah
esi я так понимаю будет как this? пробовал разные варианты, крашит

к примеру
Код:
    int* esi = reinterpret_cast<int*>(0x67C05);
    *esi = 15;
 

moreveal

Известный
Проверенный
914
613
Код:
.text:10067C05 56                          push    esi

.text:10067C6F C7 06 0A 00                 mov     dword ptr [esi], 0Ah
esi я так понимаю будет как this? пробовал разные варианты, крашит

к примеру
Код:
    int* esi = reinterpret_cast<int*>(0x67C05);
    *esi = 15;
сними протект, замени 0a на нужное число и верни протект опять (адрес желательно искать по сигнатуре, чтобы работало на всех версиях сампа)

твоя ошибка в том, что ты не снимаешь протект + используешь абсолютный адрес, хотя длл, очевидно, встраивается в исполняемый процесс, получая свой сегмент памяти, поэтому адреса смещаются каждый запуск игры; использование абсолютных адресов возможно только для самой GTA, т.к. её адреса всегда будут начинаться с 0x400000

также в листинге мы видим адрес инструкции mov, а нам нужно поменять число 10 (0x0A), поэтому впоследствии к 0x67C6F нужно будет прибавить ещё 2:
.text:10067C6F C7 06 0A 00 00 00 mov dword ptr [esi], 10

зная, что по этому адресу располагается 32-битное число (как видишь, в листинге это 0A 00 00 00) - т.е. 4 байта под число, их мы и можем свободно использовать, вот как это может выглядеть в коде:
C++:
const uintptr_t address = reinterpret_cast<uintptr_t>(GetModuleHandle("samp.dll")) + (0x67C6F + 2); // SAMP R3

DWORD dwOldProtect;
VirtualProtect((LPVOID)address, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect); // Снимаем защиту на запись (4 - размер нашего региона памяти в байтах)
*reinterpret_cast<int32_t*>(address) = 15; // Теперь можем менять число
VirtualProtect((LPVOID)address, 4, dwOldProtect, nullptr); // И возвращаем защиту на место

лучше, конечно, накатить на всё это дело удобный интерфейс, чтобы не приходилось сталкиваться вновь
 
Последнее редактирование:
  • Нравится
Реакции: whyega52 и nonelike

nonelike

Известный
Автор темы
40
2
плюсы:
const uintptr_t address_vehicle =
    reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0x0E40D);

DWORD dwOldProtect_veh;
VirtualProtect((LPVOID)address_vehicle, 6, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
*reinterpret_cast<int32_t*>(address_vehicle) = 20000;
VirtualProtect((LPVOID)address_vehicle, 6, dwOldProtect_veh, &dwOldProtect_veh);
попытался захавать твою инфу с объяснением, попытался че то сделать с
1728935394845.png
чтобы поменять 611 -> 20000 но дальше краша не ушел
 
Последнее редактирование:

moreveal

Известный
Проверенный
914
613
плюсы:
const uintptr_t address_vehicle =
    reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0x0E40D);

DWORD dwOldProtect_veh;
VirtualProtect((LPVOID)address_vehicle, 6, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
*reinterpret_cast<int32_t*>(address_vehicle) = 20000;
VirtualProtect((LPVOID)address_vehicle, 6, dwOldProtect_veh, &dwOldProtect_veh);
попытался захавать твою инфу с объяснением, попытался че то сделать с Посмотреть вложение 254230 чтобы поменять 611 -> 20000 но дальше краша не ушел
ты меняешь значение 263, это "63 02 00 00" (числа хранятся в обратном порядке, поэтому так - с десяткой было попроще), адрес 0xE040D начинается с "3D 63 02 00", т.е ты инструкцию перезатрешь, а тебе нужно 1 байт отступить:
0x0E40D + 0x01 (0x0E40E)

ну и точно также снять защиту с 4 байт, а не с 6, но это особо роли не сыграет
 
  • Нравится
Реакции: nonelike

nonelike

Известный
Автор темы
40
2
ты меняешь значение 263, это "63 02 00 00", адрес 0xE040D - начинается с "3D 63 02 00", т.е ты инструкцию перезатрешь, а тебе нужно 1 байт отступить:
0x0E40D + 0x01 (0x0E40E), ну и точно также снять защиту с 4 байт, а не с 6, но это особо роли не сыграет
объясни про эти байты еще раз пж, я еще в прошлом топике не все понял, это пи дец какой-то, а то я не вдупляю че как и в дальнейшем сто по сто снова ниче не сделаю и откуда вообще взял 1 байт
 
Последнее редактирование:

moreveal

Известный
Проверенный
914
613
объясни про эти байты еще раз пж, я еще в прошлом топике не все понял, это пи дец какой-то, а то я не вдупляю че как и в дальнейшем сто по сто снова ниче не сделаю и откуда вообще взял 1 байт
IDA тебе показывает адрес: 0x0E40D, и показывает что по этому адресу (вплоть до следующего за ним) располагается такая инструкция:
C++:
.text:1000E40D 3D 63 02 00 00                    cmp     eax, 263h

Числа представлены в порядке little-endian (от большего байта к меньшему), поэтому мы видим что после инструкции cmp (hex: 3D) следует 63 02 (263), если бы число занимало один байт инструкция была бы более понятна:
C++:
.text:1000E40D 3D 02 00 00 00                   cmp     eax, 2

ну или в случае с нулём:
C++:
.text:1000E40D 3D 00 00 00 00                   cmp     eax, 0
как видишь, 3D всегда остаётся - это инструкция cmp, беря в качестве адреса тот, что показывает тебе IDA (0E40D) - ты берешь адрес, ссылающийся на эту инструкцию, а не на число, которое ты хочешь поменять, поэтому мы и делаем отступ на 1 байт:

для совсем уж наглядности сделаю так:
C++:
.text:1000E40D 3D                             cmp     eax
.text:1000E40E 63 02 00 00                    263h
 
  • Нравится
Реакции: whyega52 и nonelike

nonelike

Известный
Автор темы
40
2
после того как произвел смену с 611 -> 20000
после чего закинул пару машинок в gta.img и vehicles.ide
при спавне выбивает Warning(opcode 0x247): Exception 0xC0000005 at 0x40890A попытался посмотреть в иде по gta_sa по 0x40890A, но не увидел какой то логики и взаимосвязи с машинами
 

whyega52

Гений, миллионер, плейбой, долбаеб
Модератор
2,762
2,587
после того как произвел смену с 611 -> 20000
после чего закинул пару машинок в gta.img и vehicles.ide
при спавне выбивает Warning(opcode 0x247): Exception 0xC0000005 at 0x40890A попытался посмотреть в иде по gta_sa по 0x40890A, но не увидел какой то логики и взаимосвязи с машинами
Ты лимит аджастер настроил?
 

nonelike

Известный
Автор темы
40
2
Ты лимит аджастер настроил?
Код:
; fastman92limitAdjuster_GTASA.ini

[DYNAMIC LIMITS]
; ColModels (10150)
; Number of different collisions that can be loaded.
#ColModels = 10150

; VehicleStructs (50)
; Max number of vehicles with different IDs loaded.
VehicleStructs = 512

; rwObjectInstances (1000)
#rwObjectInstances = 1000

; Matrices (900)
#Matrices = 900

; PtrNode Singles (70000)
#PtrNode Singles = 70000

; PtrNode Doubles (3200)
#PtrNode Doubles = 3200

; EntryInfoNodes (500)
#EntryInfoNodes = 500

; Peds (140)
#Peds = 140

; Vehicles (110)
#Vehicles = 110

; Objects (350)
#Objects = 350

; Tasks (500)
#Tasks = 500

; Events (200)
#Events = 200

; PointRoute (64)
#PointRoute = 64

; PatrolRoute (32)
#PatrolRoute = 32

; NodeRoute (64)
#NodeRoute = 64

; TaskAllocator (16)
#TaskAllocator = 16

; PedIntelligence (140)
#PedIntelligence = 140

; PedAttractors (64)
#PedAttractors = 64

; QuadTreeNodes (400)
#QuadTreeNodes = 400

; Collision links (50)
#Collision links = 50

; CustomEnvMapPipeMatDataPool (4096)
#CustomEnvMapPipeMatDataPool = 4096

; CustomEnvMapPipeAtmDataPool (1024)
#CustomEnvMapPipeAtmDataPool = 1024

; CustomSpecMapPipeMaterialDataPool (4096)
#CustomSpecMapPipeMaterialDataPool = 4096

[IPL]
; Buildings (13000)
#Buildings = 13000

; Dummies (2500)
#Dummies = 2500

; Inst entries per file (4096)
#Inst entries per file = 4096

; Entity index array (40)
#Entity index array = 40

; Map zones (39)
#Map zones = 39

; Navigation zones (380)
#Navigation zones = 380

; COccluder, apply coordinate limit patch (0)
#COccluder, apply coordinate limit patch = 0

; Interior occluders (40)
#Interior occluders = 40

; Occluders (1000)
#Occluders = 1000

; Timecycle modifiers (32)
#Timecycle modifiers = 32

; CULL mirror attribute zones (72)
#CULL mirror attribute zones = 72

; CULL tunnel attribute zones (40)
#CULL tunnel attribute zones = 40

; CULL attribute zones (1300)
#CULL attribute zones = 1300

; Stunt jumps (256)
#Stunt jumps = 256

; Entry exits (400)
#Entry exits = 400

; Auzo zone boxes (158)
#Auzo zone boxes = 158

; Auzo zone boxes, apply coordinate limit patch (0)
#Auzo zone boxes, apply coordinate limit patch = 0

; Auzo zone spheres (3)
#Auzo zone spheres = 3

; Enable pickup limit patch (0)
#Enable pickup limit patch = 0

; Pickups (620)
#Pickups = 620

; Pickup collected (20)
#Pickup collected = 20

[IDE LIMITS]
; IDE Objects Type 1 (14000)
#IDE Objects Type 1 = 14000

; IDE Objects Type 2 (70)
#IDE Objects Type 2 = 70

; Timed Objects (169)
#Timed Objects = 169

; Hier Objects (92)
; Clump models
#Hier Objects = 92

; Vehicle Models (212)
Vehicle Models = 512

; Ped Models (278)
Ped Models = 768

; Weapon Models (51)
#Weapon Models = 51

; 2DFX Effects (100)
#2DFX Effects = 100

[MAP LIMITS]
; Apply tracks.dat coordinate limit patch (0)
#Apply tracks.dat coordinate limit patch = 0

; Tracks.dat file size limit (46384)
#Tracks.dat file size limit = 46384

; Max number of track stations (6)
#Max number of track stations = 6

; Enable track config loader (0)
#Enable track config loader = 0

; Apply paths limit patch (0)
#Apply paths limit patch = 0

; Enable path debugging (0)
; Make sure to increase 'OTHER LIMITS -> Coronas', because the path debugging registers a large number of coronas to be rendered.
#Enable path debugging = 0

; Paths map size (6000)
; This option requires a new set of files if map size is changed!!!
#Paths map size = 6000

; Radar map size (6000)
; This option requires a new set of files if map size is changed!!!
#Radar map size = 6000

; Enable frontend map different (0)
#Enable frontend map different = 0

; Water map size (6000)
#Water map size = 6000

; Renderware world map size (20000)
#Renderware world map size = 20000

; World map size (6000)
#World map size = 6000

; World sector size (50)
#World sector size = 50

; World LOD sector size (200)
#World LOD sector size = 200

[LEVEL LIMITS]
; Number of levels (4)
; Level limits are enabled if you uncomment 'Number of levels'
; Currently it's only possible to put the default ped IDs for levels.
; Random IDs won't work for peds
#Number of levels = 4
; Cop car level 0 (599)
Cop car level 0 = 599

; Cop car level 1 (596)
Cop car level 1 = 596

; Cop car level 2 (597)
Cop car level 2 = 597

; Cop car level 3 (598)
Cop car level 3 = 598

; Cop bike (523)
Cop bike = 523

; Cop ped level 0 (283)
Cop ped level 0 = 283

; Cop ped level 1 (280)
Cop ped level 1 = 280

; Cop ped level 2 (281)
Cop ped level 2 = 281

; Cop ped level 3 (282)
Cop ped level 3 = 282

; Cop ped bike (284)
Cop ped bike = 284

; Ambulance level 1 (416)
Ambulance level 1 = 416

; Ambulance level 2 (416)
Ambulance level 2 = 416

; Ambulance level 3 (416)
Ambulance level 3 = 416

; Medic level 1 (274)
Medic level 1 = 274

; Medic level 2 (275)
Medic level 2 = 275

; Medic level 3 (276)
Medic level 3 = 276

; Fire engine level 1 (407)
Fire engine level 1 = 407

; Fire engine level 2 (407)
Fire engine level 2 = 407

; Fire engine level 3 (407)
Fire engine level 3 = 407

; Fireman level 1 (277)
Fireman level 1 = 277

; Fireman level 2 (279)
Fireman level 2 = 279

; Fireman level 3 (278)
Fireman level 3 = 278

; Number of cab drivers for level 0 (0)
Number of cab drivers for level 0 = 0

; Number of cab drivers for level 1 (2)
Number of cab drivers for level 1 = 2

; Cab driver level 1 place 0 (262)
Cab driver level 1 place 0 = 262

; Cab driver level 1 place 1 (261)
Cab driver level 1 place 1 = 261

; Number of cab drivers for level 2 (2)
Number of cab drivers for level 2 = 2

; Cab driver level 2 place 0 (220)
Cab driver level 2 place 0 = 220

; Cab driver level 2 place 1 (234)
Cab driver level 2 place 1 = 234

; Number of cab drivers for level 3 (2)
Number of cab drivers for level 3 = 2

; Cab driver level 3 place 0 (182)
Cab driver level 3 place 0 = 182

; Cab driver level 3 place 1 (206)
Cab driver level 3 place 1 = 206

; Item price multiplier 0 (1.0)
Item price multiplier 0 = 1.0

; Item price multiplier 1 (1.0)
Item price multiplier 1 = 1.0

; Item price multiplier 2 (1.0)
Item price multiplier 2 = 1.0

; Item price multiplier 3 (1.2)
Item price multiplier 3 = 1.2

[VEHICLE SPECIAL FEATURES]
; Enable special features (0)
#Enable special features = 0

; Number of hydra vehicles (1)
Number of hydra vehicles = 1

; Hydra 1 (520)
Hydra 1 = 520

; Number of ZR350 vehicles (1)
Number of ZR350 vehicles = 1

; ZR350 1 (477)
ZR350 1 = 477

[RESTARTS]
; Max number of hospital restarts (10)
#Max number of hospital restarts = 10

; Max number of police restarts (10)
#Max number of police restarts = 10

[IMG LIMITS]
; Max number of IMG archives (8)
Max number of IMG archives = 16

; Enable handling of new enhanced IMG archives (0)
#Enable handling of new enhanced IMG archives = 0

; Increase the IMG archive size limit (0)
#Increase the IMG archive size limit = 0

; Enable handling of IMGLIST keyword (1)
#Enable handling of IMGLIST keyword = 1

[DIRECTORY LIMITS]
; Extra objects directory (550)
#Extra objects directory = 550

; Cutscene directory (512)
#Cutscene directory = 512

; Clothes directory (550)
#Clothes directory = 550

[WATER LIMITS]
; Water triangles (6)
#Water triangles = 6

; Water quads (301)
#Water quads = 301

; Water quads and triangles list (701)
#Water quads and triangles list = 701

; Water vertices (1021)
#Water vertices = 1021

; Blocks to be rendered outside world (70)
#Blocks to be rendered outside world = 70

[CAR STREAMING]
; Cargrp cars per group (23)
; Max number you can put is 63.
; Do not put more unless this 63 limit will be removed in the next version of limit adjuster.
; Remember to increase a limit of VehicleStructs appropriately!
; Otherwise the game will crash after few minutes of playing, because a limit of VehicleStructs will be exceeded.
#Cargrp cars per group = 23

; Streaming_DesiredNumberOfVehiclesLoaded (22)
#Streaming_DesiredNumberOfVehiclesLoaded = 22

; Car generators (500)
#Car generators = 500

; Number of process counter passes for car generators (4)
#Number of process counter passes for car generators = 4

; Use extended format for car generators (0)
#Use extended format for car generators = 0
; Accept any ID for car generator (0)
#Accept any ID for car generator = 0

[PED STREAMING]
; Pedgrp peds per group (21)
#Pedgrp peds per group = 21

[STREAMING]
; Memory available (50)
#Memory available = 50

; Max number of stream handles (32)
#Max number of stream handles = 32

; Number of requested models above which the game considers loading very busy (5)
#Number of requested models above which the game considers loading very busy = 5

; Minimum number of iterations in LoadAllRequestedModels (10)
#Minimum number of iterations in LoadAllRequestedModels = 10

[RENDERER LIMITS]
; Invisible entity pointers (150)
#Invisible entity pointers = 150

; Visible super LOD pointers (50)
#Visible super LOD pointers = 50

; Visible LOD pointers (1000)
#Visible LOD pointers = 1000

; Visible entity pointers (1000)
#Visible entity pointers = 1000

[VISIBILITY LIMITS]
; Alpha list limit (20)
#Alpha list limit = 20

; Alpha boat atomic list limit (20)
#Alpha boat atomic list limit = 20

; Alpha entity list limit (200)
#Alpha entity list limit = 200

; Alpha underwater entity list limit (100)
#Alpha underwater entity list limit = 100

; Alpha really draw last list limit (50)
#Alpha really draw last list limit = 50

; Weapon peds for PC limit (100)
#Weapon peds for PC limit = 100

[ID LIMITS]
; Apply ID limit patch (0)
#Apply ID limit patch = 0

; FILE_TYPE_DFF (20000)
#FILE_TYPE_DFF = 20000

; FILE_TYPE_TXD (5000)
#FILE_TYPE_TXD = 5000

; FILE_TYPE_COL (255)
#FILE_TYPE_COL = 255

; FILE_TYPE_IPL (256)
#FILE_TYPE_IPL = 256

; FILE_TYPE_IFP (180)
#FILE_TYPE_IFP = 180

; FILE_TYPE_RRR (475)
#FILE_TYPE_RRR = 475

; FILE_TYPE_SCM (82)
#FILE_TYPE_SCM = 82

; Use file binary search by name (0)
; Binary search speeds up the time that it takes a game to find the ID of file, when searching for it by the name.
; This is really nice to have enabled when using milion models or more.
; Rockstar Games noticed how it's useful and implemented it later in GTA IV. Now possible in GTA SA.
#Use file binary search by name = 0

; Count of killable model IDs (800)
; In game there's an array CDarkel::RegisteredKills and it stores the number of registered kills for model IDs.
; Model IDs that may be killed are vehicles/peds.
; Default value of 800, means that 0-799 is valid ID for ped/vehicle.
;
; As such, this value will affect the max possible ID for ped/vehicle.
Count of killable model IDs = 17986

[HANDLING.CFG LIMITS]
; Apply handling.cfg patch (0)
Apply handling.cfg patch = 1

; Number of standard lines (210)
Number of standard lines = 512

; Number of bike lines (13)
#Number of bike lines = 13

; Number of flying lines (24)
#Number of flying lines = 24

; Number of boat lines (12)
#Number of boat lines = 12

; Number of animation group lines (30)
#Number of animation group lines = 30

[SCM LIMITS]
; Max size of MAIN segment (200000)
#Max size of MAIN segment = 200000

; Max mission size (69000)
#Max mission size = 69000

; Running scripts (96)
#Running scripts = 96

; Mission cleanup (75)
#Mission cleanup = 75

; Max number of used objects (395)
#Max number of used objects = 395

; Scripts for brains (70)
#Scripts for brains = 70

; Switch jump table cases (75)
#Switch jump table cases = 75

[OTHER LIMITS]
; Coronas (64)
Coronas = 128

; Collision size (32768)
#Collision size = 32768

; Cover points (100)
#Cover points = 100

; LOD distance (300.0)
#LOD distance = 300.0

; Max number of particles active (1000)
#Max number of particles active = 1000

; Object info entries (160)
; Max number of object.dat entries.
; 5 first entries of array are reserved for hardcoded purpose.
#Object info entries = 160

; Radar traces (175)
#Radar traces = 175

; References (3000)
#References = 3000

; Set pieces (210)
#Set pieces = 210

; Set pieces, apply coordinate limit patch (0)
#Set pieces, apply coordinate limit patch = 0

; Vehicle colors (128)
#Vehicle colors = 128

; Number of plate textures (3)
#Number of plate textures = 3
[ROADBLOCK LIMITS]
; Apply roadblox.dat better loader (0)
; Make it possible to use a roadblox.dat of variable size.
#Apply roadblox.dat better loader = 0

[SHADOW LIMITS]
; Shadows stored (48)
#Shadows stored = 48

; Poly bunches (360)
#Poly bunches = 360

; Static shadows (48)
#Static shadows = 48

; Permanent shadows (48)
#Permanent shadows = 48

; Real time shadows (16)
#Real time shadows = 16

[WEAPON LIMITS]
; Enable weapon type loader  (0)
#Enable weapon type loader  = 0

; Weapon type loader, number of type IDs (70)
#Weapon type loader, number of type IDs = 70

; Enable melee combo type loader (0)
#Enable melee combo type loader = 0

; Max number of melee combos (17)
#Max number of melee combos = 17

[SPECIAL]
; Disable radar rotation (0)
#Disable radar rotation = 0

; Disable plane speed limit (0)
#Disable plane speed limit = 0

; Make helicopters land on water when cars on water cheat enabled (0)
#Make helicopters land on water when cars on water cheat enabled = 0

; Make save of variable size (0)
#Make save of variable size = 0

; Make paintjobs work for any ID (0)
#Make paintjobs work for any ID = 0

[ERROR REPORTING]
; Enable error reporting (1)
Enable error reporting = 1

; Attempt to load object instance with undefined ID (1)
Attempt to load object instance with undefined ID = 1

; Car generator limit exceeded (0)
#Car generator limit exceeded = 0

; Car generator with invalid model ID is getting registered (1)
Car generator with invalid model ID is getting registered = 1

; IMG archive needs rebuilding (1)
IMG archive needs rebuilding = 1

; Model does not have collision loaded (1)
Model does not have collision loaded = 1

; Model has collision already set up (0)
#Model has collision already set up = 0

; Model name is declared on multiple IDs (0)
#Model name is declared on multiple IDs = 0

; Requested file does not exist (0)
#Requested file does not exist = 0

; Stream handles limit exceeded (1)
Stream handles limit exceeded = 1

[DEBUG OUTPUT]
; Enable debug output (0)
; Enables debug output from sprintf and printf functions.
#Enable debug output = 0

; Enable logging of files loaded (0)
#Enable logging of files loaded = 0

[DEBUGGING]
; Copy info to pad 1 from pad 0 (0)
#Copy info to pad 1 from pad 0 = 0

[ADDONS]
; Enable cheat string loader (0)
#Enable cheat string loader = 0

; Enable vehicle audio loader (0)
Enable vehicle audio loader = 1

; Enable train type carriages loader (0)
#Enable train type carriages loader = 0

; Train type carriage loader, max number of vehicles for type (15)
#Train type carriage loader, max number of vehicles for type = 15

; Train type carriage loader, number of type IDs (16)
#Train type carriage loader, number of type IDs = 16

; Enable radar blip sprite filename loader (0)
#Enable radar blip sprite filename loader = 0

; Radar blip sprite filename loader, number of type IDs (64)
#Radar blip sprite filename loader, number of type IDs = 64

; Enable model special feature loader (0)
#Enable model special feature loader = 0

[MAIN]
; author (fastman92)
author = fastman92

; Disable FLA loading text (0)
Disable FLA loading text = 1

; FLA main window disable code ()
FLA main window disable code =

; Register global exception handler (1)
; Crash exception handler
; You should leave it enabled or there will be no crash log.
; Please don't disable it unless you have a good reason.
Register global exception handler = 1

; Disable music on global exception handler (0)
Disable music on global exception handler = 1

; Use a different INI ()
#Use a different INI =
Версия аджастера нужна какая то определенная или с последней 6.3 тоже канает?

Warning(opcode 0x247): Exception 0xC0000005 at 0x40890A
че то ваще с фастманом не канает
 

Вложения

  • fastman92limitAdjuster.log
    2.4 KB · Просмотры: 0
  • fastman92limitAdjuster_GTASA.ini
    16 KB · Просмотры: 0
Последнее редактирование:

0x9

Новичок
13
2
это конечно славно и спасибо, но может у тебя есть сурсы на эту аси? либо ты понимаешь, что в ней происходит?
в иде открой и сам посмотри, там кода на 10 строк от силы
 
  • Нравится
Реакции: nonelike