JeuxOnLineForumsPlusConnectés : 752 (sites) | 1267 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Faire apparaître aléatoirement un effet ? RSS
   
Répondre
Partager Outils Rechercher
Avatar de MTorment
MTorment
Roi
 
Avatar de MTorment
 
Question

Faire apparaître aléatoirement un effet ?

Est-il possible de faire apparaître un ou plusieurs effets, aléatoirement dans une zone, au niveau du sol par exemple ?

Pour que cela soit vraiment aléatoire, je cherche à le faire sans l'utilisation des waypoints.

Merci
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
Oui : il te suffit de declarer ta location.


Si tu veux une location aleatoire :

Code PHP:
float fX IntToFloat(Random(nXMax)+1.0);
float fY IntToFloat(Random(nYMax)+1.0);
vector vLoc Vector(fX,fY,1.0);
location lRandomLoc Location(GetArea(OBJECT_SELF),vLoc,1.0); 
en mettant la taille de ta zone dans nXMax et nYmax.
Tu insere ceci dans ton script, et tu fais apparaitre ton effet a cette location lRandomLoc.


Pour l'effet visuel (et juste visuel) random, tu peux faire ca :
Code PHP:
effect eVFX EffectVisualEffect(Random(346)+1); 
certains des 346 effets speciaux ne declencheront rien, mais sur la masse, ca ne fera pas plus de 1/10.

Donc, tu peux combiner les deux a loisir ^^

[Edit = Correction : Merci Jedaï]
Lien direct vers le message - Vieux
Avatar de Jedaï
Jedaï
Alpha & Oméga
 
Avatar de Jedaï
 
Bien sûr, il te suffit d'utiliser des "vector" avec des coordonnées aléatoires (Random() ) pour construire des "location" dans ta zone avec la fonction Location().
Ensuite tu utilise ApplyEffectToLocation() (ou AtLocation, j'sais plus ).

[Edit] eM m'as grillé et en plus il donne des exemples !
Pour me venger je dirais que je pense que Location() exige l'area où l'on crée cette location.
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
Bien vu ^^
Lien direct vers le message - Vieux
Avatar de Ange Musicien
JOL Ange Musicien
Alpha & Oméga
 
Avatar de Ange Musicien
 
Tiens c'est sûrement tiré par les cheveux mais moi j'ai fait un lancé de dés pour la location aléatoires de mes éclairs dans ma zone (6d12 abscisse, 6d12 ordonnée)...
Lien direct vers le message - Vieux
Avatar de MTorment
MTorment
Roi
 
Avatar de MTorment
 
Je remonte ce post des oubliettes pour ajouter ceci :

Dans le même genre,
Est-il possible de faire apparaître un effet aléatoirement dans un trigger ? (toujours sans waypoint)

Merci
Lien direct vers le message - Vieux
Avatar de Ange Musicien
JOL Ange Musicien
Alpha & Oméga
 
Avatar de Ange Musicien
 
Oui, mais c'est plus dur. Ca dépend essentiellement de la forme du trigger.Tu devras diviser ton trigger si sa forme est autre qu'un rectangle en triangles rectangles et en rectangles, afin de créer des zones manipulables... Faire apparaître un effet dans un trigger consiste à limiter la zone d'effet de génération C'est un script compliqué, je ne pense pas qu'il y ait plus simple. Sache qu'il est beaucoup plus simple de travailler avec un trigger rectangle, ou un trigger composé de rectangles... Sinon tu dois diviser en triangles rectangles, et la génération dans un triangle rectangle convient à impose un max abscisse+ordonnée d'un côté et un max abcisse et ordonnée de l'autre. Je suis incompréhensible probablement, mais je me comprends, et c'est l'essentiel, puisque c'est moi qui vais faire le script si tu en as besoin
Lien direct vers le message - Vieux
Avatar de MTorment
MTorment
Roi
 
Avatar de MTorment
 
Eh bien, un rectangle convient parfaitement à ce que je recherche.

Si tu peux faire le script, ça m'intéresse beaucoup.

Merci pour ton aide.
Lien direct vers le message - Vieux
Avatar de Ange Musicien
JOL Ange Musicien
Alpha & Oméga
 
Avatar de Ange Musicien
 
Je souhaiterais être corrigé, ce n'est pas un script facile

Tout d'abord, voici le premier script, "io_gen_rdmloc", qui permet d'avoir accès à une fonction nommée GenerateRandomLocation().
Code PHP:
//  io_gen_rdmloc  //
// fichier include //

//::///////////////////////////////////////////////
//:: GenerateRandomLocation
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*

 Cette fonction cree une location aleatoire dans une zone rectangle.
 Elle admet un degre de precision (entre 1 et 0.000001, et inferieur),
 et admet un bon nombre de parametres.

*/
//:://////////////////////////////////////////////
//:: Created By: Ange Musicien
//:: Created On: Forum Maskado - JOL
//:://////////////////////////////////////////////

// Générer aléatoirement une location dans une zone rectangle, qui peut etre une aire.
// - oArea: Aire dans laquelle est situee la zone rectangle.
// - Xmin : minimum en abscisse pour la zone
// - Ymin : minimum en ordonnee pour la zone
// - Xmax : maximum en abscisse pour la zone
// - Ymax : maximum en ordonnee pour la zone
// - fPrecision : la precision de la location. Elle est a 0.01f par defaut, mais peut
//   aller de 1 a 0.000001 ou inferieur. C'est le nombre de decimales admises pour
//   les abscisses et ordonees de la location aleatoire.
// - fZ   : hauteur de la location, par defaut 1.0
location GenerateRandomLocation(object oAreafloat Xminfloat Yminfloat Xmaxfloat Ymaxfloat fPrecision 0.01float fZ 1.0);

location GenerateRandomLocation(object oAreafloat Xminfloat Yminfloat Xmaxfloat Ymaxfloat fPrecisionfloat fZ)
{
float XdifYdiffXfYYdifPreXdifPreYdifPre2XdifPre2XmulYmul;
int nXnYnXPnYP ;
vector v;
location l;

Xdif Xmax-Xmin;
Ydif Ymax-Ymin;

XdifPre  Xdif/fPrecision;
YdifPre  Ydif/fPrecision;
XdifPre2 XdifPre 1.0;
YdifPre2 YdifPre 1.0;
nX Random(FloatToInt(XdifPre2));
nY Random(FloatToInt(YdifPre2));
Xmul IntToFloat(nX);
Ymul IntToFloat(nY);
fX Xmul*fPrecision;
fY Ymul*fPrecision;
fX fX Xmin;
fY fY Ymin;

Vector(fX,fY,fZ);
Location(oArea,v,0.0);
return 
l;

Voici un exemple d'application, ce script crée une boule de feu aléatoirement toutes les six secondes, dans un rectangle de 10x10 (placé au milieu d'une zone de 30x30). Il est placé dans le OnHeartBeat d'une zone :
Code PHP:
// OnHeartBeat //
#include "io_gen_rdmloc"
void main()
{
object oArea;
location l;
effect e;

oArea OBJECT_SELF;
GenerateRandomLocation(oArea,10.0,10.0,20.0,20.0);
EffectVisualEffect(VFX_FNF_FIREBALL);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT,e,l);

Si quelqu'un pouvais relire mon premier script
Lien direct vers le message - Vieux
Avatar de Ange Musicien
JOL Ange Musicien
Alpha & Oméga
 
Avatar de Ange Musicien
 
Il marche à la perfection Je l'ai testé : il permet de recréer bombardement, éclairs, et de créer une zone de spawn ce quoi augment le RP (plutôt que de spawné toujours le même monstre au même endroit )

Tu peux l'utiliser dès maintenant, je le rajoute à la liste des scripts du persistant.
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Faire apparaître aléatoirement un effet ?
   

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 13h23.
   

© 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