Forum d'entraide à la création de jeux d'aventure
 
PortailPortail  AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -50%
-50% Baskets Nike Air Huarache Runner
Voir le deal
69.99 €

 

 eBlock et eNoBlock.

Aller en bas 
3 participants
AuteurMessage
titangebrian
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue
titangebrian


Nombre de messages : 75

Localisation : Toulouse/Valenciennes/Lausanne

Date d'inscription : 07/02/2009


eBlock et eNoBlock. Empty
MessageSujet: eBlock et eNoBlock.   eBlock et eNoBlock. EmptyLun 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
http://potemgrad.wix.com/home
Crazy Legs
Grand Cliqueur Royal
Grand Cliqueur Royal
Crazy Legs


Nombre de messages : 1513

Age : 31

Localisation : La Rochelle

Date d'inscription : 09/01/2008


eBlock et eNoBlock. Empty
MessageSujet: Re: eBlock et eNoBlock.   eBlock et eNoBlock. EmptyLun 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
titangebrian
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue
titangebrian


Nombre de messages : 75

Localisation : Toulouse/Valenciennes/Lausanne

Date d'inscription : 07/02/2009


eBlock et eNoBlock. Empty
MessageSujet: Re: eBlock et eNoBlock.   eBlock et eNoBlock. EmptyLun 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
http://potemgrad.wix.com/home
Crazy Legs
Grand Cliqueur Royal
Grand Cliqueur Royal
Crazy Legs


Nombre de messages : 1513

Age : 31

Localisation : La Rochelle

Date d'inscription : 09/01/2008


eBlock et eNoBlock. Empty
MessageSujet: Re: eBlock et eNoBlock.   eBlock et eNoBlock. EmptyLun 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
titangebrian
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue
titangebrian


Nombre de messages : 75

Localisation : Toulouse/Valenciennes/Lausanne

Date d'inscription : 07/02/2009


eBlock et eNoBlock. Empty
MessageSujet: Re: eBlock et eNoBlock.   eBlock et eNoBlock. EmptyLun 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
http://potemgrad.wix.com/home
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


eBlock et eNoBlock. Empty
MessageSujet: Re: eBlock et eNoBlock.   eBlock et eNoBlock. EmptyLun 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
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Crazy Legs
Grand Cliqueur Royal
Grand Cliqueur Royal
Crazy Legs


Nombre de messages : 1513

Age : 31

Localisation : La Rochelle

Date d'inscription : 09/01/2008


eBlock et eNoBlock. Empty
MessageSujet: Re: eBlock et eNoBlock.   eBlock et eNoBlock. EmptyLun 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
Contenu sponsorisé





eBlock et eNoBlock. Empty
MessageSujet: Re: eBlock et eNoBlock.   eBlock et eNoBlock. Empty

Revenir en haut Aller en bas
 
eBlock et eNoBlock.
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: