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

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

MrAntow

Новичок
59
16
В общем проблема была с массивами КЛЕО 4 - не юзайте эту парашу, массивы SF вам в помощь.
 

stfbee22

Известный
69
3
Пацаны, а реально ли создать иное клео
Грубо говоря фейк убийство иного игрока

Я убиваю игрока со снайперской винтовки и мне выдает желтым цветом надпись
Наёмный убийца activej выполнил контракт на (здесь ник того, которого я убил) за 10000$ 0xFFFF00
Желательно, чтобы клео реально было активировать/деактивировать любой командой)

Если такое реально возможно, может найдется тот, который замутит данное клео?)
 

LaRossa

Потрачен
429
117
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как сменить активацию на F5. И что бы звук был при активации. Помогите.
{$CLEO .cs}
{$INCLUDE SF}
if 8AF7: get_samp_base_to 0@
then 0A93: end_custom_thread
end

repeat
wait 0
until 0AFA: is_samp_structures_available
0B34: "cshake" @cmd
30@ = 0

0BE2: raknet setup_outcoming_packet_hook @Hook

while true
wait 0
end


:cmd
0B12: 30@ = 30@ xor true
samp.CmdRet()


:hook
0BE5: raknet 0@ = get_hook_param 1
if and
0@ == PACKET_AIM_SYNC
30@ == true
then
0BE5: raknet 1@ = get_hook_param 0
0AC8: 2@ = allocate_memory_size 32
0BE8: raknet bit_stream 1@ read_array 2@ size 32
0C0D: struct 2@ offset 1 size 1 = 34 // cam mode
0BEA: raknet bit_stream 1@ reset_write_pointer
0B40: raknet bit_stream 1@ write 2@ type 5 size 32
0AC9: free_allocated_memory 2@
end
0BE0: raknet hook_ret 1
 

MrAntow

Новичок
59
16
Замени
while true
wait 0
end
на
while true
wait 0
if 0AB0: key_pressed 116
then
30@ = true
end
end
 

kuleer

Участник
86
13
У этого опкода есть погрешность, к примеру если выставить парметры так 0.0 5.0 0.0, то он тпшнится прямо на 5, и ещё немного вниз уйдёт(погрешность), как можно эту погрешность убрать?
0407: store_coords_to 1@ 2@ 3@ from_car $car with_offset 0.0 0.0 0.0
 

MrAntow

Новичок
59
16
Ребят, помогите решить проблему

Весь код (лучше скопировать в отдельный текстовый редактор, здесь сбиваются отступы):

CLEO:
0C6A: 4@ = create_custom_thread_at_label @thread_0
0AC8: 5@ = allocate_memory_size 256  // указатели на потоки наших функций!
0AC8: 0@ = allocate_memory_size 256  // статус работы наших функций!
0C6A: 4@ = create_custom_thread_at_label @thread_1
0C6C: set_thread 4@ local_var 1 = 0
0C0F: array 5@ element 0 = 4@
0C6A: 4@ = create_custom_thread_at_label @thread_2
0C6C: set_thread 4@ local_var 1 = 0
0C0F: array 5@ element 1 = 4@
0C6A: 4@ = create_custom_thread_at_label @thread_3
0C6C: set_thread 4@ local_var 1 = 0
0C0F: array 5@ element 2 = 4@
0C0F: array 0@ element 0 = 0
0C0F: array 0@ element 1 = 0
0C0F: array 0@ element 2 = 0

repeat
wait 0
if 04A9:   actor $PLAYER_ACTOR driving_heli
then
  if //or
//  30@ == 1
  0ADC:   test_cheat "jk"
  then
//    30@ = 0             
    :lylka
    0C0E: 4@ = array 0@ element 0
    0ac8: alloc 1@ size 256                          
    if 4@ == 0
    then                                      
      0ad3: format_stirng 1@ = "{FF0000}Пункт1%c" 0xA
    else
      0ad3: format_stirng 1@ = "{00FF00}Пункт1%c" 0xA
    end
    0C0E: 4@ = array 0@ element 1
    if 4@ == 0
    then
      0ad3: format_stirng 1@ = "%s{FF0000}Пункт2%c" 1@ 0xA
    else
      0ad3: format_stirng 1@ = "%s{00FF00}Пункт2%c" 1@ 0xA
    end
    0C0E: 4@ = array 0@ element 2
    if 4@ == 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 // Логгируем нажатие кнопки диалога с идом 45
      then
        if 6@ == 1             
        then
          chatmsg "%d" 7@
          if 7@ == 0
          then
              0C0E: 4@ = array 0@ element 7@                       
              if 4@ == 0
              then               
                0C0F: array 0@ element 7@ = 1
                0C0E: 25@ = array 5@ element 7@
                0C6C: set_thread 25@ local_var 0 = 1
              else               
                0C0F: array 0@ element 7@ = 0
                0C0E: 25@ = array 5@ element 7@
                0C6C: set_thread 25@ local_var 0 = 0                
              end
          end                      
          if 7@ == 1
          then                                                                                   
              0C0E: 4@ = array 0@ element 7@
              if 4@ == 0    
              then
                0C0F: array 0@ element 7@ = 1
                0C0E: 25@ = array 5@ element 7@
                0C6C: set_thread 25@ local_var 0 = 1
              else               
                0C0F: array 0@ element 7@ = 0
                0C0E: 25@ = array 5@ element 7@
                0C6C: set_thread 25@ local_var 0 = 0
              end
          end
          if 7@ == 2
          then
              0C0E: 4@ = array 0@ element 7@
              if 4@ == 0    
              then
                0C0F: array 0@ element 7@ = 1
                0C0E: 25@ = array 5@ element 7@
                0C6C: set_thread 25@ local_var 0 = 1
              else               
                0C0F: array 0@ element 7@ = 0
                0C0E: 25@ = array 5@ element 7@
                0C6C: set_thread 25@ local_var 0 = 0
              end
          end
          jump @lylka
        else
          break
        end
      end
    until false
    0BA4: dialog 45 free
  end
end
until false

Работает криво - при повторном вызове (test cheat "jk") диалога выключается thread_1, с другими потоками такой проблемы нет.Их статусы остаются, статус первого потока - нет, но при этом пока диалог вручную не закроешь, первый пункт работает адекватно.В чём может быть дело?
 
Последнее редактирование:

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
(лучше скопировать в отдельный текстовый редактор, здесь сбиваются отступы)
Если нормально использовать [code=cleo][/code], то и никаких проблем не будет

выключается thread_1
А хде его код?

Он не для этого предназначен, а для DXUT диалогов.
 

MrAntow

Новичок
59
16
1)Понял, я по ошибке юзал спойлер

2) Код должен быть отвязан от основного тела скрипта с диалогом, там буквально
CLEO:
:thread_0
wait 0
if 0@ == 1
then
  0AF8: samp add_message_to_chat "0" color //0xFFF235
  wait 1000
end
wait 1000
jump @thread_0

Это для теста.Такое же наполнение у thread_1, thread_2 и т.д

3) Этот опкод меня выручал в ситуации, когда после первого открытия диалога, он уже не открывался.Этот опкод фиксил проблему
 

MrAntow

Новичок
59
16
Вообще забавно.Если тестовый вариант работает нормально, то вот этот код в теле потока
CLEO:
:thread_1
wait 0
if 0@ == 1
then
    if
    0ADC:   test_cheat "go"
    then
        0AB6: store_target_marker_coords_to 1@ 2@ 4@ // IF and SET
        03C0: 7@ = actor $PLAYER_ACTOR car
        00AA: store_car 7@ position_to 6@ 5@ 3@
        if 86BD:   not no_obstacles_between 1@ 2@ 3@ and 6@ 5@ 3@ solid 1 car 0 actor 0 object 1 particle 1
        then
          0B56: set_game_key 16 state 255
          repeat
          wait 0
          00AA: store_car 7@ position_to 6@ 5@ 3@  
          until 86BD:   not no_obstacles_between 1@ 2@ 3@ and 6@ 5@ 3@ solid 1 car 0 actor 0 object 1 particle 1
          0B56: set_game_key 16 state 0
        end
        0087: 5@ = 3@ // (float)
        000B: 3@ += 4.0
        04A2: set_heli 7@ fly_to 1@ 2@ 3@ altitude_between 5@ and 3@
        0ACD: show_text_highpriority "AutoPilot Active!" time 3000
        repeat
        wait 0
        if or
        00EC:   actor $PLAYER_ACTOR sphere 0 near_point 1@ 2@ radius 20.0 20.0
        0AB0:   key_pressed 98
        then
        0ACD: show_text_highpriority "AutoPilot Off!" time 2500
        03C0: 7@ = actor $PLAYER_ACTOR car
        072A: put_actor $PLAYER_ACTOR into_car 7@ driverseat
        break
        end
        until false
    end
end
jump @thread_1

вызывает ту самую проблему.Это при том что код потока никак не должен пересекаться с кодом основным
 

MrAntow

Новичок
59
16
Похоже что перекликаются локальные переменные разных потоков.Это как вообще возможно?
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
Начни с мелких ошибок как тот опкод, и укажи цвет для chatmsg
И антикрашер убери, а то уже не знаешь что происходит внутри игры
 

MrAntow

Новичок
59
16
Я фиг знает на что менять опкод, это единственное что выдавал поиск опкодов в Sanny Builder

ChatMsg был для проверки переменной, я уж стёр за ненадобностью