JeuxOnLineForumsPlusConnectés : 677 (sites) | 1285 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Répondre
Partager Outils Rechercher
Avatar de Caarheim/Mougeot
Caarheim/Mougeot [Epsi]
Alpha & Oméga
 
Avatar de Caarheim/Mougeot
 
Pour faire plus realiste, je te conseil une variable global, ce qui permet a tous les PJ d avoir la meme chose car si un nouveau PJ rentre dans la zone, faudrai qd meme pas que celui qui vient de desactiver le piege et attend devant le mur piegé se fasse cramer les poil du nez.
Sinon, comment tu determine la directivite de la zone de detection ? je rappele la fonction :

object GetFirstObjectInShape(
int nShape,
float fSize,
location lTarget,
int bLineOfSight = FALSE,
int nObjectFilter = OBJECT_TYPE_CREATURE,
vector vOrigin = [0.0,0.0,0.0]
);

Je vois bien la forme du SHAPE, sa taille, la loc de depart, la ligne de vue, le filtre des cibles et un "" vOrigin "" .

vOrigin : Normally the spell-caster's position. (Default: [0.0,0.0,0.0])

ce qui signifie pour moi que c'est la position du caster.

Mais comment definie t on la direction ?

EDIT : desolé, j ai beaucoup de mal ce matin lTarget, c'est la loc de la cible donc ca definie un vecteur ..........
Lien direct vers le message - Vieux
Avatar de botumys
botumys
Roi / Reine
 
Avatar de botumys
 
ok je vois ou vous voulez en venir, avec vos expliçations, dans mon cas ca va faire un cone dans lequel un sort va agir, mais en fait ce que je voudrais est plus vicieux, j'aimerais faire comme
dans le vieux jeu dungeon master, un mur qui lance une boule de feu et qui traverse un couloir, les pj doivent alors eviter cette boule de feu.
Le problème c'est qu'une boule de feu ne cause des dommages que lorsqu'elle arrive a destination, je voudrais qu'elle explose quand elle rencontre un joueur.
Lien direct vers le message - Vieux
Avatar de Caarheim/Mougeot
Caarheim/Mougeot [Epsi]
Alpha & Oméga
 
Avatar de Caarheim/Mougeot
 
c'est exactement ce que je pensais que tu pensais

Je fais cafe clope et je reviens pour voir ca
Lien direct vers le message - Vieux
Avatar de Caarheim/Mougeot
Caarheim/Mougeot [Epsi]
Alpha & Oméga
 
Avatar de Caarheim/Mougeot
 
ce quil te faudrai, c'est un truc du genre :

Code PHP:
// Attention : beaucoups de bug on été siglalé sur GetFirstObjectInShape et je sais pas si tout marche bien ;)

// Rayon de l explosion
float fRadius 10.0f;
// Effet de l explosion
effect eDamage EffectDamage(d6(3), DAMAGE_TYPE_FIREDAMAGE_POWER_NORMAL);

// Le bout du couloir comporte un wp qui sert a maximiser la propagation et a orienter le sort
oTarget GetObjectByTag("WP_BoutDuCouloir");
lTarget GetLocation(oTarget);
// le +1 sert a s assurer de s arreter au bout du couloir et pas avant le wp
fLongueur GetDistanceToObject(oTarget) + 1.0f;

// Detection du premier obstacle
oObstacle GetFirstObjectInShape(SHAPE_SPELLCYLINDREfLongueurlTargetTRUEOBJECT_TYPE_CREATURE OBJECT_TYPE_WAYPOINT );
lObstacle GetLocation(oObstacle);
// Application des degats dues a l explosion
oBobo GetFirstObjectInShape(SHAPE_SPHEREfRadiuslObstacleTRUEOBJECT_TYPE_CREATURE OBJECT_TYPE_DOOR OBJECT_TYPE_PLACEABLE);

while(
GetIsObjectValid(oTarget))
      {
      
ApplyEffectToObject(DURATION_TYPE_INSTANTeDamage,oBobo);   
      
oBobo GetNextObjectInShape(SHAPE_SPHEREfRadiuslObstacleTRUEOBJECT_TYPE_CREATURE OBJECT_TYPE_DOOR OBJECT_TYPE_PLACEABLE);
      } 
Il ne reste plus qu a appliquer les effets visuels c pas le plus facile

Ps : dites le si ya des fautes, je corrigerai
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
En fait, les bugs sur GetFirstInShape/GetNext n'en sont pas...

Je m'explique :

Tu cree une boucle GetFirst/GetNext pour simuler un sort. Dans ce sort, tu detruit l'objet s'il rate un JdP, et tu cree un Object de type cadavre, par exemple.

Et bien cela va detruire l'ordonnancement des objets, qui sont listés lors de la boucle. resutat : si tu fait une boucle du type :

Code PHP:
object oTarget GetFirstObjectInShape(4,10.0,lTarget,0,1);
while (
GetIsObjectValid(oTarget))
    {
    
object oNewObj CreateObject(64,"test",ltarget);
    
oTarget GetNextObjectInShape(4,10.0,lTarget,0,1);
    } 
tu va obtenir une boucle infinie...
Magique, non ?

En fait, l'explication, c'est que le oNewObj est crée juste apres l'object oTarget dans la liste des objet dans l'aire d'effet. Celui ci etant dans l'aire d'effet, alors, il est valide pour la boucle, et declenche la creation d'un nouveau oNewObj... et-caetera...

certains autres comportement "bizarre" sont obsevable, et relevent, a priori, du même souci.

Ma solution pour eviter ces "bugs", qui d'apres moi, n'en sont pas (mais je precise que ce n'est que mon interpretation e la chose, et qu'a priori, n'ayant que peu de connaissance en ce domaine, ce n'est que supputation), c'est tout simplement de mettre un DelayCommand dans toutes les actions effectuées par GetFirst/GetNext.

Voila

PS pour l'effet visuel, je vois pas ce qu'il y a de dur : Le FakeSpell sera parfait ^^
Lien direct vers le message - Vieux
Avatar de Caarheim/Mougeot
Caarheim/Mougeot [Epsi]
Alpha & Oméga
 
Avatar de Caarheim/Mougeot
 
Je parle des bug de zone SHAPE_* . Je crois qu ils ont été corrigé , mais definies tu le diametre du cylindre du SHAPE_CYLINDRE ??? d apres des tests, il serait de 10 pas ( ou 10m , je sais plus) ce qui est enorme. il faudrai donc rajouter une formule mathematique pour calculer la distance entre l objet detecter et la droite qui va d un bout a l autre, sinon faudra faire des niche vachement profondes pour que le PJ se prenne pas la boule dans la tete.

Pour l effet visuel, faudrai un effet qui avance a une vitesse donner. pour ca, l effet boule de feu est pas mal. il reste toute fois un probleme : le moment de declenchement de l effet
_ si tu l active avant de detecter les obstacles, il ne s arretera jamais sur le mouton qui traverse .
_ si tu l active apres, comme le debut de l effet , cad la petite boule qui deviendra grosse, a une vitesse propre et comme il ne part que apres avoir fait le test de presence, le PJ pourra avancer avant de ce prendre la boule

ma solution serait de bloquer le PJ le temp que la boule le touche et mettre un delais en fonction de la distance pour l application des degats chui doué en math ( plus qu en ortaugraf, ca c sur) mais la j ai peur que ce sois un peu lourd a gerer pour les calculs mathématiques, du cote serveur je parle.

J ai pas trouvé la FakeSpell dans le Lexicon po glop

Sinon, le script vous semble correct ?

EDIT : juste pour un rappel de math : la distance entre une droite (AB) et un point M de l espace est obtenue par :
|| AB ^ AM || / || AB ||

:baille:
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
FakeSpell = ActionCastFakeSpellAtLocation() ou ActionCastFakeSpellToObject()

Citation:
Je parle des bug de zone SHAPE_* .
Je parle de ca aussi : les bugs que je connais sur les shapes sont tous lies a l'ordonnancement des objet dans le listing de ceux ci.
Je ne parlait pas de notre exemple particulier.

Citation:
??? d apres des tests, il serait de 10 pas ( ou 10m , je sais plus) ce qui est enorme.
Bein... euh... ca depend de ce que tu met dans les parametres...


Pour le pb qui nous concerne, il suffit de mettre ton script et le FakeSpell dans le OnHeartbeat d'une creature invisible. vec un controle sur une variable locale qu'un trigger va mettre a TRUE et que le levier va mettre a FALSE


(PS : pas lu ton script : desole : j'ai reunion dans 30sec ^^)
Lien direct vers le message - Vieux
Avatar de Caarheim/Mougeot
Caarheim/Mougeot [Epsi]
Alpha & Oméga
 
Avatar de Caarheim/Mougeot
 
les bugs dont je parle concerne la ligne de vue et la zone de detection

pour la ligne de vue, le parametre TRUE ou FALSE n est pris en compte que pour les OBJECT_TYPE_CREATURE et pas pour les autres types :/

pour la zone de detection, il semblerai que dans certain cas , il ne detecte pas sur tout le domaine de detection que l on veut qu il scrute :/

Pour le SHAPE_CYLINDRE, le float que l on rentre donne la longueur du cylindre mais pas son rayon.
Pour le SHAPE_SPHERE, c le rayon ( logique ) , centre sur la cible
Pour le SHAPE_CUBE, c la longueur du demi cote, centre sur la cible
Pour le SHAPE_CONE, c le rayon du bout du cone, et la longueur de l emeteur jusqa la cible

arf , ActionCastFake etait la 4ieme fonction
on peut donc rajouter avant le while

Code PHP:
ActionCastFakeSpellAtLocation SPELL_FIREBALL,   lObstaclePROJECTILE_PATH_TYPE_ACCELERATING); 
et surtout mettre un DelayCommand sur le ApplyEffectToObject au cas ou ca tuerai la cible


PS : les réunions, c tabou, on en viendra tous a bout !!!!
Lien direct vers le message - Vieux
Avatar de botumys
botumys
Roi / Reine
 
Avatar de botumys
 
je prend une aspirine et je teste ca ce soir.
Sinon le système D made in botumys, vu que c'est pour maitriser une partie, si je vois une boule de feu qui rentre en contact avec un joueur, hop le jeu en pause, je lance un jet pour la sauvegarde et si il échoue, paf adios je le kill manuellement !

Bon ok, c'est nul...
Lien direct vers le message - Vieux
Avatar de Caarheim/Mougeot
Caarheim/Mougeot [Epsi]
Alpha & Oméga
 
Avatar de Caarheim/Mougeot
 
essaie avec mon script. ca doit marcher ........... normalement
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > mur boule de feu
   

Outils Rechercher
Rechercher:

Recherche avancée

Les vidéos de Neverwinter Nights RSS
  • Aucune vidéo pour le moment...
Thème visuel : Fuseau horaire GMT +1. Il est actuellement 13h53.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite