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

Partagez | 
 

 [résolu]ClickAction inventory

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


Nombre de messages : 133

Age : 34

Localisation : Strasbourg

Date d'inscription : 10/02/2014


MessageSujet: [résolu]ClickAction inventory   Ven 19 Fév 2016 - 22:51

Bonjour,

Nouvelle question sur l'utilisation dans l'inventaire.

J'ai mon inventaire suivant:


Un fois remplit, une flèche apparaît en bas à droite pour indiquer la suite des objets ramassés.
Un clic dessus (gauche ou droite d'ailleurs) fonctionne très bien pour avancer ou reculer sur mes différents plans des objets.
Mon problème se situe lorsque je clique sur la flèche alors que j'ai un objet sélectionné (comme mon pass bleu et gris sur l'image par exemple) afin d'aller au plan suivant et le combiner par exemple avec un autre objet et bien mon pass disparaît et je me rend sur le plan suivant.
Y a-t-il un code spécial à intégrer?

J'ai un ClickAction en RunScript sur ma flèche (btnright) et mon code sur le OnClick est le suivant:
Code:
function btnright_OnClick(GUIControl *control, MouseButton button)
{
 Verbcoin.ScrollInventoryRight();
}


merci

_________________
Une agence de publicité, c'est 85 % de confusion et 15 % de commission.


Dernière édition par adauca le Sam 27 Fév 2016 - 15:02, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.mad-day.fr
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue


Nombre de messages : 2430

Date d'inscription : 01/08/2006


MessageSujet: Re: [résolu]ClickAction inventory   Sam 20 Fév 2016 - 0:47

Hm, si je me trompe pas, rien dans le code que tu as donné ne devrait te faire désélectionner l'objet.
Qu'est-ce que tu as dans la fonction on_mouse_click dans le script global ?

_________________
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
adauca
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 133

Age : 34

Localisation : Strasbourg

Date d'inscription : 10/02/2014


MessageSujet: Re: [résolu]ClickAction inventory   Sam 20 Fév 2016 - 1:03

En fait ma ligne de commande est dans le globalscript.
J'utilise le "Scumm VerbCoin GUI" pour gérer mon inventaire alors je ne sais pas trop quoi t'indiquer comme ligne de code...

_________________
Une agence de publicité, c'est 85 % de confusion et 15 % de commission.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.mad-day.fr
adauca
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 133

Age : 34

Localisation : Strasbourg

Date d'inscription : 10/02/2014


MessageSujet: Re: [résolu]ClickAction inventory   Sam 20 Fév 2016 - 1:57

En fait, il faudrait que je dise que si j'ai un objet de l'inventaire sélectionné et que je clique sur la flèche, alors je passe au plan suivant avec l'objet de l'inventaire sélectionné comme curseur...

_________________
Une agence de publicité, c'est 85 % de confusion et 15 % de commission.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.mad-day.fr
Threepwood
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 144

Age : 44

Localisation : Hyères

Date d'inscription : 29/12/2012


MessageSujet: Re: [résolu]ClickAction inventory   Sam 20 Fév 2016 - 4:28

Peut-être un truc du style
Code:
 mouse.Mode = eModeUseinv;

style
Code:
function btnIconCurInv_Click(GUIControl *control, MouseButton button) {
 
  if (player.ActiveInventory != null)
    mouse.Mode = eModeUseinv;


?

_________________
Projet en cours : KINGEEKS QUEST
http://kingeeks.blogspot.fr/
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 : 2430

Date d'inscription : 01/08/2006


MessageSujet: Re: [résolu]ClickAction inventory   Sam 20 Fév 2016 - 7:06

adauca a écrit:
J'utilise le "Scumm VerbCoin GUI" pour gérer mon inventaire alors je ne sais pas trop quoi t'indiquer comme ligne de code...
Je vois. L'idée c'est que tu ouvres ton script global, que tu cherches le texte "on_mouse_click" et si tu trouves quelque chose alors c'est que tu devrais être tombé sur la fonction on_mouse_click : du coup tu copies-colles son contenu ici.
Il est possible aussi que tu aies aussi ça dans le fichier script spécifique à Scumm (je sais plus son nom) mais du coup tu peux faire la même chose avec ce fichier script : chercher le texte "on_mouse_click" et coller ici le contenu de la fonction si tu trouves quelque chose.

_________________
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
adauca
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 133

Age : 34

Localisation : Strasbourg

Date d'inscription : 10/02/2014


MessageSujet: Re: [résolu]ClickAction inventory   Sam 20 Fév 2016 - 13:04

J'ai remarqué quelque chose également qui pourrait me mettre sur la piste.
Si j'ai un objet sélectionné et affiché mais que je clique dans l'inventaire ailleurs que sur un autre objet (clic gauche ou droit) et bien l'objet disparaît et le curseur se remet en mode walk (normal).

J'ai vu ce bout de code dans la partie "Scumm". Les débuts de code ne correspondent pas à ça par hasard? Car si déjà en temps normal l'objet se désélectionne par un clic il est normal que lorsque je clique sur ma flèche l'objet disparaît également... Je crois qu'il faut que je parte la dessus nan?

Code:
// Export Functions to be called in the Global Script
//-------------------------------------------------------------------

// Interact with the item under the cursor (Usage: keyboard support)
void _Verbcoin::RunInteraction(CursorMode option)
{
 if (option == eModePointer || option == eModeUseinv || option == eModeWait || option == eModeWalkto)
 {
 //do nothing
 }
 else
 {
 //deselect the item first
 if (mouse.Mode == eModeUseinv)
 {
 player.ActiveInventory = null;
 }
 if (gInventory.Visible == true)
 {
 if (InventoryItem.GetAtScreenXY(mouse.x, mouse.y) != null)
 {
 InventoryItem* item = InventoryItem.GetAtScreenXY(mouse.x, mouse.y);
 item.RunInteraction(option);
 }
 }
 else
 {
 ProcessClick(mouse.x, mouse.y, eModeInteract);
 }
 }
}

// Selects the item under the cursor if in the inventory (Usage: keyboard support)
void _Verbcoin::SelectInventoryItemUnderCursor()
{
 if (InventoryItem.GetAtScreenXY(mouse.x, mouse.y) != null)
 {
 if (player.ActiveInventory == null)
 {
 player.ActiveInventory = InventoryItem.GetAtScreenXY(mouse.x, mouse.y);
 }
 else
 {
 InventoryItem* item = InventoryItem.GetAtScreenXY(mouse.x, mouse.y);
 item.RunInteraction(eModeUseinv);
 }
 }
 else
 {
 ProcessClick(mouse.x, mouse.y, eModeUseinv );
 }
}

// Deselects the active item or quits the inventory if no item selected (Usage: keyboard support)
void _Verbcoin::DeselectInventoryItem()
{
 if (mouse.Mode == eModeUseinv)
 {
 player.ActiveInventory = null;
 }
 else
 {
 if(gui[this.inventory_GuiId].Visible == true)
 {
 gui[this.inventory_GuiId].Visible = false;
 }
 }
}

// Scrolls the inventory to the right, by the visible item count
void _Verbcoin::ScrollInventoryRight()
{
 if(Inv_window.ItemAtIndex[Inv_window.TopItem + (Inv_window.ItemsPerRow * Inv_window.RowCount)] != null)
 {
 Inv_window.TopItem = Inv_window.TopItem + (Inv_window.ItemsPerRow * Inv_window.RowCount);
 btnleft.Visible = true;
 if(Inv_window.ItemAtIndex[Inv_window.TopItem + (Inv_window.ItemsPerRow * Inv_window.RowCount)] == null)
 {
 btnright.Visible = false;
 }
 }
}

// Scrolls the inventory to the left, by the visible item count
void _Verbcoin::ScrollInventoryLeft()
{
 if(Inv_window.ItemAtIndex[Inv_window.TopItem - (Inv_window.ItemsPerRow * Inv_window.RowCount)] != null)
 {
 Inv_window.TopItem = Inv_window.TopItem - (Inv_window.ItemsPerRow * Inv_window.RowCount);
 btnright.Visible = true;
 if(Inv_window.ItemAtIndex[Inv_window.TopItem - (Inv_window.ItemsPerRow * Inv_window.RowCount)] == null)
 {
 btnleft.Visible = false;
 }
 }
}

// Open the inventory
void _Verbcoin::OpenInventory()
{
 if(this.inventory_Enabled == true)
 {
 if(gui[this.inventory_GuiId].Visible == false)
 {
 inv_entered = true;  
 gui[this.inventory_GuiId].Visible = true;
 if (Inv_window.ItemAtIndex[Inv_window.TopItem + (Inv_window.ItemsPerRow * Inv_window.RowCount)] != null)
 {
 btnright.Visible = true;
 }
 else
 {
 btnright.Visible = false;
 }
 if(Inv_window.ItemAtIndex[Inv_window.TopItem - (Inv_window.ItemsPerRow * Inv_window.RowCount)] != null)
 {
 btnleft.Visible = true;
 }
 else
 {
 btnleft.Visible = false;
 }
 }
 }
}

_________________
Une agence de publicité, c'est 85 % de confusion et 15 % de commission.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.mad-day.fr
adauca
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 133

Age : 34

Localisation : Strasbourg

Date d'inscription : 10/02/2014


MessageSujet: Re: [résolu]ClickAction inventory   Mar 23 Fév 2016 - 17:39

Alors après avoir réessayer un nouveau jeu pour tester le template verbcoin (au cas où toutes mes modifs et autres codes auraient fait bugger un truc), je me suis rendu compte que celui-ci n'avait pas par défaut la gestion du clic sur la flèche lorsqu'un objet de l'inventaire était sélectionné. J'ai fouillé un peu les scripts mais c'est trop compliqué pour moi. Si quelqu'un connait bien ce template et connait le problème je suis tout oui!


_________________
Une agence de publicité, c'est 85 % de confusion et 15 % de commission.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.mad-day.fr
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue


Nombre de messages : 2430

Date d'inscription : 01/08/2006


MessageSujet: Re: [résolu]ClickAction inventory   Mar 23 Fév 2016 - 20:35

adauca a écrit:
je me suis rendu compte que celui-ci n'avait pas par défaut la gestion du clic sur la flèche lorsqu'un objet de l'inventaire était sélectionné
Tu veux dire que le comportement est le même sur ton projet principal et sur le "nouveau jeu" test ? Si le comportement diffère, alors tu as dû changer quelque chose au script.

J'essayerai de jeter un œil dans la semaine (j'oublie pas le module Phylactere non plus) mais ce serait cool pour toi que quelqu'un s'attèle à la tâche avant moi 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
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
adauca
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 133

Age : 34

Localisation : Strasbourg

Date d'inscription : 10/02/2014


MessageSujet: Re: [résolu]ClickAction inventory   Mer 24 Fév 2016 - 14:09

Oui effectivement le code sur mon jeu actuel n'a pas été modifié en ce qui concerne la gestion des flèches de l'inventaire et la gestion d'objets avec celles-ci.
Le problème est déjà à la base dans le template. Et le "bug" apparaît alors dans tous nouveaux jeux créés avec celui-ci.
Il faudrait voir du coup si quelqu'un comprend le code de ce template afin de rectifier l'"erreur". Si tu t'attèles à la tâche ou au moins jettes un coup d'oeil je suis déjà rassuré clin d\\\\'oeil

En attendant j'ai de quoi faire et continue sur le jeu... Pas d'inquiétude sur le temps que tu prends... haha

En tout cas merci à toi, pour ma part je suis largué avec ce code donc je peux que m'en remettre à toi ou quelqu'un qui connait bien ce template...

@+

_________________
Une agence de publicité, c'est 85 % de confusion et 15 % de commission.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.mad-day.fr
adauca
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 133

Age : 34

Localisation : Strasbourg

Date d'inscription : 10/02/2014


MessageSujet: Re: [résolu]ClickAction inventory   Sam 27 Fév 2016 - 14:59

Bon, alors j'ai scruté TOUTES LES LIGNES du GUI Scumm VerbCoin, une après l'autre en essayant de comprendre ce que ça voulait dire et sur quoi ça interagissait et bien TADAAA!!!
J'ai trouvé ma réponse et mes flèches se comportent à merveille en gardant mon objet sélectionné.

Si jamais quelqu'un utilise se gui et a le même souci, voilà la partie du code concernée:
Code:
//===================================================================
 // CLICK MOUSE BUTTON (IN INVENTORY)
 //-------------------------------------------------------------------
 if (event==eEventGUIMouseDown && data == gui[Verbcoin.get_Inventory_GuiId()].ID)
 {
 // inventory item under the cursor?
 item = InventoryItem.GetAtScreenXY(mouse.x, mouse.y);
 // Right-click in inventory
 if (mouse.IsButtonDown(getMouseButtonRight(Verbcoin.get_Verbcoin_InvertInventoryMouse())))
 {
 if (item != null && player.ActiveInventory != null)
 {
 if (item == player.ActiveInventory)
 {
 player.ActiveInventory = null;
 }
 else
 {
 item.RunInteraction(eModeUseinv);
 }
 }
 else
 {
 // no item under the cursor, but you are holding an item
 if (player.ActiveInventory != null)
 {
 //player.ActiveInventory = null; //////////C'EST CETTE LIGNE QUI ME FAISAIT CH.....  /////////////////
 }
 else if (item == null && control != btnleft && control != btnright)
 {
 if (!Verbcoin.get_Verbcoin_InvertInventoryMouse())
 {
 Verbcoin.CloseInventory();
 }
 }
 else
 {
 player.ActiveInventory = item;
 }
 }
 }

Ouf, Kitai, tu peux t'économiser du temps là dessus! clin d\\\\'oeil
Pas besoin de te prendre la tête sur mon problème...

Problème résolu!

_________________
Une agence de publicité, c'est 85 % de confusion et 15 % de commission.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.mad-day.fr
Adipson
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 103

Age : 44

Localisation : Hyères

Date d'inscription : 21/02/2016


MessageSujet: Re: [résolu]ClickAction inventory   Sam 27 Fév 2016 - 16:14

bravo ! aller Kitai, ça relaisse du temps pour plancher sur Speech avec phylacthère !
sourire
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.adipson.fr
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue


Nombre de messages : 2430

Date d'inscription : 01/08/2006


MessageSujet: Re: [résolu]ClickAction inventory   Sam 27 Fév 2016 - 18:13

adauca a écrit:
Bon, alors j'ai scruté TOUTES LES LIGNES du GUI Scumm VerbCoin, une après l'autre en essayant de comprendre ce que ça voulait dire et sur quoi ça interagissait et bien TADAAA!!!
J'ai trouvé ma réponse et mes flèches se comportent à merveille en gardant mon objet sélectionné.
Super ! T'es un expert sur le sujet maintenant.

Du coup puisque tu as localisé le problème, je remarque maintenant que tu ne peux plus du tout "lâcher" l'objet lors d'un clic dans l'inventaire. Une solution serait donc de remplacer la ligne 27 que tu as commentée par ces lignes :
Code:
GUIControl* sousSouris = GUIControl.GetAtScreenXY(mouse.x, mouse.y);
if (sousSouris == null || sousSouris.AsInvWindow != null) player.ActiveInventory = null;

Si j'ai pas fait de bêtise, ça devrait ne faire lâcher l'objet que lors d'un clic dans le "vide" sur le gui ou bien sur le fond de la fenêtre d'inventaire.

Adipson a écrit:
bravo ! aller Kitai, ça relaisse du temps pour plancher sur Speech avec phylacthère !
sourire
C'est prévu, c'est prévu !

_________________
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
adauca
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 133

Age : 34

Localisation : Strasbourg

Date d'inscription : 10/02/2014


MessageSujet: Re: [résolu]ClickAction inventory   Dim 28 Fév 2016 - 17:46

Exact Kitai, enfin presque clin d\\\\'oeil

En fait, je considère que tout le monde n'est pas familiarisé avec ce genre de gameplay et certaines personnes ont tendance (en tout cas dans mon entourage) à cliquer un peu n'importe comment quand ils ne savent plus les commandes.

Les objets peuvent tout à fait être "lâchés" et désélectionnés par un premier clic droit puis un deuxième fait disparaître l'inventaire. C'est quelque chose de voulu que le clic gauche ne désélectionne justement pas l'objet en "main".

Imaginons également que le joueur sorte de l'inventaire et rate le clic sur un personnage ou un hotspot. (car il a cliqué trop vite ou juste à côté...) et bien dans mon cas l'objet sera encore en sa possession. Et il ne sera pas obligé de retourner dans l'inventaire, sélectionner à nouveau l'objet et cliquer à nouveau là où il voulait.

Bref, ça n'est que mon avis mais comme c'est mon jeu je fais comme je pense langue

Toutefois ça n'enlève en rien le fait que j’apprécie grandement ce petit détail et le garde bien au chaud pour mes prochains jeux si besoin...

_________________
Une agence de publicité, c'est 85 % de confusion et 15 % de commission.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.mad-day.fr
Contenu sponsorisé




MessageSujet: Re: [résolu]ClickAction inventory   Aujourd'hui à 19:50

Revenir en haut Aller en bas
 
[résolu]ClickAction inventory
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [RÉSOLU]Lapin capricieux n'aime pas orange
» Besoin d'un tutoriel[résolu]
» [Résolu] Le mystère de la borne d'arcade !!
» [Résolu] Problème d'accès à http://192.168.0.1
» Probleme megapack [Résolu]

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: