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

#saniwe

глаза пофикси
218
107
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Где смотреть память сампа?
Хочу узнать опред. клавишу.
 

bereg101

Участник
55
0
Давно не занимался клео скриптингом, но вдруг понадобилось. Как можно отслеживать в чате появление определенного сообщения и как можно выбирать в диалоговом окне определенный пункт?
 

grandpafromghetto

НАСТАЯЩИЙ ДАГИСТАНИЦ
Проверенный
335
119
0b49 выбор в диалоге определенного пункта, а отслеживание сначала через
0B75
потом в условии
0C18
 

Kotovasya

Участник
85
13
Объясните, как правильно рассчитать расстояние между мною и игроком? Весь форум облазил, везде разные решения, и под мой скрипт ну никак не подходят. Может я тупой, попробуйте помочь :3

Код:
{$CLEO}

0000:
repeat
    wait 400
until 0AFA:
0B34: samp register_client_command "azz" to_label @azz

WHILE TRUE
wait 0
if 10@ = 1
then
    00A0: store_actor $PLAYER_ACTOR position_to 7@ 8@ 9@
    for 0@ = 0 to 1000 [step = 1]
        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@ <= 5.0
                then
                    say "/iznas %d" 0@
                end
            end
        end
    end
end
END

:azz
if 10@ = 0
then
    10@ = 1
else
    10@ = 0
end
samp.CmdRet()

P.S. Код сырой еще
 
Последнее редактирование:

Kotovasya

Участник
85
13
$player_actor - это ты, а не другой игрок
Код:
for 0@ = 0 to 1000 [step = 1]
0B20: samp 1@ = actor_handle_by_samp_player_id 0@
00A0: store_actor 1@ position_to 2@ 3@ 4@                 
050A: 5@ = distance_between_XYZ 7@ 8@ 9@ and_XYZ 2@ 3@ 4@
Special for you
0@ - id игроков, перебираются циклом for
1@ - хендл получаем из id
2@ 3@ 4@ - координаты XYZ полученного игрока
5@ - расстояние от координат 7@ 8@ 9@ (моего местоположения) и до 2@ 3@ 4@ (местоположения игрока)
 

Musaigen

abobusnik
Проверенный
1,586
1,315
Объясните, как правильно рассчитать расстояние между мною и игроком? Весь форум облазил, везде разные решения, и под мой скрипт ну никак не подходят. Может я тупой, попробуйте помочь :3
Не знаю, будет ли работать. Времени проверять нету.
CLEO:
{$CLEO}
0000:

repeat
wait 0 
until Samp.Available()

0B34: samp register_client_command "azz" to_label @azz

while true
wait 0
    if 1@ == 1
    then
        0A8E: 2@ = 2@ + 1
        if not 8039: 2@ == 1001
        then
            if and
            0B23:  samp is_player_connected 2@
            8B64:  not samp is_player 2@ npc
            then
                0B20: samp 3@ = actor_handle_by_samp_player_id 2@
                if
                Player.Defined(3@)
                then
                    Actor.StorePos($PLAYER_ACTOR, 4@, 5@, 6@)
                    Actor.StorePos(3@, 7@, 8@, 9@)
                    050A: 10@ = distance_between_XYZ 4@ 5@ 6@ and_XYZ 7@ 8@ 9@
                    if 10@ <= 5.0
                    then
                        say "/iznas %d" 2@
                    end
                end
            end
        else 2@ = 0
        end
    end
end                       


       






:azz
0B12: 0@ = 0@ XOR 1
if 0@ == 1
then
    1@ = 1
else
    1@ = 0
end
samp.CmdRet()
 

bereg101

Участник
55
0
Подскажите почему не выбирает пункт в диалоговом окне?
И вопрос можно ли читать пункты в диалоговом окне чтоб выбирать нужный по названию?
И почему задержка тут не работает?

я не знаю какой опкод нужен 47 или 49 и попробовал оба, но оба у меня не работают
wait 2000
0AF9: samp say_msg "/menu"
wait 100
0B49: samp set_current_dialog_list_item 2
wait 1000
0B47: samp close_current_dialog_with_button 2
 

fiendshadow

3LFhocV726q7pKWWky2vv3W38Dm9sGJV86
Проверенный
455
122
мм, обрезки кода, как мы любим, задержка в теле скрипта только работает. По поводу диалогов - хуй его, вроде точно так же работало раньше
 

bereg101

Участник
55
0
мм, обрезки кода, как мы любим
Ну не работает только он)

Все что выше работает

Код:
    0C29: 5@ = stristr string1 4@ string2 "New"
    if 5@ <> 0
    then

        0AF9: samp say_msg "/menu" // работает
       // а дальше не работает
        wait 100
        0B49: samp set_current_dialog_list_item 2
        wait 1000
        0B47: samp close_current_dialog_with_button 2

   
    end
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,463
Подскажите почему не выбирает пункт в диалоговом окне?
Возможно то, что диалог имеет тип таблиц (несколько колонок), который не обрабатывается SAMPFUNCS'ом.
И вопрос можно ли читать пункты в диалоговом окне чтоб выбирать нужный по названию?
opcodes:0b54
opcodes:0b5b
И почему задержка тут не работает?
Задержки не работают в колбэках (команда, таймер).
 

bereg101

Участник
55
0
Возможно то, что диалог имеет тип таблиц (несколько колонок), который не обрабатывается SAMPFUNCS'ом.
Обычный диалог как /mm на всех серверах. Я думал мб окно еще не успевает прогрузится, как срабатывает опкод выбора. Может такое быть?
И что делать то в итоге эмуляцию нажатия клавиш или что то еще?
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,463
Обычный диалог как /mm на всех серверах. Я думал мб окно еще не успевает прогрузится, как срабатывает опкод выбора. Может такое быть?
И что делать то в итоге эмуляцию нажатия клавиш или что то еще?
Понятия не имею. Ты задал вопросы, приложил код. По этому коду и говорим проблему.