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

1,417
1,035
@Trawer2289
CLEO:
{$CLEO}
0000: NOP
repeat
    wait 400
until samp.Available()
0B34: samp register_client_command "test1" to_label @cmd

WHILE TRUE
wait 0
    IF 0@ == 1
    THEN
        IF 0449:   actor $PLAYER_ACTOR in_a_car
        then
            018C: play_sound 1058 at 0.0 0.0 0.0
            msg "{ff0000}[Ошибка] {ffffff}Нельзя находиться в транспорте!" -1
        else
            077E: get_active_interior_to 1@
            IF 1@ == 0
            THEN
                018C: play_sound 1058 at 0.0 0.0 0.0
                msg "{ff0000}[Ошибка] {ffffff}Нельзя находиться на улице!" -1
            ELSE
                018C: play_sound 1058 at 0.0 0.0 0.0
                msg "{7FD76F}[Внимание] {ffffff}Покиньте интерьер!" -1
              
                repeat
                    wait 0
                    077E: get_active_interior_to 1@
                until 8019: 1@ > 0
              
                Actor.PutAt($PLAYER_ACTOR, 137.331, 1881.63,17.8359)
                wait 1000
                0AF6: samp spawn_player
            END
        END      
        0@ = 0
    END
END

:cmd
0@ = 1
Samp.CmdRet()

@biovolk
Вопрос - Вопросы по CLEO-скриптингу(https://blast.hk/threads/13410/page-343#post-172500)
 

Lord

Новичок
236
42
Опкод пожалуйста, который создает метку (сферу) на карте и в самой игре.
 

biovolk

Новичок
6
0
@randazzo
CLEO:
{$CLEO}
0000:

IF AND
  0AB0:  key_pressed 90
  0AD2: 0@ = player $PLAYER_CHAR targeted_actor //IF and SET
THEN
  0B2B: samp 1@ = get_player_id_by_actor_handle 0@
  say "/take weapons %d" 1@
  wait 1
  say "/ad %d" 1@
  wait 500
  say "/ac %d" 1@
  wait 500 
  say "/ea %d" 1@
  wait 500 
  say "/dd %d" 1@
  wait 500
END

Имеем допустим такой скрипт, который при наводке прицела на человека, будет срабатывание команд данных выше. Вопрос : работать будет только с sampfuncs? (есть ли возможность чтобы без него?)
Возможно что-то не правильное в коде, просьба сказать.
 
Последнее редактирование модератором:
1,417
1,035
@randazzo
CLEO:
{$CLEO}
0000:

IF AND
  0AB0:  key_pressed 90
  0AD2: 0@ = player $PLAYER_CHAR targeted_actor //IF and SET
THEN
  0B2B: samp 1@ = get_player_id_by_actor_handle 0@
  say "/take weapons %d" 1@
  wait 1
  say "/ad %d" 1@
  wait 500
  say "/ac %d" 1@
  wait 500
  say "/ea %d" 1@
  wait 500
  say "/dd %d" 1@
  wait 500
END

Имеем допустим такой скрипт, который при наводке прицела на человека, будет срабатывание команд данных выше. Вопрос : работать будет только с sampfuncs? (есть ли возможность чтобы без него?)
Возможно что-то не правильное в коде, просьба сказать.
Только с сф, возможность есть, перепиши функции получения id по хендлу и вывода сообщения в чат.
CLEO:
{$CLEO}
0000:

WHILE TRUE
wait 0
IF AND
  0AB0:  key_pressed 90
  0AD2: 0@ = player $PLAYER_CHAR targeted_actor //IF and SET
THEN
  0B2B: samp 1@ = get_player_id_by_actor_handle 0@
  say "/take weapons %d" 1@
  wait 1
  say "/ad %d" 1@
  wait 500
  say "/ac %d" 1@
  wait 500
  say "/ea %d" 1@
  wait 500
  say "/dd %d" 1@
  wait 500
END
END
если на сервере антифлуд есть, то задержку больше надо ставить.
 

biovolk

Новичок
6
0
Только с сф, возможность есть, перепиши функции получения id по хендлу и вывода сообщения в чат.
CLEO:
{$CLEO}
0000:

WHILE TRUE
wait 0
IF AND
  0AB0:  key_pressed 90
  0AD2: 0@ = player $PLAYER_CHAR targeted_actor //IF and SET
THEN
  0B2B: samp 1@ = get_player_id_by_actor_handle 0@
  say "/take weapons %d" 1@
  wait 1
  say "/ad %d" 1@
  wait 500
  say "/ac %d" 1@
  wait 500
  say "/ea %d" 1@
  wait 500
  say "/dd %d" 1@
  wait 500
END
END
если на сервере антифлуд есть, то задержку больше надо ставить.
Можешь пожалуйста помочь с перепиской? Антифлуда на данные команды нет.
 
1,417
1,035
if 0AB6: store_target_marker_coords_to 0@ 1@ 2@ (проверка имеется ли метка), если да тогда Actor.PutAt($PLAYER_ACTOR, 0@, 1@, 2@) (нас телепортирует на нее)
который создает метку

@lordpower можно через emul rpc
CLEO:
:ch_on
0B3D: raknet 30@ = new_bit_stream
0B40: raknet bit_stream 30@ write 0@ type BS_TYPE_FLOAT size 4
0B40: raknet bit_stream 30@ write 1@ type BS_TYPE_FLOAT size 4
0B40: raknet bit_stream 30@ write 2@ type BS_TYPE_FLOAT size 4
0B40: raknet bit_stream 30@ write 8.0 type BS_TYPE_FLOAT size 4
0BF6: raknet emul_rpc_receive RPC_SCRSETCHECKPOINT bit_stream 30@
0B3E: raknet delete_bit_stream 30@
ret 0  

:ch_off
0B3D: raknet 1@ = new_bit_stream
0BF6: raknet emul_rpc_receive RPC_SCRDISABLECHECKPOINT bit_stream 1@
0B3E: raknet delete_bit_stream 1@
ret 0

или через
CLEO:
03BC: 149@ = create_sphere_at 2596.589 2758.158 22.862 radius 1.0
 

D3.Pheonix

🎹
Модератор
2,866
1,650
Тут такое дело, короче SB не сохраняет исходник в скрипте, nosource я не прописываю, ессно.
 

Lord

Новичок
236
42
if 0AB6: store_target_marker_coords_to 0@ 1@ 2@ (проверка имеется ли метка), если да тогда Actor.PutAt($PLAYER_ACTOR, 0@, 1@, 2@) (нас телепортирует на нее)
@lordpower можно через emul rpc
CLEO:
:ch_on
0B3D: raknet 30@ = new_bit_stream
0B40: raknet bit_stream 30@ write 0@ type BS_TYPE_FLOAT size 4
0B40: raknet bit_stream 30@ write 1@ type BS_TYPE_FLOAT size 4
0B40: raknet bit_stream 30@ write 2@ type BS_TYPE_FLOAT size 4
0B40: raknet bit_stream 30@ write 8.0 type BS_TYPE_FLOAT size 4
0BF6: raknet emul_rpc_receive RPC_SCRSETCHECKPOINT bit_stream 30@
0B3E: raknet delete_bit_stream 30@
ret 0 

:ch_off
0B3D: raknet 1@ = new_bit_stream
0BF6: raknet emul_rpc_receive RPC_SCRDISABLECHECKPOINT bit_stream 1@
0B3E: raknet delete_bit_stream 1@
ret 0

или через
CLEO:
03BC: 149@ = create_sphere_at 2596.589 2758.158 22.862 radius 1.0


Спасибо, но вы неправильно поняли. Сферу создал, ок. А как сделать чтоб в том же месте на карте красным высвечивалось?

x0uxlCntSKOgU9MVOEvglg.png
 

CLEONewBie

Новичок
20
0
Как понял, мод на квадратный радар изменяет какое-то значение в памяти игры.
Внимание, вопрос: можно-ли сделать такое же на cleo?
 

Trawer2289

Известный
48
9
Всем привет хотел написать телепорт через инту и написал ,а дальше скомпилировал но в игре сиджеи. Помогите пожалуйста, вот код:
CLEO:
{$CLEO .cs}
0000: NOP
repeat
    wait 400
until samp.Available()
0B34: samp register_client_command "itp" to_label [USER=63112]@Kek[/USER]
while true
wait 0
    if 0@ == 1
    then
        if 0449:   actor $PLAYER_ACTOR in_a_car
        then
            018C: play_sound 1058 at 0.0 0.0 0.0
            msg "{ff0000}[Ошибка] {ffffff}Нельзя находиться в транспорте" -1
        else
            077E: get_active_interior_to 1@
            if 1@ == 0
            then
                018C: play_sound 1058 at 0.0 0.0 0.0
                msg "{ff0000}[Ошибка] {ffffff}Нельзя находиться на улице!" -1
            else
                018C: play_sound 1058 at 0.0 0.0 0.0
                msg "{7FD76F}[Внимание] {ffffff}Покиньте интерьер для телепорта!" -1
            else
                0AB6: store_target_marker_coords_to $actor_x $actor_y $actor_z
                if
                0AB6: store_target_marker_coords_to $actor_x $actor_y $actor_z
                then
                    018C: play_sound 1058 at 0.0 0.0 0.0
                    msg "{ff0000}[Ошибка] {ffffff}Поставьте метку на карте!" -1
                //
                repeat
                    wait 0
                    077E: get_active_interior_to 1@
                until 8019: 1@ > 0
              
                Actor.PutAt($PLAYER_ACTOR, $actor_x $actor_y $actor_z)
                wait 1000
                018C: play_sound 1058 at 0.0 0.0 0.0
                msg "{ffffff}Вы были телепортированы на метку!" -1
            end
        end
        0@ = 0
    end
end
:kek
0@ = 1
Samp.CmdRet()
 
Последнее редактирование модератором:

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

Kotovasya

Участник
85
13
CLEO:
if 0AAB: file_exists "cleo\TimerSettings.ini"
then
    0AF0: 11@ = get_int_from_ini_file "cleo\TimerSettings.ini" section "Position" key "X"
    0AF0: 12@ = get_int_from_ini_file "cleo\TimerSettings.ini" section "Position" key "Y"
    0AF0: 13@ = get_int_from_ini_file "cleo\TimerSettings.ini" section "Properties" key "Height"
else
    0AF1: write_int 250 to_ini_file "cleo\TimerSettings.ini" section "Position" key "X"
    0AF1: write_int 250 to_ini_file "cleo\TimerSettings.ini" section "Position" key "Y"
    0AF1: write_int 10 to_ini_file "cleo\TimerSettings.ini" section "Properties" key "Height"
end

 IF 15@ == 1
 THEN
      WHILE TRUE
          wait 0
          alloc 8@ 64
          0B8D: samp set_cursor_mode 2
          0B5E: get_cursor_pos 11@ 12@
          0AD3: 8@ = format "Осталось: xx:xx"
          0B6F: render font 30@ draw_text 8@ pos 11@ 12@ color 0xFFFFFFFF
          IF key_down 1
          THEN
               0B8D: samp set_cursor_mode 0
               0AF1: write_int 11@ to_ini_file "cleo\TimerSettings.ini" section "Position" key "X"
               0AF1: write_int 12@ to_ini_file "cleo\TimerSettings.ini" section "Position" key "Y"
               15@ = 0
               free 8@
               break
          END
      END
  END
Суть: при вводе команды /tpos 15@ = 1. Когда я жмякаю мышку, позиция сохраняется. Потом таймер активируется на том месте на котором я сохранил. Все четко. Но после перезахода в игру, когда таймер должен появится: он не появляется на том месте где надо (на самом деле он появляется, но его на экране даже не видно). В ini позиции записаны нормально, но текст не рендериться где надо ТОЛЬКО после перезахода в игру. Хелпаните пожалуйста :3
 
Последнее редактирование модератором: