Master
59.2997
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.

güncel versiyon: v1.1

[comment kufur_sistemi]
hazırlayan: Slothere
tarih: 1 Eylül 2010
güncelleme: 2 Eylül 2010 - 13:30
versiyon: v1.1
------------------------

[function escapedata]
local.metin <args>
if <argv>
	for 0 <eval <argv> - 1>
		local.yenimetin <local.yenimetin> <argv[<dlocal._for>]>
	endfor
	if <local.yenimetin>
		local.metin <strsub 0 <local.yenimetin>>
	else
		local.metin <local.yenimetin>
	endif
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
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_takip)>
	sysmessage <argo.name> su an zaten izleniyor.
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]


Bu konu Slothere tarafından düzenlendi(2010-09-02 13:31, 13 yıl önce)
Başarılı bir sistem. Akşam local olarak denicem.

Saol Gökberkcim
Başarılı
Test ettim sorunsuz çalışıyor, başarılı.
Expert
34.0001
Benimde üstünde yoğunlaştığım bir konuydu, güzel bir yöntem geliştirmişsin. + karmayıda unutmayalım.
baştaki i_kufur_bildir, i_kufur_takip olcak.

ERROR:(mysql_kufur.scp,20)Can't resolve <strsub0>
bu hata arada bir geliyor. Neden bilmiyorum ama.
Slothere teşekkürlerimi sunarım, küfür ve craft menülerini kullanıyorum. Kısa ve öz.

Zaten küfür sistemlerinde insanların canını sıkan olay buydu. Yani küfür ettikten sonra bildirildiğinde, daha sonra küfür etmemiş olabiliyor, kişi.

Bu sebeple eski konuşmaları alması çok iyi. Teşekkürler tekrar.

Bu konu Lai tarafından düzenlendi(2010-09-02 01:47, 13 yıl önce)
Açılan ve açılacak olan yeni sunucularda bu sistemi biz yaptık,biz yazdık diye görmek ayrı bi hoş olacak.Birbirinin kopyası olan sunuculara +1 malzeme daha.

Teşekkür etmiyorum Gökberk cim sana nedenini sen biliyosun :)
@Syntax, sen çok çirkin bir kişiliğe sahipsin. Slothere ile biraz daha fazla takılırsan, karakterin baya bir gelişecek.!!!
başarılı.
Master
59.2997
güncellendi.

@lai
güncel sürümde o hataların çıkmaması gerekiyor artık.
Senin kadar olmasa da haklı olabilirsin bir derecede var.Sende Slothere ile biraz takıl da sunucun adam gibi sistem görsün...
@Slothere, güncelleme için teşekkürler.

@Syntax, çocuk nereden kuyruk acın var bilmiyorum ama, başka camiye git. Şansını zorlama.
Sakin pls. Tartışmalarınıza p.m yoluyla devam ediniz.
Açıkcası bu sistemleri çok saçma buluyorum, aranızda bu güne kadar küfür etmedim diyen bi insa nolacağınıda sanmıyorum bence çok saçma bir sistem bırakın oyuncular özgürce takılsın....
Novice
12.5
Legend başkalarına küfür etmek özgürlük olarak algılanamaz.
Sistem işe yarar bir şey bu yüzden tebrik ederim Gökberk'i ama bende İsmail gibi paylaşılmasını doğru bulmuyorum en azından Sphereserver dışında.Ne yazık ki bilinçli bilinçsiz herkes kullanabiliyor.Sonra açılan başlıkları görüyoruz kuramayanlar symbol hatası alıp başlık açanlar filan.



Üye Ol veya Giriş Yap

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