Les problemes de long col...

Répondre
Partager Rechercher
Mon module llong col avance tres bien : le graphique, les monstres, les objets ,, les quetes...
Mais reste un probleme majeur : les scripts !

probleme 1 : voici un script que vous connaissez déja puisqu'il permet de générer des monstres, ici des squelettes, avec un choix aléatoire de l'endroit parmis 6 waypoint. Dans mon module c'est un boss qui permet cette génération. Elle s'arrete quand il meurt. J'ai donc placé le script dans Onheartbeat du boss. le pb, c'est que je voudrait que la génération d'un squelette s'effectue toutes les 20secondes. Alors qu'ici, le script attends 20sec avant de lancer des spawns qui se suivent alors avec un intervalle de temps tres court (celui du onheartbeat).
Code PHP:

 #include "NW_I0_GENERIC"

void VoidCreateObject(string sTemplatelocation lLocint bUseAppearAnimation=TRUE);

void main()
{
  
int nRandomNumber d6(1);
  
string sWaypoint "WP_svfaith_Spawn_" IntToString(nRandomNumber);
  
object oWaypoint GetObjectByTag(sWaypoint);
  
location lLoca GetLocation(oWaypoint);
  
float fSeconds 20.0//temps en secondes pour le respawn
  
string sTemplate "Squeletteasservi";

  
DelayCommand(fSecondsVoidCreateObject(sTemplate,lLocaTRUE));
  return;
}

void VoidCreateObject(string sTemplatelocation lLocaint bUseAppearAnimation=TRUE)
{
  
CreateObject(OBJECT_TYPE_CREATUREsTemplate,lLoca,TRUE);
  
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARYEffectVisualEffect(VFX_FNF_SUMMON_UNDEAD), lLoca6.0);
  return;

probleme 2 : quand mon boss apparait je lui met ce script :
Code PHP:

 void main()
 {
SetLocalInt(OBJECT_SELF,"faith_life",1);

quand il meurt :
Code PHP:

void main()
{
   
SetLocalInt(OBJECT_SELF,"faith_life",0);
}
(+ 
des effets graphiques pour faire zoli :
mon but étant de tuer tous les squelette présent quand le boss meurt, j'ai mis dans le onheratbeat des squelettes :
Code PHP:

int faithdeath=GetLocalInt(OBJECT_SELF"faith_life");
void main()
{
 
ActionRandomWalk();
 if (
faithdeath 1){};
 if (
faithdeath 0){
    
DestroyObject(OBJECT_SELF1.0);
    };
    return;

Ca ne fonctionne po pourtant je galère à modifier des trucs !

Aidez moi svp, cela me permettra de mieu saisir les scripts et de pouvoir en faire de similaire.
Merci d'avance.
__________________
Estheral Echtelion Catalyr
Co-créateur du module Long Col avec l'aide de Messire DarkShaman.
J'ignore si cela marchera dans le module en question mais je suis en train de contourner la difficulté dans un de mes module avec le système suivant, dans le OnEnter de la zone , en appelant mon script "zero".

Code PHP:

void()
{
//  instructions  pour  créer  le  squelette, vous  connaissez  tous  et  je  suis  fatigué

DelayCommand(20.0ExecuteScript("zero",GetModule()));


Pour ce que je fais, cela fonctionne très bien. En ce qui concerne le fait de tuer les squelettes, je crois que je mettrais cela directement dans la OnDeath de la créature. Ceci dit, je ne suis pas un grand scripteur, je commence à peine à saisir quelques aspects de la bête...
__________________
Où qu'est la bonne Pauline ? A la gare, à Passy...
plusieurs truc que je crois avoir compris :
1 d'abord, une "int", par défault ca a une valeur de 0, donc si tu la crée pas dans le onspawn, quand tu la récupérera, sa valeur seras 0, ca évite de modifer des onspawn et de plus s'y retrouver
2 met tes scrpt dans des balises [ php] [ /php] parce que là c illisible
3 comme tu dis, là il attend 20 seconde avant de spawner les créatures, alors que ce que tu veux, c'est un "onheartbeat" toutes les 20 seconde en faite
moi ce que je ferais, c'est une variable qui prend +1 touts les onhearbeat, et quand elle est à 3 (3*6=18 ) ba y a spawn

dans le onheartbeat du boss
Code PHP:

#include "NW_I0_GENERIC"

void VoidCreateObject(string sTemplatelocation lLocint bUseAppearAnimation=TRUE);

void main()
{
int nTps GetLocalInt(OBJECT_SELF"TEMPS");
if(
nTps == 3)
   {
   
int nRandomNumber d6(1);
   
string sWaypoint "WP_svfaith_Spawn_" IntToString(nRandomNumber);
   
object oWaypoint GetObjectByTag(sWaypoint);
   
location lLoca GetLocation(oWaypoint);
   
string sTemplate "Squeletteasservi";
   
VoidCreateObject(sTemplate,lLocaTRUE);
   
SetLocalInt(OBJECT_SELF"TEMPS"0);
   
//remet ta variable de tps  0
   
return;
   }
else
   {
   
nTps ++; //sinon tu met +1 a ta varible de temps
   
SetLocalInt(OBJECT_SELF"TEMPS"nTps);//et tu la stock
  
}
}

void VoidCreateObject(string sTemplatelocation lLocaint bUseAppearAnimation=TRUE)
{
CreateObject(OBJECT_TYPE_CREATUREsTemplate,lLoca,TRUE);
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARYEffectVisualEffect(VFX_FNF_SUMMON_UNDEAD), lLoca6.0);
return;

ensuite ce que tu peu faire, c'est une boucle pour détruire les squelettes dans le ondeath du boss, comme ca ils attendent pas 6 secondes avant de mourir ^_^
du genre

dans son ondeath
Code PHP:

void main()
{
object oSkull GetFirstObjectInArea(GetArea(OBJECT_SELF));
   while(
GetIsObjectValid(oSkull))
   {
   
string sSkull GetTag(oSkull);
   if(
sSkull == "Squeletteasservi")
   
DestroyObject(oSkull);

   
oSkull GetNextObjectInArea(GetArea(OBJECT_SELF));
   }

edit : j'avais pas stocké la variable de temps
reedit : bon, il aimait PAS DU TOUT la boucle de destruction, donc je la change ^_^ mais il faut mettre des animations, sinon c pas joli
maintenant tout marche bien
Je te remercie grandement pour ton aide, mais il s'avère après fonctionnement que la fonction destroy fait disparaître mes squelettes. Je voudrais qu'ils meurent réellement. (en effet et d'un, il tombe par terre, et de deux, cela permet l'animation que je leur ai mis dans leur ondeath).

Sinon un autre pb est d'arrêter le spawn de squelette quand un certain nombre de ces créatures sont présentes dans l'area. C'est un script dont je ne trouve aucun exemple et qui ne devrait pas me servir qu'à moi seul j'en suis sur !

ps : désolé pour l'oublie des [php][\php] cela fait longtemps que gt po venu et j'avais oublié les usages...
mm, met un effect death au lieu du destroy
Code PHP:

void main()
{
object oSkull GetFirstObjectInArea(GetArea(OBJECT_SELF));
   while(
GetIsObjectValid(oSkull))
   {
   
string sSkull GetTag(oSkull);
   if(
sSkull == "Squeletteasservi")
   
ApplyEffectToObject(0,EffectDeath(TRUE), oSkull);
// comme ca la mort est "in an extraordinary fashion" ^_^
   
oSkull GetNextObjectInArea(GetArea(OBJECT_SELF));
   }

pour le reste, ba faut compter tes squellettes
comme ca p-e :

Code PHP:

#include "NW_I0_GENERIC"

void VoidCreateObject(string sTemplatelocation lLocint bUseAppearAnimation=TRUE);

void main()
{
int nTps GetLocalInt(OBJECT_SELF"TEMPS");
if(
nTps == 3)
   {

   
int nNb ;
   
object oSkull GetFirstObjectInArea(GetArea(OBJECT_SELF));
   while(
GetIsObjectValid(oSkull))
      {
      
string sSkull GetTag(oSkull);
      if(
sSkull == "Squeletteasservi"nNb ++;
      
oSkull GetNextObjectInArea(GetArea(OBJECT_SELF));
      }
   
//on compte les squellette
   
if(nNb <= 10)
      {
//si il y en moins de 10
      
int nRandomNumber d6(1);
      
string sWaypoint "WP_svfaith_Spawn_" IntToString(nRandomNumber);
      
object oWaypoint GetObjectByTag(sWaypoint);
      
location lLoca GetLocation(oWaypoint);
      
string sTemplate "Squeletteasservi";
      
VoidCreateObject(sTemplate,lLocaTRUE);
      }
   
SetLocalInt(OBJECT_SELF"TEMPS"0);
   
//remet ta variable de tps  0
   
return;
   }
else
   {
   
nTps ++; //sinon tu met +1 a ta varible de temps
   
SetLocalInt(OBJECT_SELF"TEMPS"nTps);//et tu la stock
  
}
}

void VoidCreateObject(string sTemplatelocation lLocaint bUseAppearAnimation=TRUE)
{
CreateObject(OBJECT_TYPE_CREATUREsTemplate,lLoca,TRUE);
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARYEffectVisualEffect(VFX_FNF_SUMMON_UNDEAD), lLoca6.0);
return;

ca compil, je test de suite ^_^

edit : tt à l'air de très bien marcher ^_^
Ouais logiquement ça doit marcher, sauf qu'il serait moins éprouvant pour le CPU de compter le nombre de squelette qu'on crée au fur et à mesure, non ?
(Et pourquoi gardes-tu cette fonction VoidCreateObject() alors que tu ne fais plus de DelayCommand() ?)
Citation :
Provient du message de Jedaï
Ouais logiquement ça doit marcher, sauf qu'il serait moins éprouvant pour le CPU de compter le nombre de squelette qu'on crée au fur et à mesure, non ?
(Et pourquoi gardes-tu cette fonction VoidCreateObject() alors que tu ne fais plus de DelayCommand() ?)
chais pas, j'ai pas trop regarder à quoi ca correspondait ... pis elle glisse un effet dedans non ?

quand à la charge CPU ... j'y connais rien du tout, donc j'y ai même pas pensé ^_^
mais comme ca p-e :

Code PHP:

#include "NW_I0_GENERIC"

void VoidCreateObject(string sTemplatelocation lLocint bUseAppearAnimation=TRUE);

void main()
{
int nTps GetLocalInt(OBJECT_SELF"TEMPS");
if(
nTps == 3)
   {
int nNb GetLocalInt(OBJECT_SELF"NBSKULL");
   
//on compte les squellette
   
if(nNb <= 10)
      {
//si il y en moins de 10
      
int nRandomNumber d6(1);
      
string sWaypoint "WP_svfaith_Spawn_" IntToString(nRandomNumber);
      
object oWaypoint GetObjectByTag(sWaypoint);
      
location lLoca GetLocation(oWaypoint);
      
string sTemplate "Squeletteasservi";
      
VoidCreateObject(sTemplate,lLocaTRUE);
      
nNb ++;
      
SetLocalInt(OBJECT_SELF"NBSKULL"nNb);
      }
   
SetLocalInt(OBJECT_SELF"TEMPS"0);
   
//remet ta variable de tps  0
   
return;
   }
else
   {
   
nTps ++; //sinon tu met +1 a ta varible de temps
   
SetLocalInt(OBJECT_SELF"TEMPS"nTps);//et tu la stock
  
}
}

void VoidCreateObject(string sTemplatelocation lLocaint bUseAppearAnimation=TRUE)
{
CreateObject(OBJECT_TYPE_CREATUREsTemplate,lLoca,TRUE);
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARYEffectVisualEffect(VFX_FNF_SUMMON_UNDEAD), lLoca6.0);
return;

mais il faut mettre dans le OnDeath des skull noraml un truc pour décrémentionner (sig ...) la vriable ...

style
Code PHP:

void main()
{
object oBoss GetObjectByTag("TAGDUBOSS");
int nNb GetLocalInt(oBoss"NBSKULL");
nNb --;
SetLocalInt(oBoss"NBSKULL"nNb);

donc ca fait un script de plus
pas tester, mais compiler

edit : avec ce système, il faut faire attention si il y a déjà des squelette de spawnés au démarage, sinon on va se retrouver avec une variable négative, enfin bref
donc soir on compte les squellette ds le onspawn avec la boucle, pour être sur soit on est sur du nb, auquel cas on indique direct la valeur ds le onspawn :
onspawn du boss
Code PHP:

#include "NW_O2_CONINCLUDE"
#include "NW_I0_GENERIC"
void main()
{


// DEFAULT GENERIC BEHAVIOR (DO NOT TOUCH) *****************************************************************************************
    
SetListeningPatterns();    // Goes through and sets up which shouts the NPC will listen to.
    
WalkWayPoints();           // Optional Parameter: void WalkWayPoints(int nRun = FALSE, float fPause = 1.0)
                               // 1. Looks to see if any Way Points in the module have the tag "WP_" + NPC TAG + "_0X", if so walk them
                               // 2. If the tag of the Way Point is "POST_" + NPC TAG the creature will return this way point after
                               //    combat.
    
GenerateNPCTreasure();     //* Use this to create a small amount of treasure on the creature
   
int nNb ;
   
object oSkull GetFirstObjectInArea(GetArea(OBJECT_SELF));
   while(
GetIsObjectValid(oSkull))
      {
      
string sSkull GetTag(oSkull);
      if(
sSkull == "Squeletteasservi"nNb ++;
      
oSkull GetNextObjectInArea(GetArea(OBJECT_SELF));
      }
   
SetLocalInt(OBJECT_SELF"NBSKULL"nNb);
   
//j'aime bien ma boucle decidement lol


(du coup autant laisser le onheartbeat de base et modifier le onuserdefined, mais bon ca n'a vraiment aucune importance, c un streum après tout ^_^
ou bien :

Code PHP:


#include "NW_O2_CONINCLUDE"
#include "NW_I0_GENERIC"
void main()
{


// DEFAULT GENERIC BEHAVIOR (DO NOT TOUCH) *****************************************************************************************
    
SetListeningPatterns();    // Goes through and sets up which shouts the NPC will listen to.
    
WalkWayPoints();           // Optional Parameter: void WalkWayPoints(int nRun = FALSE, float fPause = 1.0)
                               // 1. Looks to see if any Way Points in the module have the tag "WP_" + NPC TAG + "_0X", if so walk them
                               // 2. If the tag of the Way Point is "POST_" + NPC TAG the creature will return this way point after
                               //    combat.
    
GenerateNPCTreasure();     //* Use this to create a small amount of treasure on the creature
   
int nNb X;
   
//X c'est le nb de skelette qu'on met de base
   
SetLocalInt(OBJECT_SELF"NBSKULL"nNb);


j'ai pas enlevé les include de bases, si on veut un waypoint et/ou un trésor


36eme edit : ca marche, donc si ca prend moi de charge CPU, c'est mieux
c fou ce que j'aurais posté aujourd'hui, et des pavés en plus
et en plus on me flatte ^_^

alors, dans le "onheartbeat" du boss :

Code PHP:

#include "NW_I0_GENERIC"

void VoidCreateObject(string sTemplatelocation lLocint bUseAppearAnimation=TRUE);

void main()
{
int nTps GetLocalInt(OBJECT_SELF"TEMPS");
if(
nTps == 3//ici c'est le temps entre chaque spawn, tu multipli par 6 (ici 3*6=18 sec)
   
{
int nNb GetLocalInt(OBJECT_SELF"NBSKULL");
   
//on compte les squellettes
   
if(nNb <= 10)
      {
//si il y en moins de 10, c a d qu'en tout ca fait 11 squellettes de spawnés puis on arrête
      
int nRandomNumber d6(1);
      
string sWaypoint "WP_svfaith_Spawn_" IntToString(nRandomNumber);
      
object oWaypoint GetObjectByTag(sWaypoint);
      
location lLoca GetLocation(oWaypoint);
      
string sTemplate "Squeletteasservi";
      
VoidCreateObject(sTemplate,lLocaTRUE);
      
nNb ++;
      
SetLocalInt(OBJECT_SELF"NBSKULL"nNb);
      }
   
SetLocalInt(OBJECT_SELF"TEMPS"0);
   
//remet ta variable de tps  0
   
return;
   }
else
   {
   
nTps ++; //sinon tu met +1 a ta varible de temps
   
SetLocalInt(OBJECT_SELF"TEMPS"nTps);//et tu la stock
  
}
}

void VoidCreateObject(string sTemplatelocation lLocaint bUseAppearAnimation=TRUE)
{
CreateObject(OBJECT_TYPE_CREATUREsTemplate,lLoca,TRUE);
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARYEffectVisualEffect(VFX_FNF_SUMMON_UNDEAD), lLoca6.0);
return;

dans le onspawn du boss :

Code PHP:

#include "NW_O2_CONINCLUDE"
#include "NW_I0_GENERIC"
void main()
{
    
SetListeningPatterns();    
    
WalkWayPoints();           
    
GenerateNPCTreasure();     
   
int nNb ;
   
object oSkull GetFirstObjectInArea(GetArea(OBJECT_SELF));
   while(
GetIsObjectValid(oSkull))
      {
      
string sSkull GetTag(oSkull);
      if(
sSkull == "Squeletteasservi"nNb ++;
      
oSkull GetNextObjectInArea(GetArea(OBJECT_SELF));
      }
   
SetLocalInt(OBJECT_SELF"NBSKULL"nNb);
   
//j'aime bien ma boucle decidement lol


dans le ondeath des squelettes normaux (dans la palette )

Code PHP:

void main()
{
object oBoss GetObjectByTag("TAGDUBOSS");
//ou TAGDUBOSS est remplace par : le tag du boss ^_^
int nNb GetLocalInt(oBoss"NBSKULL");
nNb --;
SetLocalInt(oBoss"NBSKULL"nNb);

voilà voilà
bon, alors dans le onspawn, y a un autre script si tu veux pas mettre de boucle, mais c'est pas obligatoire, et là tu est sûr que ca marche
Tout marche ! Bravo t génial !
j'ai mis 2 foixs la boucle pour le onheartbeat : 18 s ct trop long. Je préfère12 !
Je t'ai cité sur les script

Deux nouvelles questions :

1 - j'utilise ce script pour utiliser des chaises, banc, canapé et tabouret :

Code PHP:

void main()
{
  
object oPlayer GetLastUsedBy ();
  
object oChair OBJECT_SELF;
  
object oSitter=GetSittingCreature(oChair);
  if (
GetIsPC (oPlayer))
    {
        if (
GetIsObjectValid(oChair) && !GetIsObjectValid
            
(oSitter))
        {
            
AssignCommand (oPlayerActionSit (oChair));
        }
    }
  else if(!
GetIsObjectValid(oSitter))
  {
    
AssignCommand(oPlayerActionSit(oChair));
  }

Seulement quand je clique sur les tabouret rond, peu importe la disposition que j'ai mis à ces derniers, mon perso s'oriente tjs du meme coté ! Alors que ca marche bien avec le reste. pkoi ?

2 - comment écrire un message directement sur l'écran.
Dans le prologue de mon module, j'ai en effet l'idée d'écrire en bas à droite, où à des locations différentes, des messages qui sont en fait les crédits de mon module. Cette idée me vient car je suis fan de metal gear solid. Mais est-ce possible ?
génial, je vais être célèbre (moi j'avais mis à 1 pour mes tests )

1 passke "ActionSit" assoi tjrs en fonction de la "direction" du placeable, et que même un tabouret rond en a une, mais bon, je suis pas sur d'avoir compris la question

2 ba, je vois pas trop, y a bien "FloatingTextStringOnCreature" mais je pense pas que ca marche sur des objets invisible, donc à moins de donner une apparence "invisible" à une créature dans un coin du truc, avec les crédits qui s'affiche au dessus ...
ou alors tu met une creature bien planqué, les crédit qui s'affiche au dessus, les joueur les vois pas au dessus de la creature (qui est planquée ) mais ils apparaissent dans la fenêtre d'info, en bas à gauche
en fait tout dépend ce qu'est ce prologue
si c'est une scénette, ba le "FloatingTextStringOnCreature", si par exemple la caméra est bloquée, alors c'est du tout bon, tu t'arrange pour placer tes "string" où tu veu
si c'est une quête qui lance le module, ba un

onenter du module
Code PHP:

void main()
{

DelayCommand(10.0FloatingTextStringOnCreature("blablabla"GetEnteringObject()));
DelayCommand(15.0FloatingTextStringOnCreature("blablabla"GetEnteringObject()));
DelayCommand(20.0FloatingTextStringOnCreature("blablabla"GetEnteringObject()));
DelayCommand(25.0FloatingTextStringOnCreature("blablabla"GetEnteringObject()));
DelayCommand(30.0FloatingTextStringOnCreature("blablabla"GetEnteringObject()));
DelayCommand(35.0FloatingTextStringOnCreature("blablabla"GetEnteringObject()));

après test, ca rend assez pas mal je trouve
évidement, pour un effet plus metal gear solid (suis pas sur de moi, j'ai du y jouer une fois ) ba on peut rallonger les temps
je sais pas si on peu ralentir la vitesse de défilement du texte au dessus de la tête, il va assez vite, mais bon, ca reste acceptable
le truc bien, c'est que quelque soit la distance de camera, quelque soit l'angle etc. ba comme le PJ est au centre de l'écran, on les vois assez bien (je met plein de " " parce que je trouve l'idée excellente et vais m'en servir )
donc on bouge, on avance, on se bat etc. et y a les crédits qui défilent tranquillement au dessus de notre tête et il apparaissent en jaune en bas à gauche, sans nom devant, comme des info normale

mais bon, tout PC dans une zone de 30m autour les verras aussi, en tout cas dans sa zone de dia :-/
Coucou
Voila je suis le second développeur du module Long Col, mais bon moi je m'occupe de la partie Design du module, en clair c plus simple à faire

Mais il m'a arrive de faire quelques Scripts... J'aurai ptete besoin d'une aide ultérieur si moi et Estheral ne pouvont resoudre le probleme seuls
Merci Reyan. Le probleme du tabouret c'est que contrairmenet à une chaise je l'riente comme je veux, mais que cette orientation n'est pas prise en compte après ! Le pj s'assoit tjs direction plein nord je crois.

Sinon, je suis content d'avoir donné une idée de ce genre et je suis encore plus content de ta proposition. Mais comme mon prologue devrait etre différent suivant les classes il devrait pas y avoir trop de pb d'necombrement avec les crédits !
edit : bon ben ca marche po comme je le voulais. Là les textes s'enchaînent rapidement et il y' a bcp de répétition. Si tu veux mon avis, le jeu lance tous les delaycommand enmemetemps. Et tant que le suivant n'a pas fini il répète la phrase sans cesse. je v essayé d'arrenger ça mais si vous trouvez, faites moi signe



PS : en fait j'ai mis une seconde aussi. puisqu'on à limité à 11 le nbre de squelettes autant qu'ils apparraissent vite !
Ca rend très bien avec les effets graphiques que j'ai mis.
Je me demande si je ne devrait pas en faire un mod demo et l'envoyer. Mais qui peut héberger ?

Sinon, mes prochains pb vont être je pense au niveau des quêtes (compter le nombre d'abdomen de scara dans un inventaire, les retirer, donner argent en conséquence....) mais on verra ca plus tard, j'ai des scripts plus "simples" à faire que je doit reproduire sur d'autres boss
il en est question dans un autre topic, et il semblerait que l'on s'assoiet toujours face à l'est sur un tabouret ... zarb

ca va rapidement ? bizarre ... et oui, il lance tout les "delaycommand" en même temps, c'est pas un "ActionDelayComand" c'est pour ca qu'il faut décaler les secondes, dans l'exemple, 10.0 15.0 20.0 25.0 etc. en fait, le premier doit être à 10.0, sinon on a pas le temps de le voir, ca affiche la phrase, puis "vous êtes dans une zone jcj" etc. mais si tu met 10sec, c'est tt bon après c'est toute les 10 sec, ou 5, au choix ^_^

Citation :
(compter le nombre d'abdomen de scara dans un inventaire, les retirer, donner argent en conséquence....)
alors ca c'est tout con, j'ai fait un boucle qui compte le nombre de squelletes dans le module, c'est presque pareil si tu trouve pas, je te la donne tt de suite

Code PHP:

   int nNb;
   
object oTruc GetFirstObjectInInventory(GetLastSpeaker());
   while(
GetIsObjectValid(oTruc))
      {
      
string sTruc GetTag(oTruc);
      if(
sTruc== "TagDuTrucACompter"nNb ++;
      
oTruc GetNextObjectInInventory(GetLastSpeaker());
      }
//bon, nNb c'est le nombre de truc qui ont "TagDuTrucACompter" comme tag, dans l'inventaire du qars avec qui le PNJ cose
//donc tu peux la tester 
donc la, tu fais des test sur le nNb, style
Code PHP:

if(nNb >= 10) return TRUE; else return FALSE
dans un script de "Conditions d'execution" dans un dialogue par exemple ^_^
ouala
Bon je vous dis de suite, j'ai pas lu toutes les réponses, je suis une feignante , mais voila ce que je ferrais. Déjà, je n'utilise pas le OnHeartBeat, ce qui devrait faire plaisir à tyn

Sur le OnSpawn du boss, je lance une boucle recursive qui crée un squelette toute les 20 secondes, à chaque spawn de squelette, j'attribu la refference de l'objet à l'objet du boss.
Ainsi lorsque le boss meurt, il est tres simple de recuperer les references des squelette pour les detruire.

Une petite variable serra aussi à attribuer au boss pour savoir combien de squelette ont été créé ce qui peut aussi permettre de limiter le nombre de squelettes simultané grace à un simple petit test, cette variable devras etre mise à jour à chaque mort ou spawn d'un squelette.

Voila, j'esper que je suis assez clair

Prophetia
Citation :
Provient du message de Estheral
Merci Reyan. Le probleme du tabouret c'est que contrairmenet à une chaise je l'riente comme je veux, mais que cette orientation n'est pas prise en compte après ! Le pj s'assoit tjs direction plein nord je crois.
La direction est l'est mais pas le nord, mais c'est un problème résolu https://forums.jeuxonline.info/showthread.php?t=138507

Prophetia
je te remercie pour ton aide Prophetia, mais ce problème de script (boss et squelettes) est déjà reglé, et il fonctionne tres bien...

Merci quand meme

Pour ceus qui est des tabouret c'est plutot chiant de prendre un hakpack pour ca quand meme. Bioware aurait pu faire attention.
ba, tout dépend de ce que vous voulez faire, si c'est un permanent ou semi permanent, ou si votre serveur est un tt pitit serveur, alors une solution sans onheartbeat peu soulager le processeur, qui n'est pas obligé de tout refaire toute les 6sec
vais essayer ce qu'elle propose moi tiens ^_^
et pour le tabouret ... me semble que le hakpak est qd même tt léger si tu y met que l'objet invisible donc bon, autant pas les embêter avec ca et leur demander de nouvo tilesets, ca ca prend de la place :-/

Citation :
Ca rend très bien avec les effets graphiques que j'ai mis.
Je me demande si je ne devrait pas en faire un mod demo et l'envoyer. Mais qui peut héberger ?
mm, t'as pas de compte free ?
sinon, moi zaimerai bien savoirt quels effets t'as mis, je commence à aurora (enfin, à m'y mettre sérieusement) et j'ai un mal de chien à trouver les effets qui rendent bien, donc si toi t'en as, c tjrs bon à prendre
(j'avais fais vite fait un jour un pitit post sur un forum qui donnait la démarche pour mettre un truc online, mais bon, c t pas ce forum ci, donc la pub est p-e pas justifiée enfin bon, si tu nage complètement, p-e que ca pourras t'aider
Citation :
Provient du message de Reyan
ba, tout dépend de ce que vous voulez faire, si c'est un permanent ou semi permanent, ou si votre serveur est un tt pitit serveur, alors une solution sans onheartbeat peu soulager le processeur, qui n'est pas obligé de tout refaire toute les 6sec
vais essayer ce qu'elle propose moi tiens ^_^
Dans un souci d'optimisation des codes je suis toujours d'avis pour faire en sorte qu'un code ne prenne pas trop de ressource inutilement, celle-ci pouvant faire défaut par la suite, donc quand on peut éviter d'utiliser un onHearBeat, pourquoi s'en priver?

Citation :
Provient du message de Reyan
et pour le tabouret ... me semble que le hakpak est qd même tt léger si tu y met que l'objet invisible donc bon, autant pas les embêter avec ca et leur demander de nouvo tilesets, ca ca prend de la place :-/
en effet, il ne s'agit que d'un fichier pwk d'une dizaine de Ko pour peu que le module possède déjà un Hak c'est pas ça qui va le sur gonfler, et ça donne bien des possibilités surtout quand c'est appliqué à l'objet invisible... évidemment, c'est dommage que Bioware ne l'ai pas intégré directement, mais comme je dis personne n'est parfait, et je ne despere pas qu'ils rattrapent le coup un jour, car un hak pak juste pour ça, c'est vrais que c'est un peu dommage...
En fait on aimerait que notre mondule soit un monde percistant, mais pour cela il faut un hebergeur (gratuit) qui prendrait notre module... Sinon ce sera un semi-percistant, le pb c qu'il sera activé depuis un poste local donc le ping sera peut-etre plus genant...
Pour l'instant je crois que je vais garder la solution du onheartbeat.
Après tout je ne m'en servirai pas vraiment bcp ailleur qu'avec ce boss.

Sinon, pour savoir quels effets graphiques utiliser. Vu que dans la bibliothèque des constantes tu sais po forcemment à quoi correspond telle chose, j'ai téléchargé un module qui permet de visualiser et de connaitre le nom des effets :
http://www.system-tek.com/nwinter/nw...le.php?idl=446
Retournons maintenant à mon boss : c'est une reine mort-vivante qui a en gros les pouvoirs d'une liche de niv 28. Elle apparait avec diverses squelettes et zombis partagent le meme tag. De plus elle fait apparaitre sans arret des squelette asservi. Tous ces monstres meurent avec l'animation :VFX_IMP_DEATH (ame qui monte au ciel)
Quand faith meurent tous les ennemis meurent aussi. Pour montrer cette animation j'ai mis à la mort de faith ( en plus du script qui tue les squelettes et zombis,
Code PHP:

ApplyEffectToObject(DURATION_TYPE_TEMPORARYEffectVisualEffect(VFX_IMP_BREACH), GetObjectByTag("faith"), 6.0);
   
ApplyEffectToObject(DURATION_TYPE_TEMPORARYEffectVisualEffect(VFX_IMP_DEATH), GetObjectByTag("faith"), 6.0);
   
ApplyEffectToObject(DURATION_TYPE_TEMPORARYEffectVisualEffect(VFX_FNF_HOWL_WAR_CRY_FEMALE), GetObjectByTag("faith"), 6.0); 
Ca fait une ame qui monte au ciel avec des petits éclats lumineux suplémentaire et surtout avec un cercle blanc qui s'étirant, donne l'impression de détruire les autres ennemis qui partent aussi vers des cieux plus cléments.
(ct des gens possédés et rendu mort-vivant)

Essayez ca rend bien !
Texte sur les portes
Voila j'aimerai que lorsqu'on place le curseur de la souris sur une porte, il y a un message qui s'affiche (du genre le numéro de la chambre d'une auberge par exemple)

Le mieux serait que cela s'affiche comme le texte d'un objet utilisable...

Voila.
ba tu met un placeabeul utilisable avec comme nom le mess que tu veux afficher
si ca marche pas avec la porte tu peu utiliser un objet invisible tt con ^_^

merci pour les effets
moi vouloir le texte SUR la porte

enfin bon a defaut d'avoir qqchose ki fait cela je mettrai en dialogue par un PNJ :

<< Examniez les portes des chambres et vous trouverez leur numéro >>

mais bon ca aurait fait mieux si le n° s'affiche au passage de la souris sur la porte ^^
Répondre

Connectés sur ce fil

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