#26 13-07-2013 23:02

НикИТОС
Registered: 05-06-2013
Posts: 133
Website

Re: Помогите с созданием таймера

Последний скрипт я вытащил из мейна, куда я его давно засунул, когда тестил таймеры. Сейчас просто скопировал сюда с небольшой правкой, безо внимания добавил директиву {$CLEO}, скомпилировал, запустил и побежал по своим делам. Но во всяком случае посыпаю главу пеплом, так как за мной такие грешки имеются, ибо я нуб, и мне такие вещи сразу глаз не режут.

Offline

#27 14-07-2013 11:20

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Помогите с созданием таймера

@НикИТОС - глобальные переменные ( X$ ) в КЛЕО скриптах использовать нельзя, только локальные ( X@ ). Опкоды таймера (в описании которых есть слово"timer") требуют использования глобальных переменных, поэтому данные команды в КЛЕО скриптах также не используются. А вместо команды end_thread в КЛЕО скриптах используется 0A93: end_custom_thread
Код таймера обратного отсчёта в формате минуты-секунды для КЛЕО:

{$CLEO}
wait 0
while true
    repeat
        wait 0
    until 0AB0: key_pressed 32
    while true
        if
            32@ > 150000
        then
            32@ = 0
        end
        
        0A8F: 1@ = 150000 - 32@ // int
        0085: 0@ = 1@ // (int)
        0@ /= 60000
        
        03F0: enable_text_draw 1
        045A: draw_text_1number 200.0 200.0 GXT 'NUMBER' number 0@  // ~1~
                
        0@ *= 60000
        0062: 1@ -= 0@ // (int)  
        1@ /= 1000
        
        045A: draw_text_1number 220.0 200.0 GXT 'NUMBER' number 1@  // ~1~
        
        if and
            0@ == 0
            1@ == 0
        then
            break
        end
            
        wait 0        
    end
end

Offline

#28 14-07-2013 11:24

Seemann
Registered: 07-08-2006
Posts: 2,156

Re: Помогите с созданием таймера

Den_spb wrote:

Опкоды таймера (в описании которых есть слово"timer") требуют использования глобальных переменных, поэтому данные команды в КЛЕО скриптах также не используются.

http://sannybuilder.com/forums/viewtopic.php?id=255

Offline

#29 14-07-2013 12:16

eek
Registered: 06-07-2013
Posts: 23
Website

Re: Помогите с созданием таймера

Спасибо! А между цифрами возможно двоеточие поставить? И чтобы счет продолжался в свернутом режиме

Last edited by eek (14-07-2013 12:17)

Offline

#30 14-07-2013 23:09

eek
Registered: 06-07-2013
Posts: 23
Website

Re: Помогите с созданием таймера

Кто то знает?

Offline

#31 14-07-2013 23:21

НикИТОС
Registered: 05-06-2013
Posts: 133
Website

Re: Помогите с созданием таймера

Что ты подразумевал под свёрнутым режимом? Зачем это?

Offline

#32 15-07-2013 08:09

eek
Registered: 06-07-2013
Posts: 23
Website

Re: Помогите с созданием таймера

Ну чтобы счет шел даже при свернутой игре. И там ещё нужно было бы добавить двоеточие. Там вот так время идёт -          3 32, а лучше вот так 3 : 32

Last edited by eek (15-07-2013 08:10)

Offline

#33 15-07-2013 12:31

НикИТОС
Registered: 05-06-2013
Posts: 133
Website

Re: Помогите с созданием таймера

:Test
0000:

:Test_2
wait 0
$Time = 150000
If 0AB0: key_pressed 32
JF @Test_2
014E: set_timer_to $Time type 1
        
:Test_3
wait 0
if
$Time < 1
jf @Test_3
end_thread

Вот код для Main.SCM. Счётчик в свёрнутом режиме, я думаю, работать не будет, ибо любые скрипты, вроде, в таком режиме не пашут.

Offline

#34 15-07-2013 16:03

eek
Registered: 06-07-2013
Posts: 23
Website

Re: Помогите с созданием таймера

{$CLEO}
wait 0
while true
    repeat
        wait 0
        if and
    0AB0: key_pressed 17
    0AB0: key_pressed 77
    while true
        if
            32@ > 150000
        then
            32@ = 0
        end
        
        0A8F: 1@ = 150000 - 32@ // int
        0085: 0@ = 1@ // (int)
        0@ /= 60000
        
        03F0: enable_text_draw 1
        045A: draw_text_1number 200.0 200.0 GXT 'NUMBER' number 0@  // ~1~
                
        0@ *= 60000
        0062: 1@ -= 0@ // (int)  
        1@ /= 1000
        
        045A: draw_text_1number 220.0 200.0 GXT 'NUMBER' number 1@  // ~1~
        
        if and
            0@ == 0
            1@ == 0
        then
            break
        end
            
        wait 0        
    end

почему не работает активация на сочитание клавиш?

Offline

#35 15-07-2013 16:17

НикИТОС
Registered: 05-06-2013
Posts: 133
Website

Re: Помогите с созданием таймера

{$CLEO}
wait 0

:Test
0000:

:Test_2
Wait 0
if and
    0AB0: key_pressed 17
    0AB0: key_pressed 77
    JF @Test_2
    
:Test_3
while true
    repeat
        wait 0
    while true
        if
            32@ > 150000
        then
            32@ = 0
        end
        
        0A8F: 1@ = 150000 - 32@ // int
        0085: 0@ = 1@ // (int)
        0@ /= 60000
        
        03F0: enable_text_draw 1
        045A: draw_text_1number 200.0 200.0 GXT 'NUMBER' number 0@  // ~1~
                
        0@ *= 60000
        0062: 1@ -= 0@ // (int)  
        1@ /= 1000
        
        045A: draw_text_1number 220.0 200.0 GXT 'NUMBER' number 1@  // ~1~
        
        if and
            0@ == 0
            1@ == 0
        then
            break
        end
            
        wait 0        
    end

Offline

#36 15-07-2013 21:03

eek
Registered: 06-07-2013
Posts: 23
Website

Re: Помогите с созданием таймера

А такой же активацией 17 + 77, можно сбить обратный счет? Остановить его.

Offline

#37 15-07-2013 21:07

eek
Registered: 06-07-2013
Posts: 23
Website

Re: Помогите с созданием таймера

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

Offline

#38 16-07-2013 02:13

yelmi
Registered: 10-12-2006
Posts: 134
Website

Re: Помогите с созданием таймера

eek wrote:

И там ещё нужно было бы добавить двоеточие.

А GXT файл открыть не судьба?

eek wrote:

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

while true
    repeat
        wait 0

Замени на это и будет тебе счастье smile

while true
  FOR
    repeat
        wait 0

Заодно, может быть, научишься составлять правильно циклы.

Тряхнул стариной, держи код.

{$CLEO}
0000:

while true
  wait 0
    if and
      0AB0: key_pressed 17
      0AB0: key_pressed 77
    then
       32@ = 0
        while true
          wait 0
            0A8F: 1@ = 150000 - 32@ // int
            0085: 0@ = 1@ // (int)
            0@ /= 60000
            0085: 2@ = 0@ // (int)
            2@ *= 60000
            0062: 1@ -= 2@ // (int)  
            1@ /= 1000
            03F0: enable_text_draw 1
            if 
              0019: 1@ > 9
              then
                045B: draw_text_2numbers 200.0 200.0 GXT 'TIME' numbers 0@ 1@  // ~1~:~1~
              else
                045B: draw_text_2numbers 200.0 200.0 GXT 'TIME_0' numbers 0@ 1@  // ~1~:~1~
              end  
             if and
                0@ == 0
                1@ == 0
             then
                break
             end
             if and
               32@ > 2000
               0AB0: key_pressed 17
               0AB0: key_pressed 77
             then
               wait 1000
               break  
             end
        end
    end   
end

Last edited by yelmi (16-07-2013 02:17)

Offline

#39 16-07-2013 11:05

eek
Registered: 06-07-2013
Posts: 23
Website

Re: Помогите с созданием таймера

Спасибо большое, все работает))

Offline

#40 17-07-2013 20:13

eek
Registered: 06-07-2013
Posts: 23
Website

Re: Помогите с созданием таймера

а деактивацию как сделать? и возможно ли продолжить отсчет в свернутом режиме?

Offline

Board footer

Powered by FluxBB