(Script) Respawn

Répondre
Partager Rechercher
j'ai un soucis j'aimerai enlevé le systeme de créatin d'item pour déclancher le respawn est ce obligatoire ?
et autre chose j'aimerai crée un script de départ pour mes 8 races d'ethnies et la je suis pommé svp


Code PHP:

void main()
{

    
// J'ai pour habitude de déclarer toutes mes variables en tête de script
    
object oPC GetLastRespawnButtonPresser();
    
object oDroitRespawn GetItemPossessedBy(oPC"vie");
    
int nPV;
    
effect eSoins;
    
string sTag;
    
object oDestination;
    
string sSubRace;

    if (
oDroitRespawn != OBJECT_INVALID)
    {
        
nPV GetMaxHitPoints(oPC);
        
eSoins EffectHeal(nPV);
        
ApplyEffectToObject(0EffectResurrection(), oPC);
        
ApplyEffectToObject(DURATION_TYPE_INSTANTeSoinsoPC0.0);

        if (
GetStringLowerCase(GetSubRace(oPC)) == "stark"sTag "RESPAWN_STARK";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "lannister"sTag "RESPAWN_LANNISTER";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "tully"sTag "RESPAWN_TULLY";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "arryn"sTag "RESPAWN_ARRYN";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "targaryen"sTag "RESPAWN_TARGARYEN";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "tyrell"sTag "RESPAWN_TYRELL";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "baratheon"sTag "RESPAWN_BARATHEON";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "martel"sTag "RESPAWN_MARTEL";

        
oDestination GetObjectByTag(sTag);
        
AssignCommand(oPCJumpToObject(oDestination1));
        
SetItemCursedFlag(oDroitRespawnFALSE);
        
DestroyObject(oDroitRespawn0.0);
        
SendMessageToPC(oPC"Votre Dieu a été généreux, vous avez été ressucité");

    }
     else
    {
        
SendMessageToPC(oPC"Vous avez épuisé vos chances. Ce sera pour une autre fois, peut-être");
        return;
    }

j'aimerai remplacé les classes par les 8 ethnies citées sur le respawn

Code PHP:

void main()
{
object oPlayer GetEnteringObject();
object oWP;
 
if (
GetIsPC(oPlayer)==TRUE)
    { 
    
int iMetier GetClassByPosition(1,oPlayer);
    if ((
iMetier == CLASS_TYPE_FIGHTER) ||(iMetier == CLASS_TYPE_PALADIN) ||(iMetier == CLASS_TYPE_BARBARIAN) ||(iMetier == CLASS_TYPE_RANGER))
        {
oWP GetWaypointByTag("WP_guerrierentre");}
    else if ((
iMetier == CLASS_TYPE_SORCERER) ||(iMetier == CLASS_TYPE_WARLOCK) ||(iMetier == CLASS_TYPE_WIZARD))
        {
oWP GetWaypointByTag("WP_magicienentre");}
    else if ((
iMetier == CLASS_TYPE_CLERIC) ||(iMetier == CLASS_TYPE_DRUID) ||(iMetier == CLASS_TYPE_MONK))
        {
oWP GetWaypointByTag("WP_pretreentre");}
    else if ((
iMetier == CLASS_TYPE_BARD) ||(iMetier == CLASS_TYPE_ROGUE))
        {
oWP GetWaypointByTag("WP_filouentre");}
    }
else if (
GetIsDM (oPlayer)) oWP GetWaypointByTag ("WP_DMentre ");

if (
GetAreaFromLocation (GetLocation (oWP)) == OBJECT_INVALID)oWP GetWaypointByTag ("WP_DEFAULT ");
DelayCommand (5.0fAssignCommand(oPlayerJumpToObject(oWP)));


Dernière modification par Kragg le Severe ; 09/07/2014 à 21h56.
pour déclencher mon respawn j'ai besoin d'avoir un item qui se nomme "vie" et j'aimerai savoir si c'est possible de faire un respawn basique sans item , tu meurt tes téléportés selon ton ethnies.

Pour le 2 eme script j'aimerai remplacé les
Code PHP:

{oWP GetWaypointByTag("WP_pretreentre");} 

part des subraces "ethnies" lorsque l'on rentre sur le module le pj est téléporté dans son châteaux.

j'espère avoir été plus clair , merci
Code PHP:

void main()
{

    
// J'ai pour habitude de déclarer toutes mes variables en tête de script
    
object oPC GetLastRespawnButtonPresser();
    
//object oDroitRespawn = GetItemPossessedBy(oPC, "vie");
    
int nPV;
    
effect eSoins;
    
string sTag;
    
object oDestination;
    
string sSubRace;

    
//if (oDroitRespawn != OBJECT_INVALID)
    //{
        
nPV GetMaxHitPoints(oPC);
        
eSoins EffectHeal(nPV);
        
ApplyEffectToObject(0EffectResurrection(), oPC);
        
ApplyEffectToObject(DURATION_TYPE_INSTANTeSoinsoPC0.0);

        if (
GetStringLowerCase(GetSubRace(oPC)) == "stark"sTag "RESPAWN_STARK";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "lannister"sTag "RESPAWN_LANNISTER";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "tully"sTag "RESPAWN_TULLY";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "arryn"sTag "RESPAWN_ARRYN";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "targaryen"sTag "RESPAWN_TARGARYEN";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "tyrell"sTag "RESPAWN_TYRELL";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "baratheon"sTag "RESPAWN_BARATHEON";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "martel"sTag "RESPAWN_MARTEL";

        
oDestination GetObjectByTag(sTag);
        
AssignCommand(oPCJumpToObject(oDestination1));
        
//SetItemCursedFlag(oDroitRespawn, FALSE);
        //DestroyObject(oDroitRespawn, 0.0);
        
SendMessageToPC(oPC"Votre Dieu a été généreux, vous avez été ressuScité");

    
//}
    // else
    //{
    //    SendMessageToPC(oPC, "Vous avez épuisé vos chances. Ce sera pour une autre fois, peut-être");
    //    return;
    //}

Code PHP:

void main()
{
object oPlayer GetEnteringObject();
object oWP;
 
if (
GetIsPC(oPlayer)==TRUE)
    { 
        
string sTag;
        if (
GetStringLowerCase(GetSubRace(oPC)) == "stark"sTag "WP_STARK";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "lannister"sTag "WP_LANNISTER";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "tully"sTag "WP_TULLY";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "arryn"sTag "WP_ARRYN";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "targaryen"sTag "WP_TARGARYEN";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "tyrell"sTag "WP_TYRELL";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "baratheon"sTag "WP_BARATHEON";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "martel"sTag "WP_MARTEL";    int iMetier GetClassByPosition(1,oPlayer);

        
oWP GetWaypointByTag("WP_filouentre");    }
else if (
GetIsDM (oPlayer)) oWP GetWaypointByTag ("WP_DMentre ");

if (
GetAreaFromLocation (GetLocation (oWP)) == OBJECT_INVALID)oWP GetWaypointByTag ("WP_DEFAULT ");
DelayCommand (5.0fAssignCommand(oPlayerJumpToObject(oWP)));

Je ne vois pas ce que tu veux de plus...
Merci pour ton aide, le réel problème du premier script c'est que je n'ai pas créé d'inventaire de départ donc l'objet vie n'existe pas donc le respawn ne marche pas évidemment pour le 2ème script je te remercie je vais tester ce soir
je viens de testé le script et j'aime un message d'erreur :
Cliquez ce bouton ou survolez le contenu pour afficher le spoiler
11/07/2014 21:44:03 : Erreur. 'teleportation_pj' n’est pas compilé.
teleportation_pj.nss(9): ERREUR : VARIABLE DEFINED WITHOUT TYPE



le script a été mi sur le OnClientEnter du module
Code PHP:

void main()
{
    
object oPlayer GetEnteringObject();
    
object oWP;

    if (
GetIsPC(oPlayer) == TRUE)
    {
        
string sTag;
        if (
GetStringLowerCase(GetSubRace(oPlayer)) == "stark"sTag "WP_STARK";
        if (
GetStringLowerCase(GetSubRace(oPlayer)) == "lannister"sTag "WP_LANNISTER";
        if (
GetStringLowerCase(GetSubRace(oPlayer)) == "tully"sTag "WP_TULLY";
        if (
GetStringLowerCase(GetSubRace(oPlayer)) == "arryn"sTag "WP_ARRYN";
        if (
GetStringLowerCase(GetSubRace(oPlayer)) == "targaryen"sTag "WP_TARGARYEN";
        if (
GetStringLowerCase(GetSubRace(oPlayer)) == "tyrell"sTag "WP_TYRELL";
        if (
GetStringLowerCase(GetSubRace(oPlayer)) == "baratheon"sTag "WP_BARATHEON";
        if (
GetStringLowerCase(GetSubRace(oPlayer)) == "martel"sTag "WP_MARTEL";

        
oWP GetWaypointByTag(sTag);
    }
    else if (
GetIsDM (oPlayer))
        
oWP GetWaypointByTag ("WP_DMentre ");

    if (
GetAreaFromLocation(GetLocation (oWP)) == OBJECT_INVALID)
        
oWP GetWaypointByTag ("WP_DEFAULT ");

    
DelayCommand (5.0fAssignCommand(oPlayerJumpToObject(oWP)));

par contre:
GetSubRace(oPlayer) renvoit un int (numéro de la ligne dans racialsubtypes.2da), pas un string. Donc ça ne peut pas compiler.

Honnêtement, essaye de faire des scripts plus simples pour apprendre à scripter, et reviens vers nous si quelque chose coince.
Parce que là j'ai plus l'impression que tu bricoles tes scripts et/ou tu veux qu'on les fasse à ta place
bah écoute j'ai 3,4 gros scripts le reste c'est du facile mais sans votre aide j'aurai fait 200 zones pour rien vue que j'ai pris le thème de game of thrones (action) donc c'est vrai je suis pas un scripteur mais plutot un mappeur mais si près du but sa me ferai chier de tout abandonné pour 3 voir 4 gros scripts
Un module avec 200 maps (aussi belles qu'elles soient) ira aussi loin qu'un mappeur sans scripteur, c'est à dire nulle part.
Il te faut manifestement un scripteur, et tu as deux options:
- Trouver un scripteur libre prêt à travailler avec toi
- Apprendre toi même à scripter (va voir sur https://nwn2.jeuxonline.info/articles/4333.html )

En tout cas je ne peux pas trop t'aider, vu qu'il faudrait que je regarde comment est intégrées tes races & classes custom et que je n'ai ni tes fichiers module, ni le temps de regarder tout ça...
Voici le script

Code PHP:

void main()
{

    
// J'ai pour habitude de déclarer toutes mes variables en tête de script
    
object oPC GetLastRespawnButtonPresser();
    
//object oDroitRespawn = GetItemPossessedBy(oPC, "vie");
    
int nPV;
    
effect eSoins;
    
string sTag;
    
object oDestination;
    
string sSubRace;

    
//if (oDroitRespawn != OBJECT_INVALID)
    //{
        
nPV GetMaxHitPoints(oPC);
        
eSoins EffectHeal(nPV);
        
ApplyEffectToObject(0EffectResurrection(), oPC);
        
ApplyEffectToObject(DURATION_TYPE_INSTANTeSoinsoPC0.0);

        if (
GetStringLowerCase(GetSubRace(oPC)) == "stark"sTag "RESPAWN_STARK";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "lannister"sTag "RESPAWN_LANNISTER";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "tully"sTag "RESPAWN_TULLY";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "arryn"sTag "RESPAWN_ARRYN";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "targaryen"sTag "RESPAWN_TARGARYEN";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "tyrell"sTag "RESPAWN_TYRELL";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "baratheon"sTag "RESPAWN_BARATHEON";
        if (
GetStringLowerCase(GetSubRace(oPC)) == "martel"sTag "RESPAWN_MARTEL";

        
oDestination GetObjectByTag(sTag);
        
AssignCommand(oPCJumpToObject(oDestination1));
        
//SetItemCursedFlag(oDroitRespawn, FALSE);
        //DestroyObject(oDroitRespawn, 0.0);
        
SendMessageToPC(oPC"Votre Dieu a été généreux, vous avez été ressuScité");

    
//}
    // else
    //{
    //    SendMessageToPC(oPC, "Vous avez épuisé vos chances. Ce sera pour une autre fois, peut-être");
    //    return;
    //} 
Bonjour,

je profite de ce topic pour poser ma question vu qu'elle est clairement liée.

j'ai bien implanté mon script de respawn, mais celui ci ne se lance jamais lorsque je clique sur respawn, le Pj est soigné mais sur place, et jamais renvoyé dans le sanctuaire.
en gros le respawn de base.

en fait je me demande s'il ne faut pas paramétrer le bouton respawn pour qu'il renvoie vers le script de respawn, mais je ne trouve pas comment faire.

Pourriez vous m'aider s'il vous plait ?

j'ai regardé avec ce topic ci, mais le souci vient surtout du fait que le script de ne se lance jamais.


merci



EDIT : en fait c'est moi qui faisait mal les choses, désolé

Dernière modification par Arno4485 ; 01/12/2014 à 00h55.
en fait non, j'ai bien un souci.

Lorsque je place mon script sur le onrespawn, il ne semble pas se lancer, et le respawn se fait sur place

Code:
void main()
{
object oTargetHeaven = GetWaypointByTag("WP_HEAVEN");
location lTargetHeaven = GetLocation(oTargetHeaven);

effect eRespawnHell = EffectVisualEffect(VFX_FNF_SUMMON_GATE);
effect eRespawnPurg = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3);
effect eRespawnHeaven = EffectVisualEffect(VFX_FNF_SUMMON_CELESTIAL);
object oRespawner = GetLastRespawnButtonPresser();

ApplyEffectToObject(DURATION_TYPE_INSTANT, eRespawnHeaven, oRespawner);
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oRespawner);
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oRespawner)), oRespawner);
AssignCommand(oRespawner, JumpToLocation(lTargetHeaven));

}
ai je loupé une étape quelque part ? ou bien pas saisit une spécificité de cette fonction respawn ?

merci

EDIT : bon ben décidément .. en écrivant mon souci j'ai trouvé la réponse, la fonction Onrespawn du module n' est plus utilisée, mais les fichier gui_death_respawn et gui_death_respawn_self.

merci quand même
Désolé je n'ai pas trouvé comment delete mon post.

Dernière modification par Arno4485 ; 03/12/2014 à 15h39.
Répondre

Connectés sur ce fil

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