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...
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.