|
| [Module] ShowInteractiveAreas | |
| | Auteur | Message |
---|
Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: [Module] ShowInteractiveAreas Dim 25 Nov 2012 - 15:06 | |
| IsInteractionAvailable n'est que moyennement pratique, vu qu'il faut spécifier le mode d'interaction en question... donc il faut screener tous les modes pour toutes les zones interactives identifiés, car si une seule interaction est possible ça vaut le coup de l'indiquer en zone interactive. J'ai peur que ça commence à faire lourd. - Kitai a écrit:
- un hotspot peut être utilisé de moult façons, sans pour autant que des interactions y soient associées, une fois qu'on met les mains dans le cambouis du script
Je ne doute pas que de telles personnes sauront tout à fait adapter mon module à leur usage. A ma grande surprise, et malgré ce blabla incompréhensible du manuel d'AGS : - Code:
-
cJ.Say("Game is running at: %d x %d, %d-bit colour", System.ScreenWidth, System.ScreenHeight, System.ColorDepth); Renvoi un très jolie : - J. a écrit:
- Game is running at: 1024 x 768, 32-bit colour
Ce n'est pas la première fois que l'aide d'AGS me semble un peu bancale... - Kitai a écrit:
- N'oublie pas que le joueur peut se déplacer dans la pièce et que le décalage à l'écran est donc variable.
En l'état il me semble que ton code ne scanne que l'écran Bien vu ! Soit je bidouille un truc avec le viewport, soit j’abandonne. Je crois que j'abandonne, car ça marche vraiment pas mal, là. - Kitai a écrit:
- Si vraiment tu veux garder en mémoire des données, je réitère ma suggestion de placer la détection dans la fonction on_event.
A ma grande honte, je n'ai pas réussit à coder un truc potable pour que le GetAtScreenXY fouille toute la pièce et pas juste l'écran. J'ai des progrès à faire, encore.
Dernière édition par Billbis le Lun 26 Nov 2012 - 16:37, édité 2 fois |
| | | Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [Module] ShowInteractiveAreas Dim 25 Nov 2012 - 16:03 | |
| - Billbis a écrit:
- IsInteractionAvailable n'est que moyennement pratique, vu qu'il faut spécifier le mode d'interaction en question... donc il faut screener tous les modes pour toutes les zones interactives identifiés, car si une seule interaction est possible ça vaut le coup de l'indiquer en zone interactive. J'ai peur que ça commence à faire lourd.
Je ne pense pas que ça alourdisse tant que ça l'exécution, d'autant moins si tu arrêtes d'explorer les modes dès que la fonction retourne 1 pour un mode (ce qui devrait être le cas pour la plupart des éléments interactifs). - Billbis a écrit:
- A ma grande surprise, et malgré ce blabla incompréhensible du manuel d'AGS :
- Code:
-
cJ.Say("Game is running at: %d x %d, %d-bit colour", System.ScreenWidth, System.ScreenHeight, System.ColorDepth); Renvoi un très jolie :
- J. a écrit:
- Game is running at: 1024 x 768d, 32-bit colour
Ce n'est pas la première fois que l'aide d'AGS me semble un peu bancale... Hm, je pense simplement que l'aide n'est pas à jour. Par "largeur/hauteur véritable", je pense que CJ voulait dire "pas en coordonnées de la pièce (basse résolution)". C'est bon à savoir en tout cas - Billbis a écrit:
- Bien vu ! Soit je bidouille un truc avec le viewport, soit j’abandonne. Je crois que j'abandonne, car ça marche vraiment pas mal, là.
- Billbis a écrit:
- A ma grande honte, je n'ai pas réussit à coder un truc potable pour que le GetAtScreenXY fouille toute la pièce et pas juste l'écran. J'ai des progrès à faire, encore.
Il me semble que ce n'est pas si compliqué que ça : plutôt que d'avoir un random sur ScreenWidth et ScreenHeight, tu en fais un d'après les dimensions de la surface (en résolution réelle) de fond de la pièce. Ensuite tu soustraies GetViewPortX ou GetViewPortY quand tu passes la coordonnée dans GetAtScreenXY. |
| | | Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: [Module] ShowInteractiveAreas Mer 28 Nov 2012 - 18:18 | |
| - Kitai a écrit:
- Il me semble que ce n'est pas si compliqué que ça : plutôt que d'avoir un random sur ScreenWidth et ScreenHeight, tu en fais un d'après les dimensions de la surface (en résolution réelle) de fond de la pièce. Ensuite tu soustraies GetViewPortX ou GetViewPortY quand tu passes la coordonnée dans GetAtScreenXY.
Oui, c'était pas très compliqué. La prochaine version gardera en mémoire les hotspots précédemment trouvés tant que le joueur ne quitte pas la pièce. Donc, une fois qu'il aura trouvé un petit hotspot, l’algorithme l'affichera correctement toute les fois suivantes. Je vous ferai les calculs un peu plus tard, mais contrairement à avant, un (tout) petit hotspot aura de plus en plus de chance d'être détectés a chaque pression sur la barre d'espace. La détection continu a ne se faire que sur l'écran, et pas sur toute la room. Plus j'y pense, moins j'ai envie de faire une détection sur toute une room, que ce soit dans un on_event ou à chaque on_KeyPresse, car la surface des rooms peu facilement varier de 1 à 10 ou 20. Donc en fonction des rooms, la précision de la détection où le temps de calculs ne seront pas les mêmes, ce qui m’embête un peu. - Kitai a écrit:
- Billbis a écrit:
IsInteractionAvailable n'est que moyennement pratique, vu qu'il faut spécifier le mode d'interaction en question... donc il faut screener tous les modes pour toutes les zones interactives identifiés, car si une seule interaction est possible ça vaut le coup de l'indiquer en zone interactive. J'ai peur que ça commence à faire lourd. Je ne pense pas que ça alourdisse tant que ça l'exécution, d'autant moins si tu arrêtes d'explorer les modes dès que la fonction retourne 1 pour un mode (ce qui devrait être le cas pour la plupart des éléments interactifs). J'ai codé une petite fonction comme tu me l'as suggéré : - Code:
-
function siaIsAnInteractionAvailable (int x, int y) { if (IsInteractionAvailable(x, y, eModeInteract) != 0) return true; else if (IsInteractionAvailable(x, y, eModeLookat) != 0) return true; else if (IsInteractionAvailable(x, y, eModePickup) != 0) return true; else if (IsInteractionAvailable(x, y, eModeTalkto) != 0) return true; else if (IsInteractionAvailable(x, y, eModeUseinv) != 0) return true; else return false; }
Puis rajouté un petit : - Code:
-
if (siaIsAnInteractionAvailable(siaObjectX-GetViewportX(), siaObjectY-GetViewportY())) au bon endroit, et ça fonctionne bien. La preuve : Le magnifique Trou Noir, qui est un objet sans aucune interaction, n'est pas affiché comme interactif. En revanche, la barque, qui possède des interactions, est bien identifiée comme zone interactive (bon, vous me faite confiance, elle est hors champ). Par contre, ça fonctionne un peu trop comme attendu. Si Harris l'interactif passe devant le Trou Noir non interactif : Et bien ne voilà t'il pas que le Trou Noir est affiché comme interactif ! Logique, vu mon script... Du coup, cette vérification introduit quand même plus de problèmes qu'elle n'en résout. Il y a sans doute moyen de coder une usine à gaz pour faire tourner tout ça correctement, mais ça me tente moyen. Une custom propertie (j' les custom properties, elles sont so orienté objet) qui définie si un objet / personnage / hotspot doit ne pas être affiché me semble plus pratique. Sinon, je renouvelle mon appel aux testeurs, quelqu'un a t-il essayé ce module sur son projet ? Fonctionne t-il comme attendu ? Depuis la beta 0.2 il s'installe et se désinstalle en un tour de clic. |
| | | Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: [Module] ShowInteractiveAreas Ven 30 Nov 2012 - 18:20 | |
| J'ai mis en ligne la nouvelle version, qui retient la position des hotspots déjà trouvés. Pour l'occasion, j'ai passé le module en v 1.0 et je vais prochainement le poster sur le forum anglophone. Cela dit, je reste ouvert à toutes propositions d'amélioration ou d'optimistation. Et si je les refuse, n'hésitez pas à proposer votre fork. De même, n'hésitez pas à héberger ce module sur votre serveur. |
| | | Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [Module] ShowInteractiveAreas Ven 30 Nov 2012 - 19:06 | |
| Enh l'autre eh, il veut se faire héberger son module à l’œil !
Il faudra que je le teste à l'occasion, mais je ne passe pas sous Windows ces temps-ci et j'ai peu de temps libre. Toutefois je pense que tu auras du retour de la part du forum anglophone, je pense que c'est une très bonne initiative (moi les conventions de modules m'ont chaque fois découragé à poster là-bas, alors que je pense que ces conventions sont inestimables...). Il faudrait que je me motive pour le faire un jour ou l'autre. _________________ 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 ! |
| | | Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: [Module] ShowInteractiveAreas Mer 20 Mar 2013 - 21:03 | |
| Nouvelle version du module. Les premiers postes ont été mise à jour en conséquence. Avant, le module ne fonctionnait pas lorsque le joueur se déplaçait, il fallait attendre la fin du mouvement pour que la barre d'espace ait un effet. Maintenant, tant que la barre d'espace est enfoncé, le jeu est mis en pause et du coup, le module fonctionne correctement même lors des mouvement du joueur. - Kitai a écrit:
- (ça marche vraiment d'ailleurs ces propriétés ScreenWidth/ScreenHeight ? Je croyais que ça n'avait pas de rapport direct avec la résolution du jeu).
Après re-lecture du manuel est quelques testes personnels, il apparait que system.ScreenWidth() renvoie la largeur de l’écran en tenant compte des bandes noirs latérales en mode plein écran. Du coup, et même si ça fonctionnait apparemment sans problèmes, je les ai changé en system.ViewportWidth(). C'est plus propre. Donc tu avais (une fois de plus) raison. |
| | | Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: [Module] ShowInteractiveAreas Dim 26 Mai 2013 - 12:36 | |
| Le début de la gloire : Mon module est maintenant crédité dans au moins un jeux AGS : A Cat's Night 2 par WarioPunk / PuNKKoMmANDO77. Hé oui, je double poste à but purement égoïste, pour me vanter et flooder comme un gros troll. |
| | | Shai-la Ouvrière en Chef de la Grande Tasse Bleue
Nombre de messages : 6018
Age : 46
Localisation : Montpellier
Date d'inscription : 17/04/2006
| Sujet: Re: [Module] ShowInteractiveAreas Dim 26 Mai 2013 - 17:27 | |
| Bravo |
| | | Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [Module] ShowInteractiveAreas Dim 26 Mai 2013 - 17:40 | |
| Félicitations Billbis ! Grâce à toi, la communauté francophone continue de répandre sa toile petit à petit. Qui sait, tu sera peut-être bientôt le nouveau Monsieur OUXX ? _________________ 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 ! |
| | | Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: [Module] ShowInteractiveAreas Jeu 4 Juil 2013 - 19:25 | |
| Petite mise à jour mineure (v 1.3). La principale modification est la non prise en compte des objets non cliquables (décoratifs) lors du dessin des curseurs. Je ne comprend pas bien pourquoi je ne l'ai pas fait dès les premières versions... mais c'est corrigé. Cette nouvelle version est rétrocompatible avec la précédente (qui elle même était rétrocompatible avec la v1.0). |
| | | Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: [Module] ShowInteractiveAreas Ven 5 Juil 2013 - 19:57 | |
| Mise à jour du jour : -v1.3 : Tant qu'a faire, les hotspots non activés (Enabled) ne sont plus affichés non plus. Et en plus j'ai fait un léger toilettage du code. -v1.3 *Alternative Edition* : La détection automatique des coordonnées de hotspots disparait aux profits de coordonnées spécifiés manuellement par l'utilisateur, voir les premiers posts. A vous de choisir |
| | | Contenu sponsorisé
| Sujet: Re: [Module] ShowInteractiveAreas | |
| |
| | | | [Module] ShowInteractiveAreas | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |