AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 Petit problème sur une condition if

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
albisse
Utilisateur confirmé: Rang *


Messages : 231

MessageSujet: Petit problème sur une condition if    Ven 11 Mar 2016 - 17:57

Bonjour !
Et Re en quelque sorte , je me suis enfin décidé a rererere ... refaire un jeu mais je pense que celui la je vais le terminer ^^

Bon j'ai un problème , je veux faire un inventaire ( comme le post précédent tien ) mais j'ai un soucis , et un peut bizzard :/

Je vous explique , mon code est le suivant :
Code:
for (i=0 ; global.inv_max_capa >i ; i+=1){
    if ( global.inv_player[ i ] == 0 ){
        global.inv_player[ i ] = object_get_name(object_index);
        i = global.inv_max_capa;
    }
}

Bon je suis vraiment en train de faire le début , donc ne vous inquiétez pas hein Wink , bon ce que je vexu faire c'est de ballaiyer la variable global.inv_player[ ] avec la variable i de la boucle for , afin de savoir si il y a une case du tableau qui est vide ( false ou 0 ) . Le problème c'est que quand je lance le code ( qui est juste sur un objet qui touche mon perso , donc quand je touche cette objet avec mon perso ) GM me met sa comme message d'érreur :


Code:
___________________________________________
ERROR in
action number 1
of Collision Event with object obj_player
for object obj_pomme:

In script scr_inv_addobj:
Error in code at line 2:
      if ( global.inv_player[ i ] == 0 ){
                                      ^
at position 37: Cannot compare arguments.

Voila , sa me fais rager car je sais pas comment le patché .
NB : J'ai fais des test et remarquer que si je met directement quelque chose dans la case 1 sois : global.inv_player[0] = "lol"
Le message s'éffiche quand je tape l'objet ( qui je le redis lance le script lors de la colision entre moi et l'objet ) .
Si je fais : global.inv_player[1] = "lol"
Alors sa marche , mais ! si je répète l'action sois je tape dans un autre objet le meme ou différent mais avec le meme script l'érreur apparait.
Donc l'érreur apparais lorsque la variable i de la boucle for trouve vraiment une case vide égale a 0 ou false.

Du coup je sais pas du tout comment faire :/

Le code de mon controler d'inventaire et du lancement du jeu ( d'ailleur si vous trouvé ( chose qui est très très fort possible sachant que j'ai fais sa en 2 minutes sans logique ) une amélioration faites vous plaisir Wink ) :
Code:

global.inv_corrent_case = 0
global.game_firststart = 0
global.inv_max_capa = 10

temp_w_pas=0
if global.game_firststart == 0{
    while (temp_w_pas < global.inv_max_capa) {
        global.inv_player[temp_w_pas] = false
        temp_w_pas += 1
        global.game_firststart = 1;
       
    }
   
    if temp_w_pas > global.inv_max_capa {
        game_save("save1")
        game_restart()
    }
}else{
    game_load("save1")
}

global.inv_player[0] = "lol"

Le script executer lors d'un colision avec le joueur ( le meme plus haut ) :
Code:

for (i=0 ; global.inv_max_capa >i ; i+=1){
    if ( global.inv_player[ i ] == 0 ){
        global.inv_player[ i ] = object_get_name(object_index);
        i = global.inv_max_capa;
    }
}

Plz Help me ! i love you !
Revenir en haut Aller en bas
Wargamer
*Excellent utilisateur*
avatar

Messages : 6936
Projet Actuel : Bataille de cake au fruits

MessageSujet: Re: Petit problème sur une condition if    Sam 12 Mar 2016 - 2:16

Ça fait trop longtemps que j'ai fais du GML pour être une source fiable, mais de ce que je comprend c'est que commence avec false, tu fais ensuite une comparaison avec 0 puis tu lui assigne un nom

J'initialiserais tout directement avec des chaines de caractères.
Code:

if global.game_firststart == 0
{
    while (temp_w_pas < global.inv_max_capa)
   {
        global.inv_player[temp_w_pas] = ""
        temp_w_pas += 1
        global.game_firststart = 1;
   }
}
Code:
for (i=0 ; i < global.inv_max_capa ; i+=1)
{
    if (global.inv_player[i] == "")
   {
        global.inv_player[i] = object_get_name(object_index);
        i = global.inv_max_capa;
    }
}

_________________

Règle #1 du CBNA, ne pas chercher à faire dans la subtilité; personne comprend
Revenir en haut Aller en bas
albisse
Utilisateur confirmé: Rang *


Messages : 231

MessageSujet: Re: Petit problème sur une condition if    Sam 12 Mar 2016 - 11:11

Ahhh ! Merci beaucoup sa marche !
En plus c'est le genre de petit code du début que j'adore x)
C'est la premier fois que je fais un inventaire , du coup j'adore ^^
Revenir en haut Aller en bas
albisse
Utilisateur confirmé: Rang *


Messages : 231

MessageSujet: Re: Petit problème sur une condition if    Dim 13 Mar 2016 - 10:44

Bon bah en voulant améliorer mon système j'ai encore le meme problème du : cannot co

Sa ménerve car c'est pas claire leur truc , ils nous disent pas pourquoi ...

Pouvez vous m'aider ?

Mon code script qui s'anclanche lors de la collision avec le joueur pour changer la valeur d'une variable vide d'un tableau en son nom :

Code:

for (i=0 ; i <= global.inv_max_capa ; i+=1)
{
    if (global.inv_player[i , 0 ] == "")
  {
        global.inv_player[i , 0 ] = id_obj;
        can_destroy = 1;
        i = global.inv_max_capa;
    }
}

Mon code pour initialisé les variable vide du tableau si seulement sa pouvais fonctionner comme du SQL avec des Where ...

Code:

global.inv_corrent_case = 0
global.game_firststart = 0
global.inv_max_capa = 10



if global.game_firststart == 0{
    for (i=0 ; i <= global.inv_max_capa; i +=1){
        global.inv_player[ i , 0 ] = ""
        global.inv_player[ i , 1 ] = ""
        global.inv_player[ i , 2 ] = ""
    }
}


NB : Le message d'érreur est afficher au bout du second objet touché, le premier objet marche bien et a donc le résultat que je veux .

Merci d'avance , je sais vraiment pas la du coup quoi faire , y'a bien si je me plante pas toutes les variable = a "" :/
Revenir en haut Aller en bas
Wargamer
*Excellent utilisateur*
avatar

Messages : 6936
Projet Actuel : Bataille de cake au fruits

MessageSujet: Re: Petit problème sur une condition if    Mar 15 Mar 2016 - 1:09

Sympa que ça ai marché du premier coup, j'y aurais pas cru.

Pour initialiser tes tableaux tu peux toujours jeter un coup d'œil sur http://stackoverflow.com/questions/28571392/how-can-i-set-all-items-of-an-array-to-0-in-gamemaker-studio
Après, t'as le même problème qu'avant sauf que là tu compare avec une chaine de caractères et tu lui assigne un id après (qui est probablement un chiffre)
Juste initialiser ton tableau avec 0 devrais régler le problème

_________________

Règle #1 du CBNA, ne pas chercher à faire dans la subtilité; personne comprend
Revenir en haut Aller en bas
albisse
Utilisateur confirmé: Rang *


Messages : 231

MessageSujet: Re: Petit problème sur une condition if    Mar 15 Mar 2016 - 10:09

Ah oui en effet je suis bête , j'ai l'habitude de PHP ou si je dis pas de bétise le code s'adapte ^^

Encore une fois merci , j'ai pas encore test mais je pense effectivement que c'est sa , t'es notion son toujours là ^^
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: Petit problème sur une condition if    

Revenir en haut Aller en bas
 
Petit problème sur une condition if
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Petit problème...
» Petit problème...
» petit problème ...
» petit craquage mais bien ciblé !
» L'histoire de petit Louis

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: