UO-Dev Arama


mysl ile yazılmış açık arttırma scripti

Yazar: aldarson
Tarih: 17-07-2010 17:10


Paylaş : Paylaş
Karakter Boyut :


Kod:
[COMMENT ChangeLog]
#Versiyon 1.0
+Eklendi - Container içindekilerin görünmesi.
+Eklendi - Zehirli silahlar yeşil olarak gösterilecek
+Eklendi - Satılmasını istemediğiniz eşyaların Type'leri girilerek engellenebilecek
+Eklendi - Maximum fiyat belirlenirse teklif o fiyata ulaştığında eşya doğrudan teklif verene aktarılacak.
+Eklendi - Kayıt ücreti belirlenen fiyatın %5'i olarak ayarlandı.
+Eklendi - Newbified eşyaların satılıp/satılmaması.

-Düzeltildi - Sistem bulunan 2 tane bug düzeltildi.
-Düzeltildi - Konteynır için konteynır koyup arttırmaya sunulmayacak.

[DEFNAME acik_arttirma]
container_uid_x "04000cdf8"
finish_timer "100"
dialog_close "1"
no_type "t_key,t_gold,t_potion_empty,t_blank_scroll,t_jewelry"
no_newbie "0"
min_gain "500"

[FUNCTION f_acik_arttirma_engel]
for <f_array <def.no_type>>
if strmatch("<type>","<f_select <dlocal._for>,<def.no_type>>")
return 1
endif
endfor
return 0

[FUNCTION f_acik_arttirma_sonlandir]
db.connect
if (<db.connected>)
db.query "SELECT * from Revive_Acik_Arttirma"
if (<db.row.numrows> > 0)
while !(<isempty <db.row.<dlocal._while>.esya>>)
if (<uid.<db.row.<dlocal._while>.ekleyen>>)
if !(<uid.<db.row.<dlocal._while>.sonteklif>>)
try uid.<db.row.<dlocal._while>.esya>.cont <uid.<db.row.<dlocal._while>.ekleyen>.findlayer.29.uid>
else
try uid.<db.row.<dlocal._while>.sonteklif>.gold +=<db.row.<dlocal._while>.sonfiyat>
endif
endif
if (<ddef.dialog_close>)
f_dialogkapattir
endif
endwhile
timerf 1,f_acik_arttirma_sil
endif
db.close
endif

[FUNCTION f_acik_arttirma_bitir]
db.connect
if (<db.connected>)
if (<dargv[0]>==1)
db.query "SELECT esya,ekleyen,sonteklif from Revive_Acik_Arttirma WHERE esya='<uid>'"
if strmatch("<db.row.0.sonteklif>","0")
cont <uid.<db.row.0.ekleyen>.findlayer.29.uid>
else
cont <uid.<db.row.0.sonteklif>.findlayer.29.uid>
uid.<db.row.0.ekleyen>.gold +=<db.row.0.sonteklif>
endif
db.execute "DELETE from Revive_Acik_Arttirma WHERE esya='<uid>'"
db.close
else
db.query "SELECT esya,ekleyen from Revive_Acik_Arttirma WHERE esya='<uid>'"
cont <uid.<argv[1]>.findlayer.29.uid>
uid.<db.row.0.ekleyen>.gold +=<dargv[2]>
db.execute "DELETE from Revive_Acik_Arttirma WHERE esya='<uid>'"
db.close
endif
else
src.sys_hata Sistem veritabanına erişilemiyor daha sonra deneyiniz.
endif

[FUNCTION f_acik_arttirma]
ref1=<argo>
if !(<ref1.isitem>)
src.sys_hata Hatalı bir seçim yaptınız,sadece eşya seçebilirsiniz.
elseif (<ref1.topobj>!=<src>)
src.sys_hata Açık arttırmaya sunacağınız eşya çantanızda olmalıdır.
elseif !(<ref1.value>)
src.sys_hata <ref1.name> isimli eşyanın hiçbir değeri bulunmuyor.
elseif (<ref1.f_acik_arttirma_engel>) || (<ref1.layer>==layer_pack)
src.sys_hata Bunu satılığa çıkaramazsınız.
elseif (<ddef.no_newbie>) && (<ref1.attr>&04)
src.sys_hata Newbiefied eşyaları satılığa çıkaramazsınız.
elseif (<ref1.f_container_fix>==1)
src.sys_hata Ekleyeceğiniz konteynır içerisinde çok fazla eşya bulunuyor.[En fazla:8 eşya]
elseif (<ref1.f_container_fix>==2)
src.sys_hata Boş bir konteynırı açık arttırmaya çıkaramazsınız.
elseif (<ref1.f_container_fix>==3)
src.sys_hata Konteynır içerisine konteynır koyup açık arttırmaya çıkaramazsınız.
else
ref1.f_resendialog d_acik_arttirma_esya_ekle
endif

[FUNCTION f_sistem_fix]
db.connect
if (<db.connected>)
db.query "SELECT esya,ekleyen,sonteklif from Revive_Acik_Arttirma"
while !(<isempty <db.row.<dlocal._while>.esya>>)
ref1 <db.row.<dlocal._while>.esya>
ref2 <db.row.<dlocal._while>.sonteklif>
ref3 <db.row.<dlocal._while>.ekleyen>
if (<ref2>)
if (<ref2.isplayer>)
if (<ref1>)
ref1.cont <ref2.findlayer.29.uid>
endif
endif
else
if (<ref3>)
if (<ref3.isplayer>)
ref1.cont <ref3.findlayer.29.uid>
endif
endif
endif
db.execute "TRUNCATE Revive_Acik_Arttirma"
endwhile
db.close
else
serv.log # MySQL baglanti hatasi,baglanti saglanamadi - Hata [1]
endif

[FUNCTION f_container_fix]
if (<type>==t_container)
if (<drescount> >8)
local.return 1
endif
if !(<drescount>)
local.return 2
endif
forcont <uid> 0
local.return 3
endfor
else
local.return 0
endif
return <dlocal.return>

[FUNCTION f_acik_arttirma_isim]
if (<eval strlen(<args>)> > 18)
local.return <strsub 0 15 <args>>...
else
local.return <args>
endif
return <local.return>

[FUNCTION f_fix_args]
if !(<isempty <argv[0]>>)
if !(<isempty <argv[1]>>) && (<argv[1]> != 0)
if (<dargv[0]> >= <dargv[1]>)
return 1
endif
endif
endif
return 0

[FUNCTION f_dialog_kapattir]
forplayers <serv.clients>
if (<dargs>)
if (<uid>!=<src>)
if (<isdialogopen d_acik_arttirma>) || (<isdialogopen d_acik_arttirma_bilgi>)
f_closedialog arttirma
endif
endif
else
if (<isdialogopen d_acik_arttirma>) || (<isdialogopen d_acik_arttirma_bilgi>)
f_closedialog arttirma
endif
endfor

[FUNCTION acikarttirma]
db.connect
if (<db.connected>)
f_resendialog d_acik_arttirma
db.close
else
sys_hata Sistem veritabanına erişilemiyor daha sonra deneyiniz.
endif

[dialog d_acik_arttirma_esya_ekle]
50,50
resizepic 0 0 <DEF.DialogID> 340 170
resizepic 10 10 <DEF.DialogID2> 320 150
dhtmlgump 20 20 300 20 0 0 <DEF.Bfont_Red><NAME> için bir taban fiyatı belirtin.
resizepic 20 45 3000 120 25
dtextentry 25 47 105 20 0 2
dhtmlgump 20 75 400 20 0 0 Yazacağınız miktarın %5'i bankanızdan çekilecektir.
dhtmlgump 20 95 300 20 0 0 Bu parayı geri almanız mümkün değildir.
tbutton 45 130 <DEF.ButtonID_1> 1 0 1,80 132 100,Onayla
tbutton 220 130 <DEF.ButtonID_1> 1 0 2,255 132 100,Vazgeç
resizepic 0 170 <DEF.DialogID> 340 150
resizepic 10 180 <DEF.DialogID2> 320 130
dhtmlgump 20 190 300 80 0 0 Maksimum teklif fiyatı girerseniz,yazdığınız fiyata ulaştığında en yüksek teklif verene satılır(Not:Boş bırakırsanız açık arttırma süresi bitene kadar devam eder.)
resizepic 20 270 3000 120 25
dtextentry 25 272 105 20 0 1

[dialog d_acik_arttirma_esya_ekle button]
on=1
db.connect
if (<db.connected>)
db.query "SELECT * from Revive_Acik_Arttirma"
if (<src.hits> < <src.maxhits>) || (<src.flags>&statf_poisoned|statf_dead)
src.sys_hata Yaralıyken veya ölüyken bunu yapamazsınız.
elseif (<cont> != <src.findlayer.21.uid>)
src.sys_hata Ekleyeceğiniz eşya çantanızda olmalıdır.
elseif (<eval 1+<db.row.numrows>> > 20)
src.sys_hata Açık arttırma listesi dolmuş.
elseif (<src.gold> < <eval <dargtxt[2]> / 5>)
src.sys_hata <f_bolukayir <eval(<argtxt[2]>/5)>> altınınız bulunmuyor.
elseif (<isempty <argtxt[2]>>)
src.sys_hata Taban fiyata bir değer girmelisiniz.
elseif !(<isnumber <argtxt[2]>>)
src.sys_hata Taban fiyata sadece rakam girebilirsiniz.
elseif (<f_fix_args <dargtxt[2]>,<dargtxt[1]>>)
src.sys_hata Taban fiyat,maksimum fiyata eşit veya yüksek olamaz.
else
f_dialog_kapattir
db.execute "INSERT into Revive_Acik_Arttirma (Esya,Ekleyen,Sonfiyat,Sonteklif,Eklendi,MaxTeklif) VALUES ('<UID>','<SRC>','<dARGTXT[2]>','0','<SERV.RTIME>','<QVAL !(<ISEMPTY <ARGTXT[1]>>)?<ARGTXT[1]>:0>')"
src.gold -= <eval (<dargtxt[2]>/5)>
cont <def.container_uid_x>
timerf <ddef.finish_timer>,f_acik_arttirma_bitir 1
update
src.sys_ok '<name>' isimli eşya açık arttırmaya sunuldu
serv.b @1153,,1 Açık Arttırma Duyuru;
serv.b @50,,1 '<name>' isimli eşya '<src.name>' tarafından '<dargtxt[2]>' altın başlangıç fiyatı ile açık arttırmaya sunuldu.
endif
db.close
else
src.sys_hata Sistem veritabanına erişilemiyor daha sonra deneyiniz.
endif

[dialog d_acik_arttirma]
50,50
resizepic 0 0 <def.dialogid> 740 500
resizepic 10 10 <def.dialogid2> 720 480
resizepic 45 20 3000 100 20
resizepic 225 20 3000 95 20
resizepic 405 20 3000 105 20
resizepic 585 20 3000 110 20
dhtmlgump 61 20 200 20 0 0 <DEF.Bfont_Red><DEF.Bfont_Size7>Eşya Adı:
dhtmlgump 241 20 200 20 0 0 <DEF.Bfont_Red><DEF.Bfont_Size7>Ekleyen:
dhtmlgump 420 20 200 20 0 0 <DEF.Bfont_Red><DEF.Bfont_Size7>Son Fiyat:
dhtmlgump 600 20 200 20 0 0 <DEF.Bfont_Red><DEF.Bfont_Size7>Son Teklif:
resizepic 490 450 3000 100 20
dtextentry 500 450 500 16 0481 1
tbutton 20 450 <DEF.ButtonID_1> 1 0 10000,55 452 200,Açık arttırmaya eşya ekle
dhtmlgump 420 450 65 20 0 0 <DEF.Bfont_Red>Teklif yap:
db.connect
if (<db.connected>)
db.query "SELECT esya,ekleyen,sonfiyat,sonteklif FROM Revive_Acik_Arttirma"
if (<db.row.numrows> > 0)
while !(<isempty <db.row.<dlocal._while>.ekleyen>>)
ref1 <db.row.<dlocal._while>.esya>
if !(<uid.<db.row.<dlocal._while>.ekleyen>>) || !(<ref1>)
db.execute "DELETE from Revive_Acik_Arttirma where esya='<ref1>'"
src.f_resendialog d_acik_arttirma
endif
if !(<isempty <db.row.<dlocal._while>.esya>>)
local.kaydir <eval (<local._while>*20)+50>
dhtmlgump 85 <local.kaydir> 500 20 0 0 <qval (<ref1.isweaponz>)?<DEF.Bfont_Green><f_acik_arttirma_isim <ref1.name>>:<f_acik_arttirma_isim <ref1.name>>>
dhtmlgump 240 <local.kaydir> 500 20 0 0 <uid.<db.row.<dlocal._while>.ekleyen>.name>
dhtmlgump 420 <local.kaydir> 500 20 0 0 <f_bolukayir <db.row.<dlocal._while>.sonfiyat>>
dhtmlgump 600 <local.kaydir> 500 20 0 0 <uid.<uid.<db.row.<dlocal._while>.sonteklif>>.name>
button 20 <local.kaydir> <DEF.ButtonID_1> 1 0 <eval <local._while> +1>
button 60 <eval <local.kaydir> +2> 2117 2118 1 0 <eval <local._while> + 100>
endif
endwhile
endif
db.close
endif

[dialog d_acik_arttirma button]
on=10000
src.targetf f_acik_arttirma

on=100,200
db.connect
if (<db.connected>)
db.query "SELECT esya,ekleyen,sonfiyat,sonteklif from Revive_Acik_Arttirma"
ref1 <db.row.<eval <argn> -100>.esya>
if (<ref1>)
if (<ref1.isitem>)
if !(<isempty <db.row.<eval <argn> -100>.esya>>)
src.f_resendialog d_acik_arttirma_bilgi,0,<eval <argn> -100>
endif
endif
endif
db.close
endif

on=1,25
local.x <eval <argn> -1>
db.connect
if (<db.connected>)
db.query "SELECT esya,ekleyen,sonfiyat,sonteklif,maxteklif from Revive_Acik_Arttirma"
if (<isempty <argtxt[1]>>)
src.sys_hata Teklif kısmını boş bırakamazsınız.
elseif !(<isnumber <argtxt[1]>>)
src.sys_hata Sadece rakam girebilirsiniz.
elseif (<db.row.<dlocal.x>.sonteklif>==<src>)
src.sys_hata Zaten son teklifi siz yapmışsınız.
elseif (<db.row.<dlocal.x>.ekleyen>==<src>)
src.sys_hata Kendi eklediğiniz bir eşyaya teklif sunamazsınız.
elseif (<src.gold> < <dargtxt[1]>)
src.sys_hata <f_bolukayir <dargtxt[1]>> altınınız bulunmuyor.
elseif (<dargtxt[1]> < <ddef.min_gain>)
src.sys_hata En az 500 altın arttırabilirsiniz.
else
f_dialog_kapattir 1
if !strmatch("<db.row.<dlocal.x>.maxteklif>","0")
local.maxteklif 1
endif
ref1 <db.row.<dlocal.x>.esya>
ref2 <db.row.<dlocal.x>.sonteklif>
if (<ref2>)
if (<ref2.isplayer>)
ref2.gold +=<db.row.<dlocal.x>.sonfiyat>
ref2.notice '<ref1.name>' isimli eşyaya daha yüksek biri teklif yaptığı için paranız size geri iade edildi.
endif
endif
db.execute "UPDATE Revive_Acik_Arttirma SET sonfiyat='<dargtxt[1]>', sonteklif='<src>' WHERE esya='<ref1>'"
if (<dlocal.maxteklif>)
if (<dlocal.total_gold> >= <eval <db.row.<dlocal.x>.maxteklif>>)
try uid.<db.row.<dlocal.x>.esya>.timerf clear
try uid.<db.row.<dlocal.x>.esya>.f_acik_arttirma_bitir 2,<src>,<dargtxt[1]>
endif
endif
serv.b @1153,,1 Açık Arttırma Duyuru
serv.b @50,,1 '<src.name>','<ref1.name>' isimli eşyaya '<f_bolukayir <dargtxt[1]>>' altın teklif yaptı.
src.sys_ok '<ref1.name>' isimli eşyanın fiyatı teklifinizle güncellendi.
src.gold -= <argtxt[1]>
endif
db.close
else
src.sys_hata Sistem veritabanına erişilemiyor daha sonra deneyiniz.
endif

[dialog d_acik_arttirma_bilgi]
50,50
db.connect
if (<db.connected>)
db.query "SELECT esya,ekleyen,sonfiyat,sonteklif,eklendi,maxteklif from Revive_Acik_Arttirma"
ref1 <db.row.<argv[0]>.esya>
if (<ref1>)
if (<ref1.isitem>)
resizepic 0 0 5054 400 200
resizepic 10 10 3000 380 180
resizepic 30 30 2620 80 80
tilepic 42 48 <ref1.dispiddec>
dhtmlgump 120 30 200 20 0 0 <DEF.Bfont_Red>Eşya adı  : <ref1.name>
dhtmlgump 120 50 200 20 0 0 <DEF.Bfont_Red>Ekleyen   : <uid.<db.row.<argv[0]>.ekleyen>.name>
dhtmlgump 120 70 250 20 0 0 <DEF.Bfont_Red>Sağlamlık  : <qval (<ref1.isother>)?%<ref1.hitpoints>:Bu özellik yok>
dhtmlgump 120 90 250 20 0 0 <DEF.Bfont_Red>Adet     : <ref1.amount>
dhtmlgump 120 110 250 20 0 0 <DEF.Bfont_Red>Son teklif : <uid.<db.row.<argv[0]>.sonteklif>.name>
dhtmlgump 120 130 250 20 0 0 <DEF.Bfont_Red>Son fiyat : <f_bolukayir <db.row.<argv[0]>.sonfiyat>> altın
dhtmlgump 120 150 250 30 0 0 <DEF.Bfont_Red>Maksimum fiyat  : <qval (<db.row.<argv[0]>.maxteklif> != 0)?<f_bolukayir <db.row.<argv[0]>.maxteklif>> altın:Yok>
button 340 25 4017 4018 1 0 1
if (<ref1.type>==t_container)
if (<ref1.drescount> > 0)
resizepic 60 210 5054 270 200
resizepic 70 220 3000 250 180
for 0 <eval <ref1.rescount> -1>
ref2 <ref1.findcont(<dlocal._for>)>
if (<dlocal._for> <= 7)
dhtmlgump 90 <eval (<local._for>*20)+230> 200 20 0 0 <qval (<ref2.isweaponz>)?<DEF.Bfont_Green>[<ref2.amount>] <ref2.name>:[<ref2.amount>] <ref2.name>>
endif
endfor
endif
endif
endif
endif
db.close
endif


herkese merhaba 2-3 gün önce başladığım hergün azar azar bir şey eklediğim açık arttırma sistemi bitti,normal sadece sphere script diliylede yazılabilirdi ancak mysql öğrenmeye başlamıştım kendimi geliştirmek için yazdım.Tablo oluşturma fonksiyonunu vermedim .V1.0 bu şekilde kullanan olursa,hata bulursa yazsın elimizden geldiğince düzeltiriz.



Yorumlar

1.   Gönderen Override   19-07-2010 20:25    

Teşekkürler

Oylamalar

Oylama :
Üyelerin oylama ortalaması (10 dışında) : 8.20   
Oylar: 5 den itibaren 17-07-2010 22:51

Benzer Sayfalar

SayfalarYorumlarGönderenTarih
Duyuru sistemi (MYSQL]0Culum07-06-2010
MySQL Komutları0TheRaskol06-09-2009
MySQL Kurulumu0TheRaskol06-09-2009
MySQL İpuçları Detaylı Anlatım 10TheRaskol06-09-2009
Lib MySQL0TheRaskol02-09-2009

Keywords:

ultima online, RunUO, ultima online download, sphere scripting, role play, uo grafik, second age ultima, uo loop, macroman, pvp server, server kurulumu, sphere, multool, ml mulls, 56b 55r 55i, htmlgumps, client 4x, client edit, sphere release, osi, rp server, sunucular, ghost mouse, inside uo, kingdom reborn, stygian abyss, uo nasıl oynanır, mondain's legacy, age of shadows, world build, grandmaster, ultima online pvp, player dosyaları, ultima online indir, frp game, RunUO 1.0.0, razor, uo rice, hue editör, skill tools, ultima online patch, axis, world build, verdata, verdata patcher, map editör, gump editör, mul patcher, aos mulls, scriptler, anim edit, anim publish, hues mul, hosting vps, event dialog, account sistemi, skill gain, static yapımı,