0330

From GTAMods Wiki
Revision as of 16:54, 6 August 2015 by Spaceeinstein (talk | contribs)
Jump to navigation Jump to search

GTA III Vice City San Andreas SET_PLAYER_NEVER_GETS_TIRED


Description

Sets the player to sprint without tiring

Syntax

0330: set_player [player handle] infinite_run_to [int]

Parameter

[player handle]
The handle of the player
[int]
0 = disable (default), 1 = enable

Native analog

SET_PLAYER_NEVER_GETS_TIRED

This opcode sets the player's ability to sprint without tiring out. The value set with this opcode is saved in block 16 of the save file in GTA III, block 18 in Vice City, and block 15 in San Andreas.

Disassembled code

These are disassembled code for this opcode both from v1.0 US.

GTA III

; call subroutine to collect values from input parameters
.text:00448C37                 mov     eax, [esp+398h+var_388]
.text:00448C3B                 mov     ecx, [esp+398h+var_388]
.text:00448C3F                 add     eax, 10h
.text:00448C42                 push    2  ; two parameters to collect
.text:00448C44                 push    eax
.text:00448C45                 call    CRunningScript__CollectParameters
; read collected content
.text:00448C4A                 mov     eax, ds:_opcodeParameter1
.text:00448C4F                 imul    eax, 13Ch
.text:00448C55                 add     eax, offset _playerInfo  ; address of the player info
.text:00448C5A                 cmp     ds:_opcodeParameter2, 0  ; check whether or not parameter 2 is set to 0
.text:00448C61                 jz      short loc_448C70
.text:00448C63                 mov     byte ptr [eax+114h], 1  ; offset 0x114 set to enable infinite run
.text:00448C6A                 jmp     short loc_448C77
.text:00448C6C                 align 10h
.text:00448C70 loc_448C70:     mov     byte ptr [eax+114h], 0  ; offset 0x114 set to disable infinite run
.text:00448C77 loc_448C77:     lea     ecx, [esp+398h+var_258]
.text:00448C7E                 call    CMatrix__~CMatrix
; end
.text:00448C83                 xor     al, al
.text:00448C85                 add     esp, 398h
.text:00448C8B                 pop     ebp
.text:00448C8C                 pop     edi
.text:00448C8D                 pop     esi
.text:00448C8E                 pop     ebx
.text:00448C8F                 retn    4

Vice City

; call subroutine to collect values from input parameters
.text:0045B950                 mov     eax, [esp+2D0h+var_2B8]
.text:0045B954                 mov     ecx, [esp+2D0h+var_2B8]
.text:0045B958                 add     eax, 10h
.text:0045B95B                 push    2  ; two parameters to collect
.text:0045B95D                 push    eax
.text:0045B95E                 call    CRunningScript__CollectParameters
; read collected content
.text:0045B963                 mov     eax, ds:_opcodeParameter1
.text:0045B968                 imul    eax, 170h
.text:0045B96E                 add     eax, offset _playerInfo  ; address of the player info
.text:0045B973                 cmp     ds:_opcodeParameter2, 0  ; check whether or not parameter 2 is set to 0
.text:0045B97A                 jz      short loc_45B985
.text:0045B97C                 mov     byte ptr [eax+140h], 1  ; offset 0x140 set to enable infinite run
.text:0045B983                 jmp     short loc_45B98C
.text:0045B985 loc_45B985:     mov     byte ptr [eax+140h], 0  ; offset 0x140 set to disable infinite run
.text:0045B98C loc_45B98C:     lea     ecx, [esp+2D0h+var_1B0]
.text:0045B993                 call    CMatrix__~CMatrix
; end
.text:0045B998                 xor     al, al
.text:0045B99A                 add     esp, 2D0h
.text:0045B9A0                 pop     ebp
.text:0045B9A1                 pop     edi
.text:0045B9A2                 pop     esi
.text:0045B9A3                 pop     ebx
.text:0045B9A4                 retn    4

Keywords

set, toggle, player, infinite, run, sprint, never gets tired