Сейчас 23:39:10 Воскресенье, 1 декабря, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Лидерборд
FatalBladeДата: Пятница, 06 Января 2012, 13:10:58 | Сообщение # 1
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Я сделал так, что бы в игре отображалось время игры, то есть сколько времени уже идёт игра.
Вот код:
Это в ините карты:
Code


     local integer i = 1
     set udg_GameTime = CreateLeaderboard()
     loop
       exitwhen i > 9
         call LeaderboardSetLabel( udg_GameTime, "  Time:   " + I2S(R2I(udg_Time[3])) + " : " + I2S(R2I(udg_Time[2])) + " : " + I2S(R2I(udg_Time[1])) )
         call PlayerSetLeaderboard(Player(i), udg_GameTime)
         call LeaderboardDisplay(udg_GameTime, true)
         set i = i + 1
     endloop


А это код работы лидерборда:
Code
    
function Trig_Time_Actions takes nothing returns nothing
  set udg_Time[1] = udg_Time[1] + 1
     if udg_Time[1] >= 60.00 then
         set udg_Time[1] = 0.00
         set udg_Time[2] = udg_Time[2] + 1
     endif
     if udg_Time[2] >= 60.00 then
         set udg_Time[2] = 0.00
         set udg_Time[3] = udg_Time[3] + 1
     endif
     call LeaderboardSetLabel( udg_GameTime, "  Time:   " + I2S(R2I(udg_Time[3])) + " : " + I2S(R2I(udg_Time[2])) + " : " + I2S(R2I(udg_Time[1])) )

//===========================================================================
function InitTrig_Magic_Up takes nothing returns nothing
     set gg_trg_Time = CreateTrigger()
     call TriggerRegisterTimerEvent( gg_trg_Time, 1.00, true )
     call TriggerAddAction( gg_trg_Time, function Trig_Time_Actions )
endfunction


В результате отображается время данной игры. Но, отображается оно не так как должно отображаться время. Например 00:01:08, он будет показывать вот так 0:1:8. Как сделать так, что если значение одного из 3-х параметров (часы, минуты, секунды), меньше 10, то к ним слева приписывался 0. Например 01,06,09... но не 010, а 10, потому что это двухзначное число.


 

DiabfallДата: Пятница, 06 Января 2012, 13:27:26 | Сообщение # 2
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
Как вариант.
Code

local integer i=0
...
loop
exitwhen i==3
set i=i+1
if udg_Time[i]<10  then
set String[i]="0"
else
set String[i]=""
endif
endloop
call LeaderboardSetLabel( udg_GameTime, "  Time:   "+ String[3] + I2S(R2I(udg_Time[3])) + " : " + String[2] + I2S(R2I(udg_Time[2])) + " : " + String[1] + I2S(R2I(udg_Time[1])) )


Сообщение отредактировал Diabfall - Пятница, 06 Января 2012, 13:52:15
 

BorodachДата: Пятница, 06 Января 2012, 13:29:00 | Сообщение # 3
9 уровень
Группа: Проверенные
Сообщений: 930
Награды: 0
Репутация: 422
Блокировки:
Сделай больше чисел.
Если тайм[1]>9 то установить тайм[2]+1 и тайм[1]=0
если тайм[2]>=6 то установить тайм[2]=0


Karamba
 

lawsonДата: Пятница, 06 Января 2012, 14:31:33 | Сообщение # 4
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
FatalBlade, зачем реал для времени? Инт сойдет. Вот как у меня, на метод не обращай внимания:
Code
public method SelectTime takes nothing returns nothing
    set this.seconds = this.seconds + 1
    if (this.seconds > 59) then
    set this.seconds = 0
    set this.minutes = this.minutes + 1
    endif
    if (this.seconds < 10) then
    call MultiboardSetTitleText(this.mb, I2S(this.minutes) + ":" + "0" + I2S(this.seconds) + " " + "WASAI 1.1 Board")
    else
    call MultiboardSetTitleText(this.mb, I2S(this.minutes) + ":" + I2S(this.seconds) + " " + "WASAI 1.1 Board")
    endif
    endmethod

Секунды чекаются через другой внешний периодический триггер дающий игроками золото.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Пятница, 06 Января 2012, 14:35:33
 

FatalBladeДата: Пятница, 06 Января 2012, 14:52:12 | Сообщение # 5
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (lawson)
Секунды чекаются через другой внешний периодический триггер дающий игроками золото.

?
У меня не как в Доте.
У меня золото даётся за убийство мобов (по формуле зависящей от уровня убитого) и периодически каждые 3 минуты по сложной формуле зависящей от количества Очков Репутации.
Короче если игрок стоит в городе и курит, то золото ему вообще не светит.

Время я сделал так, для красоты))


 

lawsonДата: Пятница, 06 Января 2012, 14:56:22 | Сообщение # 6
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (FatalBlade)
У меня не как в Доте.

ОКазывает пувер ругает за оффтоп:


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Пятница, 06 Января 2012, 14:56:35
 

FatalBladeДата: Пятница, 06 Января 2012, 14:59:04 | Сообщение # 7
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:


 

lawsonДата: Пятница, 06 Января 2012, 14:59:52 | Сообщение # 8
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Пятница, 06 Января 2012, 15:00:12
 

DiabfallДата: Пятница, 06 Января 2012, 16:21:01 | Сообщение # 9
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
FatalBlade,
Code
function Trig_Time_Actions takes nothing returns nothing
   local integer i=0
   local string s
   set udg_Time[1] = udg_Time[1] + 1  
      if udg_Time[1] >= 60.00 then  
          set udg_Time[1] = 0.00  
          set udg_Time[2] = udg_Time[2] + 1  
      endif  
      if udg_Time[2] >= 60.00 then  
          set udg_Time[2] = 0.00  
          set udg_Time[3] = udg_Time[3] + 1  
      endif  
      loop  
          exitwhen i==3  
          set i=i+1  
          if udg_Time[i]<10  then  
              set s[i]="0"  
          else  
              set s[i]=""  
          endif  
      endloop  
      call LeaderboardSetLabel( udg_GameTime, "  Time:   "+ s[3] + I2S(R2I(udg_Time[3])) + " : " + s[2] + I2S(R2I(udg_Time[2])) + " : " + s[1] + I2S(R2I(udg_Time[1])) )
endfunction

//===========================================================================  
function InitTrig_Magic_Up takes nothing returns nothing  
      set gg_trg_Time = CreateTrigger()  
      call TriggerRegisterTimerEvent( gg_trg_Time, 1.00, true )  
      call TriggerAddAction( gg_trg_Time, function Trig_Time_Actions )  
endfunction


Quote (lawson)
Смысл

Он хочет признание Фрога. nate
 

tRu^SДата: Пятница, 06 Января 2012, 16:27:21 | Сообщение # 10
8 уровень
Группа: Проверенные
Сообщений: 614
Награды: 0
Репутация: 138
Блокировки:
Quote (Diabfall)
Он хочет признание Фрога.

xD , это же смысл!


 

lawsonДата: Пятница, 06 Января 2012, 16:57:18 | Сообщение # 11
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Diabfall)
Он хочет признание Фрога.

Нет спасибо признание этого нуба мне не нужно.
Quote (tRu^S)
xD , это же смысл!

Как всегда ни очем.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

SirNikolasДата: Пятница, 06 Января 2012, 16:59:56 | Сообщение # 12
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Diabfall)
Code
      loop   
           exitwhen i==3   
           set i=i+1   
           if udg_Time[i]<10  then   
               set s[i]="0"   
           else   
               set s[i]=""   
           endif   
       endloop  
Цикл в три прохода не есть хорошо.


 

DiabfallДата: Пятница, 06 Января 2012, 17:20:02 | Сообщение # 13
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
Quote (SirNikolas)
Цикл в три прохода не есть хорошо.

Омг. Нашёл таки к чему прицепиться. :D Кому надо тот распишет без цикла, а мне лень.
 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz