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

SeJIya

Новичок
45
2
Непомогло, серавно не выберает
Перед тем как посылать диалогу выбор элемента, необходимо удастовериться о том, что диалог существует(т.е в данный момент открыт). Возможно причина в этом. Обратите внимание на опкод:
Код:
0BAB: dialog 1@ is_exists
// http://www.blasthack.net/sfdoc/op2.html#op0BA9
Для исспользования этого опкода, вам необходимо получить ID диалога, в котором производится выбор элементов.
Код:
0B4E: samp 1@ = get_current_dialog_id
//http://www.blasthack.net/sfdoc/op1.html#op0B4E
 

SeJIya

Новичок
45
2
Кто поможет в исправлении кода? Вот кусок кода :
Код:
0AF0: 1@ = get_int_from_ini_file "CLEO\COORDS_GO.INI" section "FIRST" key "X"
0AF0: 2@ = get_int_from_ini_file "CLEO\COORDS_GO.INI" section "FIRST" key "Y"
0AF0: 3@ = get_int_from_ini_file "CLEO\COORDS_GO.INI" section "FIRST" key "Z"
Вот код из ini файла:
Код:
[FIRST]
X =633.6808
Y =857.9966
Z =-42.5359
Но при активации (
Код:
05D3: task_go_straight_to_coord $PLAYER_ACTOR coord 1@ 2@ 3@ mode 6 time 500000
)
Игрок идет кудато за пределы мира, не в точку, а в океан, далекоо далекоо.... Помогите исправить, в чем проблема? Наверное в опкоде 0af0 надо заменить int на другое значение, но не знаю какое.
У вас в INI файле содержатся координаты, следовательно тип переменной должен быть float, вы же пытаетесь получить целое значение INT, не удивительно, что игрок бежит в другие координаты, обратите внимание на опкод
Код:
0AF2: 0@ = get_float_from_ini_file "cleo\config.ini" section "SectionName" key "floatKey"
 

FantaZzy

Новичок
20
0
У вас в INI файле содержатся координаты, следовательно тип переменной должен быть float, вы же пытаетесь получить целое значение INT, не удивительно, что игрок бежит в другие координаты, обратите внимание на опкод
Код:
0AF2: 0@ = get_float_from_ini_file "cleo\config.ini" section "SectionName" key "floatKey"

Поставил флоат,
Код:
0AF0: 1@ = get_float_from_ini_file "CLEO\COORDS_GO.ini" section "FIRST" key "X"
Не помогло, все равно идет не туда. Если обьявить 1@, 2@, 3@ как координаты X,Y,Z соответственно, то он работает нормально, если брать значение 1@ из ини, он идет не туда.
 

SeJIya

Новичок
45
2
Поставил флоат,
Код:
0AF0: 1@ = get_float_from_ini_file "CLEO\COORDS_GO.ini" section "FIRST" key "X"
Не помогло, все равно идет не туда. Если обьявить 1@, 2@, 3@ как координаты X,Y,Z соответственно, то он работает нормально, если брать значение 1@ из ини, он идет не туда.
Будте внимательней, вам необходим опкод 0AF2, но вы по прежнему исспользуете 0AF0
//Текст в опкоде, к примеру "get_float_from_ini_file" по большому счёту не имеет значения, он лишь подсказывает что делает конкретный опкод и какие параметры принимает.
 

FantaZzy

Новичок
20
0
Будте внимательней, вам необходим опкод 0AF2, но вы по прежнему исспользуете 0AF0
//Текст в опкоде, к примеру "get_float_from_ini_file" по большому счёту не имеет значения, он лишь подсказывает что делает конкретный опкод и какие параметры принимает.

Спасибо! 0AF0 исправил ситуацию! В авторах скрипта укажу ваш ник и ссылу на форум )
 

Dark_Knight

Me, me and me.
Друг
4,083
2,110
Подскажите, как узнать координаты игрока, и записать их в файл/буфер обмена?;(

Код:
actor.storepos($player_actor, 0@, 1@, 2@)
if 8aab: "cleo\pos.txt"
then 3@ = file.Open("cleo\pos.txt", "wt")
else
    if 3@ == 0
    then 3@ = file.Open("cleo\pos.txt", "at")
    end
end
0AD9: write_formatted_text "X : %02f | Y : %02f | Z : %02f%c" in_file 3@ 0@ 1@ 2@ 10
Будешь писать уебанский текстом, получишь.
 

SR_team

like pancake
BH Team
4,814
6,511
Код:
actor.storepos($player_actor, 0@, 1@, 2@)
if 8aab: "cleo\pos.txt"
then 3@ = file.Open("cleo\pos.txt", "wt")
else
    if 3@ == 0
    then 3@ = file.Open("cleo\pos.txt", "at")
    end
end
0AD9: write_formatted_text "X%:%02f | Y:%02f | Z:%02f%c" in_file 3@ 0@ 1@ 2@ 10
Будешь писать уебанский текстом, получишь.

Он же в буфер просил и у тебя опечатка в последней строке
 

artF

Новичок
24
0
Код:
{$CLEO}
0000: NOP
thread "mark"
:0
wait 0
if 0AFA: is_samp_structures_available
jf @0
0AF7: get_samp_base_to 25@
 
0b34: samp register_client_command  "mark" @1 // команда
while true
    wait 0
end
 
:1
wait 0
0B35: samp 0@ = get_last_command_params
0AD4: 1@ = scan_string 0@ format "%d" 2@
if 056D: actor 2@ defined
then
    3@ = SAMP.GetPlayerNickname(2@)
    0B20: samp 4@ = actor_handle_from_samp_playerid 2@
    actor.StorePos(4@, 5@, 6@, 7@) //пишем нахождение актера в координаты
    018A: 8@ = create_checkpoint_at 5@ 6@ 7@
    03BC: 9@ = create_sphere_at 5@ 6@ 7@ radius 2.0
    0AF8: samp add_message_to_chat "Игрок %d отмечен на карте" 3@
else
0AF8: samp add_message_to_chat "Игрок вне зоны стрима"
end
0b43:

В клео пока нуль, целый день убил чтоб написать это так как такого простого клео не нашел готового... Крашит, не могу проверку этого стрима сделать.. поправьте пожалуйста, а лучше еще и объяснить что не так)

И если можно, как сделать чтоб после того как я подошел к поставленному маркеру он исчез?

так же не совсем понимаю как задать " create_checkpoint_at " цвет , напр красный(под сферу)
Спасибо заранее
 

MogAika

Известный
Автор темы
Друг
237
444
В клео пока нуль, целый день убил чтоб написать это так как такого простого клео не нашел готового... Крашит, не могу проверку этого стрима сделать.. поправьте пожалуйста, а лучше еще и объяснить что не так)

if 056D: actor 2@ defined
че за странная проверка[/CODE][/quote]
 

hnnssy

Известный
Друг
2,684
2,769
Какую нашел) пробовал и
if Actor.Defined(2@)
jf continue

И что то еще, всегда крашится
Так и не понял что за jf оператор.. По теме, мой код исправить не могли бы?[/quote]
PHP:
{$CLEO}
0000: NOP
thread "mark"
if not 0@ = SAMP.Base()
then 0A93: end_custom_thread
end

while not SAMP.Available()
    wait 100
end
 
0b34: samp register_client_command  "mark" @1 // команда

while true
    wait 0
end
 
:1
0B35: samp 0@ = get_last_command_params
0AD4: 0@ = scan_string 0@ format "%d" 1@
if 0B23:  samp is_player_connected 1@
then
    if
    0B20: samp 2@ = actor_handle_from_samp_playerid 1@
    then    
    actor.StorePos(2@, 3@, 4@, 5@) //пишем нахождение актера в координаты
    018A: 6@ = create_checkpoint_at 3@ 4@ 5@
    03BC: 7@ = create_sphere_at 3@ 4@ 5@ radius 2.0
    0AF8: samp add_message_to_chat "Игрок %d отмечен на карте" -1 1@
    else
    0AF8: samp add_message_to_chat "Игрок вне зоны стрима" -1
    end
end
cmd_ret
 
  • Нравится
Реакции: artF

iAmerican

Известный
Друг
612
260
Как сделать вывод ID'oв всех близко стоящих игроков в радиусе ~10 - ~20 метров .
Примерно так :
Allax[228]
Ashot[777]
Mrazish[123]
Или тупо в строчку хотя бы .
В чат .
 

hnnssy

Известный
Друг
2,684
2,769
Как сделать вывод ID'oв всех близко стоящих игроков в радиусе ~10 - ~20 метров .
Примерно так :
Allax[228]
Ashot[777]
Mrazish[123]
Или тупо в строчку хотя бы .
В чат .
PHP:
00A0: store_actor $PLAYER_ACTOR position_to 7@ 8@ 9@
for 0@ = 0 to 1000
    if 0B23:  samp is_player_connected 0@
    then
        if
        0B20: samp 1@ = actor_handle_by_samp_player_id 0@
        then
            00A0: store_actor 1@ position_to 2@ 3@ 4@
            050A: 5@ = distance_between_XYZ 7@ 8@ 9@ and_XYZ 2@ 3@ 4@
            if
            5@ <= 20.0 // Тут радиус
            then
                0B36: samp 6@ = get_player_nickname 0@
                msg "%s[%d]" -1 6@ 0@
            end
        end
    end
end