Jeu de yams

Soyez le premier à donner votre avis sur cette source.

Snippet vu 21 928 fois - Téléchargée 27 fois

Contenu du snippet

Jeu de yams sur irc pour un joueur sur le général.
Tapez !yams pour lancer le jeu puis suivez les instructions...
(!lancer pour lancer les dés, !garde suivi de la valeur des dés que l'on veut garder après avoir lancé)
Tapez !end pour stopper le jeu.
Je conseille d'ajouter ce code à un bot de jeux comme les quizz etc

Source / Exemple :


on 1:start:{
  /finyams
}
alias finyams {
  /set %yams off
  /unset %ynb?
  /unset %joueuryams
  /unset %possible
  /unset %yde?
  /unset %yetape
  /unset %minimum
  /unset %maximum
  /unset %ptyams
  /unset %ptsuite
  /unset %degarde
  /unset %lancer
  /unset %des
  /unset %desrechange
  /unset %pld
  /unset %salonyams
  /unset %ptbrelan
  /unset %ptfull
  /unset %ptcarre
  /unset %ptyams
  /unset %ptsuite
  /unset %debrel
  /unset %defull
  /unset %decarre
  /unset %ready
  /unset %bonusbonus
  /unset %nbgard
  /unset %foire
  /unset %derreur
  /unset %fig?
}
alias delsuite {
  var %delete = $findtok(%possible,%ydec,1,44)
  /set %possible $deltok(%possible,%delete,44) 
  if (%possible != $null) {
    /msg $chan Retape !lancer pour faire un nouveau lancer, $nick
    /msg $chan Je rapelle les figures qu'il te reste à faire : %possible
    /set %yetape lancer
  }     
  if (%possible == $null) {
    /msg $chan Tu as fait tous tes lancers
    var %colonne = $calc(%ynb1 + %ynb2 + %ynb3 + %ynb4 + %ynb5 + %ynb6)
    if (%colonne > 62) {
      /set %bonusbonus 37
      /msg $chan Tu obtient un bonus de 37 car la somme des 1, 2, 3, 4, 5 et 6 est supérieure à 63 !
    }
    var %scoreyams = $calc(%colonne + %minimum + %maximum + %ptyams + %ptsuite + %ptbrelan + %ptfull + %ptcarre + %bonusbonus)
    /msg $chan Ton score est donc de : %scoreyams
    /finyams
    var %ancienscore = $readini(memoireyams,$gettok($nick,1,124),bestscore)
    if (%ancienscore < %scoreyams) {
      /msg $chan Tu as battu ton record $nick ! Il était de %ancienscore points
      /writeini -n memoireyams $gettok($nick,1,124) bestscore %scoreyams
    }
    if (%ancienscore == %scoreyams) {
      msg $chan Tu as fait exactement le même score que ton record !
    }
    if (%ancienscore == %scoreyams) {
      /msg $chan Dommage, tu n'as pas battu ton record...
    }
    while (%lignevues < 20) {
      inc %lignevues
      if ($gettok($read(topyams.txt,%lignevues),4,32) < %scoreyams) {
      }
    }
    var %ligne = 1
    var %limite = $lines(topyams.txt)  
    if (%limite == 0) {
      /write topyams.txt 1) $nick avec %scoreyams points
    }
    else {
      while (%ligne <= %limite) {
        if ($gettok($read(topyams.txt,%ligne),4,32) < %pt) {
          /write -il $+ %ligne topyams.txt new) $nick avec %scoreyams points
          /write -dl21 topyams.txt
          var %numero = 1
          inc %limite
          while (%numero <= %limite) {
            var %pseudo = $gettok($read(topyams.txt,%numero),2,32)
            var %points = $gettok($read(topyams.txt,%numero),4,32)
            /write -l $+ %numero topyams.txt %numero $+ ) %pseudo avec %scoreyams points
            inc %numero
          }
          /break
        }
        if ((%ligne == %limite) && (%limite < 20)) {
          /write topyams.txt $calc( %limite + 1 ) $+ ) $nick avec %scoreyams points
          /halt 
        }
        inc %ligne
      }
    }
    /msg $chan Le jeu du yams est maintenant arrêté
  }
  /unset %ready
  /unset %de?
  /unset %degarde
  /unset %lancer
}
alias lancer {
  inc %lancer
  /msg $chan Les dés sont lancés...
  if (%yde1 !isin %degarde) {
    /set %yde1 $rand(1,6)
    var %eff = $findtok(%degarde,%yde1,1,44)
    /set %degarde $deltok(%degarde,%eff,44)	
  }
  if (%yde2 !isin %degarde) {
    /set %yde2 $rand(1,6)
    var %eff = $findtok(%degarde,%yde2,1,44)
    /set %degarde $deltok(%degarde,%eff,44)	
  }
  if (%yde3 !isin %degarde) {
    /set %yde3 $rand(1,6)
    var %eff = $findtok(%degarde,%yde3,1,44)
    /set %degarde $deltok(%degarde,%eff,44)	
  }
  if (%yde4 !isin %degarde) {
    /set %yde4 $rand(1,6)
    var %eff = $findtok(%degarde,%yde4,1,44)
    /set %degarde $deltok(%degarde,%eff,44)	
  }
  if (%yde5 !isin %degarde) {
    /set %yde5 $rand(1,6)
    var %eff = $findtok(%degarde,%yde5,1,44)
    /set %degarde $deltok(%degarde,%eff,44)	
  }
  /msg $chan Résultats : %yde1 , %yde2 , %yde3 , %yde4 et %yde5
}
alias prepgard {
  /unset %des
  var %place = 1 
  /set %des $instok(%des,%yde1,%place,44)	
  inc %place
  /set %des $instok(%des,%yde2,%place,44)
  inc %place
  /set %des $instok(%des,%yde3,%place,44)	
  inc %place
  /set %des $instok(%des,%yde4,%place,44)
  inc %place
  /set %des $instok(%des,%yde5,%place,44)	
  /set %desrechange %des
}
alias kelfig {
  /set %yde5 $gettok(%des,5,44)	
  if ((%yde1 == %yde2) && (%yde1 == %yde3) && (%yde1 == %yde4) && (%yde1 == %yde5)) {
    /set %ready $addtok(%ready,yams,44)   
  }
  if ((%yde1 != %yde2) && (%yde1 != %yde3) && (%yde1 != %yde4) && (%yde1 != %yde5) && (%yde2 != %yde3) && (%yde2 != %yde4) && (%yde2 != %yde5) && (%yde3 != %yde4) && (%yde3 != %yde5) && (%yde4 != %yde5) && (%yde1 != 1)) {
    /set %ready $addtok(%ready,suite,44) 
  }
  if ((%yde1 != %yde2) && (%yde1 != %yde3) && (%yde1 != %yde4) && (%yde1 != %yde5) && (%yde2 != %yde3) && (%yde2 != %yde4) && (%yde2 != %yde5) && (%yde3 != %yde4) && (%yde3 != %yde5) && (%yde4 != %yde5) && (%yde5 != 6)) {
    /set %ready $addtok(%ready,suite,44) 
  }
  if ((%yde1 == %yde2) && (%yde1 == %yde3)) {
    /set %figbrelan ok
    /set %ready $addtok(%ready,brelan,44)
    /set %debrel  %yde1
    if (%yde4 == %yde5) {
      /set %ready $addtok(%ready,full,44)
      /set %defull %yde4
    }
  }
  if ((%yde2 == %yde3) && (%yde2 == %yde4)) {
    /set %ready $addtok(%ready,brelan,44) 
    /set %debrel  %yde2
    if (%yde1 == %yde5) {
      /set %ready $addtok(%ready,full,44) 
      /set %defull %yde1
    }
  }
  if ((%yde5 == %yde4) && (%yde5 == %yde3)) {
    /set %ready $addtok(%ready,brelan,44) 
    /set %debrel  %yde5
    if (%yde2 == %yde1) {
      /set %ready $addtok(%ready,full,44) 
      /set %defull %yde1
    }
  }
  if ((%yde1 == %yde2) && (%yde1 == %yde3) && (%yde1 == %yde4)) {
    /set %ready $addtok(%ready,carre,44) 
    /set %decarre %yde1
  }
  if ((%yde5 == %yde4) && (%yde5 == %yde3) && (%yde5 == %yde2)) {
    /set %ready $addtok(%ready,carre,44) 
    /set %decarre %yde5
  }
}
alias yapas {
  /msg $chan Tu n'as pas de %ydec , donc cela te ferait zéro point pour la catégorie %ydec . Tu es sûr ? ( oui / non )
  /set %yetape yapas
}
;---------------------------------------------------------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------------------------------------------------------
On 1:text:*:#:{
  if ($strip($1) == !garde) {
    if ($nick == %joueuryams) {
      if (%yetape == garde) {
        /unset %degarde
        /unset %pld
        /unset %nbgard
        /set %des %desrechange
        /unset %foire 
        /unset %derreur
        if ($strip($2) == $null) {
          /msg $chan Tu n'as pas indiqué quels dés tu gardes (exemple: !garde 1 1 3 5). Tape !lancer si tu ne veux garder aucun dé
        }
        else {
          /set %pld 2
          /set %foire 1
          if ($strip($2)) {
            if ($strip($2) isin %des) {
              /set %degarde $strip($2)
              var %del = $findtok(%des,$strip($2),1,44)
              /set %des $deltok(%des,%del,44)
              inc %nbgard
            }
            else {
              /set %derreur $instok(%derreur,$strip($2),%foire,44)
              inc %foire
            }
          }
          if ($strip($3)) {
            if ($strip($3) isin %des) {
              /set %degarde $instok(%degarde,$strip($3),%pld,44)	
              inc %pld
              var %del = $findtok(%des,$strip($3),1,44)
              /set %des $deltok(%des,%del,44)
              inc %nbgard
            }
            else {
              /set %derreur $instok(%derreur,$strip($3),%foire,44)
              inc %foire
            }
          }
          if ($strip($4)) {
            if ($strip($4) isin %des) {
              /set %degarde $instok(%degarde,$strip($4),%pld,44)	
              inc %pld
              var %del = $findtok(%des,$strip($4),1,44)
              /set %des $deltok(%des,%del,44)
              inc %nbgard
            }
            else {
              /set %derreur $instok(%derreur,$strip($4),%foire,44)
              inc %foire
            }
          }
          if ($strip($5)) {
            if ($strip($5) isin %des) {
              /set %degarde $instok(%degarde,$strip($5),%pld,44)	
              inc %pld
              var %del = $findtok(%des,$strip($5),1,44)
              /set %des $deltok(%des,%del,44)
              inc %nbgard
            }
            else {
              /set %derreur $instok(%derreur,$strip($5),%foire,44)
              inc %foire
            }
          }
          if ($strip($6)) {
            if ($strip($6) isin %des) {
              /set %degarde $instok(%degarde,$strip($6),%pld,44)	
              inc %pld
              var %del = $findtok(%des,$strip($6),1,44)
              /set %des $deltok(%des,%del,44)
              inc %nbgard
            }
            else {
              /set %derreur $instok(%derreur,$strip($6),%foire,44)
              inc %foire
            }
          }
          if (%derreur) {
            /msg $chan Tu ne peux pas garder les dés de valeur : %derreur car tu ne les as pas ! Redis moi en tapant !garde quels dés tu gardes. Pour l'instant, aucun dé n'est gardé
            /halt
          }
          if (%nbgard < 5) {
            /msg $chan Tu as donc choisi de garder les dés %degarde et de relancer les dés %des . Tape !lancer si tu as choisi ou retape !garde pour modifier ton choix
          }
          if (%nbgard == 5) {
            /msg $chan Si tu gardes tous les dés, tu ne feras plus de lancer avant d'avoir choisi quelle figure tu veux. Tu es sûr de vouloir tout garder ? (répondre par : oui / non )
            /set %yetape ttgard  
          }
        }
      }
      else {
        /msg $chan Ce n'est pas le moment de choisir quels dés garder. 
      }
    }
  }
  elseif ($strip($1) == !yams) {
    if (%yams == off) {
      /set %yams on
      /set %joueuryams $nick
      /set %salonyams $chan
      /msg $chan Le jeu du yams est lancé. Seul $nick peut jouer
      var %ancienscore = $readini(memoireyams,$gettok($nick,1,124),bestscore)
      if (%ancienscore == $null) {
        /msg $chan Soit j'ai oublié ton précédent score, soit c'est la première fois que tu joue, $nick , non ?
      }
      else {
        /msg $chan Ton meilleur score est actuellement de %ancienscore points $nick
      }
      /set %possible 1,2,3,4,5,6,minimum,maximum,yams,suite,brelan,carre,full
      /msg $chan Je rapelle les figures que tu dois faire au cours de la partie : %possible
      /msg $chan Tape !lancer pour lancer les dés
      /set %yetape lancer
    }
    else {
      if ($chan == %salonyams) {
        /msg $chan Le jeu du yams est déjà en cours ici
      }
      else {
        /msg $chan Le jeu du yams est déjà en cours sur le salon %salonyams
      }
    }
  }
  elseif ($strip($1) == !end) {
    if ((%yams == on) && ($chan == %salonyams)) {
      if (($nick == %master) || ($nick isop $chan) || ($nick == %joueuryams)) {
        /finyams
        /msg $chan Le jeu du yams est maintenant arrêté
      }
      else {
        /msg $chan Seul un op ou celui qui joue au yams peut arrêter le jeu 
      }
    }
    else { 
      /msg $chan Le jeu du yams n'est pas en marche
    }
  }
  elseif ($strip($1) == !lancer) {
    if ($chan == %salonyams) {
      if ((%yams == on) && ($nick == %joueuryams)) {
        if ((%yetape == lancer) || (%yetape == garde)) { 
          /unset %ydec
          if (%lancer == $null) {
            /lancer
            /prepgard
            /set %yetape garde
            /msg $chan Alors, quels dés gardes-tu ? Tape !garde pour choisir en donnant la valeur des dés que tu gardes (exemple: !garde 5 2 2 1) 
            /msg $chan Tape !lancer lorsque tu as fait ton choix ou si tu ne veux rien garder    
          }
          elseif (%lancer == 1) {
            /lancer
            /prepgard
            /msg $chan Alors, quels dés gardes-tu ? Tape !garde pour choisir en donnant la valeur des dés que tu gardes (exemple: !garde 5 2 2 1) 
          }
          elseif (%lancer == 2) {
            /lancer
            /prepgard
            /set %des $sorttok(%des,44,n)
            /set %yde1 $gettok(%des,1,44)	
            /set %yde2 $gettok(%des,2,44)	
            /set %yde3 $gettok(%des,3,44)	
            /set %yde4 $gettok(%des,4,44)	
            /set %yde5 $gettok(%des,5,44)	
            /kelfig
            /set %yetape figure
            /msg $chan Alors, pour quelle catégorie utilises-tu ce lancer ?
          }
          elseif (%lancer == 3) {
            /msg $chan Tu as déjà fait tes trois lancers
          }
        }
      }
      elseif (%yams == off) {
        /msg $chan Le jeu du yams n'est pas en marche
      }
      elseif ((%yams == on) && (%yetape != lancer)) {
        /msg $chan Tu ne peux pas faire de lancer pour l'instant, ce n'est pas le moment
      }
    }
    else {
      /msg Pour lancer le jeu du yams, il faut d'abord taper !yams
    }
  }
  else {
    if ($chan == %salonyams) {
      if ((%yetape == ttgard) && ($nick == %joueuryams)) {
        if ($strip($1) == oui) {
          /set %des %desrechange
          /set %des $sorttok(%des,44,n)
          /set %yde1 $gettok(%des,1,44)	
          /set %yde2 $gettok(%des,2,44)	
          /set %yde3 $gettok(%des,3,44)	
          /set %yde4 $gettok(%des,4,44)
          /set %yde5 $gettok(%des,5,44)
          /kelfig
          /set %yetape figure
          /msg $chan Alors, pour quelle catégorie utilises-tu ce lancer ?
        }
        elseif ($strip($1) == non) {
          /set %yetape garde
          /msg $chan Ok, tu peux donc rechoisir quels dés tu garde en tapant !garde
        }
      }
      elseif ((%yetape == yapas) && ($nick == %joueuryams)) {
        if ($strip($1) == oui) {
          /msg $chan Ok, tu as donc zéro points pour la catégorie %ydec
          /set % $+ pt $+ %ydec 0
          /delsuite
        }
        elseif ($strip($1) == non) {
          /set %yetape figure
          /msg $chan Ok, rechoisis donc une autre figure
        }
      }
      elseif ((%yetape == figure) && ($nick == %joueuryams)) {
        /set %ydec $strip($1)
        if  (%ydec isnum) {
          if (%ydec isin %possible) {
            /msg $chan Ok, ce lancer sera pour les %ydec
            if (%yde1 == %ydec) {
              inc %result
            }
            if (%yde2 == %ydec) {
              inc %result
            }
            if (%yde3 == %ydec) {
              inc %result
            }
            if (%yde4 == %ydec) {
              inc %result
            }
            if (%yde5 == %ydec) {
              inc %result
            }
            var %resultfinal = $calc(%result * %ydec)
            /msg $chan Donc  %resultfinal points  pour les %ydec
            /set % $+ ynb $+  %ydec %resultfinal
            /unset %result
            /delsuite
          }
          else {
            /msg $chan Tu ne peux faire valoir ce lancer que pour %possible
          }
        }
        elseif (%ydec == minimum) {
          if (%ydec isin %possible) {
            var %tempomin = $calc(%yde1 + %yde2 + %yde3 + %yde4 + %yde5 + %yde6)
            /msg $chan La somme des dés est égale %tempomin
            /set %minimum $calc(30 - %tempomin)
            /msg $chan Le maximum possible est de 30. 30 moins %tempomin =  %minimum points 
            /delsuite
          }
          else {
            /msg $chan Tu ne peux faire valoir ce lancer que pour %possible
          }
        }
        elseif (%ydec == maximum) {
          if (%ydec isin %possible) {
            /set %maximum $calc(%yde1 + %yde2 + %yde3 + %yde4 + %yde5 + %yde6)
            /msg $chan La somme des dés est égale %maximum , tu as  %maximum points  pour la catégorie Maximum
            /delsuite
          }
          else {
            /msg $chan Tu ne peux faire valoir ce lancer que pour %possible
          }
        }
        elseif (%ydec == yams) {
          if (%ydec isin %ready) {
            if (%ydec isin %possible) {
              var %bonusyams = $calc(%yde1 * 5)
              /set %ptyams $calc(50 + %bonusyams)
              /msg $chan Oh yeah ! Tu as un yams ! Tu gagnes donc 50 points pour la figure et %bonusyams car tu as fait cinq %yde1 donc :  %ptyams points 
              /delsuite
            }
            else {
              /msg $chan Tu ne peux faire valoir ce lancer que pour %possible
            }
          }
          else { 
            if (%ydec isin %possible) {
              /yapas
            }
            else {
              /msg $chan Tu ne peux faire valoir ce lancer que pour %possible
            }
          }
        }
        elseif (%ydec == suite) {
          if (%ydec isin %ready) {
            if (%ydec isin %possible) {
              /msg $chan En effet, tu as une suite : tu gagnes 50 points.
              /set %ptsuite 50
              /delsuite
            }
            else {
              /msg $chan Tu ne peux faire valoir ce lancer que pour %possible
            }
          }
          else { 
            if (%ydec isin %possible) {
              /yapas
            }
            else {
              /msg $chan Tu ne peux faire valoir ce lancer que pour %possible
            }
          }
        }
        elseif (%ydec == brelan) {
          if (%ydec isin %ready) {
            if (%ydec isin %possible) {
              var %bonusbrelan = $calc(%debrel * 3)
              /set %ptbrelan $calc(10 + %bonusbrelan)
              /msg $chan En effet, tu as un brelan : tu gagnes 10 points pour la figure et %bonusbrelan car tu as fait trois %debrel donc :  %ptbrelan points 
              /delsuite
            }
            else {
              /msg $chan Tu ne peux faire valoir ce lancer que pour %possible
            }
          }
          else { 
            if (%ydec isin %possible) {
              /yapas
            }
            else {
              /msg $chan Tu ne peux faire valoir ce lancer que pour %possible
            }
          }
        }
        elseif (%ydec == full) {
          if (%ydec isin %ready) {
            if (%ydec isin %possible) {
              var %bonusfull = $calc((%debrel * 3) + (%defull * 2))
              /set %ptfull $calc(30 + %bonusfull)
              /msg $chan En effet, tu as un full : tu gagnes 30 points pour la figure et %bonusfull car tu as fait trois %debrel et deux %defull donc :  %ptfull points 
              /delsuite
            }
            else {
              /msg $chan Tu ne peux faire valoir ce lancer que pour %possible
            }
          }
          else {
            if (%ydec isin %possible) {
              /yapas
            }
            else {
              /msg $chan Tu ne peux faire valoir ce lancer que pour %possible
            }
          }
        }
        elseif ((%ydec == carre) || (%ydec == carré)) {
          /set %ydec carre
          if (%ydec isin %ready) {
            if (carre isin %possible) {
              var %bonuscarre = $calc(%decarre * 4)
              /set %ptcarre $calc(30 + %bonuscarre)
              /msg $chan En effet, tu as un carré : tu gagnes 30 points pour la figure et %bonuscarre car tu as fait quatre %decarre donc :  %ptcarre points 
              /delsuite
            }
            else {
              /msg $chan Tu ne peux faire valoir ce lancer que pour %possible
            }
          }
          else { 
            if (carre isin %possible) {
              /yapas
            }
            else {
              /msg $chan Tu ne peux faire valoir ce lancer que pour %possible
            }
          }
        }
      }
    }
  }
}

Conclusion :


J'ai créé ce code il y a deja pas mal de temps, et par fénéantise je l'ai abandonné. Je comptais le configurer pour que l'on puisse jouer en pv ou a deux en même temps sur le général, créer une petite règle du jeu que le bot envoie en pv, créer un top 10 et ajouter des couleurs. Si quelqu'un veut reprendre le projet j'aimerai bien qu'il me le signale. Il y a peut etre quelques beug comme au niveau de l'enregistrement des scores, mais ils ne gênent pas, je crois, le bon déroulement du jeu.
PS : je sais, il y a beaucoup de variables mais j'ai commencé comme ça et j'ai pas eu le courage de tout changer...

A voir également

Ajouter un commentaire Commentaires
SteveJones
Messages postés
8
Date d'inscription
vendredi 1 décembre 2000
Statut
Membre
Dernière intervention
20 novembre 2010

5 mai 2009 à 12:47
Pourquoi les variables pour enregistrer les scores ne fonctionnent pas. c'est quand même dommage. si quelqu'un pouvait prendre le temps d'expliquer, ça serait sympa. merci
SteveJones
Messages postés
8
Date d'inscription
vendredi 1 décembre 2000
Statut
Membre
Dernière intervention
20 novembre 2010

4 mai 2009 à 12:55
Je viens d'installer le YAms mais j ai un petit souci. Quand je lance le jeu (!yams) il me dit qu'une partie est en cours sur le salon. Donc je fais !end et là il me dit que le jeu n est pas en marche. Quelqu'un peut il m aider la dessus car du coup je n'arrive pas à le lancer. Merci
cs_jacoti
Messages postés
3
Date d'inscription
jeudi 21 août 2008
Statut
Membre
Dernière intervention
23 novembre 2008

23 nov. 2008 à 17:50
Bonjour

Si quelqu'un peut mettre ce jeus en multi joueur alors la cool et bravo

@ ++++ er merci
minerbe
Messages postés
217
Date d'inscription
dimanche 17 juin 2007
Statut
Membre
Dernière intervention
13 février 2012

27 oct. 2007 à 20:56
Bien bien mais alors vraiment mais vraiment trop gros, reste a voir si sa marche mais quand tu te dit que tu as plus de 550 lignes a c/c et que tu dois t'amuser a toute faire ouch. Et en plus si tu fait sa pour du foin c'est encore plus ragent xD.

Sinon sa va essaye d'améliorer ;)
cs_wims
Messages postés
2466
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
1 août 2010
1
24 sept. 2005 à 20:10
les . servent pas forcement a rien , cela depend de la command.
tout les if (%var $null) ca devient if (!%var) et if (%var! $null) ca devient if (%var)
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.