xTrivia — File Browser

xTriviav1.0 / xTriviav1.0 / xTriviaByRibellina / xtrivia / bot / Addons / Giochi / MegaQuick.mrc

MegaQuick.mrc — 12.49 KB — Download this file

; MegaQuick

on 1:TEXT:!valori:%game_channel: {
  if (%MegaQuick_gioco == ON) /msg %game_channel 11,2 Valori:8,2 a=2 b=8 c=10 d=8 e=2 f=8 g=10 h=14 i=2 j=16 k=16 l=6 m=6 n=6 o=2 p=8 q=14 r=4 s=4 t=4 u=8 v=10 w=16 x=16 y=16 z=12 
}

on 1:TEXT:!punti:%game_channel: {
  if (%MegaQuick_gioco == ON) {
    if (%mq_punti_tot_ [ $+ [ $nick ] ] != $null) {
      /msg $nick Hai totalizzato 4 %mq_punti_tot_ [ $+ [ $nick ] ] 
      close -m $nick
    }
  }
}

on 1:TEXT:!ferma MegaQuick:%game_channel: {
  if (%MegaQuick_gioco == ON ) /fine_MegaQuick
}

on 1:TEXT:!reset:%game_channel: {
  if (%MegaQuick_gioco == ON ) /fine_MegaQuick
}

on 1:TEXT:!lancia MegaQuick*:%Game_Channel: {
  if (%MegaQuick_gioco != ON ) {
    set %game_channel $Chan
    set %mq_nick_me $me
    set %mq_punteggio $3
    if (%mq_punteggio == $null) set %mq_punteggio 300
    set %MegaQuick_gioco ON
    avvia_MegaQuick
  }
}

on 1:TEXT:*:?: {
  if (%MegaQuick_gioco == ON) {
    if (%mq_manche_stato != ON) {
      msg $nick Nessuna manche in corso !
      goto esci_da_verifica_parola
    }
    set %mq_temp_parola $1
    %mq_temp_len = $len(%mq_temp_parola)
    if (%mq_temp_len < %mq_len_manche) {
      msg $nick La lunghezza minima è %mq_len_manche lettere !
      goto esci_da_verifica_parola
    }
    set %mq_t 1
    while (%mq_t <= %mq_temp_len) {
      if ( $mid(%mq_temp_parola,%mq_t,1) !isin %mq_riga_ [ $+ [ %mq_t ] ] ) {
        msg $nick La parola %mq_temp_parola non è presente nella griglia. Riprova !
        goto esci_da_verifica_parola
      }
      inc %mq_t
    }
    set %mq_r $read($scriptdirDictionary\ $+ italiano. [ $+ [ $left(%mq_temp_parola,1) ] ],w,%mq_temp_parola,1)
    if ($readn != 0) {
      if (%mq_parola_manche_ [ $+ [ $nick ] ] != $null) {
        $remtok(%mq_giocatori_manche,$nick,1,32)
        unset %mq_parola_manche_ [ $+ [ $nick ] ]
      }
      %mq_giocatori_manche = $addtok(%mq_giocatori_manche,$nick,32)
      %mq_parola_manche_ [ $+ [ $nick ] ] = %mq_temp_parola 
      %mq_parola = $lower(%mq_temp_parola)
      %mq_punti = 0
      %mq_cont = 1
      while (%mq_cont <= $len(%mq_parola)) {
        %mq_t_let = $mid(%mq_parola,%mq_cont,1)
        if (%mq_t_let isin aeio) { %mq_val = 2 }
        elseif (%mq_t_let isin rst) { %mq_val = 4 }
        elseif (%mq_t_let isin lmn) { %mq_val = 6 }
        elseif (%mq_t_let isin bdfpu) { %mq_val = 8 }
        elseif (%mq_t_let isin cgv) { %mq_val = 10 }
        elseif (%mq_t_let == z) { %mq_val = 12 }
        elseif (%mq_t_let isin hq) { %mq_val = 14 }
        elseif (%mq_t_let isin jkwxy) { %mq_val = 16 }
        else { %mq_val = 0 }
        if (%mq_cont == 7) { %mq_val = %mq_val * 2 }
        if (%mq_cont == 8) { %mq_val = %mq_val * 3 }
        if (%mq_cont == 9) { %mq_val = %mq_val * 4 }
        if (%mq_cont == 10) { %mq_val = %mq_val * 5 }
        if (%mq_cont == 11) { %mq_val = %mq_val * 6 }
        if (%mq_cont == 12) { %mq_val = %mq_val * 7 }
        %mq_punti = $calc(%mq_punti + %mq_val)
        inc %mq_cont
      }
      %mq_punti_parola_ [ $+ [ $nick ] ] = %mq_punti
      if (%mq_lunghezza == $null) { %mq_lunghezza = 0 }
      if (%mq_temp_len > %mq_lunghezza ) { %mq_lunghezza = %mq_temp_len }
      msg $nick 11,5 Con la parola 8,2 %mq_temp_parola 11,5 ottieni 8,2 %mq_punti 11,2 punti. 
    }
    else {
      msg $nick Parola non presente nel mio dizionario
    }
    :esci_da_verifica_parola
    close -m $nick
  }
}

alias fine_gioco_MegaQuick {
  timermq* OFF
  unset %MegaQuick*
  unset %mq*
  halt
}

alias fine_MegaQuick {
  if (%MegaQuick_gioco == ON) {
    msg %game_channel 14,5••• 11MegaQuick 14••• 0Terminato! 
    timermq* OFF
    unset %MegaQuick*
    unset %mq*
    halt
  }
}

alias avvia_MegaQuick {
  if (%MegaQuick_gioco == ON) {
    if (%mq_punteggio < 50) set %mq_punteggio 50
    if (%mq_punteggio > 1000) set %mq_punteggio 1000
    msg %game_channel 14,1••• 11MegaQuick 14••• 0 avviato! 
    msg %game_channel 0,5 Punteggio da raggiungere:  %mq_punteggio 
    msg %game_channel 0,2 Trovate una parola partendo dalla prima riga utilizzando una lettera per ogni riga. 
    set %mq_manche_num 0
    /timermq_1 1 10 /avvia_manche_MegaQuick
  }
}

alias avvia_manche_MegaQuick {
  if (%MegaQuick_gioco == ON) {
    genera_griglia_MegaQuick
    set %mq_len_manche $rand(3,5)
    %mq_riga_da_visualizzare_ [ $+ [ %mq_len_manche ] ] = %mq_riga_da_visualizzare_ [ $+ [ %mq_len_manche ] ] 8,2 <-- lunghezza minima
    msg %game_channel 0,5 Tra 20 secondi la prossima manche 
    inc %mq_manche_num
    /timermq_1 1 30 /visualizza_griglia_MegaQuick
  }
}
alias genera_griglia_MegaQuick {
  if (%MegaQuick_gioco == ON) {
    %mq_x = 1
    while (%mq_x < 13) {
      %mq_t = 1
      while (%mq_t < 16) {
        %mq_temp = $rand(a,z)
        %mq_riga = %mq_riga $+ [ $chr(32) ] $+ [ %mq_temp ]
        %mq_r = %mq_r $+ [ %mq_temp ]
        inc %mq_t
      }
      %mq_riga_da_visualizzare_ [ $+ [ %mq_x ] ] = $upper(%mq_riga)
      if (a isin %mq_r) || (e isin %mq_r) || (i isin %mq_r) || (o isin %mq_r) || (u isin $mq_r) {
        %mq_riga_ [ $+ [ %mq_x ] ] = %mq_r
        unset %mq_r
        unset %mq_riga
        inc %mq_x
      }
      else {
        unset %mq_r
        unset %mq_riga
      }
    }
    %mq_cont = 7
    while (%mq_cont < 13) {
      %mq_x_x = %mq_cont - 5
      %mq_riga_da_visualizzare_ [ $+ [ %mq_cont ] ] = %mq_riga_da_visualizzare_ [ $+ [ %mq_cont ] ] 8,2 valore x %mq_x_x 
      inc %mq_cont
    }
  }
}

alias visualizza_griglia_MegaQuick {
  if (%MegaQuick_gioco == ON) {
    msg %game_channel 11,1 Mega Quick ... manche n°:  %mq_manche_num 
    %mq_t = 1
    while (%mq_t < 13) {
      /timermq_ [ $+ [ %mq_t ] ] 1 %mq_t /msg %game_channel 8,2 %mq_riga_da_visualizzare_ [ $+ [ %mq_t ] ] 
      inc %mq_t
    }
    /timermq_ [ $+ [ %mq_t ] ] 1 %mq_t /msg %game_channel 11,1 Scrivete la vostra parole in query a %mq_nick_me 
    inc %mq_t
    /timermq_ [ $+ [ %mq_t ] ] 1 %mq_t /msg %game_channel 11,1 Per cambiarla riscrivetela. 
    inc %mq_t
    /timermq_ [ $+ [ %mq_t ] ] 1 %mq_t /manche_avviata_MegaQuick
  }
}

alias manche_avviata_MegaQuick {
  if (%MegaQuick_gioco == ON) {
    set %mq_manche_stato ON
    msg %game_channel 11,1 Avete 8 80 11 secondi da adesso. 
    /timermq_1 1 70 /msg %game_channel 11,1 Mancano solo 10 secondi... Sbrigatevi! 
    /timermq_2 1 80 /fine_tempo_manche_MegaQuick
  }
}

alias fine_tempo_manche_MegaQuick {
  if (%MegaQuick_gioco == ON) {
    msg %game_channel 11,1 Manche %mq_manche_num terminata! 
    %mq_num_nick = $numtok(%mq_giocatori_manche,32)
    if (%mq_num_nick != 0) {
      %mq_cont = 1
      while (%mq_cont <= %mq_num_nick) {
        %mq_temp_nick = $gettok(%mq_giocatori_manche, %mq_cont ,32)
        msg %mq_temp_nick 4 TEMPO SCADUTO ! 
        inc %mq_cont
      }
    }
    set %mq_manche_stato OFF
    /timermq_1 1 5 /fine_manche_MegaQuick
  }
}

alias fine_manche_MegaQuick {
  if (%MegaQuick_gioco != ON) goto esci_da_fine_manche_MegaQuick
  msg %game_channel 9,1 Risultati manche: 
  %mq_num_nick = $numtok(%mq_giocatori_manche,32)
  if (%mq_num_nick == 0) {
    /timermq_1 1 2 /msg %game_channel 0,5 Nessuna parola trovata ! 
    %mq_tempo = 5
  }
  else {
    /prepara_risultati_manche_MegaQuick
    %mq_cont = 1
    while (%mq_cont <= %mq_num_nick) {
      %mq_temp_nick = %mq_cl_m_ [ $+ [ %mq_cont ] ]
      %mq_temp_parola = %mq_parola_manche_ [ $+ [ %mq_temp_nick ] ]
      %mq_temp_punti = %mq_punti_parola_ [ $+ [ %mq_temp_nick ] ] 
      %mq_t_punti = punti
      %mq_temp_len = $len(%mq_temp_parola)
      if (%mq_temp_len == %mq_lunghezza) {
        %mq_temp_punti_tot = $calc(%mq_temp_punti + 4)
        %mq_t_punti = + 4 8,2 punti LUNGHEZZA per un totale di 11,2 %mq_temp_punti_tot 8,2 punti
        if (%mq_punti_velocita == %mq_temp_nick) { 
          %mq_temp_punti_tot = $calc(%mq_temp_punti_tot + 0)
          %mq_t_punti = + 4 8,2 punti LUNGHEZZA per un totale di 11,2 %mq_temp_punti_tot 8,2 punti
        }
      }
      else {
        if (%mq_punti_velocita == %mq_temp_nick) { 
          %mq_temp_punti_tot = $calc(%mq_temp_punti + 0)
          ;%mq_t_punti = + 4 8,2 punti LUNGHEZZA per un totale di 11,2 %mq_temp_punti_tot 8,2 punti
        }
        else { 
          %mq_temp_punti_tot = %mq_temp_punti
        }
      }
      /timermq_ [ $+ [ %mq_cont ] ] 1 %mq_cont /msg %game_channel 11,2 %mq_temp_nick 8,2 con la parola 11,2 %mq_temp_parola 8,2 ottiene 11,2 %mq_temp_punti %mq_t_punti 
      inc %mq_cont
      %mq_giocatori_partita = $addtok(%mq_giocatori_partita,%mq_temp_nick,32)
      %mq_p_t = %mq_punti_tot_ [ $+ [ %mq_temp_nick ] ]
      if (%mq_punti_tot_ [ $+ [ %mq_temp_nick ] ] == $null) { %mq_punti_tot_ [ $+ [ %mq_temp_nick ] ] = 0 }
      %mq_punti_tot_ [ $+ [ %mq_temp_nick ] ] = $calc(%mq_p_t + %mq_temp_punti_tot)
    }
    %mq_tempo = %mq_cont + 5
    unset %mq_parola*
    /prepara_classifica_MegaQuick
  }
  /timermq_ [ $+ [ %mq_tempo ] ] 1 %mq_tempo /visualizza_classifica_MegaQuick
  :esci_da_fine_manche_MegaQuick
}

alias visualizza_classifica_MegaQuick {
  if (%MegaQuick_gioco != ON) goto esci_da_visualizza_classifica_MegaQuick
  %mq_num_nick = $numtok(%mq_giocatori_partita,32)
  if (%mq_num_nick > 5 ) { %mq_num_nick = 5 }
  /msg %game_channel 11,5 CLASSIFICA dopo 8,2 %mq_manche_num 11,5 manche... 
  if (%mq_num_nick == 0) {
    /msg %game_channel 11,5 1. ---------- 
    goto prepara_nuova_manche
  }
  %mq_cont = 1
  while (%mq_cont <= %mq_num_nick) {
    inc %mq_tempo
    %mq_cl = %mq_cl_ [ $+ [ %mq_cont ] ]
    %mq_punti_cl = %mq_punti_tot_ [ $+ [ %mq_cl ] ]
    /timermq_ [ $+ [ %mq_tempo ] ] 1 %mq_tempo /msg %game_channel 11,5 %mq_cont . 11,2 %mq_cl 8,2 con punti 11,2 %mq_punti_cl  
    inc %mq_cont
  }
  if (%mq_punti_tot_ [ $+ [ %mq_cl_1 ] ] > %mq_punteggio) {
    %mq_tempo = %mq_tempo + 10
    /timermq_ [ $+ [ %mq_tempo ] ] 1 %mq_tempo /msg %game_channel 11,5 Gioco Mega Quick terminato ! 
    inc %mq_tempo
    /timermq_ [ $+ [ %mq_tempo ] ] 1 %mq_tempo /msg %game_channel 11,5 Il vincitore è 8,2 %mq_cl_1 ! 
    inc %mq_tempo
    /timermq_ [ $+ [ %mq_tempo ] ] 1 %mq_tempo /fine_gioco_MegaQuick
  }
  :prepara_nuova_manche
  %mq_tempo = %mq_tempo + 10
  unset %mq_lunghezza
  unset %mq_giocatori_manche
  unset %mq_punti_parola_*
  /timermq_ [ $+ [ %mq_tempo ] ] 1 %mq_tempo /avvia_manche_MegaQuick
  :esci_da_visualizza_classifica_MegaQuick
}

alias prepara_risultati_manche_MegaQuick {
  if (%MegaQuick_gioco != ON) goto esci_da_prepara_risultati_manche_MegaQuick
  %mq_cont = 1
  while (%mq_cont <= %mq_num_nick) {
    %mq_cl_m_ [ $+ [ %mq_cont ] ] = $gettok(%mq_giocatori_manche, %mq_cont ,32)
    if (%mq_cont == 1) {
      %mq_cl_m_1 = $gettok(%mq_giocatori_manche,1,32)
      %mq_punti_velocita = $gettok(%mq_giocatori_manche,1,32)
    }
    else {
      %mq_cont_x = %mq_cont
      while (%mq_cont_x > 1) {
        %mq_cont_y = %mq_cont_x - 1
        %mq_cl_m_x = %mq_cl_m_ [ $+ [ %mq_cont_x ] ]
        %mq_cl_m_y = %mq_cl_m_ [ $+ [ %mq_cont_y ] ]
        if ( %mq_punti_parola_ [ $+ [ %mq_cl_m_x ] ] < %mq_punti_parola_ [ $+ [ %mq_cl_m_y ] ] ) {
          %mq_cl_m_ [ $+ [ %mq_cont_y ] ] = %mq_cl_m_x
          %mq_cl_m_ [ $+ [ %mq_cont_x ] ] = %mq_cl_m_y
        }
        else {
          %mq_cl_m_ [ $+ [ %mq_cont_x ] ] = %mq_cl_m_x
          %mq_cont_x = 1
        }
        dec %mq_cont_x
      }
    }
    inc %mq_cont
  }
  :esci_da_prepara_risultati_manche_MegaQuick
}

alias prepara_classifica_MegaQuick {
  if (%MegaQuick_gioco != ON) goto esci_da_prepara_classifica_MegaQuick
  %mq_num_nick = $numtok(%mq_giocatori_partita,32)
  %mq_cont = 1
  while (%mq_cont <= %mq_num_nick) {
    %mq_cl_ [ $+ [ %mq_cont ] ] = $gettok(%mq_giocatori_partita, %mq_cont ,32)
    if (%mq_cont == 1) {
      %mq_cl_1 = $gettok(%mq_giocatori_partita,1,32)
    }
    else {
      %mq_cont_x = %mq_cont
      while (%mq_cont_x > 1) {
        %mq_cont_y = %mq_cont_x - 1
        %mq_cl_x = %mq_cl_ [ $+ [ %mq_cont_x ] ]
        %mq_cl_y = %mq_cl_ [ $+ [ %mq_cont_y ] ]
        if ( %mq_punti_tot_ [ $+ [ %mq_cl_x ] ] > %mq_punti_tot_ [ $+ [ %mq_cl_y ] ] ) {
          %mq_cl_ [ $+ [ %mq_cont_y ] ] = %mq_cl_x
          %mq_cl_ [ $+ [ %mq_cont_x ] ] = %mq_cl_y
        }
        else {
          %mq_cl_ [ $+ [ %mq_cont_x ] ] = %mq_cl_x
          %mq_cont_x = 1
        }
        dec %mq_cont_x
      }
    }
    inc %mq_cont
  }
  :esci_da_prepara_classifica_MegaQuick
}