UO-Dev Arama

 



İçerde : 1 misafir, 0 üye : --- Sayfalar: 1
Yazar

athynas


UO-Dev Üyesi
Skill Title: Journeyman
Online durumu
Toplam Mesaj: 105
Oyun Tarzı: Pp
Emulatör: 0.56b
Tecrübe: World Builder
Yaş: 31
Mesaj #96302   01-09-2018 19:55 GMT    
        
Merhaba, ara ara nasıl dialog ile status bar yapılabileceğini düşünüyordum. Bugün boş vakit bulunca uğraşayım istedim. Sonuç pek fena olmadı gibi, benim gibi kendi halinde ya da arkadaşlarıyla oynayanlar için de kullanılabilir. Sadece hits, stam ve int güncellemesinde kendisini yenilemiyor. Ancak Avatar'ın kendi triggerlarını oluşturduğunu fark etmiştim, bu şekilde o kısım halledilebilir.Sanıyorum ki sunucuda kullanmak namına pek sağlıklı olmaz. Bizim gibi arada maksimum 10 kişiye erişen kişilere uygun gibi. Ben deneme amaçlı yaptığımdan, daha çok geliştirmeyi deneyeceğimden bir iki kısmın üzerinde kafa yormadım. Aslında çok basit ancak benim açımdan epey kafa patlatmam gerekti.

Bu dialog nasıl daha iyi hale getirilebilir?

(Konuyu yanlış yere açmışım, 56b olacaktı, kusura bakmayın)


Not: Gumps içerisinde ilk çekildiğinde çıkan status barı (HP, Stam ve Mana barları olanı) 1x1 piksel olacak şekilde değiştirdim.

Kod:
[DIALOG d_statusbar]
0,0
resizepic 60 60 <var.theme1> 1 1
gumppic 280 220 2050 /Status
dtext 368 258 1153 <src.name>
dtext 365 275 1153 <src.str>
dtext 450 275 1153 <src.hits>
dtext 365 290 1153 <src.dex>
dtext 450 290 1153 <src.stam>
dtext 365 305 1153 <src.int>
dtext 450 305 1153 <src.mana>
dtext 365 325 1153 <src.ar>
dtext 450 325 1153 <EVAL (<src.weight> / 10)>/<EVAL (<src.maxweight> / 10)>
dtext 340 350 1153 <EVAL (<src.gold.amount>)>

[Events e_statusbar]
on=@UserStats
if (<argo> == <uid>)
SRC.DIALOGCLOSE d_statusbar
src.dialog d_statusbar
  RETURN 1
elif !(<argo> != <uid>)
  RETURN 0
ENDIF

On=@RegenStat
SRC.DIALOGCLOSE d_statusbar
src.dialog d_statusbar

on=@GetHit
SRC.DIALOGCLOSE d_statusbar
src.dialog d_statusbar

on=@StatChange
SRC.DIALOGCLOSE d_statusbar
src.dialog d_statusbar

on=@statchange_hits
SRC.DIALOGCLOSE d_statusbar
src.dialog d_statusbar

on=@statchange_stam
SRC.DIALOGCLOSE d_statusbar
src.dialog d_statusbar

on=@statchange_mana
SRC.DIALOGCLOSE d_statusbar
src.dialog d_statusbar

[function checkstat]
if (<isempty <tag.statchange_hits>>) || (<isempty <tag.statchange_mana>>) || (<isempty <tag.statchange_stam>>)
  tag.statchange_hits=<hits>
  tag.statchange_mana=<mana>
  tag.statchange_stam=<stam>
else
  if !(<dtag0.statchange_hits>==<hits>)
    trigger @statchange_hits
  endif
  if !(<dtag0.statchange_mana>==<mana>)
    trigger @statchange_mana
  endif
  if !(<dtag0.statchange_stam>==<stam>)
    trigger @statchange_stam
  endif
endif
if (<isonline>)
  timerf 1, checkstat
else
  tag.statchange_hits=
  tag.statchange_mana=
  tag.statchange_stam=
endif



[EOF]


Son güncelleme: athynas tarafından 04-09-2018 19:52 GMT, 76 Gün önce düzenlendi.


 Ce-man

Yazar

Ce-man


UO-Dev Üyesi
Skill Title: Neophyte
Online durumu
Toplam Mesaj: 1
Oyun Tarzı: Rp
Emulatör: Sphere
Tecrübe: Scripter
Yaş: 48
Mesaj #96348   04-09-2018 19:27 GMT    
        
Bizde böyle birşey arıyordukda , acep tam halini atarmısınız ? böyle can gelince yansıtmıyor



Yazar

athynas


UO-Dev Üyesi
Skill Title: Journeyman
Online durumu
Toplam Mesaj: 105
Oyun Tarzı: Pp
Emulatör: 0.56b
Tecrübe: World Builder
Yaş: 31
Mesaj #96349   04-09-2018 19:39 GMT    
        
Ekledim, sadece oyuncuya oyuna girişte checkstat functionunu vermek yeterli. Ancak ne kadar sağlıklı oldu bilmiyorum.


 Ce-man

Yazar

Slothere


UO-Dev Üyesi
Skill Title: Expert
Online durumu
Toplam Mesaj: 266
Oyun Tarzı: Rp
Emulatör: Sphere
Tecrübe: Scripter
Yaş: 26
Mesaj #96352   05-09-2018 09:47 GMT    
        
Şimdi bir bakalım,

En işlevsel trigger larda anlık sorgulama söz konusu.

Baya bir sorgu, çağırma ve işlem içeren sürekli tetiklenen bir fonksiyon mevcut.

Saniyede bir timerf çalıştırmak söz konusu.

Timerf sırayla çalışan bir fonksiyon. Yani global olarak tüm timerf ler bir sıraya alınıp oradan sırayla işletilirler. Tabi belirli sayıya kadar siz bunu hissetmezsiniz, oldukça hızlı çalışır. Fakat çok verimli olmadığı gibi kaydedilme ve işletilme tarzı yüzünden de mümkün mertebe kullanılmaması gereken bir komuttur. Kaldı ki burada saniyede bir işletme söz konusu. Belki birkaç oyuncuyla fark etmezsiniz ama atıyorum 20-30-40... şeklinde oyuncu aynı anda bunu çalıştırdığı anda sunucunda farklı timerf ler de işlem görüyorsa dar boğaz oluşması söz konusu olacaktır. Ve sonucunda muhtemelen oldukça yavaş ve hantal hatta sebepsizce patlayabilen bir sphere'ınız olacaktır.

Kod başlı başına client ve emülatör düşmanı olmuş. Kısa vadede client çökmeleri ve patlamalar gibi sıkıntılar yaşatacağına kesin gözüyle bakabilirsin.


 athynas
Ücreti mukabilinde, Sphere 55i, 55r, 56b, 56c ve 56d sürümlerine teknik destek verilir, özgün script yazılır. İletişim ve detaylar için özel mesaj atınız.

Yazar

athynas


UO-Dev Üyesi
Skill Title: Journeyman
Online durumu
Toplam Mesaj: 105
Oyun Tarzı: Pp
Emulatör: 0.56b
Tecrübe: World Builder
Yaş: 31
Mesaj #96353   05-09-2018 12:52 GMT    
        
Kıt bilgiyle, dene yanıl yaparak, bolca Google amcaya sor, ortada kalmayan kaynakları araştır vesaire ancak çıkan bu oldu. Nasıl daha az yoracak hale getirilebilir? Timer yerine nasıl kullanabilirim?



Yazar

xwerswoodx


Sphere Destek
Skill Title: Master
Online durumu
Toplam Mesaj: 1722
Oyun Tarzı: Rp
Emulatör:
Tecrübe: Scripter
Yaş: 9
Mesaj #96361   06-09-2018 23:44 GMT    
        
Timerf fonksiyonunu her saniye kullanmak akıl karı değil, çünkü sadece yukardaki sebebi geçtim, 300 kişilik bir sunucu düşünelim, her saniye 300 adet timer, bu denli oyunculu bir sunucunun save süresi ise itemlere bağlı olarak 3 ile 8 saniye arasında değişir, ki bu daha da yüksek olabilir. Bu sadece basit bir örnek ama 8 saniyelik save süresinde 8*300 den 2400 bir de saveden sonra gelecek olan kısa bir ping süresi ile 2700 timerin bir anda devreye girdiğini düşünebiliriz. Bu da sunucunun aşırı girişten doolayı hata verip çökmesine sebep olabilir. O yüzden çok sağlıklı bulmuyorum.

Ancak bu tarz bir sistemi çok kolay bir şekilde hiç timer kullanmadan yapmak gayet basit. On=@GetHit, On=@Spelleffect gibi hasar aldıran, On=@StatChange gibi stam değişince devreye giren triggerler ile kontrol ettirip statusu yenileyebilirsin. Ancak her durumu %100 yansıtabilir misin denemedim. Açıkcası zaten bir çok client için status penceresi için dll yapıldığına göre yapılması imkansız değil gibi, bence dll üzerine yoğunlaşmak veya araştırma yapmak daha mantıklı.


 TheRaskol, Paco, Tanthalas
Geçmişi olmayanın, geleceği olmaz.

Sayfalar: 1



Benzer Konular

KonularMesajlarSon gönderenTarih
Runebook gateden uzaklaşınca dialog kapanması10Slothere07-10-2018
Transparan dialog6MirroR12-04-2018
Dialog Kapatma5Aftrosh*08-04-2018
Dialog içinde chat sistemi6xwerswoodx10-03-2018
3D silah yapımı4emre1125-02-2018


Keywords:

ultima online, RunUO, ultima online download, sphere scripting, role play, uo grafik, second age ultima, uo loop, macroman, pvp server, server kurulumu, sphere, multool, ml mulls, 56b 55r 55i, htmlgumps, client 4x, client edit, sphere release, osi, rp server, sunucular, ghost mouse, inside uo, kingdom reborn, stygian abyss, uo nasıl oynanır, mondain's legacy, age of shadows, world build, grandmaster, ultima online pvp, player dosyaları, ultima online indir, frp game, RunUO 1.0.0, razor, uo rice, hue editör, skill tools, ultima online patch, axis, world build, verdata, verdata patcher, map editör, gump editör, mul patcher, aos mulls, scriptler, anim edit, anim publish, hues mul, hosting vps, event dialog, account sistemi, skill gain, static yapımı,