Jump to content

[CLEO] [SNIPPET] IsDialogOpen


Tupi
 Share

Recommended Posts

Prin următorul snippet puteți determina dacă există sau nu un dialog deschis.

Snippet:

:IsDialogOpen
{
    Usage: 0AB1: @IsDialogOpen 1 dialog_id 0
}
0AA2: 1@ = load_library "samp.dll" // Load library
1@ += 0x26E898
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
0A8E: 2@ = 1@ + 0x28
0A8D: 2@ = read_memory 2@ size 4 virtual_protect 0
if 2@ == 1 // Dialog is active
then
    0A8E: 3@ = 1@ + 0x30 //dialogTypeOffset
    0A8D: 3@ = read_memory 3@ size 4 virtual_protect 0
    if 0@ == -1 // Any dialog is active
    then 0485: dialog_open
    else
        if  003B:   3@ == 0@
        then 0485: dialog_open
        else 059A:  dialog_closed
        end
    end
end

 

Exemple:

{$CLEO}

0000:
repeat
wait 50
until 0AFA:

WHILE TRUE
WAIT 0

if 0AB1: @IsDialogOpen 1 dialog_ID -1 // -1 any dialog
then 
	chatmsg "Dialog is active" -1
	wait 5000
end

if 0AB1: @IsDialogOpen 1 dialog_ID 96
then 
	chatmsg "Dialog with id 96 is active" -1
	wait 5000
end

END

 

Explicația:

Snippet-ul citeste anumite adrese de memorie din libraria samp.dll și in functie de rezultatele care se obțin în urma citirii memoriei se determină dacă există un dialog activ pe ecranul jucătorului sau nu.

Acest snippet poate fi folosit intr-o multitudine de situații, când vrem să aflăm dacă există un dialog activ (cu orice ID) sau un dialog specificat (cu un anumit ID) pentru ca ulterior să ne folosim de acel dialog.

 

Orginal tutorial: CLICK

 

Edited by Tupi
Link to comment
Share on other sites

  • Tupi locked this topic
Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.