Problème sur un code

cs_Grandia Messages postés 4 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 15 juin 2007 - 12 juin 2007 à 18:54
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 - 15 juin 2007 à 17:37
Bonjour :)

Voilà, je viens de faire une petite remote suivi d'un alias, et j'ai quelques soucis ! On peut dire que ça fonctionne qu'à moitié (et encore...) :

on 1:TEXT:!grenade*:#:{
  dec %totalgrenades [ $+ [ $nick ] ] 1
  set %attaquegrenade [ $+ [ $nick ] ] $r(1,2)
  set %degatsgrenade [ $+ [ $nick ] ] $r(200,500)
  if (%attaquegrenade [ $+ [ $nick ] ] == 1) {
    .msg $chan �2;�3;9,1Une �3;7,1grenade �3;9,1est lancé par�3;4,1 $nick �3;9,1sur�3;4,1 $2 �3;9,1!
    .timercoupsun 1 5 .msg $chan �2;�3;13,1Dégats causés sur�3;4,1 $2 �3;13,1:�3;3,1 %degatsgrenade [ $+ [ $nick ] ] �3;13,1PV !
    dec %pv $2 %degatsgrenade [ $+ [ $nick ] ]
    .fingrenade
  }
  if (%attaquegrenade [ $+ [ $nick ] ] == 2) {
    .msg $chan �2;�3;9,1Une �3;7,1grenade �3;9,1est lancé par�3;4,1 $nick �3;9,1sur�3;4,1 $2 �3;9,1!
    .timercoupsdeux 1 5 .msg $chan �2;�3;13,1Dégats causés sur�3;4,1 $2 �3;13,1:�3;3,1 %degatsgrenade [ $+ [ $nick ] ] �3;13,1PV !
    dec %pv $2 %degatsgrenade [ $+ [ $nick ] ]
    .fingrenade
  }
}



alias fingrenade {
  unset %attaquegrenade [ $+ [ $nick ] ]
  unset %degatsgrenade [ $+ [ $nick ] ]
  if (%pv $2 < 1) {
    .timerend 1 5 .msg $chan �2;�3;4,1Fin de partie pour $2 qui n'a plus de points de vie !
    unset %pv $2
    unset %totalgrenades [ $+ [ $nick ] ]
  }
  else {
    halt
  }
}


En bref, %attaquegrenade represente la phrase qui sera lancé et défini par le $r(1,2).
             %degatsgrenade represente les dégats causés au hasard entre 200 et 500.
             %totalgrenades represente le nombre de grenades possédées par le joueur qui lance la commande.

Pour finir : cela fonctionne (ou du moins je veux que cela fonctionne comme ceci) :
!grenade "pseudo"
. Le joueur donc agit sur $2, les dégats sont causés à $2, etc...

Merci de votre aide

5 réponses

cs_Grandia Messages postés 4 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 15 juin 2007
12 juin 2007 à 18:55
Ah j'oubliais !

Dans l'alias, on vérifie que les pv (%pv $2) sont bien supérieurs à 0. Si oui : halt, si non : fin de partie :)
0
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
12 juin 2007 à 19:49
Tu devrais utilisé des variables local quand tu le peux :
on *:text:!grenade*:#:{
;si le nick que l'on donne dans $2 n'est pas sur le salon, on le dit :
if ($2 !ison $chan) msg $chan $2 n'est pas sur le salon
else {
;on décrémente le nombre de grenade du $nick :
dec $+(%,totalgrenades,$nick)
;on stock seulement pdt la durée du script le nombre $r de pv
set -l $+(%degatsgrenade,$nick) $r(200,500)
;les deux msg ( j'ai viré les if car les msg étaient les mêmes )
.msg $chan �2;�3;9,1Une �3;7,1grenade �3;9,1est lancé par�3;4,1 $nick �3;9,1sur�3;4,1 $2 �3;9,1!
.timercoupsun 1 5 .msg $chan �2;�3;13,1Dégats causés sur�3;4,1 $2 �3;13,1:�3;3,1 $($+(%,degatsgrenade,$nick),2) �3;13,1PV !
;on décrémente le nombre de pv du joueur $2
dec $+(%pv,$2) $($+(%,degatsgrenade,$nick),2)
;s'il n'a plus de pv :
if ($($+(%pv,$2),2)) <= 0) {
;on msg et on unset les variable des pv et du reste de grenade de $2 ( et non de $nick )
.timerend 1 5 .msg $chan �2;�3;4,1Fin de partie pour $2 qui n'a plus de points de vie !
 unset $+(%,pv,$2) $+(%,totalgrenades,$2)
  }
 }
}

j'ai modifié et corriger, lis les commentaires (en rouge).
0
cs_Grandia Messages postés 4 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 15 juin 2007
12 juin 2007 à 20:06
Tout cela est en effet bien mieux ! Merci
0
cs_Grandia Messages postés 4 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 15 juin 2007
15 juin 2007 à 16:39
Argh non j'ai encore un soucis

Je vous montre le nouveau code ici et vous éxplique ensuite son fonctionnement :

on *:TEXT:!grenade*:#:{
  set %degats [ $+ [ $nick ] ] $r(200,500)
  .timergrendaun 1 1 .msg $chan $read(Textes/grenades.txt)
  .timergrenadedeux 1 5 .msg $chan �2;�3;0,1Tu perds�3;13,1 %degats�3;4,1 [ $+ [ $nick ] ] �3;0,1!
  dec %pv [ $+ [ $2 ] ] %degats
}

on *:TEXT:!grenade*:#:{ Il sagit de taper en fait !grenade "pseudo". Cette commande doit servir à agir sur une personne et non pas sur soi-même (correcte ?).
set %degats $+ $nick $r(200,500) Ici je veut définir combien de pv va perdre le "pseudo" cîble, entre 200 et 500 donc.
.timergrendaun 1 1 .msg $chan $read(Textes/grenades.txt) Pas de soucis ici, au bout de 1 seconde, un méssage aléatoire est balancé sur le salon.
.timergrenadedeux 1 5 .msg $chan �2;�3;0,1Tu perds�3;13,1 %degats�3;4,1 [ $+ [ $2 ] ] �3;0,1! Ici donc, un méssage est lancé sur le salon au bout de 5 secondes précisant le nombre de pv perdu au "pseudo" cîble. (Pas correcte).
dec %pv [ $+ [ $2 ] ] %degats Et enfin, les pvs sont éffectivement retirer au "pseudo" cîble. (Correcte ?).

Voilà donc ce que je veux faire ! Agir par la commande !grenade "pseudo" sur un "pseudo" cîble, afficher les deux méssages correctement, et decrementer son bon nombre de pv.
Hors ici, ça me retire que 1 pv au lieu du nombre défini par %degat [ $+ [ $nick ] ], et, le méssage qui apparait est le suivant :

( "Nom_du_bot" ) Tu perds ! <<<< il manque le nombre de pv perdu par la cîble.

En ésperant avoir été assez clair dans ce que je veux faire, j'aimerais avoir une correction fonctionnelle des lignes qui peuvent flancher, afin que cela me serve d'éxemple pour mes futures commandes quis eront toutes sous ce style.

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
15 juin 2007 à 17:37
Tes deux evenement sont exactement de la même forme, aucun interet, il faut faire :

on *:text:!grenade*:#:{
var %n = $iif($2,$2 perd,Tu pers) ,%d $r(200,500)
.timer 1 1 msg $chan $read(Textes/grenades.txt)
.timer 1 5 .msg $chan %n %d pv
dec $+(%,pv,$iif($2,$2,$nick)) %d
}
0