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

Dark_Knight

Me, me and me.
Друг
4,062
2,078
Данный опкод не поддерживает сканирование на строку. Совет. Начинай кодить на луа.
 

vadimka0216

Известный
38
63
Хочу реализовать хотя бы вывод текста из диалогового окна типа "DIALOG_STYLE_LIST" в текстовый документ "txt".
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}

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

//-------------MAIN---------------
0000: NOP

var
0@: array 50 of longstring
end


:Noname_2
0001: wait 0 ms
00D6: if
0B4C: samp is_dialog_active 401
004D: jump_if_false @Noname_2
0A9A: 20@ = openfile "Cleo\TextDialog.txt" mode "wt" // IF and SET
0006: 1@ = 0
0002: jump @Noname_66

:Noname_66
0001: wait 0 ms
00D6: if and
0B4C: samp is_dialog_active 401
8039: not 1@ == 50
004D: jump_if_false @Noname_141
0B5B: samp get_listbox_item 1@ text_to 0@(1@,50v)
0AD9: write_formatted_text "%s %c" in_file 20@ 0@(1@,50v) 10
000A: 1@ += 1
0002: jump @Noname_66

:Noname_141
0A9B: closefile 20@

:Noname_146
0001: wait 0 ms
00D6: if
0B4C: samp is_dialog_active 401
004D: jump_if_false @Noname_2
0002: jump @Noname_146
Попытался сделать массив размера 50 для своего удобства,видимо,зря. Выдает ошибку, когда открываю диалог. окно "401". В чем проблема? Если же сделать переменную "0@" не массивом,а вот
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP

:Noname_4
0001: wait 0 ms
00D6: if
0B4C: samp is_dialog_active 401
004D: jump_if_false @Noname_4
0A9A: 20@ = openfile "Cleo\TextDialog.txt" mode "wt" // IF and SET
0AC8: 0@ = allocate_memory_size 256
0006: 1@ = 0
0002: jump @Noname_76

:Noname_76
0001: wait 0 ms
00D6: if and
0B4C: samp is_dialog_active 401
8039: not 1@ == 50
004D: jump_if_false @Noname_143
0B5B: samp get_listbox_item 1@ text_to 0@
0AD9: write_formatted_text "%s %c" in_file 20@ 0@ 10
000A: 1@ += 1
0002: jump @Noname_76

:Noname_143
0AC9: free_allocated_memory 0@
0A9B: closefile 20@

:Noname_153
0001: wait 0 ms
00D6: if
0B4C: samp is_dialog_active 401
004D: jump_if_false @Noname_4
0002: jump @Noname_153
, то выдает строки от 1 до 50 таким образом: screen. Если же использовать оппкод "0BD7: samp get_dialog_text 0@" вместо "0B5B: ...", то в файл запишется следующая информация: screen2 (часть заголовка и только первая строка). Кто может поправить код, чтобы скрипт выводил всю информацию из текста диалога в текстовый файл? Желательно, построчно и с помощью массива.
 
  • Нравится
Реакции: executor_lzt

LaRossa

Потрачен
429
117
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Подскажите опкод что бы узнавать какой у меня скин.
 

Moonlight_Ru

Известный
66
21
Как сравнивать переменные
Пример
1@ == 2@
Спасибо за ранее)

003B: 18@ == 21@ // (int)
0045: 85@ == 69@ // (float)

Используй сочетание клавиш Ctrl + Alt + 2 в Санни Билдере для поиска нужных тебе опкодов.

14890839.png
 

C&J

Известный
41
22
Ребята,как можно в CLEO узнать ID объекта нацепленный на игрока ? через функций (Pawn) SetPlayerAttachedObject и AttachObjectToPlayer
 

Moonlight_Ru

Известный
66
21
Апну, может кто-нибудь всё-таки сможет помочь :)
Заранее спасибо.

Вот решил ВХ написать и привязать ID скинов к определённым фракциям сервера, на котором я играю, чтобы писать над игроком в какой он фракции состоит. Вот только код мой почему-то работает не нормально, а точнее ФПС опускается до 1-2 кадров в 5 секунд, что я не так сделал, помогите разобраться :)

Код:
{$CLEO}

0000:

:start
wait 0
0ADC: test_cheat "123"
jf @start
0AC8: 11@ = allocate_memory_size 128
0B6D: render 10@ = create_font "Comic Sans MS" height 8 flags 5

:wall_start
wait 0
0006: 0@ = 0

:wall_main
0B23: samp is_player_connected 0@
jf @wall_c
0B20: samp 1@ = actor_handle_by_samp_player_id 0@
056D: actor 1@ defined
jf @wall_c
02CB: actor 1@ bounding_sphere_visible
jf @wall_c
0665: get_actor 1@ model_to 2@
0AD3: 11@ = format "%d" 2@
04C4: store_coords_to 3@ 4@ 5@ from_actor 1@ with_offset 0.0 0.0 0.0
0B55: convert_3D_coords 3@ 4@ 5@ to_screen 3@ 4@
0B6F: render font 10@ draw_text 11@ pos 3@ 4@ color -1
// Ошибка, видимо, где-то в этих трёх строках, т.к. если просто выводить
// информацию о скине игрока в чат, то никаких лагов не возникает.

:wall_c
000A: 0@ += 1
0019: 0@ > 999
jf @wall_main
0ADC: test_cheat "123"
jf @wall_start
jump @start
 

Immunity

Активный
210
44
Впихните строку для того, чтобы сменить шрифт цифр, которые будут показываться, пожалуйста)
Заранее спасибо :)

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

//-------------MAIN---------------
0000: NOP
0001: wait 0 ms
03F0: enable_text_draw 1

:Noname_A
0001: wait 0 ms
0A8D: 3@ = read_memory 12216169 size 1 virtual_protect 0
00D6: if and
0039:   3@ == 1
02CB:   actor $PLAYER_ACTOR bounding_sphere_visible
0256:   player $PLAYER_ACTOR defined
004D: jump_if_false @Noname_16C
0226: 1@ = actor $PLAYER_ACTOR health
04DD: 2@ = actor $PLAYER_ACTOR armour
00D6: if
0019:   1@ > 0
004D: jump_if_false @Noname_BF
00D6: if
002B:   25 >= 1@
004D: jump_if_false @Noname_89
0006: 28@ = 255
0006: 29@ = 0
0006: 30@ = 0
0002: jump @Noname_9F

:Noname_89
0006: 28@ = 204
0006: 29@ = 205
0006: 30@ = 0

:Noname_9F
0AB1: call_scm_func @Noname_2E0 6 576.5 66.0 1@ 28@ 29@ 30@

:Noname_BF
00D6: if
0AB1: call_scm_func @Noname_328 0 0@
004D: jump_if_false @Noname_16C
0AB1: call_scm_func @Noname_173 7 577.0 59.5 0@ 58.0 5.0 4.0 0
0092: 0@ = float 0@ to_integer
00D6: if
002B:   25 >= 0@
004D: jump_if_false @Noname_136
0006: 28@ = 0
0006: 29@ = 0
0006: 30@ = 255
0002: jump @Noname_14C

:Noname_136
0006: 28@ = 0
0006: 29@ = 0
0006: 30@ = 255

:Noname_14C
0AB1: call_scm_func @Noname_2E0 6 576.5 55.0 0@ 28@ 29@ 30@

:Noname_16C
0002: jump @Noname_A

:Noname_173
00D6: if
0039:   6@ == 1
004D: jump_if_false @Noname_22A
0AF0: 14@ = get_int_from_ini_file "cleo\sb.ini" section "MAIN" key "R"
0AF0: 15@ = get_int_from_ini_file "cleo\sb.ini" section "MAIN" key "G"
0AF0: 16@ = get_int_from_ini_file "cleo\sb.ini" section "MAIN" key "B"
0AF0: 17@ = get_int_from_ini_file "cleo\sb.ini" section "MAIN" key "2R"
0AF0: 18@ = get_int_from_ini_file "cleo\sb.ini" section "MAIN" key "2G"
0AF0: 19@ = get_int_from_ini_file "cleo\sb.ini" section "MAIN" key "2B"

:Noname_22A
0007: 13@ = 100.0
0073: 13@ /= 3@ // (float)
0073: 2@ /= 13@ // (float)
0087: 11@ = 3@ // (float)
0087: 12@ = 4@ // (float)
005B: 11@ += 5@ // (float)
005B: 12@ += 5@ // (float)
038E: draw_box_position 0@ 1@ size 11@ 12@ RGBA 0 0 0 255
038E: draw_box_position 0@ 1@ size 3@ 4@ RGBA 17@ 18@ 19@ 255
0087: 10@ = 2@ // (float)
0017: 10@ /= 2.0
0017: 3@ /= 2.0
005B: 0@ += 10@ // (float)
0063: 0@ -= 3@ // (float)
038E: draw_box_position 0@ 1@ size 2@ 4@ RGBA 14@ 15@ 16@ 255
0AB2: ret 0

:Noname_2E0
0349: set_text_draw_font 1
0342: set_text_draw_centered 1
033F: set_text_draw_letter_size 0.3 0.9
081C: draw_text_outline 1 RGBA 0 0 0 255
0340: set_text_draw_RGBA 3@ 4@ 5@ 255
045A: draw_text_1number 0@ 1@ GXT 'NUMBER' number 2@  // ~1~
0AB2: ret 0

:Noname_328
0A8D: 0@ = read_memory 12045748 size 4 virtual_protect 0
0017: 0@ /= 31.47
000B: 0@ += 4.0
0013: 0@ *= 0.9615384
0A8D: 1@ = read_memory 12045792 size 4 virtual_protect 0
0017: 1@ /= 39.97
00D6: if and
0021:   1@ > 99.0
8965:   not actor $PLAYER_ACTOR swimming
80DF:   not actor $PLAYER_ACTOR driving
004D: jump_if_false @Noname_394
0485:   return_true
0002: jump @Noname_396

:Noname_394
059A:   return_false

:Noname_396
0AB2: ret 1 0@
 

samp is meme

Активный
183
63
Впихните строку для того, чтобы сменить шрифт цифр, которые будут показываться, пожалуйста)
Заранее спасибо :)

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

//-------------MAIN---------------
0000: NOP
0001: wait 0 ms
03F0: enable_text_draw 1

:Noname_A
0001: wait 0 ms
0A8D: 3@ = read_memory 12216169 size 1 virtual_protect 0
00D6: if and
0039:   3@ == 1
02CB:   actor $PLAYER_ACTOR bounding_sphere_visible
0256:   player $PLAYER_ACTOR defined
004D: jump_if_false @Noname_16C
0226: 1@ = actor $PLAYER_ACTOR health
04DD: 2@ = actor $PLAYER_ACTOR armour
00D6: if
0019:   1@ > 0
004D: jump_if_false @Noname_BF
00D6: if
002B:   25 >= 1@
004D: jump_if_false @Noname_89
0006: 28@ = 255
0006: 29@ = 0
0006: 30@ = 0
0002: jump @Noname_9F

:Noname_89
0006: 28@ = 204
0006: 29@ = 205
0006: 30@ = 0

:Noname_9F
0AB1: call_scm_func @Noname_2E0 6 576.5 66.0 1@ 28@ 29@ 30@

:Noname_BF
00D6: if
0AB1: call_scm_func @Noname_328 0 0@
004D: jump_if_false @Noname_16C
0AB1: call_scm_func @Noname_173 7 577.0 59.5 0@ 58.0 5.0 4.0 0
0092: 0@ = float 0@ to_integer
00D6: if
002B:   25 >= 0@
004D: jump_if_false @Noname_136
0006: 28@ = 0
0006: 29@ = 0
0006: 30@ = 255
0002: jump @Noname_14C

:Noname_136
0006: 28@ = 0
0006: 29@ = 0
0006: 30@ = 255

:Noname_14C
0AB1: call_scm_func @Noname_2E0 6 576.5 55.0 0@ 28@ 29@ 30@

:Noname_16C
0002: jump @Noname_A

:Noname_173
00D6: if
0039:   6@ == 1
004D: jump_if_false @Noname_22A
0AF0: 14@ = get_int_from_ini_file "cleo\sb.ini" section "MAIN" key "R"
0AF0: 15@ = get_int_from_ini_file "cleo\sb.ini" section "MAIN" key "G"
0AF0: 16@ = get_int_from_ini_file "cleo\sb.ini" section "MAIN" key "B"
0AF0: 17@ = get_int_from_ini_file "cleo\sb.ini" section "MAIN" key "2R"
0AF0: 18@ = get_int_from_ini_file "cleo\sb.ini" section "MAIN" key "2G"
0AF0: 19@ = get_int_from_ini_file "cleo\sb.ini" section "MAIN" key "2B"

:Noname_22A
0007: 13@ = 100.0
0073: 13@ /= 3@ // (float)
0073: 2@ /= 13@ // (float)
0087: 11@ = 3@ // (float)
0087: 12@ = 4@ // (float)
005B: 11@ += 5@ // (float)
005B: 12@ += 5@ // (float)
038E: draw_box_position 0@ 1@ size 11@ 12@ RGBA 0 0 0 255
038E: draw_box_position 0@ 1@ size 3@ 4@ RGBA 17@ 18@ 19@ 255
0087: 10@ = 2@ // (float)
0017: 10@ /= 2.0
0017: 3@ /= 2.0
005B: 0@ += 10@ // (float)
0063: 0@ -= 3@ // (float)
038E: draw_box_position 0@ 1@ size 2@ 4@ RGBA 14@ 15@ 16@ 255
0AB2: ret 0

:Noname_2E0
0349: set_text_draw_font 1
0342: set_text_draw_centered 1
033F: set_text_draw_letter_size 0.3 0.9
081C: draw_text_outline 1 RGBA 0 0 0 255
0340: set_text_draw_RGBA 3@ 4@ 5@ 255
045A: draw_text_1number 0@ 1@ GXT 'NUMBER' number 2@  // ~1~
0AB2: ret 0

:Noname_328
0A8D: 0@ = read_memory 12045748 size 4 virtual_protect 0
0017: 0@ /= 31.47
000B: 0@ += 4.0
0013: 0@ *= 0.9615384
0A8D: 1@ = read_memory 12045792 size 4 virtual_protect 0
0017: 1@ /= 39.97
00D6: if and
0021:   1@ > 99.0
8965:   not actor $PLAYER_ACTOR swimming
80DF:   not actor $PLAYER_ACTOR driving
004D: jump_if_false @Noname_394
0485:   return_true
0002: jump @Noname_396

:Noname_394
059A:   return_false

:Noname_396
0AB2: ret 1 0@
render нужно добавлять.
 

samp is meme

Активный
183
63
Я новичок и решил поинтересоваться, как узнать координаты на экране, для написания диалогов в клео. Если я плохо обьяснил, то вот пример "pos_XY 5 10 size 50 20", мне нужно другое место на экране, как узнать координаты этого места?)
Смотря какое разрешение в меню, аля если 800x600 то центр будет в 400 300
 

iTz_WEEZY

Известный
298
85
Gaspar Pierce

CLEO:
{$CLEO}
0B34: samp register_client_command "getcur" to_label @GetCur

WHILE TRUE
WAIT 0
    IF 0@ == 1
    THEN 0B8D: samp set_cursor_mode 2
    REPEAT
    WAIT 0
        IF 0B8C:    samp is_cursor_active
        THEN
            0B5E: get_cursor_pos 1@ 2@
            0AD1: show_formatted_text_highpriority "%d~N~%d" time 1000 1@ 2@
        ELSE 0B8D: samp set_cursor_mode 2
        END
    UNTIL 0@ == 0
    0B8D: samp set_cursor_mode 0
    END
END

:GetCur
0B12: 0@ = 0@ XOR 1
0B43: samp cmd_ret
 

Apostop

Новичок
3
0
Ребят, хелпаните, когда я вписываю в диалог цифры, перед которыми стоит ноль, например 01,02 и тд.. в чат он выводит 1,2. Как исправить?