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
Başarılı eline sağlık.
Başarılar, çok hoş.

Birşey dikkatimi çekti; denemedim ama, mesela resimdeki menüde hepsinden 1'er adet alsa, topluca satın alıyor mu? Yoksa tek tek mi alınıyor?
Tek tek almanız gerekmekte.
Teşekkürler Syntax. Kullanacak arkadaşlara fikir verir.
Gerçekten çok güzel bir çalışma Mert adına.Geliştirmek isteyen kişiler bir buton yardımı ile klasik menuye geçiş vs. özellikleri de ekleyebilirler.
Afferim Mert eline sağlık..
Teşekkürler.

@Syntax
buton var zaten kod güncel resim eski.
bu scpti nereye eklicez bilen varmı
Eline sağlık
Eline sağlık arkadaşım.
Eline sağlık çok hoş olmuş.
eline sağlık mert güzel iş çıkartmışsın :)
Tebrikler.
Çok başarılı, ellerine sağlık ama tek sorunu o her itemi ayrı ayrı alma olayı oyuncuya ters gelir. adam studed set toplamak için 5 kere açarsa küfür eder vallahi :)



Üye Ol veya Giriş Yap

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