La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 23/11/2024 22:43:02


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
darkheaven
Acolyte
Inscrit le: 21 Aoû 2004
Messages: 35
Localisation: nevers
Répondre en citant
Posté le : 10/12/2005 10:40:46 Sujet du message : Probleme avec la mort

Bonjour a tous tous d'abord, voila mon probleme.
Comme vous le savez sur un univers persistant, lorsqu'un pj meurt, il peut deco/reco pour retrouver la santé et surtout la vie, le probleme etant la bien sur.
apres quelques recherches sur ce forum, j'ai trouver ceci qui fonctionne sur le principe des variable plutot que du systeme de la carte de mort:

Rajouter ceci dans le " oncliententer "

NWScript :
void main()
{
object oPC = GetEnteringObject();

////////////////////////////// ////////////////////////////// /////////////
/// sert a recuperer l'info pour savoir si le pj est mort ou vivant  ///
int BALISE_MORT = GetCampaignInt("NOM_DE_TON_MOD","balise_mort", oPC);
////////////////////////////// ////////////////////////////// /////////////


////////////////////////////// ////////////////////////////// /////////////
// sert a detecter si le pj est mort ou vivant, et a le rendre mort  ////
// ou vivant a la conection sur le serveur.                          ////
//                                                                  ////
        if(BALISE_MORT == TRUE ) ////
        { ////
          effect eDeath = EffectDeath(FALSE, FALSE); ////
          ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oPC); ////
        } ////
////////////////////////////// ////////////////////////////// /////////////
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.



mettre ceci dans le " onplayerdeath " :

NWScript :

void main()
{
object oPlayer = GetLastPlayerDied();
//---------------------------- ------------------------------ -------------//
//            On met une balise de mort au pj qui vient de mourir.      //
//---------------------------- ------------------------------ -------------//
// sert a declarer une balise pour "marquer" le pj a la mort.

          SetCampaignInt("NOM_DE_TON_MOD","balise_mort",TRUE,oPlayer);

//---------------------------- ------------------------------ -----------//
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.

et pour finir , sur le " onplayerrespawn " :

NWScript :
void main()

{
    object oRespawner = GetLastRespawnButtonPresser();


    //---------------------------- ----------------------------//
    //          Positionement des balises a " FALSE "        //
    //---------------------------- ----------------------------//
    SetCampaignInt("NOM_DE_TON_MOD","balise_mort",FALSE,oRespawner);
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Bon , bien sûr il faut intégrer ces scripts proprement pour ne pas perdre le bénéfice de tous les autres scripts qu'il y a déja a ces emplacements , mais une fois que c'est fait ça fonctionne trés bien.
Une chose , les infos sont mémorisées dans le dossier " database "sous forme de fichiers texte , si jamais tout le mod doit être transféré par le net a une autre personne pour hébergement , il ne faut pas oublier de transmettre le mod et le servervault , mais AUSSI les fichiers " database ".

Apres un petit coter plus chaud, non je deconne :
Il va falloir que tu sauvegarde les script suivants sous le nom que je vais t'indiquez.


Le premier est a sauver sous : "nw_s0_raisdead" (sans les « « bien sur ^^) ca changera le rez normal pour inclure la variable

NWScript :

//:: [Raise Dead]
//:: [NW_S0_RaisDead.nss]
//:: Copyright (c) 2000 Bioware Corp.
//:Confused/////////////////// ////// ////////////////////
//:: Brings a character back to life with 1 HP.
//:Confused/////////////////// ////// ////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Jan 31, 2001
//:Confused/////////////////// ////// ////////////////////
//:: Last Updated By: Preston Watamaniuk, On: April 11, 2001
//:: VFX Pass By: Preston W, On: June 22, 2001

void main()
{
    //AdjustAlignment( OBJECT_SELF, ALIGNMENT_GOOD, 2);
    //Declare major variables
    object oCaster = OBJECT_SELF;
    object oTarget = GetSpellTargetObject();
    effect eRaise = EffectResurrection();
    effect eVis = EffectVisualEffect(VFX_IMP_RAISE_DEAD);


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

    //---------------------------- ----------------------------//
    //      Positionement de la balise de mort a " FALSE "  //
    //---------------------------- ----------------------------//
    int BALISE_MORT = GetCampaignInt("NOM_DE_TON_MOD","balise_mort",oTarget);
    SetCampaignInt("NOM_DE_TON_MOD","balise_mort",FALSE,oTarget);

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

    if(GetIsDead(oTarget))
    {
        //Fire cast spell at event for the specified target
        SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_RAISE_DEAD, FALSE));
        //Apply raise dead effect and VFX impact
        ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, GetLocation(oTarget));
        ApplyEffectToObject(DURATION_TYPE_INSTANT, eRaise, oTarget);

        SetLocalInt(GetModule(),GetName(oTarget)+GetPCPublicCDKey(oTarget)+"Damages",0);
        if (GetIsPC(oCaster) && GetIsPC(oTarget))
            WriteTimestampedLogEntry("[PK]"+GetName(oCaster)+" casted raised dead on "+GetName(oTarget));
    }



}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.



et sauvegarde le script suivant sous le nom "nw_s0_resserec" (pour le rez complet):

NWScript :
//:Confused/////////////////// ////// /////////////////////
//:: [Ressurection]
//:: [NW_S0_Ressurec.nss]
//:: Copyright (c) 2000 Bioware Corp.
//:Confused/////////////////// ////// ////////////////////
//:: Brings a character back to life with full
//:: health.
//:Confused/////////////////// ////// ////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Jan 31, 2001
//:Confused/////////////////// ////// ////////////////////
//:: Last Updated By: Preston Watamaniuk, On: April 11, 2001
//:: VFX Pass By: Preston W, On: June 22, 2001

void main()
{
    //AdjustAlignment( OBJECT_SELF, ALIGNMENT_GOOD, 3);
    //Get the spell target
    object oTarget = GetSpellTargetObject();
    object oCaster = OBJECT_SELF;
    //Check to make sure the target is dead first


//---------------------------- ------------------------------ ----------------//
//            Positionement de la balise de mort a " FALSE "                //
//---------------------------- ------------------------------ ----------------//
    int BALISE_MORT = GetCampaignInt("NOM_DE_TON_MOD","balise_mort",oTarget);
    SetCampaignInt("NOM_DE_TON_MOD","balise_mort",FALSE,oTarget);

//---------------------------- ------------------------------ ----------------//

    if (GetIsDead(oTarget))
    {
        //Fire cast spell at event for the specified target
        SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_RESURRECTION, FALSE));
        //Declare major variables
        int nHealed = GetMaxHitPoints(oTarget);
        effect eRaise = EffectResurrection();
        effect eHeal = EffectHeal(nHealed + 10);
        effect eVis = EffectVisualEffect(VFX_IMP_RAISE_DEAD);
        //Apply the heal, raise dead and VFX impact effect
        ApplyEffectToObject(DURATION_TYPE_INSTANT, eRaise, oTarget);
        ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget);
        ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, GetLocation(oTarget));

        SetLocalInt(GetModule(),GetName(oTarget)+GetPCPublicCDKey(oTarget)+"Damages",0);

        if (GetIsPC(oCaster) && GetIsPC(oTarget))
            WriteTimestampedLogEntry("[PK]"+GetName(oCaster)+" casted resurrection on "+GetName(oTarget));


    }
}

Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


---------------------------------------------------------------------------------------------

Maintenant mon probleme, si d'apparence tous marche bien, des joueurs viennet me dire qu'ils apparaissent mort alors qu'en fait ils etaient vivant avant de deco.
J'en conclut donc que c'ets un probleme de variable qui na pas etait enlever, mais je ne vois pas ou peut se situer le probleme, et c'est la que je fais appel a vous Very Happy

Merci d'avance Razz

(on ma conseiller de me procuerer un systeme de carte de mort qui a l'avantage de ne pas avoir ce genre d'inconvenient, si vous l'avez et que vous voulez en faire profitez ^^, n'hesitez pas Cool)
_________________
La vie n'est qu'une plume que le destin balade au grés du vent...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
darkheaven
Acolyte
Inscrit le: 21 Aoû 2004
Messages: 35
Localisation: nevers
Répondre en citant
Posté le : 14/12/2005 13:40:33 Sujet du message :

Up Sad
Personne?
_________________
La vie n'est qu'une plume que le destin balade au grés du vent...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 14/12/2005 14:02:12 Sujet du message :

Je te conseil de surtout de ne pas utilisé les TRUE et les FALSE enfin moi j'ai jamais utilisé, mais plutot des 1 (si il meurt) et des 0 (si il est vivant).

Voila sinon je vois pas d'erreur.
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
chevalier blanc
Grand Chevalier
Inscrit le: 28 Mar 2005
Messages: 117
Localisation: Sur les Côtes d'Opaline
Répondre en citant
Posté le : 30/12/2005 11:56:09 Sujet du message :

Salut a tous , jai exactement le meme probleme sur mon serveur

Black Night est ce que tu pourrais etre plus clair? Le TRUE correspond a un 1 ou a un 0 ? Idem pour le FALSE

Et est ce que dans les guillemets "NOM_DE_TON_MOD" il faut mettre le tag ou le nom du mod...

Plusieurs joueurs chez moi ont ce petit probleme et j'avoue que c'est lassant de devoir respawné a chaque fois alors qu'on etait en vie a la derniere deco....
Mad
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
lylver
Héros
Inscrit le: 08 Avr 2005
Messages: 274
Répondre en citant
Posté le : 30/12/2005 18:12:16 Sujet du message :

FALSE vaut 0 à coup sur
TRUE ... bof
la constante est définie à 1 mais pour les tests : n'importe quel résultat différent de zéro est VRAI

Entre double-quote, c'est le nom d'un groupe fichiers (il y en a 3) qui seront présents dans le dossier database du serveur, peut importe que ce soit le TAG du module ou autre chose...
mais vaut mieux (sous windows) essayer de garder ce nom court (taille <= 8 caracteres)
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Montrer les messages depuis :
Page 1 sur 1 ¤


Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 68.08ms