Forum d'entraide à la création de jeux d'aventure
 
PortailPortail  AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -50%
-50% sur les sacs à dos pour ordinateur ...
Voir le deal
19.99 €

 

 Acceder à un objet d'une room depuis le script global

Aller en bas 
4 participants
AuteurMessage
Asraroth
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Asraroth


Nombre de messages : 1450

Age : 49

Date d'inscription : 20/10/2006


Acceder à un objet d'une room depuis le script global Empty
MessageSujet: Acceder à un objet d'une room depuis le script global   Acceder à un objet d'une room depuis le script global EmptyJeu 9 Nov 2006 - 10:45

Encore moi et mes questions... désolé ! 🇳🇴 Quand vous en avez marre vous me le dites, hein !

J'aurai besoin d'acceder à un objet qui se trouve dans une room, depuis le script global, afin de le desactiver.

dans le script de la room, ca donnerai :
Code:
oMonobjet.Clickable = false;

J'ai essayé avec :
Code:
Room[3].oMonobjet.Clickable = false;
mais çà ne marche pas non plus...
Revenir en haut Aller en bas
Shai-la
Ouvrière en Chef de la Grande Tasse Bleue
Ouvrière en Chef de la Grande Tasse Bleue
Shai-la


Nombre de messages : 6018

Age : 45

Localisation : Montpellier

Date d'inscription : 17/04/2006


Acceder à un objet d'une room depuis le script global Empty
MessageSujet: Re: Acceder à un objet d'une room depuis le script global   Acceder à un objet d'une room depuis le script global EmptyJeu 9 Nov 2006 - 11:50

Il ne faut pas mettre plusieurs points pour un même code.
Le nom de l'objet seul devrait suffire normalement.
Sinon, utilise le code simplement dès que le joueur entre dans la room, ça revient au même.
Code:
//when player enters room (before fade-in)
oMonobjet.Clickable = false;
Revenir en haut Aller en bas
http://marionpoinsot.fr/video
Asraroth
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Asraroth


Nombre de messages : 1450

Age : 49

Date d'inscription : 20/10/2006


Acceder à un objet d'une room depuis le script global Empty
MessageSujet: Re: Acceder à un objet d'une room depuis le script global   Acceder à un objet d'une room depuis le script global EmptyJeu 9 Nov 2006 - 12:11

J'ai besoin de desactiver cet objet à la fin d'une sequence qui se trouve dans la fonction dialog_request du script global...
et le nom de l'objet ne suffit pas dans la global script. Il faut surement lui indiquer de quelle room fait partie l'objet en question. :scratch:
Revenir en haut Aller en bas
MarvinS
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue
MarvinS


Nombre de messages : 76

Age : 46

Date d'inscription : 18/09/2006


Acceder à un objet d'une room depuis le script global Empty
MessageSujet: Re: Acceder à un objet d'une room depuis le script global   Acceder à un objet d'une room depuis le script global EmptyJeu 9 Nov 2006 - 13:01

Tu peux par exemple déclarer une variable dans le script header.
Ce sera une variable globale accessible de n'importe où.

Ensuite dans ta Room, tu lui donnes la valeur de l'objet et tu pourras ensuite
accéder à cette valeur dans dialog_request.
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


Acceder à un objet d'une room depuis le script global Empty
MessageSujet: Re: Acceder à un objet d'une room depuis le script global   Acceder à un objet d'une room depuis le script global EmptyJeu 9 Nov 2006 - 14:20

L'idée est pas bête du tout MarvinS, cependant un problème se pose : encore celui des pointeurs !

Comme on le sait, dans AGS toutes les variables doivent être déclarées avec leur type. En l'occurrence, celle globale que l'on veut créer sera une variable qui référera à un objet.
Dons, si la variable se nomme objet, on voudra pouvoir faire
Code:
objet.Clickable = false;
, ainsi objet réfère bien à un objet et est donc du type Object.

Bien sûr ce n'est pas l'objet proprement dit, elle y fait référence, et on doit donc ici utiliser un pointeur. On la délarera donc ainsi :
Code:
Object *objet;
, afin de définir une variable référant à un objet.

Mais l'assembleur et ses aléas, à notre grand damne, ne se laisse pas manipuler si aisément. Lorsque dans le Player enters Room on voudra définir cette variable comme référant à oMonobjet (car c'est bien là ce que j'ai compris que l'on voulait faire... me trompé-je ?), eh bien il faudrait taper ceci :
Code:
objet = oMonobjet;
Jusqu'ici, tout va bien, on n'a aucun message d'erreur (mais le code fait-il exactement ce à quoi nous nous attendons ?)

Arrive alors le moment de taper dans dialog_request la commande
Code:
objet.Clickable = false;
, c'est-à-dire dans le Global Script.

Aucun message toujours à l'assemblage du jeu. On le lance tout content donc, estimant avoir bien rempli son office, et arrive le moment de rendre l'objet incliquable : et paf ! "Null pointer referenced".

Voilà le problème qui survient. Alors j'ai pas tout compris personnellement, mais il doit y avoir quelque chose comme une "localisation" de la variable lorsqu'on lui donne sa référence dans le script de la Room. Ou bien encore le passage même du référencement se passe mal, mais l'assembleur juge la syntaxe correcte (ce qui expliquerait sa non-réaction lors de l'assemblage).

Bien gênant donc, mais je propose une solution intermédiaire en espérant qu'elle passe : utiliser la vieille syntaxe
Code:
object[N].Clickable = false;
, N étant le numéro de l'objet dans la Room.
Bien sûr à partir de ce moment, il faut être sûr que le code ne sera appelé que dans la Room où se trouve l'objet en question pour éviter toute collision/tout bug ^^

En espérant avoir aidé et non démoralisé :p

Bon codage.
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Asraroth
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Asraroth


Nombre de messages : 1450

Age : 49

Date d'inscription : 20/10/2006


Acceder à un objet d'une room depuis le script global Empty
MessageSujet: Re: Acceder à un objet d'une room depuis le script global   Acceder à un objet d'une room depuis le script global EmptyJeu 9 Nov 2006 - 14:35

En fait, en cherchant dans la doc d'AGS, j'ai trouvé une fonction qui a reglé mon problème.
Dans le script global, je fais un
Code:
CallRoomScript(1);
qui appelle une fonction de la room active en lui passant un nombre en parametre. (ici 1)

et dans le script de la room, j'ai ajouté la fonction appellée :
Code:
function on_call (int value) {
  if (value == 1) {
    oMonobjet.Clickable = false;
    hMonhotspot.Enabled = false;
  }
}

et çà marche ! :cheers:
Revenir en haut Aller en bas
MarvinS
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue
MarvinS


Nombre de messages : 76

Age : 46

Date d'inscription : 18/09/2006


Acceder à un objet d'une room depuis le script global Empty
MessageSujet: Re: Acceder à un objet d'une room depuis le script global   Acceder à un objet d'une room depuis le script global EmptyJeu 9 Nov 2006 - 16:33

Kitai, je ne parlais pas de me servir de pointeurs.

Mon idée était la suivante :

Dans le header script on déclare une variable booleenne :

Code:
bool bool_tmp;

dans le code de la room, on entre ce code-ci dans le Repeatedly execute :

Code:
 bool_tmp = oMonobjet.Clickable;

Et donc dans le dialog_request, on peut tester la valeur de bool_tmp :

Code:
if (booltmp == false) {} else {}
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


Acceder à un objet d'une room depuis le script global Empty
MessageSujet: Re: Acceder à un objet d'une room depuis le script global   Acceder à un objet d'une room depuis le script global EmptyJeu 9 Nov 2006 - 18:18

Bien joué Asraroth ! J'avoue avoir cherché rapidement une telle chose, en vain ^^'

Sinon en effet MarvinS, j'y avais pensé aussi (après la rédaction de mon post, c'est vrai).
Cependant là encore il faut faire la différence entre la référence et la valeur.
Ta variable bool_tmp contiendra la même valeur que oMonobjet.Clickable mais ne sera pas oMonobjet.Clickable.
Seule une notion comme un pointeur pourrait permettre de référer à oMonobjet.Clickable, mais puisque c'est du type bool et qu'AGS n'admet pas les pointeurs sur les structures basiques, on ne peut pas.

Mais l'idée n'est pas bête en effet : utiliser le Repeatedly execute de la Room pourrait fonctionner avec un jeu de variables globales, pour qu'on puisse y changer la valeur de oMonobjet.Clickable.
Mais il faut toujours éviter le plus possible de mettre du code dans une routine très récurrente ^^

MarvinS a écrit:
Et donc dans le dialog_request, on peut tester la valeur de bool_tmp :
Euh, il me semble justement qu'Asraroth veut "opérer un changement", et non pas "tester le changement".

Enfin, de toute façon le problème est réglé, c'est bien comme ça ^^


Dernière édition par le Jeu 9 Nov 2006 - 22:15, édité 1 fois
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Shai-la
Ouvrière en Chef de la Grande Tasse Bleue
Ouvrière en Chef de la Grande Tasse Bleue
Shai-la


Nombre de messages : 6018

Age : 45

Localisation : Montpellier

Date d'inscription : 17/04/2006


Acceder à un objet d'une room depuis le script global Empty
MessageSujet: Re: Acceder à un objet d'une room depuis le script global   Acceder à un objet d'une room depuis le script global EmptyJeu 9 Nov 2006 - 18:31

J'ai souvent eu besoin d'agir sur les objects dans le dialog-request pendant la programmation de mon RPG. En fait, comme le dit Kitai, il suffit tout simplement de mettre le numéro de l'objet (Object[x]) au lieu du nom de l'objet, et ça marche (en faisant attention aux moments où est appelé le paramètre).
Revenir en haut Aller en bas
http://marionpoinsot.fr/video
MarvinS
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue
MarvinS


Nombre de messages : 76

Age : 46

Date d'inscription : 18/09/2006


Acceder à un objet d'une room depuis le script global Empty
MessageSujet: Re: Acceder à un objet d'une room depuis le script global   Acceder à un objet d'une room depuis le script global EmptyVen 10 Nov 2006 - 8:43

Kitai a écrit:
Euh, il me semble justement qu'Asraroth veut "opérer un changement", et non pas "tester le changement".

En effet, au temps pour moi, j'avais zappé cela.
Ma technique ne fonctionne donc pas dans ce cas, puisqu'elle ne renvoit que la valeur, comme tu l'as dit.
Revenir en haut Aller en bas
Asraroth
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Asraroth


Nombre de messages : 1450

Age : 49

Date d'inscription : 20/10/2006


Acceder à un objet d'une room depuis le script global Empty
MessageSujet: Re: Acceder à un objet d'une room depuis le script global   Acceder à un objet d'une room depuis le script global EmptyVen 10 Nov 2006 - 8:55

MarvinS a écrit:
Kitai a écrit:
Euh, il me semble justement qu'Asraroth veut "opérer un changement", et non pas "tester le changement".

En effet, au temps pour moi, j'avais zappé cela.
Ma technique ne fonctionne donc pas dans ce cas, puisqu'elle ne renvoit que la valeur, comme tu l'as dit.

Ta technique doit fonctionner MarvinS... il faut juste l'inverser si on veut mettre à jour.

Dans le repeat de la room
Code:
oMonobjet.Clickable = booltemp;

et dans le global script
Code:
booltemp = false;

Mais d'apres Shai-la, la technique d'utiliser le numéro de l'objet fonctionne aussi.
Code:
Object[x].Clickable = false;

Ca fait donc 3 techniques pour arriver à faire çà ! grand sourire
Revenir en haut Aller en bas
Contenu sponsorisé





Acceder à un objet d'une room depuis le script global Empty
MessageSujet: Re: Acceder à un objet d'une room depuis le script global   Acceder à un objet d'une room depuis le script global Empty

Revenir en haut Aller en bas
 
Acceder à un objet d'une room depuis le script global
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Bug Global Script : enregistrement impossible !
» [résolu]Appeler une fonction depuis un autre Script ?
» Animation d'objet : aide pour un script.
» Utiliser le script pour gérer les objets d'une Room ???
» Changer objet d'une room avec un GUI ??

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: