Forum d'entraide à la création de jeux d'aventure
 
PortailPortail  AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
-17%
Le deal à ne pas rater :
SSD interne Crucial SSD P3 1To NVME à 49,99€
49.99 € 59.99 €
Voir le deal

 

 curseur dynamique sauf pour un hotspot

Aller en bas 
4 participants
AuteurMessage
jolan
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
jolan


Nombre de messages : 48

Date d'inscription : 07/06/2018


curseur dynamique sauf pour un hotspot Empty
MessageSujet: curseur dynamique sauf pour un hotspot   curseur dynamique sauf pour un hotspot EmptyJeu 20 Sep 2018 - 8:37

Le soleil part je retourne derrière le PC, et je galère avec mon curseur.
J'utilise la méthode du curseur dynamique du tuto ci joint :

https://www.youtube.com/watch?time_continue=763&v=ps19e-KD17Q

qui est parfaite mais je rencontre un petit soucis:

Dans toutes mes rooms le Hotspot 1 correspond au demi tour et a un changement de salle (c'est un point and click sans personnage) je voudrai lui attribuer un curseur spécifique (un onglet demi tour), directement dans le global script ? ou dois je écrire une fonction spécifique dans chaque room ? et quelle fonction utiliser ?
Revenir en haut Aller en bas
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
Kitai


Nombre de messages : 2907

Date d'inscription : 01/08/2006


curseur dynamique sauf pour un hotspot Empty
MessageSujet: Re: curseur dynamique sauf pour un hotspot   curseur dynamique sauf pour un hotspot EmptyJeu 20 Sep 2018 - 13:39

Si tu es parfaitement constant et que donc tous les hotspot # 1 de toutes les pièces de ton jeu correspondent à "demi tour et changement de salle" (et uniquement les hotspots # 1) alors tu peux remplacer la ligne
Code:
if (hsurvol != hotspot[0]) Mouse.Mode = eModeInteract;
par ces quelques lignes :
Code:
if (hsurvol != hotspot[0]) {
    if (hsurvol == hotspot[1])
        Mouse.Mode = eModeOngletDemiTour; // Remplace par le nom de ton mode perso
    else
        Mouse.Mode = eModeInteract;
}

_________________
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
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
valoulef
Délégué de la tasse bleue
Délégué de la tasse bleue
valoulef


Nombre de messages : 1791

Age : 35

Localisation : Condate

Date d'inscription : 01/08/2011


curseur dynamique sauf pour un hotspot Empty
MessageSujet: Re: curseur dynamique sauf pour un hotspot   curseur dynamique sauf pour un hotspot EmptyVen 21 Sep 2018 - 2:05

Ravi que mon tuto ait pu être utile ! sourire
Je l'ai justement revu hier et me demandais s'il étais suffisamment intelligible et pas trop confus pour quelqu'un d'extérieur.

Tu pourrais utiliser les propriétés personnalisées dont je parle à la fin mais c'est en effet encore plus simple de généraliser le processus avec la méthode de @Kitai (à condition qu'il n'y ait pas d'exception).

Néanmoins après avoir créé ton mode de curseur il reste nécessaire de définir le comportement au moment du clic. Si tu veux qu'à chaque fois le joueur retourne dans la pièce précédente je pense que le mieux est de modifier la fonction on_mouse_click comme suit :
Code:

function on_mouse_click(MouseButton button)
{

  if (IsGamePaused == 1){
  }

  else if (button == eMouseLeft)
 {
    if(Mouse.Mode == eModeOngletDemiTour) player.ChangeRoom(player.PreviousRoom);
    else Room.ProcessClick(mouse.x, mouse.y, mouse.Mode);
 }
}


Si tu utilises un système à la première personne, normalement tu ne devrais pas avoir de problème de coordonnées.

NB : Je ne sais pas ce qu'il se passe si on fait appel à player.PreviousRoom lorsqu'on se trouve dans la première pièce (Edit : d'après l'aide en ligne la valeur vaut -1, donc le jeu risque de crash). Le mieux dans ce cas là est de désactiver le hotspot 1 au premier chargement, puis de le réactiver en sortant de la pièce, par exemple.

_________________
Vous êtes déjà allés à Condate ? Ils ont un petit vin qui à un goût de pierre à catapulte. C'est Toutatis en culotte de velours si j'ose m'exprimer ainsi.
Revenir en haut Aller en bas
jolan
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
jolan


Nombre de messages : 48

Date d'inscription : 07/06/2018


curseur dynamique sauf pour un hotspot Empty
MessageSujet: Re: curseur dynamique sauf pour un hotspot   curseur dynamique sauf pour un hotspot EmptyVen 21 Sep 2018 - 7:56

Super super, je regarde tout ça ce week end et je vous tiens au jus.
Merci encore pour la réactivité et je trouve vos réponses toujours supers claires.
Et oui Valoulef ton tuto est accessible même pour le novice que je suis.
Revenir en haut Aller en bas
jolan
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
jolan


Nombre de messages : 48

Date d'inscription : 07/06/2018


curseur dynamique sauf pour un hotspot Empty
MessageSujet: Re: curseur dynamique sauf pour un hotspot   curseur dynamique sauf pour un hotspot EmptyDim 23 Sep 2018 - 14:35

super, j'ai changé un peu d'avis. Un onglet similaire pour les directions droite, gauche, demi tour ou tout droit (l’héroïne en train de marcher), un pour agir (la classique main), un pour regarder (un gros noeil). Donc mes hotspot 1,2,3 et 4 sont toujours affiliés à une direction et avec l'ajout de Kitai c'est parfait. Mais je laisse tomber le previous room, car certaines de mes rooms sont des énigmes à part entière dans les rooms et donc en quittant la pièce on se retrouve sur l'énigme si on l'a visité dans la pièce. (euhhh, mais si c'est clair).
merci encore
Revenir en haut Aller en bas
jolan
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
jolan


Nombre de messages : 48

Date d'inscription : 07/06/2018


curseur dynamique sauf pour un hotspot Empty
MessageSujet: Re: curseur dynamique sauf pour un hotspot   curseur dynamique sauf pour un hotspot EmptyDim 23 Sep 2018 - 15:51

Alors par contre, je voulais animer mon curseur regarder (mon gros noeil clignote uniquement quand il passe sur un hotspot) et j'ai beau régler le delay de la view l'animation se fait à toute vitesse alors que quand je la teste c'est niquel, est ce dû à la ligne de code dans le function repeatedly_execute ou c'est moi qui déconne encore ?
je continue à trifouiller partout
Revenir en haut Aller en bas
valoulef
Délégué de la tasse bleue
Délégué de la tasse bleue
valoulef


Nombre de messages : 1791

Age : 35

Localisation : Condate

Date d'inscription : 01/08/2011


curseur dynamique sauf pour un hotspot Empty
MessageSujet: Re: curseur dynamique sauf pour un hotspot   curseur dynamique sauf pour un hotspot EmptyDim 23 Sep 2018 - 16:02

Je n'ai jamais utilisé de curseur animé, mais c'est probablement ça si ça réinitialise le curseur à chaque fois. C'est une animation spécifique à un endroit précis ? Comment tu as programmé ça on peut voir la partie correspondante dans ton repeatedly_execute ? Je pense qu'il faudrait tenter de remplacer un :
Code:
mouse.mode = eModeLookat;
par :
Code:
if (mouse.mode != eModeLookat) mouse.mode = eModeLookat;

Afin de n'attribuer un nouveau curseur "look at" que s'il n'est pas déjà actif, et donc éviter de le réinitialiser.

_________________
Vous êtes déjà allés à Condate ? Ils ont un petit vin qui à un goût de pierre à catapulte. C'est Toutatis en culotte de velours si j'ose m'exprimer ainsi.
Revenir en haut Aller en bas
jolan
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
jolan


Nombre de messages : 48

Date d'inscription : 07/06/2018


curseur dynamique sauf pour un hotspot Empty
MessageSujet: Re: curseur dynamique sauf pour un hotspot   curseur dynamique sauf pour un hotspot EmptyDim 23 Sep 2018 - 16:53

ah oui je vais tenter.
sinon j'utilisais quasiment tout ton tuto

Code:
function repeatedly_execute()
{
Hotspot*hsurvol=Hotspot.GetAtScreenXY(mouse.x, mouse.y);
Object*osurvol=Object.GetAtScreenXY(mouse.x, mouse.y);

if (player.ActiveInventory == null)
if (hsurvol != hotspot[0]){
if (hsurvol==hotspot[1])Mouse.Mode=eModedirection;
else if (hsurvol==hotspot[2])Mouse.Mode=eModedirection;
else if (hsurvol==hotspot[3])Mouse.Mode=eModedirection;
else if (hsurvol==hotspot[4])Mouse.Mode=eModedirection;
else Mouse.Mode=eModeregarder;}
else if (osurvol != null)Mouse.Mode=eModeInteract;
else Mouse.Mode=eModeregarder;

en gros mon regarder c'est un oeil ouvert, je lui demandais de s'animer (cligner) en cochant True dans animateonlyhotspot, et pour les directions sinon c'est parfait.
je tente.
Revenir en haut Aller en bas
jolan
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
jolan


Nombre de messages : 48

Date d'inscription : 07/06/2018


curseur dynamique sauf pour un hotspot Empty
MessageSujet: Re: curseur dynamique sauf pour un hotspot   curseur dynamique sauf pour un hotspot EmptyDim 23 Sep 2018 - 17:27

non, bon je suis un peu (complétement) paumé.
Je comprends bien l'idée de ne pas réattribuer un curseur mais je n'arrive pas à l'insérer au code.
Revenir en haut Aller en bas
valoulef
Délégué de la tasse bleue
Délégué de la tasse bleue
valoulef


Nombre de messages : 1791

Age : 35

Localisation : Condate

Date d'inscription : 01/08/2011


curseur dynamique sauf pour un hotspot Empty
MessageSujet: Re: curseur dynamique sauf pour un hotspot   curseur dynamique sauf pour un hotspot EmptyDim 23 Sep 2018 - 23:48

Attention il n'y a aucune accolade ni point-virgule après ton
Code:
if (player.ActiveInventory == null)

Je suis même surpris que le jeu se lance sans erreur en l'état.

Concernant ton problème, remplace simplement cette ligne (ligne 12 dans ton message) :
Code:
else Mouse.Mode = eModeregarder;

Par celle-ci :
Code:
else if (Mouse.Mode != eModeregarder) Mouse.Mode = eModeregarder;

J'ai testé, ça fonctionne, et mon premier résultat était cohérent avec celui que tu décrit.

_________________
Vous êtes déjà allés à Condate ? Ils ont un petit vin qui à un goût de pierre à catapulte. C'est Toutatis en culotte de velours si j'ose m'exprimer ainsi.
Revenir en haut Aller en bas
jolan
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
jolan


Nombre de messages : 48

Date d'inscription : 07/06/2018


curseur dynamique sauf pour un hotspot Empty
MessageSujet: Re: curseur dynamique sauf pour un hotspot   curseur dynamique sauf pour un hotspot EmptyLun 24 Sep 2018 - 11:18

super, moi je le demandai à la ligne 14 du coup il s'animait mais seulement à moitié et que sur mes hotspots de direction.
Merci Valoulef, et oui il manque le point virgule qui a disparu je ne sais où au copier coller.
Et valoulef à tu fais d'autres tuto dans le genre du curseur dynamique, je ne trouve pas grand chose (en français).
Merci encore je m'y remets
Revenir en haut Aller en bas
jolan
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
jolan


Nombre de messages : 48

Date d'inscription : 07/06/2018


curseur dynamique sauf pour un hotspot Empty
MessageSujet: Re: curseur dynamique sauf pour un hotspot   curseur dynamique sauf pour un hotspot EmptyDim 11 Aoû 2019 - 10:27

Bonjour à tous, nouvelles difficulté.
J'ai à nouveau changé d'avis et j'essaye d'utiliser une animation différente pour chaque curseur.
En gros: un gros oeil qui clignote quand on survole un hotspot et l’héroïne qui marche à droite ou a gauche quand on peut changer de room.
Je suis toujours sur un jeu à la première personne ou un curseur est attribué à un numéro de Hotspot.
Jusqu'à présent la solution de Valoulef fonctionnait bien à savoir:
Code:
Hotspot*hsurvol=Hotspot.GetAtScreenXY(mouse.x, mouse.y);
Object*osurvol=Object.GetAtScreenXY(mouse.x, mouse.y);

if (player.ActiveInventory == null)
if (hsurvol != hotspot[0]){
if (hsurvol==hotspot[1]) Mouse.Mode=eModearriere;
else if (hsurvol==hotspot[2])Mouse.Mode=eModedevant;
else if (hsurvol==hotspot[3])Mouse.Mode=eModedroite;
else if (hsurvol==hotspot[4])Mouse.Mode=eModegauche;
else if (hsurvol==hotspot[20])Mouse.Mode=eModeInteract;
else if (Mouse.Mode!=eModeregarder) Mouse.Mode=eModeregarder;}
else if (osurvol != null)Mouse.Mode=eModeInteract;
else Mouse.Mode=eModeregarder;

mais là je me retrouve bloqué, mon "regarder" fonctionne bien (merci Valoulef) mais je ne sais pas comment faire pour que l'animation des "devant,arriére, droite et gauche" se déclenche correctement, elle se réinitialise tout le temps.  
J'ai tenté de rajouter
Code:
else if (Mouse.Mode!=eModearriere) Mouse.Mode=eModearriere;
mais je me suis rendu vite compte que ce n'était pas une bonne idée.
Si quelqu'un a une piste.
Revenir en haut Aller en bas
Creamy
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Creamy


Nombre de messages : 1266

Date d'inscription : 15/10/2007


curseur dynamique sauf pour un hotspot Empty
MessageSujet: Re: curseur dynamique sauf pour un hotspot   curseur dynamique sauf pour un hotspot EmptyDim 11 Aoû 2019 - 12:36

L'animation doit se déclencher quand le curseur est sur le hotspot ET que l'animation n'est pas déjà lancée (conditions cumulatives)

Donc je remplacerais :
Code:
else if (hsurvol==hotspot[3])Mouse.Mode=eModedroite;

par :
Code:
else if ((hsurvol==hotspot[3]) &&( Mouse.Mode!=eModedroite)) Mouse.Mode=eModedroite;
Revenir en haut Aller en bas
http://creamy.unblog.fr/
jolan
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
jolan


Nombre de messages : 48

Date d'inscription : 07/06/2018


curseur dynamique sauf pour un hotspot Empty
MessageSujet: Re: curseur dynamique sauf pour un hotspot   curseur dynamique sauf pour un hotspot EmptyDim 11 Aoû 2019 - 15:54

wouhououuuuuuuu merci Creamy, du coup j'ai rajouter la ligne à chaque fois et j'ai viré mon
Code:
else if (Mouse.Mode!=eModeregarder) Mouse.Mode=eModeregarder
qui du coup foutait le bazar, maintenant ça marche mais c'est quoi le && ? je comprend pas à quoi il sert ? c'est pour vérifier que je survole mon hotspot et que l'animation n'est pas lancée ? donc en théorie je pourrai faire un &&&& ? pour quatre conditions ?
en tout cas merci encore, I'm happy
Revenir en haut Aller en bas
Creamy
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Creamy


Nombre de messages : 1266

Date d'inscription : 15/10/2007


curseur dynamique sauf pour un hotspot Empty
MessageSujet: Re: curseur dynamique sauf pour un hotspot   curseur dynamique sauf pour un hotspot EmptyDim 11 Aoû 2019 - 17:41

Citation :
c'est quoi le && ?
L'opérateur ET sert à vérifier plusieurs conditions à la fois.

Citation :
donc en théorie je pourrai faire un &&&& ?
grand sourire non ça ne marche pas comme ça.
Si tu veux vérifier que plusieurs conditions sont réunies, il faut écrire :
Code:
if ((cRingo.Room == player.Room) && (cJohn.Room == player.Room) &&(cPaul.Room == player.Room) &&(cGeorge.Room == player.Room) )
player.Say("Waouh! Tous les Beatles sont dans la pièce.");

Tu peux aussi vérifier qu'au moins une seule des conditions est remplie avec ||
C'est l'opérateur OU qu'on fait en tapant alt + 6 sur le clavier.

Code:
if ((cRingo.Room == player.Room) || (cJohn.Room == player.Room) ||(cPaul.Room == player.Room) ||(cGeorge.Room == player.Room) )
player.Say("Il y a au moins un Beatles dans la pièce.");

Voici la page AGS  sur les opérateurs. Je ne la trouve pas en français.
Revenir en haut Aller en bas
http://creamy.unblog.fr/
jolan
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
jolan


Nombre de messages : 48

Date d'inscription : 07/06/2018


curseur dynamique sauf pour un hotspot Empty
MessageSujet: Re: curseur dynamique sauf pour un hotspot   curseur dynamique sauf pour un hotspot EmptyDim 11 Aoû 2019 - 19:05

super great, merci beaucoup pour les éclaircissements
Revenir en haut Aller en bas
Contenu sponsorisé





curseur dynamique sauf pour un hotspot Empty
MessageSujet: Re: curseur dynamique sauf pour un hotspot   curseur dynamique sauf pour un hotspot Empty

Revenir en haut Aller en bas
 
curseur dynamique sauf pour un hotspot
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Curseur dynamique et problème d'accolades ?
» [résolu] Changer mode et graphic du curseur au survole d'un hotspot spécifique
» [Réglé] Changeroom sur un hotspot
» Faire Pointeur dynamique genre Photoshop en fonction de l'outil selectionné ?
» Superposition de 2 hotspot

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: