sa arkadaşlar burdan aldıgım bir pazar vendor scripts'i var elimde gerci cok aradım sadece bu ve buna benzer leri var neyse hereyini düzenledim ama bir türlü su fiyat 1 yazınca iteme tıkladıgımda fiyat itemın ustunde cıkmıyor cok ilginctirki staff charla tıklayınca gözüküyor satılamaz fiyatı vs.. cok ugrastım nerden arza oldugunu bulamadım sphere hata da vermıyor oraya yogunlasayım yardımcı olursanız sevinirm veya elinizde daha guncel bir pazar vendor scpti varsa bugsuz atarsanız cok iyi olur hayırı sabahlar.
[ITEMDEF i_vendor_kira] ID=0c01 NAME=Klasik Pvp TYPE=t_script DESCRIPTION=Kiralik Vendor ON=@CREATE COLOR=32 TAG.kiralik=0 TAG.sahip=0 ATTR attr_decay ON=@CLICK message <name> if (<eval <tag.kiralik>> == 1) message @045,,1 [Kiralanmis] else message @38,,1 [Kiralik Vendor] endif return 1 ON=@DCLICK IF ( <DISTANCE> > 1 ) SRC.sysMESSAGE @38,,1 Yesil Tasin Uzerinde Oldugunuz'dan Emin Olun! RETURN 1 ENDIF SRC.ACT=<UID> IF !(<eval <SRC.ACT.TAG.kiralik>>) SRC.DIALOG d_vendor_intro src.tag.dist <src.act.uid> RETURN 1 ELSE IF (<SRC.ACT.LINK.TAG.sahip>==<SRC.UID>)||(<SRC.ISGM>) VAR.LEASE=<eval <SRC.ACT.TIMER>/60> VAR.LEASE=<eval <VAR.LEASE>/60> SRC.MENU m_vendor_admin RETURN 1 ELSE SRC.SYSMESSAGE @38,,1 HATA: Bu dukkan ve vendor kiralanmis. RETURN 1 ENDIF ENDIF RETURN 1 ON=@TIMER LINK.REMOVE LINK=04fffffff TAG.kiralik=0 TAG.sahip=0 COLOR=32 RETURN 1 [DIALOG d_vendor_intro] 100, 100 PAGE 0 resizepic 81 93 3600 305 126 text 170 103 1153 0 text 131 134 1153 1 button 107 169 2151 2152 1 0 1 text 141 171 1152 2 [DIALOG d_vendor_intro TEXT] Vendor Kiralama Kiralamak icin 250k gereklidir. Bir haftaligina vendor kirala. [DIALOG d_vendor_intro BUTTON] on=0 src.tag.dist on=1 IF (<uid.<src.tag.dist>.DISTANCE> > 2 ) SRC.sysMESSAGE @38,,1 HATA: Yeterince yakin degilsiniz! else if (<src.restest 250000 i_gold>) src.tag.dist VAR.SIGN=<SRC.ACT> SRC.ACT.TAG.kiralik=1 SRC.ACT.COLOR=92 SRC.ACT.TAG.sahip=<SRC.UID> SRC.ACT.TIMER=60*60*24*7 src.consume 250000 i_gold VAR.SIGN=<SRC.ACT> src.newnpc c_pv src.act.p <p> src.act.tag.p <p> src.act.tag.px <p.x> src.act.tag.py <p.y> src.act.tag.pz <p.z> src.act.tag.owner <src.uid> VAR.VEND=<SRC.ACT.UID> src.act.findlayer(29).more1 2500 SRC.ACT.TAG.sahip=<SRC.UID> SRC.ACT=<VAR.SIGN> SRC.ACT.LINK=<VAR.VEND> SRC.ACT=<VAR.VEND> src.act.newitem i_memory SRC.act.ACT.LINK=<SRC.UID> src.act.act.attr 04 src.act.act.more1 04 src.act.act.more2 <serv.time> src.act.act.morep <src.act.p> src.act.act.color memory_ipet src.act.act.timer -1 src.act.act.link <src.uid> src.act.act.cont <src.act.uid> SRC.ACT.act.CONT=<VAR.VEND> src.act.flags <src.act.flags>&statf_pet src.tag.vendor <src.act.uid> SRC.ACT=<VAR.SIGN> src.act.update ELSE SRC.SYSMESSAGE @38,,1 HATA: Kiralamak icin 250k (250.000) cantanizda olmali. src.tag.dist ENDIF endif return 1 // ************** // VENDOR CHARDEF // ************** [chardef c_pv] defname c_pv name #names_humanmale the Player Vendor id c_man can mt_equip|mt_nonmover hiredaywage 52 desires i_gold tspeech pv_spch tevents e_pv //tevents vendorfix On=@Create str 9500 dex 25 int 25 color colors_skin speechcolor 0481 food 990 npc 1 itemnewbie random_male_hair color colors_hair itemnewbie random_facial_hair color match_hair item i_robe color colors_all item i_torch_lit morey -1 itemnewbie i_backpack itemnewbie i_bankbox color 0384 timer 900 attr 014 itemnewbie i_pv // ******* // ITEMLAR // ******* [itemdef i_pv] id i_memory name vendor ana kontroller type t_eq_script On=@TargOn_Char if (<src.targ.uid> == <cont.uid>) cont.findlayer(21).open target endif return 1 On=@TargOn_Item if (<more1> == 1) // dinamik fiyatlandirma if !(<src.uid> == <cont.tag.owner>) cont.sayu <src.name>, siz benim isverenim degilsiniz. elseif !(<src.targ.topobj.uid> == <cont.uid>) cont.sayu Bu esya cantamda degil. elseif (strmatch('<src.targ.price>','')) cont.sayu Bu satilabilecek bir esya degil. elseif (<eval <more2>> <= 0) src.targ.price 0 cont.sayu <src.targ.name>: 'satilik degil' olarak isaretlendi. else src.targ.price <eval <more2>> more2 0 cont.sayu <src.targ.name>: <src.targ.price> altin. endif elseif (<more1> == 2) // satis if !(<src.targ.topobj.uid> == <cont.uid>) cont.sayu Bu esya cantamda degil. elseif (strmatch('<src.targ.price>','')) cont.sayu Bu esya satilik degil. elseif (<src.targ.price> <= 0) cont.sayu Bu esya satilik degil. elseif (<src.gp> < <src.targ.price>) cont.sayu Bankanizin en ust kisminda <src.targ.price> altininiz bulunmuyor. else src.targ.dialog d_pv_buy endif elseif (<more1> == 3) // para aktarma if !(<src.uid> == <cont.tag.owner>) cont.sayu <src.name>, siz benim isverenim degilsiniz. elseif !(<src.targ.topobj.uid> == <src.uid>) cont.sayu Gosterdiginiz nesne sizin uzerinizde degil. elseif !(<src.targ.baseid> == i_gold) cont.sayu Bu gosterdiginiz altin degil. else cont.findlayer(29).more1 <eval (<cont.findlayer(29).more1> + <src.targ.amount>)> if (<eval (<src.targ.amount> / <cont.hiredaywage>)> > 0) cont.sayu <src.targ.amount> altin calisma suremi <eval (<src.targ.amount> / <cont.hiredaywage>)> gun uzatti, tesekkur ederim. else cont.sayu <src.targ.amount> altin kasama eklendi, tesekkur ederim. endif src.targ.remove endif endif return 1 On=@Timer return 1 // ********* // DIALOGLAR // ********* [MENU m_vendor_admin] Kiralik vendor yonetimi. ON=0 Vendorun ismini degistir. SRC.DIALOG d_name_vendor ON=0 Bir hafta daha kirala. (Kalan sure: <eval <VAR.LEASE>> saat) IF (<src.restest 250000 i_gold>) SRC.CONSUME 250000 i_gold SRC.UPDATE SRC.TAG.vendtimer <SRC.ACT.TIMER> SRC.ACT.TIMER= <eval <SRC.ACT.TIMER>> + 604800 src.act.link.message @045,,1 Calisma suremi 1 hafta daha uzattiniz. Tesekkurler. ELSE SRC.SYSMESSAGE @38,,1 HATA: Bir hafta daha calismam icin yeterli paraniz yok!(250.000gp) ENDIF ON=0 Vendoru terket. SRC.ACT.TIMER 1 ON=0 Banka SRC.BANKSELF [DIALOG d_name_vendor] 0,0 nomove resizepic 190 175 3600 335 150 resizepic 200 185 3600 315 130 resizepic 220 235 3600 270 22 text 215 200 995 0 text 255 275 0000 1 //button 220 275 4005 4006 1 0 1 //text 435 275 0000 2 //button 400 275 4005 4006 1 0 0 //textentry 225 237 253 25 0 0 3 [DIALOG d_name_vendor TEXT] Gecici Olarak Kaldirilmistir ! <src.act.link.name> [DIALOG d_name_vendor BUTTON] ON=0 ON=1 src.act.link.message @48 Yeni adim <ARGTXT[0]> SRC.ACT.LINK.NAME <ARGTXT[0]> RETURN 1 [dialog d_pv_cash] 300,300 resizepic 0 0 3600 200 75 resizepic 5 10 3600 190 35 textentry 15 16 600 20 1152 1 0 button 165 50 4005 4006 1 0 1 [dialog d_pv_cash text] <eval (<findlayer(29).more1> - 2500)> [dialog d_pv_cash button] On=1 if (<eval <argtxt[1]>> <= 0) sayu Hmm.. Sanirim tam anlayamadim? elseif (<eval <argtxt[1]>> > <eval <findlayer(29).more1>>) sayu Bu miktar kasamda bulunmuyor. elseif (<eval (<findlayer(29).more1> - <argtxt[1]>)> < 2500) sayu Bu miktari veremeyecegim, kasamda en az 2500 altin kalmali. elseif (<eval <argtxt[1]>> >= 65000) vend_collect <eval <argtxt[1]>> sayu <argtxt[1]> altin bankaniza aktarildi. else findlayer(29).more1 <eval (<findlayer(29).more1> - <argtxt[1]>)> src.newitem i_gold src.act.amount <eval <argtxt[1]>> src.act.cont <src.findlayer(29).uid> sayu <argtxt[1]> altin bankaniza aktarildi. endif [dialog d_pv_buy] 300,300 resizepic 0 0 3600 270 105 htmlgump 10 15 250 60 0 1 0 button 200 80 1153 1155 1 0 1 button 233 80 1150 1152 1 0 0 [dialog d_pv_buy text] <name>, fiyati: <price> altin. Bunu satin almak istediginize emin misiniz? [dialog d_pv_buy button] On=1 src.pay <eval <tag.price>> if (<var.enough>) if !(<src.targ.topobj.uid> = <src.tag.pvendor_fix>) src.sysmessage @38,,1 HATA: Bu esya vendorun cantasinda degil yada satilmis. return 1 if (strmatch('<price>','')) src.sysmessage Bu esya satilik degil. elseif (<price> <= 0) src.sysmessage Bu esya satilik degil. elseif (<src.gp> >= <price>) src.gpconsume <price> topobj.findlayer(29).more1 (<topobj.findlayer(29).more1> + <price>) cont <src.findlayer(21).uid> price update if ((<baseid> == i_spellbook) || (<baseid> == i_runebook) || (<baseid> == i_magic_reg30) || (<baseid> == i_magic_reg60) || (<baseid> == i_magic_reg90) || (<baseid> == i_necro_reg20) || (<baseid> == i_necro_reg40) || (<baseid> == i_taxi_kit) || (<baseid> == i_dye_tub_furny) || (<dispid> == i_deed)) attr <attr>|attr_newbie endif else topobj.sayu Bankanizin en ust kisminda bunu alacak kadar altininiz yok. endif // ****** // SPEECH // ****** [speech pv_spch] On=bilgi On=yardim if (<src.uid> == <tag.owner>) sayu Kullanabileceginiz komutlar: durum, kasa, hasilat, fiyat. sayu Belirli bir komut hakkinda bilgi icin 'Komut ?' yazmaniz yeterlidir. else sayu Uzerime cift tiklayarak veya 'alisveris' komutuyla cantami acabilir, cantamdaki kutu veya torbalara cift tiklayarak iclerine bakabilir, 'buy' veya 'satin al' komutuyla satilik esyalari satin alabilirsiniz. endif return 1 On=durum* if ((<src.uid> == <tag.owner>) || (<src.isgm>)) if (strmatch('<args>','DURUM ?')) sayu Kasamdaki para miktarini ve kasamdaki parayla calisacagim gun sayisini (reel gun) ogrenmek icin kullancaginiz komuttur. else sayu Kasamdaki <eval <findlayer(29).more1>> altin ile <eval (<findlayer(29).more1> / (<hiredaywage> * 24))> gun daha sizin icin calisacagim. endif endif return 1 On=kasa* if (<src.uid> == <tag.owner>) if (strmatch('<args>','KASA ?')) sayu Satis olmamasi ve kasamdaki paranin azalmasi durumunda kasama yaninizda getireceginiz altini eklemek icin kullanacaginiz komuttur. else findid.i_pv.more1 3 findid.i_pv.target sayu Kasama yatirmak istediginiz parayi seciniz. endif endif return 1 On=hasilat* if (<src.uid> == <tag.owner>) if (strmatch('<args>','HASILA ?')) sayu Kasamdaki parayi banka hesabiniza aktarmakta kullanacaginiz komuttur. Kasamdaki son 2500 altini aktarmaniz mumkun degildir. else if (<eval <findlayer(29).more1>> < 2501) sayu Kasamda 2500 veya daha az altin var, su durumda size nakit veremem. else dialog d_pv_cash endif endif endif return 1 On=fiyat * if (<src.uid> == <tag.owner>) if (strmatch('<args>','FIYAT ?')) sayu Cantama yerlestirdiginiz esyalari fiyatlandirmakta kullanacaginiz komuttur. Kullanilisi, X'in yerine bir sayi gelecek bicimde 'Fiyat X' seklindedir. sayu Satilamaz ibareli esyalari asla fiyatlandiramazsiniz. Satilik haldeki bir esyayi 'satilik degil' hale getirmek icin 0 fiyat vermeniz gereklidir. else if !(<findlayer(21).findcont(0)>) sayu Cantamda fiyatlandirilacak mal bulunmuyor. else try <args> endif endif endif return 1 On=alisveris if ((<canseelos>) && (<distance> < 4)) face if (<src.uid> == <tag.owner>) sayu Satilacak esyalari buraya koyabilirsiniz. pack elseif !(<findlayer(21).findcont(0)>) sayu Su an satilik malim yok, lutfen daha sonra tekrar geliniz. else pack endif else src.sysmessage Vendor'a ulasamiyorsunuz. endif return 1 On=buy On=satin al if (<src.uid> == <tag.owner>) sayu Isverenim oldugunuz icin istediginizi alabilirsiniz, para vermenize gerek yok. elseif !(<findlayer(21).findcont(0)>) sayu Su an satilik malim yok uzgunum. elseif (<isgm>) sayu Benden birsey satin alamazsiniz. else findid.i_pv.more1 2 findid.i_pv.target endif return 1 On=* return 1 // ***** // EVENT // ***** [events e_pv] On=@GetHit if !(<src.npc>) src.newitem i_killer src.act.equip else src.leave 20 endif return 1 On=@Hit return 1 On=@HitTry return 1 On=@Death hits <str> return 1 On=@SpellEffect if (<src.npc>) src.leave 20 endif return 1 On=@ItemEquip if ((<act.layer> == 1) || (<act.layer> == 2)) findid.i_torch.equip findid.i_torch.dclick return 1 endif on=@skillstart if (<action>==skill_stealing) src.sysmessage @38,,1 HATA: Stealing yeteneginizi player vendorlari uzerinde kullanamazsiniz. src.action=-1 return 1 endif On=@Click if !(strmatch('<eval 0<tag.px>>','<eval <p.x>>')) || !(strmatch('<eval 0<tag.py>>','<eval <p.y>>')) || !(strmatch('<eval 0<tag.pz>>','<eval <p.z>>')) p <tag.p> update return 1 endif message @0783,,1 <memoryfindtype.memory_ipet.link.name> message @0481,,1 * <name> * return 1 On=@DClick if !(strmatch('<eval 0<tag.px>>','<eval <p.x>>')) || !(strmatch('<eval 0<tag.py>>','<eval <p.y>>')) || !(strmatch('<eval 0<tag.pz>>','<eval <p.z>>')) p <tag.p> update return 1 endif if !(<memoryfindtype.memory_ipet>) memorydel <src.uid> newitem i_memory act.attr 04 act.more1 04 act.more2 <serv.time> act.morep <link.p> act.color memory_ipet act.timer -1 act.link <tag.owner> act.cont <uid> flags <flags>&statf_pet endif if (<src.uid> == <tag.owner>) src.tag.vendor <uid> endif if (<src.isgm>) pack elseif (<src.flags>&statf_dead) src.sysmessage @38,,1 HATA: Su anki durumunuzda bu islemi gerceklestiremezsiniz. elseif ((<canseelos>) && (<distance> < 4)) face if (<src.uid> == <tag.owner>) sayu Satilacak esyalari buraya koyabilirsiniz. pack elseif !(<findlayer(21).findcont(0)>) sayu Su an satilik malim yok, lutfen daha sonra tekrar geliniz. else pack endif else src.sysmessage @38,,1 HATA: Vendor'a ulasamiyorsunuz. endif return 1 On=@EnvironChange if (<flags>&statf_war) flags <flags>&~statf_war update endif food 990 p <tag.p> tag.p <p> tag.px <p.x> tag.py <p.y> tag.pz <p.z> // ********************* // ALTINSAL FONKSIYONLAR // ********************* [function fiyat] if (<eval <argn>> > 2000000) sayu Tek bir mali 2 milyon altinin uzerinde fiyatla satmam yasalara aykiridir. else findid.i_pv.more1 1 findid.i_pv.more2 <eval <argn>> findid.i_pv.target endif [function vend_collect] var.vendorcash <eval (<argn> - 65000)> findlayer(29).more1 <eval (<findlayer(29).more1> - 65000)> src.newitem i_gold src.act.amount 65000 src.act.cont <src.findlayer(29).uid> if (<eval <var.vendorcash>> >= 65000) vend_collect <eval <var.vendorcash>> elseif (<eval <var.vendorcash>> > 0) findlayer(29).more1 <eval (<findlayer(29).more1> - <var.vendorcash>)> src.newitem i_gold src.act.amount <eval <var.vendorcash>> src.act.cont <src.findlayer(29).uid> var.vendorcash else var.vendorcash endif [function packo] // (special thx to laroux below this line) try src.tag.<uid> <rescount> packo_loop <args> [function packo_loop] if (<eval <src.tag.<uid>>> > 0) try src.tag.<uid> <eval (<src.tag.<uid>> - 1)> //if (strmatch('<findcont.<eval <src.tag.<uid>>>.type>','t_container')) // try findcont.<eval <src.tag.<uid>>>.packo <args> //else try findcont.<eval <src.tag.<uid>>>.<args> //endif packo_loop <args> else try src.tag.<uid> endif [function gp] var.gp 0 //findlayer(21).packo gp_ctrl findlayer(29).packo gp_ctrl return <eval <var.gp>> [function gp_ctrl] if (strmatch('<baseid>','i_gold')) var.gp <eval (<var.gp> + <amount>)> endif [function gpconsume] var.gp <argn> //findlayer(21).packo gpconsume_ctrl <argn> findlayer(29).packo gpconsume_ctrl <argn> return 1 [function gpconsume_ctrl] if ((<var.gp> > 0) && (strmatch('<baseid>','i_gold'))) if (<amount> > <eval (<var.gp>)>) amount <eval (<amount> - <var.gp>)> var.gp 0 else var.gp <eval (<var.gp> - <amount>)> remove endif endif [function evl] sysmessage @38,,1 Evaluating [0<args>]: <eval 0<args>>. return <valstr 0<args>> [events e_vendclick] On=@itemclick if (<act.topobj.id> == c_pv) elseif (<act.price> <= 0) act.message @38,,1 [satilik degil] else if ((<act.type> == t_armor) || (<act.type> == t_armor_leather) || (<act.type> == t_shield) || (<act.type> == t_clothing) || (<act.type> == t_weapon_sword) || (<act.type> == t_weapon_fence) || (<act.type> == t_weapon_mace_staff) || (<act.type> == t_weapon_mace_smith) || (<act.type> == t_weapon_mace_pick) || (<act.type> == t_weapon_bow) || (<act.type> == t_weapon_xbow)) if !(<eval ((<act.more1l> * 100) / <act.more1h>)> == 100) act.message @38,,1 [<act.price> gp] [%<eval (100 - ((<act.more1l> * 100) / <act.more1h>))> eski] else act.message @38,,1 [<act.price> gp] endif else act.message @38,,1 [<act.price> gp] endif endif endif [eof]
Script'i aldığınız yerden eksik almış yada gözden kaçırıp event'leri vermeyi unutmuşsunuz. vendorfix şeklinde script'i araştırdığınızda zaten dediğiniz problemlerin çözümlemerleri olduğu gözüküyor. O script'i aktif edip event'leri vermelisiniz.