Sohbet muhabbet sohbet, sohbet odası
reklam alanı reklam alanı

  • Konu İçeriğini Görebilmek İçin Lütfen Üye Olun. Aksi Takdirde İçeriği Göremezsiniz.

mIRC Şişe çevirme oyunu

admin

Forever mIRCX!
Yönetici
Yetkili
mIRCX Admin
Denetleyici
Katılım
16 Kas 2019
Mesajlar
343
Tepkime puanı
0
Puanları
16
Konum
public_html
Web sitesi
www.mircx.net

İtibar:

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 Mircx@
  fullname Şişe Cevirmece Botu
  nick SiseCevir
  anick SiseCevir1
  server irc.mircx.net:6667
}
on *:connect:{
  if $server == irc.mircx.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.
 
Üst Alt