Members
14.4
İtem aktarma

Ben biraz daha farklı düşünüp aynı account içindeki charları tek bi bankayı kullanmasını sağladım.

Normalde .itemaktar diyip açılan menüde karakteri seçip eşyayı seçiyorduk ve seçilen karakterin bankasına eşya aktarılıyordu.

Benim düşünce tarzım ilk başta öyleydi sonra dedim ne gerek var tek tek böyle aktaracağıma komple bi account aynı bankayı kullansın.

Komutumu gerek varmıydı yoktu aslında komuta ilk başta la olur mu diye hazırladığım sonra böyle kaldı gerek yok komuta derseniz Login triggeri altındaki düzenlemeyi yaparsınız.
[function bankam]
ref1=<findlayer(layer_bankbox)>
src.account.tag.bankam <ref1>

Playerlara verilen events @LOGIN triggeri altına eklenmesi gereken kısım.

on=@login
if <src.account.tag0.bankam>
	if <src.findlayer(layer_bankbox)> == <src.account.tag0.bankam>
	ref1=<src.account.tag0.bankam>
	src.equip <ref1>
	src.sysmessage @,,1 Banka ayarlarınız yapılmıştır.
	else
	src.findlayer(layer_bankbox).remove
	ref1=<src.account.tag0.bankam>
	src.equip <ref1>
	src.sysmessage @,,1 Banka sıfırlaması yapıldı. Ortak banka ayarlarına geçildi.
	endif
else
src.bankam
src.sysmessage @,,1 Ortak bankanız ayarlandı.
endif
Neophyte
26.6001
Paylaşımlarınız takipte : )
Master
59.2997
Önerim karakterlerin silinmesine karşı karakterin silindiği esnaya bankanın başka bir karaktere aktarılmasını ilave et. Bankası eşitlenen karakter silinirse diğerleri mağdur olmasın.

Bank işlemine override yapıp açılmasını engelleyerek diğer karakterin bankbox'ını open işlemiyle de gösterebilirsin. Daha temiz olur. Her seferinde sil, yenisiyle değiştir pek verimli durmuyor.

Sistemden ötürü tebrikler. Paylaşım cesareti için de teşekkürler.
Members
14.4
Dediğin şekilde ayarlama yapılabilir önerin için sağol
Güzel eline sağlık. :)
Members
14.4
aynı dertten müzdarip :)

char silme olayına daha kafa yormadım onun da düzenlemesini yapınca gerçi kullanacak olan kişi düzenlemesini yapar ama bende yine boş bi zaman olduğunda çözümlerim.

aşağıdaki soruna çözüm getirirsek onada gerek kalmaya bilir.

https://www.ultima-strike.com/forum/ultima-online/sphere-scripting/banka-actirma-q48223
Master
59.2997
2012-2013'ten beridir script yazmadığımdan şu an teknik yardımda bulunamıyorum. :) Wiki'deki tanımlamalara iyice bakmak lazım. Onun bir yöntemi vardı. Bir inceliği vardı. Yaptığımı hatırlıyorum. Ama nasıl yaptın dersen şu anda söyleyemem çünkü sphere syntax'ı ile ilgili pek bir şey hatırlamıyorum.
[FUNCTION f_onchar_delete]


bu fonksiyon üzerinde, eğer işlem yapan account üzerinde 1 den fazla karakter varsa, önce banka container' ını herhangi bir alana pozisyonlayıp daha sonra accountın 1. (aslında teknik olarak 0.) karakterine gönderebilirsin. eğer sadece 1 karakter varsa herhangi bir işlem uygulatmayıp bankanın silinmesine izin verebilirsin ya da dünya üzerinde herhangi bir bölgede link girdilerini sıfırlayarak account tag kullanıp ilk karakter açıldığında geri çağırılmak üzere saklayabilirsin. tabi bu işleri yaparken link girdisine çok dikkat et karakter silindiği esnada save gelirse bankadan eser kalmaz.

uzun süredir kodlardan ve terimlerden uzak kaldığım için şuan anlattığım şekilde kodları yazacak zamana sahip değilim. mantığı anlayabilecek alt yapın olduğuna inanıyorum. güzel şeyler yapmışsın tebrik ederim.
Members
14.4
[function charsil]
if <account.tag.bankam>
	if <findlayer(layer_bankbox)>
		if <findlayer(layer_bankbox)> == <account.tag.bankam>
			if <account.chars> < 2
			ref1=<findlayer(layer_bankbox)>
			ref1.drop
			ref1.p 5384,1086
			ref1.tag0.banka <account.name>
			else
			call charne
				if <ref2> == <uid>
				serv.log uidler benzesti tekrar baslatildi. <ref2.name>
				charsil
				else
				ref1=<findlayer(layer_bankbox)>
				ref2.findlayer(layer_bankbox).remove
				ref2.equip <ref1>
				serv.log banka basariyla aktarilmistir. <ref2.name>
				endif
			endif
		else
		serv.log banka uyusmadi
		endif
	else
	serv.log banka yok
	endif
endif

[function charne]
local.r <r0,<eval <account.chars>-1>>
ref2 <account.char.<dlocal.r>.uid>


[function bankabul]
forinstances i_bankbox
		if (strmatch("<tag.banka>","<src.account.name>"))
		src.findlayer(layer_bankbox).remove
		src.equip <uid>
		src.sysmessage @0481,,1 Bankanız başarıyla geri alındı
		serv.log <src.name> <uid> bankayi geri aldi
		src.bankam
		endif
endfor


@Noxier dediğine yönelik böyle bi çözüm getirdim.

charsil sistemine fix senin dediğin f_onaccount_delete altında denedim heralde o client üzerinden delete kısmı ile çalışıyor. test etmedim.

charsil sistemi üzerine eklenti yapılabilir bu şekilde

işleyiş accountda tek karakter varsa bankayı green acres de 56b guild sisteminin guild taşını attığı yere atıyor :) garip bi cümle oldu yani green acrese atıyor.

accountda başka karakter varsa onun bankasını silip değiştiriyor. neden siliyor sonuç itibari ile loginde yine aynı bankayı kullandıkları için silmesinde bi sorun teşkil etmiyor.

eğerki tek karakter olupda silinirse bankayı dediğim gibi green acrese atıyor ".bankabul" fonksiyonu da bankayı tekrar kullanım için hazır hale getirir. yani banka gitmiyor hiç bi şekilde

10 dakikalık test sonucu sorun çıkmadı alıp kullanacak olan arkadaşlar iyice test etsinler sorun çıkarsa buradan yazalım diğer kullanacak olan varsa onlarda fixini yapsınlar.

Üye Ol veya Giriş Yap

Bu forum başlığına mesaj atmak istiyorsanız hemen üye olun veya giriş yapın.