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

01EG

Известный
Проверенный
631
346
О, сработало, но при телепорте на предпоследнюю точку персонаж фризиться. Сделал вот так:
CLEO:
Actor.PutAt($Player_Actor, 1989.85 -1162.53 20.84)
repeat
    wait 700
until 0afa:
alloc 4@ 64
while true
wait 0
0B75: samp get_chat_string 99 text_to 4@ prefix_to 5@ color_to 6@ prefix_color_to 7@
if 0C18: 8@ = strstr string1 4@ string2 "{FFFFFF}asd"
then
Actor.PutAt($Player_Actor, 1987.35 -1168.53 20.46)
end
wait 0
end
repeat
Почему в конце repeat стоит без нихуя или ты полностью скопировал ? Не знаю с чем это связано, то нужно разморозить актера.
Вот в принципе. Если твой скрипт дальше ничего не планирует делать, после того, как сделает Телепорт после увиденного текста.
CLEO:
while true
Actor.PutAt($Player_Actor, 1989.85 -1162.53 20.84)
repeat
    wait 700
until 0afa:
alloc 4@ 64
while true
wait 0
0B75: samp get_chat_string 99 text_to 4@ prefix_to 5@ color_to 6@ prefix_color_to 7@
if 0C18: 8@ = strstr string1 4@ string2 "{FFFFFF}asd"
then
Actor.PutAt($Player_Actor, 1987.35 -1168.53 20.46)
Player.CanMove($PLAYER_ACTOR) = True
Actor.LockInCurrentPosition($PLAYER_ACTOR) = False
end
end
 
  • Нравится
Реакции: RedBoxWhite

RedBoxWhite

Известный
337
27
Почему в конце repeat стоит без нихуя или ты полностью скопировал ? Не знаю с чем это связано, то нужно разморозить актера.
Вот в принципе. Если твой скрипт дальше ничего не планирует делать, после того, как сделает Телепорт после увиденного текста.
CLEO:
while true
Actor.PutAt($Player_Actor, 1989.85 -1162.53 20.84)
repeat
    wait 700
until 0afa:
alloc 4@ 64
while true
wait 0
0B75: samp get_chat_string 99 text_to 4@ prefix_to 5@ color_to 6@ prefix_color_to 7@
if 0C18: 8@ = strstr string1 4@ string2 "{FFFFFF}asd"
then
Actor.PutAt($Player_Actor, 1987.35 -1168.53 20.46)
Player.CanMove($PLAYER_ACTOR) = True
Actor.LockInCurrentPosition($PLAYER_ACTOR) = False
end
end
Вроде сначала всё сработало, а потом опять фриз, может из-за того, что точка тп в воздухе? Хотя это бред. Вот крч весь код, мб что-то упустил, хотя проверил, вроде норм.
CLEO:
{$CLEO}
0000:            
wait 2000 
0AC8: 4@ = allocate_memory_size 256    

while true // :1
wait 0
if 0ADC:   test_cheat "go"
jf continue
Actor.StorePos($Player_Actor, 0@, 1@, 2@)
Actor.PutAt($Player_Actor, 1.0 2.0 3.0) 
wait 500
Actor.PutAt($Player_Actor, 1.0 2.0 3.0)
repeat
    wait 0
until 02D8: Actor $PLAYER_ACTOR current_weapon == 24
Actor.PutAt($Player_Actor, 1.0 2.0 3.0)
wait 500
Actor.PutAt($Player_Actor, 1.0 2.0 3.0)
repeat
    wait 700
until 0afa:
alloc 4@ 64
while true
wait 0
0B75: samp get_chat_string 99 text_to 4@ prefix_to 5@ color_to 6@ prefix_color_to 7@
if 0C18: 8@ = strstr string1 4@ string2 "asd" 
then
Actor.PutAt($Player_Actor, 1.0 2.0 3.0)
Player.CanMove($PLAYER_ACTOR) = True
Actor.LockInCurrentPosition($PLAYER_ACTOR) = False
end
end
repeat
    wait 500  
until 04EE: animation "FALL_SKYDIVE" loaded
0C72: set_virtual_key 13 down true                        
wait 0L
0C72: set_virtual_key 13 down false
wait 2300
Actor.PutAt($Player_Actor 0@ 1@ 2@)
end
 

hnnssy

Известный
Друг
2,684
2,754
Вроде сначала всё сработало, а потом опять фриз, может из-за того, что точка тп в воздухе? Хотя это бред. Вот крч весь код, мб что-то упустил, хотя проверил, вроде норм.
CLEO:
{$CLEO}
0000:           
wait 2000
0AC8: 4@ = allocate_memory_size 256   

while true // :1
wait 0
if 0ADC:   test_cheat "go"
jf continue
Actor.StorePos($Player_Actor, 0@, 1@, 2@)
Actor.PutAt($Player_Actor, 1.0 2.0 3.0)
wait 500
Actor.PutAt($Player_Actor, 1.0 2.0 3.0)
repeat
    wait 0
until 02D8: Actor $PLAYER_ACTOR current_weapon == 24
Actor.PutAt($Player_Actor, 1.0 2.0 3.0)
wait 500
Actor.PutAt($Player_Actor, 1.0 2.0 3.0)
repeat
    wait 700
until 0afa:
alloc 4@ 64
while true
wait 0
0B75: samp get_chat_string 99 text_to 4@ prefix_to 5@ color_to 6@ prefix_color_to 7@
if 0C18: 8@ = strstr string1 4@ string2 "asd"
then
Actor.PutAt($Player_Actor, 1.0 2.0 3.0)
Player.CanMove($PLAYER_ACTOR) = True
Actor.LockInCurrentPosition($PLAYER_ACTOR) = False
end
end
repeat
    wait 500 
until 04EE: animation "FALL_SKYDIVE" loaded
0C72: set_virtual_key 13 down true                       
wait 0L
0C72: set_virtual_key 13 down false
wait 2300
Actor.PutAt($Player_Actor 0@ 1@ 2@)
end
repeat
wait 700
until 0afa:
заебись проверка, а главное к месту
 

01EG

Известный
Проверенный
631
346
Что это ? 0L ?
until 04EE: animation "FALL_SKYDIVE" loaded
Ты проверяешь загружена ли анимация, но нигде не загружаешь ее
И загружаешь файл анимации. FALL_SKYDIVE - анимация из файла PED
Загружаешь:
04ED: load_animation "PED" - где-то в начале скрипта.
Проверяешь:
if 04EE: animation "PED" loaded
Используешь:
0605: actor $PLAYER_ACTOR perform_animation_sequence "FALL_SKYDIVE" from_file "PED" 4.0 loop 1 0 0 1 -1 ms


И зачем ты зажимаешь клавишу ?
 
Последнее редактирование модератором:

RedBoxWhite

Известный
337
27
Эт случайно, уже давно заметил)
Ты проверяешь загружена ли анимация, но нигде не загружаешь ее
И загружаешь файл анимации. FALL_SKYDIVE - анимация из файла PED
Загружаешь:
04ED: load_animation "PED" - где-то в начале скрипта.
Проверяешь:
if 04EE: animation "PED" loaded
Используешь:
0605: actor $PLAYER_ACTOR perform_animation_sequence "FALL_SKYDIVE" from_file "PED" 4.0 loop 1 0 0 1 -1 ms
Не знаю как, но я это ранее проверял и оно работало :D
 

RedBoxWhite

Известный
337
27
В любом случаи, зачем ты проверяешь анимацию FALL_SKYDIVE на загрузку.
Ну хорошо, но вот опкод 0605 заставляет актёра произвести анимацию, а мне надо, чтобы если у игрока проходит анимация "FALL_SKYDIVE", то он нажимает на клавишу Enter.
 

01EG

Известный
Проверенный
631
346
Ну хорошо, но вот опкод 0605 заставляет актёра произвести анимацию, а мне надо, чтобы если у игрока проходит анимация "FALL_SKYDIVE", то он нажимает на клавишу Enter.
Узнай ид анимации "FALL_SKYDIVE" и сравняй.

CLEO:
14@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR)
Установи выполнение нужной тебе анимации
17@ = SAMP.PlayerAnimationID(14@) // запиши ид анимации
printf "%i" time 1500 17@ // выведи ид анимации

Потом сравнивай в своем скрипте 17@ == ID[int]
 

RedBoxWhite

Известный
337
27
Узнай ид анимации "FALL_SKYDIVE" и сравняй.

CLEO:
14@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR)
Установи выполнение нужной тебе анимации
17@ = SAMP.PlayerAnimationID(14@) // запиши ид анимации
printf "%i" time 1500 17@ // выведи ид анимации

Потом сравнивай в своем скрипте 17@ == ID[int]
Это конечно всё хорошо, но на счёт анимации у меня отдельная тема так сказать, возможно вообще будет удалено из скрипта. Мне сейчас больше интересует почему фризит после сообщения в чате.
 

Mustang228

Известный
62
15
как при регистрации команды сделать между ней пробел?
например: /aim on в таком виде не читает команду, если просто /aimon, то все робит
 

BlackKnigga

Известный
BH Team
922
445
как при регистрации команды сделать между ней пробел?
например: /aim on в таком виде не читает команду, если просто /aimon, то все робит
Потому что все что идет после первой части команды(/*cmd*), считается параметрами команды. Создавай команду /aim и в теле команды проверяй параметры на строку "on".
 

01EG

Известный
Проверенный
631
346
как при регистрации команды сделать между ней пробел?
например: /aim on в таком виде не читает команду, если просто /aimon, то все робит
CLEO:
{$CLEO}
0000:

var
0@ : int = 0
end

repeat
wait 500
until 0afa:

0B34: samp register_client_command "aim" to_label @act

while true
wait 0
  if 0@ == 1
  then
  wait 0
  // func. . .
  end
end

:act
0B35: samp 1@ = get_last_command_params
2@s = 'on'
3@s = 'off'
  if 0C14: strcmp string1 1@ string2 2@s
  then
  0@ = 1
  chatmsg "{00FF00}ON" -1
  end
  if 0C14: strcmp string1 1@ string2 3@s
  then
  chatmsg "{FF00FF}OFF" -1
  0@ = 0
  end
0b43: