Master
59.2997
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]
başarılı , sql bilgisi değil sphere kodlamasını bile iyice kavrayan birisi kendine çok şey katabilir.
Çok güzel slothere açacagım sunucuda kullanmayı düşünüyorum eline sağlık...
güzel :) teşşekkürler slothere
slothere bizi kutsa ..

Üye Ol veya Giriş Yap

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