Вопросы по CLEO-скриптингу

Maxim_Renovo

Новичок
3
0
Неверное выражение 29@ = samp.base().
Одна из переменных имеет неизвестный тип, либо их типы несовместимы.
КАК ИСПРАВИТЬ?
 

urupakirill

Новичок
7
1
Добрый день)
Возникла такая проблема,суть скрипта: тебе в смс пишут знак +,получаем ID игрока,и ТПхаем его.
Как выглядит получение СМС на сервере: SMS от Tom_Krous [ID:86]: +
Но ID не считывается,вместо ID,какое бы значение ни стояло в [ID:1],оно всегда будет равно 0
Код:
{$CLEO}

0000: NOP
repeat
wait 0
until Samp.Available()
alloc 8@ 10
alloc 2@ 200
alloc 3@ 60
alloc 4@ 60
alloc 5@ 90
alloc 6@ 60
wait 5000
0AF8: samp add_message_to_chat "Sms Teleport - {FF3030}/tps" color 0xF2FF30
0AF8: samp add_message_to_chat "Created For David :3" color 0xF2FF30
0B34: samp register_client_command "tps" to_label @Noname_2
while true
wait 1000
    if
    1@ == true
    then
        0B75: samp get_chat_string 99 text_to 2@ prefix_to 3@ color_to 4@ prefix_color_to 5@
        if
        0C18: 6@ = strstr string1 2@ string2 "SMS"
        then
        0AD4: 9@ = scan_string 2@ format "[ID:%i]: +"  7@
        say "%i" 7@
        format 8@ "/tpks %i"  7@
        say 8@
        end
    end
wait 500
end
:Noname_2
if
1@ == false
then
1@ = true
0AF8: samp add_message_to_chat "Sms Teleport | {74EE28}Activated " color 0xEEE828
else
1@ = false
0AF8: samp add_message_to_chat "Sms Teleport | {74EE28}Dectivated " color 0xEEE828
end
0B43: samp cmd_ret
Help me
 
  • Нравится
Реакции: 93Region

azdsfbzxv

Новичок
73
6
так сделай чтобы искало машину по нажатию клавиши только, а не всегда
Всё уже понял. Я проверял скрипт на мото. На авто работает. Скорее всего опкод: 0204: actor $PLAYER_ACTOR near_car 27@ radius 50.050.0 sphere 0 in_car не расчитан на мотоцикл
 

k1sher

Известный
201
4
// call @tend 1 указатель потока
:tend
0@ += 20 // ip
0A9F: 30@ = current_thread_pointer
30@ += 16 // base ip
0A8D: 31@ = read_memory 30@ size 4 virtual_protect 1
000E: 31@ -= @1
0A8C: write_memory 0@ size 4 value 31@ virtual_protect 0
ret 0

:1
0a93:
Я про то как запустить клео через кансоль sf он говорит командой run но сначало нужно завершить работающее клео
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,468
run это запустить а как завершить?
0A93: end_custom_thread - применяется к текущему скрипту
0ABA: end_custom_thread_named 'BENZIN' - применяется к скрипту под названием.

Или можно использовать что-то вроде этого:
CLEO:
{$CLEO}
{$INCLUDE SF}

0001: wait 0 ms
0662: "by legend2360"
0662: "BlastHack - cheating is art"

while not SAMP.Available()
    wait 400
end

3@ = 0

0C63: register_console_command "_run" to_label @command

0BDE: pause_thread 0

:command
if 3@ <> 0
then
    log "Unloading last script..."
    0C6E: destroy_custom_thread 3@
           
    3@ = 0
    free 2@
    cmdret
end

0B35: samp 0@ = get_last_command_params
0C17: 1@ = strlen 0@
if 1@ > 0
then
    0A99: chdir "CLEO"
    if 0AAB: file_exists 0@
    then
        call @copy_file_to_memory 1 0@ to 2@
        if 2@ > 0
        then
            log "Loading %s from 0x%p..." 0@ 2@
            0C6B: 3@ = create_custom_thread_at_pointer 2@
        else
            log "Error in loading %s. Memory address: %p" 0@ 2@
        end
    end
    0A99: chdir 0
end
cmdret

:copy_file_to_memory
if 0A9A: 1@ = openfile 0@ mode "rb"
then
    0A9C: 2@ = file 1@ size
    alloc 3@ 2@
    0085: 4@ = 3@
    repeat
        0A9D: readfile 1@ size 4 to 5@
        0AC7: 6@ = var 5@ offset
        0C10: memcpy destination 3@ source 6@ size 4
        3@ += 4
    until 0AD6:   end_of_file 1@ reached
    0085: 3@ = 4@

    0A9B: closefile 1@
end
ret 1 3@

_run наименование скрипта с расширением
В идеале, чтобы не возникало потом проблем, расширение с .cs смени на другое. Это можно сделать через переименовывание файла или через директиву в Sanny Builder: {$CLEO .test}, test - новое расширение

Или ещё куда геморройный способ.
Через run запускаешь, вводишь threads и ищешь необходимый скрипт. Далее пишешь в консоль 0C6E: destroy_custom_thread 0x0123456, где 0x0123456 - pointer скрипта
 
Последнее редактирование:

k1sher

Известный
201
4
0A93: end_custom_thread - применяется к текущему скрипту
0ABA: end_custom_thread_named 'BENZIN' - применяется к скрипту под названием.

Или можно использовать что-то вроде этого:
CLEO:
{$CLEO}
{$INCLUDE SF}

0001: wait 0 ms
0662: "by legend2360"
0662: "BlastHack - cheating is art"

while not SAMP.Available()
    wait 400
end

3@ = 0

0C63: register_console_command "_run" to_label @command

0BDE: pause_thread 0

:command
if 3@ <> 0
then
    log "Unloading last script..."
    0C6E: destroy_custom_thread 3@
          
    3@ = 0
    free 2@
    cmdret
end

0B35: samp 0@ = get_last_command_params
0C17: 1@ = strlen 0@
if 1@ > 0
then
    0A99: chdir "CLEO"
    if 0AAB: file_exists 0@
    then
        call @copy_file_to_memory 1 0@ to 2@
        if 2@ > 0
        then
            log "Loading %s from 0x%p..." 0@ 2@
            0C6B: 3@ = create_custom_thread_at_pointer 2@
        else
            log "Error in loading %s. Memory address: %p" 0@ 2@
        end
    end
    0A99: chdir 0
end
cmdret

:copy_file_to_memory
if 0A9A: 1@ = openfile 0@ mode "rb"
then
    0A9C: 2@ = file 1@ size
    alloc 3@ 2@
    0085: 4@ = 3@
    repeat
        0A9D: readfile 1@ size 4 to 5@
        0AC7: 6@ = var 5@ offset
        0C10: memcpy destination 3@ source 6@ size 4
        3@ += 4
    until 0AD6:   end_of_file 1@ reached
    0085: 3@ = 4@

    0A9B: closefile 1@
end
ret 1 3@

_run наименование скрипта с расширением
В идеале, чтобы не возникало потом проблем, расширение с .cs смени на другое. Это можно сделать через переименовывание файла или через директиву в Sanny Builder: {$CLEO .test}, test - новое расширение

Или ещё куда геморройный способ.
Через run запускаешь, вводишь threads и ищешь необходимый скрипт. Далее пишешь в консоль 0C6E: destroy_custom_thread 0x0123456, где 0x0123456 - pointer скрипта
Запускаю run file. Завершаю 0ABA: end_custom_thread_named 'file' дальше run он вообще писать не хочет пишет файл не может быть открыт.