| Comment savoir si un objet est accessible | |
|
|
| Auteur | Message |
|---|
Vi Adepte de la Grande Tasse Bleue


Inscrit le : 03 Mar 2008 Messages : 126
| Sujet: Comment savoir si un objet est accessible Mer 4 Juin - 22: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


Inscrit le : 17 Avr 2006 Messages : 2641
| Sujet: Re: Comment savoir si un objet est accessible Jeu 5 Juin - 6: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). _________________
 http://www.ninatonnerre.com : le site officiel de la BD Nina Tonnerre http://katurajdr.fr : mon forum officiel sur mes BD et autres créations |
|
 | |
Vi Adepte de la Grande Tasse Bleue


Inscrit le : 03 Mar 2008 Messages : 126
| Sujet: Re: Comment savoir si un objet est accessible Jeu 5 Juin - 10: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 Amateur


Age : 44 Inscrit le : 23 Jan 2008 Messages : 464 Localisation : voir mon site
| Sujet: Re: Comment savoir si un objet est accessible Jeu 5 Juin - 12: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. _________________
SOSEFA2BAMA*  *Société Secrète des Fabricants de Baguettes et de Balais Magiques.
 |
|
 | |
Shai-la Ouvrière en Chef de la Grande Tasse Bleue


Inscrit le : 17 Avr 2006 Messages : 2641
| Sujet: Re: Comment savoir si un objet est accessible Jeu 5 Juin - 13: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 ! _________________
 http://www.ninatonnerre.com : le site officiel de la BD Nina Tonnerre http://katurajdr.fr : mon forum officiel sur mes BD et autres créations |
|
 | |
riseryn Cliqueur Emérite


Inscrit le : 01 Nov 2007 Messages : 561 Localisation : 77
| Sujet: Re: Comment savoir si un objet est accessible Jeu 5 Juin - 14: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


Inscrit le : 17 Avr 2006 Messages : 2641
| Sujet: Re: Comment savoir si un objet est accessible Jeu 5 Juin - 14:57 | |
| Pas bête  _________________
 http://www.ninatonnerre.com : le site officiel de la BD Nina Tonnerre http://katurajdr.fr : mon forum officiel sur mes BD et autres créations |
|
 | |
Kitai Cliqueur Amateur


Inscrit le : 01 Aoû 2006 Messages : 238
| Sujet: Re: Comment savoir si un objet est accessible Jeu 5 Juin - 15: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 |
|
 | |
Vi Adepte de la Grande Tasse Bleue


Inscrit le : 03 Mar 2008 Messages : 126
| Sujet: Re: Comment savoir si un objet est accessible Jeu 5 Juin - 15: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 ? |
|
 | |
| Comment savoir si un objet est accessible | |
|