AccueilPortailFAQRechercherS’enregistrerConnexion
Poster un nouveau sujet   Répondre au sujet
 

Comment savoir si un objet est accessible

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Vi
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue



Inscrit le : 03 Mar 2008
Messages : 126

MessageSujet: 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.
Revenir en haut Aller en bas
Shai-la
Ouvrière en Chef de la Grande Tasse Bleue
Ouvrière en Chef de la Grande Tasse Bleue



Inscrit le : 17 Avr 2006
Messages : 2641

MessageSujet: 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
Revenir en haut Aller en bas
Vi
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue



Inscrit le : 03 Mar 2008
Messages : 126

MessageSujet: 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.
Revenir en haut Aller en bas
Alph Eratz
Cliqueur Amateur
Cliqueur Amateur



Age : 44
Inscrit le : 23 Jan 2008
Messages : 464
Localisation : voir mon site

MessageSujet: 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.
Revenir en haut Aller en bas
Shai-la
Ouvrière en Chef de la Grande Tasse Bleue
Ouvrière en Chef de la Grande Tasse Bleue



Inscrit le : 17 Avr 2006
Messages : 2641

MessageSujet: 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
Revenir en haut Aller en bas
riseryn
Cliqueur Emérite
Cliqueur Emérite



Inscrit le : 01 Nov 2007
Messages : 561
Localisation : 77

MessageSujet: 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)
Revenir en haut Aller en bas
Shai-la
Ouvrière en Chef de la Grande Tasse Bleue
Ouvrière en Chef de la Grande Tasse Bleue



Inscrit le : 17 Avr 2006
Messages : 2641

MessageSujet: Re: Comment savoir si un objet est accessible   Jeu 5 Juin - 14:57

Pas bête sourire
_________________

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
Revenir en haut Aller en bas
Kitai
Cliqueur Amateur
Cliqueur Amateur



Inscrit le : 01 Aoû 2006
Messages : 238

MessageSujet: 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
Revenir en haut Aller en bas
Vi
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue



Inscrit le : 03 Mar 2008
Messages : 126

MessageSujet: 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 ?
Revenir en haut Aller en bas

Comment savoir si un objet est accessible

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Adventure Games Studio fr :: AIDE A L'UTILISATION D'AGS :: Questions / Réponses-
Poster un nouveau sujet   Répondre au sujet