0414

From GTAMods Wiki
Revision as of 18:42, 16 April 2015 by Spaceeinstein (talk | contribs) (disassembly)
Jump to navigation Jump to search

GTA III Vice City San Andreas SET_FREE_HEALTH_CARE


Description

Enables a free hospital visit for the player

Syntax

0414: set_player [player handle] single_free_treatment [int]

Parameter

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

Native analog

SET_FREE_HEALTH_CARE

This opcode sets a free hospital visit for the player. When enabled, if the player is wasted, he will not lose any weapons or cash after respawning. The free treatment works once only, so to allow free treatment again, you have to enable it through this opcode again. This opcode was unused in GTA III's original script. The value set with this opcode is saved in block 16 of the save file in GTA III, block 18 in Vice City, and in block 15 in San Andreas.

Disassembled code

This is disassembled code for this opcode from v1.0 US.

Vice City

; call subroutine to collect values from input parameters
.text:00608BCE                 lea     eax, [ebx+10h]
.text:00608BD1                 mov     ecx, ebx
.text:00608BD3                 push    2  ; two parameters to collect
.text:00608BD5                 push    eax
.text:00608BD6                 call    CRunningScript__CollectParameters
; read collected content
.text:00608BDB                 mov     eax, ds:_opcodeParameter1
.text:00608BE0                 imul    eax, 170h
.text:00608BE6                 add     eax, offset _playerInfo  ; address of the player info
.text:00608BEB                 cmp     ds:_opcodeParameter2, 0  ; check whether or not parameter 2 is set to 0
.text:00608BF2                 jz      short loc_608C00
.text:00608BF4                 mov     byte ptr [eax+146h], 1  ; offset 0x146 set to enable free treatment
.text:00608BFB                 jmp     short loc_608C07
.text:00608BFD                 align 10h
.text:00608C00 loc_608C00:     mov     byte ptr [eax+146h], 0  ; offset 0x146 set to disable free treatment
; end
.text:00608C07 loc_608C07:     xor     al, al
.text:00608C09                 add     esp, 70h
.text:00608C0C                 pop     ebp
.text:00608C0D                 pop     edi
.text:00608C0E                 pop     esi
.text:00608C0F                 pop     ebx
.text:00608C10                 retn    4

Keywords

set, toggle, player, free, treatment, hospital, wasted