küfür sistemi üzerine genel olarak aldığım talepler nedeniyle boş bir anımda bu sistemi geliştirdim. işine yarayacak birileri olabilir diye bu kodları buradan paylaşıyorum.
kullanmanız için mysql bağlantısına sahip olmanız gerekmektedir. daha sonra sistemi kurmak için yetkili bir hesap ile oyun içinden "kufurtblkur" komutunu kullanmak ve speech scripti içindeki spk_player bölümünde bulunan "on=*"'in altına "src.konusmaekle <args>" komutlarını eklemek yeterlidir. örnek;
[SPEECH spk_player]
on=*
src.konusmaekle <args>
sistem oyuncuların sürekli olarak son 30 konuşmasını kayıt altına almak üzerine tasarlandı. küfür bildirisi yapılmadan önce sürekli olarak karakterin son 30 konuşma kaydı tutulacaktır. 30 kayıttan fazla konuşma olduğu zaman bu sefer ilk kayıt silinip (kayıttaki ilk konuşma kaydı) son kayıt olarak yeni konuşma eklenir. böylece sürekli olarak son 30 konuşma eskileri yenileri ile güncellenerek tutulmuş olur.
küfür bildirisi yapıldığında eski kayıtlara hiç bir ekleme-silme işlemi yapılmaz. yeni kayıtlar ayrı bir tag içerisinde tutulur ve bildiri olduğunda bu iki kayıt ayrı ayrı gönderilir.
ayrıca şu an ceza bölümlerini eklemedim. herkesin bu sistemi ayrı ayrı olacağından gerekli tanımlamaları (kişileri ref1 olarak tanımladım) yaparak kodların o kısımlarını açık bıraktım. ceza kodlarını oraya eklemeniz yeterlidir.
sistem daha çok ham durumda. fazla test etme imkânımda pek olmadı. test edip bir sorunla karşılaşırsanız çözüm için bana bildirmeniz yeterlidir. umarım birilerinin işini görür.
[comment kufur_sistemi]
hazırlayan: Slothere
tarih: 1 Eylül 2010
güncelleme: -
versiyon: v1
------------------------
[function escapedata]
local.metin <args>
if <argv>
for 0 <eval <argv> - 1>
local.yenimetin <local.yenimetin> <argv[<dlocal._for>]>
endfor
local.metin <strsub 0 <local.yenimetin>>
endif
db.connect
return <db.escapedata <local.metin>>
db.close
[function konusmaekle]
if <findid(i_kufur_takip)>
local.durum "sonraki
local.limit 100
else
local.durum "son"
local.limit 30
endif
if !<isempty <local.durum>> && <local.limit>
if <isempty <tag.<local.durum>konusmalar>>
tag0.<local.durum>konusmalar <escapedata <args>>
else
tag0.<local.durum>konusmalar <tag0.<local.durum>konusmalar>,<escapedata <args>>
endif
args <tag0.<local.durum>konusmalar>
if <dargv> > <dlocal.limit>
for <eval <argv> - 1>
local.argv <local.argv> <argv[<dlocal._for>]>
endfor
local.argv <strsub 0 <local.argv>>
tag0.<local.durum>konusmalar <local.argv>
endif
endif
[plevel 1]
kufurbildir
[function kufurbildir]
targetf _kufurbildir
[function _kufurbildir]
if !<argo.isplayer>
sysmessage Yalnizca oyunculari secebilirsiniz.
elif <argo>==<src>
sysmessage Kendinizi secemezsiniz.
elif <argo.account.plevel> > 1
sysmessage Yetkilileri secemezsiniz.
elif <argo.findid(i_kufur_bildir)>
sysmessage <argo.name> su an zaten izleniyor.
elif !<argo.isonline>
sysmessage <argo.name> oyunda degil.
else
serv.newitem i_kufur_takip,1,<argo>,1
new.link <uid>
sysmessage <argo.name> izleme altina alindi.
endif
[function kufurtblkur]
db.connect
if <db.connected>
db.execute "create table if not exists kufurbildirileri (id int not null auto_increment primary key, tarih timestamp not null default current_timestamp, bildiren varchar(12), bildirilen varchar(12), konusmaIlk text, konusmaSon text)";
sysmessage tablo basariyla kuruldu.
endif
db.close
[function kufurMsg]
if <account.plevel> > 1
sysmessage @040 Kufur Bildirisi: <args>
endif
[plevel 4]
bildiriler
[function bildiriler]
db.connect
if <db.connected>
db.query "select id from kufurbildirileri";
if !<db.row.numrows>
sysmessage Gonderilen bildiri yok.
else
clearctags bildiri
ctag0.bildiri_index 0
sdialog d_kufur_bildirileri
endif
else
sysmessage Teknik bir sorunla karsilasildi.
endif
db.close
[function bildirisil]
db.connect
if <db.connected>
db.execute "delete from kufurbildirileri where id='<dargn>'";
sysmessage Bildiri silindi.
endif
db.close
[itemdef i_kufur_takip]
id i_handr_1
type t_eq_script
name kufur bildirisi
on=@create
attr attr_newbie|attr_decay
on=@equip
timer 60
on=@unequip
db.connect
if <db.connected>
if <isempty <topobj.tag.sonrakikonusmalar>>
local.sonrakikonusmalar "yok"
else
local.sonrakikonusmalar "<topobj.tag0.sonrakikonusmalar>"
endif
if <isempty <topobj.tag.sonkonusmalar>>
local.sonkonusmalar "yok"
else
local.sonkonusmalar "<topobj.tag0.sonkonusmalar>"
endif
db.execute "set names 'latin5'";
db.execute "insert into kufurbildirileri (bildiren,bildirilen,konusmaIlk,konusmaSon) values ('<link>','<topobj>','<local.sonkonusmalar>','<local.sonrakikonusmalar>')";
topobj.tag0.sonrakikonusmalar
serv.allclients kufurMsg Bildiren: <link.name>, Bildirilen: <topobj.name>, Tarih: <serv.rtime>
endif
db.close
on=@timer
remove
return 1
[dialog d_kufur_bildirileri]
0,0
nomove
db.connect
if <db.connected>
db.query "select bildiren,bildirilen,tarih,id from kufurbildirileri order by tarih desc limit <dctag0.bildiri_index>,14";
resizepic 50 50 3600 450 400
resizepic 60 60 3000 430 380
button 450 415 015a4 015a6 1 0 999999
button 75 415 015a1 015a3 1 0 999998
dorigin 75 70
dtext 105 60 1152 Bildiren
dtext 220 60 1152 Bildirilen
dtext 340 60 1152 Tarih
while <db.row.<dlocal._while>.id>
button +0 *20 4005 4007 1 0 <eval <db.row.<dlocal._while>.id>>
dtext 110 *0 040 <uid.<db.row.<dlocal._while>.bildiren>.name>
dtext 220 *0 040 <uid.<db.row.<dlocal._while>.bildirilen>.name>
dtext 340 *0 040 <db.row.<dlocal._while>.tarih>
endwhile
endif
db.close
[dialog d_kufur_bildirileri button]
on=1 999997
ctag0.bildiri_id <dargn>
sdialog d_kufur_bildiri_icerik
on=999998
if <ctag0.bildiri_index> > 0
ctag0.bildiri_index -=15
endif
sdialog d_kufur_bildirileri
on=999999
ctag0.bildiri_index +=15
sdialog d_kufur_bildirileri
[dialog d_kufur_bildiri_icerik]
0,0
nomove
resizepic 50 50 3600 280 380
resizepic 60 60 3000 260 360
db.connect
if <db.connected>
db.query "select bildiren,bildirilen,tarih,konusmaSon,konusmaIlk from kufurbildirileri where id='<dctag0.bildiri_id>'";
if <db.row.numrows>
ctag0.bildiri_bildiren <db.row.0.bildiren>
ctag0.bildiri_bildirilen <db.row.0.bildirilen>
dtext 75 80 1000 Bildiren:
dtext 75 100 1000 Bildirilen:
dtext 75 120 1000 Tarih:
dtext 75 140 1000 Önceki Konuşma Kaydı:
dtext 142 80 040 <uid.<db.row.0.bildiren>.name>
dtext 142 100 040 <uid.<db.row.0.bildirilen>.name>
dtext 142 120 040 <db.row.0.tarih>
dhtmlgump 75 160 220 80 1 1 <db.row.0.konusmaIlk>
dtext 75 240 1000 Sonraki Konuşma Kaydı:
dhtmlgump 75 260 220 80 1 1 <db.row.0.konusmaSon>
button 75 350 4005 4007 1 0 1
dtext 115 350 1000 Bildireni (<uid.<db.row.0.bildiren>.name>) Cezalandır
button 75 370 4005 4007 1 0 2
dtext 115 370 1000 Bildirileni (<uid.<db.row.0.bildirilen>.name>) Cezalandır
button 75 390 4005 4007 1 0 3
dtext 115 390 1000 Bildiriyi Sil
else
dtext 100 100 38 Böyle bir bildiri bulunamadı..
endif
endif
db.close
[dialog d_kufur_bildiri_icerik button]
on=0
clearctags bildiri
on=1
ref1 <ctag0.bildiri_bildiren>
// bildireni cezalandıracak kodlar
bildirisil <dctag0.bildiri_id>
on=2
ref1 <ctag0.bildiri_bildirilen>
// bildirileni cezalandıracak kodlar
bildirisil <dctag0.bildiri_id>
on=3
bildirisil <dctag0.bildiri_id>
[eof]
Total votes: 0
Ultima Online 1 gün önce
Sphere Scripting 4 gün önce
Ultima Online 4 gün önce
Ultima Online 1 hafta önce
Duyurular 2 hafta önce
Sunucular 3 hafta önce
Ultima Online 3 hafta önce
Ultima Online 3 hafta önce
Ultima Online 1 ay önce
Ultima Online 1 ay önce
Sunucular 1 ay önce
Sunucular 1 ay önce
2024-10-31 22:47
2024-10-14 17:45
2024-09-26 14:21
2024-07-08 22:50
2024-07-08 22:34
2024-06-19 22:05
2024-06-01 02:19
2024-05-31 21:17
Yorumlar (0)