Merhaba,
Soru-Cevap mantığınıza yardımcı olabilecek kısımları parçalar halinde paylaşayım:
on TEXT eventını
!start ile tetikleyin ve tetikleyen %nicki değer olarak atayın ki yanıt kısımlarında cevap veren nicki eşleştirme yapabilsin.Böylelikle 2. bir kişinin oyuna müdahelesini engellemiş olursunuz.
!start verildikten sonra
timer'e bağlı bir
ALIAS ile döngü oluşturmalısınız.Örneğin;
Kod:
on *:text:*:#kanal:{
if $1 == !start { alias1 | .timer 0 30 alias1 }
...devamı aşağıda
} Artık herşey bu alias1 mecrasında ilerleyecektir.alias1 yapınızı öyle bir dizayn etmelisiniz ki soruları istediğiniz txt belgesinden sırayla çekmeli,doğru veya yanlış cevaplar verilmesi halinde bile bu stratejiyi bozmayacak bir düzende ilerlemelidir.Örneğin;
Kod:
alias alias1 {
set %soruseçenek $r(1,2)
if %soruseçenek == 1 {
set %sorusatır $read(Soru1.txt)
set %sorucevap $token(%sorusatır,2,42)
msg %soruchan $token(%sorusatır,1,42)
msg %soruchan $chr(160) $chr(160)
.timerdifyipucu 1 10 msg %soruchan 2,7IPUCU:5 $ipucu(%sorucevap,20) $(|) msg %soruchan $chr(160) $chr(160) *
}
if %soruseçenek == 2 {
msg %soruchan $read(Soru2.txt)
msg %soruchan $chr(160) $chr(160)
.timerdifyipucu 1 10 msg %soruchan 2,7IPUCU:5 $ipucu(%sorucevap,10) $(|) msg %soruchan $chr(160) $chr(160)
}
} Sorumu buraya yazıyorum*cevabımı yıldızdan sonra yazıyorum
txt belgemde ekli olan soru*cevap şablonuma göre alias1 şu şekilde çalışır:
1 ile 2 rakamı arasında random olarak bir tercih yapar.Şayet tercihi 1 ise Soru1.txt metin belgesinden rastgele bir soru seçer.Soruyu kanala yazar ve 10 sn. sonra ipucu vermeye başlar.$ipucu(%sorucevap,20) ise cevabın %20'sini ipucu olarak sunar.
Şayet tercihi 2 ise Soru2.txt metin belgesinden rastgele bir soru seçer ve 10 sn sonra $ipucu(%sorucevap,10) cevabın %10'unu ipucu olarak sunar.
Gelelim ipucu (*) değerlendirmesi için gerekli olan aliasımıza:
Kod:
alias ipucu {
var %cnk = $round($calc((1-$2 /100)*$regex($1,/[^\*\s]/g)),0),%dify = $1,%n,%i = 1
while (%cnk) {
dec %cnk
$null($regex(dify,%dify,/([^\*\s])/g))
var %n = $regml(dify,$r(1,$regml(dify,0))).pos,%dify = $+($left(%dify,$calc(%n -1)),*,$right(%dify,- $+ %n))
}
return %dify
} BURAYA KADAR SORU-CEVAP ATAMA VE İPUCU SEÇENEKLERİMİZ alias1 AKIŞINDA SEYİR ETMEKTE.
Artık kanala gelen cevapların doğruluğunu test etmede ve puanlama sistemine geçebiliriz:
...devamı aşağıda Kod:
if ($1- == %sorucevap) {
if !$read(puanlar.txt,r,/^\Q $+ $nick $+ \E\s/) { write puanlar.txt $nick 10 }
else {
var %difi $readn
var %yeah = $calc($token($read(puanlar.txt,%difi),2,32) +10)
write $+(-l,%difi) puanlar.txt $nick %yeah
if %yeah == 100 { mode $chan +v $nick | msg $chan Tebrikler $nick 100 puanın oldu }
}
timerdify* off
msg $chan Tebrikler $nick Doğru yanıt: %sorucevap
unset %sorucevap
.timerdifyz 1 3 alias1 | .timerdify 0 33 alias1
} alias1 soruyu kanala yazarken aynı anda %sorucevap değerini atıyor,şayet sizin kanala yazdığınız %sorucevap ile örtüşüyorsa size Doğru cevap diyerek puan verecektir.3 sn sonra alias1 döngümüz başa gelecektir.
Ve hemen sonrasına 33 sn. sonunda kendini tazeleyen 2. bir alias1'i devreye alacaktır.Bu sistemde soruların yanıtları süre sonunda belirtilmemiştir ayrıca kanala sadece kendi yazdığınızın dikkate alınması ilavesi getirilmemiştir.
Bu değerleri kendinize göre ayarlayabilirsiniz.
Umarım düzeneğin faydası olmuştur.