Quantcast

Jump to content

» «
Photo

entity has marker?

2 replies to this topic
HeresOtis
  • HeresOtis

    SA C++ Whiz

  • Feroci
  • Joined: 29 Apr 2011
  • United-States

#1

Posted 19 July 2013 - 01:44 AM

How to check if a ped/vehicle/object has a radar marker attached to it?

DK22Pac
  • DK22Pac

  • Feroci
  • Joined: 12 Apr 2009
  • Ukraine
  • Best WIP Mod 2014 [Grand Theft Auto 3D Contribution]
    Contribution Award [Mods]

#2

Posted 19 July 2013 - 09:00 AM

Not tested.
CODE
:EntityHasMarker
/* 0AB1: call @EntityHasMarker 2 params: entityType 1 handle [email protected] result: [email protected]
/  Entity type:
/  1 - car
/  2 - ped
/  3 - object
/  7 - pickup  
*/
for [email protected] = 0xBA86F0 to 0xBAA248 step 0x28
   0A8E: [email protected] = [email protected] + 4
   0A8D: [email protected] = read_memory [email protected] size 4 virtual_protect 0
   if
       003B: [email protected] == [email protected]
   then
       0A8E: [email protected] = [email protected] + 0x26
       0A8D: [email protected] = read_memory [email protected] size 1 virtual_protect 0
       0B15: [email protected] = [email protected] SHR 2
       0B10: [email protected] = [email protected] AND 0xF
       if
           003B: [email protected] == [email protected]
       then
           0AB2: ret 1 true
       end
   end        
end
0AB2: ret 1 false

Wesser
  • Wesser

    The complexity simplifier, the efficiency optimizer

  • Feroci
  • Joined: 19 Aug 2006
  • Unknown
  • Contribution Award [Mods]

#3

Posted 19 July 2013 - 08:26 PM Edited by Wesser, 19 July 2013 - 10:13 PM.

This CLEO3-compatible function might work in the same way but I'm not sure about the flag as I didn't test the code by myself:
CODE
if
0AB1: call_scm_func @hasEntityMarker 1 entity -1 marker_to [email protected]
then
† †// The marker has been associated to the entity.
end

[...]

:hasEntityMarker
for [email protected] = 0xBA86F0 to 0xBAA248 step 0x28 // sizeof(CMarker)
† †0A8E: [email protected] = [email protected] + 0x04 // CMarker.m_iEntityHandle
† †0A8D: [email protected] = read_memory [email protected] size 4 virtual_protect 0
† †if
† †003B: [email protected] == [email protected]
† †then
† † † †0A8E: [email protected] = [email protected] + 0x26 // CMarker.m_cTypeFlag
† † † †0A8D: [email protected] = read_memory [email protected] size 1 virtual_protect 0
† † † †08C3: clear [email protected] bit 0
† † † †08C3: clear [email protected] bit 1
† † † †if
† † † † † †[email protected] <> 0x00
† † † †then
† † † † † †0A8E: [email protected] = [email protected] + 0x14 // CMarker.m_sIndex
† † † † † †0A8D: [email protected] = read_memory [email protected] size 2 virtual_protect 0
† † † † † †[email protected] *= 0x00010000 // CMarker.m_sIndex << 16
           [email protected] /= 0x28
† † † † † †005A: [email protected] += [email protected]
† † † † † †0485: return_true
† † † † † †0AB2: ret 1 marker [email protected]
† † † †end
† †end
end
059A: return_false
0AB2: ret 1 marker -1




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users