Bir süre önce yazdığım, ancak kullanımına gerek kalmayan bir sistemi eğitim amaçlı olarak, elimde paslanmaması amacı ile yayınlamaya karar verdim. Tabiki sistem eğitim amaçlı yayınlandığından dolayı kullanımı için en gerekli olan sql tablo yapısının fonksiyonunu burada paylaşmayı düşünmüyorum. Böyle bir şeyi yapma nedeni olarak fırsatçılığa meydan vermemek ve gerçekten üzerinde uğraşan kişilerin benim hedefim olan verim alınabilitesini sağlıklı şekilde kullanabilmesini gösterebilirim. Kullanmak isteyen herkes sql yapısını sistem ile uyumlu şekilde oluşturarak dilediği gibi kullanmakta özgürdür.
[comment vendor_sys]
yazan: slothere
tarih: 05.12.2009
version: 056b+ / client 4x+
güncelleme: 28.12.2009
// güncellemeler (28.12.2009); - slothere
//- eski tür clientler için olan sürümdeki eşya gösteriminde oluşan debug düzeltildi.
//- sistem kullanımı azaltıldı, sql iyileştirmesi yapıldı.
//- sistem için 4x veya üzeri clientler standart hale getirildi.
//- tek aktif olmayan yer vendorlar bölümündeki kazanç bölümü.
[DEFNAME vend]
// satın alınabilecek maks. eşya limitleri
VEND_Limits "250,500,1000,2000"
// eşya limitlerinin ücretleri
VEND_Golds "125000,150000,175000,200000"
// tüm eşyaların tutulduğu kasanın uid'i
VEND_ChestUid "0400059b7"
[ITEMDEF i_chest_vendor]
id = i_chest_metal
type = t_container
weight = 999
name = vendor chest
on=@create
color = 1153
attr = attr_static|attr_move_never
on=@dclick
if (<src.account.plevel> < 7)
src.sysmessage @1153,,1 Sadece en yetkili kişiler kullanabilir.
serv.log ## * <src.name> isimli kisi vendor kasasini kurcalamaya calisti.. * ##
return 1
endif
on=@PickUp_Ground
if (<src.account.plevel> < 7)
return 1
endif
on=@Destroy
serv.log ## * (!) Vendor kasasi silindi. * ##
forinstances i_vend_timer
more1 = 1
remove
endfor
forcont <uid> 0
cont = <uid.<name>.findlayer(layer_bankbox)>
name = crate
more2 = 00
endfor
db.connect
db.execute "delete from sys_vendor"
db.close
[CHARDEF c_vend]
ID = c_woman
NAME = #names_humanfemale The Vendor
CAN = mt_nonmover|mt_usehands|mt_equip
ARMOR = 800
on=@Create
COLOR = Colors_Skin
NPC = Brain_Vendor
STR = {8000 9200}
DEX = {4000 5670}
INT = {1000 1100}
FAME = {150 500}
KARMA = {150 500}
FOOD = 999
ALLSKILLS = 0.0
ModMaxWeight = 0
itemnewbie = Random_Female_Hair
color = Colors_Hair
on=@NpcRestock
item = Random_Light
itemnewbie = i_dress_plain
COLOR = Colors_All
itemnewbie = i_hat_floppy
color = Colors_All
itemnewbie = Random_Boots
color = Colors_All
itemnewbie = i_bankbox
color = 0384
timer = 900
attr = 014
ON=@EnvironChange
food = 999
hits = <str>
on=@GetHit
return 1
on=@Attack
return 1
on=@SpellEffect
return 1
on=@Hittry
return 1
on=@Death
hits = <str>
return 1
on=@Click
message @30,,1 <name> The Town Vendor
return 1
on=@DClick
if !(<src.CanSeeLos <uid>>) || (<src.distance <uid>> > 3)
src.sys_error Vendora yeterince yakın değilsiniz.
else
src.dialogcloseall
src.ctag.vend_limit = 0
src.ctag.vend_array = ItemAddDate DESC
src.ctag.vend_group = WHERE ItemStatus = '0' AND Itemvalue != '0'
sdialog d_vend,0,0
endif
face
return 1
[dialog d_vend]
0,0
page 0
resizepic 30 30 5054 800 500
alphablack 40 40 600 415
alphablack 650 40 170 415
alphablack 40 465 780 55
dtext 655 50 020 - Gösterim Ölçütü:
dtext 690 70 1153 Vendorlar
button 655 70 4005 4007 0 2 2
dtext 690 90 1153 Eşyalar
button 655 90 4005 4007 0 1 1
dtext 670 330 020 - Diğer:
dtext 690 350 <qval (<src.findid(i_vend_timer)>) ? 025:040> Alan Kirala
button 655 350 <qval (<src.findid(i_vend_timer)>) ? 4002 4002 0:4005 4007 1> 0 20
if (<src.findid(i_vend_timer)>)
dtext 690 390 1153 Eşya Ekle
button 655 370 4005 4007 1 0 21
button 655 390 4005 4007 1 0 22
dtext 690 370 1153 Sözleşmem
dtext 690 410 1153 Eşyalarım
button 655 410 4005 4007 1 0 23
endif
dtext 655 120 020 - Sıralama Ölçütü:
dtext 690 140 1153 Alfabetik
button 655 140 4005 4007 1 0 3
dtext 690 160 1153 Fiyat
button 655 160 4005 4007 1 0 4
dtext 690 180 1153 Adet
button 655 180 4005 4007 1 0 5
dtext 690 200 1153 Eklenme tarihi
button 655 200 4005 4007 1 0 6
dtext 690 220 1153 Kıyafetler
button 655 220 4005 4007 1 0 7
dtext 690 240 1153 Silahlar
button 655 240 4005 4007 1 0 8
dtext 690 260 1153 Zırhlar
button 655 260 4005 4007 1 0 9
dtext 690 280 1153 Diğerleri
button 655 280 4005 4007 1 0 10
dtext 690 300 1153 Hepsi
button 655 300 4005 4007 1 0 11
dtext 380 465 1153 Fiyata göre arama:
button 380 485 0FAB 0FAD 1 0 12
resizepic 420 485 3000 125 20
resizepic 545 485 3000 125 20
dtextentrylimited 425 485 120 20 045 0 9 0
dtextentrylimited 550 485 120 20 045 1 9 0
dtext 50 465 1153 İsme göre arama:
button 50 485 0FAB 0FAD 1 0 13
resizepic 90 485 3000 235 20
dtextentrylimited 100 485 230 20 045 2 25 <var.blank>
page 1
dtext 90 45 55 Eşya
dtext 255 45 55 Sahibi
dtext 395 45 55 Fiyatı
dtext 480 45 55 Eklenme Tarihi
dorigin 90 55
db.connect
db.query "SELECT id,itemname,itemuid,itemamount,ownuid,itemvalue,itemadddate FROM sys_vendor <src.ctag0.vend_group> order by <src.ctag0.vend_array> limit <src.dctag0.vend_limit>, 17"
while !(<isempty <db.row.<dlocal._while>.itemuid>>)
dhtmlgump 90 *20 155 20 0 0 <def.bfont_white><db.row.<dlocal._while>.itemamount> <db.row.<dlocal._while>.itemname>
dhtmlgump 255 *0 155 20 0 0 <def.bfont_white><uid.<db.row.<dlocal._while>.ownuid>.name>
dhtmlgump 395 *0 90 20 0 0 <def.bfont_white><qval(<eval <db.row.<dlocal._while>.itemvalue>> < 1)? -:<bolukayir <db.row.<dlocal._while>.itemvalue>>gp>
dhtmlgump 490 *0 150 20 0 0 <def.bfont_white><db.row.<dlocal._while>.itemadddate>
button 50 *0 4005 4007 1 0 <eval <db.row.<dlocal._while>.id> + 50>
endwhile
button 610 425 9903 9905 1 0 30001
button 50 425 9909 9911 1 0 30002
db.close
page 2
dtext 90 45 55 Kiraci
dtext 255 45 55 Eşya
dtext 360 45 55 Kazanç
dtext 480 45 55 Kalan Süre
dorigin 90 55
db.connect
db.query "SELECT id,ownuid,count(itemuid) as itemuid,sum(itemvalue) as itemvalue from sys_vendor group by ownuid limit <src.dctag0.vend_limit>, 17"
while !(<isempty <db.row.<dlocal._while>.id>>)
dhtmlgump 90 *20 155 20 0 0 <def.bfont_white><uid.<db.row.<dlocal._while>.ownuid>.name>
dhtmlgump 255 *0 155 20 0 0 <def.bfont_white><db.row.<dlocal._while>.itemuid>
dhtmlgump 360 *0 90 20 0 0 <def.bfont_white>-
local.timer = <eval (<uid.<db.row.<dlocal._while>.ownuid>.findid(i_vend_timer).timer>)>
dhtmlgump 480 *0 160 20 0 0 <def.bfont_white><kalansure <local.timer>>
button 50 *0 4005 4007 1 0 <eval <local._for> + 20000>
src.ctag.vend_own<dlocal._for> = <db.row.<dlocal._while>.ownuid>
endwhile
button 610 425 9903 9905 1 0 30003
button 50 425 9909 9911 1 0 30004
db.close
// button: 50, eşya: 90, sahibi: 255, fiyatı: 395, tarih: 490
[dialog d_vend button]
on = 0
src.clearctags vend
on = 3
ref1 = <uid>
src.ctag0.vend_array ItemName <qval(strmatch(*DESC*,<src.ctag0.vend_array>))?ASC:DESC>
src.ctag0.vend_limit = 0
ref1.sdialog d_vend
on = 4
ref1 = <uid>
src.ctag0.vend_array ItemValue <qval(strmatch(*DESC*,<src.ctag0.vend_array>))?ASC:DESC>
src.ctag0.vend_limit = 0
ref1.sdialog d_vend
on = 5
ref1=<uid>
src.ctag0.vend_array ItemAmount <qval(strmatch(*DESC*,<src.ctag0.vend_array>))?ASC:DESC>
src.ctag0.vend_limit = 0
ref1.sdialog d_vend
on = 6
ref1=<uid>
src.ctag0.vend_array ItemAddDate <qval(strmatch(*DESC*,<src.ctag0.vend_array>))?ASC:DESC>
src.ctag0.vend_limit = 0
ref1.sdialog d_vend
on = 7
ref1=<uid>
src.ctag0.vend_group WHERE ItemValue != '0' AND ItemStatus = '0' AND ItemType LIKE 't_clothing%'
src.ctag0.vend_limit = 0
ref1.sdialog d_vend
on = 8
ref1=<uid>
src.ctag0.vend_group WHERE ItemValue != '0' AND ItemStatus = '0' AND ItemType LIKE 't_weapon%'
src.ctag0.vend_limit = 0
ref1.sdialog d_vend
on = 9
ref1=<uid>
src.ctag0.vend_group WHERE ItemValue != '0' AND ItemStatus = '0' AND ItemType LIKE 't_armor%'
src.ctag0.vend_limit = 0
ref1.sdialog d_vend
on = 10
ref1=<uid>
src.ctag0.vend_group WHERE ItemValue != '0' AND ItemStatus = '0' AND ItemType NOT LIKE 't_armor%' AND ItemType NOT LIKE 't_weapon%' AND ItemType NOT LIKE 't_clothing%'
src.ctag0.vend_limit = 0
ref1.sdialog d_vend
on = 11
ref1=<uid>
src.ctag0.vend_group WHERE ItemValue != '0' AND ItemStatus = '0'
src.ctag0.vend_limit = 0
ref1.sdialog d_vend
on = 12
ref1=<uid>
if <isempty <argtxt[0]>> || <isempty <argtxt[1]>>
src.sys_error Fiyat aralığı belirtmeniz gerekli
elif <f_kontrol sayi <argtxt[0]>> || <f_kontrol sayi <argtxt[1]>>
src.sys_error Sadece rakam girebilirsiniz.
elif (<dargtxt[1]> <= <dargtxt[0]>)
src.sys_error İkinci fiyat ilkinden büyük olmalı.
else
src.ctag0.vend_limit = 0
src.ctag.vend_group WHERE ItemValue >= '<dargtxt[0]>' AND ItemValue <= '<dargtxt[1]>' AND ItemStatus = '0'
endif
ref1.sdialog d_vend
on = 13
ref1=<uid>
if <isempty <argtxt[2]>>
src.sys_error Bir isim belirtmeniz gerekli.
elif <f_kontrol harf <argtxt[2]>>
src.sys_error Sadece harf girebilirsiniz.
else
src.ctag0.vend_limit = 0
src.ctag.vend_group WHERE ItemValue != 0 AND ItemName LIKE '%<addslashes <argtxt[2]>>%' AND ItemStatus = '0'
endif
ref1.sdialog d_vend
on = 20
if !(<src.findid(i_vend_timer)>)
src.dialogcloseall
sdialog d_vend_buy
endif
on = 21
if (<src.findid(i_vend_timer)>)
src.dialogcloseall
sdialog d_vend_contract
endif
on = 22
if (<src.findid(i_vend_timer)>)
src.targetf f_vnd_additem
src.sys_normal Satılmak üzere eklenmesini istediğiniz eşyanızı seçiniz.
endif
on = 23
ref1=<uid>
if (<src.findid(i_vend_timer)>)
src.ctag0.vend_group WHERE ownuid='<src>' AND ItemStatus='0'
ref1.sdialog d_vend
endif
on = 30001
ref1 = <uid>
src.ctag0.vend_limit +=17
ref1.sdialog d_vend
on = 30002
ref1 = <uid>
if <src.dctag0.vend_limit> > 0
src.ctag0.vend_limit -=17
endif
ref1.sdialog d_vend
on = 30003
ref1 = <uid>
src.ctag0.vend_limit +=17
ref1.sdialog d_vend,2
on = 30004
ref1 = <uid>
if <src.dctag0.vend_limit> > 0
src.ctag0.vend_limit -=17
endif
ref1.sdialog d_vend,2
on = 20000 30000
ref1=<uid>
local.x <eval <argn> - 20000>
src.ctag.vend_group WHERE OwnUid='<src.ctag0.vend_own<dlocal.x>>' AND ItemValue != '0' AND ItemStatus = '0'
ref1.sdialog d_vend
on = 50 19999
src.ctag.vend_selectitem = <eval <argn> - 50>
src.sdialog d_vend_itembuy
[dialog d_vend_contract]
0,0
resizepic 50 50 5170 340 150
local.item = <src.findid(i_vend_timer).timer>
dhtmlgump 140 53 160 20 0 0 Vendor Sözleşmesi
dhtmlgump 75 75 270 40 0 0 Sözleşmenizin sona ermesine; <def.br><def.bfont_red><kalansure <dlocal.item>> <def.bfont_black>kaldı.
button 75 120 4005 4007 1 0 1
dhtmlgump 115 120 110 20 0 0 Sözleşmeyi bitir.
button 75 140 4005 4007 1 0 2
dhtmlgump 115 140 180 20 0 0 Sözleşmeyi bir hafta uzat.
[dialog d_vend_contract button]
on = 1
sdialog d_vend_contract_end
on = 2
ref1 = <src.tag0.vendboxuid>
if (<ref1.more2> == <f_array <def.vend_limits>, 1>)
local.ucret = <f_array <def.vend_golds>, 1>
elif (<ref1.more2> == <f_array <def.vend_limits>, 2>)
local.ucret = <f_array <def.vend_golds>, 2>
elif (<ref1.more2> == <f_array <def.vend_limits>, 3>)
local.ucret = <f_array <def.vend_golds>, 3>
elif (<ref1.more2> == <f_array <def.vend_limits>, 4>)
local.ucret = <f_array <def.vend_golds>, 4>
endif
if <src.gold> < <dlocal.ucret>
src.sys_error Sözleşmenizin süresini uzatabilmeniz için <bolukayir <dlocal.ucret>> altınınız olmalı.
else
src.gold -= <dlocal.ucret>
local.timer1 = <src.findid(i_vend_timer).timer>
local.timer2 = <eval (3600 * 24) * 7>
local.timer = <eval <local.timer1> + <local.timer2>>
src.findid(i_vend_timer).timer = <dlocal.timer>
src.sys_normal Sözleşme süreniz 1 hafta daha uzatıldı.
src.sys_normal Kalan süre: <kalansure <src.findid(i_vend_timer).timer>>
endif
[dialog d_vend_contract_end]
0,0
resizepic 50 50 5054 350 100
alphablack 60 60 330 80
dhtmlgump 75 70 310 20 0 0 <def.bfont_white>Sözleşmenizi sona erdirmek istediğinize emin misiniz?
button 75 100 4005 4007 1 0 1
dtext 115 100 150 Evet, sona erdir.
[dialog d_vend_contract_end button]
on = 1
src.findid(i_vend_timer).timer = 1
[dialog d_vend_itembuy]
0,0
resizepic 50 50 5054 300 150
alphablack 60 60 280 130
db.connect
db.query "SELECT id,ownuid,itemuid,itemname,itemvalue,itemamount,itemadddate FROM sys_vendor WHERE id = '<src.dctag0.vend_selectitem>'"
ref66 = <db.row.0.itemuid>
tilepichue 70 80 <ref66.id> <ref66.color>
dhtmlgump 130 75 200 70 0 0 <def.bfont_lred>Eşya: <def.bfont_white><db.row.0.itemname><def.br><def.bfont_lred>Hasar: <def.bfont_white><qval (<ref66.Hits> < <ref66.maxhits>)?<muldiv <ref1.maxhits>,<ref1.hits>,100>% eski:-><def.br><def.bfont_lred>Armor:<def.bfont_white> <qval(<ref66.isarmor>)?<ref66.armor>:-><def.br><def.bfont_lred><qval(<db.row.0.ownuid> != <src>)?Fiyatı; <def.bfont_white><bolukayir <db.row.0.itemvalue>>gp:>
if (<db.row.0.ownuid> != <src>)
button 130 150 4005 4007 1 0 1
dtext 165 153 150 Satın Al
else
button 130 152 4005 4007 1 0 1
dtext 165 153 150 Kaldır
dtext 130 130 1153 Fiyatı:
resizepic 175 130 3000 100 20
dtextentrylimited 180 130 100 20 55 1 10 <db.row.0.itemvalue>
button 220 152 4005 4007 1 0 2
dtext 255 153 150 Güncelle
endif
if <ref66.type> == t_container
resizepic 350 50 5054 200 300
alphablack 360 60 180 280
local.item <def.bfont_dred>İçindekiler;<def.br><def.bfont_black>
forcont <ref66> 0
local.item .=<def.Br><amount> <name>
endfor
dhtmlgump 370 70 160 260 1 1 <local.item>
endif
db.close
[dialog d_vend_itembuy button]
on = 1
db.connect
db.query "SELECT id,ownuid,itemuid,itemname,itemstatus,itempurchase,itemselldate,itemvalue FROM sys_vendor WHERE id='<src.dctag0.vend_selectitem>'"
if (<db.row.0.ownuid> != <src>)
if (<isempty <db.row.0.id>>)
src.sys_error Böyle bir eşya vendorda bulunmuyor?
elif <db.row.0.itemstatus> == 1
src.sys_error <db.row.0.itemname>, <db.row.0.itemselldate> tarihinde <db.row.0.itempurchase> tarafından satın alınmış.
elif <src.gold> < <eval <db.row.0.itemvalue>>
src.sys_error Karakterinizde yeterli miktarda altın bulunmuyor. (<bolukayir <db.row.0.itemvalue>>gp)
elif <src.flags> & statf_dead|statf_freeze|statf_stone
src.sys_error Karakterinizin şu anki durumunda alış-veriş yapamazsınız.
else
serv.log ## - (vendor esya satisi) tarih: <serv.rtime>, id: <db.row.0.id> own: <db.row.0.ownuid>, item: <db.row.0.itemuid>, purchase: <src> - ##
src.sys_normal <db.row.0.itemname> isimli eşyayı <db.row.0.itemvalue> altına satın aldınız.
src.gold -= <eval <db.row.0.itemvalue>>
ref89=<db.row.0.ownuid>
ref89.gold += <eval <db.row.0.itemvalue>>
ref89.sys_normal <src.name> isimli oyuncu <db.row.0.itemname> isimli eşyanızı satın aldı.
ref90=<db.row.0.itemuid>
ref91=<def.vend_chestuid>
ref90.cont = <src.findlayer(layer_bankbox)>
ref91.more1 --
src.update
ref91.update
db.execute "UPDATE sys_vendor SET itemstatus = '2', itempurchase = '<addslashes <src>>', itemselldate = NOW() WHERE id='<src.dctag0.vend_selectitem>'"
endif
else
ref60 = <db.row.0.itemuid>
ref61 = <def.vend_chestuid>
ref60.cont = <src.findlayer(layer_bankbox)>
ref60.update
ref61.update
ref61.more1 --
db.execute "delete from sys_vendor where id='<src.dctag0.vend_selectitem>'"
src.sys_normal <ref60.name> isimli eşyanızı satıştan kaldırdınız.
db.close
on = 2
if (<isempty <argtxt[1]>>)
src.sys_error Bir fiyat belirtmelisiniz.
elif (<f_kontrol sayi <argtxt[1]>>)
src.sys_error Fiyat bölümünde sadece rakam kullanabilirsiniz.
else
db.connect
db.execute "UPDATE sys_vendor SET itemvalue = '<dargtxt[1]>' WHERE id='<src.dctag0.vend_selectitem>'"
src.sys_normal Belirtilen eşyanın fiyatı güncellendi.
db.close
endif
[FUNCTION f_vnd_additem]
ref50 = <src.tag0.VendBoxUid>
if (<argo.ischar>) || !(<argo.isitem>)
src.sys_error Sadece eşya seçebilirsiniz
src.targetf f_vnd_additem
elif (<argo.cont> != <src.findlayer(layer_pack)>)
src.sys_error Sadece çantanızdaki eşyaları ekleyebilirsiniz.
src.targetf f_vnd_additem
elif (<src.flags> & statf_dead|statf_freeze|statf_stone)
src.sys_error Karakterinizin şimdiki durumunda eşya ekleyemezsiniz.
src.targetf f_vnd_additem
elif (<argo.type> == t_gold) ||((<argo.attr> == attr_newbie) && !(<argo.baseid> == i_spellbook|i_runebook))
src.sys_error Newbie eşya ve altınları satılığa çıkartamazsınız.
elif (<eval <ref50.more1> +1> > <ref50.dmore2>)
src.sys_error Satılığa çıkartabileceğiniz azami eşya limitiniz (<ref50.dmore2>) dolmuş.
elif !(<ref50>)
src.sys_error Sizin vendorunuz bulunmuyor?
else
src.ctag0.vend_SelectItem = <ARGO>
sdialog d_vnd_selectitem
endif
[DIALOG d_vnd_selectitem]
0,0
page 0
ref1= <src.ctag0.vend_selectitem>
resizepic 50 50 5054 345 160
alphablack 60 60 325 140
resizepic 80 67 3000 60 60
tilepichue 80 75 <ref1.dispiddec> <ref1.dcolor>
dhtmlgump 150 75 240 55 0 0 <def.bfont_White>Seçtiğiniz <def.bfont_lblue><ref1.amount> adet <ref1.name> <def.bfont_white>vendorunuza eklensin mi?
button 80 160 4005 4007 1 0 2000
dtext 120 160 150 Evet, satılığa çıkart.
dtext 80 135 1153 Fiyatı:
resizepic 135 135 3000 100 20
dtextentrylimited 140 135 100 20 55 0 10 0
if <ref1.type> == t_container
resizepic 400 50 5054 200 300
alphablack 410 60 180 280
local.item <def.bfont_dred>İçindekiler;<def.br><def.bfont_black>
forcont <ref1> 0
local.item .=<def.Br><amount> <name>
endfor
dhtmlgump 420 70 160 260 1 1 <local.item>
dtext 250 115 1153 Etiket Ekle:
resizepic 250 135 3000 100 20
dtextentrylimited 255 135 100 20 55 1 15 <var.blank>
endif
[DIALOG d_vnd_selectitem BUTTON]
on = 0
src.clearctags vend
on = 2000
ref1 = <src.ctag0.vend_selectitem>
ref2 = <src.tag0.vendboxuid>
if (<ref1.type> == t_container)
local.arg = <argtxt[1]>
endif
if <ref1.cont> != <src.findlayer(layer_pack)>
src.sys_error Satılığa çıkartacağınız eşya üzerinizde olmalı.
elif !(<isempty <dargtxt[0]>>) && (<f_kontrol sayi <argtxt[0]>>)
src.sys_error Fiyat bölümüne sadece rakam girebilirsiniz.
elif <eval (<ref2.more1> +1)> > <ref2.more2>
src.sys_error Satılığa çıkartabileceğiniz azami eşya limitiniz (<ref2.dmore2>) dolmuş.
elif (<ref1.type> == t_container) && !(<isempty <local.arg>>) && (<f_kontrol harf <local.arg>>)
src.sys_error Etiket bölümüne sadece harf girebilirsiniz.
else
local.isim = <ref1.name>
if <ref1.isweapon> && <ref1.morey> > 0
local.i2 <qval(strmatch(*ruin*,<ref1.baseid>) ? ruin:<qval(strmatch(*might*,<ref1.baseid>)) ? might:<qval(strmatch(*force*,<ref1.baseid>)) ? force:<qval(strmatch(*power*,<ref1.baseid>)) ? power:<qval(strmatch(*vanq*,<ref1.baseid>)) ? vanq:>>>>>
local.isim = <ref1.name> (<local.i2>)
elif (<ref1.type> == t_container)
if !(<isempty <argtxt[1]>>)
local.isim = <local.isim> (<argtxt[1]>)
endif
endif
db.connect
if <db.connected>
db.execute "INSERT INTO sys_vendor (ownuid,itemuid,itemname,itemvalue,itemamount,itemtype,itemadddate,itemstatus) VALUES ('<src>','<ref1>','<addslashes <local.isim>>',<addslashes <dargtxt[0]>>,<ref1.damount>,'<ref1.type>',NOW(),1)";
ref1.cont = <ref2>
ref1.update
src.findlayer(layer_pack).dclick
src.sys_normal <ref1.amount> adet <local.isim> vendorunuza eklendi.
ref2.more1 ++
else
src.sys_error Hata gerçekleşti, en yakın yetkili ile iletişime geçiniz.
endif
src.clearctags vend
db.close
endif
[dialog d_vend_buy]
0,0
resizepic 20 20 5054 300 260
alphablack 30 30 280 240
dhtmlgump 50 45 240 32 0 0 <def.bfont_white>Şehir vendorundan bir alan kiralamak ister misiniz?
dtext 50 100 150 Vendorun eşya limiti;
radio 50 120 0867 0869 1 1
radio 50 145 0867 0869 0 2
radio 165 120 0867 0869 0 3
radio 165 145 0867 0869 0 4
dtext 85 125 45 <f_array <def.vend_limits>, 1> (<strsub 0 3 <f_array <def.vend_golds>, 1>>k)
dtext 85 150 45 <f_array <def.vend_limits>, 2> (<strsub 0 3 <f_array <def.vend_golds>, 2>>k)
dtext 200 125 45 <f_array <def.vend_limits>, 3> (<strsub 0 3 <f_array <def.vend_golds>, 3>>k)
dtext 200 150 45 <f_array <def.vend_limits>, 4> (<strsub 0 3 <f_array <def.vend_golds>, 4>>k)
dhtmlgump 50 175 240 32 0 0 <def.bfont_lgray> * Tüm alanların kira süresi 1 (bir) haftadır.
button 50 225 4005 4007 1 0 1
dtext 85 225 150 Kirala
[dialog d_vend_buy button]
on = 1
if (<src.distance <uid>> > 3) || !(<src.CanSeeLos <uid>>)
src.sys_error Vendora yeterince yakın değilsiniz.
elif (<src.findid(i_vend_timer)>)
src.sys_error Sizin daha önceden kiralamış olduğunuz bir alanınız bulunmakta.
else
for 1 4
if (<argchk[<dlocal._for>]> == 1)
local.Chk = <dlocal._for>
endif
endfor
local.Limit = <f_arr <def.vend_Limits>, <dlocal.Chk>>
local.Gold = <f_arr <def.vend_Golds>, <dlocal.Chk>>
if (<src.gold> < <dlocal.Gold>)
src.sys_error Karakterinizde yeterli altın bulunmuyor. (<dlocal.gold>gp)
else
src.gold-= <dlocal.Gold>
serv.newitem i_vend_timer,1,<src>,1
serv.newitem i_crate_lg,1,<def.vend_ChestUid>
new.name= <src>
new.more2 = <dlocal.Limit>
src.tag0.VendBoxUid = <new>
src.sys_normal Bir haftalığına vendor alanı kiraladınız.
src.sys_normal Eşya Limiti: <dlocal.limit>, Tutarı: <dlocal.gold>gp
endif
endif
[ITEMDEF i_vend_timer]
ID = i_handr_1
NAME = vendor timer
TYPE = T_Eq_Script
WEIGHT = 0
on=@Create
COLOR = 040
ATTR = attr_newbie|attr_invis|attr_static
on=@Equip
timer = <eval (3600 * 24) * 7> // 1 hafta
on=@Timer
remove
return 1
on=@UnEquip
if <more1>
return 0
else
ref5= <topobj.tag0.VendBoxUid>
db.connect
db.execute "DELETE FROM sys_vendor WHERE ownuid = '<TOPOBJ>'";
db.close
serv.newitem i_bag,1,<topobj.findlayer(layer_bankbox)>
forcont <topobj.tag0.VendBoxUid> 0
cont = <new>
endfor
ref5.remove
topobj.tag0.VendBoxUid =
if (<topobj.isonline>)
topobj.sys_normal Vendorunuzun kira süresi sona erdi.
topobj.sys_normal Tüm eşyalarınız bankanıza çanta içerisinde yerleştirildi.
else
topobj.events +e_vnd_lgn_evnt
endif
endif
// event ve fonksiyonlar
[events e_vnd_lgn_evnt]
on=@Login
src.sys_normal Vendorunuzun kira süresi sonra erdi.
src.sys_normal Tüm eşyalarınız bankanıza çanta içerisinde yerleştirildi.
src.events -e_vnd_lgn_evnt
[function f_kontrol]
local.icerik = <qval(strmatch(*harf*,<strarg <args>>))? [abcdefghijklmnoprstuvyzxq]:<qval(strmatch(*sayi*,<strarg <args>>))? [0123456789]:>>
local.num = 0
for 0 <eval (strlen(<streat <args>>)) -1>
if !strmatch('<local.icerik>','<strsub <dlocal._for> 1 <streat <args>>>')
local.num ++
endif
endfor
return <local.num>
[eof]