xTrivia — File Browser

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

MaxiScaraQuick.mrc — 12.97 KB — Download this file

; MaxiMaxiScaraQuick

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

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

on 1:TEXT:!ferma MaxiQuick:%game_channel: {
  if (%MaxiScaraQuick_gioco == ON ) /fine_MaxiScaraQuick
}

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

on 1:TEXT:!lancia MaxiQuick*:%Game_Channel: {
  if (%MaxiScaraQuick_gioco != ON ) {
    set %game_channel $Chan
    set %mxq_nick_me $me
    set %mxq_punteggio $3
    if (%mxq_punteggio == $null) set %mxq_punteggio 200
    set %MaxiScaraQuick_gioco ON
    avvia_MaxiScaraQuick
  }
}

on 1:TEXT:*:?: {
  if (%MaxiScaraQuick_gioco == ON) {
    if (%mxq_manche_stato != ON) {
      msg $nick Nessuna manche in corso !
      goto esci_da_verifica_parola
    }
    set %mxq_temp_parola $1
    %mxq_temp_len = $len(%mxq_temp_parola)
    if (%mxq_temp_len < %mxq_len_manche) {
      msg $nick La lunghezza minima è %mxq_len_manche lettere !
      goto esci_da_verifica_parola
    }
    set %mxq_t 1
    while (%mxq_t <= %mxq_temp_len) {
      if ( $mid(%mxq_temp_parola,%mxq_t,1) !isin %mxq_riga_ [ $+ [ %mxq_t ] ] ) {
        msg $nick La parola %mxq_temp_parola non è presente nella griglia. Riprova !
        goto esci_da_verifica_parola
      }
      inc %mxq_t
    }
    set %mxq_r $read($scriptdirDictionary\ $+ italiano. [ $+ [ $left(%mxq_temp_parola,1) ] ],w,%mxq_temp_parola,1)
    if ($readn != 0) {
      if (%mxq_parola_manche_ [ $+ [ $nick ] ] != $null) {
        $remtok(%mxq_giocatori_manche,$nick,1,32)
        unset %mxq_parola_manche_ [ $+ [ $nick ] ]
      }
      %mxq_giocatori_manche = $addtok(%mxq_giocatori_manche,$nick,32)
      %mxq_parola_manche_ [ $+ [ $nick ] ] = %mxq_temp_parola 
      %mxq_parola = $lower(%mxq_temp_parola)
      %mxq_punti = 0
      %mxq_cont = 1
      while (%mxq_cont <= $len(%mxq_parola)) {
        %mxq_t_let = $mid(%mxq_parola,%mxq_cont,1)
        if (%mxq_t_let isin aeio) { %mxq_val = 2 }
        elseif (%mxq_t_let isin rst) { %mxq_val = 3 }
        elseif (%mxq_t_let isin lmn) { %mxq_val = 4 }
        elseif (%mxq_t_let isin bdfpu) { %mxq_val = 4 }
        elseif (%mxq_t_let isin cgv) { %mxq_val = 7 }
        elseif (%mxq_t_let == z) { %mxq_val = 8 }
        elseif (%mxq_t_let isin hq) { %mxq_val = 9 }
        elseif (%mxq_t_let isin jkwxy) { %mxq_val = 10 }
        else { %mxq_val = 0 }
        if (%mxq_cont == 7) { %mxq_val = %mxq_val * 5 }
        if (%mxq_cont == 8) { %mxq_val = %mxq_val * 6 }
        if (%mxq_cont == 9) { %mxq_val = %mxq_val * 7 }
        if (%mxq_cont == 10) { %mxq_val = %mxq_val * 8 }
        %mxq_punti = $calc(%mxq_punti + %mxq_val)
        inc %mxq_cont
      }
      %mxq_punti_parola_ [ $+ [ $nick ] ] = %mxq_punti
      if (%mxq_lunghezza == $null) { %mxq_lunghezza = 0 }
      if (%mxq_temp_len > %mxq_lunghezza ) { %mxq_lunghezza = %mxq_temp_len }
      msg $nick 9,2 Con la parola 8,2 %mxq_temp_parola 9,2 ottieni 8,2 %mxq_punti 9,2 punti. 
    }
    else {
      msg $nick Parola non presente nel mio dizionario
    }
    :esci_da_verifica_parola
    close -m $nick
  }
}

alias fine_gioco_MaxiScaraQuick {
  timermxq* OFF
  unset %MaxiScaraQuick*
  unset %mxq*
  halt
}

alias fine_MaxiScaraQuick {
  if (%MaxiScaraQuick_gioco == ON) {
    msg %game_channel 0,5 Gioco MaxiScaraQuick terminato! 
    timermxq* OFF
    unset %MaxiScaraQuick*
    unset %mxq*
    halt
  }
}

alias avvia_MaxiScaraQuick {
  if (%MaxiScaraQuick_gioco == ON) {
    if (%mxq_punteggio < 50) set %mxq_punteggio 50
    if (%mxq_punteggio > 1000) set %mxq_punteggio 1000
    msg %game_channel 9,1  MaxiScaraQuick  avviato 
    msg %game_channel 0,5 Punteggio da raggiungere:  %mxq_punteggio 
    msg %game_channel 0,2 Trovate una parola partendo dalla prima riga utilizzando una lettera per ogni riga. 
    set %mxq_manche_num 0
    /timermxq_1 1 10 /avvia_manche_MaxiScaraQuick
  }
}

alias avvia_manche_MaxiScaraQuick {
  if (%MaxiScaraQuick_gioco == ON) {
    genera_griglia_MaxiScaraQuick
    set %mxq_len_manche $rand(3,4)
    %mxq_riga_da_visualizzare_ [ $+ [ %mxq_len_manche ] ] = %mxq_riga_da_visualizzare_ [ $+ [ %mxq_len_manche ] ] 8,2 <-- lunghezza minima
    msg %game_channel 0,5 Tra 20 secondi la prossima manche 
    inc %mxq_manche_num
    /timermxq_1 1 25 /visualizza_griglia_MaxiScaraQuick
  }
}

alias genera_griglia_MaxiScaraQuick {
  if (%MaxiScaraQuick_gioco == ON) {
    %mxq_x = 1
    while (%mxq_x < 11) {
      %mxq_t = 1
      while (%mxq_t < 9) {
        %mxq_temp = $rand(a,z)
        %mxq_riga = %mxq_riga $+ [ $chr(32) ] $+ [ %mxq_temp ]
        %mxq_r = %mxq_r $+ [ %mxq_temp ]
        inc %mxq_t
      }
      %mxq_riga_da_visualizzare_ [ $+ [ %mxq_x ] ] = $upper(%mxq_riga)
      if (a isin %mxq_r) || (e isin %mxq_r) || (i isin %mxq_r) || (o isin %mxq_r) || (u isin $mxq_r) {
        %mxq_riga_ [ $+ [ %mxq_x ] ] = %mxq_r
        unset %mxq_r
        unset %mxq_riga
        inc %mxq_x
      }
      else {
        unset %mxq_r
        unset %mxq_riga
      }
    }
    %mxq_cont = 7
    while (%mxq_cont < 11) {
      %mxq_x_x = %mxq_cont - 2
      %mxq_riga_da_visualizzare_ [ $+ [ %mxq_cont ] ] = %mxq_riga_da_visualizzare_ [ $+ [ %mxq_cont ] ] 8,2 valore x %mxq_x_x 
      inc %mxq_cont
    }
  }
}

alias visualizza_griglia_MaxiScaraQuick {
  if (%MaxiScaraQuick_gioco == ON) {
    msg %game_channel 9,1 MaxiScaraQuick ... manche n°:  %mxq_manche_num 
    %mxq_t = 1
    while (%mxq_t < 11) {
      /timermxq_ [ $+ [ %mxq_t ] ] 1 %mxq_t /msg %game_channel 8,2 %mxq_riga_da_visualizzare_ [ $+ [ %mxq_t ] ] 
      inc %mxq_t
    }
    /timermxq_ [ $+ [ %mxq_t ] ] 1 %mxq_t /msg %game_channel 0,5 Scrivete la vostra parole in query a %mxq_nick_me 
    inc %mxq_t
    /timermxq_ [ $+ [ %mxq_t ] ] 1 %mxq_t /msg %game_channel 0,5 Per cambiarla riscrivetela. 
    inc %mxq_t
    /timermxq_ [ $+ [ %mxq_t ] ] 1 %mxq_t /manche_avviata_MaxiScaraQuick
  }
}

alias manche_avviata_MaxiScaraQuick {
  if (%MaxiScaraQuick_gioco == ON) {
    set %mxq_manche_stato ON
    msg %game_channel 9,1 Avete 8 80 9 secondi da adesso. 
    /timermxq_1 1 70 /msg %game_channel 9,1 Mancano solo 10 secondi... Sbrigatevi! 
    /timermxq_2 1 80 /fine_tempo_manche_MaxiScaraQuick
  }
}

alias fine_tempo_manche_MaxiScaraQuick {
  if (%MaxiScaraQuick_gioco == ON) {
    msg %game_channel 9,1 Manche %mxq_manche_num terminata! 
    %mxq_num_nick = $numtok(%mxq_giocatori_manche,32)
    if (%mxq_num_nick != 0) {
      %mxq_cont = 1
      while (%mxq_cont <= %mxq_num_nick) {
        %mxq_temp_nick = $gettok(%mxq_giocatori_manche, %mxq_cont ,32)
        msg %mxq_temp_nick 4 TEMPO SCADUTO ! 
        inc %mxq_cont
      }
    }
    set %mxq_manche_stato OFF
    /timermxq_1 1 5 /fine_manche_MaxiScaraQuick
  }
}

alias fine_manche_MaxiScaraQuick {
  if (%MaxiScaraQuick_gioco != ON) goto esci_da_fine_manche_MaxiScaraQuick
  msg %game_channel 9,1 Risultati manche: 
  %mxq_num_nick = $numtok(%mxq_giocatori_manche,32)
  if (%mxq_num_nick == 0) {
    /timermxq_1 1 2 /msg %game_channel 0,5 Nessuna parola trovata ! 
    %mxq_tempo = 5
  }
  else {
    /prepara_risultati_manche_MaxiScaraQuick
    %mxq_cont = 1
    while (%mxq_cont <= %mxq_num_nick) {
      %mxq_temp_nick = %mxq_cl_m_ [ $+ [ %mxq_cont ] ]
      %mxq_temp_parola = %mxq_parola_manche_ [ $+ [ %mxq_temp_nick ] ]
      %mxq_temp_punti = %mxq_punti_parola_ [ $+ [ %mxq_temp_nick ] ] 
      %mxq_t_punti = punti
      %mxq_temp_len = $len(%mxq_temp_parola)
      if (%mxq_temp_len == %mxq_lunghezza) {
        %mxq_temp_punti_tot = $calc(%mxq_temp_punti + 8)
        %mxq_t_punti = + 8 8,2 punti LUNGHEZZA per un totale di 4,2 %mxq_temp_punti_tot 8,2 punti
        if (%mxq_punti_velocita == %mxq_temp_nick) { 
          %mxq_temp_punti_tot = $calc(%mxq_temp_punti_tot + 0)
          %mxq_t_punti = + 8 8,2 punti LUNGHEZZA per un totale di 4,2 %mxq_temp_punti_tot 8,2 punti
        }
      }
      else {
        if (%mxq_punti_velocita == %mxq_temp_nick) { 
          %mxq_temp_punti_tot = $calc(%mxq_temp_punti + 0)
          ;%mxq_t_punti = + 4 8,2 punti LUNGHEZZA per un totale di 4,2 %mxq_temp_punti_tot 8,2 punti
        }
        else { 
          %mxq_temp_punti_tot = %mxq_temp_punti
        }
      }
      /timermxq_ [ $+ [ %mxq_cont ] ] 1 %mxq_cont /msg %game_channel 4,2 %mxq_temp_nick 8,2 con la parola 4,2 %mxq_temp_parola 8,2 ottiene 4,2 %mxq_temp_punti %mxq_t_punti 
      inc %mxq_cont
      %mxq_giocatori_partita = $addtok(%mxq_giocatori_partita,%mxq_temp_nick,32)
      %mxq_p_t = %mxq_punti_tot_ [ $+ [ %mxq_temp_nick ] ]
      if (%mxq_punti_tot_ [ $+ [ %mxq_temp_nick ] ] == $null) { %mxq_punti_tot_ [ $+ [ %mxq_temp_nick ] ] = 0 }
      %mxq_punti_tot_ [ $+ [ %mxq_temp_nick ] ] = $calc(%mxq_p_t + %mxq_temp_punti_tot)
    }
    %mxq_tempo = %mxq_cont + 5
    unset %mxq_parola*
    /prepara_classifica_MaxiScaraQuick
  }
  /timermxq_ [ $+ [ %mxq_tempo ] ] 1 %mxq_tempo /visualizza_classifica_MaxiScaraQuick
  :esci_da_fine_manche_MaxiScaraQuick
}

alias visualizza_classifica_MaxiScaraQuick {
  if (%MaxiScaraQuick_gioco != ON) goto esci_da_visualizza_classifica_MaxiScaraQuick
  %mxq_num_nick = $numtok(%mxq_giocatori_partita,32)
  if (%mxq_num_nick > 5 ) { %mxq_num_nick = 5 }
  /msg %game_channel 9,2 CLASSIFICA dopo 8,2 %mxq_manche_num 9,2 manche... 
  if (%mxq_num_nick == 0) {
    /msg %game_channel 9,2 1. ---------- 
    goto prepara_nuova_manche
  }
  %mxq_cont = 1
  while (%mxq_cont <= %mxq_num_nick) {
    inc %mxq_tempo
    %mxq_cl = %mxq_cl_ [ $+ [ %mxq_cont ] ]
    %mxq_punti_cl = %mxq_punti_tot_ [ $+ [ %mxq_cl ] ]
    /timermxq_ [ $+ [ %mxq_tempo ] ] 1 %mxq_tempo /msg %game_channel 9,2 %mxq_cont . 4,2 %mxq_cl 8,2 con punti 4,2 %mxq_punti_cl  
    inc %mxq_cont
  }
  if (%mxq_punti_tot_ [ $+ [ %mxq_cl_1 ] ] > %mxq_punteggio) {
    %mxq_tempo = %mxq_tempo + 10
    /timermxq_ [ $+ [ %mxq_tempo ] ] 1 %mxq_tempo /msg %game_channel 9,2 Gioco MaxiScaraQuick terminato ! 
    inc %mxq_tempo
    /timermxq_ [ $+ [ %mxq_tempo ] ] 1 %mxq_tempo /msg %game_channel 9,2 Il vincitore è 8,2 %mxq_cl_1 ! 
    inc %mxq_tempo
    /timermxq_ [ $+ [ %mxq_tempo ] ] 1 %mxq_tempo /fine_gioco_MaxiScaraQuick
  }
  :prepara_nuova_manche
  %mxq_tempo = %mxq_tempo + 10
  unset %mxq_lunghezza
  unset %mxq_giocatori_manche
  unset %mxq_punti_parola_*
  /timermxq_ [ $+ [ %mxq_tempo ] ] 1 %mxq_tempo /avvia_manche_MaxiScaraQuick
  :esci_da_visualizza_classifica_MaxiScaraQuick
}

alias prepara_risultati_manche_MaxiScaraQuick {
  if (%MaxiScaraQuick_gioco != ON) goto esci_da_prepara_risultati_manche_MaxiScaraQuick
  %mxq_cont = 1
  while (%mxq_cont <= %mxq_num_nick) {
    %mxq_cl_m_ [ $+ [ %mxq_cont ] ] = $gettok(%mxq_giocatori_manche, %mxq_cont ,32)
    if (%mxq_cont == 1) {
      %mxq_cl_m_1 = $gettok(%mxq_giocatori_manche,1,32)
      %mxq_punti_velocita = $gettok(%mxq_giocatori_manche,1,32)
    }
    else {
      %mxq_cont_x = %mxq_cont
      while (%mxq_cont_x > 1) {
        %mxq_cont_y = %mxq_cont_x - 1
        %mxq_cl_m_x = %mxq_cl_m_ [ $+ [ %mxq_cont_x ] ]
        %mxq_cl_m_y = %mxq_cl_m_ [ $+ [ %mxq_cont_y ] ]
        if ( %mxq_punti_parola_ [ $+ [ %mxq_cl_m_x ] ] < %mxq_punti_parola_ [ $+ [ %mxq_cl_m_y ] ] ) {
          %mxq_cl_m_ [ $+ [ %mxq_cont_y ] ] = %mxq_cl_m_x
          %mxq_cl_m_ [ $+ [ %mxq_cont_x ] ] = %mxq_cl_m_y
        }
        else {
          %mxq_cl_m_ [ $+ [ %mxq_cont_x ] ] = %mxq_cl_m_x
          %mxq_cont_x = 1
        }
        dec %mxq_cont_x
      }
    }
    inc %mxq_cont
  }
  :esci_da_prepara_risultati_manche_MaxiScaraQuick
}

alias prepara_classifica_MaxiScaraQuick {
  if (%MaxiScaraQuick_gioco != ON) goto esci_da_prepara_classifica_MaxiScaraQuick
  %mxq_num_nick = $numtok(%mxq_giocatori_partita,32)
  %mxq_cont = 1
  while (%mxq_cont <= %mxq_num_nick) {
    %mxq_cl_ [ $+ [ %mxq_cont ] ] = $gettok(%mxq_giocatori_partita, %mxq_cont ,32)
    if (%mxq_cont == 1) {
      %mxq_cl_1 = $gettok(%mxq_giocatori_partita,1,32)
    }
    else {
      %mxq_cont_x = %mxq_cont
      while (%mxq_cont_x > 1) {
        %mxq_cont_y = %mxq_cont_x - 1
        %mxq_cl_x = %mxq_cl_ [ $+ [ %mxq_cont_x ] ]
        %mxq_cl_y = %mxq_cl_ [ $+ [ %mxq_cont_y ] ]
        if ( %mxq_punti_tot_ [ $+ [ %mxq_cl_x ] ] > %mxq_punti_tot_ [ $+ [ %mxq_cl_y ] ] ) {
          %mxq_cl_ [ $+ [ %mxq_cont_y ] ] = %mxq_cl_x
          %mxq_cl_ [ $+ [ %mxq_cont_x ] ] = %mxq_cl_y
        }
        else {
          %mxq_cl_ [ $+ [ %mxq_cont_x ] ] = %mxq_cl_x
          %mxq_cont_x = 1
        }
        dec %mxq_cont_x
      }
    }
    inc %mxq_cont
  }
  :esci_da_prepara_classifica_MaxiScaraQuick
}