Bir istek üzerine yapmış olduğum fakat kullanılmayan bir ticaret sistemidir kullanması gayet basit ve ekstradan fix yapmanıza gerek yok Runebook vs vs gibi
Bu arada sistem belirlir bir şehirden ziyade tüm şehirlere ticaretin hareketlenmesi üzerine ayarlanmıştır, yani ticaret yapacağınız mesafe arttıkça alacağınız para artar fakat her vendorun bir limiti olduğu için o limit dolduğunda siz ürünü teslim etseniz bile normal vendor fiyatını alırsınız bu yüzden bir vendor limiti dolduğunda başka vendora götürmeniz sizin için daha kazançlı olacaktır.
Kod:
//// Sistem kurulumu için .Kara_Ticareti yazılması yeterlidir.
[Defname Ticaret_Ayarlari]
T_MaksimumSatilacakUrunMiktari "1000000" // Vendora bir üründen satılabilecek maksimum tutar
T_StokAzalmaYuzdesi "5" // Stoklar yenilendiğinde toplam stokların eriyeceği yüzde
T_StokYenilemeSuresi "60" // Dakika cinsinden
T_KontratLimiti "60000" // Ticaret yapilacak maksimum limit
[Defname TicareteKonuOlcakYetenekler]
K_Ticaret_Yetenek_1 "BlackSmith"
K_Ticaret_Yetenek_2 "Farming"
K_Ticaret_Yetenek_3 "Fisher"
K_Ticaret_Yetenek_4 "Lumberjack"
K_Ticaret_Yetenek_5 "Mining"
K_Ticaret_Yetenek_6 "Scribe"
[Defname TicaretSehirleri]
K_Ticaret_Sehir_1 "Britain"
K_Ticaret_Sehir_2 "Cove"
K_Ticaret_Sehir_3 "Minoc"
K_Ticaret_Sehir_4 "Skara Brae"
K_Ticaret_Sehir_5 "Yew"
[Defname TicaretItemleriVol1]
K_Ticaret_BlackSmith_1 "i_katana"
K_Ticaret_BlackSmith_2 "i_spear"
K_Ticaret_Fisher_1 "i_fish_cut_cooked"
K_Ticaret_Lumberjack_1 "i_log"
K_Ticaret_Lumberjack_2 "i_board"
K_Ticaret_Mining_1 "i_ingot_iron"
K_Ticaret_Scribe_1 "i_scroll_resurrection"
//K_Ticaret_Farming_1 "i_karpuz" // Burası sunucuda varsa ayarlanacak
//////////////////////////////////////////////
[Itemdef I_Stock_Ayar]
ID=i_memory
Name Stock Settings
Weight 0
Type T_Eq_Script
On=@Create
Attr Attr_Newbie|Attr_Decay|Attr_Invis
Timer 1
On=@Timer
While !<IsEmpty <Def.K_Ticaret_Yetenek_<Eval <dLocal._While> + 1>>>
Local.Vayl ++
While !<IsEmpty <Def.K_Ticaret_<Def.K_Ticaret_Yetenek_<dLocal.Vayl>>_<Eval <dLocal._While> + 1>>>
IF (<Cont.Tag0.Stok_<Def.K_Ticaret_<Def.K_Ticaret_Yetenek_<dLocal.Vayl>>_<Eval <dLocal._While> + 1>>> > 0)
Local.UrunAdedi <Cont.Tag0.Stok_<Def.K_Ticaret_<Def.K_Ticaret_Yetenek_<dLocal.Vayl>>_<Eval <dLocal._While> + 1>>>
IF (<dLocal.UrunAdedi> <= <Eval (<dDef.T_MaksimumSatilacakUrunMiktari>*<dDef.T_StokAzalmaYuzdesi>)/100>)
Cont.Tag0.Stok_<Def.K_Ticaret_<Def.K_Ticaret_Yetenek_<dLocal.Vayl>>_<Eval <dLocal._While> + 1>>
Else
Cont.Tag0.Stok_<Def.K_Ticaret_<Def.K_Ticaret_Yetenek_<dLocal.Vayl>>_<Eval <dLocal._While> + 1>> <Eval <dLocal.UrunAdedi> - <Eval (<dDef.T_MaksimumSatilacakUrunMiktari>*<dDef.T_StokAzalmaYuzdesi>)/100>>
Endif
Endif
EndWhile
Timer <Eval <Def.T_StokYenilemeSuresi>*60>
Return 1
[Dialog D_Kara_Ticareti]
0,0
Resizepic 0 0 83 300 200
Checkertrans 7 10 287 180
Page 1
IF (<IsEmpty <Tag.Ticaret_Yetenegi>>)
DHtmlgump 7 20 287 20 0 0 <Def.H6><Def.bFont_LYellow><Def.Center>Ne üzerine ticaret yapılacak ?
While !<IsEmpty <Def.K_Ticaret_Yetenek_<Eval <dLocal._While> + 1>>>
Local.EleAlinanYetenek ++
IF (<dLocal.Eahu> = 2)
Local.BaslamaSirasi +=40
Local.Eahu 0
Endif
IF (<dLocal.BaslamaCizgisi> > 145)
Local.BaslamaCizgisi 0
Endif
Button <Eval <dLocal.BaslamaCizgisi> + 10> <Eval <dLocal.BaslamaSirasi> + 59> 4024 4025 1 0 <dLocal.EleAlinanYetenek>
Resizepic <Eval <dLocal.BaslamaCizgisi> + 45> <Eval <dLocal.BaslamaSirasi> + 60> 9300 100 20
DHtmlgump <Eval <dLocal.BaslamaCizgisi> + 45> <Eval <dLocal.BaslamaSirasi> + 60> 95 20 0 0 <Def.H6><Def.bFont_dGreen><Def.Center><Def.K_Ticaret_Yetenek_<Eval <dLocal._While> + 1>>
Local.BaslamaCizgisi +=145
Local.Eahu ++
EndWhile
ELSE
IF (<IsEmpty <Tag.Ticaret_Esyasi>>)
While !<IsEmpty <Def.K_Ticaret_Yetenek_<Eval <dLocal._While> + 1>>>
Local.ButonDevam ++
EndWhile
DHtmlgump 7 20 287 20 0 0 <Def.H6><Def.bFont_Red><Def.Center>Ticaretini gerçekleştireceğiniz ürünü seçin
While !<IsEmpty <Def.K_Ticaret_<Tag0.Ticaret_Yetenegi>_<Eval <dLocal._While> + 1>>>
Local.ButonDevam ++
Button <Eval <dLocal.BaslamaCizgisi> + 20> <Eval <dLocal.BaslamaSirasi> + 59> 4024 4025 1 0 <dLocal.ButonDevam>
Resizepic <Eval <dLocal.BaslamaCizgisi> + 65> <Eval <dLocal.BaslamaSirasi> + 60> 9300 180 20
DHtmlgump <Eval <dLocal.BaslamaCizgisi> + 75> <Eval <dLocal.BaslamaSirasi> + 60> 175 20 0 0 <Def.H6><Def.bFont_dGreen><Serv.Itemdef.<Def.K_Ticaret_<Tag0.Ticaret_Yetenegi>_<Eval <dLocal._While> + 1>>.Name>
Local.BaslamaSirasi +=25
EndWhile
ELSE
Local.TicaretEsyasi <Tag0.Ticaret_Esyasi>
Local.Say = <Src.ResCount <Local.TicaretEsyasi>>
ForCont <Src.Findlayer.29> 0
IF (<BaseID> = <Local.TicaretEsyasi>)
Local.Say += <Amount>
Endif
EndFor
DHtmlgump 7 20 287 20 0 0 <Def.H6><Def.bFont_Red><Def.Center>Ticaret yapılacak miktarı ayarlarlayın
DHtmlgump 20 60 287 20 0 0 <Def.H6><Def.bFont_White>Ticaret Ürünü : <Def.bFont_LGreen><Serv.Itemdef.<Tag0.Ticaret_Esyasi>.Name>
DHtmlgump 20 80 287 20 0 0 <Def.H6><Def.bFont_White>Karakterde bulunan miktar : <Def.bFont_LGreen><Qval <dLocal.Say> < 60001)?<BolukAyir <dLocal.Say>>:<BolukAyir 60000> <Def.bFont_Red>▲>
DHtmlgump 20 120 287 20 0 0 <Def.H6><Def.bFont_White>Ticaret yükü
Resizepic 100 120 9300 100 20
DTextentrylimited 105 120 90 25 1152 1 5
Button 210 110 1147 1148 1 0 1453
ENDIF
ENDIF
PAGE 100
Local.BaslamaSirasi 0
Local.BaslamaCizgisi 10
DHtmlgump 7 20 287 20 0 0 <Def.H6><Def.bFont_Red><Def.Center>Ticaretini gerçekleştireceğiniz şehiri seçin
DText 90 40 90 Şehir
DText 210 40 90 Kazanç
While !<IsEmpty <Def.K_Ticaret_Sehir_<Eval <dLocal._While> + 1>>>
Local.Arti ++
IF !(Strmatch('<StrArg <Src.P.Region.Name>>','<StrArg <Def.K_Ticaret_Sehir_<Eval <dLocal._While> + 1>>>'))
Local.Value=<Serv.Itemdef.<StrArg <Tag0.Ticaret_Esyasi>>.Value>
Local.StokPara=<Eval (<Eval <Def.T_MaksimumSatilacakUrunMiktari> - <UID.<Src.VendorAramaSekli <Def.K_Ticaret_Sehir_<Eval <dLocal._While> + 1>>>.Tag0.Stok_<StrArg <Tag0.Ticaret_Esyasi>>>>*5)/<Def.T_MaksimumSatilacakUrunMiktari>>
Local.MesafePara=<Eval (<UID.<Src.VendorAramaSekli <Src.P.Region.Name>>.Distance <UID.<Src.VendorAramaSekli <Def.K_Ticaret_Sehir_<Eval <dLocal._While> + 1>>>>> - 600)/100>
Local.TotalGp=<Eval <dLocal.Value> + <dLocal.StokPara> + <dLocal.MesafePara>>
Button <Eval <dLocal.BaslamaCizgisi> + 20> <Eval <dLocal.BaslamaSirasi> + 59> 4024 4025 1 0 <Eval <dLocal.Arti> + 500>
Resizepic <Eval <dLocal.BaslamaCizgisi> + 65> <Eval <dLocal.BaslamaSirasi> + 60> 9300 210 20
DHtmlgump <Eval <dLocal.BaslamaCizgisi> + 75> <Eval <dLocal.BaslamaSirasi> + 60> 175 20 0 0 <Def.H6><Def.bFont_dGreen><Def.K_Ticaret_Sehir_<Eval <dLocal._While> + 1>>
DHtmlgump <Eval <dLocal.BaslamaCizgisi> + 185> <Eval <dLocal.BaslamaSirasi> + 60> 175 20 0 0 <Def.H6><Def.bFont_dRed> <Bolukayir <Eval <Eval <StrEat <Tag0.Ticaret_Esyasi>>> * <dLocal.TotalGp>>> gp
Local.BaslamaSirasi +=25
Endif
EndWhile
[Dialog D_Kara_Ticareti Button]
On=1 500
IF !(<Src.cTag.TicaretVendor>) || (<Src.Distance <UID.<Src.CTag.TicaretVendor>>> > 5)
Src.Sysmessage @38,,1 Bunu sadece ticaret vendorlarının yanında yapabilirsiniz.
Return 1
Endif
While !<IsEmpty <Def.K_Ticaret_Yetenek_<Eval <dLocal._While> + 1>>>
Local.Butonlar ++
EndWhile
IF (<dArgn> <= <dLocal.Butonlar>)
IF (Strmatch('Farming','<Def.K_Ticaret_Yetenek_<Argn>>'))
Src.Sysmessage @38,,1 Bu yetenek geçici olarak servis dışıdır.
Return 1
Endif
Tag.Ticaret_Yetenegi <Def.K_Ticaret_Yetenek_<Argn>>
sDialog D_Kara_Ticareti
Endif
While !<IsEmpty <Def.K_Ticaret_<Tag0.Ticaret_Yetenegi>_<Eval <dLocal._While> + 1>>>
Local.Butonlar2 ++
EndWhile
IF (<dArgn> > <dLocal.Butonlar>) && (<dArgn> <= <Eval <dLocal.Butonlar> + <dLocal.Butonlar2>>)
Tag.Ticaret_Esyasi <Def.K_Ticaret_<Tag0.Ticaret_Yetenegi>_<Eval <dArgn> - <dLocal.Butonlar>>>
sDialog D_Kara_Ticareti
Endif
On=501 510
IF !(<Src.cTag.TicaretVendor>) || (<Src.Distance <UID.<Src.CTag.TicaretVendor>>> > 5)
Src.Sysmessage @38,,1 Bunu sadece ticaret vendorlarının yanında yapabilirsiniz.
Return 1
Endif
IF (Strmatch('<Src.P.Region.Name>','<StrArg <Def.K_Ticaret_Sehir_<Eval <dArgn> - 500>>>'))
Src.Sysmessage @38,,1 Olduğunuz noktada ticarete başlayamazsınız.
sDialog D_Kara_Ticareti,100
Return 1
Endif
Tag0.TicaretSehri <Def.K_Ticaret_Sehir_<Eval <dArgn> - 500>>
Tag0.TicaretVendoru <Src.VendorAramaSekli <Def.K_Ticaret_Sehir_<Eval <dArgn> - 500>>>
Tag0.BaslangicSehri <UID.<Src.CTag.TicaretVendor>.Region.Name>
Src.Sysmessage @07a1,,1 Ticaretin gerçekleşeceği şehir <Def.K_Ticaret_Sehir_<Eval <dArgn> - 500>> olarak ayarlandı.
On=1453
IF !(<Src.cTag.TicaretVendor>) || (<Src.Distance <UID.<Src.CTag.TicaretVendor>>> > 5)
Src.Sysmessage @38,,1 Bunu sadece ticaret vendorlarının yanında yapabilirsiniz.
Return 1
Endif
IF !((<IsNum <Argtxt[1]>>)
Src.Sysmessage @38,,1 Sadece rakam girişi yapabilirsiniz.
Return 1
Endif
IF (StrMatch('<StrSub 0 1 <ArgTxt[1]>>','0'))
Src.Sysmessage @38,,1 İlk rakam " 0 " olamaz.
Return 1
Endif
IF (<dArgtxt[1]> < 30000) || (<Argtxt[1]> > <dDef.T_KontratLimiti>)
Src.Sysmessage @38,,1 Ticaret limitiniz en az 30000 en fazla <Def.T_KontratLimiti>'dir.
Return 1
Endif
Local.Ticaret <Tag0.Ticaret_Esyasi>
Local.Tutar <ArgTxt[1]>
IF (<dLocal.Tutar> >= <Src.ResCount.<Local.Ticaret>>)
Local.Tutar -=<dSrc.ResCount.<Local.Ticaret>>
Src.Consume <dSrc.ResCount.<Local.Ticaret>> <Local.Ticaret>
Else
Src.Consume <dLocal.Tutar> <Local.Ticaret>
Local.Tutar 0
Endif
IF (<dLocal.Tutar>)
ForCont <Src.Findlayer.29> 0
IF (<BaseID> = <Local.Ticaret>)
IF (<dLocal.Tutar> >= <Amount>)
Local.Tutar -= <Amount>
Remove
Else
Amount -= <dLocal.Tutar>
Local.Tutar 0
Endif
Endif
EndFor
Endif
Tag0.Ticaret_Esyasi <Local.Ticaret> <Eval <ArgTxt[1]> - <dLocal.Tutar>>
Color 0955
sDialog D_Kara_Ticareti,100
[Dialog TicaretBinekStatus]
<ScreenSize.X>,0
NoMove
Ref1=<Uid.<Src.Tag0.TicaretBinegi>>
Resizepic 0 0 83 220 30
Resizepic 0 30 83 220 75
TilePicHue 4 45 8486 0
Resizepic 90 45 9400 120 21
Resizepic 93 49 5120 <Eval (<Ref1.Hits>*115)/<Ref1.MaxHits>> 15
DHtmlgump 90 48 120 20 0 0 <Def.H6><Def.Center><Def.BFont_White>Hits : <Def.bFont_LGreen><Ref1.Hits>
Resizepic 90 65 9400 120 21
Resizepic 93 69 5120 115 15
DHtmlgump 90 68 120 20 0 0 <Def.H6><Def.Center><Def.BFont_White>Mesafe : <Def.bFont_LGreen><UID.<Src.Tag0.TicaretBinegi>.Distance <UID.<Src.Tag0.TicaretVendoru>>>
DHtmlgump 53 45 120 20 0 0 <Qval (<Ref1.Hits> < <Eval <Ref1.Maxhits>/2>)?<Def.BFont_Red>:<Def.BFont_LGreen>>♥
DText 53 70 1152 M :
DHtmlgump 10 6 200 20 0 0 <Def.H6><Def.Center><Def.BFont_LYellow><SureHesapla <Eval <Src.Findid.i_ticaretsuresi.dtag0.ToplamSure> - <Src.Findid.i_ticaretSuresi.More1>>>
[Function SureHesapla]
Local.Saat <Eval <Args>/3600>
Local.Saniye <Eval (<dLocal.saat>*60)*60)>
Local.Kalansaniye <Eval <Args> -<dlocal.saniye>>
Local.Dakika <Eval <dlocal.kalansaniye>/60>
IF (<dLocal.Saat>)
Return <dlocal.saat> saat <dlocal.dakika> dakika <eval <dlocal.kalansaniye> - <Eval <dlocal.dakika>*60>> saniye
ElseIF (<dLocal.Dakika>)
Return <dlocal.dakika> dakika <eval <dlocal.kalansaniye> - <Eval <dlocal.dakika>*60>> saniye
ElseIF (<dLocal.Saniye>)
Return <eval <dlocal.kalansaniye> - <Eval <dlocal.dakika>*60>> saniye
Endif
[Function VendorAramaSekli]
ForInstances c_kara_ticaret
IF (Strmatch('<StrArg <Args>>','<StrArg <P.Region.Name>>'))
Local.UID <UID>
Endif
EndFor
Return <Local.UID>
[Itemdef I_TicaretSuresi]
ID i_memory
Weight=0
Type T_Eq_Script
Name Timer
On=@Equip
Timer 1
On=@Timer
Ref1=<UID.<Cont.Tag0.TicaretBinegi>>
IF !(<Ref1>)
Remove
Return 1
Endif
IF (<More1> >= <dTag.ToplamSure>)
Ref1.Events -Kara_Ticareti
Ref1.ClearTags
Cont.Events -Oyuncu_Kara_Ticareti
Cont.ClearTags BaslangicVendoru
Cont.ClearTags TicaretVendoru
Cont.ClearTags TicaretBinegi
TrySrc <Cont> UID.<Cont>.DialogClose TicaretBinekStatus
Cont.Sysmessage @07a1,,1 Ticareti zamanında tamamlayamadığınız için zaman aşımına uğramıştır.
Remove
Else
TrySrc <Cont> UID.<Cont>.DialogClose TicaretBinekstatus
TrySrc <Cont> UID.<Cont>.Dialog TicaretBinekstatus
IF !(<Tag0.SonKonum.X>) || !(<Tag0.SonKonum.Y>) || !(<Tag0.BSonKonum.X>) || !(<Tag0.BSonKonum.Y>)
Tag0.SonKonum <Cont.P>
Tag0.SonKonum.X <Cont.P.X>
Tag0.SonKonum.Y <Cont.P.Y>
Tag0.BSonKonum <Ref1.P>
Tag0.BSonKonum.X <Ref1.P.X>
Tag0.BSonKonum.Y <Ref1.P.Y>
Endif
IF (<TamSayi <Eval <Ref1.P.X> - <dTag.BSonKonum.X>>> > 6) || (<TamSayi <Eval <Ref1.P.Y> - <dTag.BSonKonum.Y>>> > 6)
Ref1.Go <Tag0.BSonKonum>
Cont.Sysmessage @38,,1 Bineğiniz bir önceki kordinatlarına gönderildi.
Endif
IF (<TamSayi <Eval <Cont.P.X> - <dTag.SonKonum.X>>> > 6) || (<TamSayi <Eval <Cont.P.Y> - <dTag.SonKonum.Y>>> > 6)
Cont.Go <Tag0.SonKonum>
Cont.Sysmessage @38,,1 Bu şekilde bir yere varamazsın.!
Timer 1
Else
Tag0.SonKonum <Cont.P>
Tag0.SonKonum.X <Cont.P.X>
Tag0.SonKonum.Y <Cont.P.Y>
Tag0.BSonKonum <Ref1.P>
Tag0.BSonKonum.X <Ref1.P.X>
Tag0.BSonKonum.Y <Ref1.P.Y>
More1 ++
Timer 1
Endif
Endif
Return 1
On=@Destroy
UID.<Cont.Tag0.TicaretBinegi>.Events -Kara_Ticareti
UID.<Cont.Tag0.TicaretBinegi>.ClearTags
Cont.Events -Oyuncu_Kara_Ticareti
Cont.ClearTags BaslangicVendoru
Cont.ClearTags TicaretVendoru
Cont.ClearTags TicaretBinegi
TrySrc <Cont> UID.<Cont>.DialogClose TicaretBinekStatus
[Events Kara_Ticareti]
On=@Click
Message @55,,1 [Ticaret Kervanı]
Message @07a1,,1 <Name>
Return 1
On=@SpellEffect
IF (<Src> = <Owner>)
IF (<Serv.Spell.<Argn1>.Flags>&SpellFlag_Harm) || (<Argn1> == 44)
Return 1
Endif
Endif
On=@Death
Local.X=<Findid.Ticaretkontrati.Tag0.Ticaret_Esyasi>
Findid.TicaretKontrati.Tag0.Ticaret_Esyasi <StrArg <Local.X>> <Eval <Eval <StrEat <Local.X>>> - (<Eval <StrEat <Local.X>>>*30)/100>
Findid.TicaretKontrati.More2=
Findid.Ticaretkontrati.Drop
Owner.Findid.i_ticaretsuresi.remove
Owner.ClearTags BaslangicVendoru
Owner.ClearTags TicaretVendoru
Owner.ClearTags TicaretBinegi
Owner.Events -Oyuncu_Kara_Ticareti
TrySrc <Owner> DialogClose TicaretBinekstatus
Owner.Sysmessage Ticaretiniz yalan oldu
Serv.Allclients Sysmessage @07a1,,1 <Owner.Name> isimli kişinin kervanı <P.Region.Name> civarında saldırıya uğramıştır.
On=@RegenStat
Local.Food <Food>
IF (<Local.StatID> = 2)
Stam 1
Endif
IF (<Local.StatID> = 3)
Food <dLocal.Food>
Endif
On=@RegionEnter
IF (<Argo.Flags>&Region_Flag_Ship) || (<UID.<Argo.UID>.Type> = T_Multi)
Return 1
Endif
[Events Oyuncu_Kara_Ticareti]
On=@Mount
Src.Sysmessage @38,,1 Kara ticaretinde binek kullanamazsınız
Return 1
On=@CharDClick
IF (<Act.IsEvent.Kara_Ticareti>) && (<Act.Owner> = <Src>)
IF (<Act.Distance <UID.<Act.Tag0.TicaretVendoru>>> > 5)
Src.Sysmessage @50,,1 Ticareti sadece hedefe ulaştığınızda bitirebilirsiniz.
Else
IF (<TamSayi <Eval <UID.<Act.Tag0.TicaretVendoru>.P.X> - <Src.Findid.i_TicaretSuresi.dTag.SonKonum.X>>> > 15) || (<TamSayi <Eval <UID.<Act.Tag0.TicaretVendoru>.P.Y> - <Src.Findid.i_TicaretSuresi.dTag.SonKonum.Y>>> > 15)
Src.Sysmessage @38,,1 Ticareti bu şekilde tamamlayamazsınız.
Return 1
Endif
Local.Value=<Serv.Itemdef.<StrArg <Src.Act.Tag0.Tasinan>>.Value>
Local.StokPara=<Eval (<Eval <Def.T_MaksimumSatilacakUrunMiktari> - <UID.<Src.Tag0.TicaretVendoru>.Tag0.Stok_<StrArg <Act.Tag0.Tasinan>>>>*5)/<Def.T_MaksimumSatilacakUrunMiktari>>
Local.MesafePara=<Eval (<UID.<Src.Tag0.BaslangicVendoru>.Distance <UID.<Src.Tag0.TicaretVendoru>>> - 600)/100>
Local.TotalGp=<Eval <dLocal.Value> + <dLocal.StokPara> + <dLocal.MesafePara>>
Src.Gold += <Eval <StrEat <Src.Act.Tag0.Tasinan>>*<dLocal.TotalGp>>
Ref1=<UID.<Src.Act.Tag0.TicaretVendoru>.Tag0.Stok_<StrArg <Src.Act.Tag0.Tasinan>>>
UID.<Src.Act.Tag0.TicaretVendoru>.Tag0.Stok_<StrArg <Src.Act.Tag0.Tasinan>> <Eval <Ref1> + <Eval <StrEat <Src.Act.Tag0.Tasinan>>>>
Src.Act.Events -Kara_Ticareti
Src.Act.ClearTags
Src.ClearTags BaslangicVendoru
Src.ClearTags TicaretBinegi
Src.ClearTags TicaretVendoru
Src.Findid.i_ticaretsuresi.remove
Src.Act.Findid.Ticaretkontrati.remove
Src.DialogClose TicaretBinekStatus
Src.Sysmessage @07a1,,1 Ticareti başarıyla tamamladınız.
Src.Events -Oyuncu_Kara_Ticareti
Return 1
Endif
Return 1
Endif
[Itemdef TicaretKontrati]
ID i_deed
Weight 10
Type T_Eq_Script
Name Ticaret Kontratı
Value 10000
On=@Create
Attr Attr_Decay
Color 0851
On=@Click
IF (<Tag0.TicaretVendoru>)
Message @50,,1 <Tag0.TicaretSehri>
Message @80,,1 <Serv.Itemdef.<StrArg <Tag0.Ticaret_Esyasi>>.Name>
Message @07a1,,1 [<BolukAyir <StrEat <Tag0.Ticaret_Esyasi>>> adet]
Return 1
Endif
On=@DClick
ForChars 5
IF (<BaseID> == c_kara_ticaret)
Src.CTag.TicaretVendor <UID>
Endif
EndFor
IF !(<Src.cTag.TicaretVendor>) || (<Src.Distance <UID.<Src.CTag.TicaretVendor>>> > 5)
Src.Sysmessage @38,,1 Bunu sadece ticaret vendorlarının yanında kullanabilirsiniz.
Return 1
Endif
IF (StrLen(<Tag0.BaslangicSehri>)) > 1)
IF !StrMatch('*<Tag0.BaslangicSehri>*','<Src.P.Region.Name>')
Src.Sysmessage @38,,1 Başlangıç şehriniz <Tag0.BaslangicSehri> olmalıdır.
Return 1
Endif
Endif
IF (<Src.IsEvent.Oyuncu_Kara_Ticareti>)
Src.Sysmessage @38,,1 Ticaretle meşgulken bunu yapamazsınız.
Return 1
Endif
IF !(<Src> == <TopObj>)
Src.Sysmessage @38,,1 Sadece çantanızdayken kullanabilirsiniz.
Return 1
Endif
IF !(<More1>)
More1 <Src>
Src.Sysmessage @07a1,,1 Bu esya artik size ait.
Else
IF (<More1> != <Src>)
Tag.Karaborsa 1
Target @07a1,,1 Kontrati bozdurmak istediğiniz vendoru seçin
Return 1
Endif
Endif
IF !(<Tag0.Ticaretvendoru>)
IF (<Eval <StrEat <Tag0.Ticaret_Esyasi>>>)
sDialog D_Kara_Ticareti,100
Return 1
Else
sDialog D_Kara_Ticareti
Return 1
Endif
Else
Tag0.KaraBorsa 0
Target @07a1,,1 <Qval <More2>?Ticaret mallarını yükleyeceğiniz hayvanı seçin:Ticarete başlayacağınız vendoru seçin>
Endif
Return 1
On=@TargOn_Ground
Return 1
On=@TargOn_Char
IF (<Tag0.KaraBorsa>)
IF (<Src.Targ.BaseID> = C_Kara_Ticaret)
Local.Value=<Eval <StrEat <Tag0.Ticaret_Esyasi>>*<Serv.Itemdef.<StrArg <Tag0.Ticaret_Esyasi>>.Value>>
Src.Gold += <dLocal.Value>
Src.Update
Src.Sysmessage @07a1,,1 Tebrikler ! <UID.<More1>.Name> isimli kişinin ticaretini baltalayarak <BolukAyir <dLocal.Value>> altın kazandınız.
Remove
Return 1
Else
Src.Sysmessage @07a1,,1 Bunu sadece ticaret vendorlarında bozdurabilirsiniz.
Return 1
Endif
Endif
IF (<More2>)
IF (<Src.Targ.BaseID> = c_horse_pack) || (<Src.Targ.BaseID> = c_llama_pack)
IF !StrMatch('*<Tag0.BaslangicSehri>*','<Src.P.Region.Name>')
Src.Sysmessage @38,,1 Başlangıç şehriniz <Tag0.BaslangicSehri> olmalıdır.
Return 1
Endif
IF (<Src.Targ.Distance <More2>>> 4)
Src.Sysmessage @07a1,,1 Başlangıç şehri : <UID.<More2>.Region.Name>
Src.Sysmessage @38,,1 Hayvan başlangıç vendoruna yakın olmalıdır.
Return 1
Endif
IF (<Src.Targ.IsEvent.Kara_Ticareti>)
Src.Sysmessage @38,,1 Bu hayvan zaten bir ticarette kullanılıyor.
Return 1
Endif
IF (<Src.Targ.Owner> = <Src>)
For <Eval <Src.DialogList.Count> - 1>
DialogClose <Src.DialogList.<dLocal._For>.ID>
EndFor
IF (<Src.FindLayer.Layer_Horse>)
Src.DisMount
Src.Sysmessage @07a1,,1 Ticare başladığınız için binek kullanamazsınız
Endif
Src.Newitem i_ticaretsuresi
Src.Act.Equip
Src.Act.Tag0.ToplamSure <Eval <Src.Distance <UID.<Tag0.TicaretVendoru>>>*3> /// kare başı 3 saniye
Src.Targ.Events +Kara_Ticareti
Src.Targ.Tag0.Tasinan <Tag.Ticaret_Esyasi>
Src.Targ.Tag0.TicaretVendoru <Tag0.Ticaretvendoru>
Src.Tag0.TicaretVendoru <Tag0.Ticaretvendoru>
Src.Tag0.TicaretBinegi <Src.Targ>
Src.Events +Oyuncu_Kara_Ticareti
Src.Dialog TicaretBinekStatus
Cont <Src.Targ.UID>
Src.Sysmessage @50,,1 Ticarete başladınız
Src.Sysmessage @07a1,,1 Unutma ! <SureHesapla <Eval <Src.Distance <UID.<Tag0.TicaretVendoru>>>*3>> içerisinde kervanı şehre ulaştırmalısın.
Else
Src.Sysmessage @38,,1 Eşyaları yükleyeceğiniz hayvan size ait olmalıdır.
Return 1
Endif
Endif
Else
IF (<Src.Targ.BaseID> = C_Kara_Ticaret)
IF !StrMatch('*<Tag0.BaslangicSehri>*','<Src.P.Region.Name>')
Src.Sysmessage @38,,1 Başlangıç şehriniz <Tag0.BaslangicSehri> olmalıdır.
Return 1
Endif
Src.Tag0.BaslangicVendoru <Src.Targ>
More2 <Src.Targ>
Target @07a1,,1 Ticaret mallarını yükleyeceğiniz hayvanı seçin
Else
Target @07a1,,1 Ticarete başlayacağınız vendoru seçin
Return 1
Endif
Endif
Return 1
On=@Targon_Item
Return 1
[CHARDEF c_kara_ticaret]
ID=c_man
Name=#NAMES_HUMANFEMALE the merchant
DESIRES=i_gold
AVERSIONS=t_trap
TSPEECH=spk_ticaret
CATEGORY=Civilized
SUBSECTION=Tradesmen
DESCRIPTION=Merchant
On=@DClick
Face <Src>
Buy
Return 1
ON=@Create
Title=The Merchant
Npc=Brain_Vendor
Tag.VendorMarkUp -15
Invul 1
Str 9500
Dex 25
Int 25
Color Colors_Skin
SpeechColor 0481
Food 990
ITEMNEWBIE=i_hair_ponytail
COLOR=0455
ITEMNEWBIE=i_shirt_fancy
COLOR=0455
ITEMNEWBIE=i_pants_short
COLOR=01
ITEMNEWBIE=i_apron_half
COLOR=01
ITEMNEWBIE=i_boots_calf
COLOR=01
ITEMNEWBIE=i_hat_straw
COLOR=01
ITEMNEWBIE=I_Stock_Ayar
TIMER 60
ON=@NPCRestock
Sell=TicaretKontrati
[SPEECH spk_ticaret]
ON=*buy*
Buy
Return 1
[Function TamSayi]
If (StrMatch('<StrSub 0 1 <Args>>','-'))
Local.TamSayi <StrSub 1 0 <Args>>
Else
Local.TamSayi <Args>
Endif
Return <dLocal.TamSayi>
[FUNCTION BolukAyir]
IF (<EVAL STRLEN(<ARGS>)> > 3)
LOCAL.STRLEN=<EVAL STRLEN(<ARGS>)>
LOCAL.CURRENTDIGIT=<EVAL STRLEN(<ARGS>)>
WHILE (<LOCAL.CURRENTDIGIT> > 3)
ARGS=<STRSUB 0 <EVAL (<LOCAL.CURRENTDIGIT> - 3)> <ARGS>>.<STRSUB <EVAL (<LOCAL.CURRENTDIGIT> - 3)> 50 <ARGS>>
LOCAL.CURRENTDIGIT -= 3
ENDWHILE
ENDIF
RETURN <ARGS>
Bu da benim belirlediğin bazı vendorlar tabi değiştirilebilir.
Kod:
[Function Kara_Ticareti]
SRC.NEWITEM=01ea7
SRC.ACT.P=2256,1186,-2
SRC.ACT.TYPE=34
SRC.ACT.AMOUNT=1
SRC.ACT.MORE=c_kara_ticaret
SRC.ACT.MOREX=1
SRC.ACT.MOREY=10
SRC.ACT.MOREZ=3
SRC.ACT.ATTR=0b0
SRC.ACT.TIMER=0
SRC.NEWITEM=01ea7
SRC.ACT.P=1482,1755,-2
SRC.ACT.TYPE=34
SRC.ACT.AMOUNT=1
SRC.ACT.MORE=c_kara_ticaret
SRC.ACT.MOREX=1
SRC.ACT.MOREY=10
SRC.ACT.MOREZ=3
SRC.ACT.ATTR=0b0
SRC.ACT.TIMER=0
SRC.NEWITEM=01ea7
SRC.ACT.P=534,992
SRC.ACT.TYPE=34
SRC.ACT.AMOUNT=1
SRC.ACT.MORE=c_kara_ticaret
SRC.ACT.MOREX=1
SRC.ACT.MOREY=10
SRC.ACT.MOREZ=3
SRC.ACT.ATTR=0b0
SRC.ACT.TIMER=0
SRC.NEWITEM=01ea7
SRC.ACT.P=720,2235,-2
SRC.ACT.TYPE=34
SRC.ACT.AMOUNT=1
SRC.ACT.MORE=c_kara_ticaret
SRC.ACT.MOREX=1
SRC.ACT.MOREY=10
SRC.ACT.MOREZ=3
SRC.ACT.ATTR=0b0
SRC.ACT.TIMER=0
SRC.NEWITEM=01ea7
SRC.ACT.P=2465,528,15
SRC.ACT.TYPE=34
SRC.ACT.AMOUNT=1
SRC.ACT.MORE=c_kara_ticaret
SRC.ACT.MOREX=1
SRC.ACT.MOREY=10
SRC.ACT.MOREZ=3
SRC.ACT.ATTR=0b0
SRC.ACT.TIMER=0
Sistemin kullanımına gelecek olursak;
Ticareti gerçekleştirilecek yetenekleri [Defname TicareteKonuOlcakYetenekler] kısmından ayarlayabilirsiniz
Kod:
K_Ticaret_Yetenek_1 "BlackSmith"
K_Ticaret_Yetenek_2 "Farming"
K_Ticaret_Yetenek_3 "Fisher"
K_Ticaret_Yetenek_4 "Lumberjack"
K_Ticaret_Yetenek_5 "Mining"
K_Ticaret_Yetenek_6 "Scribe"
K_Ticaret_Yetenek_... şeklindede gidebilir size kalmış
Ticaret gerçekleşecek şehirleri [Defname TicaretSehirleri] kısmından
Kod:
K_Ticaret_Sehir_1 "Britain"
K_Ticaret_Sehir_2 "Cove"
K_Ticaret_Sehir_3 "Minoc"
K_Ticaret_Sehir_4 "Skara Brae"
K_Ticaret_Sehir_5 "Yew"
K_Ticaret_Sehir_... şeklinde eklenip çıkarılabilir
Ticarete konu olacak itemleri ve yetenekleride şu şekilde ayarlıyoruz [Defname TicaretItemleriVol1] bölümünden
Kod:
Örnek spear ekleyeceksiniz ticarete bunu şöyle yapabilirsiniz
K_Ticaret_BlackSmith_1 "i_spear"
Yani spear blacksmith ticaretinde kullanılabilir şekilde ayarlıyoruz kafanıza takılan soru olursa yardımcı olmaya çalışırım gördükçe