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

Тема в разделе "CLEO", создана пользователем MogAika, 19 мар 2013.

  1. randazzo

    Проверенный

    Регистрация:
    21.05.2014
    Сообщения:
    451
    Симпатии:
    112
    Репутация:
    43
    получить координаты тс и узнать расстояние между персонажем и тс.
     
  2. BH.Daichi

    BH.Daichi Пользователь

    Регистрация:
    30.07.2017
    Сообщения:
    23
    Симпатии:
    1
    Репутация:
    -3
    Как узнать растояние между персонажем и растоянием тс?
     
  3. randazzo

    Проверенный

    Регистрация:
    21.05.2014
    Сообщения:
    451
    Симпатии:
    112
    Репутация:
    43
    00AA: store_car 0@ position_to 1@ 2@ 3@ // 0@ car handle
    00A0: store_actor $PLAYER_ACTOR position_to 4@ 5@ 6@
    050A: 7@ = distance_between_XYZ 1@ 2@ 3@ and_XYZ 4@ 5@ 6@
    msg "%.2f" -1 7@
     
  4. BH.Daichi

    BH.Daichi Пользователь

    Регистрация:
    30.07.2017
    Сообщения:
    23
    Симпатии:
    1
    Репутация:
    -3
    Ещё вопросик, можно как то узнать модель транспорта по его хендлу?
     
  5. MaIIoy

    MaIIoy Пользователь

    Регистрация:
    09.01.2018
    Сообщения:
    17
    Симпатии:
    1
    Репутация:
    0
    Привет ребята! Подскажите пожалуйста как сделать проверку находится ли игрок на улице? Вот допустим пишем /команда и если вы на улице то напишет типо такого: вы на улице или вы на свободе. Если в интерьере то не будет ничего писать, помогите пожалуйста.
     
  6. kewa opcode

    kewa opcode плакса
    Проверенный

    Регистрация:
    15.04.2017
    Сообщения:
    317
    Симпатии:
    209
    Репутация:
    24
    получай текущий интерьер, если нуль то ты на улице
     
  7. MaIIoy

    MaIIoy Пользователь

    Регистрация:
    09.01.2018
    Сообщения:
    17
    Симпатии:
    1
    Репутация:
    0
    А можете показать на примере по опкоду? Я просто новичок и вообще не понимаю!

    Точнее вот типо такого? if 0154: actor $PLAYER_ACTOR in_zone 0
     
    #14127 MaIIoy, 12 янв 2018
    Последнее редактирование модератором: 13 янв 2018
  8. kewa opcode

    kewa opcode плакса
    Проверенный

    Регистрация:
    15.04.2017
    Сообщения:
    317
    Симпатии:
    209
    Репутация:
    24
    077E: get_active_interior_to 0@
    if 0@ == 0
    then
    ты на улице
    end
     
  9. D3.Pheonix

    D3.Pheonix biboran
    Проверенный

    Регистрация:
    21.03.2013
    Сообщения:
    461
    Симпатии:
    157
    Репутация:
    33
    Если нужен model id:
    0441: 14@ = car 20@ model // 14@ - model(id),   20@ - handle 
    Если нужно Model name, то
    
    0441: 14@ = car 20@ model
    0ADB: 25@ = car_model 14@ name // 25@ - model name 
    А если полное название:
    
    0441: 14@ = car 20@ model
    0ADB: 25@ = car_model 14@ name
    0ADE: 21@ = text_by_GXT_entry 25@ // 21@ - Veh name
     
    #14129 D3.Pheonix, 12 янв 2018
    Последнее редактирование: 12 янв 2018
  10. Pycckuu_Alkash

    Pycckuu_Alkash Пользователь

    Регистрация:
    12.03.2017
    Сообщения:
    14
    Симпатии:
    0
    Репутация:
    0
    
    
    CONST
    TXT = 20@
    NICK = 21@
    ID = 22@
    END
    
    WHILE TRUE
    wait 0
    IF 17@ == 1
    THEN
        IF 0A9A: TXT = openfile "cleo/Spisok.txt" mode "r"
        THEN
            0AC8: 23@ = allocate_memory_size 64
            0C11: memset destination 23@ value 0 size 64
            17@ = 0
         
            REPEAT
            wait 0
            IF 0AD7: read_string_from_file TXT to 23@ size 65
            THEN
                IF 0C21: stricmp string1 NICK string2 23@
                THEN
                    0C11: memset destination 23@ value 0 size 64
                    0AF8: samp add_message_to_chat "{FFFF00}[Проверка ЧС] {FFFFFF}Игрок {FF0000}находится {FFFFFF}в ЧС" color -1
                    24@ = -1
                    break
                END
                0C11: memset destination 23@ value 0 size 64 
            END
            UNTIL 0AD6:   end_of_file TXT reached
         
            free 23@
            IF 24@ == 0
            THEN
                0AF8: samp add_message_to_chat "{FFFF00}[Проверка ЧС] {FFFFFF}Игрок {2BFF00}не занесен {FFFFFF}в ЧС" color -1
            ELSE
                24@ = 0     
            END
        END
    END
    END
    
    :check
    IF 0B35: samp ID = get_last_command_params
    THEN
        0C1A: ID = atoi ID
        IF 0B23:  samp is_player_connected ID
        THEN
            0B36: samp NICK = get_player_nickname ID
            17@ = 1
        ELSE
            0AF8: samp add_message_to_chat "{FFFFFF} Игрок не подключен" color -1
        END
    ELSE
            0AF8: samp add_message_to_chat "{FFFF00}[Проверка ЧС] {FFFFFF}Не верно введена команда. Введите команду /bl [id игрока]" color -1
    END
    cmdret
    Вообщем, при проверке любого игрока на ЧС, пишет что не занесен. В чем причина? Я наверное в глаза долблюсь, но нормальный скан файла на бх я так и не нашел:( Если сможете подкрепить примером: буду очень благодарен.

    P.S. closefile забыл ебануть, но не в этом суть же, так?
     
    #14130 Pycckuu_Alkash, 12 янв 2018
    Последнее редактирование: 12 янв 2018
  11. D3.Pheonix

    D3.Pheonix biboran
    Проверенный

    Регистрация:
    21.03.2013
    Сообщения:
    461
    Симпатии:
    157
    Репутация:
    33
    Всё пока не читал, 12 строка, режим выставь "rt"
    а, и 0ADA для скана юзай
    В конце файл можно и закрыть File.Close(TXT)
     
    #14131 D3.Pheonix, 12 янв 2018
    Последнее редактирование: 12 янв 2018
    Pycckuu_Alkash нравится это.
  12. Pycckuu_Alkash

    Pycckuu_Alkash Пользователь

    Регистрация:
    12.03.2017
    Сообщения:
    14
    Симпатии:
    0
    Репутация:
    0
    Какой символ переноса строки? Или его при скане указывать не надо?
     
  13. Trawer2289

    Trawer2289 Пользователь

    Регистрация:
    28.02.2017
    Сообщения:
    8
    Симпатии:
    0
    Репутация:
    0
    Люди! Помогите мне ! Я сделал клео ну типо как у Ded_Fedot'a выход из тюрьмы с помощью мерии но я новичок и не понимаю как клео писать и написал хрень! При вводе /volya да, меня освобождает из тюрьмы но епта проверка не действует на волю! Ну точней если я на улице то должно написать типо братишка ты и так на воле,а когда я ввожу /volya меня тупо хоть на улице хоть нет тп-хает в инту мерии и все! Помогите пожалуйста.
    {$CLEO .cs}
    0000: NOP
    repeat
    wait 0
    until samp.Available()
    0B34: samp register_client_command "volya" to_label [USER=151047]@cmd[/USER]
    repeat
    wait 0
        if 0@ == 1
        then
         samp.IsCommandTyped(1@)
         if and 0ab6: store_target_marker_coords_to $actor_x $actor_y $actor_z
         msg "{ff0000}Добро пожаловать на волю бро!" -1
         actor.PutAt($Player_Actor, 1480.85, -1771.34,21.4741)
         then
         if 077e: get_active_interior_to 0@
         if 0@ == 0
         then
         msg "{ff0000}Братишка ты и так на воле!" -1
         end
       end
    end
    until false
    :cmd
    0@ = 1
    samp.CmdRet()
     
    #14133 Trawer2289, 12 янв 2018
    Последнее редактирование модератором: 17 янв 2018 в 00:48
  14. D3.Pheonix

    D3.Pheonix biboran
    Проверенный

    Регистрация:
    21.03.2013
    Сообщения:
    461
    Симпатии:
    157
    Репутация:
    33
    Смотря как записывал инфу в файл. Вообще нужно всё в точности учитывать.Пробуй, думаю разберёшься
    "%c" 0x0A // символ переноса
     
  15. Pycckuu_Alkash

    Pycckuu_Alkash Пользователь

    Регистрация:
    12.03.2017
    Сообщения:
    14
    Симпатии:
    0
    Репутация:
    0
    
    WHILE TRUE
    wait 0
    IF 17@ == 1
    THEN
        IF 0A9A: TXT = openfile "cleo/Spisok.txt" mode "rt"
        THEN
            0AC8: 23@ = allocate_memory_size 64 
            0C11: memset destination 23@ value 0 size 64 
            17@ = 0
           
            REPEAT
            wait 0
            IF 0ADA: 25@ = scan_file TXT format "%s%c" 23@ 0x0A
            THEN
                IF 0C21: stricmp string1 NICK string2 23@
                THEN 
                    0C11: memset destination 23@ value 0 size 64
                    0AF8: samp add_message_to_chat "{FFFF00}[Проверка ЧС] {FFFFFF}Игрок {FF0000}находится {FFFFFF}в ЧС" color -1
                    24@ = -1
                    break
                END
                0C11: memset destination 23@ value 0 size 64   
            END
            UNTIL 0AD6:   end_of_file TXT reached
           
            0A9B: closefile TXT
            free 23@
            IF 24@ == 0
            THEN
                0AF8: samp add_message_to_chat "{FFFF00}[Проверка ЧС] {FFFFFF}Игрок {2BFF00}не находится {FFFFFF}в ЧС" color -1
            ELSE
                24@ = 0       
            END
        END   
    END
    END
    
    Теперь я еще больше удивлен :/ Всех в чс кидает
     
  16. noobik.cs

    noobik.cs Известный пользователь

    Регистрация:
    23.09.2013
    Сообщения:
    55
    Симпатии:
    0
    Репутация:
    0
    Как получить текущую дату(число месяц год) и записать в файл
     
    #14136 noobik.cs, 12 янв 2018
    Последнее редактирование: 12 янв 2018
  17. san0

    Проверенный

    Регистрация:
    15.12.2013
    Сообщения:
    334
    Симпатии:
    158
    Репутация:
    63
    Откуда информация такая?
     0C11: memset destination 0x58FAED value 0x90 size 0xD
     
    Последние данные очков репутации:
    D3.Pheonix: 1 Очко (Я имел в виду что с одним этим опкодом не сделать ниче.) 12 янв 2018
    ShadowBroker: 1 Очко (Ты просто анбиливэбэл!!) 12 янв 2018
    ShadowBroker нравится это.
  18. D3.Pheonix

    D3.Pheonix biboran
    Проверенный

    Регистрация:
    21.03.2013
    Сообщения:
    461
    Симпатии:
    157
    Репутация:
    33
    
    {$CLEO .cs}
    0000: NOP
    
    repeat
    wait 0
    until samp.Available()
    0B34: samp register_client_command "volya" to_label @cmd
    0BDE: pause_thread 0
    
    :cmd
    samp.IsCommandTyped(1@)
    0AD4: 4@ = scan_string 1@ format "%s" 2@
    if and
        4@ == 1
        0C29: 0@ = stristr string1 2@ string2 "да"
    then
            if
                 // Проверка что ты в тюрьме или хз где
            then
                actor.PutAt($Player_Actor, 1480.85, -1771.34,21.4741)
                chatmsg "{ff0000}Добро пожаловать на волю бро!" -1
            else
                chatmsg "{ff0000}Братишка ты итак на воле" -1
            end
    end
    samp.CmdRet()
    
    Скинь в ЛС текстовик с ЧС и весь код
     
    #14138 D3.Pheonix, 12 янв 2018
    Последнее редактирование: 12 янв 2018
  19. kewa opcode

    kewa opcode плакса
    Проверенный

    Регистрация:
    15.04.2017
    Сообщения:
    317
    Симпатии:
    209
    Репутация:
    24
    сначала проверяй в каком ты интерьере а потом уже телепортируй лмао
     
  20. noobik.cs

    noobik.cs Известный пользователь

    Регистрация:
    23.09.2013
    Сообщения:
    55
    Симпатии:
    0
    Репутация:
    0
    А как подсчитать количество человек в сети с определенным цветом ника
     
  21. kewa opcode

    kewa opcode плакса
    Проверенный

    Регистрация:
    15.04.2017
    Сообщения:
    317
    Симпатии:
    209
    Репутация:
    24
    циклом фор из тысячи итераций от нуля проходишь по всем подключенным айди, параллельно проверяя цвет ника
    если этот игрок подходит по критериям то инкремент в какуюнибудтб переменную, которая на выходе будет содержать в себе кол-во подключенных игроков с определенным цветом ника
     
  22. MaIIoy

    MaIIoy Пользователь

    Регистрация:
    09.01.2018
    Сообщения:
    17
    Симпатии:
    1
    Репутация:
    0
    Привет всем! Вы не можете сказать опкод на проверку где сейчас я нахожусь ну точнее допустим если я нахожусь не в тюрьме ,а на улице или где нибудь еще то мне высветиться в чат то что я не в кпз
     
  23. DarkP1xel

    DarkP1xel #ТГК
    BH Team

    Регистрация:
    17.06.2013
    Сообщения:
    2.392
    Симпатии:
    1.629
    Репутация:
    382
    Нет такого опкода.
     
  24. MaIIoy

    MaIIoy Пользователь

    Регистрация:
    09.01.2018
    Сообщения:
    17
    Симпатии:
    1
    Репутация:
    0
    Привет, а есть такой опкод когда вводишь допустим /команда и тебя смещает на несколько метров если да то помогите пожалуйста
     
  25. DarkP1xel

    DarkP1xel #ТГК
    BH Team

    Регистрация:
    17.06.2013
    Сообщения:
    2.392
    Симпатии:
    1.629
    Репутация:
    382
    Такого опкода тоже нет.
     
  26. dankestmemer

    dankestmemer Известный пользователь

    Регистрация:
    21.08.2015
    Сообщения:
    105
    Симпатии:
    39
    Репутация:
    13
    Записываешь свои координаты в переменную, затем изменяешь их так, как тебе надо, после чего телепортируешь актера на полученные корды.
    Телепортация реализуется через
    Actor.PutAt()
    , или через опкод 00A1.
     
  27. noobik.cs

    noobik.cs Известный пользователь

    Регистрация:
    23.09.2013
    Сообщения:
    55
    Симпатии:
    0
    Репутация:
    0
    {$CLEO}
    0000: TEST
    
    repeat
    wait 0
    until 0AFA:
    
    :test1
    00D6: if
    0AAB:   file_exists "CLEO\test.ini"
    004D: jump_if_false @ini
    alloc 2@ 128
    0AF4: 2@ = read_string_from_ini_file "cleo\test.ini" section "test" key "test"
    0B34: samp register_client_command 2@ to_label @cmd
    0BDE: pause_thread 0
    
    
    :ini
    0AF5: write_string "qq" to_ini_file "cleo\test.ini" section "test" key "test"
    0002: jump @test1
    
    :cmd
    samp.CmdRet
    Что не так?) Спасибо
     
  28. iTz_Vercetti

    Проверенный

    Регистрация:
    03.12.2016
    Сообщения:
    168
    Симпатии:
    108
    Репутация:
    30
    Надеюсь, что-нибудь изменится
    
    {$CLEO}
    0000: TEST
    
    while not samp.available()
        wait 420
    end
    
    if 8AAB:  not file_exists "CLEO\test.ini"
    then 0AF5: write_string "qq" to_ini_file "cleo\test.ini" section "test" key "test"
    end
    
    alloc 2@ 128
    0AF4: 2@ = read_string_from_ini_file "cleo\test.ini" section "test" key "test"
    
    0B34: samp register_client_command 2@ to_label @cmd
    0BDE: pause_thread 0
    
    :cmd
    // some code
    samp.CmdRet
    
     
  29. ROSEDEANEQWE

    ROSEDEANEQWE Новичок

    Регистрация:
    01.01.2018
    Сообщения:
    2
    Симпатии:
    0
    Репутация:
    0
    Всем привет! Я начал писать скрипт! 1-раз пишу И в чем суть! Я сказал Sanny Builder 3 С оф сайта
    Дальше написал скрипт Хочу Скомпилировать! Пишет Невозможно загрузить SF!

    Ребят Помогите пожалуйста! Я новичок :с

    Сам скрипт:

     
  30. kewa opcode

    kewa opcode плакса
    Проверенный

    Регистрация:
    15.04.2017
    Сообщения:
    317
    Симпатии:
    209
    Репутация:
    24
    это очень популярный вопрос в этой теме

    просто установи опкоды сф в сб
     
  31. MaIIoy

    MaIIoy Пользователь

    Регистрация:
    09.01.2018
    Сообщения:
    17
    Симпатии:
    1
    Репутация:
    0
    Помогите пожалуйста сделать скрипт который при ввода команды /tpa проверяется поставлена ли метка на карте? Если метка поставлена то создается NRG500 (мопед) и нас телепортирует туда и выкидывает с мопеда. NRG500 естественно визуальный при этом если не поставлена метка то написано будет в чат что метка не поставлена! Прошу помочь!!! Пожалуйста
     
  32. kewa opcode

    kewa opcode плакса
    Проверенный

    Регистрация:
    15.04.2017
    Сообщения:
    317
    Симпатии:
    209
    Репутация:
    24
    if 0AB6: store_target_marker_coords_to 0@ 1@ 2@ // IF and SET
    then
        // МЕТКА СУЩЕСТВУЕТ
    end
    а вообще судя по твоей просьбе тебе в раздел Работа и услуги.
     
    romanblinov2013 нравится это.
  33. kewa opcode

    kewa opcode плакса
    Проверенный

    Регистрация:
    15.04.2017
    Сообщения:
    317
    Симпатии:
    209
    Репутация:
    24
    model.Load(#NRG500)   // загрузили модель мопеда
    actor.StorePos($player_actor, 1@, 2@, 3@) // получили свою позицию
    00A5: 0@ = create_car #NRG500 at 1@ 2@ 3@ // создали мопед
    036A: put_actor $player_actor in_car 0@   // тпхнулись в нево
    car.PutAt(0@, 0.0, 0.0, 0.0)              // тпхнулись куда надо
    actor.PutAt($player_actor, 1@, 2@, 3@)    // вышли с нево
    00A6: destroy_car 0@                      // удалили
    model.Destroy(#NRG500)                    // выгрузили
    хуй знает мб работает не проверял
     
    romanblinov2013 нравится это.
  34. MaIIoy

    MaIIoy Пользователь

    Регистрация:
    09.01.2018
    Сообщения:
    17
    Симпатии:
    1
    Репутация:
    0
    Помогите, что не так с кодом? Я хотел чтоб когда я поставил метку на карту и прописал /tpa то создавался визуальный мопед и меня тп-хало ,а потом я просто вставал с мопеда и все. Это как бы обход анти air break на нубо рп но не суть! Как только я ввожу /tpa мой персонаж тп-хается на грува с бутылкой и походкой сиджея!
    {$CLEO .cs}
    0000: NOP
    :1
    wait 1000
    0AF8: samp add_message_to_chat "CLEO TPA by MALLOY" color 0x69AA30
    12@ = Samp.Base()
    repeat
    wait 0
    until Samp.Available()
    0B34: samp register_client_command "tpa" to_label @tp
    repeat
    wait 0
    if
    0@ == 1
    then
    Model.Load(#NRG500)
    038B: load_requested_models
    actor.StorePos($player_actor, 1@, 2@, 3@) // получили свою позицию
    00A5: 0@ = create_car #NRG500 at 1@ 2@ 3@ // создали мопед
    036A: put_actor $player_actor in_car 0@   // тпхнулись в нево
    car.PutAt(0@, 0.0, 0.0, 0.0)              // тпхнулись куда надо
    actor.PutAt($player_actor, 1@, 2@, 3@)    // вышли с нево
    00A6: destroy_car 0@                      // удалили
    model.Destroy(#NRG500)
    0@ = 0
    end
    until false
    :tp
    wait 0
    if
    0@ == 0
    then
    0@ = 1
    end
    Samp.CmdRet()
     
    #14154 MaIIoy, 14 янв 2018
    Последнее редактирование модератором: 17 янв 2018 в 00:51
  35. D3.Pheonix

    D3.Pheonix biboran
    Проверенный

    Регистрация:
    21.03.2013
    Сообщения:
    461
    Симпатии:
    157
    Репутация:
    33
    
    {$CLEO .cs}
    0000: NOP
    
    repeat
    wait 0
    until Samp.Available()
    0B34: samp register_client_command "tpa" to_label @tp
    
    while true
    wait 0
        if
            0@ == 1
        then
             0AB6: store_target_marker_coords_to 6@ 7@ 8@
              actor.StorePos($player_actor, 1@, 2@, 3@)
               Model.Load(522)
                038B: load_requested_models
                 00A5: 0@ = create_car 522 at 1@ 2@ 3@
                   036A: put_actor $player_actor in_car 0@
                   car.PutAt(0@, 6@, 7@, 8@)
                   wait 300
                    actor.StorePos($player_actor, 1@, 2@, 3@)
                   0362: remove_actor $PLAYER_ACTOR from_car_and_place_at 1@ 2@ 3@
                  02EB: restore_camera_with_jumpcut
                 00A6: destroy_car 0@
                model.Destroy(522)
               0@ = 0
            chatmsg "teleport done" 0xff2dba09
        end
    end
    
    :tp
    0A8D: 31@ = read_memory 0xBA6774 size 4 virtual_protect 0
       if    075C:   marker 31@ enabled
         then
            0@ = 1
         else
            chatmsg "target marker not found" 0xFFFF0000
       end
    Samp.CmdRet()
     
    #14155 D3.Pheonix, 14 янв 2018
    Последнее редактирование: 14 янв 2018
  36. noobik.cs

    noobik.cs Известный пользователь

    Регистрация:
    23.09.2013
    Сообщения:
    55
    Симпатии:
    0
    Репутация:
    0
    а как сделать чтобы прописав команду /test id . Открылся ТАБ и этот игрок выбрался там
     
  37. DarkP1xel

    DarkP1xel #ТГК
    BH Team

    Регистрация:
    17.06.2013
    Сообщения:
    2.392
    Симпатии:
    1.629
    Репутация:
    382
    0BC8: samp send_click_player 420 source 0
     
  38. lordpower

    lordpower Известный пользователь

    Регистрация:
    18.03.2016
    Сообщения:
    79
    Симпатии:
    1
    Репутация:
    0
    while true
    wait 0
        if 0@ == 1
        then
            for 2@ = 0 to 300 step 1
                if 0B23:  samp is_player_connected 2@
                then
                    0B65: samp 3@ = player 2@ score
                    if and
                    3@ > -1
                    3@ < 5
                    then
                        say "/cmd %d text." 2@
                    end
                end
                0@ = 0
            end
        end
    end
    Почему отправляет текст игроку выше указанного уровня?
    Т.е. играет игрок до 5 score, выходит, заходит игрок выше указанного и ему тоже отправляется сообщение?
     
  39. T1cK

    T1cK Пользователь

    Регистрация:
    27.04.2015
    Сообщения:
    10
    Симпатии:
    0
    Репутация:
    0
    Как сделать коллизию машин? Без активации без ничего, мне нужно встроить её в код. Вызывать буду всё равно через 0c6a
     
  40. jaggerjam

    jaggerjam Известный пользователь

    Регистрация:
    29.07.2016
    Сообщения:
    46
    Симпатии:
    1
    Репутация:
    2
    Ну как бы у меня выдаётся краш, а не таймер, может кто-то мне помочь?. Проверка на @show_near_004 работает.
    
    :cmd
        SAMP.IsCommandTyped(20@)
            if
            0AD4: 20@ = scan_string 20@ format "%d" 21@
            then
               if and
               0B20: samp 1@ = actor_handle_by_samp_player_id 21@
               056D: actor 1@ defined
             jf @show_near_004
         gosub @timer_5_sec
        0B36: samp 1@ = get_player_nickname 21@
    
        0AF9: samp say_msg "%s, blbla." 1@
        0AF9: samp say_msg "blbl"
    
            print "~r~Type again!" 1000
    else
        print "~r~/cmd<id>" 2000
    end
    SAMP.CmdRet()
    
    :show_near_004
    print "~r~Player is not near of you!" 2000
    jump @cmd
    SAMP.CmdRet
    
    
    :timer_5_sec
    5@ = 4
                0C74: 2@ = create_timer_interval 1000 on_label @timer
                repeat
                wait 0
                    0C7C: 4@ = get_timer 2@ time_left
                    0016: 4@ /= 100
                    0AD1: show_formatted_text_highpriority "Time left: ~r~ %d.%d sec" time 100  5@ 4@
                until 8019: not 5@ > -1
                0C78: set_timer 2@ active false
    
    return
    
    :timer
    5@ -= 1
    cmdret