Kullanabileceğiniz alanlara sınırsız desem yalan olmaz.
- Kuluçka sisteminde gün/saat/dk/saniye gösterirken
- Karakter yaşını hesaplarken
- Karakterin online süresini hesaplarken
- Sunucu uptime hesaplarken
- Kalan stuck süresini hesaplarken
Bununla da kalmayarak göstereceğiniz zaman dilimlerini tek bir harfle belirleyebilirsiniz.
- Gün
- Saat
- Dakika
- Saniye
[FUNCTION get.time]
local._type = "<strarg <args>>"
local._filter = "<strarg <streat <args>>>"
IF strmatch(min,<local._type>)
local._value = "1440"
ELSEIF strmatch(sec,<local._type>)
local._value = "86400"
ELSEIF strmatch(sip,<local._type>)
local._value = "864000"
ENDIF
args <streat <streat <args>>>,<dlocal._value>,<eval <dlocal._value>/24>,<eval (<dlocal._value>/24)/60>
IF strregex(d,<local._filter>)
local._d = "<eval <argv[0]>/<argv[1]>>"
IF (<local._d>)
local.return .= " <dlocal._d>gn"
ENDIF
ENDIF
IF strregex(h,<local._filter>)
local._h = "<eval (<argv[0]>%<argv[1]>)/<argv[2]>>"
IF (<local._h>)
local.return .= " <dlocal._h>sa"
ENDIF
ENDIF
IF strregex(m,<local._filter>)
local._m = "<eval ((<argv[0]>%<argv[1]>)%<argv[2]>)/<argv[3]>>"
IF (<local._m>)
local.return .= " <dlocal._m>dk"
ELSEIF !strregex(s,<local._filter>)
IF strmatch(sip,<local._type>)
local.return .= " <feval <fval ((<argv[0]>%<argv[1]>)%<argv[2]>)%<argv[3]>>>sn"
ELSE
local.return .= " <eval ((<argv[0]>%<argv[1]>)%<argv[2]>)%<argv[3]>>sn"
ENDIF
ENDIF
ENDIF
IF strregex(s,<local._filter>)
IF strmatch(sip,<local._type>)
local.return .= " <feval <fval ((<argv[0]>%<argv[1]>)%<argv[2]>)%<argv[3]>>>sn"
ELSE
local.return .= " <eval ((<argv[0]>%<argv[1]>)%<argv[2]>)%<argv[3]>>sn"
ENDIF
ENDIF
RETURN <streat <local.return>>
Zaman türleri
Sphere de zamanları türlerine göre ayırmak gerekirse, dakika, saniye ve salise cinsinden zamanlama çeşitleri mevcuttur.
- serv.time salise üzerinden çalışır
- account.totalconnecttime dakika üzerinden çalışır
- serv.timeup saniye üzerinden çalışır
- timerf ve diğer eşyalara verdiğimiz timer saniye üzerinden çalışır
Durum böyle olunca hesaplamayı, hepsine ayrı ayrı formül yazmaktan kurtularak bu ufak fonksiyonla yapabilirsiniz.
Fonksiyonada bu zaman türleri şu şekildedir;
min, sec, sip
Zaman formatları
Geçen veya kalan zamanı hesaplamak, gün, saat, dakika gibi hepsini tek tek formülle göstermek yerine basitleştirilmiş şekilde yararlanabilirsiniz.
Fonksiyonda zaman formatları şu şekildedir;
d, h, m, s
Kullanım örnekleri
Kullanımını göstermek için basit bir fonksiyon yaparak işleme devam edelim
[FUNCTION doit]Gösterilen sonuç: 1gn 6sa 5dk 10sn
say <get.time sec dhms <serv.timeup>>
İşte bu kadar basit. Fonksiyonu get.time ile çağırıp sec ile neyin zamanını göstermek istiyorsak onun zaman türünü yazıyoruz ve ardından hangi formatta göstermek istediğimizi dhms ile belirtiyoruz.
[FUNCTION doit]Gösterilen sonuç: 30sa 5dk 10sn
say <get.time sec hms <serv.timeup>>
Bu örnekte hms kullanarak gün gösterimi iptal ettim. Fakat serv.timeup süresi 1 günden fazla olduğu için hepsini saat olarak hesaplayıp gösterdi.
Account.totalconnecttime hesaplarken bu değerin min yani dakika türünden olduğunu belirtmeliyim. Bundan başka min türü varmı bilmiyorum hiç denk gelmedi. Hemen örneğini göstereyim.
[FUNCTION doit]Gösterilen sonuç: 10gn 5sa 56dk
say <get.time min dhm <account.totalconnecttime>>
Şimdi de serv.time ile bir örnek görelim. Bu zaman türünde, zaman formatına s ekleseniz bile gösterilmeyecektir.
Kendimize bir <tag> alarak, sunucunun şuanki serv.time değerini kaydederek başlayalım.
tag.timer <serv.time>
Ardından şu komutu sürekli tekrarlayalım.
[FUNCTION doit]Gösterilen sonuç: Geride kalan zaman 1sn
say Geride kalan zaman <get.time sip dhms <eval <serv.time>-<tag.timer>>>
Komutu kullanma sıklığınıza bağlı olarak tekrarında sürekli olarak değer artacaktır.
Gösterilen sonuç: Geride kalan zaman 2sn
Bir nesnenin(item) kalan zamanını göstermek için ise şöyle yapabiliriz.
[ITEMDEF i_doit]
name doit
type t_script
id i_deed
ON=@Create
timer 90
ON=@Timer
remove
return 1
ON=@Click
message <get.time sec dhms <timer>>
Sonuç olarak get.time fonksiyonu
İşinizi kolaylaştırarak temiz bir kodlama yapmanızı sağlayacağından eminim. Kullanımı tarafımdan en basite indirilmiştir. Fonksiyonun rahatlığına çabuk alışacağınızdan eminim.
Hiç yorum yok:
Yorum Gönder