Difference between revisions of "02DE"
Jump to navigation
Jump to search
(added lcs) |
|||
Line 9: | Line 9: | ||
}} | }} | ||
− | This conditional opcode returns true if the player is in a taxi. It recognizes the following | + | This conditional opcode returns true if the player is in a taxi. It recognizes the following as taxis: |
− | {|class="wikitable | + | {|class="wikitable sortable" |
− | ! | + | !colspan="2" |{{Icon|3}} ||colspan="2" |{{Icon|VC}} ||colspan="2" |{{Icon|LCS}} |
|- | |- | ||
− | | | + | !Id ||Name ||Id ||Name ||Id ||Name |
|- | |- | ||
− | | | + | |110 ||Taxi ||150 ||Taxi ||151 ||Taxi |
|- | |- | ||
− | | | + | |128 ||Cabbie ||168 ||Cabbie ||166 ||Cabbie |
|- | |- | ||
− | |||Kaufman Cab | + | |148 ||Borgnine ||188 ||Zebra Cab ||181 ||Bickle'76 |
+ | |- | ||
+ | |||||216 ||Kaufman Cab |||| | ||
|} | |} | ||
− | |||
== Disassembled code == | == Disassembled code == | ||
Line 93: | Line 94: | ||
== Keywords == | == Keywords == | ||
check, player, driving, taxi, cab, cabbie | check, player, driving, taxi, cab, cabbie | ||
+ | |||
+ | == See also == | ||
+ | * {{Icon|SA}} [[0602]], checks if the character is in a taxi |
Revision as of 09:28, 7 November 2016
- Description
- Checks if the player is in a taxi
- Syntax
- 02DE: player [player handle] in_taxi
- Parameter
- [player handle]
- The handle of the player
This conditional opcode returns true if the player is in a taxi. It recognizes the following as taxis:
Id | Name | Id | Name | Id | Name |
---|---|---|---|---|---|
110 | Taxi | 150 | Taxi | 151 | Taxi |
128 | Cabbie | 168 | Cabbie | 166 | Cabbie |
148 | Borgnine | 188 | Zebra Cab | 181 | Bickle'76 |
216 | Kaufman Cab |
Disassembled code
These are disassembled code for this opcode both from PC v1.0 US.
GTA III
loc_446A93:
lea eax, [edi+10h] ; get address of script's current instruction pointer
mov ecx, edi ; get CRunningScript pointer for thiscall
push 1 ; push 1 for one parameter to collect
push eax ; push address of script's current instruction pointer
call CRunningScript::CollectParameters ; call CRunningScript::CollectParameters
mov ecx, ds:ScriptParams[0] ; get value of first parameter, the player handle
xor al, al ; set compare flag to false
imul ecx, 4Fh
mov esi, ds:CWorld::Players[ecx*4] ; get address of the player at CWorld::Players + player handle * 0x4F * 4
cmp byte ptr [esi+314h], 0 ; offset player address by 0x314 and check whether or not the player is in car
jz short loc_446ADC
mov edx, [esi+310h] ; offset player address by 0x310 to get address of last entered car
movsx ebx, word ptr [edx+5Ch] ; offset last entered car address by 0x5C to get the model index of the car
cmp ebx, 6Eh ; compare model index with 0x6E, Taxi
jz short loc_446ADA
cmp ebx, 80h ; compare model index with 0x80, Cabbie
jz short loc_446ADA
cmp ebx, 94h ; compare model index with 0x94, Borgnine
jnz short loc_446ADC
loc_446ADA:
mov al, 1 ; set compare flag to true
loc_446ADC:
mov ecx, edi ; get CRunningScript pointer for thiscall
push eax ; push compare flag
call CRunningScript::UpdateCompareFlag ; call CRunningScript::UpdateCompareFlag
xor al, al ; return 0
Vice City
loc_45600E:
lea eax, [ebp+10h] ; get address of script's current instruction pointer
mov ecx, ebp ; get CRunningScript pointer for thiscall
push 1 ; push 1 for one parameter to collect
push eax ; push address of script's current instruction pointer
call CRunningScript::CollectParameters ; call CRunningScript::CollectParameters
mov ecx, ds:ScriptParams[0] ; get value of first parameter, the player handle
xor al, al ; set compare flag to false
imul ecx, 2Eh
mov ebx, ds:CWorld::Players[ecx*8] ; get address of the player at CWorld::Players + player handle * 0x2E * 8
cmp byte ptr [ebx+3ACh], 0 ; offset player address by 0x3AC and check whether or not the player is in car
jz short loc_456066
mov edx, [ebx+3A8h] ; offset player address by 0x3A8 to get address of last entered car
test edx, edx ; checks whether or not the last entered car address is null
jz short loc_456066
movsx edi, word ptr [edx+5Ch] ; offset last entered car address by 0x5C to get the model index of the car
cmp edi, 96h ; compare model index with 0x96, Taxi
jz short loc_456064
cmp edi, 0A8h ; compare model index with 0xA8, Cabbie
jz short loc_456064
cmp edi, 0BCh ; compare model index with 0xBC, Zebra Cab
jz short loc_456064
cmp edi, 0D8h ; compare model index with 0xD8, Kaufman Cab
jnz short loc_456066
loc_456064:
mov al, 1 ; set compare flag to true
loc_456066:
mov ecx, ebp ; get CRunningScript pointer for thiscall
push eax ; push compare flag
call CRunningScript::UpdateCompareFlag ; call CRunningScript::UpdateCompareFlag
xor al, al ; return 0
Keywords
check, player, driving, taxi, cab, cabbie
See also
- 0602, checks if the character is in a taxi