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

Partagez | 
 

 Problème de curseurs

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Alph Eratz
Cliqueur Emérite
Cliqueur Emérite


Nombre de messages : 861

Age : 52

Localisation : Ca y est Saroumane le multicolor est défait, en route pour le Rohan

Date d'inscription : 22/01/2008


MessageSujet: 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)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://lauvrayarcherie.com
Alph Eratz
Cliqueur Emérite
Cliqueur Emérite


Nombre de messages : 861

Age : 52

Localisation : Ca y est Saroumane le multicolor est défait, en route pour le Rohan

Date d'inscription : 22/01/2008


MessageSujet: 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://lauvrayarcherie.com
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: 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é perplexe

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 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Alph Eratz
Cliqueur Emérite
Cliqueur Emérite


Nombre de messages : 861

Age : 52

Localisation : Ca y est Saroumane le multicolor est défait, en route pour le Rohan

Date d'inscription : 22/01/2008


MessageSujet: 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://lauvrayarcherie.com
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: 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 clin d\\\\'oeil
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 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Alph Eratz
Cliqueur Emérite
Cliqueur Emérite


Nombre de messages : 861

Age : 52

Localisation : Ca y est Saroumane le multicolor est défait, en route pour le Rohan

Date d'inscription : 22/01/2008


MessageSujet: 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://lauvrayarcherie.com
Alph Eratz
Cliqueur Emérite
Cliqueur Emérite


Nombre de messages : 861

Age : 52

Localisation : Ca y est Saroumane le multicolor est défait, en route pour le Rohan

Date d'inscription : 22/01/2008


MessageSujet: 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é? triste

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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://lauvrayarcherie.com
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: 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 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Alph Eratz
Cliqueur Emérite
Cliqueur Emérite


Nombre de messages : 861

Age : 52

Localisation : Ca y est Saroumane le multicolor est défait, en route pour le Rohan

Date d'inscription : 22/01/2008


MessageSujet: 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://lauvrayarcherie.com
Contenu sponsorisé




MessageSujet: Re: Problème de curseurs   Aujourd'hui à 19:51

Revenir en haut Aller en bas
 
Problème de curseurs
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Problème de curseurs
» Problème de son iPod ou autre MP3
» Problème pour Tester mon Projet -RPG VX- [Résolu]
» Problème Egret 2 + J-pac + Arcade VGA (agp)
» Problème de mémorisation [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: