| eBlock et eNoBlock. | |
|
|
Auteur | Message |
---|
titangebrian Adepte de la Grande Tasse Bleue
Nombre de messages : 75
Localisation : Toulouse/Valenciennes/Lausanne
Date d'inscription : 07/02/2009
| Sujet: 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
Dernière édition par titangebrian le Lun 16 Juil 2012 - 17:04, édité 1 fois |
|
| |
Crazy Legs Grand Cliqueur Royal
Nombre de messages : 1513
Age : 31
Localisation : La Rochelle
Date d'inscription : 09/01/2008
| Sujet: 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. |
|
| |
titangebrian Adepte de la Grande Tasse Bleue
Nombre de messages : 75
Localisation : Toulouse/Valenciennes/Lausanne
Date d'inscription : 07/02/2009
| Sujet: 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 ------- 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 |
|
| |
Crazy Legs Grand Cliqueur Royal
Nombre de messages : 1513
Age : 31
Localisation : La Rochelle
Date d'inscription : 09/01/2008
| Sujet: 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. |
|
| |
titangebrian Adepte de la Grande Tasse Bleue
Nombre de messages : 75
Localisation : Toulouse/Valenciennes/Lausanne
Date d'inscription : 07/02/2009
| Sujet: 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 |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: 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à _________________ 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) |
|
| |
Crazy Legs Grand Cliqueur Royal
Nombre de messages : 1513
Age : 31
Localisation : La Rochelle
Date d'inscription : 09/01/2008
| Sujet: 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. |
|
| |
Contenu sponsorisé
| Sujet: Re: eBlock et eNoBlock. | |
| |
|
| |
| eBlock et eNoBlock. | |
|