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

romacaddy

Известный
Проверенный
235
206
дайте самый тупой пример кода, чтобы рендер опкод был активен например 3 секунды
 

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,983
дайте самый тупой пример кода, чтобы рендер опкод был активен например 3 секунды
CLEO:
{$CLEO}
0000:

WHILE TRUE   
// Тут что должно произойти до начала трёх секунд.    
    FOR 0@ = 0 TO 3000 [STEP = 1]
    0001: 0
    // Тут опкод который будет работать 3 секунды.
    END
// Тут что должно произойти после окончания трёх секунд.
END
 
  • Нравится
Реакции: romacaddy

Coghweel

Новичок
76
0
Подскажите пожалуйста, мне надо что бы скрипт отправлял на сервер кое-какую инфу (буквально одну цифру, не стиллер) Как это сделать?
 

MrAntow

Новичок
59
16
Подскажите, как можно решить такую проблему:

Есть основной код -
03A4: name_thread "Potok"

0000:NOP

repeat
wait 0
until SAMP.Available()

var
3@(5@,4i) : integer
4@(5@,4i) : integer
end

0B34: samp register_client_command "com1" to_label @com1
0B34: samp register_client_command "rel" to_label @reload_start
5@ = 0
0C6A: 3@(5@,4i) = create_custom_thread_at_label @reload
0C6C: set_thread 3@(5@,4i) local_var 1 = 0
5@ = 1
0C6A: 3@(5@,4i) = create_custom_thread_at_label @thread_1
5@ = 2
0C6A: 3@(5@,4i) = create_custom_thread_at_label @thread_2

repeat
wait 0
if 30@ == 1
then
30@ = 0
0ac8: alloc 1@ size 256
:lylka
5@ = 1
if 20@ == 0
then
0ad3: format_stirng 1@ = "{FF0000}Пункт1%c" 0xA
else
0ad3: format_stirng 1@ = "{00FF00}Пункт1%c" 0xA
end
5@ = 2
if 21@ == 0
then
0ad3: format_stirng 1@ = "%s{FF0000}Пункт2%c" 1@ 0xA
else
0ad3: format_stirng 1@ = "%s{00FF00}Пункт2%c" 1@ 0xA
end
5@ = 3
if 22@ == 0
then
0ad3: format_stirng 1@ = "%s{FF0000}Пункт3%c" 1@ 0xA
else
0ad3: format_stirng 1@ = "%s{00FF00}Пункт3%c" 1@ 0xA
end
0B3B: samp show_dialog id 45 caption "" text 1@ button_1 "Вкл/Выкл" button_2 "Закрыть" style 2
free 1@
0B49: samp set_current_dialog_list_item 7@
repeat
wait 0
if 0B3C: samp is_dialog_responded id 45 button 6@ list_item 7@ input_text 0
then
if 6@ == 1
then
// { ----------------------------- }
if 7@ == 0
then
// { -------------------------- }
5@ = 1
if 20@ == 0
then
20@ = 1
else
20@ = 0
end
// { -------------------------- }
end
// { ----------------------------- }
if 7@ == 1
then
// {-------------------------- }
5@ = 2
if 21@ == 0
then
21@ = 1
else
21@ = 0
end
// { -------------------------- }
end
if 7@ == 2
then
5@ = 3
if 22@ == 0
then
22@ = 1
else
22@ = 0
end
// { -------------------------- }
end
jump @Lylka
else
break
end
end
until false
0BA4: dialog 45 free
end
until false

:bort_pc
30@ = 1
SAMP.CmdRet()

:reload_start
5@ = 0
0C6C: set_thread 3@(5@,4i) local_var 1 = 1
SAMP.CmdRet()

:reload
wait 20
if 1@ == 1
then
0AAA: 0@ = thread 'AutoP' pointer
if
0@ > 0
then
0ABA: end_custom_thread_named 'Main'
0AF8: samp add_message_to_chat "autopilot! reloaded!" color 0xFFAACC
0A92: create_custom_thread "file.cs"
0@ = 1
1@ = 0
wait 1000
end
end
jump @reload

:thread_1
wait 0
if 0@ == 1
then
0AF8: samp add_message_to_chat "1" color //0xFFF235
wait 1000
end
jump @thread_1

:thread_2
wait 0
if 0@ == 1
then
0AF8: samp add_message_to_chat "2" color 0xFFF235//0xFF2B32
wait 1000
end
jump @thread_2

Код для перезапуска этого клео -
:reload
wait 20
if 1@ == 1
then
0AAA: 0@ = thread 'Potok' pointer
if
0@ > 0
then
0ABA: end_custom_thread_named 'Potok'
0AF8: samp add_message_to_chat "reloaded!" color 0xFFAACC
0A92: create_custom_thread "file.cs"
0@ = 1
1@ = 0
wait 1000
end
end
jump @reload

После перезапуска клео этим фрагментом кода команды этого скрипта перестают работать.В чём может быть дело?
 

hnnssy

Известный
Друг
2,684
2,762
в строке 0A92: create_custom_thread "file.cs" укажи имя скрипта, который нужно перезагружать
 

MrAntow

Новичок
59
16
Неа, перезагрузка вшита в исходный клео, но оформлена отдельным потоком через 0C6A: 3@(5@,4i) = create_custom_thread_at_label @reload
 

hnnssy

Известный
Друг
2,684
2,762
а, всё, смог в этой нечитаемой куче говна разглядеть подключение потока
 

woksonal

Известный
Проверенный
268
154
Подскажите, как можно решить такую проблему:

Есть основной код -
03A4: name_thread "Potok"

0000:NOP

repeat
wait 0
until SAMP.Available()

var
3@(5@,4i) : integer
4@(5@,4i) : integer
end

0B34: samp register_client_command "com1" to_label @com1
0B34: samp register_client_command "rel" to_label @reload_start
5@ = 0
0C6A: 3@(5@,4i) = create_custom_thread_at_label @reload
0C6C: set_thread 3@(5@,4i) local_var 1 = 0
5@ = 1
0C6A: 3@(5@,4i) = create_custom_thread_at_label @thread_1
5@ = 2
0C6A: 3@(5@,4i) = create_custom_thread_at_label @thread_2

repeat
wait 0
if 30@ == 1
then
30@ = 0
0ac8: alloc 1@ size 256
:lylka
5@ = 1
if 20@ == 0
then
0ad3: format_stirng 1@ = "{FF0000}Пункт1%c" 0xA
else
0ad3: format_stirng 1@ = "{00FF00}Пункт1%c" 0xA
end
5@ = 2
if 21@ == 0
then
0ad3: format_stirng 1@ = "%s{FF0000}Пункт2%c" 1@ 0xA
else
0ad3: format_stirng 1@ = "%s{00FF00}Пункт2%c" 1@ 0xA
end
5@ = 3
if 22@ == 0
then
0ad3: format_stirng 1@ = "%s{FF0000}Пункт3%c" 1@ 0xA
else
0ad3: format_stirng 1@ = "%s{00FF00}Пункт3%c" 1@ 0xA
end
0B3B: samp show_dialog id 45 caption "" text 1@ button_1 "Вкл/Выкл" button_2 "Закрыть" style 2
free 1@
0B49: samp set_current_dialog_list_item 7@
repeat
wait 0
if 0B3C: samp is_dialog_responded id 45 button 6@ list_item 7@ input_text 0
then
if 6@ == 1
then
// { ----------------------------- }
if 7@ == 0
then
// { -------------------------- }
5@ = 1
if 20@ == 0
then
20@ = 1
else
20@ = 0
end
// { -------------------------- }
end
// { ----------------------------- }
if 7@ == 1
then
// {-------------------------- }
5@ = 2
if 21@ == 0
then
21@ = 1
else
21@ = 0
end
// { -------------------------- }
end
if 7@ == 2
then
5@ = 3
if 22@ == 0
then
22@ = 1
else
22@ = 0
end
// { -------------------------- }
end
jump @Lylka
else
break
end
end
until false
0BA4: dialog 45 free
end
until false

:bort_pc
30@ = 1
SAMP.CmdRet()

:reload_start
5@ = 0
0C6C: set_thread 3@(5@,4i) local_var 1 = 1
SAMP.CmdRet()

:reload
wait 20
if 1@ == 1
then
0AAA: 0@ = thread 'AutoP' pointer
if
0@ > 0
then
0ABA: end_custom_thread_named 'Main'
0AF8: samp add_message_to_chat "autopilot! reloaded!" color 0xFFAACC
0A92: create_custom_thread "file.cs"
0@ = 1
1@ = 0
wait 1000
end
end
jump @reload

:thread_1
wait 0
if 0@ == 1
then
0AF8: samp add_message_to_chat "1" color //0xFFF235
wait 1000
end
jump @thread_1

:thread_2
wait 0
if 0@ == 1
then
0AF8: samp add_message_to_chat "2" color 0xFFF235//0xFF2B32
wait 1000
end
jump @thread_2

Код для перезапуска этого клео -
:reload
wait 20
if 1@ == 1
then
0AAA: 0@ = thread 'Potok' pointer
if
0@ > 0
then
0ABA: end_custom_thread_named 'Potok'
0AF8: samp add_message_to_chat "reloaded!" color 0xFFAACC
0A92: create_custom_thread "file.cs"
0@ = 1
1@ = 0
wait 1000
end
end
jump @reload

После перезапуска клео этим фрагментом кода команды этого скрипта перестают работать.В чём может быть дело?
0ABA: end_custom_thread_named 'Potok'
этот опкод у меня не работал, попробуй сделать так

// call @ThreadKill 1 0@ указатель на поток

:ThreadKill
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: end_custom_thread
 

MrAntow

Новичок
59
16
Очень странно.Опкоды в repeat..until false как-то влияют на перезапуск, но что именно вызывает проблему - не понятно
 

kuleer

Участник
86
13
Каким опкодом можно проверить стоит ли игрок на земле? именно на земле, не под текстурой
 

San6ka

Новичок
45
12
Каким опкодом можно проверить стоит ли игрок на земле? именно на земле, не под текстурой
CLEO:
04C4: store_coords_to 0@ 1@ 2@ from_actor $PLAYER_ACTOR with_offset 0.0 0.0 0.0
02CE: 3@ = ground_z_at 0@ 1@ 2@
if
    0045:   3@ == 2@
then
    log "Персонаж на земле"
else
    log "Персонаж в воздухе/под текстурой"
end
 
Последнее редактирование:
  • Нравится
Реакции: kuleer