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

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
89
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. Как исправить?