Forum d'entraide à la création de jeux d'aventure
 
PortailAccueilFAQRechercherS'enregistrerMembresConnexion

Partagez | 
 

 eBlock et eNoBlock.

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
titangebrian
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 75

Localisation : Toulouse/Valenciennes/Lausanne

Date d'inscription : 07/02/2009


MessageSujet: eBlock et eNoBlock.   Lun 16 Juil 2012 - 12:44

Salut tout le monde.

Si aujourd'hui je m'adresse de nouveau à vous, c'est pour vous faire part d'un petit problème auquel je ne trouve pas de solution.
Voila :
Comment faire afin que mon personnage aille chercher un objet sans que cela ne bloque le jeu ?
La logique voudrait que je rentre un code du genre :

cDamyan.Walk(oNeige.X, oNeige.Y, eNoBlock, eWalkableAreas);
oNeige.Visible=false;
cDamyan.AddInventory(iNeige);


Cependant, lorsque je fais cela, tout a lieu en même temps ; ainsi l'objet disparait et s'ajoute à mon inventaire pendant la marche du personnage et avant même qu'il n'arrive à son but.

Je précise que je tiens absolument à ce que le jeu ne soit pas bloqué afin - par exemple - que le jour puisse se raviser et cliquer ailleurs pour stopper le personnage allant chercher/voir/parler à... ce sur quoi il a cliqué au préalable.


Cordialement,
Maël sourire

_________________
L'Enfant qui n'avait pas de Coeur
(Projet d'animation débuté dans le cadre du concours Hommage à Tim BURTON)

Avancée de MirNizhe
(Projet de point n'click AGS)


Dernière édition par titangebrian le Lun 16 Juil 2012 - 17:04, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://potemgrad.wix.com/home
Crazy Legs
Grand Cliqueur Royal
Grand Cliqueur Royal


Nombre de messages : 1513

Age : 23

Localisation : La Rochelle

Date d'inscription : 09/01/2008


MessageSujet: Re: eBlock et eNoBlock.   Lun 16 Juil 2012 - 16:44

Salut, je propose que tu utilises la fonction repeatedly_execute_always pour gérer les évènements qui se déroulent quand le jeu est bloqué. Tu auras plus de contrôle de cette manière. Dans ce style là :

function repeatedly_execute_always()
{
// Gérer jour/nuit
}

Malheureusement, tu ne pourras pas annuler l'action en cliquant ailleurs avec cette solution.

Je ne vois pas comment faire autrement sinon charger le repeatedly_execute pour vérifier si le personnage est arrivé à bon port pour enfin faire disparaître un objet (avec tous les objets qu'il y a dans le jeu ça peut faire beaucoup et ralentir le jeu).

_________________
VOUS POURREZ BIENTÔT RÉAPPRENDRE À UTILISER AGS SUR LE SITE DU ZÉRO !
Le tuto est actuellement en refonte totale activement depuis le 20 juillet, prochaine sortie en août ou septembre si tout se passe bien.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
titangebrian
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 75

Localisation : Toulouse/Valenciennes/Lausanne

Date d'inscription : 07/02/2009


MessageSujet: Re: eBlock et eNoBlock.   Lun 16 Juil 2012 - 17:01

Hmm...
Dommage ; ce serait étrange qu'il n'y ait pas une commande miracle.

Citation :
je tiens absolument à ce que le jeu ne soit pas bloqué
Ma fois... je ferai des concessions dans l'immédiat.

Merci Crazy Legs clin d\\\\'oeil

-------

Mais du coup j'ai une autre question : lorsque le jeu est bloqué via la commande 'eBlock', les GUIs présents (j'ai une petite icône de sac en bas à droite) se grisent.
Y a-t-il un moyen pour éviter cela ?

Merci sourire

_________________
L'Enfant qui n'avait pas de Coeur
(Projet d'animation débuté dans le cadre du concours Hommage à Tim BURTON)

Avancée de MirNizhe
(Projet de point n'click AGS)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://potemgrad.wix.com/home
Crazy Legs
Grand Cliqueur Royal
Grand Cliqueur Royal


Nombre de messages : 1513

Age : 23

Localisation : La Rochelle

Date d'inscription : 09/01/2008


MessageSujet: Re: eBlock et eNoBlock.   Lun 16 Juil 2012 - 17:13

Oui, dans les Settings, tu peux mettre la propriété When player interface is disabled, GUIs should : Display normally.

EDIT : Visiblement le bouton sera normal mais ne sera plus actionnable tant que le jeu sera bloqué.

_________________
VOUS POURREZ BIENTÔT RÉAPPRENDRE À UTILISER AGS SUR LE SITE DU ZÉRO !
Le tuto est actuellement en refonte totale activement depuis le 20 juillet, prochaine sortie en août ou septembre si tout se passe bien.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
titangebrian
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 75

Localisation : Toulouse/Valenciennes/Lausanne

Date d'inscription : 07/02/2009


MessageSujet: Re: eBlock et eNoBlock.   Lun 16 Juil 2012 - 18:34

Super ça marche !

Oui, vu que le jeu est bloqué, il n'y aura plus de curseur et donc aucune interaction de possible.
Mais au moins il n'y a plus ce gris affreux.

Merci Crazy Legs clin d\\\\'oeil

_________________
L'Enfant qui n'avait pas de Coeur
(Projet d'animation débuté dans le cadre du concours Hommage à Tim BURTON)

Avancée de MirNizhe
(Projet de point n'click AGS)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://potemgrad.wix.com/home
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue


Nombre de messages : 2431

Date d'inscription : 01/08/2006


MessageSujet: Re: eBlock et eNoBlock.   Lun 16 Juil 2012 - 22:08

Le problème est récurrent.
Chris Jones suggère une solution intelligente ici.
En voici ma traduction :
Citation :
Le code pour le gérer globalement est plus complexe [que le cas par cas (ndK)], mais l'idée de base serait de récupérer le hotspot/objet/personnage sur lequel a cliqué le joueur dans la fonction on_mouse_click du global script, de le stocker dans une variable pour s'en rappeler, et de lancer ensuite la commande de marche cette fois seulement dans le global script. Dans la fonction globale rep_exex, tu appellerais ensuite la fonction RunInteraction appropriée lorsque la marche est achevée.
Cela donnerait un code du genre :
Code:
LocationType TypeZone = eLocationNothing;
int IDZone;
CursorMode MouseMode;

function on_mouse_click(MouseButton button) {

  if (button == eMouseLeft) {
    Object* obj = Object.GetAtScreenXY(mouse.x, mouse.y);
    Character* perso = Character.GetAtScreenXY(mouse.x, mouse.y);
    Hotspot* hspt = Hotspot.GetAtScreenXY(mouse.x, mouse.y);
    TypeZone = GetLocationType(mouse.x,mouse.y);
    if (TypeZone == eLocationNothing) return;
    if (TypeZone == eLocationObject) IDZone = obj.ID;
    if (TypeZone == eLocationCharacter) IDZone = perso.ID;
    if (TypeZone == eLocationHotspot) IDZone = hpst.ID;
    player.Walk(mouse.x - Room.GetViewPortX(), mouse.y - Room.GetViewPortY(), eNoBlock);
    ClaimEvent();
  }

}

function repeatedly_execute() {

  if (TypeZone != eLocationNothing) {
    if (!player.Moving) {
      if (TypeZone == eLocationObject) object[IDZone].RunInteraction(MouseMode);
      if (TypeZone == eLocationCharacter) character[IDZone].RunInteraction(MouseMode);
      if (TypeZone == eLocationHotspot) hotpost[IDZone].RunInteraction(MouseMode);
      TypeZone = eLocationNothing;
    }
  }

}
Attention, je n'ai pas testé ce code.
Mais l'idée est là sourire

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


Dernière édition par Kitai le Mar 17 Juil 2012 - 8:43, édité 1 fois (Raison : Ajout du fameux)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Crazy Legs
Grand Cliqueur Royal
Grand Cliqueur Royal


Nombre de messages : 1513

Age : 23

Localisation : La Rochelle

Date d'inscription : 09/01/2008


MessageSujet: Re: eBlock et eNoBlock.   Lun 16 Juil 2012 - 23:42

C'est encore mieux que ce que je pensais même si ça reste dans la technique du repeatedly_execute. À tester ! Il faut aussi gérer les cas où l'on ne veut pas récupérer l'objet et les autres cas bloquant, mais sinon ça marche. Et en plus tu pourras gérer les annulations facilement de cette manière.

_________________
VOUS POURREZ BIENTÔT RÉAPPRENDRE À UTILISER AGS SUR LE SITE DU ZÉRO !
Le tuto est actuellement en refonte totale activement depuis le 20 juillet, prochaine sortie en août ou septembre si tout se passe bien.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: eBlock et eNoBlock.   Aujourd'hui à 19:17

Revenir en haut Aller en bas
 
eBlock et eNoBlock.
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» eBlock et eNoBlock.

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: