SAMP Get Player ID Using Actor Handle

Code:
:SAMPGetPlayerIDByActorHandle // 0AB1: @SAMPGetPlayerIDByActorHandle 1 _ActorHandle 0@ _StorePlayerID 25@
25@ = -1
if 0AA2: 31@ = load_dynamic_library "samp.dll" // pSAMPBase // no need to Free Memory
then
    31@ += 0x21A0F8
    0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0 // stSAMPInfo
    if 31@ > 0
    then
        31@ += 0x3CD
        0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0 // stSAMPPools
        if 31@ > 0
        then
            31@ += 0x18
            0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0 // stPlayerPool
            if 31@ > 0
            then
                if 07D6: 0@ == $PLAYER_ACTOR
                then
                    31@ += 0x4
                    0A8D: 25@ = read_memory 31@ size 2 virtual_protect 0 // sLocalPlayerID
                else
                    0A96: 26@ = ped 0@ struct
                    0A8D: 30@ = read_memory 31@ size 4 virtual_protect 0 // ulMaxPlayerIDStreamedOnly
                    31@ += 0x2E // pRemotePlayer[0]
                    0A8E: 29@ = 31@ + 0xFB0 // iIsListed[0]
                    for 28@ = 0 to 30@
                        0A8D: 27@ = read_memory 29@ size 4 virtual_protect 0 // iIsListed[n]
                        if 27@ == true
                        then
                            0A8D: 27@ = read_memory 31@ size 4 virtual_protect 0 // pRemotePlayer
                            if 27@ > 0
                            then
                                0A8D: 27@ = read_memory 27@ size 4 virtual_protect 0 // pPlayerData
                                if 27@ > 0
                                then
                                    0A8D: 27@ = read_memory 27@ size 4 virtual_protect 0 // pSAMP_Actor
                                    if 27@ > 0
                                    then
                                        27@ += 0x40
                                        0A8D: 27@ = read_memory 27@ size 4 virtual_protect 0 // pGTA_Ped
                                        if 003B: 26@ == 27@  // Same Ped
                                        then
                                            0085: 25@ = 28@ // save this Player ID
                                            break
                                        end
                                    end
                                end
                            end
                        end
                            // next index
                        31@ += 0x4
                        29@ += 0x4
                            //
                    end
                end
            end
        end
    end
end
if 25@ >= 0
then 0485: return_true
else 059A: return_false
end
0AB2: cleo_return 1 25@
Code:
{$CLEO}
0000:

while true
    wait 0
    if 0AD2: 0@ = player $PLAYER_CHAR targeted_actor // IF and SET
    then
        if 0AB1: @SAMPGetPlayerIDByActorHandle 1 _ActorHandle 0@ _StorePlayerID 31@
        then 0AD1: show_formatted_text_highpriority "Targeted Actor's SAMP ID is %d" time 100 31@
        else 0ACD: show_text_highpriority "Targeted Actor have no SAMP ID" time 100
        end
    else
        if 0AB1: @SAMPGetPlayerIDByActorHandle 1 _ActorHandle $PLAYER_ACTOR _StorePlayerID 31@
        then 0AD1: show_formatted_text_highpriority "Your SAMP ID is %d" time 100 31@
        else 0ACD: show_text_highpriority "Your have no SAMP ID" time 100
        end
    end
end
 

Parazitas

God
Joined
Jan 2, 2017
Messages
3,112
Solutions
5
Reaction score
878
Location
Lithuania
0.3.7 - R2
PHP:
:SAMPGetPlayerIDByActorHandle
{
    0.3.7 R2
    IF 0AB1: @SAMPGetPlayerIDByActorHandle 1 _ActorHandle 0@ _Returned: ID 31@
}
IF 0AA2: 31@ = loadlib "samp.dll" // GET_SAMP_BASE
THEN
    31@ += 0x21A100 // SAMP_INFO_OFFSET[0]
    0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0 // SAMP_INFO
    IF 31@ > 0
    THEN
        31@ += 0x3C5 // SAMP_POOLS_OFFSET[0]
        0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0 // SAMP_POOLS_OFFSET
        IF 31@ > 0
        THEN
            31@ += 0x8 // PLAYER_POOLS_OFFSET[0]
            0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0 // PLAYER_POOLS
            IF 31@ > 0
            THEN
                IF 003B: 0@ == $PLAYER_ACTOR // COMPARE_HANDLE_WHICH_WAS_GIVEN
                THEN
                    0A8E: 30@ = 31@ + 0x0 // LOCAL_PLAYER_ID_OFFSET[0]
                    0A8D: 28@ = read_memory 30@ size 2 virtual_protect 0 // LOCAL_PLAYER_ID
                    0AB2: RET 1 28@
                ELSE
                    0A8E: 29@ = 31@ + 0x22 // MAX_PLAYER_ID_STREAMED_ONLY_OFFSET[0]
                    0A8D: 29@ = read_memory 29@ size 4 virtual_protect 0 // MAX_PLAYER_ID_STREAMED_ONLY
                    FOR 28@ = 0 TO 29@ // FROM "0" TO "MAX_PLAYER_ID_STREAMED_ONLY" 
                        27@ = 0x4 // SAVE VARIABLE "27@" AS DIGIT "4"
                        006A: 27@ *= 28@ // 4 * ID
                        0A8E: 26@ = 31@ + 0x26 // SAVE TO NEW "26@" VARIABLE "PLAYER_POOLS" + "REMOTE_PLAYER_OFFSET[0]" 
                        005A: 26@ += 27@ // REMOTE_PLAYER_OFFSET + 4 * ID
                        0A8D: 26@ = read_memory 26@ size 4 virtual_protect 0 // REMOTE_PLAYER
                        IF 26@ > 0
                        THEN
                            26@ += 0xC // PLAYER_DATA_OFFSET[0]
                            0A8D: 26@ = read_memory 26@ size 4 virtual_protect 0 // PLAYER_DATA
                            IF 26@ > 0
                            THEN
                                26@ += 0x1C // SAMP_ACTOR_OFFSET[0]
                                0A8D: 26@ = read_memory 26@ size 4 virtual_protect 0 // SAMP_ACTOR
                                IF 26@ > 0
                                THEN
                                    26@ += 0x44 // GTA_PED_HANDLE_OFFSET[0]
                                    0A8D: 26@ = read_memory 26@ size 4 virtual_protect 0 // GTA_PED_HANDLE
                                    IF 26@ > 0
                                    THEN
                                        IF 003B: 0@ == 26@ // COMPARE_HANDLE_WHICH_WAS_GIVEN
                                        THEN
                                            0485: RETURN_TRUE
                                            0AB2: RET 1 28@
                                        END
                                    END
                                END
                            END
                        END
                    END
                END
            END
        END
    END
END
059A: RETURN_FALSE
0AB2: RET 0
 
Last edited:

Parazitas

God
Joined
Jan 2, 2017
Messages
3,112
Solutions
5
Reaction score
878
Location
Lithuania
0.3.7 - R3
PHP:
:SAMPGetPlayerIDByActorHandle
{
    0.3.7 R3
    IF 0AB1: @SAMPGetPlayerIDByActorHandle 1 _ActorHandle 0@ _Returned: ID 31@
}
IF 0AA2: 31@ = loadlib "samp.dll" // GET_SAMP_BASE
THEN
    31@ += 0x26E8DC // SAMP_INFO_OFFSET[0]
    0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0 // SAMP_INFO
    IF 31@ > 0
    THEN
        31@ += 0x3DE // SAMP_POOLS_OFFSET[0]
        0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0 // SAMP_POOLS_OFFSET
        IF 31@ > 0
        THEN
            31@ += 0x8 // PLAYER_POOLS_OFFSET[0]
            0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0 // PLAYER_POOLS
            IF 31@ > 0
            THEN
                IF 003B: 0@ == $PLAYER_ACTOR // COMPARE_HANDLE_WHICH_WAS_GIVEN
                THEN
                    0A8E: 30@ = 31@ + 0x2F1C // LOCAL_PLAYER_ID_OFFSET[0]
                    0A8D: 28@ = read_memory 30@ size 2 virtual_protect 0 // LOCAL_PLAYER_ID
                    0AB2: RET 1 28@
                ELSE
                    0A8E: 29@ = 31@ + 0x0 // MAX_PLAYER_ID_STREAMED_ONLY_OFFSET[0]
                    0A8D: 29@ = read_memory 29@ size 4 virtual_protect 0 // MAX_PLAYER_ID_STREAMED_ONLY
                    FOR 28@ = 0 TO 29@ // FROM "0" TO "MAX_PLAYER_ID_STREAMED_ONLY" 
                        27@ = 0x4 // SAVE VARIABLE "27@" AS DIGIT "4"
                        006A: 27@ *= 28@ // 4 * ID
                        0A8E: 26@ = 31@ + 0x4 // SAVE TO NEW "26@" VARIABLE "PLAYER_POOLS" + "REMOTE_PLAYER_OFFSET[0]" 
                        005A: 26@ += 27@ // REMOTE_PLAYER_OFFSET + 4 * ID
                        0A8D: 26@ = read_memory 26@ size 4 virtual_protect 0 // REMOTE_PLAYER
                        IF 26@ > 0
                        THEN
                            26@ += 0x0 // PLAYER_DATA_OFFSET[0]
                            0A8D: 26@ = read_memory 26@ size 4 virtual_protect 0 // PLAYER_DATA
                            IF 26@ > 0
                            THEN
                                26@ += 0x0 // SAMP_ACTOR_OFFSET[0]
                                0A8D: 26@ = read_memory 26@ size 4 virtual_protect 0 // SAMP_ACTOR
                                IF 26@ > 0
                                THEN
                                    26@ += 0x44 // GTA_PED_HANDLE_OFFSET[0]
                                    0A8D: 26@ = read_memory 26@ size 4 virtual_protect 0 // GTA_PED_HANDLE
                                    IF 26@ > 0
                                    THEN
                                        IF 003B: 0@ == 26@ // COMPARE_HANDLE_WHICH_WAS_GIVEN
                                        THEN
                                            0485: RETURN_TRUE
                                            0AB2: RET 1 28@
                                        END
                                    END
                                END
                            END
                        END
                    END
                END
            END
        END
    END
END
059A: RETURN_FALSE
0AB2: RET 0
 
Last edited:

Parazitas

God
Joined
Jan 2, 2017
Messages
3,112
Solutions
5
Reaction score
878
Location
Lithuania
0.3.DL
PHP:
:SAMPGetPlayerIDByActorHandle
{
    0.3.DL
    IF 0AB1: @SAMPGetPlayerIDByActorHandle 1 _ActorHandle 0@ _Returned: ID 31@
}
IF 0AA2: 31@ = loadlib "samp.dll" // GET_SAMP_BASE
THEN
    31@ += 0x2ACA24 // SAMP_INFO_OFFSET[0]
    0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0 // SAMP_INFO
    IF 31@ > 0
    THEN
        31@ += 0x3DE // SAMP_POOLS_OFFSET[0]
        0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0 // SAMP_POOLS_OFFSET
        IF 31@ > 0
        THEN
            31@ += 0x8 // PLAYER_POOLS_OFFSET[0]
            0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0 // PLAYER_POOLS
            IF 31@ > 0
            THEN
                IF 003B: 0@ == $PLAYER_ACTOR // COMPARE_HANDLE_WHICH_WAS_GIVEN
                THEN
                    0A8E: 30@ = 31@ + 0x0 // LOCAL_PLAYER_ID_OFFSET[0]
                    0A8D: 28@ = read_memory 30@ size 2 virtual_protect 0 // LOCAL_PLAYER_ID
                    0AB2: RET 1 28@
                ELSE
                    0A8E: 29@ = 31@ + 0x22 // MAX_PLAYER_ID_STREAMED_ONLY_OFFSET[0]
                    0A8D: 29@ = read_memory 29@ size 4 virtual_protect 0 // MAX_PLAYER_ID_STREAMED_ONLY
                    FOR 28@ = 0 TO 29@ // FROM "0" TO "MAX_PLAYER_ID_STREAMED_ONLY" 
                        27@ = 0x4 // SAVE VARIABLE "27@" AS DIGIT "4"
                        006A: 27@ *= 28@ // 4 * ID
                        0A8E: 26@ = 31@ + 0x26 // SAVE TO NEW "26@" VARIABLE "PLAYER_POOLS" + "REMOTE_PLAYER_OFFSET[0]" 
                        005A: 26@ += 27@ // REMOTE_PLAYER_OFFSET + 4 * ID
                        0A8D: 26@ = read_memory 26@ size 4 virtual_protect 0 // REMOTE_PLAYER
                        IF 26@ > 0
                        THEN
                            26@ += 0x8 // PLAYER_DATA_OFFSET[0]
                            0A8D: 26@ = read_memory 26@ size 4 virtual_protect 0 // PLAYER_DATA
                            IF 26@ > 0
                            THEN
                                26@ += 0x4 // SAMP_ACTOR_OFFSET[0]
                                0A8D: 26@ = read_memory 26@ size 4 virtual_protect 0 // SAMP_ACTOR
                                IF 26@ > 0
                                THEN
                                    26@ += 0x44 // GTA_PED_HANDLE_OFFSET[0]
                                    0A8D: 26@ = read_memory 26@ size 4 virtual_protect 0 // GTA_PED_HANDLE
                                    IF 26@ > 0
                                    THEN
                                        IF 003B: 0@ == 26@ // COMPARE_HANDLE_WHICH_WAS_GIVEN
                                        THEN
                                            0485: RETURN_TRUE
                                            0AB2: RET 1 28@
                                        END
                                    END
                                END
                            END
                        END
                    END
                END
            END
        END
    END
END
059A: RETURN_FALSE
0AB2: RET 0
 
Last edited:

Parazitas

God
Joined
Jan 2, 2017
Messages
3,112
Solutions
5
Reaction score
878
Location
Lithuania
0.3.7 R4 - v2
PHP:
:SAMPGetPlayerIDByActorHandle
{
    0.3.7 R4 - v2
    IF 0AB1: @SAMPGetPlayerIDByActorHandle 1 _ActorHandle 0@ _Returned: ID 31@
}
IF 0AA2: 31@ = loadlib "samp.dll" // GET_SAMP_BASE
THEN
    31@ += 0x26EA0C // SAMP_INFO_OFFSET[0]
    0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0 // SAMP_INFO
    IF 31@ > 0
    THEN
        31@ += 0x3DE // SAMP_POOLS_OFFSET[0]
        0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0 // SAMP_POOLS_OFFSET
        IF 31@ > 0
        THEN
            31@ += 0x4 // PLAYER_POOLS_OFFSET[0]
            0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0 // PLAYER_POOLS
            IF 31@ > 0
            THEN
                IF 003B: 0@ == $PLAYER_ACTOR // COMPARE_HANDLE_WHICH_WAS_GIVEN
                THEN
                    0A8E: 30@ = 31@ + 0x4 // LOCAL_PLAYER_ID_OFFSET[0]
                    0A8D: 28@ = read_memory 30@ size 2 virtual_protect 0 // LOCAL_PLAYER_ID
                    0AB2: RET 1 28@
                ELSE
                    0A8E: 29@ = 31@ + 0x2F3A // MAX_PLAYER_ID_STREAMED_ONLY_OFFSET[0]
                    0A8D: 29@ = read_memory 29@ size 4 virtual_protect 0 // MAX_PLAYER_ID_STREAMED_ONLY
                    FOR 28@ = 0 TO 29@ // FROM "0" TO "MAX_PLAYER_ID_STREAMED_ONLY"
                        27@ = 0x4 // SAVE VARIABLE "27@" AS DIGIT "4"
                        006A: 27@ *= 28@ // 4 * ID
                        0A8E: 26@ = 31@ + 0x1F8A // SAVE TO NEW "26@" VARIABLE "PLAYER_POOLS" + "REMOTE_PLAYER_OFFSET[0]"
                        005A: 26@ += 27@ // REMOTE_PLAYER_OFFSET + 4 * ID
                        0A8D: 26@ = read_memory 26@ size 4 virtual_protect 0 // REMOTE_PLAYER
                        IF 26@ > 0
                        THEN
                            26@ += 0x10 // PLAYER_DATA_OFFSET[0]
                            0A8D: 26@ = read_memory 26@ size 4 virtual_protect 0 // PLAYER_DATA
                            IF 26@ > 0
                            THEN
                                26@ += 0x1DD // SAMP_ACTOR_OFFSET[0]
                                0A8D: 26@ = read_memory 26@ size 4 virtual_protect 0 // SAMP_ACTOR
                                IF 26@ > 0
                                THEN
                                    26@ += 0x44 // GTA_PED_HANDLE_OFFSET[0]
                                    0A8D: 26@ = read_memory 26@ size 4 virtual_protect 0 // GTA_PED_HANDLE
                                    IF 26@ > 0
                                    THEN
                                        IF 003B: 0@ == 26@ // COMPARE_HANDLE_WHICH_WAS_GIVEN
                                        THEN
                                            0485: RETURN_TRUE
                                            0AB2: RET 1 28@
                                        END
                                    END
                                END
                            END
                        END
                    END
                END
            END
        END
    END
END
059A: RETURN_FALSE
0AB2: RET 0
 
Top