Partagez
Aller en bas
avatar
night974
Membre

Nombre de messages : 24
Distinction : aucune
Date d'inscription : 21/06/2015

Résolu Personnage surpris (comme dans pokemon)

le Dim 28 Juin 2015 - 23:26
Bonjour tout le monde,
je vous expose mon problème en espérant que vous m'aiderez.

La version courte :

Je veux qu'un PNJ utilise le pathfinder de KHAS en passant par dessus certains événements.
le héro doit rejoindre la fille:
Spoiler:

La version longue :

J'essaie de lancer des quêtes de la même manière que Pokemon, je m'explique;
Quand mon héro passe devant un PNJ qui le regarde, le PNJ s'avance jusqu'à mon héro et ça lance une quête ou un combat
ou n'importe quel événement qu'il me semblera intéressant de mettre à ce moment là.

jusque la j'utilisais une suite d’événements comme ceci :

Spoiler:

sauf qu’après avoir parlé a mon héro, je veux que ce PNJ se déplace jusqu'à un point plus éloigné
(à droite de la jolie demoiselle sur la photo suivante) :

Spoiler:


Et là, je me rend compte que c'est fastidieux de retaper un itinéraire pour chaque emplacement du héro. Donc je trouve le
pathfinder de KHAS (à qui j'ai déjà piqué le script pour les lumières en passant..).

Je trouve le script merveilleux et je l'utilise sur mon PNJ .... sauf qu'il y a des événements par terre qui empêchent le passage
du PNJ. (la solution "traverser tout" est impossible a utiliser ici pour des raisons logiques) .





Donc...  en gros, voila mes questions :
Les questions:
-Y a t'il un moyen de faire cette animation (PNJ qui s'avance vers le joueur) sans utiliser autant d’événements.
-Y a t'il un moyen de faire en sorte que le pathfinder ignore les événements qui sont en dessous du héro?
-Quelle est la meilleur solution pour obtenir le résultat souhaité sachant que je suis un néophyte?


Merci de votre aide que apprécierais grandement. rabbit


Dernière édition par night974 le Mar 30 Juin 2015 - 10:40, édité 1 fois
avatar
night974
Membre

Nombre de messages : 24
Distinction : aucune
Date d'inscription : 21/06/2015

Résolu Re: Personnage surpris (comme dans pokemon)

le Lun 29 Juin 2015 - 22:17
Up
avatar
Andhrimnire
Membre

Nombre de messages : 21
Age : 30
Distinction : aucune
Date d'inscription : 18/06/2015
http://torminisregnum.ephpbb.com/

Résolu Re: Personnage surpris (comme dans pokemon)

le Mar 30 Juin 2015 - 0:24
je suis une débutante mais, je pense pouvoir t'apporter quelque angle d'attaque pour ton problème.

Voilà ce que je propose (après je ne sais pas si ça va marcher comme tu le voudra):
Tu fais un événement commun
@condition : variable[0003:x_pnj] >= variable [0006:x_a]
@condition : variable[0003:x_pnj] <= variable [0008:x_b]
@condition : variable[0004:y_pnj] >= variable [0007:y_a]
@condition : variable[0004:y_pnj] >= variable [0009:y_b]

Ici tu vérifie si le héros se trouve dans le "couloir"
@condition : variable[0001:x_hero] >= variable [0006:x_a]
@condition : variable[0001:x_hero] >= variable [0008:x_b]
@condition : variable[0002:y_hero] >= variable [0007:x_a]
@condition : variable[0002:y_hero] >= variable [0009:x_b]

Puis tu détermine le champ de vision de ton pnj en fonction de sa direction
@condition : variable[0005:direction_pnj] == 8
variable : [004:y_pnj]-= 3
]@condition : variable[0005:direction_pnj] == 6
variable : [003:x_pnj]+= 3
@condition : variable[0005:direction_pnj] == 2
variable : [004:y_pnj]+= 3
@condition : variable[0005:direction_pnj] == 4
variable : [003:x_pnj]-= 3

Et enfin tu vérifie si le héro est dans le champ de vision
variable : [003:x_pnj]-= 2
variable : [004:y_pnj]-= 2
@condition : variable[0001:x_hero] >= variable [003:x_pnj]
@condition : variable[0002:y_hero] >= variable [004:y_pnj]
variable : [003:x_pnj]+= 4
variable : [004:y_pnj]+= 4
@condition : variable[0001:x_hero] <= variable [003:x_pnj]
@condition : variable[0002:y_hero] <= variable [004:y_pnj]
interrupteur : [0001:vue]= activé

Ensuite tu fais un événement en parallèle qui inclue la direction
@variable : [0001:x_hero] = héroscarte X
@variable : [0002:y_hero] = héroscarte Y
@variable : [0003:x_pnj] = [tag_pnj] X
@variable : [0004:y_pnj] = [tag_pnj] Y
@Variable : [0005:direction_pnj] = [tag_pnj]direction
interrupteur : [0002:direction] = activé
@boucle
@condition : interrupteur [002:direction] == désactiver
@
: fin de condition
@attendre 1 frames
@
: fin de bouble

Puis un autre événement parallèle pour calculer le "couloir"
@placer un événement : cet événement (XXX , XXX)
@variable : [006:x_a] : cet evénementcarte X
@variable : [007:y_a] : cet evénementcarte y
@placer un événement : cet événement (XXX , XXX)
@variable : [006:x_b] : cet evénementcarte X
@variable : [007:y_b] : cet evénementcarte y
événement commun : [celui_du_tout_debut]

Après tu va dans événement de ton pnj, tu fais 2 pages. Une pour le cas où le héros n'est pas dans le champs de vision. Et l'autre qui aura pour condition que l'interrupteur vue sera activé. Et là tu personnalises ta "cute-scene". Genre tu dis que le Héros ne bouge pas pendant 5 frames, puis lancer un combat. Ces 3 scriptes serve à la base pour un système de garde qui font des rondes et du héros qui doit s'infiltrer. Mais je pense que tu peux adapter le truc pour faire ce que tu recherches. Il ne faut pas oublié de placer les 2 événements parallèle sur ta map.
avatar
night974
Membre

Nombre de messages : 24
Distinction : aucune
Date d'inscription : 21/06/2015

Résolu Re: Personnage surpris (comme dans pokemon)

le Mar 30 Juin 2015 - 9:14
Merci a toi d'avoir répondu !
Alors je n'ai pas utilisé ta technique bien qu'elle m'ait permis de m'orienter !
J'ai finalement utilisé le pathfinder et je trouve que c'est plus court !

Mais je te rassure ! Je n'aurais pas réussi sans suivre un peu ton raisonnement .
pour ceux que ça intéresse voila ce que j'ai fais :

il ne concerne que le couloir vertical (voir image ci-dessous)
Spoiler:


(c'est la version algorithme a traduire en commande d’événement)



début
 x = coord map x du héro
 y = coord map y du héro
 si x==27 alors
   si y>13 et y <19 alors
     y+=1


     //j'utilise le script pathfinder sur l’événement 30 (mon PNJ) pour qu'il se rende a la position
     //(x,y)
     //stocké ici dans les variables 3 et 4

     find_path(30,$game_variables[3],$game_variables[4])
   

     //ici on active un interrupteur local afin d'éviter de boucler a l'infini
    //(ne pas oublier de créer une autre page vide avec en condition l’interrupteur local A)

    activer interrupteur local A
   fin si
 fin si
fin

après ça je peux utiliser le pathfinder pour envoyer mon pnj a la position souhaité sans rencontrer des événements encombrant.

Si je n'ai pas été clair, si j'ai fais une erreur ou autre, n’hésitez pas à demander !
avatar
Andhrimnire
Membre

Nombre de messages : 21
Age : 30
Distinction : aucune
Date d'inscription : 18/06/2015
http://torminisregnum.ephpbb.com/

Résolu Re: Personnage surpris (comme dans pokemon)

le Mar 30 Juin 2015 - 10:29
Pas de souci Smile

Le bute de la manœuvre était justement de t'orienter sur des possibilités, même si visiblement j'ai un peu mal comprît ce que tu demandais tongue.

Pour moi, voilà ce que tu voulais faire :

Dans cette exemple le pnj fait des aller-retour dans la zone bleu via la première page d’événement du gardien. Si le héros se trouve dans la zone bleue et qu'il est dans la direction du gardien, ça active la deuxième page d'événement du gardien. Pour ma part j'avais mis que le héros ne bouge plus, le garde se dirige vers le héros, puis game over.

-Y a t'il un moyen de faire cette animation (PNJ qui s'avance vers le joueur) sans utiliser autant d'événements

Du coup je pensais que tu aimerais un truc un peu dans le même genre.
avatar
night974
Membre

Nombre de messages : 24
Distinction : aucune
Date d'inscription : 21/06/2015

Résolu Re: Personnage surpris (comme dans pokemon)

le Mar 30 Juin 2015 - 10:40
Ah, je n'avais pas prévu les choses comme ça mais ça à l'air intéressant ! du coup ton code prend tout son sens :3
Merci encore ! je met le sujet en "résolu" !
avatar
Andhrimnire
Membre

Nombre de messages : 21
Age : 30
Distinction : aucune
Date d'inscription : 18/06/2015
http://torminisregnum.ephpbb.com/

Résolu Re: Personnage surpris (comme dans pokemon)

le Mar 30 Juin 2015 - 10:49
Si tu as plusieurs pnj dans ta zone qui fonctionne un peu de la même manière il te suffit de rajouter des lignes dans les 2 dernières scriptes.

Pour celui concernant le calcule du couloir ça donnerai un truc du genre :
Pour le premier pnj
@placer un événement : cet événement (XXX , XXX)
@variable : [006:x_a] : cet evénementcarte X
@variable : [007:y_a] : cet evénementcarte y
@placer un événement : cet événement (XXX , XXX)
@variable : [006:x_b] : cet evénementcarte X
@variable : [007:y_b] : cet evénementcarte y
événement commun : [celui_du_tout_debut]
Pour le deuxième pnj
@placer un événement : cet événement (XXX , XXX)
@variable : [006:x_a] : cet evénementcarte X
@variable : [007:y_a] : cet evénementcarte y
@placer un événement : cet événement (XXX , XXX)
@variable : [006:x_b] : cet evénementcarte X
@variable : [007:y_b] : cet evénementcarte y
événement commun : [celui_du_tout_debut]

Et pour la direction du garde ça donnerai un truc du genre :
Pour le premier pnj
@variable : [0001:x_hero] = héroscarte X
@variable : [0002:y_hero] = héroscarte Y
@variable : [0003:x_pnj] = [tag_pnj] X
@variable : [0004:y_pnj] = [tag_pnj] Y
@Variable : [0005:direction_pnj] = [tag_pnj]direction
interrupteur : [0002:direction] = activé
@boucle
@condition : interrupteur [002:direction] == désactiver
@
: fin de condition
@attendre 1 frames
@
: fin de bouble
Pour le deuxieme pnj
@variable : [0001:x_hero] = héroscarte X
@variable : [0002:y_hero] = héroscarte Y
@variable : [0003:x_pnj] = [tag_pnj] X
@variable : [0004:y_pnj] = [tag_pnj] Y
@Variable : [0005:direction_pnj] = [tag_pnj]direction
interrupteur : [0002:direction] = activé
@boucle
@condition : interrupteur [002:direction] == désactiver
@
: fin de condition
@attendre 1 frames
@
: fin de bouble

Par contre il ne faut pas toucher à l'événement en commun. Pour le reste, tu peux ajouter autant de "couloir" et de pnj liée que tu veux
avatar
night974
Membre

Nombre de messages : 24
Distinction : aucune
Date d'inscription : 21/06/2015

Résolu Re: Personnage surpris (comme dans pokemon)

le Mar 30 Juin 2015 - 10:55
Pour l'instant ce n'est pas prévu de faire ça mais merci de partage et de l'aide,
j'utiliserais ta méthode quand j'en aurais besoin Very Happy .

J'avoue que ta méthode semble bien plus dynamique que la mienne ^^'
Je cherche de mon coté pour voir si on peut faire plus simple.
avatar
Andhrimnire
Membre

Nombre de messages : 21
Age : 30
Distinction : aucune
Date d'inscription : 18/06/2015
http://torminisregnum.ephpbb.com/

Résolu Re: Personnage surpris (comme dans pokemon)

le Mar 30 Juin 2015 - 11:24
Tu as une autre méthode si le bute est simplement que ton pnj poursuive le héros.


En bleu tu a 3 déclencheurs (pour être sur que le héros marche dessus). Ce sont tous les trois les mêmes. Sur cette événement tu fait 2 pages. La première qui à pour déclencheur "contacte avec le héros" puis tu mets un interrupteur activé dans la commande de l'événement (dans cette exemple on va l’appeler [0013:poursuite]) et dans la deuxième page tu met comme condition un interrupteur activé (ici on va l’appeler [0014:fin_poursuite])

Puis tu mets ton pnj sur ta carte et tu luis met comme déplacement "suit le héros" avec une vitesse "normale" ou rapide avec la fréquence maximum. Tu lui mets encore 2 pages. La première aura la commande de l'événement que tu aura faite et la deuxième sera là pour mettre fin à la boucle.

Ensuite tu fais un événement parallèle qui aura pour condition que [00013:poursuite] soit actif. Dans la commande de cet événement tu met :
@déplacer un événement : cet événement (répéter en boucle)
un pas vers le héros


Tu place ton événement parallèle sur ta map et tu n'oublie pas de configuré l'événement qui activera [0014:fin_poursuite]. Sinon ton pnj va suivre le héros indéfiniment jusqu’à ce qu'il sorte de la map XD
avatar
night974
Membre

Nombre de messages : 24
Distinction : aucune
Date d'inscription : 21/06/2015

Résolu Re: Personnage surpris (comme dans pokemon)

le Mar 30 Juin 2015 - 13:30
Oui c'est sympa mais la ce n'est plus du tout ce que je veux !
Merci quand même !
Contenu sponsorisé

Résolu Re: Personnage surpris (comme dans pokemon)

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum