UO-Dev Arama

 



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

nydrian


UO-Dev Üyesi
Skill Title: Apprentice
Online durumu
Toplam Mesaj: 92
Oyun Tarzı: Pp
Emulatör: 0.56b
Tecrübe: Scripter
Yaş: 28
Mesaj #95515   24-04-2018 17:50 GMT    
        
Merhabalar ,

Elimde stable sistemi ile ilgili böyle bir script var.Sorunum şu script çalışıyor fakat f_custom_shrink komutu binekleri cantaya koyarak çalışıyor.Buda çantanın silinmesi durumunda tüm bineklerin silinmesine neden oluyor bunun çözümünü nasıl yapabiliriz acaba ?

Kod:
[DEFNAME stable_settings]
storage_type    1 // 0 =karakter bazlı 1= hesap bazlı (all characters on the account can access)
stable_limit 100 // maximum eklenecek hayvan sayısı


[FUNCTION f_stable]
ref1=<src>
ref2=<argo>
if (<ref2.isplayer>) || (<ref2.body>==c_man) || (<ref2.body>==c_woman)
src.sysh_trk Bunu yapamazsiniz
return 1
endif
if (<ref2.flags> &statf_conjured)
src.sysh_trk Bunu yapamazsiniz
return 1
endif
if (<ref2.str> > <ref2.hits>)
src.sysh_trk <ref2.name> isimli hayvanınız yaralanmış.Önce tedavi etmelisiniz.
return 1
endif
if <serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.count>
if (<serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.count> < <def.stable_limit>)
if !(<ref2.ismypet>)
src.sysh_trk Bunu yapamazsiniz <ref2.name> sizin ait bir hayvan değil.
return 1
endif
ref2.f_custom_shrink
return 1
else
src.sysh_trk Depoda hayvanlar için yer kalmamiş.
return 1
endif
else
if !(<ref2.ismypet>)
src.sysh_trk Bunu yapamazsiniz <ref2.name> size ait bir hayvan degil
return 1
endif
ref2.f_custom_shrink
endif

[function f_custom_shrink]
ref1=<src>
ref2=<uid>
ref2.shrink
ref3 <hval <ref2.actarg1>&~030000000>
ref3.cont <ref1.findlayer.layer_pack>
ref3.attr 040a4
if <serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.count>
if (<serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.findelem <ref3>> == -1)
serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.add <ref3>
return 1
endif
else
serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.add <ref3>
return 1
endif


[DIALOG d_stable]
40,40
nomove
Page 0
ref1 <src>
resizepic 0 0 <def.back1> 480 500
resizepic 10 10 <def.back2> 460 480

dtext 130 20 <def.t> * <serv.servname> Binek Stoğu Sistemi *
dtext 30 80 <DEF.T1> Bineği Çıkar
dtext 230 80 <def.t1> Bineğin Adi

dtext 30 400 <def.t1> <serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.count> Adet binek stokta
local.kalanslot (<ddef.stable_limit>-<serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.count>
Dtext 30 420 <def.t1> Kalan Boş Yer : <dlocal.kalanslot>

Page 1
if <serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.count>
for 0 <eval (<serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.count> -1)>
if (<local._for> >=5) $$ (<eval (<local._for> % 5 == 0)

button 420 450 0fa5 0fa7 0 <eval ((<local._for> / 5) + 1)>
        dtext 330 450 <def.t1> Sonraki Sayfa
        page <eval ((<local._for> / 5) + 1)>
        button 12 450 0fae 0fb0 0 <eval (<local._for> / 5))>
        dtext 42 450 <def.t2> Önceki Sayfa
        endif
local.color <uid.<serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.<dlocal._for>>.color>
local.id <uid.<serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.<dlocal._for>>.id>
resizepic 20 <eval (110+ (<local._for> % 5) * 60)> 3000 450 55  <eval <local._for>+1>
button 40 <eval (120+ (<local._for> % 5) * 60)> 4005 4007 1 0 <eval <local._for>+1>
tilepichue 100 <eval (120+ (<local._for> % 5) * 60)> <local.id> <dlocal.color>
dtext 230 <eval (120+ (<local._for> % 5) * 60)> <def.t1> <uid.<serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.<dlocal._for>>.name>
endfor
else
dtext 100 200 <def.t2> Stoğa herhangi bir binek eklememişsiniz
endif


[DIALOG d_stable BUTTON]
ON=1,999// return
ref1 <uid>
ref2 = <uid.<serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.<eval (<argn>-1)>>>
ref2.attr 04020
ref2.cont <ref1.findlayer.layer_pack>
dclick <ref2>
if (<serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.count> < 2)
serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.clear
else
serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.<eval (<argn>-1)>.remove
endif


Daha iyisini yapana kadar en iyisi bu..

Yazar

Slothere


UO-Dev Üyesi
Skill Title: Journeyman
Online durumu
Toplam Mesaj: 236
Oyun Tarzı: Rp
Emulatör: Sphere
Tecrübe: Scripter
Yaş: 26
Mesaj #95516   25-04-2018 00:02 GMT    
        
Tam olarak ne istediğini anlayamadım. Biraz daha detaylı izah edebilirsen yardımcı olmaya çalışırım.


Yazar

nydrian


UO-Dev Üyesi
Skill Title: Apprentice
Online durumu
Toplam Mesaj: 92
Oyun Tarzı: Pp
Emulatör: 0.56b
Tecrübe: Scripter
Yaş: 28
Mesaj #95517   25-04-2018 01:50 GMT    
        
f_custom_shrink komutu çalışıyor menü vs de çalışıyor.Sistem stable a bineği verirken karakterin çantasına invis pet iconları koyarak çalışıyor.invertory deki çanramız silinince stable daki binekler de kayboluyor.bu sistemi taglar vasıtası ile çalıştıra bilir miyiz


Daha iyisini yapana kadar en iyisi bu..

Yazar

MirroR


UO-Dev Üyesi
Skill Title: Adept
Online durumu
Toplam Mesaj: 578
Oyun Tarzı: Rp
Emulatör: 0.56b
Tecrübe: Scripter
Yaş: 26
Mesaj #95518   25-04-2018 03:00 GMT    
        
İstesiğin cevap çok basit bir şekilde sende aslında bu olayı karakterin çantası yerine bankası olarak kullanabilirsin komut scripts yardımı istiyorsan beklemen gerekecek çünkü ben mobildeyim. Yada diğer arkadaşların yardımlarını bekleyebilirsin ama çözümünün tagla bir alakası yok.


 nydrian, 4s3d3
Hayat dediğin bir çift bacak gidebildiğin yol kadardır.

Yazar

4s3d3


UO-Dev Üyesi
Skill Title: Journeyman
Online durumu
Toplam Mesaj: 178
Oyun Tarzı: Rp
Emulatör: 0.56b
Tecrübe: Player
Yaş: 28
Mesaj #95519   25-04-2018 10:00 GMT    
        
Kod:
[DEFNAME stable_settings]
storage_type    1 // 0 =karakter bazlı 1= hesap bazlı (all characters on the account can access)
stable_limit 100 // maximum eklenecek hayvan sayısı


[FUNCTION f_stable]
ref1=<src>
ref2=<argo>
if (<ref2.isplayer>) || (<ref2.body>==c_man) || (<ref2.body>==c_woman)
src.sysh_trk Bunu yapamazsiniz
return 1
endif
if (<ref2.flags> &statf_conjured)
src.sysh_trk Bunu yapamazsiniz
return 1
endif
if (<ref2.str> > <ref2.hits>)
src.sysh_trk <ref2.name> isimli hayvanınız yaralanmış.Önce tedavi etmelisiniz.
return 1
endif
if <serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.count>
if (<serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.count> < <def.stable_limit>)
if !(<ref2.ismypet>)
src.sysh_trk Bunu yapamazsiniz <ref2.name> sizin ait bir hayvan değil.
return 1
endif
ref2.f_custom_shrink
return 1
else
src.sysh_trk Depoda hayvanlar için yer kalmamiş.
return 1
endif
else
if !(<ref2.ismypet>)
src.sysh_trk Bunu yapamazsiniz <ref2.name> size ait bir hayvan degil
return 1
endif
ref2.f_custom_shrink
endif

[function f_custom_shrink]
ref1=<src>
ref2=<uid>
ref2.shrink
ref3 <hval <ref2.actarg1>&~030000000>
ref3.cont <ref1.findlayer.29>
ref3.attr 040a4
if <serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.count>
if (<serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.findelem <ref3>> == -1)
serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.add <ref3>
return 1
endif
else
serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.add <ref3>
return 1
endif


[DIALOG d_stable]
40,40
nomove
Page 0
ref1 <src>
resizepic 0 0 <def.back1> 480 500
resizepic 10 10 <def.back2> 460 480

dtext 130 20 <def.t> * <serv.servname> Binek Stoğu Sistemi *
dtext 30 80 <DEF.T1> Bineği Çıkar
dtext 230 80 <def.t1> Bineğin Adi

dtext 30 400 <def.t1> <serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.count> Adet binek stokta
local.kalanslot (<ddef.stable_limit>-<serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.count>
Dtext 30 420 <def.t1> Kalan Boş Yer : <dlocal.kalanslot>

Page 1
if <serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.count>
for 0 <eval (<serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.count> -1)>
if (<local._for> >=5) $$ (<eval (<local._for> % 5 == 0)

button 420 450 0fa5 0fa7 0 <eval ((<local._for> / 5) + 1)>
        dtext 330 450 <def.t1> Sonraki Sayfa
        page <eval ((<local._for> / 5) + 1)>
        button 12 450 0fae 0fb0 0 <eval (<local._for> / 5))>
        dtext 42 450 <def.t2> Önceki Sayfa
        endif
local.color <uid.<serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.<dlocal._for>>.color>
local.id <uid.<serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.<dlocal._for>>.id>
resizepic 20 <eval (110+ (<local._for> % 5) * 60)> 3000 450 55  <eval <local._for>+1>
button 40 <eval (120+ (<local._for> % 5) * 60)> 4005 4007 1 0 <eval <local._for>+1>
tilepichue 100 <eval (120+ (<local._for> % 5) * 60)> <local.id> <dlocal.color>
dtext 230 <eval (120+ (<local._for> % 5) * 60)> <def.t1> <uid.<serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.<dlocal._for>>.name>
endfor
else
dtext 100 200 <def.t2> Stoğa herhangi bir binek eklememişsiniz
endif


[DIALOG d_stable BUTTON]
ON=1,999// return
ref1 <uid>
ref2 = <uid.<serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.<eval (<argn>-1)>>>
ref2.attr 04020
ref2.cont <ref1.findlayer.29>
dclick <ref2>
if (<serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.count> < 2)
serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.clear
else
serv.list.<qval <def.storage_type>? <ref1.account>:<ref1>>_stabled.<eval (<argn>-1)>.remove
endif
Bu gibi durumlarda backpack yerine bankaya göndermen Mirrorun dediği gibi daha sağlıklı olur. İtem yolunu değiştirmen içinde Findlayer.21 yerine Findlayer.29 olarak ayarlaman yeterli olacaktır.


 nydrian

Yazar

Slothere


UO-Dev Üyesi
Skill Title: Journeyman
Online durumu
Toplam Mesaj: 236
Oyun Tarzı: Rp
Emulatör: Sphere
Tecrübe: Scripter
Yaş: 26
Mesaj #95520   25-04-2018 11:10 GMT    
        
@nydrian

Sistemin şu anki hali çok saçmaymış o zaman. Zaten kodun yapısı da verimli değil. Çok fazla algoritmik hata var. Referanslar gereksiz yere ve yanlış kullanılmış vs. Alternatif varsa farklı bir sistem kullanmanı öneririm. Bunu kullanırım dersen de @Mirror'un dediği gibi player üstünde değil de güvenilir bir konteyner'de saklamayı düşünmelisin. Tag ile yapma. Bir bineğin en az 3-4 özelliği olacaktır. Hepsine ayrı tag açmak verimli bir yöntem değil.


 TheRaskol, nydrian
Yazar

nydrian


UO-Dev Üyesi
Skill Title: Apprentice
Online durumu
Toplam Mesaj: 92
Oyun Tarzı: Pp
Emulatör: 0.56b
Tecrübe: Scripter
Yaş: 28
Mesaj #95523   25-04-2018 21:49 GMT    
        
Yardımlarınızdan dolayı hepinize teşekkür ederim.

@Mirror haklısın cevap bendeymiş aslında da düşünemedim tagla yapmaya odaklanmişim

@4s3d3 Çok teşekkür ederim hocam.

@Slothere bu sistemi daha verimli halde çalışması için nasıl bir yol izlenebilir ?


Daha iyisini yapana kadar en iyisi bu..

Yazar

Slothere


UO-Dev Üyesi
Skill Title: Journeyman
Online durumu
Toplam Mesaj: 236
Oyun Tarzı: Rp
Emulatör: Sphere
Tecrübe: Scripter
Yaş: 26
Mesaj #95526   27-04-2018 00:17 GMT    
        
100 limiti bir defa çok fazla. Daha işlevsel ve makul bir limit olmalı. Sistemin ne amaçla kullanılacağına göre bir senaryo çizilmeli.

Shrink tekniği tekrar kullanılabilir. Depo olarak vendorun üzerinde belirlenmiş özel bir case kullanılabilir. Shrinklenen item'a, sahip olan kişiye ait bir ibare eklenir. Olası bir vendor silinmesi, ölmesi vs durumunda sahibine iade edilmesi kolaylaşır.


Yazar

MirroR


UO-Dev Üyesi
Skill Title: Adept
Online durumu
Toplam Mesaj: 578
Oyun Tarzı: Rp
Emulatör: 0.56b
Tecrübe: Scripter
Yaş: 26
Mesaj #95532   27-04-2018 16:55 GMT    
        
İşlemin vendor üzerinde yapılmasını pek mantıklı bulmuyorum bende. World üzerinde silinmesi ve taşınması engellenen özel bir kasa olarak kullanılması bence en mantıklı seçenektir.


Hayat dediğin bir çift bacak gidebildiğin yol kadardır.

Sayfalar: 1



Benzer Konular

KonularMesajlarSon gönderenTarih
Staff title yardım3nefrelius15-06-2018
Npc Bow yardım6mahsuni21-06-2018
Zar yardım2azmanomer30-04-2018
Küfür Sistemi Undefined keyword13paris1619-04-2018
Dialog içinde chat sistemi6xwerswoodx10-03-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ı,