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

Partagez | 
 

 Clic droit = lâcher l'objet

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


Nombre de messages : 99

Date d'inscription : 16/06/2011


MessageSujet: Clic droit = lâcher l'objet   Lun 20 Juin 2011 - 10:02

Bonjour...désolé de revenir ici tous les trois jours pour vous poser de nouvelles questions.
Je tiens tout de même à vous dire que je bosse sur mon projet AGS depuis une semaine à presque plein temps, et j'ai presque systématiquement trouvé les réponses à mes problèmes sur ce forum, donc merci.

Cependant, une fois de plus, un nouveau détail me taraude. Je voudrais faire en sorte que, lorsque le joueur utilise un objet de son inventaire (curseur changé en objet) le clic droit permette de désélectionner l'objet.
Ca ne semble pas un problème insoluble, pourtant, il doit me manquer la toute petite commande qui le permet, et je ne l'ai pas trouvé dans les commandes de script (ma nouvelle bible) présentes sur le forum.

J'ai déja modifié le Globalscript de manière à ce que le clic gauche fasse marcher/intéragir/utiliser objet de l'inventaire, et pour que le clic droit fasse regarder. Mais je ne trouve pas la commande pour lui faire plutôt lâcher l'objet s'il se trouve à la place du curseur.
Mon Globalscript ressemble à ça (J'ai supprimé pour plus de clarté les lignes qui ne concernaient pas mon problème...il y a peut-être des erreurs de script dans l'extrait, mais il n'y en a pas dans mon Globalscript) :

Code:

function on_mouse_click(MouseButton button) {
  if (IsGamePaused() == 1) {
  }
  else if (button == eMouseLeft)
{
  if (player.ActiveInventory!=null)
  {
  ProcessClick(mouse.x, mouse.y, eModeUseinv);
  }
  else
  {
ProcessClick(mouse.x, mouse.y, eModeInteract);
ProcessClick(mouse.x, mouse.y, eModeWalkto);
  }
}
  else if (button == eMouseRight || button == eMouseWheelSouth)
{
  if (player.ActiveInventory!=null)
  {
  cEgo.Say("Pour l'instant je dois aller désactiver l'objet dans l'inventaire.");
  }
  else
  ProcessClick(mouse.x, mouse.y, eModeLookat);
}


En toute logique, la commande manquante doit se trouver à la place de la ligne " cEgo.Say("Pour l'instant je dois aller désactiver l'objet dans l'inventaire.");"
J'ai essayé avec des commandes telles que mouse.Mode=eModeWalkto; ou mous.Mode=eModeInteract, l'objet disparait bien pour être remplacé par le curseur en question, mais les interactions sont toujours celles de l'objet (comme s'il était toujours utilisé). Et j'avoue ne pas avoir d'autres idées.

Voilà, ca ne doit pas être grand chose, peut-être même suis-je proche de la solution, mais je n'arriverais pas à la trouver tout seul. perplexe
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
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: Clic droit = lâcher l'objet   Lun 20 Juin 2011 - 15:45

T'en fais pas, c'est pas facile au début, et c'est déjà bien que tu réussisses à trouver les réponses par toi-même sur le forum, mais surtout en faisant des essais pratiques !

Au bout d'un moment on finit par s'habituer à un certain fonctionnement en programmation, et en ce qui concerne ton cas, ça concerne ActiveInventory.
Pour voir que le joueur a un objet sélectionné, tu vérifies que ActiveInventory ne vaut pas null. Autrement dit, si cette propriété vaut null, c'est qu'aucun objet n'est sélectionné. La solution pour déselectionner tout objet, c'est donc de définir ActiveInventory à null ^^
C'est d'ailleurs dit explicitement dans ta nouvelle bible langue

Voilà, je te laisse intégrer ça à ton code, bonne continuation.

_________________
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
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Pierrec
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 99

Date d'inscription : 16/06/2011


MessageSujet: Re: Clic droit = lâcher l'objet   Mar 21 Juin 2011 - 7:59

Merci beaucoup, ça marche, mais je ne comprends pas très bien pour autant, car je me sers aussi de ActiveInventory=null pour signifier que cEgo utiliser un objet d'inventaire.
En gros, mon code donne finalement :

Code:
  if (player.ActiveInventory!=null)
  {
    cEgo.ActiveInventory = null;
  }

En toute logique, on pourrait y lire : "Si le joueur n'utiliser pas d'objet d'inventaire, alors le personnage n'utilise pas d'objet d'inventaire"...ce qui n'a pas vraiment de sens.
Alors que bon, je voudrais plutôt dire "Si le joueur utiliser n'importe quel objet d'inventaire, alors il n'utilise plus d'objet d'inventaire.

Enfin bon...peu importe puisque ça marche.
Merci à toi, je peux me remettre en selle.

EDIT : Aaaaah sauf si != signifie "n'est pas égal". Je comprends tout maintenant.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
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: Clic droit = lâcher l'objet   Mar 21 Juin 2011 - 10:57

Pierrec a écrit:
EDIT : Aaaaah sauf si != signifie "n'est pas égal". Je comprends tout maintenant.
Voilà le mystère résolu clin d\\\\'oeil
Je me demande par contre comment t'avais pu arriver à placer le Say au bon endroit si t'avais pas remarqué ça langue

Note également que dans une condition if, tu vérifies la valeur d'une variable avec == (ou != pour la négation), ce qui est différent d'un simple = qu'on utilise après pour définir la valeur de cette variable (à null en l'occurrence).

_________________
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
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Pierrec
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 99

Date d'inscription : 16/06/2011


MessageSujet: Re: Clic droit = lâcher l'objet   Mar 21 Juin 2011 - 11:56

Je copie colle des choses que je trouve dans différents tutoriaux, et visiblement, je ne les comprends pas, je pensais que "null" singnifiait "n'importel quel" et non pas "aucun".
Pour le == oui, j'avais compris, mais dit comme ça c'est en effet très logique.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Clic droit = lâcher l'objet   Aujourd'hui à 19:16

Revenir en haut Aller en bas
 
Clic droit = lâcher l'objet
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Clic droit = lâcher l'objet
» Astuce: l'anti-clic droit
» FAQ (Ou comment contourner le fameux clic droit interdit, entre autres...)
» Astuce: l'anti-clic droit
» Introduction au développement de script sur NabCloud.fr (Et bientôt tous les serveurs OJN)

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: