question de resurection

Répondre
Partager Rechercher
dans le respwan comment modifier le script nw_o0_respawn pour que le script renvoi dans un temple par exemple faut definir le tag dun waypoint???
*après decryptage*

Tu souhaites faire que les PJ respawns dans un temple? Pour cela, il te faut bien un WayPoint, sur lequel tu téléporteras le PJ.

Le script de base de respawn contient beaucoup de chose qui ne sont utiles que pour les campagnes officielles, mais en les lisant, tu trouveras facilement comment faire.
Je te remercie Fanley jy ai penser juste apres avoir postrer ce file, par contre se que je comprend po dans le script de base
c qu'il y a des correspondance avec des map ou chai po trop koi:

Code PHP:

    
    string sDestTag 
=  "NW_DEATH_TEMPLE";
    
string sArea GetTag(GetArea(oRespawner));
    
/*
      CHAPTER 1 SPECIAL CASE
    */
    
if (sArea == "MAP_M1S3B"
le "MAP_M1S3B", je presume que c une refernece de carte du mod campagne, donc comment je connais le tag de la map ou le pj meurt quel est la fonction pour appliquer a tous les pjqd il meurt , on ma parler de boucle mais c koi exactement

en fait je ne comprend po comment definir la zone ou le pj meurt comment on fait pour que ca marche sur tous les pj dans nimporte que map, ya une commande pour ca


Jespere que je suis clair dans ma demande

Ce que tu as quote, c'est un "cas special" de Bioware (en l'occurence du Chapitre 1). C'est à dire qu'il y a certaines zones du jeu où la mort est traitée differement (on respawn pas au même endroit).

A la fin de cette partie il doit y avoir un "else" qui concerne tout les cas "normaux". C'est ce qui t'interesse.

Code PHP:

string sArea GetTag(GetArea(oRespawner)); 

Cette ligne (tirée de ton quote) fait que la variable "sArea" contient le tag de la zone où se trouve "oRespawner" (le PJ qui vient de mourir). Mais comme je viens de te le dire, tu ne devrais aps en avoir besoin.

Une boucle est une répétition d'une même série d'instructions.

exemple:
Code PHP:

int i 0;
while (
4)
{
    
//série d'instructions
    
+1;

L'instruction while est une boucle qui fait que TANT QUE la condition est vraie, on refait la série d'instruction (while se traduit par "tant que" en français). Il existe d'autres types de boucle et tu trouveras plus de détails dans les tutoriaux qui sont listés dans le persistant. (Ils sont très complets)

Et même si ça réponds à ta question, ça ne t'aidera absolument pas pour ton script
Voila ayant suivi scrupulesement se que ma dit Fanley, jen suis arriver a faire ceci:

Code PHP:



#include "nw_i0_plot"

// * Applies an XP and GP penalty
// * to the player respawning
void ApplyPenalty(object oDead)
{
    
int nXP GetXP(oDead);
    
int nPenalty 50 GetHitDice(oDead);
    
int nHD GetHitDice(oDead);
    
// * You can not lose a level with this respawning
    
int nMin = ((nHD * (nHD 1)) / 2) * 1000;

    
int nNewXP nXP nPenalty;
    if (
nNewXP nMin)
       
nNewXP nMin;
    
SetXP(oDeadnNewXP);
    
int nGoldToTake =    FloatToInt(0.10 GetGold(oDead));
    
// * a cap of 10 000gp taken from you
    
if (nGoldToTake 10000)
    {
        
nGoldToTake 10000;
    }
    
AssignCommand(oDeadTakeGoldFromCreature(nGoldToTakeoDeadTRUE));
    
DelayCommand(4.0FloatingTextStrRefOnCreature(58299oDeadFALSE));
    
DelayCommand(4.8FloatingTextStrRefOnCreature(58300oDeadFALSE));

}

///////////////////////////////////////////////////////////////////////
// this function resets variabls and clears the arenas in the fighter
// 'gauntlet' subplot in chapter one
///////////////////////////////////////////////////////////////////////

void ClearArena(object oPC,string sArena)
{
    if(
sArena == "Map_M1S4C")
    {
        
DestroyObject(GetObjectByTag("M1S04CHRUSK02"));
        
DestroyObject(GetObjectByTag("M1S4CBeast"));
        
SetLocalInt(GetObjectByTag(sArena),"NW_A_M1S4HruskDef",0);
    }
    else if(
sArena == "Map_M1S4D")
    {
        
DestroyObject(GetObjectByTag("M1S04CFASHI02"));
        
DestroyObject(GetObjectByTag("M1S4DBeast"));
        
SetLocalInt(GetObjectByTag(sArena),"NW_A_M1S4FashiDef",0);
        
CreateItemOnObject("M1S04IBADGELVL01",oPC);
    }
    else if(
sArena == "Map_M1S4E")
    {
        
DestroyObject(GetObjectByTag("M1S04CAGAR02"));
        
DestroyObject(GetObjectByTag("M1S4EBeast"));
        
SetLocalInt(GetObjectByTag(sArena),"NW_A_M1S4AgarDef",0);
        
CreateItemOnObject("M1S04IBADGELVL02",oPC);
    }
    else if(
sArena == "Map_M1S4F")
    {
        
DestroyObject(GetObjectByTag("M1S04CCLAUDUS02"));
        
DestroyObject(GetObjectByTag("M1S4FBeast",0));
        
DestroyObject(GetObjectByTag("M1S4FBeast",1));
        
SetLocalInt(GetObjectByTag(sArena),"NW_A_M1S4ClaudusDef",0);
        
CreateItemOnObject("M1S04IBADGELVL03",oPC);
    }
    
SetLocalInt(oPC,"NW_L_M1S4Won",FALSE);
    
SetLocalInt(GetModule(),"NW_G_" sArena "_Occupied",FALSE);
}

//////////////////////////////////////////////////////////////////////////////


void main()
{
    
object oRespawner GetLastRespawnButtonPresser();
    
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oRespawner);
    
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oRespawner)), oRespawner);
    
RemoveEffects(oRespawner);
    
//* Return PC to temple



    
string sDestTag =  "WP_RESPAWN_BON";
    
string sArea GetTag(GetArea(oRespawner));

    if (
sArea == "MODULE")
    {
        
sDestTag "WP_RESPAWN_BON";
    }




Voila donc, il compile bien, mais il marche po, mon but ete de faire respawner mes personnage dans une autre zone du module (dans une zone dedié)

Si quelqu'un peut me diriger vers la marche a suivre pour qu'il marche, ou si il voit une grossiere erreur de ma part (sa m'etonnerai pas), je lui en serai grave reconnaissant lol

Please HELP ME, j'en ai po dormi (encore une fois) de la nuit
Ton script doit faire se relever un personnage et l'envoyer dans un endroit repéré par un point de passage dont le tag est: "WP_RESPAWN_BON". D'après ce que je lis, c'est ce que j'ai compris.
Tu as tout bon MAIS, nulle part tu ne fais aller ton personnage à cet endroit.

Code PHP:

#include "nw_i0_plot"
void main()
{
    
object oRespawner GetLastRespawnButtonPresser();
    
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oRespawner);
    
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oRespawner)), oRespawner);
    
RemoveEffects(oRespawner);
    
// Ci dessus, on ressucite le PJ en en lui rendant tous ses points de vie
    // et en lui otant les effets nefastes qui l'affectent
    //
    // ----------------------------------------------------------------
    //ci dessous, on ne fait rien.


    
string sDestTag =  "WP_RESPAWN_BON";
    
string sArea GetTag(GetArea(oRespawner));

    if (
sArea == "MODULE")
    {
        
sDestTag "WP_RESPAWN_BON";
    }

On va donc se séparer de la partie inutile, et on va essayer de faire ce qu'il faut en l'expliquant:
Code PHP:


// Comment trouver mon point de passage ?

object oPointPassage GetWaypointByTag("WP_RESPAWN_BON");

// Comment envoyer mon personnage à ce même point de passage ?

AssignCommand(oRespawnerActionJumpToObject(oPointPassageTRUE)) 
Par conséquent, en recollant les bouts:

Code PHP:

// Lorsque le personnage presse le bouton Respawn
// La séquence est:
// Resurrection, restauration de tous les points de vie
// puis saut au point de passage "WP_RESPAWN_BON"


#include "nw_i0_plot"

void main()
{
    
object oRespawner GetLastRespawnButtonPresser();
    
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oRespawner);
    
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oRespawner)), oRespawner);
    
RemoveEffects(oRespawner);
    
// Ci dessus, on ressucite le PJ en en lui rendant tous ses points de vie
    // et en lui otant les effets nefastes qui l'affectent
    //
    // ----------------------------------------------------------------
    // ci dessous, le personnage "saute" au point de passage


    // Comment trouver mon point de passage ?

    
object oPointPassage GetWaypointByTag("WP_RESPAWN_BON");

    
// Comment envoyer mon personnage à ce même point de passage ?

    
AssignCommand(oRespawnerActionJumpToObject(oPointPassageTRUE));

Quelles sont les clefs de cette méthode ?

1) une bonne analyse de ce qu'on veut faire (ce que tu as fait)
2) se poser les bonnes questions (pas fait)
3) trouver les fonctions à même de faire ce qu'on veut faire, sinon, le créer. (ça demande de la pratique, courage)
j'avais posté tous les scripts
concernant ce sujet, mais visiblement ils ne sont plus disponibles, ou sous un autre nom.
j'ai pas recherché plus que ça, aussi.
tu devrais trouver ton bonheur ici.
[URL=https://forums.jeuxonline.info/showthread.php?t=127616[/URL]

a spawn selon la race et l'alignement.

__________________
Congnois toy toy mesme. Nulle gloire dans le sang inutile
merci Azmathiel, je vien juste de rentrer et tu vien dilluminer mon coeur et mon visage lol mici pour le tit cours et merci de mencourager

merci egalement Blam pour ton lien

donc maintenat apres avoir suivi ton conseil azmathiel jai reussi a le faire marcher
:bouffon:

Maintenat, en faite sur la meme chose jaimerais les faire respawn par alignement et jai fait donc ceci:

Code PHP:



#include "nw_i0_plot"
void main()

{

    
object oRespawner GetLastRespawnButtonPresser();
    
int nAlignement GetGoodEvilValue(oPC);

    
string sTag;


    
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oRespawner);

    
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oRespawner)), oRespawner);

    
RemoveEffects(oRespawner);


    
object oPointPassage GetWaypointByTag("WP_RESPAWN_BON");
    
object oPointPassage GetWaypointByTag("WP_RESPAWN_MAUVAIS");
    
object oPointPassage GetWaypointByTag("WP_RESPAWN_NEUTRE");

    if (
nAlignement >= 70)
    {
        
sTag "WP_RESPAWN_BON";
    }
    
AssignCommand(oRespawnerActionJumpToObject(oPointPassageTRUE));


    if (
nAlignement <= 30)
    {
        
sTag "WP_RESPAWN_MAUVAIS";
    }
    
AssignCommand(oRespawnerActionJumpToObject(oPointPassageTRUE));


    if

        
sTag "WP_RESPAWN_NEUTRE";

    
AssignCommand(oRespawnerActionJumpToObject(oPointPassageTRUE));


et il me donne l'erreur suivante:
essairespawn2.nss(41): ERREUR : "else" WITHOUT "if" STATEMENT.

va la et je sais vraiment pas se quil a , jai remplacer le if par un else et inversement, mais rien ny fait , je me demande si lhistoire ne vien pas de plus haut???

SI quelquun peu maider ce serai bien cool

Je crois avoir compris ou se trouve l'erreur.
Essaie ça (pas sure que ça marche)

Code PHP:

   #include "nw_i0_plot"
void main()

{

    
object oRespawner GetLastRespawnButtonPresser();
    
int nAlignement GetGoodEvilValue(oRespawner);


    
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oRespawner);

    
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oRespawner)), oRespawner);

    
RemoveEffects(oRespawner);

    
object oPointPassage;


    if (
nAlignement >= 70)

    
oPointPassage GetWaypointByTag("WP_RESPAWN_BON");

    else if (
nAlignement <= 30)

    
oPointPassage GetWaypointByTag("WP_RESPAWN_MAUVAIS");

    else 
oPointPassage GetWaypointByTag("WP_RESPAWN_NEUTRE");


    
AssignCommand(oRespawnerActionJumpToObject(oPointPassageTRUE));


Répondre

Connectés sur ce fil

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