Forum d'entraide à la création de jeux d'aventure
 
PortailPortail  AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -20%
Drone Dji DJI Mini 4K (EU)
Voir le deal
239 €

 

 Error: Invalid pointer type ...

Aller en bas 
3 participants
AuteurMessage
filoulefilou
Cliqueur Amateur
Cliqueur Amateur
filoulefilou


Nombre de messages : 359

Date d'inscription : 24/05/2010


Error: Invalid pointer type ... Empty
MessageSujet: Error: Invalid pointer type ...   Error: Invalid pointer type ... EmptyMer 27 Nov 2019 - 15:48

Bonjour,
Ca fait longtemps que je n'avais pas repris le code de mon jeu en dev ... et mauvaise surprise, Un bug. Sauf que je ne sais pas trop où chercher pour le corriger.

Une idée ?

Error: Invalid pointer type ... Bug10
Revenir en haut Aller en bas
valoulef
Délégué de la tasse bleue
Délégué de la tasse bleue
valoulef


Nombre de messages : 1791

Age : 35

Localisation : Condate

Date d'inscription : 01/08/2011


Error: Invalid pointer type ... Empty
MessageSujet: Re: Error: Invalid pointer type ...   Error: Invalid pointer type ... EmptyMer 27 Nov 2019 - 19:40

A priori tu as quelque chose qui pointe vers un objet d'inventaire inexistant ou quelque chose comme ça. As-tu touché à ça dans ton code ? Peut-être as tu créé un objet d'inventaire que tu as supprimé ensuite ?

Ah ou plutôt ce serait en rapport avec le bouton qui permet d'ouvrir l'inventaire... Sinon peut-être la fonction en question qui est référencée dans les events mais qui aurait été supprimée dans le code, ou dont le nom aurait été changé... Pardonne mon manque de précision ça fait un bout de temps que je n'ai pas utilisé AGS. Mais il y a des chances que ce soit quelque chose parmi ces hypothèses.

_________________
Vous êtes déjà allés à Condate ? Ils ont un petit vin qui à un goût de pierre à catapulte. C'est Toutatis en culotte de velours si j'ose m'exprimer ainsi.
Revenir en haut Aller en bas
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
Kitai


Nombre de messages : 2907

Date d'inscription : 01/08/2006


Error: Invalid pointer type ... Empty
MessageSujet: Re: Error: Invalid pointer type ...   Error: Invalid pointer type ... EmptyLun 2 Déc 2019 - 18:34

filoulefilou a écrit:
Sauf que je ne sais pas trop où chercher pour le corriger.
Ouvre ton Global Script et cherche la fonction Button_inventaire_OnClick, c'est là qu'il faut chercher les potentiels problèmes qu'a décrits valoulef.

Ou alors : il y a quelque part dans ton code (peut-être dans une grille d'événements de la fenêtre d'inventaire) une référence à Button_inventaire_OnClick, et cette fonction n'est pas définie dans ton script.

_________________
Ga is Ga
Vous pouvez consulter l'aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit !
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
filoulefilou
Cliqueur Amateur
Cliqueur Amateur
filoulefilou


Nombre de messages : 359

Date d'inscription : 24/05/2010


Error: Invalid pointer type ... Empty
MessageSujet: Re: Error: Invalid pointer type ...   Error: Invalid pointer type ... EmptyMer 11 Déc 2019 - 13:36

J'ai la solution (enfin ... je crois) !

Disons que j'ai ciblé le problème, j'ai procédé par élimination, en virant une ligne par une ligne.
Le problème se trouvait dans ma fonction "ouvrir l'inventaire" nommé Show_inventaire();
Plus précisément, dans celle-ci, je lui demande d'initialiser l'affichage des quêtes avec une autre fonction : ini_quete();
C'est là que ça coinçait, car j'avais dans le head du script Quete, une structure comme ça.

Code:
struct Objectif {
  protected int etape;
  int Etape;
  import int get_Etape();                  
  import void set_Etape(int etape);
 
  String name;  
          
  String description;
 
 
  String etat_de_quete;
 
  bool Enregistrement;
};


Le problème c'était pour importer le int Etape, j'avais préalablement écrit  import attribute int Etape. Je ne me souviens plus du tout pourquoi, lol ! Comme je ne comprends pas ce que je veux dire Attribute int au lieu de int, ça veut sûrement dire qu'on m'avait sûrement aidé pour cette fonction grand sourire ! Et j'ai probablement modifié un truc entre temps qui a fait foirer cette spécificité dans la déclaration de ma variable.

Au passage, ça veut dire quoi Attribute  pour une variable dans une structure ?  

Voilà les amis !
Revenir en haut Aller en bas
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
Kitai


Nombre de messages : 2907

Date d'inscription : 01/08/2006


Error: Invalid pointer type ... Empty
MessageSujet: Re: Error: Invalid pointer type ...   Error: Invalid pointer type ... EmptyVen 13 Déc 2019 - 22:09

Le mot-clé attribute désigne le nom typé qui vient après ("int Etape" dans ton cas, "int" étant le type et "Etape" étant le nom) comme une sorte d'objet hybride entre une variable simple et une fonction.

Syntaxiquement, les attributs se comportent comme des variables simples : tu peux utiliser le symbole = comme tu le fais pour assigner une valeur à une variable simple, et tu peux utiliser leur nom "brut" (sans pair de parenthèses accolée) comme tu le fais pour récupérer la valeur d'une variable simple.

Ce qui se passe sous le capot en revanche est différent : lorsque tu utilises le symbole = avec un attribut, il y a une fonction que tu as définie (nommée set_NOM, dans ton cas donc "set_Etape") qui sera exécutée pour ainsi dire "en cachette" et à laquelle sera passée la valeur à la droite du symbole = ; lorsque tu utilises le nom brut, il y aura une autre fonction que tu as là encore définie (nommée get_NOM, dans ton cas donc "get_Etape") qui sera elle aussi exécutée "en cachette" et qui se chargera de retourner une valeur.

Dans ton cas, au vu du code qui tu as posté, tu devrais normalement garder import attribute. Le fait que ça marche mieux en l'enlevant suggère que le reste de ton code en fait ne traitait peut-être pas Etape comme un attribute... difficile à dire comme ça.

Il me semble que c'est moi qui ai écrit ce code, il y a un bout de temps. Je me souviens plus très bien, mais je pourrais chercher si ça t'intéresse.

_________________
Ga is Ga
Vous pouvez consulter l'aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit !
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
filoulefilou
Cliqueur Amateur
Cliqueur Amateur
filoulefilou


Nombre de messages : 359

Date d'inscription : 24/05/2010


Error: Invalid pointer type ... Empty
MessageSujet: Re: Error: Invalid pointer type ...   Error: Invalid pointer type ... EmptySam 14 Déc 2019 - 11:51

Alors mon script pour Quête c'est ça :

Code:

Objectif quete[10];

 

//
function game_start()
{


quete[0].Etape = -1;
quete[1].Etape = -1;

}


 int Objectif::get_Etape() {
   return this.etape;
 }
 
 
void Objectif::set_Etape(int etape) {
  
  this.etape = etape;
 
  ///////Ajouter la quête non enregistrée ////
      
  if (this.etape == 0 && this.Enregistrement == false) {
    ListQueteOn.AddItem(this.name);
  }
 
  if (etape < 0) { this.etat_de_quete = "null" ; this.Enregistrement = false;} // etape -1 => "null" ; etape 100 => "valide" ; etape >-1  <100 => "encours"
  else if (etape == 100) this.etat_de_quete = "valide";
  else { this.etat_de_quete = "encours"; this.Enregistrement = true; }
 
 
  //////////////// Retire de la liste la quête validée//
      
  if ((this.etape == 100) && (this.Enregistrement == true)) {
    for (int n=0 ; n < ListQueteOn.ItemCount ; n++){
      if (ListQueteOn.Items[n]== this.name) {
        ListQueteOn.RemoveItem(n);
        ListQueteOff.AddItem(this.name);
      }
    }
    this.Enregistrement = false;
  }
}
 
 

function ini_quete(){


 
  
  //QUETE
   if (quete[0].Etape == 0) quete[0].description = "Debut de la quête !" ;
  else if (quete[0].Etape == 1) quete[0].description = "Un bon début de la quête au niveau 1 !" ;
  else if (quete[0].Etape == 2) quete[0].description = "Genial la quete 0 avance à 2" ;
  else if (quete[0].Etape == 3) quete[0].description = "Tu pues la pisse niveau 3" ;
  else if (quete[0].Etape == 4) quete[0].description = "Ta soeur le pa belle ?! lvl 4" ;
  else if (quete[0].Etape == 5) quete[0].Etape = 100;
  else if (quete[0].Etape == 100) quete[0].description = "Bravo ! Terminech" ;
  else quete[0].Etape = -1;
  
  if (quete[1].Etape == 0) quete[1].description = "Une simpl' kesstion, ki sembl' étr éternell ! E-ce'ke cett variabl' fonktionn ?!" ;
  else if (quete[1].Etape == 1) quete[1].description = "Ell fonktionn trè bien, voilà ki fé mon bon'eur !" ;
  else if (quete[1].Etape == 2) quete[1].description = "En mêm tem, çé Kitai ki a kodé " ;
  else if (quete[1].Etape == 3) quete[1].description = "Le kode ça ren' zinzin, j'nen peu pluss" ;
  else if (quete[1].Etape == 4) quete[1].description = "Ta soeur lé moche ?! lvl 4 de la kète 1" ;
  else if (quete[1].Etape == 5) quete[1].Etape = 100;
  else if (quete[1].Etape == 100) quete[1].description = "Bravo ! Terminechla kète une !" ;
  else quete[1].Etape = -1;

  
  
}

export quete;

Et visiblement c'est la fonction ini_quete() qui fait bugger.
Tu crois comprendre le problème ?

PS : Evidemment les textes sont temporaires hein clin d'oeil
Revenir en haut Aller en bas
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
Kitai


Nombre de messages : 2907

Date d'inscription : 01/08/2006


Error: Invalid pointer type ... Empty
MessageSujet: Re: Error: Invalid pointer type ...   Error: Invalid pointer type ... EmptyDim 15 Déc 2019 - 1:36

En fait tu peux pas directement manipuler un attribut dans le script même où tu définis tes fonctions setter et getter (voir la note ici qui commence par "A VERY..."). Donc ta fonction game_start pose aussi problème dans cette mesure.

Enlever les mots-clés import attribute a probablement "réparé" l'erreur que tu obtenais, mais ça a aussi probablement cassé le système de ce script. Je te conseille donc de les remettre en place.

Ensuite, tu as deux solutions : soit tu bouges tes fonctions game_start et ini_quete dans un autre script (le Global Script par exemple, ou bien un autre script que tu crées pour l'occasion) soit tu laisses ces fonctions où elles sont mais tu y remplaces .Etape par .get_Etape() devant == à l'intérieur des parenthèses de tes (else) if, et par .set_Etape(...) devant les simples =, bien sûr avec le nombre que tu veux à la place de ...

_________________
Ga is Ga
Vous pouvez consulter l'aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit !
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
filoulefilou
Cliqueur Amateur
Cliqueur Amateur
filoulefilou


Nombre de messages : 359

Date d'inscription : 24/05/2010


Error: Invalid pointer type ... Empty
MessageSujet: Re: Error: Invalid pointer type ...   Error: Invalid pointer type ... EmptyDim 15 Déc 2019 - 11:30

Ah, je me doutais bien qu'il y avait un blème blème ... !
Donc si j'ai bien compris, il suffit que je copie coller, mon game_start, ainsi que mon ini_quête() dans un autre fichier script et c'est good ?

Ca serait (incompréhensible) mais magique grand sourire

Revenir en haut Aller en bas
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
Kitai


Nombre de messages : 2907

Date d'inscription : 01/08/2006


Error: Invalid pointer type ... Empty
MessageSujet: Re: Error: Invalid pointer type ...   Error: Invalid pointer type ... EmptyLun 16 Déc 2019 - 14:36

Pas si incompréhensible ou magique que ça : pour qu'un attribut fonctionne correctement, il faut que le script où tu y tentes d'y accéder soit au courant des fonctions setter et getter, et tu en informes tes scripts grâce aux mots-clés import qui se trouvent dans la struct, laquelle se trouve dans un en-tête (header). Un peu paradoxalement, certes, l'en-tête n'a pas portée sur le corps de script correspondant, c'est pourquoi tu peux pas utiliser ton attribut Etape normalement dans ce script-là, mais que ça posera pas de souci si tu l'utilises dans un script sur lequel l'en-tête a portée (c'est-à-dire tout script placé en-dessous de celui où tu as l'en-tête contenant la struct).

_________________
Ga is Ga
Vous pouvez consulter l'aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit !
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Contenu sponsorisé





Error: Invalid pointer type ... Empty
MessageSujet: Re: Error: Invalid pointer type ...   Error: Invalid pointer type ... Empty

Revenir en haut Aller en bas
 
Error: Invalid pointer type ...
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Empty game et error room -1
» Runtime error:Function still open, missing}
» [résolu]Unhandled error causée par les dialogues
» [résolu] Error (line 44): Undefined token 'oPomme'
» [résolu] Impossible d'ouvrir mon fichier, error : "Elément racine manquant"

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Adventure Games Studio fr :: CREATION DE JEUX :: Questions / Réponses-
Sauter vers: