Roublard volant un pj au passage

Répondre
Partager Rechercher
Comment faut-il faire pour qu'un PNJ (batisé "voleur_pitoyable" et qui est au stade "populace pour la faction) cours à coté du PJ, et lui vole une quantité d'or variable, sauf si le PJ lance un jet de reflexe et qu'il réussit?
Citation :
Publié par Eternity_light
Comment faut-il faire pour qu'un PNJ (batisé "voleur_pitoyable" et qui est au stade "populace pour la faction) cours à coté du PJ, et lui vole une quantité d'or variable, sauf si le PJ lance un jet de reflexe et qu'il réussit?
Bein t'as la réponse dans ta question !
Suffit de le forcer à courir aux côtes du Pj, de lancer un test de reflex avec une variable que tu auras imposé, puis de soustraire l'or au Pj si le jet est négatif puis de faire disparaître ton Voleur Pitoyable dans le coin d'une rue ou dans l'ombre en le mettant furtif par exemple !

Code PHP:

// Force the action subject to move to oMoveTo.
void ActionForceMoveToObject(object oMoveToint bRun=FALSEfloat fRange=1.0ffloat fTimeout=30.0f
Code PHP:

// The action subject will move to lDestination.
// - lDestination: The object will move to this location.  If the location is
//   invalid or a path cannot be found to it, the command does nothing.
// - bRun: If this is TRUE, the action subject will run rather than walk
// * No return value, but if an error occurs the log file will contain
//   "MoveToPoint failed."
void ActionMoveToLocation(location lDestinationint bRun=FALSE
Code PHP:

// Does a Reflex Save check for the given DC
// - oCreature
// - nDC: Difficulty check
// - nSaveType: SAVING_THROW_TYPE_*
// - oSaveVersus
// Returns: 0 if the saving throw roll failed
// Returns: 1 if the saving throw roll succeeded
// Returns: 2 if the target was immune to the save type specified
// Note: If used within an Area of Effect Object Script (On Enter, OnExit, OnHeartbeat), you MUST pass
// GetAreaOfEffectCreator() into oSaveVersus!!
int ReflexSave(object oCreatureint nDCint nSaveType=SAVING_THROW_TYPE_NONEobject oSaveVersus=OBJECT_SELF
Cela demande tout de même une certaine maîtrise de la gestion des actions d'un PNJ.

Il y a de plus plusieurs façons de faire faire un vol par un PNJ.

La première est la méthode barbare. Basique mais efficace :
--> PNJ va vers PJ, PNJ vole PJ, PNJ fuit.

La seconde est la méthode subtile, difficile à mettre en place, car il faut prendre en compte le fait que le joueur peut se déplacer à tout moment :
--> PNJ furtif va vers PJ, Jet de réflexes du PJ, PNJ vole PJ si jet de réflexes raté, PNJ fuit.

La troisième est plus avancée, et très difficile à mettre en place, compte tenu de trop d'éléments :
--> PNJ furtif va vers PJ, PNJ repart s'il est détecté par PJ, attend un moment et recommence au début, Jet de réflexes du PJ, PNJ vole PJ si jet de réflexes raté, PNJ fuit.


Il y a beaucoup de méthodes, mais comme j'ai dit plus haut, il faut une bonne maîtrise de la gestion des actions d'un PNJ pour réaliser une suite d'actions cohérentes, et prendre en compte énormément de paramètres aussi tordus qu'un joueur peut l'être. Exemple aléatoire, le joueur voit le voleur, et clique dessus dans l'espoir d'entamer un dialogue. Outre ce genre d'utilisations, la gestion des actions d'un PNJ est également l'une des bases, entre autres, de la création d'une cinématique.
Faut aussi prendre en compte la mentalité des joueurs...
Tu voles 100 pieces d'or et on te PK en boucle avec 5 potes roub, 4 a 5 fois de suite... (c'est du vécu o O )Alors imagine si c'est un PNJ qui vole...
Et donc prévoir ce cas la.... Celui ou pour 100 pieces d or, le gars va tuer le PNJ en pleine ville.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés