CLEO Help [REQ] SAMP takes SS after certain textdraw

CLEO related
Status
Not open for further replies.

Cornysz

Member
Joined
Jan 6, 2019
Messages
22
Reaction score
0
Hi guys, is there any mod that take SS after certain textdraw appear? My expectation is after i write /inspect [Id] , and wait the opposite to /accept inspect, it will appear a textdraw, and i want if after the textdraw appear, it will take screenshot (Or F8).

Thank you in advance
 

ItsRobinson

Active member
Joined
Nov 16, 2017
Messages
105
Reaction score
20
PHP:
{$CLEO}
0000: NOP
repeat
    wait 0
until 0AFA:

31@ = false

while true
    wait 0
    if and
        31@ == false
        0B4C: samp is_dialog_active -1 //any dialog
    then
        alloc 0@ 256
        0BD8: samp get_dialog_caption 0@ //gets the title of the dialog to 0@
        if
            0C29: $NOT_USED = stristr string1 0@ string2 "Character Health" //if title contains the sentence Character Health 
        then
            0AB1: @keyPress 2 key 119 time 100 //sends keypress of F8 for 100 ms
            31@ = true //setting this to true will stop it continously screenshotting the dialog
        else
            31@ = false //sets it back to false once it's closed  
        end
    else
        31@ = false //sets it back to false once it's closed    
    end    
end

:keyPress
// 0@ - key, 1@ - time
// Example: 0AB1: call @keyPress 2 key 0@ time 1@
if 0AA2: 2@ = load_library "User32.dll"
then
    if 0AA4: 2@ = get_proc_address "keybd_event" library 2@
    then
        0AA5: call 2@ num_params 4 pop 0 0 0 0 0@
        wait 1@
        0AA5: call 2@ num_params 4 pop 0 0 0x02 0 0@
    end
end
0AB2: ret 0

I'm presuming you're getting mistaken with textdraw, I'm pretty sure you mean dialog?

Try this, not tested it.
 

Cornysz

Member
Joined
Jan 6, 2019
Messages
22
Reaction score
0
PHP:
{$CLEO}
0000: NOP
repeat
    wait 0
until 0AFA:

31@ = false

while true
    wait 0
    if and
        31@ == false
        0B4C: samp is_dialog_active -1 //any dialog
    then
        alloc 0@ 256
        0BD8: samp get_dialog_caption 0@ //gets the title of the dialog to 0@
        if
            0C29: $NOT_USED = stristr string1 0@ string2 "Character Health" //if title contains the sentence Character Health 
        then
            0AB1: @keyPress 2 key 119 time 100 //sends keypress of F8 for 100 ms
            31@ = true //setting this to true will stop it continously screenshotting the dialog
        else
            31@ = false //sets it back to false once it's closed  
        end
    else
        31@ = false //sets it back to false once it's closed    
    end    
end

:keyPress
// 0@ - key, 1@ - time
// Example: 0AB1: call @keyPress 2 key 0@ time 1@
if 0AA2: 2@ = load_library "User32.dll"
then
    if 0AA4: 2@ = get_proc_address "keybd_event" library 2@
    then
        0AA5: call 2@ num_params 4 pop 0 0 0 0 0@
        wait 1@
        0AA5: call 2@ num_params 4 pop 0 0 0x02 0 0@
    end
end
0AB2: ret 0

I'm presuming you're getting mistaken with textdraw, I'm pretty sure you mean dialog?

Try this, not tested it.
Thank you. As parazitas said, that is dialog not textdraw. I'll try to compile that later.
 

Cornysz

Member
Joined
Jan 6, 2019
Messages
22
Reaction score
0
BTW, this cleo need sampfuncs right? Is it possible to make runable without SAMPFUNCS (normal .cs)? bcz i'm using 0.3.7 R4 ( Not supported )
Sorry for idiot question :/ , i'm still noob bout this.
 

Cornysz

Member
Joined
Jan 6, 2019
Messages
22
Reaction score
0
Sorry, didn't see the 0.3.7 R4 reply, I'll have a look later, unless someone beats me to it
Thank you bru, i'll wait for that, if that's impossible, its fine.
I wish SAMPFUNCS make another version that support 0.3.7 R4 or 0.3DL so user can use without SAMP version faker :D
 

Parazitas

God
Staff member
Joined
Jan 2, 2017
Messages
3,315
Solutions
7
Reaction score
935
Location
Lithuania
I'm little busy.
0.3.7 R* - 0.3.DL


PHP:
{$CLEO .cs}

0000:

wait 8500

0AC8: 4@ = allocate_memory_size 260
0AD3: 4@ = format "Character Health" // caption to compare

WHILE TRUE
WAIT 0

IF
0256:   player $PLAYER_CHAR defined
THEN
    0AB1: @get_samp_version_id 0 _Returned: ID 1@
    IF
    0AB1: @isDialogOpen 1 SampVersionID 1@
    THEN
        IF
        0AB1: @GetDialogCaption 1 SampVersionID 1@ _Return: caption 2@
        THEN
            0AC8: 3@ = allocate_memory_size 260
            0AB1: @DeleteColorCodeFromText 4 text 2@ FirstCharacter 123 SecondCharacter 125  memory_to_store_characters_as_text 3@
            IF
            0AB1: @IfTextContains 2 String1 3@ String2 4@ _returned: Text 5@
            THEN
                0AB1: @TakeScreenShot 1 SampVersionID 1@
                0AB1: @CloseCurrentDialogWithButton 2 SampVersionID 1@ Button 1 // 1 = Left , 0 = Right
            END
        END
    END
END

END

:get_samp_version_id
// 0AB1: @get_samp_version_id 0 _returned: id 0@
30@ = 0
IF 0AA2: 31@ = load_library "samp.dll" // IF and SET
THEN
    31@ += 0x128
    0A8D: 29@ = read_memory 31@ size 4 virtual_protect 1
    IF 29@ == 0x5542F47A
    THEN // 0.3.7 R1
        30@ = 1
    END

    IF 29@ == 0x59C30C94
    THEN // 0.3.7 R2
        30@ = 2
    END

    IF 29@ == 0x5A6A3130
    THEN // 0.3.DL
        30@ = 3
    END

    31@ -= 8 // reading samp.dll + 0x120
    0A8D: 29@ = read_memory 31@ size 4 virtual_protect 1

    IF 29@ == 0x5C0B4243
    THEN // 0.3.7 R3
        30@ = 4
    END

    IF 29@ == 0x5DD606CD
    THEN // 0.3.7 R4
        30@ = 5
    END
END
0AB2: ret 1 30@

:isDialogOpen
// 0AB1: @isDialogOpen 1 SampVersionID 0@
0AA2: 1@ = "samp.dll"
IF 0@ == 1 // 0.3.7 R1
THEN      
    0A8E: 2@ = 1@ + 0x21A0B8
END
IF 0@ == 2 // 0.3.7 R2
THEN      
    0A8E: 2@ = 1@ + 0x21A0C0
END

IF 0@ == 3 // 0.3.DL
THEN      
    0A8E: 2@ = 1@ + 0x2AC9E0
END

IF 0@ == 4 // 0.3.7 R3
THEN      
    0A8E: 2@ = 1@ + 0x26E898
END

IF 0@ == 5 // 0.3.7 R4
THEN      
    0A8E: 2@ = 1@ + 0x26E9C8
END
0A8D: 2@ = readMem 2@ sz 4 vp 0
0A8E: 2@ = 2@ + 0x28
0A8D: 2@ = readMem 2@ sz 4 vp 0
IF 2@ == 1
THEN
    0485: dialog_open
ELSE
    059A: dialog_closed
END
0AB2: ret 0

:GetDialogCaption
// 0AB1: @GetDialogCaption 1 SampVersionID 0@ _Returned: caption 1@
0AA2: 1@ = "samp.dll"
IF 0@ == 1 // 0.3.7 R1
THEN      
    0A8E: 2@ = 1@ + 0x21A0B8
END
IF 0@ == 2 // 0.3.7 R2
THEN      
    0A8E: 2@ = 1@ + 0x21A0C0
END

IF 0@ == 3 // 0.3.DL
THEN      
    0A8E: 2@ = 1@ + 0x2AC9E0
END

IF 0@ == 4 // 0.3.7 R3
THEN      
    0A8E: 2@ = 1@ + 0x26E898
END

IF 0@ == 5 // 0.3.7 R4
THEN      
    0A8E: 2@ = 1@ + 0x26E9C8
END
0A8D: 4@ = readMem 2@ sz 4 vp 0
0A8E: 5@ = 4@ + 0x28 //DialogOpenOffset
0A8D: 5@ = readMem 5@ sz 4 vp 0
IF 5@ == 1 // Dialog open
THEN
    0A8E: 3@ = 4@ + 0x40 //DialogCaptionOffset
    0485: dialog_open
    0AB2: ret 1 3@
ELSE
    059A:  dialog closed
END
0AB2: ret 0

:CloseCurrentDialogWithButton
// 0AB1: @CloseCurrentDialogWithButton 2 SampVersionID 0@ Button 1 // 1 = Left , 0 = Right
IF 0AA2: 10@ = "samp.dll"
THEN
    IF 0@ == 1 // 0.3.7 R1
    THEN
        0A8E: 11@ = 10@ + 0x21A0B8 // SAMP_DIALOG_INFO_OFFSET
        0A8D: 12@ = readMem 11@ sz 4 vp 0
        0A8E: 11@ = 10@ + 0x6C040 //SAMP_DIALOG_CLOSE
    END

    IF 0@ == 2 // 0.3.7 R2
    THEN
        0A8E: 11@ = 10@ + 0x21A0C0 // SAMP_DIALOG_INFO_OFFSET
        0A8D: 12@ = readMem 11@ sz 4 vp 0
        0A8E: 11@ = 10@ + 0x6C0F0 //SAMP_DIALOG_CLOSE
    END

    IF 0@ == 3 // 0.3.DL
    THEN
        0A8E: 11@ = 10@ + 0x2AC9E0 // SAMP_DIALOG_INFO_OFFSET
        0A8D: 12@ = readMem 11@ sz 4 vp 0
        0A8E: 11@ = 10@ + 0x700D0 //SAMP_DIALOG_CLOSE
    END

    IF 0@ == 4 // 0.3.7 R3
    THEN
        0A8E: 11@ = 10@ + 0x26E898 // SAMP_DIALOG_INFO_OFFSET
        0A8D: 12@ = readMem 11@ sz 4 vp 0
        0A8E: 11@ = 10@ + 0x6FF40 //SAMP_DIALOG_CLOSE
    END

    IF 0@ == 5 // 0.3.7 R4
    THEN
        0A8E: 11@ = 10@ + 0x26E9C8 // SAMP_DIALOG_INFO_OFFSET
        0A8D: 12@ = readMem 11@ sz 4 vp 0
        0A8E: 11@ = 10@ + 0x70660 //SAMP_DIALOG_CLOSE
    END

    0AA8: call_function_method 11@ struct 12@ num_params 1 pop 0 Button 1@ _retVal 6@
END
0AB2: 0

:TakeScreenShot
// 0AB1: @TakeScreenShot 1 SampVersionID 0@
IF 0AA2: 10@ = "samp.dll"
THEN
    IF 0@ == 1 // 0.3.7 R1
    THEN
        0A8E: 11@ = 10@ + 0x119CBC 
    END

    IF 0@ == 2 // 0.3.7 R2
    THEN
        0A8E: 11@ = 10@ + 0x119CBC
    END

    IF 0@ == 3 // 0.3.DL
    THEN
        0A8E: 11@ = 10@ + 0x16BE7C 
    END

    IF 0@ == 4 // 0.3.7 R3
    THEN
        0A8E: 11@ = 10@ + 0x12DD3C
    END

    IF 0@ == 5 // 0.3.7 R4
    THEN
        0A8E: 11@ = 10@ + 0x12DE64 
    END

    0A8C: write_memory 11@ size 4 value 1 virtual_protect 0
END
0AB2: 0

:IfTextContains
//0AB1: @IfTextContains 2 String1 0@ String2 1@
0AB1: @strlen 1 string 0@ _length 31@
0AB1: @strlen 1 string 1@ _length 30@

//initial length check (the phrase can't be longer than the main text)
if 001D:   30@ > 31@  // (int)
then
059A:  return_false
0AB2: ret 1 0
end

31@ -= 1
26@ = 0 // counter of the same chars in a row
for 29@ = 0 to 31@ // for each char of the main text  (29@ = index)
    0085: 24@ = 0@ // (int)
    005A: 24@ += 29@  // (int)
    0A8D: 28@ = read_memory 24@ size 1 virtual_protect 0

    0085: 23@ = 1@ // (int)
    005A: 23@ += 26@  // (int)
    0A8D: 27@ = read_memory 23@ size 1 virtual_protect 0

    if 003B:   28@ == 27@  // (int)
    then
    26@++
        if 002D:   26@ >= 30@  // (int)
        then
        0485:  return_true
        0062: 24@ -= 30@  // (int)
        24@ += 1
        0AB2: ret 1 24@
        end
    else
        if 26@ > 0
        then
        29@-- //check the same char again and assume it's the begining of the string but only if there was matching parts before (otherwise it would go back all the time and make infinite loop)
        end
    26@ = 0
    end
end

059A:  return_false
0AB2: ret 1 0

:DeleteColorCodeFromText
{
    0AB1: @DeleteColorCodeFromText 4 text 0@ FirstCharacter 91 SecondCharacter 93  memory_to_store_characters_as_text 1@
    In: 0@ = text , FirstCharacter , SecondCharacter
    Out: 1@ = pointer to memory where characters will be stored as text
}
5@ = FALSE // inbracket
0AB1: @strlen 1 string 0@ _length 31@
    for 30@ = 0 to 31@
        0085: 29@ = 0@ // copy pointer
        005A: 29@ += 30@  // add offset make loop
        0A8D: 28@ = read_memory 29@ size 1 virtual_protect 1 // 28@ is the ascii number representing character
        if
        003B:   28@ == 1@  // (int)
        then
            5@ = TRUE // inbracket
        end

        if
        5@ == FALSE // inbracket
        THEN
            0A8C: write_memory 3@ size 1 value 28@ virtual_protect 1
            3@ += 1 // move to next address
        END

        if
        003B:   28@ == 2@  // (int)
        then
            5@ = FALSE // inbracket
        end
    end
0A8C: write_memory 3@ size 1 value 0 virtual_protect 1 // null-termination
0AB2: ret 0

:strlen
// 0AB1: @strlen 1 string 1@ _return: size 3@
for 1@ = 0 to 1024
    0A8D: 2@ = read_memory 0@ size 1 virtual_protect 0
    if not 2@ == 0
    jf break
    0@ += 1
end
0AB2: ret 1 1@

Tutorial how you can find screenshot pointer.
 
Last edited:

Cornysz

Member
Joined
Jan 6, 2019
Messages
22
Reaction score
0
I'm little busy.
0.3.7 R* - 0.3.DL


PHP:
{$CLEO .cs}

0000:

wait 8500

0AC8: 4@ = allocate_memory_size 260
0AD3: 4@ = format "Character Health" // caption to compare

WHILE TRUE
WAIT 0

IF
0256:   player $PLAYER_CHAR defined
THEN
    0AB1: @get_samp_version_id 0 _Returned: ID 1@
    IF
    0AB1: @isDialogOpen 1 SampVersionID 1@
    THEN
        IF
        0AB1: @GetDialogCaption 1 SampVersionID 1@ _Return: caption 2@
        THEN
            0AC8: 3@ = allocate_memory_size 260
            0AB1: @DeleteColorCodeFromText 4 text 2@ FirstCharacter 123 SecondCharacter 125  memory_to_store_characters_as_text 3@
            IF
            0AB1: @IfTextContains 2 String1 3@ String2 4@ _returned: Text 5@
            THEN
                0AB1: @TakeScreenShot 1 SampVersionID 1@
                0AB1: @CloseCurrentDialogWithButton 2 SampVersionID 1@ Button 1 // 1 = Left , 0 = Right
            END
        END
    END
END

END

:get_samp_version_id
// 0AB1: @get_samp_version_id 0 _returned: id 0@
30@ = 0
IF 0AA2: 31@ = load_library "samp.dll" // IF and SET
THEN
    31@ += 0x128
    0A8D: 29@ = read_memory 31@ size 4 virtual_protect 1
    IF 29@ == 0x5542F47A
    THEN // 0.3.7 R1
        30@ = 1
    END

    IF 29@ == 0x59C30C94
    THEN // 0.3.7 R2
        30@ = 2
    END

    IF 29@ == 0x5A6A3130
    THEN // 0.3.DL
        30@ = 3
    END

    31@ -= 8 // reading samp.dll + 0x120
    0A8D: 29@ = read_memory 31@ size 4 virtual_protect 1

    IF 29@ == 0x5C0B4243
    THEN // 0.3.7 R3
        30@ = 4
    END

    IF 29@ == 0x5DD606CD
    THEN // 0.3.7 R4
        30@ = 5
    END
END
0AB2: ret 1 30@

:isDialogOpen
// 0AB1: @isDialogOpen 1 SampVersionID 0@
0AA2: 1@ = "samp.dll"
IF 0@ == 1 // 0.3.7 R1
THEN      
    0A8E: 2@ = 1@ + 0x21A0B8
END
IF 0@ == 2 // 0.3.7 R2
THEN      
    0A8E: 2@ = 1@ + 0x21A0C0
END

IF 0@ == 3 // 0.3.DL
THEN      
    0A8E: 2@ = 1@ + 0x2AC9E0
END

IF 0@ == 4 // 0.3.7 R3
THEN      
    0A8E: 2@ = 1@ + 0x26E898
END

IF 0@ == 5 // 0.3.7 R4
THEN      
    0A8E: 2@ = 1@ + 0x26E9C8
END
0A8D: 2@ = readMem 2@ sz 4 vp 0
0A8E: 2@ = 2@ + 0x28
0A8D: 2@ = readMem 2@ sz 4 vp 0
IF 2@ == 1
THEN
    0485: dialog_open
ELSE
    059A: dialog_closed
END
0AB2: ret 0

:GetDialogCaption
// 0AB1: @GetDialogCaption 1 SampVersionID 0@ _Returned: caption 1@
0AA2: 1@ = "samp.dll"
IF 0@ == 1 // 0.3.7 R1
THEN      
    0A8E: 2@ = 1@ + 0x21A0B8
END
IF 0@ == 2 // 0.3.7 R2
THEN      
    0A8E: 2@ = 1@ + 0x21A0C0
END

IF 0@ == 3 // 0.3.DL
THEN      
    0A8E: 2@ = 1@ + 0x2AC9E0
END

IF 0@ == 4 // 0.3.7 R3
THEN      
    0A8E: 2@ = 1@ + 0x26E898
END

IF 0@ == 5 // 0.3.7 R4
THEN      
    0A8E: 2@ = 1@ + 0x26E9C8
END
0A8D: 4@ = readMem 2@ sz 4 vp 0
0A8E: 5@ = 4@ + 0x28 //DialogOpenOffset
0A8D: 5@ = readMem 5@ sz 4 vp 0
IF 5@ == 1 // Dialog open
THEN
    0A8E: 3@ = 4@ + 0x40 //DialogCaptionOffset
    0485: dialog_open
    0AB2: ret 1 3@
ELSE
    059A:  dialog closed
END
0AB2: ret 0

:CloseCurrentDialogWithButton
// 0AB1: @CloseCurrentDialogWithButton 2 SampVersionID 0@ Button 1 // 1 = Left , 0 = Right
IF 0AA2: 10@ = "samp.dll"
THEN
    IF 0@ == 1 // 0.3.7 R1
    THEN
        0A8E: 11@ = 10@ + 0x21A0B8 // SAMP_DIALOG_INFO_OFFSET
        0A8D: 12@ = readMem 11@ sz 4 vp 0
        0A8E: 11@ = 10@ + 0x6C040 //SAMP_DIALOG_CLOSE
    END

    IF 0@ == 2 // 0.3.7 R2
    THEN
        0A8E: 11@ = 10@ + 0x21A0C0 // SAMP_DIALOG_INFO_OFFSET
        0A8D: 12@ = readMem 11@ sz 4 vp 0
        0A8E: 11@ = 10@ + 0x6C0F0 //SAMP_DIALOG_CLOSE
    END

    IF 0@ == 3 // 0.3.DL
    THEN
        0A8E: 11@ = 10@ + 0x2AC9E0 // SAMP_DIALOG_INFO_OFFSET
        0A8D: 12@ = readMem 11@ sz 4 vp 0
        0A8E: 11@ = 10@ + 0x700D0 //SAMP_DIALOG_CLOSE
    END

    IF 0@ == 4 // 0.3.7 R3
    THEN
        0A8E: 11@ = 10@ + 0x26E898 // SAMP_DIALOG_INFO_OFFSET
        0A8D: 12@ = readMem 11@ sz 4 vp 0
        0A8E: 11@ = 10@ + 0x6FF40 //SAMP_DIALOG_CLOSE
    END

    IF 0@ == 5 // 0.3.7 R4
    THEN
        0A8E: 11@ = 10@ + 0x26E9C8 // SAMP_DIALOG_INFO_OFFSET
        0A8D: 12@ = readMem 11@ sz 4 vp 0
        0A8E: 11@ = 10@ + 0x70660 //SAMP_DIALOG_CLOSE
    END

    0AA8: call_function_method 11@ struct 12@ num_params 1 pop 0 Button 1@ _retVal 6@
END
0AB2: 0

:TakeScreenShot
// 0AB1: @TakeScreenShot 1 SampVersionID 0@
IF 0AA2: 10@ = "samp.dll"
THEN
    IF 0@ == 1 // 0.3.7 R1
    THEN
        0A8E: 11@ = 10@ + 0x119CBC 
    END

    IF 0@ == 2 // 0.3.7 R2
    THEN
        0A8E: 11@ = 10@ + 0x119CBC
    END

    IF 0@ == 3 // 0.3.DL
    THEN
        0A8E: 11@ = 10@ + 0x16BE7C 
    END

    IF 0@ == 4 // 0.3.7 R3
    THEN
        0A8E: 11@ = 10@ + 0x12DD3C
    END

    IF 0@ == 5 // 0.3.7 R4
    THEN
        0A8E: 11@ = 10@ + 0x12DE64 
    END

    0A8C: write_memory 11@ size 4 value 1 virtual_protect 0
END
0AB2: 0

:IfTextContains
//0AB1: @IfTextContains 2 String1 0@ String2 1@
0AB1: @strlen 1 string 0@ _length 31@
0AB1: @strlen 1 string 1@ _length 30@

//initial length check (the phrase can't be longer than the main text)
if 001D:   30@ > 31@  // (int)
then
059A:  return_false
0AB2: ret 1 0
end

31@ -= 1
26@ = 0 // counter of the same chars in a row
for 29@ = 0 to 31@ // for each char of the main text  (29@ = index)
    0085: 24@ = 0@ // (int)
    005A: 24@ += 29@  // (int)
    0A8D: 28@ = read_memory 24@ size 1 virtual_protect 0

    0085: 23@ = 1@ // (int)
    005A: 23@ += 26@  // (int)
    0A8D: 27@ = read_memory 23@ size 1 virtual_protect 0

    if 003B:   28@ == 27@  // (int)
    then
    26@++
        if 002D:   26@ >= 30@  // (int)
        then
        0485:  return_true
        0062: 24@ -= 30@  // (int)
        24@ += 1
        0AB2: ret 1 24@
        end
    else
        if 26@ > 0
        then
        29@-- //check the same char again and assume it's the begining of the string but only if there was matching parts before (otherwise it would go back all the time and make infinite loop)
        end
    26@ = 0
    end
end

059A:  return_false
0AB2: ret 1 0

:DeleteColorCodeFromText
{
    0AB1: @DeleteColorCodeFromText 4 text 0@ FirstCharacter 91 SecondCharacter 93  memory_to_store_characters_as_text 1@
    In: 0@ = text , FirstCharacter , SecondCharacter
    Out: 1@ = pointer to memory where characters will be stored as text
}
5@ = FALSE // inbracket
0AB1: @strlen 1 string 0@ _length 31@
    for 30@ = 0 to 31@
        0085: 29@ = 0@ // copy pointer
        005A: 29@ += 30@  // add offset make loop
        0A8D: 28@ = read_memory 29@ size 1 virtual_protect 1 // 28@ is the ascii number representing character
        if
        003B:   28@ == 1@  // (int)
        then
            5@ = TRUE // inbracket
        end

        if
        5@ == FALSE // inbracket
        THEN
            0A8C: write_memory 3@ size 1 value 28@ virtual_protect 1
            3@ += 1 // move to next address
        END

        if
        003B:   28@ == 2@  // (int)
        then
            5@ = FALSE // inbracket
        end
    end
0A8C: write_memory 3@ size 1 value 0 virtual_protect 1 // null-termination
0AB2: ret 0

:strlen
// 0AB1: @strlen 1 string 1@ _return: size 3@
for 1@ = 0 to 1024
    0A8D: 2@ = read_memory 0@ size 1 virtual_protect 0
    if not 2@ == 0
    jf break
    0@ += 1
end
0AB2: ret 1 1@

Tutorial how you can find screenshot pointer.

Well, tbh, i dont understand anything about that LMAO , I'm still new about coding or etc, maybe you can make it simpler or give me the conclusion?
 

Cornysz

Member
Joined
Jan 6, 2019
Messages
22
Reaction score
0
This was made for all existing samp versions.
Big thanks to you, made me that very long script! :D
But, after i compiled all this script, the result is successful, no error or anything, but after i try in the server, sadly the result is nothing worked. Is the script need something to be changed? And about your youtube video, is that more information or material in the script?
 

Cornysz

Member
Joined
Jan 6, 2019
Messages
22
Reaction score
0
Finally, work! Thank you very much.
After the dialog appear, it takes SS perfectly (checked in SAMP ss folder), but after it, the dialog disappear (closed), What part should i remove from the script to make the dialog does not dissapear after takes SS? Thank you.
 

Parazitas

God
Staff member
Joined
Jan 2, 2017
Messages
3,315
Solutions
7
Reaction score
935
Location
Lithuania
Finally, work! Thank you very much.
After the dialog appear, it takes SS perfectly (checked in SAMP ss folder), but after it, the dialog disappear (closed), What part should i remove from the script to make the dialog does not dissapear after takes SS? Thank you.

0AB1: @CloseCurrentDialogWithButton 2 SampVersionID 1@ Button 1 // 1 = Left , 0 = Right
 
Status
Not open for further replies.
Top