pause et mort

Répondre
Partager Rechercher
Salut à tous !

J'ai deux questions probablement NooB dont je n'arrive pas à trouver la solution.

Je souhaiterai premièrement désactiver la possibilité de pause du jeu à l'intérieur d'un module.
La seconde question est un peu similaire, il me faudrait désactiver la mort de l'individu telle qu'elle est définie. J'ai vu que la commande GetLastPlayerDied était utilisée, mais je n'arrive pas à modifier les caractéristiques du personnage principal ... autant mettre un script ondeath sur un PNJ pas de problème, mais sur un PJ comment fait-on ? Est-ce le sript général qui doit gérer tout cela ??

Si quelqu'un peut m'aider, merci d'avance !
Pour la possibilité de mettre le jeu en pause en multijoueur tu le configure directement quand tu crées ta partie.


le script déclenché par la mort d'un joueur se trouve dans les propriétés du module, mais je me joins à Ariok pour connaître tes véritable intentions car ce n'est pas aussi facile qu'il n'y paraît
C'est un module multi PVP (suite de BotD qui existe pour NWN1).

Au niveau de la mort, un script particulier doit renvoyer le personnage au point de départ de la carte en imposant de surcroît une perte d'or. Pour l'instant lorsque le PJ meure, l'écran "charger une partie ou respawn" apparaît ... et donc le script ne paraît pas se lancer.

Merci de votre aide
Hors donc, pour la pause, c est quand tu lance la partie il y a une case a coché pour autoriser la pause ou non.


Pour la mort, il y a plusieurs chose a faire

1) Un script que tu met sur le ondeath du module :

Code PHP:

//::///////////////////////////////////////////////
//:: <span class="highlight">Death</span> Script
//:: NW_O0_DEATH.NSS
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    This script handles the default behavior
    that occurs when a player dies.
*/
//:://////////////////////////////////////////////
//:: Created By: Brent Knowles
//:: Created On: November 6, 2001
//:://////////////////////////////////////////////

#include "nw_i0_plot"
#include "ginc_death"

// Reset reputation
void main()
{
    
object oPlayer GetLastPlayerDied();
object oKiller GetLastHostileActor(oPlayer);
 
  
 
AssignCommand(oPlayerClearAllActions());
    
// * make friendly to Each of the 3 common factions
    
if (GetStandardFactionReputation(STANDARD_FACTION_COMMONERoPlayer) <= 10)
    {   
SetLocalInt(oPlayer"NW_G_Playerhasbeenbad"10); // * Player bad
        
SetStandardFactionReputation(STANDARD_FACTION_COMMONER80oPlayer);
    }
    if (
GetStandardFactionReputation(STANDARD_FACTION_MERCHANToPlayer) <= 10)
    {   
SetLocalInt(oPlayer"NW_G_Playerhasbeenbad"10); // * Player bad
        
SetStandardFactionReputation(STANDARD_FACTION_MERCHANT80oPlayer);
    }
    if (
GetStandardFactionReputation(STANDARD_FACTION_DEFENDERoPlayer) <= 10)
    {   
SetLocalInt(oPlayer"NW_G_Playerhasbeenbad"10); // * Player bad
        
SetStandardFactionReputation(STANDARD_FACTION_DEFENDER80oPlayer);
    }
   


// affichage de l ecran de respawn
oPlayer GetLastPlayerDied();
                
ShowDeathScreen(oPlayerTRUETRUEFALSETRUE);
        
SetIsDeathPopUpDisplayed(oPlayerTRUE);


    } 
Ensuite tu cree un script appelé gui_death_respawn ( le nom est important)

Dans cet exemple on prend 10% de l or du PJ avec un max de 10.000 PO.

Il suffit de remplacer le "TAG_DU_WAYPOINT DU RESPAWN" par ton tag ou tu veux que le PJ respawn.

Code PHP:

//::///////////////////////////////////////////////
//:: Generic On Pressed Respawn Button
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
// * June 1: moved RestoreEffects into plot include
*/
//:://////////////////////////////////////////////
//:: Created By:   Brent
//:: Created On:   November
//:://////////////////////////////////////////////
#include "nw_i0_plot"
#include "ginc_death"
#include "ginc_behavior"

void ApplyPenalty(object oDead)
{
 
    
int nGoldToTake =    FloatToInt(0.10 GetGold(oDead));
    
// *un max de 10000 PO est prise
    
if (nGoldToTake 10000)
    {
        
nGoldToTake 10000;
    }
    
AssignCommand(oDeadTakeGoldFromCreature(nGoldToTakeoDeadTRUE));
    
DelayCommand(8.0FloatingTextStrRefOnCreature(58299oDeadFALSE));
    
DelayCommand(8.2FloatingTextStrRefOnCreature(58300oDeadFALSE));
}

void main()
{
    
object oRespawner OBJECT_SELF;
    
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oRespawner);
    
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oRespawner)), oRespawner);
    
RemoveEffects(oRespawner);
    

     
ApplyPenalty(oRespawner);



object oTarget;
location lTarget;
string name "TAG_DU_WAYPOINT DU RESPAWN";

oTarget GetWaypointByTag(name);

lTarget GetLocation(oTarget);

if (
GetAreaFromLocation(lTarget)!=OBJECT_INVALID)
{

AssignCommand(oRespawnerClearAllActions());

AssignCommand(oRespawnerActionJumpToLocation(lTarget));
}

RemoveDeathScreensoRespawner );

Répondre

Connectés sur ce fil

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