Geçenlerde yazdığım hoş bir script.Klasik sphere vendor menülerinden sıkılanlara. Yanlız gözlemediğim kadarıyla hear kısmına return 1 koyarsanız bazen menü boş gözüküyor.
// v0.56b+
[comment speech]
ON=BUY
if (<dsrc.tag0.vend_menu>==1)
buy
sdialog d_menu_vend_menuswitch
src.timerf 2,dialogclose d_menu_vend_menuswitch
elif (<dsrc.tag0.vend_menu>==2)
src.dialogcloseall
src.list_all_Saleitems <uid>
sdialog d_h_vendor
return 1
endif
[DIALOG d_h_VENDOR]
0,0
page 0
resizepic 195 85 9200 430 465
alphablack 205 95 410 445
//dhtmlgump 317 99 200 17 0 0 <def.bfont_lred><def.center><job> shop<def.centere>
resizepic 210 60 5054 195 40
alphablack 220 70 175 20
dtext 230 70 54 <job> Shop Vendor
local.y = 115
for <src.ctag.page_limit> (4+<src.ctag.page_limit>)
ref1 = <src.ctag.item_<dlocal._For>>
if (<ref1.isitem>)
gumppictiled 210 (<local.y>-5) 401 70 2604
checkertrans 210 (<local.y>-5) 401 70
resizepic 217 <local.y> 9200 61 56
tilepichue 220 (<local.y>+10) <ref1.dispiddec> <ref1.dcolor>
dhtmlgump 285 <local.y> 200 50 0 0 <def.bfont_lyellow>Eşya : <def.bfont_white><ref1.name><def.br><def.bfont_lyellow>Fiyat : <def.bfont_white><bolukayir <ref1.dvalue>>gp<def.br><DEF.BFONT_LYELLOW>Envanter sayısı : <def.bfont_white><REF1.AMOUNT>
dtextentrylimited 500 (<local.y>+5) 30 20 63 <dlocal._for> 3 0
dtext 535 (<local.y>+10) 020 adet
dtext 500 (<local.y>+30) 020 satın al.
button 557 (<local.y>+35) 4014 4015 1 0 <dlocal._for>
local.y +=80
endif
endfor
dtext 386 510 63 Sayfa <eval <eval <src.ctag.page_limit>/5>+1>/<eval <eval <src.ctag.item>/5>+1>
button 462 510 4005 4007 1 0 301 // ileri
button 349 510 4014 4016 1 0 302 // geri
resizepic 195 550 5054 150 40
alphablack 205 560 130 20
button 215 560 2714 2715 1 0 303
dtext 235 560 1152 Kasil görünüm
[dialog d_h_vendor button]
ON=0
src.clearctags item
ON=301
src.ctag.page_limit +=5
ref1 = <src.ctag.item_<dlocal._For>>
if <eval <src.ctag.page_limit>/5> > <eval <src.ctag.item>/5>
src.ctag.page_limit = 1
endif
sdialog d_h_vendor
ON=302
src.ctag.page_limit -=5
if (<src.ctag.page_limit> < 1)
src.ctag.page_limit 1
endif
sdialog d_h_vendor
ON=303
src.tag.vend_menu = 1
src.sysmessage @63,,1 Klasik görünümüne geçtiniz.
hear buy
ON=1,200
ref1 = <src.ctag0.item_<dargn>>
local.argtxt = <dargn>
sayu <dargn>
local.price = (<ref1.value>*<argtxt[<dlocal.argtxt>]>)
if (<argtxt[<dlocal.argtxt>]> < 1)
src.sysmessage @38,,1 Herhangi bir eşya seçmedidiniz.
elif (<src.gold> < <local.price>) && !(<src.isgm>)
src.sysmessage @38,,1 Yeterli paranız yok. (<bolukayir <dlocal.price>>gp)
elif (<src.flags>&02) && !(<src.isgm>)
src.sysmessage @38,,1 Alışveriş yapıcak durumda değilsiniz.
elif (<src.distance <uid>> > 5) && !(<src.isgm>)
src.sysmessage @38,,1 Vendora çok uzaksınız.
elif !(<src.canseelos <uid>>) && !(<src.isgm>)
src.sysmessage @38,,1 Vendoru göremiyorsunuz.
elif (<ref1.amount> < <dargtxt[<dlocal.argtxt>]>)
src.sysmessage @38,,1 Belirttiğiniz miktarda <ref1.name> vendorda bulunmuyor.
else
ref2 = <findlayer(26)>
src.gold -=<local.price>
src.sysmessage @1153,,1 <dargtxt[<dlocal.argtxt>]> adet <ref1.name> satın aldınız.
if (<ref1.isamountable>)
serv.newitem <ref1.baseid>,<argtxt[1]>,<src.findlayer(layer_pack)>
else
for <dargtxt[<dlocal.argtxt>]>
serv.newitem <ref1.baseid>,1,<src.findlayer(layer_pack)>
endfor
endif
ref1.amount -=<dargtxt[<dlocal.argtxt>]>
if (<ref1.amount> < 1)
ref1.remove
endif
endif
[function list_all_saleitems]
ref1 = <args>
src.ctag.item = 0
forcont <ref1.findlayer(26)>
if <amount> < 1
remove
else
src.ctag.item ++
src.ctag.item_<dsrc.ctag.item> = <uid>
endif
endfor
[dialog d_menu_vend_menuswitch]
100,300
page 0
resizepic 100 100 5054 150 40
alphablack 110 110 130 20
button 120 110 2714 2715 1 0 1
dtext 140 110 1152 <qval (<dtag0.vend_menu>==1)?Liste:Klasik> görünüm.
[dialog d_menu_vend_menuswitch button]
ON=1
src.tag.vend_menu = 2
src.sysmessage @63,,1 Liste görünümüne geçtiniz. Vendora tekrar tıkladığınızda menü aktif olucaktır.
[function isAmountable]
if (<can>&CAN_I_PILE)
return 1
endif
return 0