1 Fireball toutes les 20 secondes sur une zone ?

Répondre
Partager Rechercher
voili voilou...
Bijour tous...
Che foudrai un script qui permettent dans une zone définie par un trigger... qu'une Fireball tombe toutes les 20 secondes...
est il possible que cette fireball tombe toute seule sans l'aide d'un perso ? comme s'il en pleuvait tout simplement...
et ou faudrait il intégrer le script ?
dans les fonction onEnter (ou autres) de " l'Area " ou dans un onUse d'uin objet ??
en calir je suis un peu paumé comme d'habitude car moi et les scripts ça fait trois

Merci d'avance mes cher(e)s compatriotes...
__________________
Création de tentures [ réactives UV ]

http://pyr.ouvaton.org
dans un onheartbeat

Code PHP:

void main()
{
int nTemp GetLocalInt(OBJECT_SELF"TEMP");
if(
nTemp >= 3)
  {
   
effect eVis EffectVisualEffect(VFX_FNF_FIREBALL);
   
ApplyEffectToObject(DURATION_TYPE_INSTANTeVisOBJECT_SELF);
   
nTemp = -1//euh .. la y a peut etre un pb, test ^_^
  
}
nTemp++;
SetLocalInt(OBJECT_SELF"TEMP"nTemp);

alors, soit sur un WP, soit sur un trigger,,mais je sais pas ou ca va tomber sur le trigger, donc test, voir sica tombe au milieu par exemple (enfin, ca tombe pas, ca explose)
et la c tt les 18 sec .. pas grave ?

bon, on peut faire plus compliquer, avec des petite variation de durée, mais bon ...
si tu veux on peut mettre plein d'aleatoire dedans
pis décaler des fireballs qui tombe sur des surface un peu plus étendue pas synchro etc. mais bon, y a déjà un effet pour les chute de météorites
et la l'écran tremble pas ... (et chuis même pas sure que ca marche, mais ca devrait)
c tjrs cool d'avoir des retours sur un script qui marche pas, merci nezar pour ton mp
bon, ba maintenant je saurais que mettre un
ApplyEffectToObject sur un triggers c mal
aors, correctif, sachant que la l'explosion ne fait aucun dégats

:

Code PHP:

void main()
{
int nTemp GetLocalInt(OBJECT_SELF"TEMP"); //on recupere le nb de de onheatbeat declenchs
if(nTemp >= 3)   //si il y en a tropis ou plus (36 = 18)
  
{
   
effect eVis EffectVisualEffect(VFX_FNF_FIREBALL);
   
ApplyEffectAtLocation(DURATION_TYPE_INSTANTeVisGetLocation(OBJECT_SELF)); //faire un effet boule de feu sur le trigger
   
SetLocalInt(OBJECT_SELF"TEMP"0); //remettre le compteur a zero
   
return; //arreter le script
  
}
nTemp++;  //si le script est pas arrete, alors ca fait pas 3 ohb, donc on rajoute +1
SetLocalInt(OBJECT_SELF"TEMP"nTemp); //et on enregistre dans la varieble

sachant que y a moyen de faire ailleurs que ds un ohb, mais bon, je vois pas trop d'interet, à part peut être si c un persistant, auquel cas essai ca dans un onenter :

Code PHP:

//::///////////////////////////////////////////////
// onEnter
//une boule de feu sur oCible toute les nTemp
//sans degats
//ne pas oublier le script de onExit
//:://////////////////////////////////////////////

//fonction qui vas faire exploser
//une boule de feu sur oCible toute les nTemp
//sans degats
void Boom(object oCible,float nTemp);

void main()
{
object oPC GetEnteringObject();
object oCible GetObjectByTag("TAGDETACIBLE");
float nTemp 20.0//temps entre chaque boom
if(GetIsPC(oPC)) //seulement si c un PC qui entre
   
{
   
int nNbPJ GetLocalInt(GetArea(oPC), "NB_PJ");
   if(
nNbPJ == 0)   //si c le premier a entrer, on lance le truc
      
{
      
Boom(oCiblenTemp);
      }
   
nNbPJ ++;
   
SetLocalInt(GetArea(oPC), "NB_PJ"nNbPJ);
   }
}
void Boom(object oCible,float nTemp)
{
   {
     
int nNbPJ GetLocalInt(GetArea(oCible), "NB_PJ");
     if(
nNbPJ == 0) return;      //si il y a plus de PJ, on arrete
     
effect eVis EffectVisualEffect(VFX_FNF_FIREBALL);
     
ApplyEffectAtLocation(DURATION_TYPE_INSTANTeVisGetLocation(oCible)); //faire un effet boule de feu sur le trigger
   
}//le bloc c'est a cause du delay, parce qu'il parait que c mieux ^_^

DelayCommand(nTempBoom(oCiblenTemp));  //relancer la fonction dans ntemp

et dans un onexit
Code PHP:

//::///////////////////////////////////////////////
// onExit
//:://////////////////////////////////////////////

void main()
{
object oPC GetExitingObject();
if(
GetIsPC(oPC)) //seulement si c un PC qui sors
   
{
   
int nNbPJ GetLocalInt(GetArea(oPC), "NB_PJ");
   
nNbPJ --;
   
SetLocalInt(GetArea(oPC), "NB_PJ"nNbPJ);
   
//security truc
   
if(nNbPJ <= 0)
   
SetLocalInt(GetArea(oPC), "NB_PJ"0);
   }


bon, alors pour l'instant ca fait pas degats, avec degats :

dans le onenter, a la place tumet :

Code PHP:

//::///////////////////////////////////////////////
// onEnter
//une boule de feu sur oCible toute les fTemp secondes
//avec nDamage degats
//ne pas oublier le script de onExit
//fonction d'explosion d'apres id de Jaha Effect,
// un peu modifiee par Reyan pour les besoin de la cause
//:://////////////////////////////////////////////

//fonction qui vas faire exploser
//une boule de feu sur oCible toute les nTemp
//avec nDamage degats
void Boom(object oCiblefloat fTempint nDamageint nSaveDC 22float fRadius 5.);

void main()
{
object oPC GetEnteringObject();
object oCible GetObjectByTag("TAGDETACIBLE");
float fTemp 20.0//temps entre chaque boom
int nDamage 10//nombres de domages
if(GetIsPC(oPC)) //seulement si c un PC qui entre
   
{
   
int nNbPJ GetLocalInt(GetArea(oPC), "NB_PJ");
      
//security truc
      
if(nNbPJ <= 0)
      
SetLocalInt(GetArea(oPC), "NB_PJ"0);

   if(
nNbPJ == 0)   //si c le premier a entrer, on lance le truc
      
{
      
Boom(oCiblefTempnDamage);
      }
   
nNbPJ ++;
   
SetLocalInt(GetArea(oPC), "NB_PJ"nNbPJ);
   }
}

void Boom(object oCiblefloat fTempint nDamageint nSaveDC 22float fRadius 5.)
{
   {
     
int nNbPJ GetLocalInt(GetArea(oCible), "NB_PJ");
     if(
nNbPJ == 0) return;      //si il y a plus de PJ, on arrete                                                        (location lTarget, int nDamage, int nSaveDC = 22, float fRadius = 5.) {
  
ApplyEffectAtLocationDURATION_TYPE_INSTANTEffectVisualEffect(VFX_FNF_FIREBALL), GetLocation(oCible));
  
object oObject GetFirstObjectInShape(SHAPE_SPHEREfRadiusGetLocation(oCible));
  do {
    
int nDamageAfterSave GetReflexAdjustedDamage(nDamageoObjectnSaveDC);
    
ApplyEffectToObjectDURATION_TYPE_INSTANTEffectDamage(nDamageAfterSaveDAMAGE_TYPE_FIRE), oObject);
   } while ((
oObject GetNextObjectInShape(SHAPE_SPHEREfRadiusGetLocation(oCible))) != OBJECT_INVALID);
   }
//le bloc c'est a cause du delay, parce qu'il parait que c mieux ^_^

DelayCommand(fTempBoomoCible,  fTemp,  nDamage,  nSaveDC,  fRadius));  //relancer la fonction dans ntemp

compiler mais pas tester, sans doute que pas de tests sauf en cas de pb
Répondre

Connectés sur ce fil

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