Forum d'entraide à la création de jeux d'aventure
 
PortailPortail  AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -47%
SAMSUNG T7 Shield Bleu – SSD Externe 1 To ...
Voir le deal
89.99 €

 

 Han ! Script link failed

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


Nombre de messages : 359

Date d'inscription : 24/05/2010


Han ! Script link failed  Empty
MessageSujet: Han ! Script link failed    Han ! Script link failed  EmptyMar 21 Avr 2020 - 11:59

Bonjour les amis,

Pour ceux qui ont eu vent de l'histoire, je remonte mon jeu suite à un vilain crash ... Bref, ça commence à reprendre forme .
Mais j'ai une sorte de bug chiant en voulant buildé, que je ne m'explique pas :

Han ! Script link failed  Bug_ge11

Ps: je suis passé sous AGS 3.5 (la dernière version stable de février 2020  3.5.0.24)

Voici le fichier script :
Code:

// module header .ash
struct Objectif {
  protected int etape;
  import attribute int Etape;
  //int Etape;
  import int get_Etape();                  
  import void set_Etape(int etape);
 
  String name;  
          
  String description;
 
  
};


import Objectif quete[10];

import function ini_quete(int Q, int E);


Code:

// module script .asc

String memo_txt[10];
Objectif quete[10];
//
function game_start()
{
 
quete[0].Etape = -1;
quete[0].name = "A";
quete[1].name = "B";
quete[1].Etape = -1;

for(int i = 0; i <10; i++){
       memo_txt[i] = "";
                                    }


}






function ini_quete(int Q, int E){
int q_step = -1;

quete[Q].Etape = E;

 q_step++;
  

if(q_step == 0) {
  
  if (quete[0].Etape == 0) memo_txt[0] = "A0[";
                              

  if (quete[0].Etape == 1)  memo_txt[0] = memo_txt[0].Append("[A1[");
                                
    
  
 //////////////////////FIn quete 0



////////////////QUETE 1////
  if (quete[1].Etape == 0) memo_txt[1] = "B0[";
  if (quete[1].Etape == 1) memo_txt[1] = memo_txt[1].Append("[B1.[");
  if (quete[1].Etape == 2) memo_txt[1] = memo_txt[1].Append("[B2.[");

  
if(quete[Q].Etape >= 0) quete[Q].description = memo_txt[Q];  
  
q_step++;           }
//fin du q_step//
  
  }

export quete;

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


Han ! Script link failed  Empty
MessageSujet: Re: Han ! Script link failed    Han ! Script link failed  EmptyMar 21 Avr 2020 - 16:02

Où sont définies tes fonctions get_Etape et set_Etape ? Elles doivent être définies dans le ficheir .asc qui correspond au fichier .ash où tu définis la struct. Et il me semble que dans ce fichier .asc, justement, tu peux pas directement utiliser .Etape comme tu le fais : tu dois utiliser set_Etape et get_Etape, précisément. Les attribute ne sont pas des "vraies" variables, en vrai lorsque tu y fais référence ça va justement chercher une de ces fonctions selon le contexte. Mais tu as besoin de stocker une valeur dans une variable quand même, c'est pourquoi tu as déclaré protected int etape : une variable qui n'est pas accessible en dehors des fonctions importées dans la struct, mais que tu vas justement manipuler dans set_Etape et get_Etape.

Au final, tu veux un script un peu comme ça (probablement avec une fonction set_Etape un peu plus sophistiquée) :
Code:
// module script .asc
    
String memo_txt[10];
Objectif quete[10];

int Objectif::get_Etape() {
    return this.etape;
}
void Objectif::set_Etape(int etape) {
    this.etape = etape;
}

//
function game_start()
{
    quete[0].set_Etape(-1);
    quete[0].name = "A";
    quete[1].name = "B";
    quete[1].set_Etape(-1);
        
    for(int i = 0; i <10; i++){
        memo_txt[i] = "";
    }      
}
    
    
function ini_quete(int Q, int E){
    int q_step = -1;
    
    quete[Q].set_Etape(E);
    
    q_step++;
    
    if(q_step == 0) {
    
        if (quete[0].get_Etape() == 0) memo_txt[0] = "A0[";
                                    
        
        if (quete[0].get_Etape() == 1)  memo_txt[0] = memo_txt[0].Append("[A1[");
                                    
        //////////////////////FIn quete 0
        
        ////////////////QUETE 1////
        if (quete[1].get_Etape() == 0) memo_txt[1] = "B0[";
        if (quete[1].get_Etape() == 1) memo_txt[1] = memo_txt[1].Append("[B1.[");
        if (quete[1].get_Etape() == 2) memo_txt[1] = memo_txt[1].Append("[B2.[");
        
        
        if(quete[Q].get_Etape() >= 0) quete[Q].description = memo_txt[Q];  
        
        q_step++;
    }
//fin du q_step//    
}
    
export quete;

Note que tu pourrais, et peut-être même que tu devrais, déplacer l'intégralité du code contenu dans ini_quete vers set_Etape justement : tu pourrais y vérifier la valeur de etape et changer memo_txt en conséquence. C'est toute la pertinence d'utiliser des attributs. Et comme ça tu pourrais depuis le global script ou les scripts de pièce (par exemple) faire directement quete[5].Etape = 2; et ton module s'occupera de mettre automatiquement à jour memo_txt dans les coulisses.

_________________
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


Han ! Script link failed  Empty
MessageSujet: Re: Han ! Script link failed    Han ! Script link failed  EmptyJeu 23 Avr 2020 - 11:20

Ca donnerait un truc du genre =>

Code:

void Objectif::set_Etape(int etape) {
    this.etape = etape;


if (quete[0].Etape == 0) memo_txt[0] =  memo_txt[0].Append("blablabla");


C'est ça l'idée ?
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


Han ! Script link failed  Empty
MessageSujet: Re: Han ! Script link failed    Han ! Script link failed  EmptyJeu 23 Avr 2020 - 15:35

Oui sauf que comme je disais tu peux pas utiliser .Etape comme ça dans le fichier .asc correspondant au fichier .ash où tu déclares ta struct, donc ta sixième ligne serait
Code:
if (quete[0].get_Etape() == 0) memo_txt[0] =  memo_txt[0].Append("blablabla");

_________________
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é





Han ! Script link failed  Empty
MessageSujet: Re: Han ! Script link failed    Han ! Script link failed  Empty

Revenir en haut Aller en bas
 
Han ! Script link failed
Revenir en haut 
Page 1 sur 1

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: