Forum d'entraide à la création de jeux d'aventure
 
PortailPortail  AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
-28%
Le deal à ne pas rater :
-28% Machine à café avec broyeur à grain MELITTA Purista
229.99 € 318.99 €
Voir le deal

 

 Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)

Aller en bas 
5 participants
Aller à la page : 1, 2  Suivant
AuteurMessage
Skippy92
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue



Nombre de messages : 75

Date d'inscription : 02/03/2013


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptyMer 8 Mai 2013 - 22:14

Démo testée.
Bravo pour les graphismes, c'est très réussi !
Félicitations.

Billbis et Kitai ont déjà dit beaucoup de choses.
J'ajouterai juste deux remarques :
- Je trouve que la boîte est un peu trop au premier plan, laissant le passage vers la room suivante un peu réduit.
- Il n'y a pas de porte pour sortir de la cabane.

En tout cas, très encourageant pour ton jeu à venir !
Revenir en haut Aller en bas
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue



Nombre de messages : 2907

Date d'inscription : 01/08/2006


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptyMer 8 Mai 2013 - 22:30

XZS a écrit:
Par contre, je ne peux plus utiliser les objets de l'inventaire. confus
Comment réactiver cette fonction, tout en gardant le style "2-Clics : gauche > Walk / droit > Interact" ?
J'imagine que c'est en rapport avec ça (toujours dans le GlobalScript, partie "function on_mouse_click(MouseButton button)" :
En effet, c'est en rapport avec ça.
Si tu regardes ton code plus haut, tu lances le mode marche avec le clic gauche et le mode interaction avec le clic droit. Mais nulle part dans ce code tu ne considères la possibilité d'utiliser un objet d'inventaire.
La solution est donc, comme dans le bout de code que tu as copié ici, de vérifier la propriété ActiveInventory, comme ça :
Code:
function on_mouse_click(MouseButton button) {
  if (button == eMouseLeft) {
    if (player.ActiveInventory != null) // Si le joueur a un objet d'inventaire dans la main
      ProcessClick(mouse.x,mouse.y,eModeUseInv); // On lance en mode Inventaire
    else // Sinon, en mode marcher
      ProcessClick(mouse.x,mouse.y,eModeWalkto);
  }
  else if (button == eMouseRight) {
  // Pour interagir
    ProcessClick(mouse.x,mouse.y,eModeInteract);
  }
}
Tu peux le faire en clic droit si tu préfères :
Code:
function on_mouse_click(MouseButton button) {
  if (button == eMouseLeft) {
  // Pour marcher
    ProcessClick(mouse.x,mouse.y,eModeWalkto);
  }
  else if (button == eMouseRight) {
    if (player.ActiveInventory != null) // Si le joueur a un objet d'inventaire dans la main
      ProcessClick(mouse.x,mouse.y,eModeUseInv); // On lance en mode Inventaire
    else // Sinon, en mode interaction
      ProcessClick(mouse.x,mouse.y,eModeInteract);
  }
}

XZS a écrit:
J'ai donc bien le "walk" par défaut sur le clic gauche, ainsi que le "Interact" sur le clic droit.
J'ai remplacé tous mes anciens "TalkTo" et "LookAt" en "Interact", ça marche !
En fait tu peux même faire plus efficace : tu peux scruter la zone survolée par la souris pour voir s'il y a des interactions disponibles !
Cela se fait avec la fonction IsInteractionAvailable.
Imagions que tu veuilles que le clic gauche corresponde au mode marcher quand tu ne survoles rien, au mode regarder quand il y a quelque chose à regarder, et le clic droit au mode parler s'il y a de quoi parler, au mode interagir sinon.
Tu obtiens quelque chose comme ça :
Code:
function on_mouse_click(MouseButton button) {
  if (button == eMouseLeft) {
    // S'il y a une interaction disponible à cet endroit de l'écran en mode "regarder"
    if (IsInteractionAvailable(mouse.x,mouse.y, eModeLookat))
      ProcessClick(mouse.x,mouse.y,eModeLookat); // On lance le mode "regarder"
    else // Sinon, on lance le mode "marcher"
      ProcessClick(mouse.x,mouse.y,eModeWalkto);
  }
  else if (button == eMouseRight) {
    if (player.ActiveInventory != null) // Si le joueur a un objet d'inventaire dans la main
      ProcessClick(mouse.x,mouse.y,eModeUseInv); // On lance en mode Inventaire
    else { // S'il n'a pas d'objet
      // Si on peut parler
      if (IsInteractionAvailable(mouse.x,mouse.y, eModeTalkto))
        ProcessClick(mouse.x,mouse.y,eModeTalkto); // on parle
      // Sinon, on interagit !
      else
        ProcessClick(mouse.x,mouse.y,eModeInteract);
    }
  }
}
Ça ce n'est qu'un exemple, après tu peux utiliser cette fonction pour changer l'apparence de ton curseur au survol, histoire de rendre ce qui se trouve à l'écran plus lisible.
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
XZS
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue
XZS


Nombre de messages : 66

Age : 43

Localisation : A porté de fusil de Paris

Date d'inscription : 24/04/2013


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptyMer 8 Mai 2013 - 22:47

Kitai, j'ai bien mis le code (mode "interagir avec clic droit"), donc maintenant je peux utiliser un objet de l'inventaire pour le faire interagir avec un hotspot. Mais, par contre, pas moyen de retourner en mode "Interact" normal, avec le clic droit ! L'objet de l'inventaire reste actif une fois utilisée et même si je change manuellement de mode (en passant par la GUI principale, qui est toujours la même qu'avant).

Hors-Sujet : foutu AGS, qui est sensible à la casse (par exemple "eModeWalkTo" ne marche pas, mais "eModeWalkto" oui, tout comme "eModeLookAt" et "eModeLookat") Grrr !

Hors-Sujet 2 : Merci à vous tous pour votre support et l'épatante réactivité dans votre aide !

_________________
Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 IXA3RW9hzzL82
Revenir en haut Aller en bas
https://www.youtube.com/LBQ3TS
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


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptyJeu 9 Mai 2013 - 7:59

XZS a écrit:
Mais, par contre, pas moyen de retourner en mode "Interact" normal, avec le clic droit ! L'objet de l'inventaire reste actif une fois utilisée et même si je change manuellement de mode (en passant par la GUI principale, qui est toujours la même qu'avant).
C'est parce que dans notre code, on ne regarde pas le mode de la souris pour déclencher eModeUseInv, on regarde si le personnage a un objet d'inventaire en main avec ActiveInventory.
C'est donc cette propriété qu'il va falloir modifier si tu veux que le clic cesse de se déclencher en mode eModeUseInv. Une solution peut être de retirer l'objet d'inventaire de la main du joueur dès qu'il a cliqué avec, comme ça :
Code:

  // ...
  else if (button == eMouseRight) {
    if (player.ActiveInventory != null) { // Si le joueur a un objet d'inventaire dans la main
      ProcessClick(mouse.x,mouse.y,eModeUseInv); // On lance en mode Inventaire
      player.ActiveInventory = null; // On retire l'objet d'inventaire de la main du joueur
    }
    // suite éventuelle du code clic droit

_________________
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 !
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Billbis


Nombre de messages : 1346

Date d'inscription : 10/05/2012


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptyJeu 9 Mai 2013 - 9:45

Coucou XZS.
Félicitation pour t'être lancé dans la modification du gameplay !
Moi je partirai plutôt sur une modification dynamique du mode de curseur, comme Kitai l'a suggéré :
Kiati a écrit:
Ça ce n'est qu'un exemple, après tu peux utiliser cette fonction pour changer l'apparence de ton curseur au survol, histoire de rendre ce qui se trouve à l'écran plus lisible.
En gros, on va modifier le curseur en fonction de ce qu'il y a sous la souris, donc de façon dynamique dans un repeatidly execute. Si c'est un personnage, ce sera le mode eModeTalkto, si c'est un InvItem eModeInteract, si c'est rien eModeWalkto, et si c'est un hotspot ou un objet, soit eModeInteract, soit un autre mode personnalisé eModeChangeRoom (mode de curseur que j'ai crée en modifiant le Usermode1, pour les objets ou hotspots qui font changer de room) en fonction d'une custom property d'objet ou hotspot.
J'ai donc cette fonction dans un script :
Code:
bool DefaultMouseBehavior = true;

function CursorAspect()  //Change MouseMode in fonctions of underlying object
{
  if (DefaultMouseBehavior) { //Just a bool to deactivate this during MiniGame
    int x = mouse.x;
    int y = mouse.y;
    if (player.ActiveInventory == null) {
      if (GetLocationType(x, y) == eLocationNothing) {
        if (mouse.Mode != eModeWalkto)
          mouse.Mode = eModeWalkto; // WalkTo mode if nothing under mouse
      }
      else if (GetLocationType(x, y) == eLocationHotspot) {
        Hotspot* OnMouseHotspot = Hotspot.GetAtScreenXY(x, y);
        if (!OnMouseHotspot.GetProperty("ChangeRoomOnClick")) { //A custom properties to trigger a custom MouseMode ChangeRoom
          if (mouse.Mode != eModeInteract) {
            mouse.Mode = eModeInteract; // Interact mode on Object
          }
        }
        else {
          if (mouse.Mode != eModeChangeRoo) {
            mouse.Mode = eModeChangeRoo; //My custom MouseMode ChangeRoom
          }
        }
      }
      else if (GetLocationType(x, y) == eLocationObject) {
        Object* OnMouseObject = Object.GetAtScreenXY(x, y);
        if (!OnMouseObject.GetProperty("ChangeRoomOnClick")) {
          if (mouse.Mode != eModeInteract) {
            mouse.Mode = eModeInteract; // Interact mode on Object
          }
        }
        else {
          if (mouse.Mode != eModeChangeRoo) {
            mouse.Mode = eModeChangeRoo; //My custom MouseMode ChangeRoom
          }
        }
      }
      else if (GetLocationType(x,  y) == eLocationCharacter) {
        if (mouse.Mode != eModeTalkto) {
          mouse.Mode = eModeTalkto; // TalkTo mode on character
        }
      }
      if (InventoryItem.GetAtScreenXY(x, y)!= null) { //no else here
        if (mouse.Mode != eModeInteract) {
          mouse.Mode = eModeInteract; //Take inventory item
        }
      }
    }
  }
}
Que j'exécute dans mon repeatedly_execute :
Code:
function repeatedly_execute()
{
  InvGUIscrolling(); //Controls gInv display. Rien a voir avec le problème qui nous concerne ici.
  CursorAspect();
}
tout en l'ayant au préalable importé dans un en tête :
Code:
import function CursorAspect();
En conséquence, pour gérer le clic gauche, il me suffit de faire "ProcessClick(mouse.x, mouse.y, mouse.Mode);", modulo le fait que si on clic gauche sur rien avec un InvItem, on l’enlève. Le clic droit sert à regarder ou à désactiver l'InvItem.
Code:
function on_mouse_click(MouseButton button) // called when a mouse button is clicked. button is either LEFT or RIGHT
{
  if (IsGamePaused() == 1) {// Game is paused, so do nothing (ie. don't allow mouse click)
  }
  else if (button == eMouseLeft) {
    if((player.ActiveInventory != null) && (GetLocationType(mouse.x, mouse.y) == eLocationNothing)){
      player.ActiveInventory = null; //left click on nothing with InvItem looses InvItem.
    } else {
      ProcessClick(mouse.x, mouse.y, mouse.Mode); //Left click on thing launch interaction
    }
  }
  else if (button == eMouseRight) {// right-click, so look at spot, and loss active.inventory
    if(player.ActiveInventory != null) {
      player.ActiveInventory = null;
    } else {
      ProcessClick(mouse.x, mouse.y, eModeLookat); //Look at things with right click
    }
  }
}
J'ai vérifié chez moi, normalement ce code est à peu près copié-collable à condition de bien créer le mode eModeChangeRoo(m) (le m ne rentre pas, limite de caractère) et la Custom Property associée.
Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 1368092500-changeroom
Dans l'état, ce code comporte quelques limites dont il faut être conscient, mais qui sont corrigeables. Si par facilité, on décide de créer un objet en tant que character pour profiter de plus de fonctions de script, le survol de cet objet déclenchera le mode Talkto. Une solution pourrait être de passer par une autre Custom Propertiy. De même, si un objet est purement esthétique il déclenchera le changement de curseur. Je ne suis pas fan de la solution IsInteractionAvailable, je préfère là encore une custom property.
Bon courage !

_________________
Mon petit DevBlog


Dernière édition par Billbis le Jeu 9 Mai 2013 - 10:50, édité 1 fois
Revenir en haut Aller en bas
http://nothingaboutthedog.blogspot.fr/
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


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptyJeu 9 Mai 2013 - 10:35

Billbis a écrit:
J'ai vérifié chez moi, normalement ce code est à peu près copié-collable à condition de bien créer le mode eModeChangeRoo(m) (le m ne rentre pas, limite de caractère) et la Custom Property associée.
Si je ne m'abuse, il faut aussi faire quelque chose pour la variable booléenne DefaultMouseBehavior, dans l'idéal enlever la condition dessus.

Billbis a écrit:
Je ne suis pas fan de la solution IsInteractionAvailable, je préfère là encore une custom property.
Bon courage !
Je comprends ta réticence à utiliser cette méthode dans ton module, mais en l'occurrence elle me paraît tout à fait adaptée : on scrute ce qui se trouve sous le curseur à l'écran pour l'interaction qui serait déclenchée lors d'un clic à cet endroit. Utiliser IsInteractionAvailable est donc parfaitement adapté, puisque comme le dit l'aide à son propos
Aide AGS fr a écrit:
Cette fonction est très similaire à ProcessClick, excepté qu'au lieu de traiter des interactions elles-mêmes, elle retourne simplement 1 si quelque chose se produisait, ou 0 si unhandled_event était appelée.
Donc utiliser IsInteractionAvailable pour déterminer le mode de curseur à utiliser avec ProcessClick me semble couler de source.

_________________
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 !
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Billbis


Nombre de messages : 1346

Date d'inscription : 10/05/2012


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptyJeu 9 Mai 2013 - 10:48

Kitai a écrit:
J'ai vérifié chez moi, normalement ce code est à peu près copié-collable à condition de bien créer le mode eModeChangeRoo(m) (le m ne rentre pas, limite de caractère) et la Custom Property associée.
Si je ne m'abuse, il faut aussi faire quelque chose pour la variable booléenne DefaultMouseBehavior, dans l'idéal enlever la condition dessus.
Ha oui, tout à fait. Je m'en vais éditer mon post. (C'est fait)
Kitai a écrit:
Je comprends ta réticence à utiliser cette méthode dans ton module, mais en l'occurrence elle me paraît tout à fait adaptée : on scrute ce qui se trouve sous le curseur à l'écran pour l'interaction qui serait déclenchée lors d'un clic à cet endroit.
Oui, tu as raison là aussi. ^^
Merci pour ces conseils avisés.

_________________
Mon petit DevBlog


Dernière édition par Billbis le Jeu 9 Mai 2013 - 15:28, édité 1 fois
Revenir en haut Aller en bas
http://nothingaboutthedog.blogspot.fr/
XZS
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue
XZS


Nombre de messages : 66

Age : 43

Localisation : A porté de fusil de Paris

Date d'inscription : 24/04/2013


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptyJeu 9 Mai 2013 - 13:49

Salut les gens,

alors j'suis toujours autant épaté par votre aisance à tous avec le script, moi j'suis un peu à la rue coté logique de "codeur".
Vos approches sont vachement intéressantes, mais elles dépassent un peu mon level actuel de script ! clin d'oeil

Du coup, j'ai fait le faible et j'ai récup' un code plus ou moins déjà fait, que j'ai adapté un peu à mes besoins :

Code:
function on_mouse_click(MouseButton button) {

  if (button == eMouseLeft) {
    ProcessClick(mouse.x,mouse.y,eModeWalkto);
  }
  else if (button == eMouseRight) {
    ProcessClick(mouse.x,mouse.y,eModeInteract);
  }
  if (IsGamePaused() == 1) {
  }
 
  else if (button == eMouseLeft)  // Left click
  {
    if(GetLocationType(mouse.x, mouse.y) == eLocationNothing) // Si rien à cliquer, marche.
    {
      ProcessClick(mouse.x, mouse.y, eModeWalkto);
    }
    else
    {
      if(mouse.Mode == eModeUseinv)
      {
        ProcessClick(mouse.x, mouse.y, eModeUseinv);  // On passe en mode utilise inventaire.
      }
      else
      {
        ProcessClick(mouse.x,mouse.y, eModeInteract); // Interagit avec object/char/hotspot
      }
    }
  }
  else if (button == eMouseRight) // Clic droit, donc mode regarde ou annule l'utilisation d'inventaire
  {
    if(mouse.Mode == eModeUseinv)
    {
      mouse.Mode = eModeInteract;
    }
    else
    {
      ProcessClick(mouse.x,mouse.y, eModeLookat);
    }
  }

Clic gauche : Marcher et Interagir avec un objet de l'inventaire.
Clic droit : regarder/interagir (parler, ...).

Après, y'a des contraintes : si on veut marcher sur un endroit où un hotspot est par dessus la walkable area, ca va passer en mode "interagir". Faut que je modif' le code aussi pour qu'on utilise l'inventaire avec le clic droit, parce que c'est pas très naturel de devoir utiliser le clic gauche, qui sert ne qu'à se déplacer normalement.

Maintenant, j'vais tenter un p'tit mélange de ça avec le code de Billbis pour que le curseur change d'apparence selon ce qui est survolé.


_________________
Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 IXA3RW9hzzL82
Revenir en haut Aller en bas
https://www.youtube.com/LBQ3TS
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


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptyJeu 9 Mai 2013 - 16:16

XZS a écrit:
Après, y'a des contraintes : si on veut marcher sur un endroit où un hotspot est par dessus la walkable area, ca va passer en mode "interagir".
À vrai dire avec le code que tu as donné, je soupçonne que ça fera les deux : marcher jusqu'au hotspot et aussi déclencher l'interaction.

En effet, le code que tu as donné vérifie deux fois le bouton de clic : la première fois tu dis "si c'est le bouton gauche, on marche, si c'est le bouton droit, on interagit" et plus loin tu dis "si le jeu n'est pas en pause et si c'est le bouton gauche, on marche si on ne survole rien et on utilise l'objet d'inventaire/interagit si on survole quelque chose, si c'est le bouton droit, on passe en mode interagir/on regarde".
Donc si tu cliques gauches sur un hotspot, la première condition déclenchera la marche, la deuxième condition déclenchera l'interaction.

Je pense que tu devrais simplement te passer du premier couple "if"/"else if" concernant les boutons : ne garde ton code qu'à partir du "if isgamepaused".
À part ça, note bien qu'à aucun moment tu n'enlèves l'objet d'inventaire de la main du joueur, ce qui n'est pas l'idéal : tu te contentes de passer le curseur en mode interaction. Je serais toi, je rajouterais au moins player.ActiveInventory = null; sous mouse.Mode = eModeInteract;.

_________________
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 !
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
XZS
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue
XZS


Nombre de messages : 66

Age : 43

Localisation : A porté de fusil de Paris

Date d'inscription : 24/04/2013


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptyJeu 9 Mai 2013 - 17:41

Effectivement, Kitai, le début "if (button == eMouseLeft)..." venait d'un ancien morceau de code. sourire
Après tes conseils, je me retrouve avec un mode :
-clic gauche : marcher/interagir/utiliser objet inventaire (si en cours d'utilisation).
-clic droit : annule le mode "utiliser objet inventaire".

Je sais que c'était pas exactement le résultat attendu après vos propositions à tous, mais finalement c'est pas si mal.
Interface à 1 clic, quoi grand sourire

Sauf que virer l'objet en cours avec le clic droit ça fait un peu bizarre au début, mais encore une fois c'est pas siii mal (ça évite, par exemple que, si on a cliqué au mauvais endroit avec l'objet d'inventaire, on est pas obligé de retourner dans l'inventaire pour le re-sélectionner).

_________________
Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 IXA3RW9hzzL82
Revenir en haut Aller en bas
https://www.youtube.com/LBQ3TS
XZS
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue
XZS


Nombre de messages : 66

Age : 43

Localisation : A porté de fusil de Paris

Date d'inscription : 24/04/2013


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptyMer 15 Mai 2013 - 18:19

Je préfère poser trop de questions peut-être évidentes pour certains d'entre vous, parce que ça l'est pas encore vraiment pour moi sourire
Je cite le post de Billbis (en tronquant des passages, afin d'alléger mon post) qui est complet mais pas trop clair pour mon petit niveau en code. Merci d'avance !

Billbis a écrit:
J'ai donc cette fonction dans un script :
Code:
bool DefaultMouseBehavior = true;
function CursorAspect()  //Change MouseMode in fonctions of underlying object
{
  if (DefaultMouseBehavior) { //Just a bool to deactivate this during MiniGame
[...]
      }
      if (InventoryItem.GetAtScreenXY(x, y)!= null) { //no else here
        if (mouse.Mode != eModeInteract) {
[...]
 
Ca je le met dans un nouveau script, que j'appel "MouseMode.asc" par exemple ?



Citation :

Que j'exécute dans mon repeatedly_execute :
Code:
function repeatedly_execute()
{
  InvGUIscrolling(); //Controls gInv display. Rien a voir avec le problème qui nous concerne ici.
  CursorAspect();
}
Il faudrait que je le rentre où, ce code ? Pas dans chaque room, j'imagine ?



Citation :

tout en l'ayant au préalable importé dans un en tête :
Code:
import function CursorAspect();
Bon, ça j'imagine que ça irait dans le "MouseMode.ash", non ?



Citation :
En conséquence, pour gérer le clic gauche, il me suffit de faire "ProcessClick(mouse.x, mouse.y, mouse.Mode);",[...]

Code:
function on_mouse_click(MouseButton button) // called when a mouse button is clicked. button is either LEFT or RIGHT
{
  if (IsGamePaused() == 1) {// Game is paused, so do nothing (ie. don't allow mouse click)
 [...]

Tout ça va à la place de mon code déjà en place pour le "function on_mouse_click(MouseButton button)" du "GlobalScript.asc", c'est ça ?

Citation :
normalement ce code est à peu près copié-collable à condition de bien créer le mode eModeChangeRoo(m)
Pas con le "ChangeRoom", a priori j'en aurai pas besoin, mais sait-on jamais !

_________________
Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 IXA3RW9hzzL82
Revenir en haut Aller en bas
https://www.youtube.com/LBQ3TS
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Billbis


Nombre de messages : 1346

Date d'inscription : 10/05/2012


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptyMer 15 Mai 2013 - 19:05

XZS a écrit:
Ca je le met dans un nouveau script, que j'appel "MouseMode.asc" par exemple ?
Oui.

XZS a écrit:
Il faudrait que je le rentre où, ce code ? Pas dans chaque room, j'imagine ?
Dans le repeatedly_execute() du GlobalScript.asc. Une seule fois, donc.

XZS a écrit:
Bon, ça j'imagine que ça irait dans le "MouseMode.ash", non ?
Oui.

XZS a écrit:
Tout ça va à la place de mon code déjà en place pour le "function on_mouse_click(MouseButton button)" du "GlobalScript.asc", c'est ça ?
Oui.

Monsieur XZS, je vous attribue donc la note honorable de 15/20.
grand sourire

XZS a écrit:
Je préfère poser trop de questions peut-être évidentes pour certains d'entre vous
Ne t'inquiète pas, ce forum est en grande partie fait pour poser des questions sur AGS ! En plus, comme tu fais l'effort de comprendre ce qu'on explique, c'est un vrai plaisir de répondre !

Juste pour préciser un peu les chose, on est pas du tout obligé de passer par une fonction, on peut tout faire dans le GlobalScript.asc comme des sauvages.

Code:
function repeatedly_execute()
{
  if (DefaultMouseBehavior) { //Just a bool to deactivate this during MiniGame
    int x = mouse.x;
    int y = mouse.y;
    if (player.ActiveInventory == null) {
      if (GetLocationType(x, y) == eLocationNothing) {
        if (mouse.Mode != eModeWalkto)
          mouse.Mode = eModeWalkto; // WalkTo mode if nothing under mouse
      }
      else if (GetLocationType(x, y) == eLocationHotspot) {
        Hotspot* OnMouseHotspot = Hotspot.GetAtScreenXY(x, y);
        if (!OnMouseHotspot.GetProperty("ChangeRoomOnClick")) { //A custom properties to trigger a custom MouseMode ChangeRoom
          if (mouse.Mode != eModeInteract) {
            mouse.Mode = eModeInteract; // Interact mode on Object
          }
        }
        else {
          if (mouse.Mode != eModeChangeRoo) {
            mouse.Mode = eModeChangeRoo; //My custom MouseMode ChangeRoom
          }
        }
      }
      else if (GetLocationType(x, y) == eLocationObject) {
        Object* OnMouseObject = Object.GetAtScreenXY(x, y);
        if (!OnMouseObject.GetProperty("ChangeRoomOnClick")) {
          if (mouse.Mode != eModeInteract) {
            mouse.Mode = eModeInteract; // Interact mode on Object
          }
        }
        else {
          if (mouse.Mode != eModeChangeRoo) {
            mouse.Mode = eModeChangeRoo; //My custom MouseMode ChangeRoom
          }
        }
      }
      else if (GetLocationType(x,  y) == eLocationCharacter) {
        if (mouse.Mode != eModeTalkto) {
          mouse.Mode = eModeTalkto; // TalkTo mode on character
        }
      }
      if (InventoryItem.GetAtScreenXY(x, y)!= null) { //no else here
        if (mouse.Mode != eModeInteract) {
          mouse.Mode = eModeInteract; //Take inventory item
        }
      }
    }
  }
}

function on_mouse_click(MouseButton button) // called when a mouse button is clicked. button is either LEFT or RIGHT
{
  if (IsGamePaused() == 1) {// Game is paused, so do nothing (ie. don't allow mouse click)
  }
  else if (button == eMouseLeft) {
    if((player.ActiveInventory != null) && (GetLocationType(mouse.x, mouse.y) == eLocationNothing)){
      player.ActiveInventory = null; //left click on nothing with InvItem looses InvItem.
    } else {
      ProcessClick(mouse.x, mouse.y, mouse.Mode); //Left click on thing launch interaction
    }
  }
  else if (button == eMouseRight) {// right-click, so look at spot, and loss active.inventory
    if(player.ActiveInventory != null) {
      player.ActiveInventory = null;
    } else {
      ProcessClick(mouse.x, mouse.y, eModeLookat); //Look at things with right click
    }
  }
}

EDIT: J'arrive pas à faire partir les vilains " " de mon code sur le forum. pleure

_________________
Mon petit DevBlog
Revenir en haut Aller en bas
http://nothingaboutthedog.blogspot.fr/
XZS
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue
XZS


Nombre de messages : 66

Age : 43

Localisation : A porté de fusil de Paris

Date d'inscription : 24/04/2013


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptyMer 15 Mai 2013 - 19:24

Billbis a écrit:
comme tu fais l'effort de comprendre ce qu'on explique, c'est un vrai plaisir de répondre !
Merci ! L'idée c'est d'arriver à être autonome ensuite, sans devoir demander tout le temps. Mais ça va me prendre un peu de temps, c'est sûr.

Citation :
les vilains " "
Hehe, j'me demandais aussi qu'est-ce que c'était que ce code de ouf ! Bon c'est pas encore une autre facette étrange d'AGS, ça me rassure clin d'oeil


Je m'en vais essayer tout ça ! J'vais pondre une nouvelle démo d'ici la fin de la semaine si je peux. Histoire que vous voyez que vos précieux conseils portent leur fruit.
Merci encore, Billbis, t'es cool !

_________________
Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 IXA3RW9hzzL82
Revenir en haut Aller en bas
https://www.youtube.com/LBQ3TS
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


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptyMer 15 Mai 2013 - 21:41

XZS a écrit:
Citation :
les vilains " "
Hehe, j'me demandais aussi qu'est-ce que c'était que ce code de ouf ! Bon c'est pas encore une autre facette étrange d'AGS, ça me rassure clin d'oeil
Apparemment le bug est corrigé.

XZS a écrit:
Merci encore, Billbis, t'es cool !
Ouais c'est vrai, t'es plutôt cool clin d'oeil

_________________
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 !
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
XZS
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue
XZS


Nombre de messages : 66

Age : 43

Localisation : A porté de fusil de Paris

Date d'inscription : 24/04/2013


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptyJeu 16 Mai 2013 - 0:04

Billbis, quitte à perdre quelques points et tomber à 12/20 (rire), j'ai une question :

En ajoutant donc les différents codes que tu proposes, tout en retirant tout ce qui fait références au mode "eModeChangeRoo", ça ne fonctionne évidemment pas trop bien.

Du coup, ça me dérange pas de laisser ce mode, mais j'ai juste rien trouvé de très clair sur comment faire cette partie-là : "créer le mode eModeChangeRoo et la Custom Property associée."

Pour les custom property, j'ai ma petite idée, disons que sur le wiki officiel d'AGS c'est juste pas méga explicite à première vue sourire

Au final : si je veux ajouter ton code sans le Mode "eModeChangeRoo", je devrais m'y prendre comment ?
Ou sinon, quitte à le laisser, alors comment on créé le "eModeChangeRoo" avec sa "Custom Property" ?
(comme ça, j'aurai appris un truc de plus !)

Merci !


_________________
Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 IXA3RW9hzzL82
Revenir en haut Aller en bas
https://www.youtube.com/LBQ3TS
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


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptyJeu 16 Mai 2013 - 8:27

XZS a écrit:
Pour les custom property, j'ai ma petite idée, disons que sur le wiki officiel d'AGS c'est juste pas méga explicite à première vue sourire
Tu parles du manuel ?
Je pensais que la partie Comment les utiliser ? était assez explicite pour la création des propriétés personnalisées.

XZS a écrit:
Ou sinon, quitte à le laisser, alors comment on créé le "eModeChangeRoo" avec sa "Custom Property" ?
(comme ça, j'aurai appris un truc de plus !)
Comme le dit le manuel :
Aide AGS a écrit:
Les types CursorMode sont automatiquement générés selon les modes de curseurs que vous avez définis. Le nom du mode de curseur est récupéré, les espaces éventuels sont supprimés, et eMode est placé devant.
Cela signifie que tu as "simplement" à créer (ou à modifier) un mode de curseur dans l'onglet "Cursors" de l'éditeur AGS (clic droit dessus) et tu nommes le mode "ChangeRoo". La partie eMode sera ajoutée automatiquement devant dans le script, comme c'est écrit plus haut.

_________________
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 !
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
XZS
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue
XZS


Nombre de messages : 66

Age : 43

Localisation : A porté de fusil de Paris

Date d'inscription : 24/04/2013


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptyJeu 16 Mai 2013 - 13:59

Kitai a écrit:
Tu parles du manuel ?

Je faisais référence au wiki anglais d'AGS, et à cette page-là en particulier (mais, après lecture, c'est le même document au final, oui). A partir de "Since you don't yet have any custom properties...", quand tu le lis comme ça, c'est pas vraiment explicite, quand tu connais pas trop.

Du coup, ça me parle mieux "créer un curseur" que "créer un eModeChangeRoo avec sa Custom Property" grand sourire

Je me garde l'URL du manuel traduit en français (par tes soins, Kitai, non ?), qui est quand même bien utile.


PS : Remarques, en français, le "Lorsque vous n'avez encore défini aucune propriétés personnalisée, une fenêtre vide apparaîtra, cliquez alors sur le bouton “Edit Schema”, m'aiderait pas beaucoup non plus. La première fois, tu comprends pas comment avoir le "Edit Schema" puisque, justement, tu n'a rien à l'écran.

_________________
Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 IXA3RW9hzzL82
Revenir en haut Aller en bas
https://www.youtube.com/LBQ3TS
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


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptyJeu 16 Mai 2013 - 14:21

XZS a écrit:
Je me garde l'URL du manuel traduit en français (par tes soins, Kitai, non ?), qui est quand même bien utile.
Traduit par Billbis, brii, Crazy Legs, Godzillu (désolé aux autres si j'en oublie) et moi oui.
Petite question : c'est la première fois que tu remarques l'existence de ce manuel traduit ? Parce que quasiment tous les postes de ce forum contiennent un lien vers lui langue

XZS a écrit:
PS : Remarques, en français, le "Lorsque vous n'avez encore défini aucune propriétés personnalisée, une fenêtre vide apparaîtra, cliquez alors sur le bouton “Edit Schema”, m'aiderait pas beaucoup non plus. La première fois, tu comprends pas comment avoir le "Edit Schema" puisque, justement, tu n'a rien à l'écran.
Je ne comprends pas, lorsque tu n'as défini aucune propriété personnalisée, le bouton "Edit Schema" n'est pas présent en bas à droite de la fenêtre ? C'est le "vide" qui te pose problème ? C'est un abus de langage, en fait c'est le contenu-liste de la fenêtre qui est vide (il n'y a encore aucune propriété personnalisée de créée), mais la fenêtre présente bien des boutons, le bouton "Edit Schema" en l'occurrence si je ne m'abuse, à côté du bouton "Close".

_________________
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 !
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
XZS
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue
XZS


Nombre de messages : 66

Age : 43

Localisation : A porté de fusil de Paris

Date d'inscription : 24/04/2013


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptyJeu 16 Mai 2013 - 14:43

Kitai a écrit:
quasiment tous les postes de ce forum contiennent un lien vers lui
Hehe, oui je l'avais déjà remarqué, mais on ne perd pas comme ça ses habitudes de chercher en premier lieu sur le wiki original d'AGS en anglais, ou très souvent via Google, avec une requête du type "adventure game studio + truc particulier que je recherche (en anglais)".

Citation :
C'est le "vide" qui te pose problème ?
Tout dépend de quel "vide" on parle clin d'oeil

Pour faire plus clair, en lisant (un peu vite, je m'en rend compte maintenant) la page du manuel, je pensais que tu devais trouver ce qui est demandé, directement à l'ouverture de ton projet dans AGS :
Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 0111

Mais, comme dit plus haut, j'ai lu un peu vite l'article, puisqu'il est dit "les personnages, les objets, [...] ont tous une option “Properties” dans leur grille de propriétés. Sélectionnez-la et cliquez sur le bouton ”…“". Ce qui signifie "ouvrez un personnage (par exemple), pour obtenir la partie "Properties" :
Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 0210


qui permet d'avoir aussi le "edit schema" :
Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 0310

En fait, à mes yeux, ce qu'il manque un peu, ces des images pour illustrer le wiki/manuel.
J'suis sympa, j'te laisse le droit d'utiliser celles ci-dessus grand sourire (je plaisante).

Merci de ton aide, Kitai !



EDIT : sinon, maintenant tout marche bien ! Faut juste que je re-modifie mes interactions avec les personnages, parce que j'avais passé tous mes "talk to character" en "interact character"... Bon, c'est pas trèèès long à faire.

_________________
Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 IXA3RW9hzzL82
Revenir en haut Aller en bas
https://www.youtube.com/LBQ3TS
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Billbis


Nombre de messages : 1346

Date d'inscription : 10/05/2012


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptyJeu 16 Mai 2013 - 15:34

Juste pour info, le code sans le curseur de souris personnalisé (et un poil retouché pour l'occasion), doit ressembler a un truc comme ça :
Code:
// /!\ code non testé, présence de coquilles possibles.
bool DefaultMouseBehavior = true;

function repeatedly_execute()
{
  if (DefaultMouseBehavior) { //Just a bool to deactivate this during MiniGame
    int x = mouse.x;
    int y = mouse.y;
    if (player.ActiveInventory == null) {
      else if (GetLocationType(x, y) == eLocationHotspot) {
        if (mouse.Mode != eModeInteract) {
            mouse.Mode = eModeInteract; // Interact mode on Hotspot
        }
      }
      else if (GetLocationType(x, y) == eLocationObject) {
        if (mouse.Mode != eModeInteract) {
            mouse.Mode = eModeInteract; // Interact mode on Object
        }
      else if (GetLocationType(x,  y) == eLocationCharacter) {
        if (mouse.Mode != eModeTalkto) {
          mouse.Mode = eModeTalkto; // TalkTo mode on character
        }
      }
      else {
        if (mouse.Mode != eModeWalkto)
          mouse.Mode = eModeWalkto; // WalkTo mode if nothing under mouse
      }
      if (InventoryItem.GetAtScreenXY(x, y)!= null) { //no else here
        if (mouse.Mode != eModeInteract) {
          mouse.Mode = eModeInteract; //Take inventory item
        }
      }
    }
  }
}
 
function on_mouse_click(MouseButton button) // called when a mouse button is clicked. button is either LEFT or RIGHT
{
  if (IsGamePaused() == 1) {// Game is paused, so do nothing (ie. don't allow mouse click)
  }
  else if (button == eMouseLeft) {
    if((player.ActiveInventory != null) && (GetLocationType(mouse.x, mouse.y) == eLocationNothing)){
      player.ActiveInventory = null; //left click on nothing with InvItem looses InvItem.
    } else {
      ProcessClick(mouse.x, mouse.y, mouse.Mode); //Left click on thing launch interaction
    }
  }
  else if (button == eMouseRight) {// right-click, so look at spot, and loss active.inventory
    if(player.ActiveInventory != null) {
      player.ActiveInventory = null;
    } else {
      ProcessClick(mouse.x, mouse.y, eModeLookat); //Look at things with right click
    }
  }
}
Avouons que c'est tout de suite plus simple ! N'oublie pas de rajouter des IsInteractionAvailable partout, comme l'a suggéré Kitai :
Code:

// /!\ code non testé, présence de coquilles possibles.
bool DefaultMouseBehavior = true;

function repeatedly_execute()
{
  if (DefaultMouseBehavior) { //Just a bool to deactivate this during MiniGame
    int x = mouse.x;
    int y = mouse.y;
    if (player.ActiveInventory == null) {
      else if (GetLocationType(x, y) == eLocationHotspot) {
        if IsInteractionAvailable(x, y, eModeInteract) {
          if (mouse.Mode != eModeInteract) {
            mouse.Mode = eModeInteract; // Interact mode on Hotspot
          }
        }
      }
      else if (GetLocationType(x, y) == eLocationObject) {
        if IsInteractionAvailable(x, y, eModeInteract) {
          if (mouse.Mode != eModeInteract) {
            mouse.Mode = eModeInteract; // Interact mode on Object
          }
        }
      else if (GetLocationType(x,  y) == eLocationCharacter) {
        if IsInteractionAvailable(x, y, eModeTalkto) {
          if (mouse.Mode != eModeTalkto) {
            mouse.Mode = eModeTalkto; // TalkTo mode on character
          }
        }
      }
      else {
        if (mouse.Mode != eModeWalkto)
          mouse.Mode = eModeWalkto; // WalkTo mode if nothing under mouse
      }
      if (InventoryItem.GetAtScreenXY(x, y)!= null) { //no else here
        if (mouse.Mode != eModeInteract) {
          mouse.Mode = eModeInteract; //Take inventory item
        }
      }
    }
  }
}
 
function on_mouse_click(MouseButton button) // called when a mouse button is clicked. button is either LEFT or RIGHT
{
  if (IsGamePaused() == 1) {// Game is paused, so do nothing (ie. don't allow mouse click)
  }
  else if (button == eMouseLeft) {
    if((player.ActiveInventory != null) && (GetLocationType(mouse.x, mouse.y) == eLocationNothing)){
      player.ActiveInventory = null; //left click on nothing with InvItem looses InvItem.
    } else {
      ProcessClick(mouse.x, mouse.y, mouse.Mode); //Left click on thing launch interaction
    }
  }
  else if (button == eMouseRight) {// right-click, so look at spot, and loss active.inventory
    if(player.ActiveInventory != null) {
      player.ActiveInventory = null;
    } else {
      ProcessClick(mouse.x, mouse.y, eModeLookat); //Look at things with right click
    }
  }
}
Sinon, le Mode de curseur est configuré comme ça :
Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 1368718175-mousemode
Et je l'utilise comme ça :
Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 1368718333-changeroom2
Et dans le script :
Code:
function oBoat_Mode8()
{
  player.ChangeRoom(101, 464, 50);
}
Bon courage !

_________________
Mon petit DevBlog
Revenir en haut Aller en bas
http://nothingaboutthedog.blogspot.fr/
XZS
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue
XZS


Nombre de messages : 66

Age : 43

Localisation : A porté de fusil de Paris

Date d'inscription : 24/04/2013


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptyVen 17 Mai 2013 - 19:48

Nouvelle démo dispo et premier post mis à jour ! http://we.tl/t3nx88xovp

_________________
Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 IXA3RW9hzzL82
Revenir en haut Aller en bas
https://www.youtube.com/LBQ3TS
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Billbis


Nombre de messages : 1346

Date d'inscription : 10/05/2012


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptySam 18 Mai 2013 - 8:25

J'ai re-finit (je crois). Pas mal !
Bon, je reviens à la charge avec une deuxième série de remarques, mais ne te sens pas obligé de les mettre en pratique. ^^
  • La vidéo d'intro ne se lance pas chez moi en mode direct 3D, uniquement en mode DirectDraw 5 (mais du coup, les spirtes scallables à channel alpha ne sont plus antialisées...). A priori tu ne peux pas y faire grand chose cela dit, ça viendrai d'AGS... triste
  • Tu pourrais faire un jolie effet de coulissage pour le GUI affiché en haut. Tu le met toujours visible et tu rajoute un truc du genre dans le repeatedly_execute() du GlobalScript :
    Code:
    function repeatedly_execute()
    { //les valeurs numériques sont a customiser selon tes gouts
        if (mouse.y <50) {
          if (gInv.Y < 0) gInv.Y+=9 ; //Down the GUI when mouse on top
        }
        if (mouse.y >110) {
          if (gInv.Y > -90) gInv.Y-=9 ; //Up the GUI when mouse leave top
        }
    }
    D'ailleurs tu pourrais inclure la fenêtre d'inventaire directement dans ce GUI, a la place des icônes un peu inutiles du coup.
  • C'est moi, où on ne peut regarder avec le clic droit que la clé Anne Roumanoff ? Là, c'est carrément une interface simple clic (c'est pas mal, cela dit).
  • Les dames sur le dansefloor changent le curseur en eModeInteract : C'est des femmes objets ? ^^
  • La scène sous l'eau me fait décidément penser à celle de Chatterton. Les grands esprits se rencontrent !

Sinon, l'humour fait toujours mouche, bravo ! Sympa le panneau à boissons. clin d'oeil
Bon courage pour la suite.

_________________
Mon petit DevBlog
Revenir en haut Aller en bas
http://nothingaboutthedog.blogspot.fr/
XZS
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue
XZS


Nombre de messages : 66

Age : 43

Localisation : A porté de fusil de Paris

Date d'inscription : 24/04/2013


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptySam 18 Mai 2013 - 9:57

Merci Billbis, toujours des conseils avisés comme je les aime.

Billbis a écrit:
La vidéo d'intro ne se lance pas chez moi en mode direct 3D, uniquement en mode DirectDraw 5.
Ah c'est bizarre, elle se lance bien en Direct3D 9 chez moi. Aucune ruse en code, ce coup-ci, pour forcer la chose ?
J'ai un peu galéré à trouver un codec video (WMV dans mon cas) qu'AGS veuille bien lancer (j'ai essayé avec d'autres formats vidéos dont je suis sûr d'avoir les codecs installés, mais AGS me met un message d'erreur comme quoi le lecteur multimédia ne trouve pas de codec pour lire la vidéo). Je sais qu'il est "conseillé" le AVI ou MPG, mais en AVI j'ai pas de codec vraiment terrible et le MPG c'est vraiment dépassé.

Citation :
Tu pourrais faire un jolie effet de coulissage pour le GUI affiché en haut.

Oui ! J'suis preneur pour tout ce qui est petit effet sympa qui rajoute un coté "pro" au jeu sourire

Citation :
tu pourrais inclure la fenêtre d'inventaire directement dans ce GUI
Ca aussi, je prend ! J'ai pensé à quelque chose en remplacement des icônes maintenant inutiles.
Mettre l'inventaire serait bien pratique (je pense pas que y'aura jamais plus de 4 ou 5 objets au maximum, de toutes façons).

Citation :
C'est moi, où on ne peut regarder avec le clic droit que la clé Anne Roumanoff ?
Oups, ça devrait marcher aussi sur la robe de l'inventaire, bizarre...
Comme tu le remarques, "interface 2 clics" c'est un peu un abus, puisque le clic droit ne sert qu'a désélectionner l'objet en cours d'utilisation mais, techniquement, ça reste une interface à 2 clics clin d'oeil

Citation :
Les dames sur le dansefloor changent le curseur en eModeInteract : C'est des femmes objets ?
Ahah, je me suis fait la même réflexion après coup grand sourire Oui c'est des objets dans AGS, je sais plus pourquoi j'en ai pas fait des characters, comme les mecs qui marchent en arrière-plan.

Citation :
La scène sous l'eau me fait décidément penser à celle de Chatterton.
Je connais pas tiens, je vais aller voir ça !

_________________
Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 IXA3RW9hzzL82
Revenir en haut Aller en bas
https://www.youtube.com/LBQ3TS
XZS
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue
XZS


Nombre de messages : 66

Age : 43

Localisation : A porté de fusil de Paris

Date d'inscription : 24/04/2013


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptySam 18 Mai 2013 - 14:27

Vis-à-vis de la vidéo d'intro qui ne se lit pas, je pensais à deux "solutions" :
- j'ai lu ça et là que AGS prend nativement le format OGV. Est-ce que ça vaudrait le coup de convertir les vidéos en ce format, ou ça ne changera pas grand chose à cette histoire de Direct3D 9 ?

- En parlant de Direct3D 9, un mec a fait un plugin pour AGS, qui permet d'utiliser de la vidéo (entre autre) pour l'utiliser comme texture animée d'arrière-plan, via Direct3D 9. Je sais que l'utilisation de plugin limite le jeu à Windows (ce qui me gène pas vraiment, en soit). Est-ce que ça peut valoir le coup de passer par ce plugin, pour afficher la vidéo d'intro, en "trichant" en l'utilisant comme une image d'arrière-plan animée ?

C'est con, cette histoire, pouvoir lire une vidéo en WMV tout simplement, ça devrait être acquis tellement c'est la base...

_________________
Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 IXA3RW9hzzL82
Revenir en haut Aller en bas
https://www.youtube.com/LBQ3TS
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


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptySam 18 Mai 2013 - 14:41

XZS a écrit:
C'est con, cette histoire, pouvoir lire une vidéo en WMV tout simplement, ça devrait être acquis tellement c'est la base...
Certes, mais le WMV est un format propriétaire, ce qui complique potentiellement les choses.

D'un autre côté...
XZS a écrit:
- j'ai lu ça et là que AGS prend nativement le format OGV. Est-ce que ça vaudrait le coup de convertir les vidéos en ce format, ou ça ne changera pas grand chose à cette histoire de Direct3D 9 ?
Le format OGV (OGG) est un format ouvert, et pris en charge nativement par AGS comme tu le dis : pas besoin pour le joueur d'avoir les codecs d'installés sur son PC. Je pense que tu ne perds vraiment pas grand chose à la conversion, c'est un format éprouvé, donc si tu te sens motivé pour lancer la conversion, moi je ne peux que te le conseiller.
Toutefois, je ne sais pas avec certitude si ça réglera ton problème : ça mérite un essai.

_________________
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 !
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
XZS
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue
XZS


Nombre de messages : 66

Age : 43

Localisation : A porté de fusil de Paris

Date d'inscription : 24/04/2013


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptySam 18 Mai 2013 - 14:46

Kitai a écrit:
mais le WMV est un format propriétaire, ce qui complique potentiellement les choses.
Je sais bien, mais je pensais au fait (du moins sous Windows) qu'AGS utiliserait les codecs déjà installés sur le PC, qui le sont en théorie forcement pour ce qui est du WMV, donc ça ne devrait pas causer de problèmes juridiques, etc.

Citation :
Je pense que tu ne perds vraiment pas grand chose à la conversion, c'est un format éprouvé, donc si tu te sens motivé pour lancer la conversion, moi je ne peux que te le conseiller.
C'est juste que Vegas (mon logiciel de montage vidéo) ne gère pas l'OGV et, d'avance, ça me gave de chercher 10 ans un bon convertisseur vidéo (d'expérience, ça ne marche JAMAIS bien du premier coup). M'enfin, je vais faire l'effort.

Citation :
je ne sais pas avec certitude si ça réglera ton problème : ça mérite un essai.
Moi non plus. J'aimerai bien savoir à quoi Billbis fait référence quand il dit que le problème vient d'AGS (feature pas encore supportée, bug ?)

_________________
Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 IXA3RW9hzzL82
Revenir en haut Aller en bas
https://www.youtube.com/LBQ3TS
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Billbis


Nombre de messages : 1346

Date d'inscription : 10/05/2012


Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 EmptySam 18 Mai 2013 - 15:06

XZS a écrit:
Moi non plus. J'aimerai bien savoir à quoi Billbis fait référence quand il dit que le problème vient d'AGS (feature pas encore supportée, bug ?)
C'est un peu des deux, ça marche, mais pas partout et pas tout le temps... confus
En tout cas c'est un problème récurent (cherche "video" sur le forum anglophone).
Pour le convertisseur, il y a ce petit outil qui traine sur le forum anglophone.

_________________
Mon petit DevBlog
Revenir en haut Aller en bas
http://nothingaboutthedog.blogspot.fr/
Contenu sponsorisé





Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty
MessageSujet: Re: Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)   Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !) - Page 2 Empty

Revenir en haut Aller en bas
 
Last Night in Gretz WIP - (UPDATE 17 Mai : 2e démo dispo !)
Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» Chatterton à la recherche du bon méchant... DEMO DISPO P29!!
» A Cat's Night
» Krita enfin dispo pour windows!
» [Démo V0.1] Raging Torack
» Night Of The Meteor, du Maniac Mansion survitaminé

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Adventure Games Studio fr :: LES JEUX :: Les jeux en préparation-
Sauter vers: