Şişe Çevirme Oyunu



Kod:
on *:text:*:#Sisecevir: {
if $1 == !varim || $1 == !varım {
if %disc. [ $+ [ $nick ] ] { msg $chan Oyundan uzaklaştırıldınız, lütfen ceza sürenizin dolmasını bekleyiniz. | return }
if (!$istok($hget(Oyun,Başlayanlar),$nick,32)) {
hadd -ms Oyun Başlayanlar $hget(Oyun,Başlayanlar) $nick
msg $chan 4 $nick oyuna dahil oldu.
}
else { msg $chan 4 $nick 1zaten oyuna dahil olmuşsunuz. } }
if $1 == !yokum {
if (!$istok($hget(Oyun,Başlayanlar),$nick,32)) { msg $chan Siz zaten oyuna dahil olmamışsınız. | return }
var %. $remtok($hget(oyun,Başlayanlar),$nick,32)
hdel -ms Oyun Başlayanlar
hadd -ms Oyun Başlayanlar %.
msg $chan 2 $nick oyundan ayrıldı.
if ($istok($hget(Oyun,SoruNick),$nick,32)) { msg $chan Oyun sıfırlandı, şişeyi tekrar çevirebilirsiniz. | hdel -ms Oyun SoruNick | hdel -ms Oyun SoruCevap | hadd -ms Oyun Durum 0 | hadd -ms Oyun Soruldu 0 | $+(timer,soru) off | return }
if ($istok($hget(Oyun,SoruCevap),$nick,32)) { msg $chan Oyun sıfırlandı, şişeyi tekrar çevirebilirsiniz. | hdel -ms Oyun SoruNick | hdel -ms Oyun SoruCevap | hadd -ms Oyun Durum 0 | hadd -ms Oyun Soruldu 0 | $+(timer,soru) off | return }
}
if $1 == !cevir || $1 == !çevir {
if (!$istok($hget(Oyun,Başlayanlar),$nick,32)) { msg $chan Oyuna dahil olmadığınız için !cevir yapamazsınız. | return }
if ($token($hget(oyun,Başlayanlar),0,32) == $null) { msg $chan Oyuncu bulunmadığı için !cevir komutunu kullanamazsınız. | return }
if ($token($hget(Oyun,Başlayanlar),0,32) == 1) { msg $chan Şuan oyunda sadece bir kişi dahil olmuştur ve oyun en az iki kişi ile oynanmaktadır. | return }
if $hget(Oyun,Durum) == 1 { msg $chan Soru ve cevap işlemi tamamlanmadıkça şişe tekrar çevrilemez! | return }
msg $chan 10Şişe dönüyor bekleyiniz..
var %tab = $hget(oyun,başlayanlar)
var %s = $numtok(%tab,32)
var %q = $token(%tab,$r(1,$(%s,2)),32)
var %a = $remtok(%tab,%q,32)
var %k = $token(%a,$r(1,$calc($(%s,2) -1)),32)
msg $chan 4 %q soracak ---> 2 %k cevap verecek.
hadd -m Oyun Durum 1
hadd -m Oyun SoruNick %q
hadd -m Oyun SoruCevap %k
.$+(timer,soru) 1 180 sıfırla $chan
}
if $1 == !s {
if $hget(Oyun,Durum) != 1 { msg $chan !s ve !c komutları şişe çevrilmeden kullanılamaz. | return }
if (!$istok($hget(Oyun,SoruNick),$nick,32)) { msg $chan Sadece 4 $hget(Oyun,SoruNick) 1soru sorabilir ve 2 $hget(Oyun,SoruCevap) 1cevap verebilir. | return }
if $hget(Oyun,Soruldu) == 1 { msg $chan Sadece bir defa soru sorabilirsiniz. | return }
if !$2 { msg $chan Sorunuzu tam olarak belirtiniz. | return }
else { $+(timer,soru) 1 180 sıfırla $chan | msg $chan 4Soru - $hget(Oyun,SoruNick) : $2- | hadd -m Oyun Soruldu 1 } }
if $1 == !c {
if $hget(Oyun,Durum) != 1 { msg $chan !s ve !c komutları şişe çevrilmeden kullanılamaz. | return }
if (!$istok($hget(Oyun,SoruCevap),$nick,32)) { msg $chan Sadece 4 $hget(Oyun,SoruNick) 1soru sorabilir ve 2 $hget(Oyun,SoruCevap) 1cevap verebilir. | return }
if $hget(Oyun,Soruldu) != 1 { msg $chan Sorunuz henüz sorulmadı, lütfen bekleyiniz. | return }
if !$2 { msg $chan Cevapınızı tam olarak belirtiniz. | return }
else {
$+(timer,soru) off
msg $chan 2Cevap - $hget(Oyun,SoruCevap) : $2-
msg $chan Soru ve cevap işlemi tamamlandı, şişeyi tekrar çevirebilirsiniz.
hdel -ms Oyun SoruNick
hdel -ms Oyun SoruCevap
hadd -ms Oyun Durum 0
hadd -ms Oyun Soruldu 0
}
}
if $1 == !oyuncular {
if !%oyuncular. [ $+ [ $chan ] ] {
inc -u120 %oyuncular. [ $+ [ $chan ] ]
if ($token($hget(oyun,başlayanlar),0,32) == $null) { msg $chan Oyuna dahil olan hiç kimse yoktur. | return }
msg $chan 5 $replace($hget(oyun,başlayanlar),$chr(32),$+($chr(32),-,$chr(32))) şuan oyundadır.
}
else {
msg $chan 5!oyuncular komutunu sürekli kullanamazsınız. ( 2 dakikada bir defa oyuncular listelenir. )
}
}
if $1 == !dis {
if $nick !isop $chan && $nick !ishop $chan { msg $chan !dis ve !reset komutunu sadece kanal yetkilileri kullanabilir. | return }
if !$2 { msg $chan Lütfen diskalifiye edeceğiniz nicki belirtiniz. Kullanımı : !dis nick | return }
if ($token($hget(oyun,başlayanlar),0,32) == $null) { msg $chan Şuan oyun listesinde kimse bulunmamaktadir. | return }
if (!$istok($hget(Oyun,Başlayanlar),$2,32)) { msg $chan $2 Oyuncular listesinde bulunmamaktadir. | return }
var %. $remtok($hget(oyun,Başlayanlar),$2,32)
hdel -ms Oyun Başlayanlar
hadd -ms Oyun Başlayanlar %.
msg $chan 2 $2 1nicki, 4 $nick 1tarafından oyundan diskalifiye edildi ve 10 dakika boyunca !varim komutuyla oyuna dahil olamayacak.
inc -u600 %disc. [ $+ [ $2 ] ]
if ($istok($hget(Oyun,SoruNick),$2,32)) {
msg $chan Oyun sıfırlandı, şişeyi tekrar çevirebilirsiniz.
hdel -ms Oyun SoruNick
hdel -ms Oyun SoruCevap
hadd -ms Oyun Durum 0
hadd -ms Oyun Soruldu 0
$+(timer,soru) off
return
}
if ($istok($hget(Oyun,SoruCevap),$2,32)) {
msg $chan Oyun sıfırlandı, şişeyi tekrar çevirebilirsiniz.
hdel -ms Oyun SoruNick
hdel -ms Oyun SoruCevap
hadd -ms Oyun Durum 0
hadd -ms Oyun Soruldu 0
$+(timer,soru) off
return
}
}
if $1 == !reset {
if $nick !isop $chan && $nick !ishop $chan { msg $chan !dis ve !reset komutunu sadece kanal yetkilileri kullanabilir. | return }
else {
msg $chan Oyun sıfırlanmıştır. !varım komutu ile oyuna tekrar dahil olup, şişeyi çevirebilirsiniz.
hdel -ms Oyun Başlayanlar
hdel -ms Oyun SoruNick
hdel -ms Oyun SoruCevap
hadd -ms Oyun Durum 0
hadd -ms Oyun Soruldu 0
$+(timer,soru) off
unset %disc.*
unset %oyuncular*
}
}
}

on *:quit: {
if ($istok($hget(Oyun,Başlayanlar),$nick,32)) {
var %. $remtok($hget(oyun,Başlayanlar),$nick,32)
hdel -ms Oyun Başlayanlar
hadd -ms Oyun Başlayanlar %.
msg #Sisecevir 2 $nick oyundan ayrıldı.
if ($istok($hget(Oyun,SoruNick),$nick,32)) {
msg #Sisecevir Oyun sıfırlandı, şişeyi tekrar çevirebilirsiniz.
hdel -ms Oyun SoruNick
hdel -ms Oyun SoruCevap
hadd -ms Oyun Durum 0
hadd -ms Oyun Soruldu 0
$+(timer,soru) off
return
}
if ($istok($hget(Oyun,SoruCevap),$nick,32)) {
msg #Sisecevir Oyun sıfırlandı, şişeyi tekrar çevirebilirsiniz.
hdel -ms Oyun SoruNick
hdel -ms Oyun SoruCevap
hadd -ms Oyun Durum 0
hadd -ms Oyun Soruldu 0
$+(timer,soru) off
return
}
}
}
on *:part:#Sisecevir: {
if $nick == $me {
hdel -ms Oyun Başlayanlar
hdel -ms Oyun SoruNick
hdel -ms Oyun SoruCevap
hadd -ms Oyun Durum 0
hadd -ms Oyun Soruldu 0
$+(timer,soru) off
unset %disc.*
unset %oyuncular*
}
if ($istok($hget(Oyun,Başlayanlar),$nick,32)) {
var %. $remtok($hget(oyun,Başlayanlar),$nick,32)
hdel -ms Oyun Başlayanlar
hadd -ms Oyun Başlayanlar %.
msg #Sisecevir 2 $nick oyundan ayrıldı.
if ($istok($hget(Oyun,SoruNick),$nick,32)) {
msg #Sisecevir Oyun sıfırlandı, şişeyi tekrar çevirebilirsiniz.
hdel -ms Oyun SoruNick
hdel -ms Oyun SoruCevap
hadd -ms Oyun Durum 0
hadd -ms Oyun Soruldu 0
$+(timer,soru) off
return
}
if ($istok($hget(Oyun,SoruCevap),$nick,32)) {
msg #Sisecevir Oyun sıfırlandı, şişeyi tekrar çevirebilirsiniz.
hdel -ms Oyun SoruNick
hdel -ms Oyun SoruCevap
hadd -ms Oyun Durum 0
hadd -ms Oyun Soruldu 0
$+(timer,soru) off
return
}
}
}
on *:nick: {
if ($istok($hget(Oyun,Başlayanlar),$nick,32)) {
var %. $remtok($hget(oyun,Başlayanlar),$nick,32)
hdel -ms Oyun Başlayanlar
hadd -ms Oyun Başlayanlar %.
hadd -ms Oyun Başlayanlar $hget(Oyun,Başlayanlar) $newnick
msg #Sisecevir 2 $nick oyundan ayrıldı.
msg #Sisecevir 4 $newnick oyuna dahil oldu.
if ($istok($hget(Oyun,SoruNick),$nick,32)) {
hadd -ms Oyun SoruNick $newnick
}
if ($istok($hget(Oyun,SoruCevap),$nick,32)) {
hadd -ms Oyun SoruCevap $newnick
}
}
}
on *:kick:#: {
if $knick == $me {
hdel -ms Oyun Başlayanlar
hdel -ms Oyun SoruNick
hdel -ms Oyun SoruCevap
hadd -ms Oyun Durum 0
hadd -ms Oyun Soruldu 0
$+(timer,soru) off
unset %disc.*
unset %oyuncular*
}
var %. $remtok($hget(oyun,Başlayanlar),$knick,32)
hdel -ms Oyun Başlayanlar
hadd -ms Oyun Başlayanlar %.
msg #Sisecevir 2 $knick oyundan atıldı.
if ($istok($hget(Oyun,SoruNick),$knick,32)) {
msg #Sisecevir Oyun sıfırlandı, şişeyi tekrar çevirebilirsiniz.
hdel -ms Oyun SoruNick
hdel -ms Oyun SoruCevap
hadd -ms Oyun Durum 0
hadd -ms Oyun Soruldu 0
$+(timer,soru) off
return
}
if ($istok($hget(Oyun,SoruCevap),$knick,32)) {
msg #Sisecevir Oyun sıfırlandı, şişeyi tekrar çevirebilirsiniz.
hdel -ms Oyun SoruNick
hdel -ms Oyun SoruCevap
hadd -ms Oyun Durum 0
hadd -ms Oyun Soruldu 0
$+(timer,soru) off
return
}
}
alias sıfırla {
hdel -ms Oyun SoruNick
hdel -ms Oyun SoruCevap
hadd -ms Oyun Durum 0
hadd -ms Oyun Soruldu 0
msg $1 Süre zaman aşımına uğradı, 3 dakika içersinde soru cevap tamamlanmadığından oyun sıfırlanmıştır. Şişeyi tekrar çevirebilirsiniz.
}
alias hs {
if (!$1) {
var %1 = 1
while ($hget(%1)) { echo -: TABLO: $v1 | inc %1 }
}
var %1 = 1
while ($hget($1,%1).item) {
echo -a Tablo: $hget($1) - ITEM: $v1 - DATA: $hget($1,%1).data
inc %1
}
}
on *:start:{
emailaddr mIRCBiz@
fullname Şişe Cevirmece Botu
nick SiseCevir
anick SiseCevir1
server irc.mIRCBiz.Com:6667
}
on *:connect:{
if $server == irc.mIRCBiz.Com {
hfree -sw *
oper opernick operpass
nickserv ghost SiseCevir nickşifresi
nickserv release SiseCevir nickşifresi
join 0,0
nick SiseCevir
nickserv identify nickşifresi
.timer 1 2 join #Sisecevir
}
}
Bu bölümleri kendi sunucunuza göre ayarlayınız,

Kod:
on *:start:{
emailaddr Hatay@
fullname Şişe Cevirmece Botu
nick SiseCevir
anick SiseCevir1
server irc.tatliyer.Net:6667
}
on *:connect:{
if $server == irc.tatliyer.Net {
hfree -sw *
oper opernick operpass
nickserv ghost SiseCevir nickşifresi
nickserv release SiseCevir nickşifresi
join 0,0
nick SiseCevir
nickserv identify nickşifresi
.timer 1 2 join #Sisecevir
}
}
İstediğim kodu anlatmak için oyunu oynuyormuş gibi yaparak anlatıcam.

#SiseCevir kanalına girdim
<Optik> !varim - yazdım ve oyuna dahil oldum.
<%SiseCevir> Optik oyuna dahil oldu.
<Optik> !yokum - yazdığımda ise oyundan ayrılmış olacağım.
<%SiseCevir> Optik oyundan ayrıldı.

!cevir - komutu X bir kişi tarafından yazılabilir ve bu komut yazıldığında.
<Turk> !cevir
<%SiseCevir> Optik soracak ---> Turk cevap verecek.

<Optik> !s Nerelisin?
<%SiseCevir> Soru - Optik : Nerelisin?
<Turk> !c Ankara
<%SiseCevir> Cevap - Turk : Ankara?
<%SiseCevir> Soru ve cevap işlemi tamamlandı, tekrar çevrilebilir.

Bundan sonra tekrar şişe çevrilecek. Ve oyun aynen böyle devam edecek.
Ama şimdi işin püf noktaları. !cevir yazıldı. Soru soracak ve cevap verecek nick açıklandı.
Soru sorulmuyorsa yada cevap verilmiyorsa,
Yani soru soracak yada cevap verecek nick away olmuş ve kanala bakmıyorsa.
!cevir tekrar çalışmayacak.

Örneğin;

<Lale> !cevir
<%SiseCevir> Optik soracak ---> Turk cevap verecek.
<Optik> !s Nerelisin?
<%SiseCevir> Soru - Optik : Nerelisin?
<Kerim> !cevir
<%SiseCevir> Soru ve cevap işlemi tamamlanmadıkça tekrar çevrilemez!

Bunu demeli. Çünkü oyun dönerken aptalın biri tekrar !cevir kesin yazar.
O yüzde bunu kapatıcaz. Yani soru ve cevap alınmadıkça !cevir çalışmayacak.
Ve dediğim gibi soruyu soran yada cevap verek away ise.
Kanalda % - @ - & yada ~ prefixe sahip birisi !reset yazdığında oyun sıfırlanmalı.
Böylece hem away olanları reset ile engellemiş olacağız. Hemde oyun oynanırken tekrar !cevir komutunu yasaklamış olacağız.

<@KamiL> !reset
<%SiseCevir> Oyun sıfırlandı, tekrar çevrilebilir.Gibi...

!oyuncular - Yazıldıgında ise oyundaki nickler listelenecek.
<Optik> !oyuncular
<%SiseCevir> Kamil
<%SiseCevir> Lale
<%SiseCevir> Optik
<%SiseCevir> Turk
<%SiseCevir> Kerim
Gibi...

Toplam olarak kullanılacak komutlar :
!cevir ve !çevir : ikiside şişenin dönmesini sağlayacak.
!varim ve !varım : Oyuna dahil olmak için kullanulacak.
!yokum : Oyundan ayrılmak için kullanılacak.
!reset : Kanaldaki yetkili kişiler oyunu sıfırlayacak. (% @ & ~)
!oyuncular : Oyuna !varım diyen ve dahil olan oyuncular listelenecek.

Ve oyuncuları sadece !varım diyenler arasından periyodik olarak belirleyecek. 
!yokum diyince seçilecekler listesinden çıkacak. Yani sürekli aynı kişiler değil. Oyuncular arasından dağıtacak sürekli. 
Bir önemli yer daha. Soruyu soracak ve cevap verecek nick aynı olmamalı. Bu çakışmanın engellenmesi lazım.

Son olarak, kalandan part edince yada quit edince listeden otomatik olarak !varım diyen çıkmalı.
<%SiseCevir> Optik oyundan ayrıldı.
Gibi...

- Oyunda kullanılacak komutlar -

A) Oyuncuların kullanabileceği komutlar

1) !varım veya !varim : Oyuna dahil olmanızı sağlar.
2) !yokum : Oyundan ayrılmanızı sağlar.
3) !cevir veya !çevir : Oyunun başlamasını sağlar.
4) !s sorunuz : Soru sormanızı sağlar.
5) !c cevabınız : Cevap vermenizi sağlar.
6) !oyuncular : Oyucuların listesini verir.

B) Yetkililerin kullanabileceği komutlar ( % - @ - & - ~ )

1) !dis nick : Bir oyuncuyu 10 dakika boyunca diskalifiye etmenizi sağlar.
2) !reset : Oyunu resetlemenizi sağlar. (Oyuncu listesini, diskalifiyeli nickleri temizler ve oyunu başa alır.)

------------------------------------------------------------------------------------------------------------------------------------------------------------
Soru soracak ve cevap verecek nickler !oyuncular listesindeki nickler arasından karma olarak hiç bir düzen içermeden seçilmektedir. Yani oyuna dahil olan oyuncu sayısına orantılı olarak size uzun süre sırada gelmeyedebilir, sürekli sizin nickinizde çıkabilir. Şansınıza yani. Son olarak nick çakışmasıda olmayacaktır yani soru soran ve cevap veren nick aynı anda denk gelmeyecektir.
------------------------------------------------------------------------------------------------------------------------------------------------------------


mIRC'dede alt+r yapınız ve en alt kısımda yukardakı kod'ları kendi sunucunuza göre ayarlayınız

Yorum Gönder

Daha yeni Daha eski