|
| Problème de curseurs | |
| | Auteur | Message |
---|
Alph Eratz Cliqueur Emérite
Nombre de messages : 861
Age : 60
Localisation : Ca y est Saroumane le multicolor est défait, en route pour le Rohan
Date d'inscription : 22/01/2008
| Sujet: Problème de curseurs Lun 23 Jan 2012 - 19:39 | |
| Bon j'espère que je ne vais pas faire un post pour rien cette fois-ci, . Voilà, il me semble que j'ai déjà eu le problème mais je ne retrouve pas le sujet alors j'en fais un autre. Dans certaines "rooms" mon curseur clignote comme un fou passant, je pense par tous les icônes. Et j'ai une "room qui fait 1900*638, j'ai placé le cCharactère à 1660,330. Non seulement la fenêtre ne se place pas sur le personnage, mais en plus quand il se déplace, la fenêtre ne bouge pas. J'ai regardé les edges, mais ils sont à fond de chaque côté. Edit: j'ai trouvé pour le deuxième problème. Comme j'avais voulu, il y a 3 jours installé le scrolling horizontal d'Asraroth et comme l'essai n'était pas concluant pour ce que je voulais faire, j'ai donc effacé ce que j'avais copié/collé, mais, j'avais oublié une ligne primordial qui dans sa syntaxe est correcte mais obligeait le jeu à pointer dans une direction.
Dernière édition par Alph Eratz le Lun 30 Jan 2012 - 12:55, édité 1 fois (Raison : Changement de titre) |
| | | Alph Eratz Cliqueur Emérite
Nombre de messages : 861
Age : 60
Localisation : Ca y est Saroumane le multicolor est défait, en route pour le Rohan
Date d'inscription : 22/01/2008
| Sujet: Re: Problème de curseurs Sam 28 Jan 2012 - 10:30 | |
| Bon,J'ai trouvé pour le curseur fou mais j'ai toujours un problème. Je n'arrive pas à configurer mes curseurs et je n'ai trouvé aucun topics sur la configuration des curseurs. Ou alors je suis nul. J'aimerai bien régler le problème avant de continuer. Merci!
PS: je ne vous ai pas dit ce que je recherchais, autant pour moi. Et bien je cherche faire que le curseur change de mode automatiquement suivant la nature du spot qu'il détecte. HotSpots, objets principalement. Le souci est que je n'arrive déjà pas à changer de mode avec le "click-droit". J'ai beau lire et relire les topics mais aucun m'apporte de vrai solution. Merci encore. |
| | | Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Problème de curseurs Sam 28 Jan 2012 - 13:18 | |
| En ce qui concerne ton problème (apparemment résolu) de curseur fou je n'ai pas d'idée, désolé Malheureusement sur l'aide d'AGS, il n'y a pas grand chose. Cela dit leur configuration est plutôt simple : il suffit de choisir la sprite utilisée dans les propriétés. Après il n'y a pas grand chose de plus à faire (choisir le point de déclenchement du curseur sur cette image à la rigueur) : qu'est-ce qui te pose problème en fait ? Tu peux récupérer le mode de curseur actuel avec la propriété mouse.Mode (attention à la minuscule à mouse). Du coup tu peux gérer les événements que déclenchent un clic avec ce mode dans la fonction on_mouse_click. _________________ 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 ! |
| | | Alph Eratz Cliqueur Emérite
Nombre de messages : 861
Age : 60
Localisation : Ca y est Saroumane le multicolor est défait, en route pour le Rohan
Date d'inscription : 22/01/2008
| Sujet: Re: Problème de curseurs Sam 28 Jan 2012 - 13:48 | |
| Ben le truc c'est que je clique droit mais rien ne change. Voilà ce que j'ai au niveau du script: - 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) { ProcessClick(mouse.x,mouse.y, mouse.Mode); } else // right-click, so cycle cursor { mouse.SelectNextMode(); } } En dehors de ça si j'essaie de bricoler je sens que je vais me retaper tout le script tellement j'aurai mis de truc à la poubelle. Tu sais un peu comme quand un gamin commence à démonter un jouet et qu'il n'arrive plus à remonter, . Au niveau du genral setting je ne vois pas ce qu'il y a à faire. |
| | | Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Problème de curseurs Dim 29 Jan 2012 - 9:51 | |
| Tu sais, il faut pas hésiter à bricoler dans le script, mettre les mains dans le cambouis, c'est comme ça qu'on apprend Au pire avant de le modifier, tu exportes ton script dans un fichier à part pour pouvoir le restaurer plus tard au cas où. En théorie avec le code que tu m'as collé il ne devrait y avoir aucun soucis : le clic droit devrait faire que ton curseur change de mode. Après, si tu as défini un seul curseur comme "Standard", c'est normal que tu ne puisses pas changer vu que SelectNextMode ne considère que les modes standards. Je n'avais pas vu ton edit : - Alph Eratz a écrit:
- PS: je ne vous ai pas dit ce que je recherchais, autant pour moi.
Et bien je cherche faire que le curseur change de mode automatiquement suivant la nature du spot qu'il détecte. HotSpots, objets principalement. Le souci est que je n'arrive déjà pas à changer de mode avec le "click-droit". Quoiqu'il en soit de ce soucis de clic droit, la solution pour changer le mode du curseur automatiquement a affaire avec la vérification de GetLocationType dans la fonction repeatedly_execute : selon son type, tu changes mouse.Mode pour la valeur désirée. _________________ 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 ! |
| | | Alph Eratz Cliqueur Emérite
Nombre de messages : 861
Age : 60
Localisation : Ca y est Saroumane le multicolor est défait, en route pour le Rohan
Date d'inscription : 22/01/2008
| Sujet: Re: Problème de curseurs Dim 29 Jan 2012 - 12:04 | |
| Salut Kitai, J'ai vérifié les curseurs et les 4 principaux sont en standard les autres non. Dans repeatedly_execute j'ai mis çà: - Code:
-
if (GetLocationType(mouse.x,mouse.y) == eLocationCharacter) mouse.Mode = eModeTalkto; if (GetLocationType(mouse.x,mouse.y) == eLocationHotspot) mouse.Mode = eModeLookat; if (GetLocationType(mouse.x,mouse.y) == eLocationObject) mouse.Mode = eModePickup; else mouse.Mode = eModeWalkto; J'ai fais un essai alors maintenant le mode walk to fonctionne, le curseur ne change pas et quand je clique sur un hotspot qui dois téléporter dans une pièce le déplacement jusqu'à celui-ci se fait bien mais on change pas de pièce. Et les autres HS on un commentaire qui n'apparait pas. |
| | | Alph Eratz Cliqueur Emérite
Nombre de messages : 861
Age : 60
Localisation : Ca y est Saroumane le multicolor est défait, en route pour le Rohan
Date d'inscription : 22/01/2008
| Sujet: Re: Problème de curseurs Lun 30 Jan 2012 - 12:53 | |
| Bon et bien ,je n'ai pas avancé, je perds un temps fou à rechercher ce qui ne va pas. Et le problème quand on n'a pratiquement pas d'experience en prog et bien on ne peut pas voir là où il y a le blème. Si tu veux je t'envoie le script parce que là je fatigue A part le script que j'ai mis plus, est-ce qu'il y a autre chose que j'aurais oublié? EDIT: Après observation du chargement des rooms, il s'avère qu'au début le mode est en eModeLookatjuste le temps"clic" et passe dans un autre mode pour y rester ensuite. Sur la première "room" il se met en eModeWalktoet sur les autres en eModrePointer, un vrai mystère. |
| | | Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Problème de curseurs Mar 31 Jan 2012 - 12:53 | |
| - Alph Eratz a écrit:
- Dans repeatedly_execute j'ai mis çà:
- Code:
-
if (GetLocationType(mouse.x,mouse.y) == eLocationCharacter) mouse.Mode = eModeTalkto; if (GetLocationType(mouse.x,mouse.y) == eLocationHotspot) mouse.Mode = eModeLookat; if (GetLocationType(mouse.x,mouse.y) == eLocationObject) mouse.Mode = eModePickup; else mouse.Mode = eModeWalkto; Il y a un "problème" dans ce code. Là ça vérifie si t'es sur un personnage, ça vérifie aussi en plus si tu es sur un hotspot et enfin ça vérifie en plus si tu es sur un objet et si cette dernière condition n'est pas remplie (tu n'es pas sur un objet), alors le mode de la souris sera WalkTo. C'est étrange qu'il se mette en Pointer puisque dans ce code tu ne le définis nulle part... Bref, quoi qu'il en soit, essaie déjà de remplacer le code par ça : - Code:
-
if (GetLocationType(mouse.x,mouse.y) == eLocationCharacter) mouse.Mode = eModeTalkto; else if (GetLocationType(mouse.x,mouse.y) == eLocationHotspot) mouse.Mode = eModeLookat; else if (GetLocationType(mouse.x,mouse.y) == eLocationObject) mouse.Mode = eModePickup; else mouse.Mode = eModeWalkto; _________________ 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 ! |
| | | Alph Eratz Cliqueur Emérite
Nombre de messages : 861
Age : 60
Localisation : Ca y est Saroumane le multicolor est défait, en route pour le Rohan
Date d'inscription : 22/01/2008
| Sujet: Re: Problème de curseurs Mar 31 Jan 2012 - 19:10 | |
| Salut Kitai, je teste ça tout de suite. D'après ce que je vois ça devrai fonctionner. Ça ne marche toujours pas. Je dois avoir quelque chose dans le script qui empêche le fonctionnement. De plus j'ai une erreur qui s'est greffée depuis ce matin. . . voici le code à partir du repeatedly - Code:
-
#sectionstart repeatedly_execute // DO NOT EDIT OR REMOVE THIS LINE function repeatedly_execute() { if (GetLocationType(mouse.x,mouse.y) == eLocationCharacter) mouse.Mode = eModeTalkto; else if (GetLocationType(mouse.x,mouse.y) == eLocationHotspot) mouse.Mode = eModeLookat; else if (GetLocationType(mouse.x,mouse.y) == eLocationObject) mouse.Mode = eModePickup; else mouse.Mode = eModeWalkto; // On récupère l'éventuel élément de GUI que survole la souris GUIControl* ctrl = GUIControl.GetAtScreenXY(mouse.x, mouse.y); // Tant que la souris survole un élément de GUI, PosGUI_on vaut -1 : // l'utilisateur ne peut pas déplacer le GUI (évite les conflits avec les sliders) if ((ctrl != null) && (!PosGUI_on)) PosGUI_on = -1; // Si on relâche le bouton de la souris, PosGUI_on vaut 0 : // l'utilisateur pourra recliquer pour déplacer à nouveau if ((!Mouse.IsButtonDown(eMouseLeft)) && (PosGUI_on)) PosGUI_on = 0; // Si PosGUI_on > 0, alors c'est que l'utilisateur est en train de déplacer // le GUI numéro PosGUI_on-1 (le premier GUI étant le GUI numéro 0) if (PosGUI_on > 0) { // legui pointe sur le GUI que l'utilisateur déplace (PosGUI_on-1) GUI* legui = gui[PosGUI_on - 1]; // On vérifie tout de même que le GUI PosGUI_on-1 existe bien // Et si l'utilisateur a déplacé la souris depuis le dernier cycle... if ((legui != null) && ((mouse.x != PosGUI_x) || (mouse.y != PosGUI_y))) { // ... on déplace le GUI à la nouvelle position... legui.SetPosition(legui.X + (mouse.x - PosGUI_x), legui.Y + (mouse.y - PosGUI_y)); // ... et on indique où est la souris à ce cycle dans PosGUI_x et PosGUI_y PosGUI_x = mouse.x; PosGUI_y = mouse.y; } } // Si l'utilisateur a cliqué et qu'il a le droit de déplacer le GUI (PosGUI_on > -1)... else if ((Mouse.IsButtonDown(eMouseLeft)) && (PosGUI_on > -1)) { // ... on récupère l'éventuel GUI sur lequel l'utilisateur a cliqué... GUI* alecran = GUI.GetAtScreenXY(mouse.x, mouse.y); // ... et s'il a bien cliqué sur un GUI ET SI CE N'EST PAS gDemarrage et gGuprincipal... if ((alecran != null) && (alecran != gDemarrage) && (alecran != gGuprincipal)) { // ... on retient le numéro du GUI (+ 1) dans PosGUI_on... PosGUI_on = alecran.ID + 1; // ... et les coordonnées où se trouve la souris à ce cycle dans PosGUI_x et PosGUI_y PosGUI_x = mouse.x; PosGUI_y = mouse.y; } // Si le clic était hors d'un GUI, le joueur devra relâcher le clic // avant de pouvoir recliquer pour déplacer le GUI else PosGUI_on = -1; }
}
#sectionend repeatedly_execute // DO NOT EDIT OR REMOVE THIS LINE
#sectionstart on_key_press // DO NOT EDIT OR REMOVE THIS LINE function on_key_press(int keycode) // called when a key is pressed. keycode holds the key's ASCII code { if (keycode==32) gPause.Visible = !gPause.Visible; if (IsGamePaused()==1) keycode=0; // game paused, so don't react to keypresses if (keycode==17) QuitGame(1); // Ctrl-Q if (keycode==363) SaveGameDialog(); // F5 if (keycode==365) RestoreGameDialog(); // F7 if (keycode==367) RestartGame(); // F9 if (keycode==434) SaveScreenShot("scrnshot.pcx"); // F12 if (keycode==19) Debug(0,0); // Ctrl-S, give all inventory if (keycode==22) Debug(1,0); // Ctrl-V, version if (keycode==1) Debug(2,0); // Ctrl-A, show walkable areas if (keycode==24) Debug(3,0); // Ctrl-X, teleport to room } #sectionend on_key_press // DO NOT EDIT OR REMOVE THIS LINE
#sectionstart on_mouse_click // DO NOT EDIT OR REMOVE THIS LINE
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) { } if (button == eMouseLeft) { ProcessClick (mouse.x, mouse.y, mouse.Mode); } else// right-click, so cycle cursor { mouse.SelectNextMode(); } } #sectionend on_mouse_click // DO NOT EDIT OR REMOVE THIS LINE
#sectionstart interface_click // DO NOT EDIT OR REMOVE THIS LINE function interface_click(int interface, int button) { // OBSOLETE, NOT USED IN AGS 2.7 AND LATER VERSIONS } #sectionend interface_click // DO NOT EDIT OR REMOVE THIS LINE
function dialog_request(int param) { }
function Button1_OnClick(GUIControl *control, MouseButton button) { gInventaire.Visible = true; if (player.ActiveInventory != null) mouse.Mode = eModeUseinv; }
function Button18_OnClick(GUIControl *control, MouseButton button) { RestoreGameDialog(); }
function Button10_OnClick(GUIControl *control, MouseButton button) { gCarte1.Visible = false; cAlph.ChangeRoom(10, 630, 420); }
function Button15_OnClick(GUIControl *control, MouseButton button) { gCarte1.Visible = false; cAlph.ChangeRoom(3,520,690); }
function Button13_OnClick(GUIControl *control, MouseButton button) { gCarte1.Visible = false; cAlph.ChangeRoom(2,400,485); }
function Button14_OnClick(GUIControl *control, MouseButton button) { gCarte1.Visible = false; cAlph.ChangeRoom(4,500,510); }
function gBtnCarte_OnClick(GUI *theGui, MouseButton button) { gCarte1.Visible = true; }
function Button16_OnClick(GUIControl *control, MouseButton button) { gCarte1.Visible = false; }
function Button17_OnClick(GUIControl *control, MouseButton button) { gInventaire.Visible = false; }
function Button12_OnClick(GUIControl *control, MouseButton button) { gCarte1.Visible = false; cAlph.ChangeRoom(5,480,400); }
function Button4_OnClick(GUIControl *control, MouseButton button) { gGuprincipal.Visible = false; gDemarrage.Visible = true; Button5.Visible = true; }
function Button5_OnClick(GUIControl *control, MouseButton button) { gDemarrage.Visible = false; gGuprincipal.Visible = true; }
function Button22_OnClick(GUIControl *control, MouseButton button) { QuitGame(1); }
function Button19_OnClick(GUIControl *control, MouseButton button) { SaveGameDialog(); }
function Button6_OnClick(GUIControl *control, MouseButton button) { gDemarrage.Visible = false; cAlph.ChangeRoom(40, 400, 420); }
function Button7_OnClick(GUIControl *control, MouseButton button) { gGuprincipal.Visible = true; gDemarrage.Visible = false; cAlph.ChangeRoom(1); }
function Button8_OnClick(GUIControl *control, MouseButton button) { Button9.Visible = true; Button23.Visible = true; }
function Button9_OnClick(GUIControl *control, MouseButton button) {
Button9.Visible = false; Button23.Visible = false; gDemarrage.Visible = false; gGuprincipal.Visible = true; Wait(40); RestartGame(); }
function Button23_OnClick(GUIControl *control, MouseButton button) { Button9.Visible = false; Button23.Visible = false; }
J'ai regardé dans les scripts des "rooms" mais il n'y a rien qui se réfère à la souris ou les curseurs. |
| | | Contenu sponsorisé
| Sujet: Re: Problème de curseurs | |
| |
| | | | Problème de curseurs | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |