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

DarkB1t

Новичок
11
0
Почему при нажатии на какую-либо строку, действия сразу не воспроизводятся, а только после повторного запуска "менюшки".
CLEO:
{$CLEO}
0000:

:samp_on
wait 2000
SAMP.Available()
jf @samp_on

while true
    wait 0
    if 0ab0: key_down 2
    then
        while 0ab0: key_down 2
            wait 0
            if 0ab0: key_down 77
            then
                0ac8: alloc 0@ size 64
                0ad3: format_stirng 0@ = "Принять в организацию%cУволить из организации" 0xA
                0B3B: samp show_dialog id 47 caption "Что сделать?" text 0@ button_1 "Выбрать" button_2 "Закрыть" style 2
                0ac9: free 0@
                break
            end
        end
         
        if 0B3C: samp is_dialog_responded id 47 button 1@ list_item 3@ input_text 0 // Логгируем нажатие кнопки диалога и выбранного элемента из списка диалога 47
        then
            if 1@ == 1
            then
            018C: play_sound 1052 at 0.0 0.0 0.0
                if 3@ == 0
                then
                    0AF9: samp say_msg "/me пакет в руках"
                    wait 2500
                    0AF9: samp say_msg "/do В пакете форма для сотрудника"
                    wait 2500
                    0AF9: samp say_msg "/me достал форму из пакета"
                    wait 2500
                    0AF9: samp say_msg "/me передал форму человеку на против"
                    wait 2500
                end
             
                if 3@ == 1
                then
                    0af8: chat " TEST " -1
                end
             
            else
                018C: play_sound 1052 at 0.0 0.0 0.0
            end
        end
    end
end
 
Последнее редактирование:

DarkB1t

Новичок
11
0
Он есть, но просто не подсвечивается. Хочешь чтобы подсвечивался тогда в keywords.ini просто напиши его название.
Спасибо большое!
Можешь еще и с этим помочь?
Почему при нажатии на какую-либо строку, действия сразу не воспроизводятся, а только после повторного запуска "менюшки".
 

SR_team

like pancake
BH Team
4,720
6,373
Почему при нажатии на какую-либо строку, действия сразу не воспроизводятся, а только после повторного запуска "менюшки".
CLEO:
{$CLEO}
0000:

:samp_on
wait 2000
SAMP.Available()
jf @samp_on

while true
    wait 0
    if 0ab0: key_down 2
    then
        while 0ab0: key_down 2
            wait 0
            if 0ab0: key_down 77
            then
                0ac8: alloc 0@ size 64
                0ad3: format_stirng 0@ = "Принять в организацию%cУволить из организации" 0xA
                0B3B: samp show_dialog id 47 caption "Что сделать?" text 0@ button_1 "Выбрать" button_2 "Закрыть" style 2
                0ac9: free 0@
                break
            end
        end
        
        if 0B3C: samp is_dialog_responded id 47 button 1@ list_item 3@ input_text 0 // Логгируем нажатие кнопки диалога и выбранного элемента из списка диалога 47
        then
            if 1@ == 1
            then
            018C: play_sound 1052 at 0.0 0.0 0.0
                if 3@ == 0
                then
                    0AF9: samp say_msg "/me пакет в руках"
                    wait 2500
                    0AF9: samp say_msg "/do В пакете форма для сотрудника"
                    wait 2500
                    0AF9: samp say_msg "/me достал форму из пакета"
                    wait 2500
                    0AF9: samp say_msg "/me передал форму человеку на против"
                    wait 2500
                end
            
                if 3@ == 1
                then
                    0af8: chat " TEST " -1
                end
            
            else
                018C: play_sound 1052 at 0.0 0.0 0.0
            end
        end
    end
end
проверь условия
 

DarkB1t

Новичок
11
0
проверь условия
Теперь верно?
CLEO:
while true
    wait 0
    if 0ab0: key_down 2
    then
        if 0ab0: key_down 77
        then
            0ac8: alloc 0@ size 64
            0ad3: format_stirng 0@ = "Принять в организацию%cУволить из организации" 0xA
            0B3B: samp show_dialog id 47 caption "Что сделать?" text 0@ button_1 "Выбрать" button_2 "Закрыть" style 2
            0ac9: free 0@
            break
        end
    end
 

SR_team

like pancake
BH Team
4,720
6,373
Теперь верно?
CLEO:
while true
    wait 0
    if 0ab0: key_down 2
    then
        if 0ab0: key_down 77
        then
            0ac8: alloc 0@ size 64
            0ad3: format_stirng 0@ = "Принять в организацию%cУволить из организации" 0xA
            0B3B: samp show_dialog id 47 caption "Что сделать?" text 0@ button_1 "Выбрать" button_2 "Закрыть" style 2
            0ac9: free 0@
            break
        end
    end
я хз, если работает так, как тебе надо, то верно
 

DarkB1t

Новичок
11
0
из за break может крашит? после этого цикла что находится? и сделай либо задержку, либо проверку на отжатие клавиш
Вот весь код, посмотри сам пожалуйста :3
CLEO:
{$CLEO}
0000:

:samp_on
wait 2000
SAMP.Available()
jf @samp_on

while true
    wait 0
    if and    
    0ab0: key_down 2
    0ab0: key_down 77
    0AD2: 3@ = player $PLAYER_CHAR targeted_actor
    then
        0B2B: samp 4@ = get_player_id_by_actor_handle 3@
        //* *//
        0ac8: alloc 0@ size 64
        0ad3: format_stirng 0@ = "Принять в организацию%cУволить из организации" 0xA
        0B3B: samp show_dialog id 47 caption "Что сделать?" text 0@ button_1 "Выбрать" button_2 "Закрыть" style 2
        0ac9: free 0@
        break
    end
       
    if 0B3C: samp is_dialog_responded id 47 button 1@ list_item 2@ input_text 0 // Логгируем нажатие кнопки диалога и выбранного элемента из списка диалога 47
    then
        if 1@ == 1
        then
        018C: play_sound 1052 at 0.0 0.0 0.0
            if 2@ == 0
            then
                0AF9: samp say_msg "/me пакет в руках"
                wait 2500
                0AF9: samp say_msg "/do В пакете форма для сотрудника"
                wait 2500
                0AF9: samp say_msg "/me достал форму из пакета"
                wait 2500
                0AF9: samp say_msg "/me передал форму человеку на против"
                wait 2500
                0AF9: samp say_msg "/invite %d" 4@ 
            end
           
            if 2@ == 1
            then
                0af8: chat " TEST " -1
            end
           
        else
            018C: play_sound 1052 at 0.0 0.0 0.0
        end
    end
end
 

kennex

Известный
69
25
Вот весь код, посмотри сам пожалуйста :3
Вот так у меня работает

CLEO:
{$CLEO .cs}
0000:
repeat
wait 400
until samp.Available()

while true
  wait 0
  if and   
  key_down 78
  0AD2: 3@ = player $PLAYER_CHAR targeted_actor
  then
  0B2B: samp 4@ = get_player_id_by_actor_handle 3@
  0AC6: 24@ = label @text offset
  0B3B: samp show_dialog id 101 caption "Что сделать?" text 24@ button_1 "Выбрать" button_2 "Закрыть" style 2
  end
   
  if 0B3C: samp is_dialog_responded id 101 button 1@ list_item 2@ input_text 0
  then
  if 1@ == 1
  then
  018C: play_sound 1052 at 0.0 0.0 0.0
  if 2@ == 0
  then
  0AF9: samp say_msg "/me пакет в руках"
  wait 2500
  0AF9: samp say_msg "/do В пакете форма для сотрудника"
  wait 2500
  0AF9: samp say_msg "/me достал форму из пакета"
  wait 2500
  0AF9: samp say_msg "/me передал форму человеку на против"
  wait 2500
  0AF9: samp say_msg "/invite %d" 4@
  end
   
  if 2@ == 1
  then
  0af8: chat " TEST " -1
  end
   
  else
  018C: play_sound 1052 at 0.0 0.0 0.0
  end
  end
end

:text
hex
  "Принять в организацию\n"   
  "Уволить из организации\0"   
end
 

[SA ARZ]

Известный
390
8
Помогите, как сделать чтобы при команде /arp_doc и после доклада делал скриншот?
Код:
{$CLEO .cs}
0000: NOP   
Thread 'SGray'
0000: NOP
if 8AF7: get_samp_base_to 33@
then 0A93: end_custom_thread
end
repeat
     wait 400
until 0AFA: is_samp_structures_available
0AF8: samp add_message_to_chat "{0066FF}[Cleo AutoReporter]:{FF6600} Àâòîð ñêðèïòà - Carlo_Fiasco"
0B34: samp register_client_command "arp_doc" to_label @doc
0B34: samp register_client_command "arp_help" to_label @help
while true
    wait 0
    if 10@ == 228
    then
        0@ = Actor.Health($PLAYER_ACTOR)
        0@ += 1
        Actor.Health($PLAYER_ACTOR) = 0@
        print "~W~+1 health [ADVANCEMASTER]" 1500
        wait 2000
    end   
end
                                                           
:doc
0AC8: 10@ = allocate_memory_size 70
0AC8: 11@ = allocate_memory_size 70
0AC8: 12@ = allocate_memory_size 70
0AF4: 10@ = read_string_from_ini_file "CLEO\autorep.ini" section "autorep" key "name"
0AF4: 11@ = read_string_from_ini_file "CLEO\autorep.ini" section "autorep" key "post"
0AF4: 12@ = read_string_from_ini_file "CLEO\autorep.ini" section "autorep" key "kod"
0001: wait 100
0AF9: samp say_msg "/n Äîêëàäûâàåò: %s | Ïîñò: %s | Ñîñòîÿíèå: %s" 10@ 11@ 12@
0001: wait 100
0AF9: samp say_msg "/c 60"
0AC9: free_allocated_memory 10@
0AC9: free_allocated_memory 11@
0AC9: free_allocated_memory 12@
samp.CmdRet()

:help
0AF8: samp add_message_to_chat "{0066FF}[Cleo AutoReporter]:{FF6600} Àâòîð ñêðèïòà - Carlo_Fiasco"
0AF8: samp add_message_to_chat "{0066FF}[Cleo AutoReporter]:{FF6600} /arp_doc - äîêëàä"
samp.CmdRet()
 

DarkB1t

Новичок
11
0
Вот так у меня работает
Немного под себя переделал, а так, спасибо!

У меня еще вопрос :D
Почему, если поставить этот опкод, как условие, скрипт перестает работать?
CLEO:
0AD2: 3@ = player $PLAYER_CHAR targeted_actor
 
Последнее редактирование модератором:

ShadowBroker

Известный
110
27
Пытаюсь узнать заведен ли транспорт, но всегда выдаёт 0, что не так?

CLEO:
:1
wait 500
03C0: 0@ = actor $PLAYER_ACTOR car
0A97: 1@ = car 0@ struct
1@ += 0x428
0A8D: 2@ = read_memory 1@ size 1 virtual_protect 1
if
2@ == 16
jf @2
wait 500
say "1"
goto @3

:2
wait 500
say "0"
goto @3

+0x428 = [byte] Флаги:
  • 2 = Полицейский транспорт
  • 4 = Медицинский транспорт
  • 8 = Транспорт пожарной службы
  • 16 = Двигатель включен
  • 32 = Используется ручной тормоз, либо в транспорте нет водителя
  • 64 = Включены фары (за исключением стоп-сигналов автомобиля)