[function packo] // (special thx to laroux below this line)
try src.tag0.<uid> <rescount>
packo_loop <args>

[function packo_loop]
if (<eval <src.tag0.<uid>>> > 0)
try src.tag0.<uid> <eval (<src.tag0.<uid>> - 1)>
// if (strmatch('<findcont.<eval <src.tag0.<uid>>>.type>','t_container'))
// try findcont.<eval <src.tag0.<uid>>>.packo <args>
// else 
try findcont.<eval <src.tag0.<uid>>>.<args>
// endif
packo_loop <args>
else
try src.tag0.<uid>
endif

arkadaşlar pazar vendora item koyuluyor itemi başkası buy ile satın almaya kalktıgında sphere göçüyor dialog acılmıyor hatanın burda olabilecegi kanısındayım. Burada bi yanlıslık varmı. tesekkurler
src.gold -<args>

şeklinde kullanırsan daha iyi olur.
gold olarak değil satışlar silvercoin şeklinde olsun istiyorum

[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_silvercoin'))
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_silvercoin')))
if (<amount> > <eval (<var.gp>)>)
amount <eval (<amount> - <var.gp>)>
var.gp 0
else
var.gp <eval (<var.gp> - <amount>)>
remove
endif
endif

Bu bölümden çıkıyo sorun, göçme nedeni burası ama anlayamadım. buy yazıp item almaya kalkınca sphere göçüyor.
Novice
12.5
Emin olmamakla birlikte şurada bir sıkıntı olabilir

try src.tag.<uid> <eval (<src.tag.<uid>> - 1)>

Uid'ten 1 çıkarmayı benim mantığım almıyor.Eğer sphere'de benim kafadaysa çökmesi normal :P

Ayrıca sadece çanta veya banka ile bu işi yapmak istiyorsan daha önce böyle bir script yazmıştım forumda onuda kullanabilirsin.Tabi biraz düzenlemen gerekiyor.

https://www.ultima-strike.com/forum/ultima-online/sphere-scripting/vendor-gold-islemi-q48571
Novice
11.9
Benimde başıma gelmişti eskiden böyle bir olay, o zamanlar kolaya kaçıp src.gold -=<args> olarak ayarlayıp sonra farklı bir menüyle goldları spye çevirtmiştim
[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

sorunu buldum. bu komuttan dolayı döçüyor sphere. Vermeyince sorun yok.

packo_loop <args>

Bu sorunu halledemedim, tüm scp i buraya koymak istemiyorum eğer yardım edecek varsa özelden yardım edebilirse sevinirim, teşekkürler.
[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

burda amaç ne anlamadım ama for varken packo_loop diye döndürürsen düşer sunucu muhtemelen nedeni budur ama olmayadabilir.

Sorunun tam nedenini söylemedin çünkü.
/2
[plevel 1]
vendorumvarsil

[function vendorumvarsil]
src.findid.i_vendorumvar.remove
src.sysmessage @1953,1,1,1 Pazar vendor kurabilirsiniz.
return 1

[dialog d_kapansinmi]
5,5
nomove
resizepic 100 165 9300 410 110
checkertrans 150 165 180 120
resizepic 105 170 9300 400 100
dhtmlgump 117 180 520 20 0 0 Dikkat edin, içindekilerden kimse sorumlu tutulmaz. Eminmisiniz?
dhtmlgump 165 210 80 20 0 0 Evet
dhtmlgump 165 230 80 20 0 0 Hayır
button 130 207 4006 4007 1 0 1
button 130 227 4018 4019 1 0 2

[dialog d_kapansinmi button]
On=1
if (<distance> > 3)
src.sysmessage @1953,1,1,1 Ulaşamıyorsunuz.
return 1
else
SRC.ACT.TIMER 1
src.findid.i_vendorumvar.remove
return 1
endif

On=2
src.sysmessage @1981,1,1,1 Vendorunuzu terketmekten vazgeçtiniz.

[ITEMDEF i_vendor_kira]
ID=i_gravestone_17
NAME=Kiralık Vendor
TYPE=t_script
DESCRIPTION=Kiralik Vendor

ON=@CREATE
COLOR=0810
ATTR=010
tag0.kiralik=0
tag0.sahip=0


ON=@CLICK
message @1153,,1 <name>
if (<eval <tag0.kiralik>> == 1)
message @1981,1,1,1 [Kiralanmış]
else
message @58,,1 [Kiralanmamış]
endif
return 1

ON=@DCLICK
src.events +e_pingiris
IF ( <DISTANCE> > 1 )
SRC.sysMESSAGE @1953,1,1,1 Yeterince yakın değilsiniz.
RETURN 1
ENDIF
SRC.ACT=<UID>
if (<src.tag.pinkabul>==0)
src.dialog d_pin_giris
return 1
endif
IF !(<eval <SRC.ACT.tag0.kiralik>>)
if (<src.findid.i_vendorumvar>)
src.sysmessage @1953,1,1,1 Sizin zaten vendorunuz var.
return 1
endif
SRC.DIALOG d_vendor_intro
src.tag0.dist <src.act.uid>
ELSE
IF (<SRC.ACT.LINK.tag0.sahip>==<SRC.UID>)||(<SRC.ISGM>)
VAR.LEASE=<eval <SRC.ACT.TIMER>/60>
VAR.LEASE=<eval <VAR.LEASE>/60>
SRC.dialog d_vendor_admin
RETURN 1
ELSE
SRC.SYSMESSAGE @1953,1,1,1 Bu dükkan kiralanmış.
RETURN 1
ENDIF
ENDIF
RETURN 1

ON=@TIMER
LINK.REMOVE
LINK=04fffffff
tag0.kiralik=0
tag0.sahip=0
COLOR=0810
RETURN 1

[DIALOG d_vendor_intro]
100, 100
PAGE 0
resizepic 10 10 2600 300 150
text 111 33 1153 0
text 36 64 1323 1
button 27 99 2151 2152 1 0 1
text 61 101 1341 2

[DIALOG d_vendor_intro TEXT]
Pazar Vendor
Kiralamak için 500k gold gerekir.
Bir haftalığına vendor kirala.

[DIALOG d_vendor_intro BUTTON]
on=0
src.tag0.dist
on=1
IF (<uid.<src.tag0.dist>.DISTANCE> > 1 )
SRC.sysMESSAGE @1953,1,1,1 Yeterince yakın değilsiniz.
else
if (<src.restest 500000 i_gold>)
src.tag0.dist
VAR.SIGN=<SRC.ACT>
SRC.ACT.tag0.kiralik=1
SRC.ACT.COLOR=0846
SRC.ACT.tag0.sahip=<SRC.UID>
SRC.ACT.TIMER=60*60*24*7
src.consume 500000 i_gold
VAR.SIGN=<SRC.ACT>
src.newnpc c_player_v2
src.act.p <p>
src.act.tag0.p <p>
src.act.tag0.px <p.x>
src.act.tag0.py <p.y>
src.act.tag0.pz <p.z>
src.act.tag0.owner <src.uid>
VAR.VEND=<SRC.ACT.UID>
src.act.findlayer(29).more1 2500
SRC.ACT.tag0.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.tag0.vendor <src.act.uid>
SRC.ACT=<VAR.SIGN>
src.act.update
src.newitem i_vendorumvar
src.act.equip
src.act.timer=60*60*24*7
serv.allclients update
ELSE
SRC.SYSMESSAGE @1953,1,1,1 Kiralamak için yanınızda 500k altın olmalı.
src.tag0.dist
ENDIF
endif
return 1

//itemnewbie i_beard_short_med
//attr 014
//color 07a1
//item i_hair_long
//attr 014
//color 07a1
//item i_Robe
//color 0846
//attr 04


[chardef c_player_v2]
defname c_player_v2
name #NAMES_HUMANMALE
id c_man
can mt_equip|mt_nonmover
hiredaywage 52
desires i_silvercoin

tspeech pv_spch
tevents e_pv

On=@Create
invul 1
str 9500
dex 25
int 25
color colors_skin
speechcolor 0481
food 9900
npc 1

itemnewbie i_beard_short_med
attr 014
color 0455
item i_hair_long
attr 014
color 0455
item i_Robe
color 0799
attr 04

item i_boots_calf
color 01
attr 04

item i_torch_lit
morey -1
itemnewbie i_backpack
itemnewbie i_bankbox
color 0798
timer 900
attr 014
itemnewbie i_pv

// *********
// DIALOGLAR
// *********

[dialog d_vendor_admin]
150,100
nomove

PAGE 0
resizepic 10 10 2600 380 180
checkertrans 10 10 380 180

text 90 30 1313 0
text 50 60 1983 1
text 50 90 1983 2
text 50 120 1983 3
text 55 150 1988 4

button 34 63 1209 1210 1 0 1
button 34 93 1209 1210 1 0 2
button 34 123 1209 1210 1 0 3

[DIALOG d_vendor_admin text]
Vendor yönetim
Bir hafta daha kirala
Banka aç 
Vendoru terket
Kalan süre : [<eval <VAR.LEASE>> saat]

[DIALOG d_vendor_admin button]
ONBUTTON=0
SRC.SYSMESSAGE @1953,1,1,1 Dialogu kapattınız.

ONBUTTON=1
IF (<src.restest 400000 i_gold>)
SRC.CONSUME 400000 i_gold
SRC.UPDATE
SRC.tag0.vendtimer <SRC.ACT.TIMER>
SRC.ACT.TIMER= <eval <SRC.ACT.TIMER>> + 604800
src.act.link.message @38,,1 Çalışma süremi 1 hafta daha uzattınız, teşekkür ederim.
src.sysmessage @1953,1,1,1 Taşa çift tıkladığınız zaman süre 1 hafta daha uzatılacak.
src.findid.i_vendorumvar.timer <eval <src.findid.i_vendorumvar.timer>> + 604800
ELSE
SRC.SYSMESSAGE @1953,1,1,1 Bir hafta daha çalışmam için yeterli paranız yok.(400k gold)
ENDIF

ONBUTTON=2
SRC.BANKSELF

ONBUTTON=3
if (<src.tag.pinkabul>==1)
src.dialog d_kapansinmi
return 1
else
src.dialog d_pin_giris
return 1
endif

[menu m_vendor_admin]
Kiralık vendor yönetimi.

ON=0 Bir hafta daha kirala. (Kalan süre: <eval <VAR.LEASE>> saat)
IF (<src.restest 400000 i_gold>)
SRC.CONSUME 400000 i_gold
SRC.UPDATE
SRC.tag0.vendtimer <SRC.ACT.TIMER>
SRC.ACT.TIMER= <eval <SRC.ACT.TIMER>> + 604800
src.act.link.message @38,,1 Çalışma süremi 1 hafta daha uzattınız, teşekkür ederim.
src.sysmessage @1953,1,1,1 Taşa çift tıkladığınız zaman süre 1 hafta daha uzatılacak.
src.findid.i_vendorumvar.timer <eval <src.findid.i_vendorumvar.timer>> + 604800
ELSE
SRC.SYSMESSAGE @1953,1,1,1 Bir hafta daha çalışmam için yeterli paranız yok.(400k gold)
ENDIF

ON=0 Vendoru terket.
SRC.ACT.TIMER 1
src.findid.i_vendorumvar.remove

ON=0 Banka Aç
SRC.BANKSELF

[dialog d_pv_cash]
300,300
nomove
resizepic 0 0 9200 200 75
resizepic 0 0 5054 200 75
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 !(<memoryfindtype.memory_ipet>)
src.sysmessage @1953,1,1,1 Sistem hatası.
return 1
endif
if !(<isnum <argtxt[1]>>)
src.sysmessage @1953,1,1,1 Hatalı karakter kullanımı.
return 1
endif
if (<eval <argtxt[1]>> <= 0)
say @1953,1,1,1 Bunu yapamazsınız.
elseif (<eval <argtxt[1]>> > <eval <findlayer(29).more1>>)
say @1953,1,1,1 Bu miktar kasamda bulunmuyor.
elseif (<eval (<findlayer(29).more1> - <argtxt[1]>)> < 2500)
say @1953,1,1,1 Bu miktarı veremeyeceğim, kasamda en az 2500 sp kalmalı.
elseif (<eval <argtxt[1]>> >= 65000)
vend_collect <eval <argtxt[1]>>
say @1953,1,1,1 Para bankanıza aktarıldı.
else
findlayer(29).more1 <eval (<findlayer(29).more1> - <argtxt[1]>)>
src.newitem i_silvercoin
src.act.amount <eval <argtxt[1]>>
src.act.cont <src.findlayer(29).uid>
say @1953,1,1,1 <argtxt[1]> sp bankanıza aktarıldı.
endif

[dialog d_pv_buy]
300,300
resizepic 0 0 9200 270 105
resizepic 0 0 5054 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>, fiyatı: <price> sp. Bunu satın almak istediğinize emin misiniz?

[dialog d_pv_buy button]
On=1
IF !(<src.tag0.pvyitani> == <topobj.uid>)
src.sysmessage @1982,1,1,1 Bu eşya vendorun çantasında değil.
return 1
endif
if (strmatch('<price>',''))
src.sysmessage @1982,1,1,1 Bu eşya satılık değil.
elseif (<price> <= 0)
src.sysmessage @1982,1,1,1 Bu eşya satılık değil.
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_crystal_30) || (<baseid> == i_crystal_60) || (<baseid> == i_crystal_90)
attr <attr>|attr_newbie
endif
else
topobj.say @1953,1,1,1 Bankanızın en üst kısmında bunu alacak kadar biletiniz yok.
endif

[dialog d_pv_dismiss]
300,300

resizepic 0 0 5054 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_dismiss text]
DİKKAT! Tezgahtarınızda <findlayer(21).rescount> adet eşya ve <eval <findlayer(29).more1>> bilet bulunuyor, onu deed haline getirmek istediğinize emin misiniz?

[dialog d_pv_dismiss button]
On=1
if (<findid.i_pv_rem.timer> < 0)
if (<findid.i_pv_rem.more2> == 1)
say @1953,1,1,1 Sizinle çalışmak güzeldi.
bow
findid.i_pv_rem.timer 3
src.newitem i_deed_pv
src.act.bounce
elseif (<findid.i_pv_rem.more2> == 2)
say @1953,1,1,1 Nasıl isterseniz.
salute
findid.i_pv_rem.timer 3
src.newitem i_deed_pv
src.act.cont <memoryfindtype.memory_ipet.link.findlayer(21).uid>
endif
endif

// ******
// SPEECH
// ******

[speech pv_spch]
On=bilgi
On=yardim
src.sysmessage @1953,1,1,1 Kullanabileceğiniz komutlar: hasilat,fiyat,alisveris,kasa,durum.
return 1

On=durum*
src.sysmessage @1953,1,1,1 Taşa çift tıklayarak vendorun süresini öğrenebilirsiniz.
return 1

On=kasa*
if (<src.uid> == <tag0.owner>)
if (strmatch('<args>','KASA ?'))
say @1953,1,1,1 Satış olmaması ve kasamdaki paranın azalması durumunda kasama yanınızda getireceğiniz sp'yi eklemek için kullanacağınız komuttur.
else
findid.i_pv.more1 3
findid.i_pv.target
say @1953,1,1,1 Kasama yatırmak istediğiniz parayı seçiniz.
endif
endif
return 1

On=hasilat*
if (<src.uid> == <tag0.owner>)
if (strmatch('<args>','HASILA ?'))
say @1953,1,1,1 Kasamdaki parayı banka hesabınıza aktarmakta kullanacağınız komuttur. Kasamdaki son 2500 sp'yi aktarmanız mümkün değildir.
else
if (<eval <findlayer(29).more1>> < 2501)
say @1953,1,1,1 Kasamda 2500 veya daha az sp var, bu durumda size nakit veremem.
else
dialog d_pv_cash
endif
endif
endif
return 1

On=fiyat *
if (<src.uid> == <tag0.owner>)
if (strmatch('<args>','FIYAT ?'))
say @1953,1,1,1 Çantama yerleştirdiğiniz eşyaları fiyatlandırmakta kullanacağınız komuttur. Kullanılışı, X'in yerine bir sayı gelecek biçimde 'Fiyat X' şeklindedir.
say @1953,1,1,1 Satılamaz ibareli eşyaları asla fiyatlandıramazsınız. Satılık haldeki bir eşyayı 'satılık değil' hale getirmek için 0 fiyat vermeniz gereklidir.
else
if !(<findlayer(21).findcont(0)>)
say @1953,1,1,1 Çantamda fiyatlandırılacak mal bulunmuyor.
else
try <args>
return 1
endif
endif
endif

On=alisveris
if ((<canseelos>) && (<distance> < 4))
face
if (<src.uid> == <tag0.owner>)
say @1953,1,1,1 Satılacak eşyaları buraya koyabilirsiniz.
pack
elseif !(<findlayer(21).findcont(0)>)
say @1953,1,1,1 Şuanda satılacak bir malım yok, lütfen daha sonra tekrar geliniz.
else
pack
endif
else
src.sysmessage @1953,1,1,1 Vendora ulaşamıyorsunuz.
endif
return 1

On=buy
On=satin al
if (<src.uid> == <tag0.owner>)
say @1953,1,1,1 İşverenim olduğunuz için istediğinizi alabilirsiniz, para vermenize gerek yok.
elseif !(<findlayer(21).findcont(0)>)
say @1953,1,1,1 Şuanda satılacak bir malım yok, üzgünüm.
elseif (<isgm>)
say @1953,1,1,1 Benden birşey satın alamazsınız.
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 @1953,1,1,1 Stealing yeteneğinizi pazarcılar üzerinde kullanamazsınız.
src.action=-1
return 1
endif

On=@click
if !(strmatch('<eval 0<tag0.px>>','<eval <p.x>>')) || !(strmatch('<eval 0<tag0.py>>','<eval <p.y>>')) || !(strmatch('<eval 0<tag0.pz>>','<eval <p.z>>'))
p <tag0.p>
update
return 1
endif
message @1982,1,1,1 [<eval <VAR.LEASE>> saat]
///message @0481,,1 [<name>]
return 1

On=@DClick
if !(strmatch('<eval 0<tag0.px>>','<eval <p.x>>')) || !(strmatch('<eval 0<tag0.py>>','<eval <p.y>>')) || !(strmatch('<eval 0<tag0.pz>>','<eval <p.z>>'))
p <tag0.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 <tag0.owner>
act.cont <uid>
flags <flags>&statf_pet
endif

if (<src.uid> == <tag0.owner>)
src.tag0.vendor <uid>
endif

if (<src.isgm>)
pack
elseif (<src.flags>&statf_dead)
src.sysmessage @1953,1,1,1 Şuanki durumunuzda bu işlemi gerçekleştiremezsiniz.
elseif ((<canseelos>) && (<distance> < 4))
face
if (<src.uid> == <tag0.owner>)
say @1953,1,1,1 Satılacak eşyaları buraya koyabilirsiniz.
pack
elseif !(<findlayer(21).findcont(0)>)
say @1953,1,1,1 Şuanda satılacak bir malım yok, lütfen daha sonra tekrar geliniz.
else
pack
endif
else
src.sysmessage @1953,1,1,1 Vendora ulaşamıyorsunuz.
endif
return 1

On=@EnvironChange
if (<flags>&statf_war)
flags <flags>&~statf_war
update
endif
food 990
p <tag0.p>
tag0.p <p>
tag0.px <p.x>
tag0.py <p.y>
tag0.pz <p.z>

// *********************
// ALTINSAL FONKSIYONLAR
// *********************

[function fiyat]
if (<eval <argn>> > 5000000)
say @1953,1,1,1 Tek bir malı 5 milyon altının üzerinde fiyatla satmam yasalara aykırıdır.
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_silvercoin
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_silvercoin
src.act.amount <eval <var.vendorcash>>
src.act.cont <src.findlayer(29).uid>
var.vendorcash
else
var.vendorcash
endif

[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.tag0.owner>)
cont.say @1953,1,1,1 <src.name>, siz benim işverenim değilsiniz.
elseif !(<src.targ.topobj.uid> == <cont.uid>)
cont.say @1953,1,1,1 Bu eşya çantamda değil.
elseif (strmatch('<src.targ.price>',''))
cont.say @1953,1,1,1 Bu satılabilecek bir eşya değil.
elseif (<eval <more2>> <= 0)
src.targ.price 0
cont.say @1953,1,1,1 <src.targ.name>: 'satılık değil' olarak işaretlendi.
return 1
else
src.targ.price <eval <more2>>
more2 0
cont.say @1953,1,1,1 <src.targ.name>: <src.targ.price> sp.
return 1
endif

elseif (<more1> == 2) // satis
if !(<src.targ.topobj.uid> == <cont.uid>)
cont.sayu Bu esya cantamda degil.
return 1
elseif (strmatch('<src.targ.price>',''))
cont.sayu Bu esya satilik degil.
return 1
elseif (<src.targ.price> <= 0)
cont.sayu Bu esya satilik degil.
return 1
elseif (<src.gp> < <src.targ.price>)
cont.say @1953,1,1,1 Bankanızın en üst kısmında <src.targ.price> altınınız bulunmuyor.
return 1
else
src.targ.dialog d_pv_buy
endif

elseif (<more1> == 3) // para aktarma
if !(<src.uid> == <cont.tag0.owner>)
cont.say @1953,1,1,1 <src.name>, siz benim işverenim değilsiniz.
elseif !(<src.targ.topobj.uid> == <src.uid>)
cont.say @1953,1,1,1 Gösterdiğiniz nesne sizin üzerinizde değil.
elseif !(<src.targ.baseid> == i_silvercoin)
cont.say @1953,1,1,1 Bu gösterdiğiniz altın değil.
else
cont.findlayer(29).more1 <eval (<cont.findlayer(29).more1> + <src.targ.amount>)>
if (<eval (<src.targ.amount> / <cont.hiredaywage>)> > 0)
cont.say @1953,1,1,1 Kasama <src.targ.amount> silverpiece eklendi, teşekkür ederim.
else
cont.say @1953,1,1,1 <src.targ.amount> silverpiece kasama eklendi, teşekkür ederim.
endif
src.targ.remove
endif
//endif
return 1

On=@Timer
return 1

[itemdef i_vendorumvar]
id i_memory
name Vendorum var
type t_eq_script

On=@create
attr=attr_decay
timer 5

On=@equip
return 1

On=@Timer
cont.sysmessage @1953,1,1,1 Vendorunuzun süresi bittiğinden dolayı vendorunuz silinmiştir.
remove
return 1

[function packo]
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 @1953,1,1,1 Evaluating [0<args>]: <eval 0<args>>.
return <valstr 0<args>>

[itemdef i_pv_rem]
id i_memory
name vendor silici
type t_eq_script

On=@UnEquip
cont.memoryfindtype.memory_ipet.link.tag.vendor
if !(<more2> == 3)
cont.findid.i_pv.link.tag.vendnumber <eval (<cont.findid.i_pv.link.tag.vendnumber> - 1)>
if (<cont.findid.i_pv.link.tag.vendor1> == <cont.uid>)
cont.findid.i_pv.link.tag.vendor1 0
elseif (<findid.i_pv.link.tag.vendor2> == <cont.uid>)
cont.findid.i_pv.link.tag.vendor2 0
elseif (<findid.i_pv.link.tag.vendor3> == <cont.uid>)
cont.findid.i_pv.link.tag.vendor3 0
endif
endif
cont.remove

On=@Timer
remove
return 1


[eof]

Tüm scriptim bu. Herşey yolunda gidiyo vendor kuruluyo, itemi koyuyo fiyat veriyo. Birisi o fiyat biçilmiş iteme buy yazıp tıkladıgı zaman sphere sonsuz döngüye giriyo, hatalar zinciri, göçüyo yani. d_pv_buy dialogunu acması lazm acmıyo yardım edermisiniz lutfen.

Bu konu ycihangir tarafından düzenlendi(2013-03-04 04:43, 11 yıl önce)
[dialog d_pv_buy text]
<name>, fiyatı: <price> sp. Bunu satın almak istediğinize emin misiniz?
bölümünü çıkartıp bu işlemi buy spech'i altında yaptırıp denermisin dialogda text göremedim çünkü muhtemelen dialogda bi eksik veya fazlalık var

Üye Ol veya Giriş Yap

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