sohbet

Ş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