Merhabalar arkadaşlar;

Küfür sistemiyle ilgili birçok sunucu sıkıntı yaşayabiliyor ve oyun içerisinde küfürden ceza-i işlem uygulamanın acımasız olduğunu düşünenlerde mevcut. Küfür sisteminden kaynaklanan cezalarıda oyuncular için zevkli bir hale dönüştürebileceğimizi düşünerek Erador için yazdığım Tövbe Sistemini diğer sunucularada yardımcı olabileceği düşüncesiyle public ediyorum.

Bilgilendirmeler;
*cezalar ve ayarlar bölümünden sistemi kendi istediğiniz gibi yönlendirebilirsiniz.
*sistem içerisinde kullandığım functionlar en altta mevcuttur. onlarıda almalısınız.
*sistem british'ten özür dileyerek, cezanızı ödeme üzerinedir.
*affetmeyi aktif/pasif duruma getirebilirsiniz.
*sistemde event yoktur guard zone dışı ve safe bir alanda kullanmalısınız.
*c_h_brit NPC'sini yukarıda bahsettiğim tarzdaki alana yerleştirmelisiniz.
*speech ayarlarını kendinize göre geliştirebilirsiniz.


eklentiler; , 11.08.2011, 15:40
*oyuncular belirlenmiş küfürleri ederse staff çantasına deed gelmesi eklendi
*deed'den küfürü, kimin ettiğini, ne zaman ve nerede ettiğini görebilirsiniz.
*bu kişiye deed aracılığıyla ceza verebilir, yanınıza çekebilir veya banlayabilirsiniz.*
*deed'de yer alan küfür tüm cümleyi kapsar


eklentiler;, 11.08.2011, 21.24
*deed panelden küfür eden oyuncuyu uyarma seçeneği eklendi.
*tövbe esnasında arınmayı temslik eden effectler ve yalvarmayı temsil eden animler eklendi





[Comment TovbeSys]
yazan: buxiun
tarih: 11/08/2011 - 08:33
version: 056b+
for erador.gen.tr, spherescript.com
*kullanacak sunucular emeğe saygı göstermelidir*

[defname cezalar]
toplamceza 5
kufur1 Ağır seviye küfür,1000
kufur2 Orta seviye küfür,500
kufur3 Hafif seviye küfür,300
kufur4 Affet,_affedelim
kufur5 Küfür kademesi sıfırla,_sifirlayalim

cezakoordinat1 1303,1686,30 // aynı anda 3 kişiye ceza verme durumunda üst üste düşmemeleri için 3 koordinat var
cezakoordinat2 1301,1688,30
cezakoordinat3 1303,1690,30
kimegelsin 0138e6 // buraya küfür bildiri deed'inin geleceği staff'ın uid sini yazıyorsunuz.
pkoordinat delucia // affedilen ve cezası biten pk nereye gitsin?
mavikoordinat britain // affedilen ve cezası biten mavi nereye gitsin?
kacartsin 1 // her +1 arttırmak cezayı x2 arttıracaktır.
kufurkademe 4 // kufur kademesi max kaç olsun
yenile 1 // 3. kademede alınan cezadan sonra kufur kademesi yenilensinmi? 1-evet 0-hayır
cezaaffet 1 // stafflar ceza ve kademeleri affedilsin mi? 1-evet 0-hayır

[plevel 3]
kufur

[function kufurvaar]
sdialog d_kufurceza

[dialog d_kufurceza]
150,100

if (<eval <def.cezaaffet>==1>)
		makebg 50,50,210,170
	for x 1 <def.toplamceza>
		menubutton 70, <eval (<dlocal.x>*25)+50>, <dlocal.x>, <f_buxiun <def.kufur<dlocal.x>>,1>
	endfor
else
		makebg 50,50,200,120
	for x 1 3
		menubutton 70, <eval (<dlocal.x>*25)+50>, <dlocal.x>, <f_buxiun <def.kufur<dlocal.x>>,1>
	endfor
endif

[dialog d_kufurceza button]
on 1 3
kufurbelirle <f_buxiun <def.kufur<dargn>>,2>

on 4 5
targetf <f_buxiun <def.kufur<dargn>>,2>
src.sys_normal Kimin cezasını affetmek istiyorsunuz?

[function kufurbelirle]
targetf _kufurbelirle <args>
src.sys_normal Kimi <args> cümle küfür cezasına çarptırmak istiyorsunuz?

[function _kufurbelirle]
ref1 <argo>
if !(<ref1.tag0.gerisayim>)
	if (<eval <ref1.dtag.kufurkademe>==1>)
		ref1.tag.gerisayim=<eval <args>*<eval <def.kacartsin>*2>>
	elif (<eval <ref1.dtag.kufurkademe>==2>)
		ref1.tag.gerisayim=<eval <args>*<eval <def.kacartsin>*3>>
	elif (<eval <ref1.dtag.kufurkademe> > 2>) && (<eval <ref1.dtag.kufurkademe> =< <def.kufurkademe>>)
		ref1.tag.gerisayim=<eval <args>*<eval <def.kacartsin>*4>>
			if (<eval <def.yenile>==1>)
				ref1.newitem i_kademesifirla
				new.equip
				new.timer 2
			endif
	else
		ref1.tag.gerisayim=<args>
	endif
		ref1.notice Şuanda <src.name> adlı yetkili tarafından kelime küfürü cezasına çarptırıldınız ve Lord British sizi esir aldı. Lord British'ten af dilemeye başlayınız. Verilen özür dileme cezanızı .sure komutuyla öğrenebilirsiniz. Cezanızı tamamladığınızda oyuna dönebilirsiniz.
			dorand 3
				ref1.go <def.cezakoordinat1>
				ref1.go <def.cezakoordinat2>
				ref1.go <def.cezakoordinat3>
			enddo
		ref1.flags <ref1.flags>|statf_freeze
		src.sys_error <argo.name> adlı kişiye kelime cezası verdiniz.
		serv.allclients sysmessage @027,1,1 Küfür Sistemi:
		serv.allclients sysmessage @1153,,1 <ref1.name> adlı oyuncu küfür ettiği için Lord British tarafından yargılanmaya gönderildi.
	if !(<ref1.tag.kufurkademe>)
		ref1.tag.kufurkademe 00
		ref1.tag.kufurkademe +=1
	else
		if (<eval <ref1.dtag.kufurkademe> < <def.kufurkademe>>)
		ref1.tag.kufurkademe +=1
		endif
	endif
else
		src.sys_error <argo.name> isimli kişi zaten bir ceza içerisinde.
		return 1
endif

[function _affedelim]
ref1 <argo>
if (<ref1.tag0.gerisayim>)
	src.sys_normal <ref1.name> adlı kişinin <ref1.dtag.gerisayim> özür cezasını affettiniz.
	ref1.notice <ref1.dtag.gerisayim> kelime özür cezanız <src.name> tarafından affedilmiştir.
	ref1.flags <ref1.flags>&~statf_freeze
	ref1.cleartags gerisayim
	ref1.cleartags affetdedim
		if <ispk>
			ref1.go <def.pkoordinat>
		else
			ref1.go <def.mavikoordinat>
		endif
else
	src.sys_error <ref1.name> adlı kişinin bir cezası bulunmuyor.
	return 1
endif

[function _sifirlayalim]
ref1 <argo>
if (<ref1.tag0.kufurkademe>)
	src.sys_normal <ref1.name> adlı kişinin <ref1.dtag.kufurkademe> küfür kademesini kaldırdınız.
	ref1.notice <ref1.dtag.kufurkademe>. seviyede olan küfür kademeniz <src.name> tarafından kaldırılmıştır.
	ref1.flags <ref1.flags>&~statf_freeze
	ref1.cleartags kufurkademe
	ref1.cleartags gerisayim
	ref1.cleartags affetdedim
else
	src.sys_error <ref1.name> adlı kişinin küfür sicili bulunmuyor.
	return 1
endif

[plevel 1]
sure
kademe

[function sure]
if (<src.tag.gerisayim>)
	src.sys_error <src.dtag.gerisayim> özür cezanız mevcut.
	return 1
else
	src.sys_error Herhangi bir özür cezanız bulunmuyor.
	return 1
endif

[function kademe]
if (<src.tag.kufurkademe>)
	src.sys_error Küfür kademeniz: <src.dtag.kufurkademe>
	return 1
else
	src.sys_normal Küfür siciliniz bulunmuyor.
	return 1
endif

[itemdef i_kademesifirla]
id i_memory
name kademeci
type t_eq_script
defname i_kademesifirla

on=@unequip
cont.tag.kufurkademe

on=@timer
cont.sys_normal Küfür kademe siciliniz sıfırlanmıştır.
remove

[itemdef i_deed_kufur]
id i_deed
name Küfür Bildirisi
type t_eq_script
defname i_deed_kufur

on @create
attr=attr_newbie
color 0845

on @click
msg_error <uid.<tag0.kufureden>.name>
msg_normal <name>
return 1

on=@dclick
dialog d_kufurdeed
return 1

[dialog d_kufurdeed]
100,100

makebg 50,50,470,300
local.renk <def.bfont_dred>
local.x=70
dhtmlgump 70 <local.x> 800 25 0 0 Küfür: <local.renk><tag0.sozcuk>
dhtmlgump 70 <eval <local.x>+25> 800 30 0 0 Küfür eden: <local.renk><uid.<tag0.kufureden>.name>
dhtmlgump 70 <eval <local.x>+50> 800 30 0 0 Küfür tarihi: <local.renk><tag0.kufurtarih>
dhtmlgump 70 <eval <local.x>+75> 800 30 0 0 Küfür bölgesi: <local.renk><tag0.kufurbolge>
menubutton 70, <eval <local.x>+120>, 1, Küfür edeni çek
menubutton 70, <eval <local.x>+145>, 2, Küfür edeni cezalandır
menubutton 70, <eval <local.x>+170>, 3, Küfür edeni banla
menubutton 70, <eval <local.x>+195>, 4, Küfür bildirisini sil
menubutton 70, <eval <local.x>+220>, 5, Küfür edeni uyar

[dialog d_kufurdeed button]
on 1
ref1 <tag0.kufureden>
try uid.<ref1>.summonto

on 2
ref1 <tag0.kufureden>
try uid.<ref1>.tag.gerisayim 100
try uid.<ref1>.go 1303,1687,30
try uid.<ref1>.flags <uid.<ref1>.flags>|statf_freeze
try uid.<ref1>.sys_error 600 özür cümlesi cezası aldınız.
try uid.<ref1>.notice <src.name> adlı yetkili tarafından kelime küfürü cezasına çarptırıldınız ve Lord British sizi esir aldı. Lord British'ten af dilemeye başlayınız. Verilen özür dileme cezanızı .sure komutuyla öğrenebilirsiniz. Cezanızı tamamladığınızda oyuna dönebilirsiniz.			
remove

on 3
ref1 <tag0.kufureden>
try uid.<ref1>.kick
try uid.<ref1>.sys_error Küfür suçundan <src.name> tarafından banlandınız.

on 4
ref1 <tag0.kufureden>
remove
src.sys_error <uid.<ref1>.name> adlı oyuncunun küfür belgesi silindi.

on 5
ref1 <tag0.kufureden>
try uid.<ref1>.notice <tag0.sozcuk> - küfürünüz tarafımıza iletilmiştir. Birdahaki küfürünüzde cezalandırılacaksınız. <src.name>


[function kufurdenkurtar]
src.flags <src.flags>&~statf_freeze
src.tag.gerisayim
src.tag.kufurkademe

[function denebakam]
try uid.011dae.temizlikk


[SPEECH spk_affet]

ON=*affet*
if (<eval <src.tag0.gerisayim>==1>)
	src.go britain moongate
	src.tag.gerisayim
	src.tag.affetdedim
	src.flags <src.flags>&~statf_freeze
	src.notice Verilen özür dileme cezanız sona erdi ve Lord British tarafından affedildiniz. Birden fazla küfür cezası alırsanız, cezanızda aynı oranda katlanacaktır. Lütfen birdahakine dikkatli olunuz.
	return 1
endif
if !(<src.tag.gerisayim>)
	say @1153,,1 Affetmeye gerek yok.
	return 1
else
	if (<src.tag0.affetdedim>)
		say @1153,,1 Zaten affet dedin. Yalvariyorum de.
	else
		src.tag.affetdedim 01
		say @1153,,1 Seni affetmek kolay olmayacak, simdi yalvar!
		src.tag.gerisayim -=1
		src.say @1153,,1 <src.dtag.gerisayim>
		if (rand(2))
			src.effect 3,0376a,2,10,1
		endif
			dorand 2
				src.anim 32
				src.anim 33
			enddo
	endif
endif

ON=*yalvariyorum*
if (<eval <src.tag0.gerisayim>==1>)
	src.go britain moongate
	src.tag.gerisayim
	src.tag.affetdedim
	src.flags <src.flags>&~statf_freeze
	src.notice Verilen özür dileme cezanız sona erdi ve Lord British tarafından affedildiniz. Birden fazla küfür cezası alırsanız, cezanızda aynı oranda katlanacaktır. Lütfen birdahakine dikkatli olunuz.
	return 1
endif
if !(<src.tag.gerisayim>)
	say @1153,,1 Yalvarmana gerek yok.
	return 1
else
	if (<src.tag.affetdedim>)
		say @1153,,1 Aferin iyi yalvarıyorsun.
		src.tag.affetdedim 00
		src.tag.gerisayim -=1
		src.say @1153,,1 <src.dtag.gerisayim>
		if (rand(2))
			src.effect 3,0376a,2,10,1
		endif
			dorand 2
				src.anim 32
				src.anim 33
			enddo
	else
		say @1153,,1 Önce affetmemi iste.
	endif
endif


// affedici british //
[chardef c_h_brit]
defname c_h_brit
name British
id c_man
can mt_nonmover

tspeech=spk_affet

ON=@create
	NPC=brain_vendor
	COLOR=0
	STR={36 50}
	DEX=0
	INT={51 65}
	
ON=@npcrestock
	item=i_katana
	color=0
	item=i_person_lord_british
	color=0

ON=@click
    msg_normal [Britain Lord]
    message @100 <name>
    return 1

ON=@dclick
return 1


Sistemde kullanılan functionlar;


[Comment FunctS]
yazan: buxiun
tarih: 18/03/2011 - 02:47
version: 056b+
for erador.gen.tr, spherescripts.com
*kullanacak sunucular emeğe saygı göstermelidir*

[FUNCTION menubutton]
button <ARGV0> <ARGV1> 4005 4006 1 0 <ARGV2>
dhtmlgump <eval <ARGV0>+35> <ARGV1> 185 26 0 0 <ARGV3>

[function softground]
resizepic <eval <argv[0]>-10> <eval <argv[1]>-10> 5120 <eval <argv[2]>+20> <eval <argv[3]>+20>
resizepic <argv[0]> <argv[1]> 3500 <argv[2]> <argv[3]>

[FUNCTION f_buxiun]
local.temp = <argv[<eval <argv> - 1>]> -1
return <argv[<dlocal.temp>]>

[function sys_normal]
sysmessage @,,1 <args>

[function sys_error]
sysmessage @455,,1 <args>

[function msg_normal]
message @,,1 <args>

[FUNCTION ispk]
IF (<NPC>)
IF (<KARMA> < -2000)
RETURN 1
ELSE
RETURN 0
ENDIF
ENDIF
IF !(<KARMA> > -8001) || (<KILLS> > <SERV.MURDERMINCOUNT>)
RETURN 1
ENDIF
RETURN 0

Küfür sorguları ve bildirilerin size ulaşması için, player speech'i spk_player altına aşağıdaki sorguyu ekleyiniz.
for purgatory

ON=*sikerim* // bu şekilde sorgular ekleyebilirsiniz istediğiniz gibi.
ON=*orospu*
ON=*siktim*
ON=*anan*ı*
ON=*ibne*
newitem i_deed_kufur
try uid.<def.kimegelsin>.bounce <new>
new.tag0.sozcuk=<args>
new.tag0.kufureden=<src.uid>
new.tag0.kufurtarih=<serv.rtime>
new.tag0.kufurbolge=<region.name>


Bu konu Buxiun tarafından düzenlendi(2011-08-13 02:10, 12 yıl önce)
yalvar köpek yazdır :p
Güzelmiş :D
purgatory için;

eklentiler; , 11.08.2011, 15:40 (ana başlığada eklenmiştir)
*oyuncular belirlenmiş küfürleri ederse staff çantasına deed gelmesi eklendi
*deed'den küfürü, kimin ettiğini, ne zaman ve nerede ettiğini görebilirsiniz.
*bu kişiye deed aracılığıyla ceza verebilir, yanınıza çekebilir veya banlayabilirsiniz.*
*deed'de yer alan küfür tüm cümleyi kapsar


Küfür sorguları ve bildirilerin size ulaşması için, player speech'i spk_player altına aşağıdaki sorguyu ekleyiniz.


ON=*sikerim* // bu şekilde sorgular ekleyebilirsiniz istediğiniz gibi.
ON=*orospu*
ON=*siktim*
ON=*anan*ı*
ON=*ibne*
newitem i_deed_kufur
try uid.<def.kimegelsin>.bounce <new>
new.tag0.sozcuk=<args>
new.tag0.kufureden=<src.uid>
new.tag0.kufurtarih=<serv.rtime>
new.tag0.kufurbolge=<region.name>
ellerine sağlık hocam çok güzel
Silindi
Members
0
buxiun'u yıllardır takip etmiyordum ama aynı hızla devam ediyor gördüğüm kadarıyla, çok başarılı bir sistem..
eklentiler;, 11.08.2011, 21.24
*deed panelden küfür eden oyuncuyu uyarma seçeneği eklendi.
*tövbe esnasında arınmayı temslik eden effectler ve yalvarmayı temsil eden animler eklendi



@teşekkürler arkadaşlar
tebrikler güzel bir paylaşım..
Expert
34.0001
"for erador.gen.tr, spherescripts.com" böyle bir ibare ilgimi çekti MSN'den cevap alamadığım için buraya yansıtıyorum.
uyuduğum esnada messengerdan yazmış, s harfi fazla olmuş, düzenledim.
güzel paylaşım
gayet güzel tebrikler.
ceza-i değil cezai işlem bu arada :p
güzel paylaşım.
eline sağlık buxiun ama slotherenin sisteminide unutmayalım :)
Master
59.2997
eline sağlık. fakat küfür, maalesef sphere emülatörü altında herhangi bir script yöntemi ile engellemez.

bu sistem üzerinde çok çalıştım ama aldığım sonuçta hep sphere emülatörünün kodlanma aşamasında yapılan bir hatadan kaynaklanan bir engelle karşılaştım. aynı engel bu sistem ve benzeri tüm sistemlerde de ortaya çıkacaktır.

sorunlu olan karakter " (çift tırnak) karakteri. tahmin ettiğim kadarıyla sphere emülatörü bu karaktere herhangi bir kaçış işlemi gerçekleştirmeden veriyi alıp işlediği ve bu karakterin de metinlerin belirteci olduğu için bu karakterin işlenmesinde problem yaşanıyor. örnek olarak oyun içerisinden herhangi bir komut veya sphere üzerinde kullanılan herhangi bir yerde girdiyi alıp kullanmaya kalktığınızda, tırnak olan metnin tırnağın olduğu kısmna kadar işlendiğini ve sonrasının hiç olmamış, yazılmamış gibi yok sayıldığını görüyoruz.

örnek kullanım;
-deneme "metninin devamı

bu şekilde bir metin kullanımında sphere'ın neresinde olursa olsun gönderilen metin deneme olacaktır. tırnak karakteri ve sonrasındakiler işleme alınmayıp hiç olmamış sayılacaktır.

ayrıca mesela karakterin oyunda istediğini yazmasını ve sphere'a hiç bir şey yazmamış gibi göndermesini de sağlamak mümkün. bu sefer tırnak karakterini başa almak ve başta çift tırnak kullanmak yeterli oluyor. ""deneme metni yazdığınızda ve bu metni işlemek istediğinizde sanki hiç bir şey yazmamışsınız gibi boş gönderim alacaksınız. fakat bu metin oyun içerisinden direk olarak görüntülenebilecektir.

o yüzden bu şekilde sistemlerle küfürün önüne sphere emülatöründe geçmek mümkün değildir, bazı konularda sphere gerçekten aciz vaziyetlere düşebiliyor ama elbette unutmamak gerekli ki ücretsiz sunulan bir proje, kullanan kişi bunları kabul ederek kullanıyor.



Üye Ol veya Giriş Yap

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