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

LaRossa

Потрачен
429
117
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Хотел сделать что бы при нажатии в диалоге "Первый пункт" рисовались линии к модели. А когда еще раз прекращало рисоваться. Помогите что не так сделал
Код:
{$CLEO}
0000:

while not Samp.Available()
wait 0
end
0B34: samp register_client_command "test" to_label @Dialog
while true
wait 0
if 0B3C: samp is_dialog_responded id 47 button 1@ list_item 3@ input_text 0
then
    if 1@ == 1
    then
          if 3@ == 0
          then
                  0af8: "Был выбран: {ffff00}Первый" -1
                      for 10@ = 0 to 4096 step 1
        if 0B51: samp 2@ = pickup_handle_by_id 10@
        then
        0A90: 2@ = 10@ * 20
        000A: 2@ += 61444
        000A: 2@ += 0@
        0A8D: 30@ = read_memory 2@ size 4 virtual_protect true
            if 0039:   3@ == 13841
            then
            0C0C: 30@ = struct 2@ offset 8 size 4
            0C0C: 4@ = struct 2@ offset 12 size 4
            0C0C: 5@ = struct 2@ offset 16 size 4
                if 00C2:   sphere_onscreen 3@ 4@ 5@ radius 5.0
                then
                0B55: convert_3D_coords 30@ 4@ 5@ to_screen 30@ 4@
                00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@
                0B55: convert_3D_coords 5@ 6@ 7@ to_screen 5@ 6@
                0B68: render draw_line_point1 5@ 6@ point2 3@ 40@ width 1 color 0xFFFFA500           
            end
        end
    end  
end
end
          end
          if 3@ == 1
          then
                  0af8: "Был выбран: {ffff00}Второй пункт" -1
          end

          if 3@ == 2
          then
                  0af8: "Был выбран: {ffff00}Третий пункт" -1
          end
    else
        0af8: "Закрыть" -1
    end
end

:Dialog
0AC8: 0@ = allocate_memory_size 64
0ad3: format_stirng 0@ = "Первый%cВторой пункт%cТретий пункт" 0xA 0xA
0B3B: samp show_dialog id 47 caption "Тест" text 0@ button_1 "Выбрать" button_2 "Закрыть" style 2
0AC9: free_allocated_memory 0@
0B43: samp cmd_ret
 
Последнее редактирование:

egor230

Участник
47
16
Подскажите, пожалуйста, уважаемые.
Как правильно пользоваться scm функцией с возвратом параметров? Ее использую, что сделать более компактным код. Делаю, скрипт меняющий оружия одного типа, по нажатию клавиши 1. В vc выбор оружия неудобный, нельзя нажать 6 и взять снайперку, как в других играх.
Решил исправить, для удобства использую SCM функция с возвратом параметров, но она не работает.
Не пойму в чем причина? Подскажите, пожалуйста.
Вот сделать часть для холодного оружия без SCM функции, она выглядит тогда слишком громоздкий код получится.
Приклепаю исходник скрипта с полным кодом, он содержит 119 строк, что очень много. С помощью SCM функции хочу сделать более удобный и читаемый код скрипта. Помогите, пожалуйста, мне.
Как правильно пользоваться scm функции с возвратом параметров? Ее использую, что сделать более компактным.

Мы передаем в call_scm_func @Fun params_count 3 параметра модель оружия, его тип, кол-во патронов, чтобы они записались в переменные 0@ 1@ 2@ и в дальнейшим их использовать в другой функции, где создается и выдается оружия игроку. Но я получаю вылет.
{$CLEO .cs}
0000:
0006: 1@ = 7
:1
wait 0
if
0AB0: key_pressed 0x31
jf @1
if
0039: 1@ == 7
jf @2
05F6: call_scm_func @Fun params_count 3 #cleaver 8 0 0@ 1@ 2@
gosub @Sab
jump @1
:2
if
0039: 1@ == 8
jf @1
05F6: call_scm_func @Fun params_count 3 #machete 9 0 0@ 1@ 2@
gosub @Sab
jump @1
:fun
repeat
wait 0
Model.Load(0@)
until Model.Available(0@)
01B2: give_actor $PLAYER_ACTOR weapon 1@ ammo 2@
Model.Destroy(0@)
0AB2: ret 3 0@ 1@ 2@
:sab
wait 900 // задержка между переключениями оружия
return
Если написать 0AB1: call_scm_func @Fun 3 0@ 1@ 2@ // var_ret 0 то переключения оружия не происходит, нужно вернуть значения переменной @1, чтоб переключить на следующее оружие.
 

Вложения

  • cold weapons.txt
    2.2 KB · Просмотры: 2

debil :))

Участник
86
19
Опкод 0С72 эмулирует нажатие клавиш на клавиатуре,но как можно сделать эмуляцию кнопок мышки?
 

DANIIL XPC

Известный
81
5
Hello, how can I do a cleo way to make me spam in 3 in 3 seconds on a section in a dialogue?
Example: on the server I order / buy and here comes buy credits, gas can, phone and more, I want when I type a buy / buy command to automatically select from / buy - buy credits or at / i give / i have info car, tow car and more, through an order I want to automatically select a car that spawes.
 

LUCHARE

Известный
Друг
545
688
Здрасте. Можно ли удалить строку, чтобы хук два раза её не чекал?
Проверяй добавление новой строки в чат, добавлена строка - продолжай работу хука. Еще можно сверять текст TimeStamp`a, и если он одинаковый не продолжать работу хука