|
| [Résolu] probleme d'objets d'intentaire non actifs... | |
| | Auteur | Message |
---|
Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: [Résolu] probleme d'objets d'intentaire non actifs... Sam 13 Avr 2013 - 14:18 | |
| Il est vrai que sur le coup, j’aurais du tester le code que j'ai proposé avant. Il reste sans aucuns doutes d’innombrables coquilles qui, une foi copié / collé aboutissent à autant de bugs. Le code était plus à but pédagogique que pour être brutalement recopié dans un projet. En effet, si tu nous passe un template / projet, on pourra surement te le débugger, mais c'est moins formateur pour toi. Cela dit, j'ai du mal à saisir l'urgence de la situation. Tu peux tout à fait continuer à développer ton jeu, et ne finaliser le comportement de la souris qu'à la fin. |
| | | Threepwood Adepte de la Grande Tasse Bleue
Nombre de messages : 144
Date d'inscription : 29/12/2012
| Sujet: Re: [Résolu] probleme d'objets d'intentaire non actifs... Sam 13 Avr 2013 - 14:57 | |
| en effet y a pas d'urgence...c'est plutot une sorte de passade temporelle nevralgique due au fait que ca fait 2 jours que je passe dessus sans quasi dormir et que par rapport à mon comportement personnel de type assez tenace et organisé associé a 3 litres quotidien de café, je ne reste jamais sur un echec et fait toujours les choses dans l'ordre dans lessquelles je les lance... un peu un taré obtus qui baigne dans la doctrine du 'on ne remet jamais au lendemain..." D'ailleurs pour faire ce que j'entreprend avec ce jeu , tout seul, a la racine faut etre deja completement taré... mais quand on l'assume ...ça marche deja mieux lol Oui je continuerai avec un template souris par defaut d'ici ce week end ou la semaine, un template simple pour ce cas de figure car j'ai la certitude (confirmée ici) que ce genre de code est en fait très demandé...tant qu'a être fou, autant etre aussi altruiste non? je suis aussi nevrosé que mes png du jeu en fait... lol ceci explique cela ... methodique, organisé, et perfectioniste, têtu, acharné... apres j'ai aussi des defauts hein ! mais c'est pas le sujet (non l'abandon apres les 6 mois de casses tete que je viens de passer etait plus dans un esprit cynique et provoque/surealiste qu'autre chose...je suis pas pret de le laisser j'ai encore au moins 5 scenes a faire et ca prend 2 mois et demi par scenes.... D'ailleurs etant si perfectioniste et tete comment pourrai-je abandonner? même si l'appel des plages, , des poulette, de la bibine et du rosé frais sur le bord de plage et des siestes au soleil sur le sable chaud commencent déja a me faire des clins d'oeil et des appels du pieds depuis ce matin......va faloir que j'avance impérativement avant juin ici ...) |
| | | Threepwood Adepte de la Grande Tasse Bleue
Nombre de messages : 144
Age : 52
Localisation : Hyères
Date d'inscription : 29/12/2012
| Sujet: Re: [Résolu] probleme d'objets d'intentaire non actifs... Dim 14 Avr 2013 - 16:09 | |
| Et bien voilà ! I'll break the code ce dimanche soir, comme quoi ça sert d'être tenace et de s'octroyer un moment de pause entre 2 jours de code et de recherches ! Lol Donc la ligne de code que je cherchais pour eradiquer ce bug que j'expliquais au dessus est simplement : player.ActiveInventory = null; Tout simplement puisque je demandais a vouloir annuler l'actio nde l'icone via click droit... J'ai trouvé en fouinant et testant divers codes de la faq du forums uk d'ags... C'était tout simplement cette ligne de code qui me manquait ! Bon j'ai pas tésté la suite vu que je sais que dès qu'on repare quelque chose ca bug autre part mais je vais rester confiant.... ! Alors pour vous faire profiter du code que j'ai mis au point avec vos aides et vos astuces progressivement ce week end, je vous le colle ici en fonctionnel ! Le concept : ______________________________ curseur mode defaut : walkto click gauche > action Walk si passe sur objet/hotspot > action interract avec changement du curseur animé (mouse over) click droit : curseur et mode Lookat ________________________________ Inventaire : click gauche sur item inventaire : curseur item avec action interract click droit (c'est là que ca me bloquait...) : Annulation item, retour au mode mouse par defaut (walk/look) Et voilàààààà ! Pfiouuuu tout ça pour juste cette petite ligne ! enfin voilà bonne fin de dimanche et voici le résultat du code... Si jamais vous voulez l'alleger/ameliorer vous gênez pas. - Code:
-
[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) { ginfo.Visible=false; if (player.ActiveInventory == null) { Mouse.EnableMode(eModeUseinv); mouse.Mode= eModeInteract ; mouse.ChangeModeGraphic (eModeInteract, 1368); ProcessClick(mouse.x, mouse.y, mouse.Mode ); } if(GetLocationType(mouse.x, mouse.y)==eLocationHotspot){ mouse.Mode = (eModeWalkto); } if(GetLocationType(mouse.x, mouse.y)==eLocationCharacter){ mouse.Mode = (eModeTalkto); } if(GetLocationType(mouse.x, mouse.y)==eLocationObject){ mouse.Mode = (eModeInteract); } else if (player.ActiveInventory != null) { ProcessClick(mouse.x, mouse.y, eModeUseinv); } else mouse.ChangeModeGraphic (eModeWalkto, 85) ; ProcessClick(mouse.x, mouse.y, eModeWalkto); } if (mouse.Mode == eModeUseinv) { player.ActiveInventory = inventory[game.inv_activated]; if (button == eMouseRight){ player.ActiveInventory = null; // lose active inventory item mouse.Mode=eModeInteract; } if (button == eMouseLeft) ProcessClick(mouse.x, mouse.y, eModeUseinv); } else if (button == eMouseRight){ ginfo.Visible=false; mouse.Mode = eModeLookat ; mouse.ChangeModeGraphic (eModeLookat, 183); ProcessClick(mouse.x, mouse.y, mouse.Mode ); if(GetLocationType(mouse.x, mouse.y)==eLocationHotspot){ mouse.Mode = (eModeLookat); } if(GetLocationType(mouse.x, mouse.y)==eLocationCharacter){ mouse.Mode = (eModeLookat); } if(GetLocationType(mouse.x, mouse.y)==eLocationObject){ mouse.Mode = (eModeLookat); } else if (player.ActiveInventory != null) { ProcessClick(mouse.x, mouse.y, eModeUseinv); } else mouse.ChangeModeGraphic (eModeWalkto, 85) ; ProcessClick(mouse.x, mouse.y, eModeWalkto); } else mouse.Mode = (eModeInteract); } [/code] Pour le moment je continue dans ma philosophie de vie...peu importe le moyen, ce qui compte c'est le résultat alors le code est peut-être indigeste ici mais l'essentiel c'est qu'il me donne exactement ce que je recherchais à faire... et il servira certainement à d'autres !
Dernière édition par Threepwood le Mer 17 Avr 2013 - 8:11, édité 2 fois |
| | | Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: [Résolu] probleme d'objets d'intentaire non actifs... Lun 15 Avr 2013 - 15:12 | |
| C'est cool que t'aies trouvé la solution Threepwood, mais si tu relis bien le message de Billbis, la solution était marquée noire sur blanc (ou plutôt rouge sur bleu/gris foncé) : - Code:
-
else if (button == eMouseRight) { if (player.ActiveInventory != null) { player.ActiveInventory = null; Alors certes, un simple copier/coller ne marchait peut-être pas, mais l'analyse du code est assez sommaire : "si le bouton de clic est le bouton droit, et si le joueur utilise actuellement un objet d'inventaire, alors on n'utilise plus d'objet d'inventaire". Il fallait bien sûr chercher la signification de ActiveInventory pour bien comprendre ce code. C'est peut-être une qualité qu'il te reste à acquérir : prendre le temps d'analyser plus en profondeur les codes qu'on te donne _________________ 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 ! |
| | | Threepwood Adepte de la Grande Tasse Bleue
Nombre de messages : 144
Age : 52
Localisation : Hyères
Date d'inscription : 29/12/2012
| Sujet: Re: [Résolu] probleme d'objets d'intentaire non actifs... Lun 15 Avr 2013 - 15:37 | |
| oui exact !!!! Faut bien avoué qu'apres 3 jours de lutte non stop devant l'ecran j'avais plus vraiment les yeux en face des trous lol Le peux que je dormais j'arrivais presque a rever de If et de mouse.mode encore merci a Billbis !qui aura son nom dans le générique s'il est d'accors ..peut-etre meme un png a son nom dans les prochains chapitre du jeu |
| | | Billbis Disciple de la Grande Tasse Bleue
Nombre de messages : 1346
Date d'inscription : 10/05/2012
| Sujet: Re: [Résolu] probleme d'objets d'intentaire non actifs... Lun 15 Avr 2013 - 18:40 | |
| Y a pas de soucis, Threepwood. Content que le problème soit résolu. Pour les remerciements, sens toi libre ! Je ne réclame rien. Si tu tiens vraiment à me citer explicitement, pas de problème, j'en serai honoré (même si je ne vois pas pourquoi je mériterai un tel honneur...). |
| | | Threepwood Adepte de la Grande Tasse Bleue
Nombre de messages : 144
Age : 52
Localisation : Hyères
Date d'inscription : 29/12/2012
| Sujet: Re: [Résolu] probleme d'objets d'intentaire non actifs... Lun 15 Avr 2013 - 19:12 | |
| une affaire a suivre en 2014 lol sinon, j'ai mis a jour (edité) le code donné ci-dessus il manquait une fonction click Gauche d'action de l'item que je viens de découvrir dans mes tests ... et voilà (ca ne validait pas l'utilisation de litem sur un objet mais seulement sur hotspots) , il y a avait un problème de double clic dû à la fonction processclick biensur... C'est chose réparée... Voici le code final testé et approuvé par mes soins - 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) { ginfo.Visible=false; if (player.ActiveInventory == null) { Mouse.EnableMode(eModeUseinv); mouse.Mode= eModeInteract ; mouse.ChangeModeGraphic (eModeInteract, 1368); ProcessClick(mouse.x, mouse.y, mouse.Mode ); } if(GetLocationType(mouse.x, mouse.y)==eLocationHotspot){ mouse.Mode = (eModeWalkto); } if(GetLocationType(mouse.x, mouse.y)==eLocationCharacter){ mouse.Mode = (eModeTalkto); } if(GetLocationType(mouse.x, mouse.y)==eLocationObject){ mouse.Mode = (eModeInteract); } else if (player.ActiveInventory != null) { ProcessClick(mouse.x, mouse.y, eModeUseinv); } else mouse.ChangeModeGraphic (eModeWalkto, 85) ; ProcessClick(mouse.x, mouse.y, eModeWalkto); } if (mouse.Mode == eModeUseinv) { player.ActiveInventory = inventory[game.inv_activated]; if (button == eMouseRight){ player.ActiveInventory = null; // lose active inventory item mouse.Mode=eModeInteract; } if (button == eMouseLeft) ProcessClick(mouse.x, mouse.y, eModeUseinv); } else if (button == eMouseRight){ ginfo.Visible=false; mouse.Mode = eModeLookat ; mouse.ChangeModeGraphic (eModeLookat, 183); ProcessClick(mouse.x, mouse.y, mouse.Mode ); if(GetLocationType(mouse.x, mouse.y)==eLocationHotspot){ mouse.Mode = (eModeLookat); } if(GetLocationType(mouse.x, mouse.y)==eLocationCharacter){ mouse.Mode = (eModeLookat); } if(GetLocationType(mouse.x, mouse.y)==eLocationObject){ mouse.Mode = (eModeLookat); } else if (player.ActiveInventory != null) { ProcessClick(mouse.x, mouse.y, eModeUseinv); } else mouse.ChangeModeGraphic (eModeWalkto, 85) ; ProcessClick(mouse.x, mouse.y, eModeWalkto); } else mouse.Mode = (eModeInteract); } |
| | | Threepwood Adepte de la Grande Tasse Bleue
Nombre de messages : 144
Age : 52
Localisation : Hyères
Date d'inscription : 29/12/2012
| Sujet: Re: [Résolu] probleme d'objets d'intentaire non actifs... Mer 17 Avr 2013 - 8:20 | |
| Petite amélioration dans le code ce matin...Le code à changé -Il y avait la fonction Processclick evidement qui simulait un clic doublon inutile et agaçant faisant repeter les action en double -il manquait le mode emousinterract par defaut en cas de click annulé (derniere ligne en if else ) -click gauche sur un character = action talkto -click droit sur character = elookat Voilà..le code final ci-dessous... - 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) { ginfo.Visible=false; if (player.ActiveInventory == null) { Mouse.EnableMode(eModeUseinv); mouse.Mode= eModeInteract ; mouse.ChangeModeGraphic (eModeInteract, 1368); ProcessClick(mouse.x, mouse.y, mouse.Mode ); } if(GetLocationType(mouse.x, mouse.y)==eLocationHotspot){ mouse.Mode = (eModeWalkto); } if(GetLocationType(mouse.x, mouse.y)==eLocationCharacter){ mouse.Mode = (eModeTalkto); } if(GetLocationType(mouse.x, mouse.y)==eLocationObject){ mouse.Mode = (eModeInteract); } else if (player.ActiveInventory != null) { ProcessClick(mouse.x, mouse.y, eModeUseinv); } else mouse.ChangeModeGraphic (eModeWalkto, 85) ; ProcessClick(mouse.x, mouse.y, eModeWalkto); } if (mouse.Mode == eModeUseinv) { player.ActiveInventory = inventory[game.inv_activated]; if (button == eMouseRight){ player.ActiveInventory = null; // lose active inventory item mouse.Mode=eModeInteract; } if (button == eMouseLeft) ProcessClick(mouse.x, mouse.y, eModeUseinv); } else if (button == eMouseRight){ ginfo.Visible=false; mouse.Mode = eModeLookat ; mouse.ChangeModeGraphic (eModeLookat, 183); ProcessClick(mouse.x, mouse.y, mouse.Mode ); if(GetLocationType(mouse.x, mouse.y)==eLocationHotspot){ mouse.Mode = (eModeLookat); } if(GetLocationType(mouse.x, mouse.y)==eLocationCharacter){ mouse.Mode = (eModeLookat); } if(GetLocationType(mouse.x, mouse.y)==eLocationObject){ mouse.Mode = (eModeLookat); } else if (player.ActiveInventory != null) { ProcessClick(mouse.x, mouse.y, eModeUseinv); } else mouse.ChangeModeGraphic (eModeWalkto, 85) ; ProcessClick(mouse.x, mouse.y, eModeWalkto); } else mouse.Mode = (eModeInteract); } Je tenais à le préciser car comme on dit...'Quand on change le code...On previent ! " lol https://www.youtube.com/watch?v=7hXkLvPz2kM |
| | | Contenu sponsorisé
| Sujet: Re: [Résolu] probleme d'objets d'intentaire non actifs... | |
| |
| | | | [Résolu] probleme d'objets d'intentaire non actifs... | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |