| Comment savoir si un objet est accessible | |
|
|
Auteur | Message |
---|
Vi Cliqueur Amateur
Nombre de messages : 214
Date d'inscription : 03/03/2008
| Sujet: Comment savoir si un objet est accessible Mer 4 Juin 2008 - 20:52 | |
| Ma question est simple le personnage veut prendre, utiliser un objet de la room. Je veux savoir si le personnage peut aller à coté de l'objet en question avant d'effectuer l'action. Pour le moment, il peut prendre n'importe quel objet d'où qu'il soit (pas top) j'ai cherche un peu et rien trouver de spécial du style fonction IsObjectReacheable (dommage) Mais peut être ais-je mal chercher ?
sinon j'ai essayé un script que voilà :
cTancred est mon personnage rCorde l'objet de la room iCorde l'objet de l'inventaire
cTancred.Walk(rCorde.X, rCorde.Y, eBlock, eWalkableAreas); // on fait marcher le personnage jusqu'à l'objet en passant par les walkarea) if(Maths.Sqrt(Maths.RaiseToPower(IntToFloat(cTancred.x-rCorde.X), 2.0))<5.0) // compliqué ca, mais bizarrement j'ai pas trouver de fonction qui retourne une valeur absolue, 5.0 est histoire de ne pas devoir être collé à l'objet mais juste à coté). { cTancred.FaceObject(rCorde); cTancred.AddInventory(iCorde); rCorde.Visible = false; cTancred.Say("j'ai pris une corde"); } else { cTancred.Say("je ne peux pas l'atteindre"); }
Cela fonctionne mais je pense qu'il y a plus simple et plus élégant. Comme je débute en script merci de m'aider. |
|
| |
Shai-la Ouvrière en Chef de la Grande Tasse Bleue
Nombre de messages : 6018
Age : 46
Localisation : Montpellier
Date d'inscription : 17/04/2006
| Sujet: Re: Comment savoir si un objet est accessible Jeu 5 Juin 2008 - 4:56 | |
| Euh je pige pas trop ton problème. Si tu veux qu'un perso s'approche avant de prendre un objet, tu le fais simplement marcher jusqu'à un point précis près de l'objet avant de l'ajouter à son inventaire et de faire disparaître l'objet de la room. A moins que tu ne veuilles détecter si le personnage est suffisamment près de l'objet pour pouvoir le prendre, par exemple comme dans les Voyageurs du Temps qui rabâchent sans cesse "approchez-vous plus près" dès qu'on veut faire un truc ? Dans ce cas c'est très simple, tu soustraits les coordonnées x et y des deux objets, et ça ne marche que si c'est inférieur ou égal à un certain nombre (par exemple une différence de 10 pixels). |
|
| |
Vi Cliqueur Amateur
Nombre de messages : 214
Date d'inscription : 03/03/2008
| Sujet: Re: Comment savoir si un objet est accessible Jeu 5 Juin 2008 - 8:00 | |
| c'est ça, en fait ce qui m'interessait surtout est d'avoir une fonction qui me dise si l'objet est accessible.
exemple :
la room est séparée en deux par une rivière (ou un ravin). Le personnage est d'un coté, l'objet de l'autre. J'aimerais une fonction qui me dise que l'objet n'est pas accessible puisque le personnage ne peut physiquement pas l'atteindre.
je crois que je vais rester sur ce que j'ai fais, ca marche pas trop mal. |
|
| |
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: Comment savoir si un objet est accessible Jeu 5 Juin 2008 - 10:59 | |
| Je pense qu'il faut jouer avec les hotspots. Du style si le perso n'est pas sur le hotspot il ne peut prendre l'objet et mettre une condition que quand il est dessus, il peut cliquer sur l'objet donc il peut le prendre. Maintenant je n'ai pas encore expérimenté cette technique mais il me semble que c'est possible. A voir avec d'autres spécialistes du forum. |
|
| |
Shai-la Ouvrière en Chef de la Grande Tasse Bleue
Nombre de messages : 6018
Age : 46
Localisation : Montpellier
Date d'inscription : 17/04/2006
| Sujet: Re: Comment savoir si un objet est accessible Jeu 5 Juin 2008 - 11:50 | |
| J'avais essayé déjà de chercher une option "détecter si le perso est sur un hotspot/une région", mais j'ai pas trouvé... c'est sûr que ça simplifierait la tâche ! |
|
| |
riseryn Cliqueur Emérite
Nombre de messages : 559
Localisation : 77
Date d'inscription : 01/11/2007
| Sujet: Re: Comment savoir si un objet est accessible Jeu 5 Juin 2008 - 12:41 | |
| Il suffit de declarer une variable a 0 pour innacessible et 1 pour accessible. Par defaut la variable est a 0 Si le personnage est sur un hotspot ou une region on passe la variable a 1. Dans l'action de l'objet on test si la variable est a 1 et hop c'est tout.
Il y a surement d'autres facons de faire celle ci etant la premiere qui me vient a l'esprit. _________________ il y a deux choses d'infinis, l'univers et la connerie humaine. En ce qui concerne l'univers je ne suis pas sur. (Albert Einstein)
|
|
| |
Shai-la Ouvrière en Chef de la Grande Tasse Bleue
Nombre de messages : 6018
Age : 46
Localisation : Montpellier
Date d'inscription : 17/04/2006
| Sujet: Re: Comment savoir si un objet est accessible Jeu 5 Juin 2008 - 12:57 | |
| |
|
| |
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Comment savoir si un objet est accessible Jeu 5 Juin 2008 - 13:00 | |
| - Shai-la a écrit:
- J'avais essayé déjà de chercher une option "détecter si le perso est sur un hotspot/une région", mais j'ai pas trouvé... c'est sûr que ça simplifierait la tâche !
Une méthode très simple pour détecter si un personnage se trouve ou non sur une région/un hotspot c'est d'utiliser GetAtScreen/GetAtRoom et les coordonnées du personnage en question. Exemple : - Code:
-
if (Region.GetAtRoomXY(player.x, player.y) == region[0]) ou encore - Code:
-
if (Hotspot.GetAtScreenXY(GetViewportX() + player.x, GetViewportY() + player.y) == hObjet) (il est donc préférable d'utiliser les régions) Pour ce qui est de détecter si le personnage peut atteindre un objet, eh bien malgré l'aspect un peu "barbare" (mathématiquement) du code de Vi, je pense qu'il est préférable car il permet de laisser libre d'autres utilisations les hotspots/régions. Toutefois les deux méthodes semblent à peu près aussi efficaces. (Une fonction "absolue" n'est pas très compliquée à coder si son utilité se trouve justifiée, il suffit d'une condition sur le caractère négatif ou non de l'argument passé dans la fonction, et de retourner si besoin est, le même nombre multiplié par -1) _________________ 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 ! |
|
| |
Vi Cliqueur Amateur
Nombre de messages : 214
Date d'inscription : 03/03/2008
| Sujet: Re: Comment savoir si un objet est accessible Jeu 5 Juin 2008 - 13:05 | |
| Le problème que je vois avec les régions et les hotspots, est d'une part leur limite en nombre (bon je pense pas non plus que le nombre d'objets dans une room soit si important, mais j'aime pas les limites), de plus ils ont déjà un rôle défini. Et puis en cas de multiples objets dans une zone reduite (voir d'objets superposés), cela risque d'être chaud à delimiter comme zone. Suis je dans l'erreur ? |
|
| |
Contenu sponsorisé
| Sujet: Re: Comment savoir si un objet est accessible | |
| |
|
| |
| Comment savoir si un objet est accessible | |
|