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

astap_

Известный
Всефорумный модератор
626
603
@pahan2221
вот это:
CLEO:
until 00ED: actor $PLAYER_ACTOR 0 near_point 0@ 1@ radius 0.4 0.4 on_foot
меняешь на это:
CLEO:
until 13@ == false
или на это:
CLEO:
until 0C89: 49 // нажата клавиша 1
но в таком случае, он не остановиться автоматически.
 
Последнее редактирование:

Skelerll

Известный
154
8
Как удалить созданный объект, если актер на нем не стоит?
 
Последнее редактирование:

astap_

Известный
Всефорумный модератор
626
603
Как удалить созданный объект, если актер на нем не стоит?
Получить координаты обьекта, потом проверить, находится ли актёр рядом с этим обьектом.
CLEO:
01BB: store_object 0@ position_to 1@ 2@ 3@
WHILE TRUE
WAIT 0
    IF 80FE: NOT  actor $PLAYER_ACTOR sphere 0 in_sphere 1@ 2@ 3@ radius 0.6 0.6 0.6
    THEN 092A: 0@ // 0@ - handle
    END
END
 
  • Нравится
Реакции: Skelerll

Skelerll

Известный
154
8
Получить координаты обьекта, потом проверить, находится ли актёр рядом с этим обьектом.
CLEO:
01BB: store_object 0@ position_to 1@ 2@ 3@
WHILE TRUE
WAIT 0
    IF 80FE: NOT  actor $PLAYER_ACTOR sphere 0 in_sphere 1@ 2@ 3@ radius 0.6 0.6 0.6
    THEN 092A: 0@ // 0@ - handle
    END
END
Не знаю.. Так:
CLEO:
0107: 6@ = create_object 2000 at 3@ 4@ 5@
0B50: samp 7@ = object_handle_by_id 2000
092A: 7@ // 0@ - handle
Не удаляет
 

astap_

Известный
Всефорумный модератор
626
603
Не знаю.. Так:
CLEO:
0107: 6@ = create_object 2000 at 3@ 4@ 5@
0B50: samp 7@ = object_handle_by_id 2000
092A: 7@ // 0@ - handle
Не удаляет
опкод 0B50 получает хэндл по ИД обьекта. А ид обьекта - это не есть его модель.
Хэндл у тебя уже есть - 6@
 

astap_

Известный
Всефорумный модератор
626
603
Всё равно нет..
вот это я дебил, я тебе вообще несуществующий опкод сказал. Нужен вот этот: 0108:
Я даже специально зашел и протестил, теперь точно всё работает, сорян за дезинформацию.
CLEO:
{$CLEO}
0000:
THREAD "astap"

REPEAT
    WAIT 20
UNTIL SAMP.Available()
0B34: samp register_client_command "createobj" to_label @1
0B34: samp register_client_command "deleteobj" to_label @2
0BDE: pause_thread 0

:1
0107: 0@ = create_object 19054 at 0 0 5.00
CHATMSG "created" -1
CMDRET

:2
IF 03CA:   object 0@ exists

    THEN 
    0108: destroy_object 0@
    CHATMSG "deleted" -1
    CMDRET 
   
    ELSE 
    CHATMSG "object not exists" -1 
    CMDRET
   
END
 
  • Нравится
Реакции: Skelerll

Skelerll

Известный
154
8
вот это я дебил, я тебе вообще несуществующий опкод сказал. Нужен вот этот: 0108:
Я даже специально зашел и протестил, теперь точно всё работает, сорян за дезинформацию.
CLEO:
{$CLEO}
0000:
THREAD "astap"

REPEAT
    WAIT 20
UNTIL SAMP.Available()
0B34: samp register_client_command "createobj" to_label @1
0B34: samp register_client_command "deleteobj" to_label @2
0BDE: pause_thread 0

:1
0107: 0@ = create_object 19054 at 0 0 5.00
CHATMSG "created" -1
CMDRET

:2
IF 03CA:   object 0@ exists

    THEN
    0108: destroy_object 0@
    CHATMSG "deleted" -1
    CMDRET
  
    ELSE
    CHATMSG "object not exists" -1
    CMDRET
  
END
А я-то думаю, почему этого опкода нету в списке Сани Билдера..
Спасибо огромное! Да Храни тебя Господь!

Получить координаты обьекта, потом проверить, находится ли актёр рядом с этим обьектом.
CLEO:
01BB: store_object 0@ position_to 1@ 2@ 3@
WHILE TRUE
WAIT 0
    IF 80FE: NOT  actor $PLAYER_ACTOR sphere 0 in_sphere 1@ 2@ 3@ radius 0.6 0.6 0.6
    THEN 092A: 0@ // 0@ - handle
    END
END
Кстати, вот это не работает
 

astap_

Известный
Всефорумный модератор
626
603
я не совсем понимаю что ты хочешь. Ну тут я накидал следующее: если ты находишься рядом с объектом - он появляется, если ты от него отходишь - он исчезает. Радиус настраивай сам.
CLEO:
{$CLEO}
0000:
THREAD "astap"

REPEAT
    WAIT 20
UNTIL SAMP.Available()
0B34: samp register_client_command "objj" to_label @1

WHILE TRUE
WAIT 0
    IF 31@ == 1
    THEN
        IF 80FE: NOT  actor $PLAYER_ACTOR sphere 0 in_sphere 0 0 1.50 radius 3.0 3.0 3.0
        THEN
            IF 03CA:   object 0@ exists
            THEN 0108: destroy_object 0@
            END
        ELSE
            IF 83CA: NOT   object 0@ exists
            THEN  0107: 0@ = create_object 19054 at 0 0 1.50
            END
        END
    END
END


:1
IF 31@ == 0

    THEN
    31@ = 1
    CHATMSG "enable" -1
    CMDRET
  
    ELSE
    31@ = 0
    CHATMSG "disable" -1
    CMDRET
  
END
 
  • Нравится
Реакции: Skelerll

Skelerll

Известный
154
8
У меня такой вопросик.. Как в хуке сделать задержку через wait 2000? У меня не работает, как будто задержки и нет. Я только догадался переносить их в переменные и там шаманить (получается говнокод). Как сделать правильно?
 

D3.Pheonix

🎹
Модератор
2,865
1,649
У меня такой вопросик.. Как в хуке сделать задержку через wait 2000? У меня не работает, как будто задержки и нет. Я только догадался переносить их в переменные и там шаманить (получается говнокод). Как сделать правильно?

Нужно выводить в главный поток. Используй опкоды приостановки и воспроизведения потока.