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

Niko

Известный
Проверенный
230
268
Нужно определить, находятся ли игроки в зоне стрима. Например мне нужно сделать такой код:
Если игрок/игроки есть в зоне стрима (в зоне прорисовки), то например вывести сообщение в чат, иначе не выводить.
Не подскажете как это реализовать?
Код:
{$CLEO}
0000:

while not Samp.Available()
  wait 400
end
0B34: samp register_client_command "mycmd" to_label @cmd_mycmd

0BDE: pause_thread 0

:cmd_mycmd
0B35: samp 0@ = get_last_command_params
if 0AD4: 1@ = scan_string 0@ format "%d" 2@
then
0B20: samp 3@ = actor_handle_by_samp_player_id 2@
  if 056D: actor 3@ defined
  then
  0af8: "Игрок в зоне стрима!" -1
  end
end
0B43: samp cmd_ret
 
Последнее редактирование:

iGO[R]

Новичок
42
1
Niko., твой код не работает, ввожу в чат /mycmd, и сообщение НЕ выводится.
 

iGO[R]

Новичок
42
1
xXx2o1o, вот код, но я там ничего не менял почти)):
PHP:
{$CLEO}
0000: NOP

:MM
wait 0
0B20: samp 1@ = actor_handle_by_samp_player_id 0@
if
    056D:   actor 1@ defined
then
    0AF8: samp add_message_to_chat "Message" color -1
end
jump @MM
 

DubStep_

Известный
292
52
xXx2o1o, вот код, но я там ничего не менял почти)):
PHP:
{$CLEO}
0000: NOP

:MM
wait 0
0B20: samp 1@ = actor_handle_by_samp_player_id 0@
if
    056D:   actor 1@ defined
then
    0AF8: samp add_message_to_chat "Message" color -1
end
jump @MM
Держи, при вводе /cid (любой ид) - выведет инфу, подключен или нет игрок под данным идом... Если просто ввести /cid - то выведет в чат всех кто подключен. (Правда не влезет)
PHP:
{$Cleo}
0000:
0662: "DS"
repeat
    wait 0
until Samp.Available()
0B34: samp register_cmd "cid" @cmd
while true
wait 0
    if 30@ == true
        then
        0B35: samp 1@ = get_last_command_params
        if 0ad4: 1@ 1@ "%d" 2@
            then
            if Samp.IsPlayerConnected(2@)
                then
                0af8: chat_message "Игрок под ид %d подключен к серверу" 0xffffff 2@
                else
                0af8: chat_message "Игрок под ид %d не подключен к серверу" 0xffffff 2@
            end
            else
            for 0@ = 0 to 1000
                if Samp.IsPlayerConnected(0@)
                    then
                    0af8: chat_message "Игрок под ид %d подключен к серверу" 0xffffff 2@
                end
            end
        end      
    30@ = false
    end
end
:cmd
30@ = true
Samp.CmdRet()
Бля сорян. Не дочитал что нужна проверка в зоне стрима :)
PHP:
{$Cleo}
0000:
0662: "DS"
repeat
    wait 0
until Samp.Available()
0B34: samp register_cmd "cid" @cmd
while true
wait 0
    if 30@ == true
        then
        0B35: samp 1@ = get_last_command_params
        if 0ad4: 1@ 1@ "%d" 2@
            then
            if Samp.IsPlayerConnected(2@)
                then
                1@ = Samp.GetActorHandleByPlayerID(2@)
                if 056D:   actor 1@ defined
                    then
                    0af8: chat_message "Игрок под ид %d в зоне стрима" 0xffffff 2@
                    else
                    0af8: chat_message "Игрок под ид %d не в зоне стрима" 0xffffff 2@
                end
            end
            else
            for 0@ = 0 to 1000
                if Samp.IsPlayerConnected(0@)
                    then
                    1@ = Samp.GetActorHandleByPlayerID(0@)
                    if 056D:   actor 1@ defined
                        then 0af8: chat_message "Игрок под ид %d в зоне стрима" 0xffffff 2@
                    end
                end
            end
        end       
    30@ = false
    end
end
:cmd
30@ = true
Samp.CmdRet()
 

iGO[R]

Новичок
42
1
Держи, при вводе /cid (любой ид) - выведет инфу, подключен или нет игрок под данным идом... Если просто ввести /cid - то выведет в чат всех кто подключен. (Правда не влезет)
PHP:
{$Cleo}
0000:
0662: "DS"
repeat
    wait 0
until Samp.Available()
0B34: samp register_cmd "cid" @cmd
while true
wait 0
    if 30@ == true
        then
        0B35: samp 1@ = get_last_command_params
        if 0ad4: 1@ 1@ "%d" 2@
            then
            if Samp.IsPlayerConnected(2@)
                then
                0af8: chat_message "Игрок под ид %d подключен к серверу" 0xffffff 2@
                else
                0af8: chat_message "Игрок под ид %d не подключен к серверу" 0xffffff 2@
            end
            else
            for 0@ = 0 to 1000
                if Samp.IsPlayerConnected(0@)
                    then
                    0af8: chat_message "Игрок под ид %d подключен к серверу" 0xffffff 2@
                end
            end
        end    
    30@ = false
    end
end
:cmd
30@ = true
Samp.CmdRet()
Бля сорян. Не дочитал что нужна проверка в зоне стрима :)
PHP:
{$Cleo}
0000:
0662: "DS"
repeat
    wait 0
until Samp.Available()
0B34: samp register_cmd "cid" @cmd
while true
wait 0
    if 30@ == true
        then
        0B35: samp 1@ = get_last_command_params
        if 0ad4: 1@ 1@ "%d" 2@
            then
            if Samp.IsPlayerConnected(2@)
                then
                1@ = Samp.GetActorHandleByPlayerID(2@)
                if 056D:   actor 1@ defined
                    then
                    0af8: chat_message "Игрок под ид %d в зоне стрима" 0xffffff 2@
                    else
                    0af8: chat_message "Игрок под ид %d не в зоне стрима" 0xffffff 2@
                end
            end
            else
            for 0@ = 0 to 1000
                if Samp.IsPlayerConnected(0@)
                    then
                    1@ = Samp.GetActorHandleByPlayerID(0@)
                    if 056D:   actor 1@ defined
                        then 0af8: chat_message "Игрок под ид %d в зоне стрима" 0xffffff 2@
                    end
                end
            end
        end     
    30@ = false
    end
end
:cmd
30@ = true
Samp.CmdRet()
Я только половину кода понял, я еще не умею писать такие Cleo, только учусь)). Можешь выделить для меня оттуда проверку, находится ли игрок в зоне стрима?

Я вот так тоже пытался:

Код:
For $MyCounter = 0 to 1000
1@ = Samp.GetActorHandleByPlayerID($MyCounter)
If 056D:   actor 1@ defined
then
0AF8: samp add_message_to_chat "yes" color -1
End
End

Одни варнинги, а потом краш, почему же?)(
 

MelomanCool

Новичок
Проверенный
65
41
Можешь выделить для меня оттуда проверку, находится ли игрок в зоне стрима?
PHP:
            if Samp.IsPlayerConnected(2@)
                then
                1@ = Samp.GetActorHandleByPlayerID(2@)
                if 056D:   actor 1@ defined
                    then
                    0af8: chat_message "Игрок под ид %d в зоне стрима" 0xffffff 2@
                    else
                    0af8: chat_message "Игрок под ид %d не в зоне стрима" 0xffffff 2@
                end
            end
В 2@ должен находиться id игрока.

Одни варнинги, а потом краш, почему же?)(
Ты используешь глобальную переменную. Такая переменная может использоваться не только твоим скриптом, но и главным скриптом игры и другими скриптами, что вызывает конфликт. Поэтому в скриптах принято использовать только локальные переменные — 0@ - 31@. Помимо них еще есть два таймера - 32@ и 33@, но они тебе тут ни к чему.
Это все есть в справке Sanny Builder. Почитай, там годные статьи.
 

Xample

Новичок
89
1
Парни подскажите какойнить клео скрипт, чтобы логировал весь текст чата в файл, если не существует, помогите зделать, хотябы логирование 98 строки, т.к. на 99 идёт сообщение кто проверил обьявление, а на 98 само обьявление
 

mac

HEY DARLING
1,317
908
Парни подскажите какойнить клео скрипт, чтобы логировал весь текст чата в файл, если не существует, помогите зделать, хотябы логирование 98 строки, т.к. на 99 идёт сообщение кто проверил обьявление, а на 98 само обьявление
Пихаешь в цикл
0B75: samp get_chat_string 98 text_to 2@ prefix_to 3@ color_to 4@ prefix_color_to 5@
И там же сканишь текст
 
Последнее редактирование:

Niko

Известный
Проверенный
230
268
Можно ли определить что игрок целится в объект?