I wanna script like that when show in chat "text" auto replay with command "/replay" someone help me to made this but this dont work can someone check and fix this for work
Code:
{$CLEO .cs}
0000: NOP
wait 8500
0AC8: 2@ = allocate_memory_size 260
0AD3: 2@ = "text" // Check / find text
0AC8: 4@ = allocate_memory_size 260
0AD3: 4@ "/replay" // CMD
while true
wait 0
if
0256: player $PLAYER_CHAR defined
then
0AC8: 0@ = allocate_memory_size 260
0AB1: @getChatEntryText 1 id 99 to 0@
0AC8: 1@ = allocate_memory_size 260
0AB1: @DeleteColorCodeFromText 4 text 0@ FirstCharacter 123 SecondCharacter 125 memory_to_store_characters_as_text 1@
if
0AB1: @IfTextContains 2 String1 1@ String2 2@ _returned: text 3@
then
0AB1: @SEND_CMD 1 Command 4@
wait 10000 // anti spam
end
end
end
:getChatEntryText
{
0AC8: 0@ = allocate_memory_size 260
0AB1: @getChatEntryText 1 id 99 to 0@
0.3.7 - R4
}
IF 0AA2: 1@ = "samp.dll"
THEN
1@ += 0x26E9F8
0A8D: 1@ readMem 1@ sz 4 vp 0
1@ += 0x132
0@ *= 0xFC
005A: 1@ += 0@
1@ += 0x20
0AA3: 1@
END
0AB2: ret 1 1@
:IfTextContains
{
0@ - the main text
1@ - piece of text to be found within the main text
}
0AB1: @strlen 1 strPtr 0@ _length 31@
0AB1: @strlen 1 strPtr 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@ _return: 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
{
Example: 0AB1: @strlen 1 string 1@ _return: 3@
In: 0@ - text;
Out: 1@ - size;
}
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@
:SEND_CMD
{
0AB1: @SEND_CMD 1 Command 3@
0.3.7 - R4
}
IF 0AA2: 2@ = "samp.dll"
THEN
0A8E: 3@ = 2@ + 0x698C0
0AA5: call 3@ num_param 1 pop 0 1@
END
0AB2: 0