ForunsBB.com

Sempre à frente... agora na Web 2.1!
Data/Hora: Quinta Set 09, 2010 4:06 pm

Todos os horários são GMT



Esclarece as tuas dúvidas de informática em tempo real no nosso chat!


Regras do fórum


Coloca apenas ARTIGOS teus ou TUTORIAIS teus. Notícias e perguntas serão apagadas.



Criar Novo Tópico Responder a este Tópico  [ 1 mensagem ] 
Autor Mensagem
 Assunto da Mensagem: [mIRC Bot] Jogo - Quiz
MensagemEnviado: Segunda Set 03, 2007 12:33 pm 
Offline
Level 0
Level 0

Registado: Quinta Abr 19, 2007 3:39 pm
Mensagens: 47
Introdução: Este é um jogo para mIRC Bot que consiste em lançar perguntas de N em N tempo e espera pela resposta correcta, quando detecta a resposta correcta atribui os pontos da questão ao nick em causa e lança nova pergunta após N segundos. Quando não se acerta na pergunta, o jogo dá a resposta ao fim do tempo válido e lança nova pergunta. Basicamente funciona como o conhecido jogo GamaGame, mas aqui só há uma hipótese de resposta.

Code:

Código:
;===================================================
;Aliases e Identificadores
;===================================================

alias quiz {
  ;Sintaxe: $quiz(<linha>,<pqa>)
  ;Função: Retornar os pontos ou questão ou resposta da linha definida

  if ($2 == p) { var %p = 1 }
  elseif ($2 == q) { var %p = 2 }
  elseif ($2 == a) { var %p = 3 }

  return $gettok($read($quizdb, $1),%p,45)
}

alias quizp {
  ;Sintaxe: $quizp(<pqai>)
  ;Função: Retornar o prefixo para a mensagem definida

  if ($1 == p) { return » Correcto: }
  elseif ($1 == q) { return » Pergunta: }
  elseif ($1 == a) { return » Resposta: }
  elseif ($1 == i) { return » Info: }
}

alias quiztime {
  ;Sintaxe: $quiztime(<bqn>)
  ;Função: Retornar o tempo definido (em segundos)

  if ($1 == b) { var %return = %quiz.begin }
  elseif ($1 == q) { var %return = %quiz.questions }
  elseif ($1 == n) { var %return = %quiz.new }

  return $iif(%return,%return,0)
}

alias quizrank {
  ;Sintaxe: $quizrank(<nick>,<pq>)
  ;Função: Retornar os pontos ou total de questões correctas do nick definido

  var %read = $read($quiztop, s, $1)

  if ($2 == p) { var %p = 2 }
  elseif ($2 == q) { var %p = 3 }

  return $gettok($read($quiztop, $readn),%p,32)
}

alias quizdb {
  ;Sintaxe: $quizdb
  ;Função: Retornar a localização da base de dados

  return $findfile($mircdir,quizdb.txt,1).shortfn
}

alias quiztop {
  ;Sintaxe: $quiztop
  ;Função: Retornar a localização do ficheiro que contém o ranking dos nicks

  return $findfile($mircdir,quiztop.txt,1).shortfn
}

alias quizrand {
  ;Sintaxe: /quizrand <#canal>
  ;Função: Iniciar o ciclo de perguntas e respostas (Caso ninguém acerte, dá a resposta ao fim de N segundos)

  :rand
  var %rand = $rand(1, $lines($quizdb))

  if (%rand != %quiz.last) {
    set %quiz.last %rand
    set -u60 %quiz.wait OK
    msg $1 $quizp(q) $quiz(%rand,q) $chr(91) $+(,$quiz(%rand,p),) pontos $chr(93)
    .timerQUIZ $+ $1 1 $quiztime(q) quizans $1 false %rand
  }
  else { goto rand }
}

alias quizans {
  ;Sintaxe: /quizans <#canal> <true|false> <linha> [nick]
  ;Função: Verificar se o tempo de resposta expirou ou se a resposta foi dada, iniciando nova pergunta

  if ($2 == true) {
    var %points = $quiz($3,p), %total = $calc($quizrank($4,p) + %points), %questions = $quizrank($4,q)
    var %total = $iif(%total > 0,%total,%points), %questions = $iif(%questions > 0,%questions,0), %read = $read($quiztop, s, $4)

    if ($readn) { .write -l $+ $readn $quiztop $4 %total $calc(%questions + 1) }
    else { .write $quiztop $4 %total 1 }

    msg $1 $quizp(p) $4 Acertou! - Pontos: %points - Total: %total
    msg $1 $quizp(i) Será colocada uma nova questão dentro de $+(,$quiztime(n),) segundos.
  }
  elseif ($2 == false) { msg $1 $quizp(a) $quiz($3,a) - Nova questão dentro de $+(,$quiztime(n),) segundos. }

  .timerQUIZ $+ $1 1 $quiztime(n) quizrand $1
}

;===================================================
;Eventos
;===================================================

on 100:text:!quiz *:#:{
  ;Sintaxe: !quiz <on|off>
  ;Função: Ligar ou desligar o Quiz

  if ($2 == on) {
    if ($timer(QUIZ $+ #)) { msg # $quizp(i) Está a decorrer um Quiz no canal. De momento não é possivel iniciar outro. }
    else {
      if (!%quiz.begin) || (!%quiz.questions) || (!%quiz.new) {
        msg # $quizp(i) Impossível iniciar Quiz. É necessário configurar os tempos correctamente.
        halt
      }

      msg # $quizp(i) O Quiz será iniciado no canal dentro de $+(,$quiztime(b),) segundos.
      .timerQUIZ $+ # 1 $quiztime(b) quizrand #
    }
  }
  elseif ($2 == off) {
    if (!$timer(QUIZ $+ #)) { msg # $quizp(i) Não está a decorrer nenhum Quiz no canal. Faça !quiz on para começar. }
    else {
      .timerQUIZ $+ # off
      msg # $quizp(i) O Quiz foi terminado no canal.
    }
  }
}

on *:text:!quiztop*:#:{
  ;Sintaxe: !quiztop<N> [perguntas]
  ;Função: Apresentar os N primeiros nicks do ranking do Quiz.
  ;Notas: O campo <N> vai de 1 a 10. O top pode ser por pontos ou perguntas correctas

  var %total = $remove($1,!quiztop)

  if (%total isnum) && (!$2 || $2 == perguntas) {
    var %col = $iif(!$2,2,3)

    if ($lines($quiztop) == 0) || (!$exists($quiztop)) {
      msg # $quizp(i) Não há Registos de Nicks no Ranking.
      halt
    }

    filter -ffcteu %col 32 $quiztop $quiztop

    var %c = 1
    while (%c <= %total) {
      var %l = $read($quiztop, %c)

      if ($gettok(%l,%col,32) > 0) {
        var %top = %top $+(,%c,.) $gettok(%l,1,32) ( $+ $gettok(%l,%col,32) $+ )
      }

      if (%c == 10) || (!%l) {
        $iif(%top,msg # QuizTop $+ %total $+ : %top)
        break
      }

      inc %c
    }
  }
  else { msg # $quizp(i) Sintaxe: !quiztopN [perguntas] }
}

on *:text:*:#:{
  ;Função: Verificar as respostas dadas

  if ($timer(QUIZ $+ #)) && (%quiz.wait) {
    var %ans1 = $strip($1-), %ans2 = $quiz(%quiz.last,a)
    if (%ans1 == %ans2) {
      unset %quiz.wait
      quizans # true %quiz.last $nick
    }
  }
}

;===================================================
;Menus que gerem o Quiz
;Local: Canal
;===================================================

menu channel {
  Jogo Quiz
  .$iif($timer(QUIZ $+ #),Desactivar Quiz,Activar Quiz):{
    if (!$timer(QUIZ $+ #)) {
      if (!%quiz.begin) || (!%quiz.questions) || (!%quiz.new) {
        echo -a $quizp(i) Por favor, configure os tempos de Quiz correctamente.
        halt
      }

      msg # $quizp(i) O Quiz será iniciado no canal dentro de $+(,$quiztime(b),) segundos.
      .timerQUIZ $+ # 1 $quiztime(b) quizrand #
    }
    else {
      .timerQUIZ $+ # off
      msg # $quizp(i) O Quiz foi terminado no canal.
    }
  }
  .-
  .Iniciar Jogo em
  ..$quiztime(b) segundos:/
  ..-
  ..Definir tempo:{
    var %secs = $?="Introduza o tempo para iniciar o Quiz:"
    if (%secs isnum) { set %quiz.begin %secs }
  }
  .-
  .Perguntas a cada
  ..$quiztime(q) segundos:/
  ..-
  ..Definir tempo:{
    var %secs = $?="Introduza o tempo de intervalo entre as perguntas:"
    if (%secs isnum) { set %quiz.questions %secs }
  }
  .Nova pergunta após
  ..$quiztime(n) segundos:/
  ..-
  ..Definir tempo:{
    var %secs = $?="Introduza o tempo de intervalo entre as perguntas:"
    if (%secs isnum) { set %quiz.new %secs }
  }
  .-
  .Resetar Ranking:{
    var %reset = $input(Tem mesmo a certeza de que pretende resetar o Ranking?,yi,Confirmar)
    if (%reset) {
      .write -c $quiztop
      echo -a $quizp(i) Ranking do Quiz resetado.
    }
  }
}


Comandos:

Para usar no Canal:

- !quiz <on|off> (Activa ou desactiva o quiz, só para nicks com nível 100 no mIRC Bot)

- !quiztop<N> [perguntas] (Mostra o ranking do Quiz. O campo <N> vai de 1 a 10. O campo [perguntas] é opcional e serve para mostrar o ranking consoante o nº de perguntas correctas)

Menus do Jogo (Popups Canal):

1. Activar/Desactivar
2. Iniciar jogo em N segundos (Define o tempo - em segundos - para iniciar o jogo após a activação)
3. Perguntas a cada N segundos (Define o tempo - em segundos - que separa as perguntas que vão sendo lançadas)
4. Nova pergunta após N segundos (Define o tempo - em segundos - para lançar nova pergunta, quando se acerta numa resposta ou o tempo de resposta expira)
5. Resetar Ranking (Apaga todos os nicks do Ranking do Quiz)

Notas:

- Para instalar este jogo, basta copiar o código para os Remotes (Alt+R) do mIRC bot e garantir que os ficheiros quizdb.txt e quiztop.txt se encontram dentro da directoria do mIRC Bot (em qualquer lado).

- Para activar o Quiz através de um canal no IRC, é ncessário ter nível 100 no mIRC Bot. Para adicionar um nick para ligar/desligar o Quiz basta fazer no mIRC Bot o seguinte comando, /auser 100 <nick>

- As perguntas devem ser introduzidas manualmente no ficheiro quizdb.txt, ou seja, só a pessoa que controla o mIRC Bot pode manipular esta funcionalidade do jogo. Deixo aqui um exemplo de como deve ser a estrutura do ficheiro:

Código:
20-Nova versão do mIRC?-6.3
50-Melhor canal de mIRC Scripting?-#PTScripting
100-Autor do code?-[[SeA_MaStEr]]
50-O maior clube de Portugal?-Sporting


- Para iniciar o jogo é necessário ter os tempos definidos no menu do canal. Para aceder ao menus, basta clicar com o botão direito do rato no canal em causa e aceder ao menu Jogo Quiz e definir todos os tempos.

_________________
Hoje seamaster, Amanhã uma lenda..


Topo
   
 
Mostrar mensagens anteriores:  Ordenar por  
Criar Novo Tópico Responder a este Tópico  [ 1 mensagem ] 

Todos os horários são GMT


Quem está ligado

Utilizadores a navegar neste fórum: Nenhum utilizador registado e 1 visitante


Criar Tópicos: Proibído
Responder Tópicos: Proibído
Editar mensagens: Proibído
Apagar mensagens: Proibído
Enviar anexos: Proibído

Pesquisar por:
Ir para:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group. Color scheme by ColorizeIt.
Breast Enlargement | DVD rental | Breast Enlargement | Find jobs | Debt Help