Novice
12.5
[comment mortal_tecrube_sys_v1]
Tecrübe sistemi v1
Yazar: Mortal
Tarih: 02.09.2012
Saat: 15:26

Gerekenler: MySQL gereklidir

Özellikleri 
- tecrübe puanları online süresi ve öldürdüğü adam sayısı arttıkça yükselir.
- tecrübe puanlarıyla bonus seçebilirler
- tecrübe puanlarıyla item satın alınabilir
- tecrübe puanlarıyla npc satın alınabilir
- tecrübe puanları altına çevrilebilir.
Hesaplamalar
- 1 saat 10 tecrübe puanı eder
- 1 kill 20 tecrübe puanı eder
- 10 tecrübe puanı 1000 altın eder
Doğal fixler
- Son 30 dakika içerisinde öldürdüğü bir oyuncudan puan alamaz.
- Karakter ilk yaratılırken <age> 3600 olarak ayarlanır.(girişte 10 tecrübe puanı verilir)
Kullanımı
- Tecrübe puanı kullanma örneği; "tecrubeharca 1000" 1000 tecrübe puanı siler-harcar.
- "tecrube_mysqltablo" komutu ile MySQL tablosu oluşturulur.
- Toplam harcanılan tecrübe puanı <tecrubehesapgider> komutu ile öğrenilebilir.
- Toplam kazanılan tecrübe puanı <tecrubehesapgelir> komutu ile öğrenilebilir.
- Kullanılabilir tecrübe puanı <tecrubehesap> ile öğrenebilir.


***ÖNEMLİ NOT: <serv.rtime> mysql'a eklendi ancak kullanıma açılmadı.rtime kullanarak ileride sitede gösterilebilecek bir 
hale getirilebilir.Ayrıca ileride multi cliente karşı bir sistemin açığını kapatmak olarak kullanabilir


///*****Defname****//////////////************///////////************/////////////***************/////////////*******//

[defname tecrube_config]
tecrube_timer 10, 3600           // vereceği puan, saat başı (60 saniye * 60 dakika) 3600
tecrube_kill 20                  // adam öldürünce verilecek tecrübe puanı
tecrube_lastdeathplayertime 30   // kaç dakika içinde ikinci adamı öldürürse puan verme.
tecrube_gold 10, 1000            // 10 tecrübe puanı 1k altına çevrilebilir.

///****************//////////////************///////////************/////////////***************/////////////*******//

[function mysqlkontrol]
if (<db.connected>)
return 1
else
return 0
endif

[function tecrube_mysqltablo]
db.connect
db.execute "create table tecrube(isim text, uid varchar(20), oldurulen varchar(20), tarih varchar(10));"
db.close

[function tecrubeler]
targetf _tecrubeler

[function _tecrubeler]
src.sysmessage <argo.tecrubegelir> deneme

[function tecrubeharca]
if (<args> > <tecrubehesap>)
src.sysmessage Yeterli tecrübe puanınız yok.
return 1
else
src.tag0.tecrubeharcama +=<args>
src.sysmessage <args> tecrübe puanı harcadınız.
endif

[function tecrubehesapgider]
return <tag0.tecrubeharcama>

[function tecrubehesapgelir]
args <def.tecrube_timer>
if !(<src.tag0.oldurme>) 
return <eval <src.age>/<argv[1]>*<argv[0]>>
else
return <eval <eval <src.age>/<argv[1]>*<argv[0]>> + <eval <src.tag0.oldurme>*<def.tecrube_kill>> >
endif

[function tecrubehesap]
return <eval <tecrubehesapgelir>-<tecrubehesapgider>>

[events e_tecrube]
on=@login
src.sysmessage Toplam kullanabilir tecrübe puanınız: <tecrubehesap>

on=@death
ref1 <act>
if (<ref1.isplayer>) 
if (<mysqlkontrol>)
db.connect
db.execute "insert into tecrube (isim, uid, oldurulen, tarih) values ('<ref1.name>', '<ref1.uid>', '<src.uid>', 

'<serv.rtime>');"
ref1.tecrube_puanveriver <src.uid>
endif
db.close
endif

[function tecrube_puanveriver]
db.connect
db.query "select (uid,oldurulen) from tecrube where uid='<src.uid>' BETWEEN (SELECT NOW() - INTERVAL 

<def.tecrube_lastdeathplayertime> MINUTE) and NOW()";
if !(<db.row>)
src.puanver
endif
for 0 <db.row>
if (strmatch("<args>","<db.row.<dlocal._for>.oldurulen>")
src.sysmessage <uid.<args>.name> son öldürdüğün 3 adam içinde olduğundan puan alamadın.
return 1
endfor
db.close
src.puanver


[function puanver]
if !(<src.tag0.oldurme>)
src.tag0.oldurme 1
return 1
else
src.tag0.oldurme +=1
endif

src.sysmessage <def.tecrube_kill> puan kazandınız.Toplam tecrübe puanınız : <tecrubehesap>

[eof]

Büyük ihtimalle hata olabilir test etme şansım olmadı.Ancak yinede paylaşmak istedim kaç yıldır ilk defa doğru düzgün oturup bir şeyler yazdım.

Üye Ol veya Giriş Yap

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