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

MaHuKeH

Новичок
17
0
Код:
{$CLEO}
{$NOSOURCE}
{$INCLUDE SF}
if not 31@ = samp.Base()
then
end_thread
else
    while not samp.Available()
    wait 100
    end
end

alloc 0@ 1024
alloc 1@ 1024

while true
wait 0
    if key_down 122
        then
            while key_down 122
            wait 0
            end
                chatmsg "Откат от наркотиков активирован" -1
                    repeat
                    wait 0
                        0B75: samp get_chat_string 99 text_to 1@ prefix_to 2@ color_to 3@ prefix_color_to 4@
                        if 0C18: 0@ = strstr string1 1@ string2 "MaHuKeH достал пакетик,"
                            then
                                wait 10000
                                chatmsg "До употребления наркотиков осталось 60 секунд."    -1
                                wait 10000
                                chatmsg "До употребления наркотиков осталось 50 секунд.."   -1
                                wait 10000
                                chatmsg "До употребления наркотиков осталось 40 секунд." -1
                                wait 10000
                                chatmsg "До употребления наркотиков осталось 30 секунд."    -1
                                wait 10000
                                chatmsg "До употребления наркотиков осталось 20 секунд.."   -1
                                wait 10000
                                chatmsg "До употребления наркотиков осталось 10 секунд." -1
                                wait 10000
                                chatmsg "Откат прошел, вы можете употребить наркотики" -1
                            end
                    until key_down 122
                    chatmsg "Откат на накротики деактивирован." -1
                    while key_down 122
                    wait 0
                    end
                    end
end//while true
на F11

Братан, ты лучший. А можно как-то сделать, чтобы активация была автоматическая?
 

Избранный

Новичок
198
30
Код:
{$CLEO}
{$NOSOURCE}
{$INCLUDE SF}
if not 31@ = samp.Base()
then
end_thread
else
    while not samp.Available()
    wait 100
    end
end

alloc 0@ 1024
alloc 1@ 1024

while true
wait 0
                        0B75: samp get_chat_string 99 text_to 1@ prefix_to 2@ color_to 3@ prefix_color_to 4@
                        if 0C18: 0@ = strstr string1 1@ string2 "MaHuKeH достал пакетик,"
                            then
                                wait 10000
                                chatmsg "До употребления наркотиков осталось 60 секунд."    -1
                                wait 10000
                                chatmsg "До употребления наркотиков осталось 50 секунд.."   -1
                                wait 10000
                                chatmsg "До употребления наркотиков осталось 40 секунд." -1
                                wait 10000
                                chatmsg "До употребления наркотиков осталось 30 секунд."    -1
                                wait 10000
                                chatmsg "До употребления наркотиков осталось 20 секунд.."   -1
                                wait 10000
                                chatmsg "До употребления наркотиков осталось 10 секунд." -1
                                wait 10000
                                chatmsg "Откат прошел, вы можете употребить наркотики" -1
                            end
                            end
 

MaHuKeH

Новичок
17
0
Код:
{$CLEO}
{$NOSOURCE}
{$INCLUDE SF}
if not 31@ = samp.Base()
then
end_thread
else
    while not samp.Available()
    wait 100
    end
end

alloc 0@ 1024
alloc 1@ 1024

while true
wait 0
                        0B75: samp get_chat_string 99 text_to 1@ prefix_to 2@ color_to 3@ prefix_color_to 4@
                        if 0C18: 0@ = strstr string1 1@ string2 "MaHuKeH достал пакетик,"
                            then
                                wait 10000
                                chatmsg "До употребления наркотиков осталось 60 секунд."    -1
                                wait 10000
                                chatmsg "До употребления наркотиков осталось 50 секунд.."   -1
                                wait 10000
                                chatmsg "До употребления наркотиков осталось 40 секунд." -1
                                wait 10000
                                chatmsg "До употребления наркотиков осталось 30 секунд."    -1
                                wait 10000
                                chatmsg "До употребления наркотиков осталось 20 секунд.."   -1
                                wait 10000
                                chatmsg "До употребления наркотиков осталось 10 секунд." -1
                                wait 10000
                                chatmsg "Откат прошел, вы можете употребить наркотики" -1
                            end
                            end

Братан, чёт не работает :(
И все стало капсом

Код:
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}

//-------------MAIN---------------
if 
31@ = SAMP.Base()
jf @NONAME_25 
end_thread 
goto @NONAME_45 

:NONAME_25
   not SAMP.Available
jf @NONAME_45 
wait 100 
goto @NONAME_25 

:NONAME_45
alloc 0@ 1024 
alloc 1@ 1024 

:NONAME_61
wait 0 
if 
key_down 122 
jf @NONAME_683 

:NONAME_80
key_down 122 
jf @NONAME_102 
wait 0 
goto @NONAME_80 

:NONAME_102
chatmsg "ОТКАТ ОТ НАРКОТИКОВ АКТИВИРОВАН" -1 

:NONAME_140
wait 0 
SAMP.GetChatString(99, 1@, 2@, 3@, 4@)
if 
0C18: 0@ = strstr string1 1@ string2 "SOMEONE ДОСТАЛ ПАКЕТИК," 
jf @NONAME_610 
wait 10000 
chatmsg "ДО УПОТРЕБЛЕНИЯ НАРКОТИКОВ ОСТАЛОСЬ 60 СЕКУНД." -1 
wait 10000 
chatmsg "ДО УПОТРЕБЛЕНИЯ НАРКОТИКОВ ОСТАЛОСЬ 50 СЕКУНД.." -1 
wait 10000 
chatmsg "ДО УПОТРЕБЛЕНИЯ НАРКОТИКОВ ОСТАЛОСЬ 40 СЕКУНД." -1 
wait 10000 
chatmsg "ДО УПОТРЕБЛЕНИЯ НАРКОТИКОВ ОСТАЛОСЬ 30 СЕКУНД." -1 
wait 10000 
chatmsg "ДО УПОТРЕБЛЕНИЯ НАРКОТИКОВ ОСТАЛОСЬ 20 СЕКУНД.." -1 
wait 10000 
chatmsg "ДО УПОТРЕБЛЕНИЯ НАРКОТИКОВ ОСТАЛОСЬ 10 СЕКУНД." -1 
wait 10000 
chatmsg "ОТКАТ ПРОШЕЛ, ВЫ МОЖЕТЕ УПОТРЕБИТЬ НАРКОТИКИ" -1 

:NONAME_610
key_down 122 
jf @NONAME_140 
chatmsg "ОТКАТ НА НАКРОТИКИ ДЕАКТИВИРОВАН." -1 

:NONAME_661
key_down 122 
jf @NONAME_683 
wait 0 
goto @NONAME_661 

:NONAME_683
goto @NONAME_61
 

Zoxan_Twist

Новичок
126
29
Есть ли какие-то скрипты/программы для расшифровки dump -ов памяти в CLEO?
К примеру:
Скачал Rak Logger в результате RPС был получен dump. Каким образом можно его перевести в приемлемый для чтения вид?
 

Fake-Cop

Новичок
4
0
Почаны что не так?
Код:
{$CLEO}
0000:

repeat
wait 0
until Samp.Available()
while true
wait 0
if and
not Samp.Available()
0ab0: 99
then
0af9: "/usedrugs 14"
wait 650
end
if and
not Samp.Available()
0ab0: 110
then
0af9: "/usedrugs 6"
wait 650
end
if and
not Samp.ChatInputOpened()
0ab0: 96
then
0AF9: "/usedrugs 1"
wait 650
end
end
 

Zoxan_Twist

Новичок
126
29
Почаны что не так?
Код:
{$CLEO}
0000:

repeat
wait 0
until Samp.Available()
while true
wait 0
if and
not Samp.Available()
0ab0: 99
then
0af9: "/usedrugs 14"
wait 650
end
if and
not Samp.Available()
0ab0: 110
then
0af9: "/usedrugs 6"
wait 650
end
if and
not Samp.ChatInputOpened()
0ab0: 96
then
0AF9: "/usedrugs 1"
wait 650
end
end

Код:
{$CLEO .cs}
0000:

if not 0@ = SAMP.Base()
then
0A93: end_custom_thread
end

if
while not SAMP.Available()
    wait 1000
end

while true
    wait 0
    if 0ab0: 99
    then
        0af9: "/usedrugs 14"
        wait 650
        continue
    end
    if 0ab0: 110
    then
        0af9: "/usedrugs 6"
        wait 650
        continue
    end
    if 0ab0: 96
    then
        0AF9: "/usedrugs 1"
        wait 650
    end 
end
 
Последнее редактирование:

Zoxan_Twist

Новичок
126
29
А в чем была ошибка?
1) как видишь у тебя много лишних проверок, а именно SAMP.Available(). Эта функция проверяет загружен SAMP или нет. Её можно было сделать 1-н раз в начале скрипта
2) 0@ = SAMP.Base() проверяет запущен SAMP или Обычная GTA SA. Если 2-е значит останавливаем скрипт.
3) ошибки не искал, а сразу же написал оптимизированный код и выложил.
4) для лучшего восприятия кода пиши его лесенкой (так как у меня) так все нагляднее видно
 
  • Нравится
Реакции: Fake-Cop

01EG

Известный
Проверенный
631
345
А в чем была ошибка?
1) Проверку на загружен ли Самп, правильнее сделать 1 раз и в начале скрипта. Как ты себе представляешь, что ты играешь и Самп вдруг стал недоступным. Тебя бы сразу отключило от сервера или игра вообще крашнулась, зачем, тогда тебе проверка на это каждый раз ?
2) Ошибка в самой проверке.
CLEO:
/* ты сделал проверку не правильно.
if and
not Samp.Available() // самп НЕ загружен, вот если самп не загрузится и ты нажмешь клавишу, то у тебя бы прошла проверка и действие выполнилось, но игра бы крашнулась
0ab0: key
*/


// а если бы ты сделал
if and
0AFA: samp_is_available
0ab0:key


То вроде бы все должно было работать, если я не туплю.

P.S. В общем, можно проверять по разному, но лучше всего делать это в начале и желательно так. По крайней мере, я писал так, даже когда писал на метках и низкоуровневых проверках, просто заучил этот код.
Код:
repeat
wait 0
until 0AFA:  is_samp_available
 
Последнее редактирование модератором:

Zoxan_Twist

Новичок
126
29
А в чем была ошибка?
Ещё раз пересмотрел твой код и понял что ещё некоторые вещи не добавил когда смотрел.
Код:
{$CLEO}
0000:

repeat
    wait 0
until Samp.Available()  // Здесь ты наверное хотел написать not Samp.Available()
                        //ибо цикл продолжался бесконечно когда SAMP был успешно загружен
                        // по идее то такого кода игру просто кришит. при загрузке SAMP

while true
    wait 0
    if and
        not Samp.Available() // здесь бы хотел написать not Samp.ChatInputOpened()
                             //то бишь когда ты не вводишь команду в консоле SAMP
        0ab0: 99
    then
        0af9: "/usedrugs 14"
        wait 650
    end
    if and
        not Samp.Available() // здесь бы хотел написать not Samp.ChatInputOpened()
                             //то бишь когда ты не вводишь команду в консоле SAMP
        0ab0: 110
    then
        0af9: "/usedrugs 6"
        wait 650
    end
    if and
        not Samp.ChatInputOpened() // вот здесь все правильно но до этого скрипт просто не доходит
        0ab0: 96
    then
        0AF9: "/usedrugs 1"
        wait 650
    end
end
В итоге вот что вышло в конце:
Код:
{$CLEO}
0000:
if 8AF7: not samp 0@ = get_base     // проверяем запущен ли SAMP
then
    0A93: end_custom_thread         // если нет останавливаем скрипт чтобы не вылетела игра
end

repeat
    wait 0                          // в бесконечном цикле нужно ждать 0 ms ибо игра вылетет
until 8AFA: not is_samp_available   // если SAMP не загружен, повторяем цикл
  
while true                          // создаем бесконечный цикл
    wait 0
    if 8B21: not samp is_chat_opened// если консоль SAMP закрыта (ты не вводишь команду)
    then
        if 0ab0: 99                 // если нажата клавиша 99
        then
            0af9: "/usedrugs 14"    // отправляем команду "/usedrugs 14"
            wait 650                // ждем  650 миллисекунд
            continue                // повторяем цикл заново
        end
        if 0ab0: 110                // если нажата клавиша 110
        then
            0af9: "/usedrugs 6"     // отправляем команду "/usedrugs 6"
            wait 650                // ждем  650 миллисекунд
            continue                // повторяем цикл заново
        end
        if 0ab0: 96                 // если нажата клавиша 96
        then
            0AF9: "/usedrugs 1"     // отправляем команду "/usedrugs 1"
            wait 650                // ждем  650 миллисекунд
        end
    end                             // конец условия
end                                 // конец цикла
 
Последнее редактирование:
  • Нравится
Реакции: Fake-Cop

Zoxan_Twist

Новичок
126
29
Где найти цвета для текста?
В программах PhotoShop, PaintNet прилагается выбор цвета.
Там же можно определить код того или иного цвета.

И все стало капсом
В Sanny Builder:
Сервис -> настройки -> Форматирование -> регистр букв -> ставим галочку на "как есть", сохраняем настройки, компилируем код (тот который написан не капсом)
 
Последнее редактирование модератором: