Author Topic: Stuck at moddind....I suck at scripting...  (Read 777 times)

Legacy_Dark Ruler

  • Newbie
  • *
  • Posts: 32
  • Karma: +0/-0
Stuck at moddind....I suck at scripting...
« Reply #15 on: February 19, 2011, 09:07:51 pm »


               I wrote this after the end of the first lines of code of the default script from the nwn...



//

// // created for: Dark Ruler

if ( sArea =="HottearDesert")

{

object oWayJump=GetObjectByTag("Captured_Cage00");

// fade..

FadeToBlack(oPlayer,FADE_SPEED_MEDIUM);

// raise heal

DelayCommand(1.0,Raise( oPlayer));

// jump player to area

DelayCommand(5.0,AssignCommand(oPlayer,ActionJumpToObject(oWayJump)) );

// un fade..

DelayCommand(7.3, FadeFromBlack(oPlayer,FADE_SPEED_MEDIUM));

return;

}
               
               

               
            

Legacy_Greyfort

  • Sr. Member
  • ****
  • Posts: 442
  • Karma: +0/-0
Stuck at moddind....I suck at scripting...
« Reply #16 on: February 19, 2011, 09:16:31 pm »


               ok...Here is entire script.1) open new script file. paste the below script in new script be sure to remove the
voidmain()
{

} from the old file replacing it with the pasted script.  save file as dar_mod_ondeath

then goto module properties, events tab, goto player death event click on ... button and choose dar_mod_ondeath
then click ok



SCRIPT:

//
// File: dar_mod_ondeath
// created for: Dark Ruler

/*

In your case I would use the modules onplayerdeath and just before the
PopGUI line I would have a check to determine if the PC is in a certain area.
If they are in that certain area, fade to black, raise the PC(gotta raise em
fore you can move them), move them to the captured area, fade in.
//
// File: dar_mod_ondeath
// created for: Dark Ruler

/*

In your case I would use the modules onplayerdeath and just before the
PopGUI line I would have a check to determine if the PC is in a certain area.
If they are in that certain area, fade to black, raise the PC(gotta raise em
fore you can move them), move them to the captured area, fade in.

*/

//::///////////////////////////////////////////////
//:: Death Script
//:: NW_O0_DEATH.NSS
//:: Copyright © 2008 Bioware Corp.
//:://////////////////////////////////////////////
/*
    This script handles the default behavior
    that occurs when a player dies.

    BK: October 8 2002: Overriden for Expansion

    Deva Winblood:  April 21th, 2008: Modified to
    handle dismounts when PC dies while mounted.

*/
//:://////////////////////////////////////////////
//:: Created By: Brent Knowles
//:: Created On: November 6, 2001
//:://////////////////////////////////////////////

#include "x3_inc_horse"

 /*
void ClearAllFactionMembers(object oMember, object oPlayer)
{
//    AssignCommand(oMember, SpeakString("here"));
    AdjustReputation(oPlayer, oMember, 100);
    SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad
    object oClear = GetFirstFactionMember(oMember, FALSE);
    while (GetIsObjectValid(oClear) == TRUE)
    {
        ClearPersonalReputation(oPlayer, oClear);
        oClear = GetNextFactionMember(oMember, FALSE);
    }
}   */
void Raise(object oPlayer)
{
        effect eVisual = EffectVisualEffect(VFX_IMP_RESTORATION);

        effect eBad = GetFirstEffect(oPlayer);
        ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oPlayer);
        ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oPlayer)), oPlayer);

        //Search for negative effects
        while(GetIsEffectValid(eBad))
        {
            if (GetEffectType(eBad) == EFFECT_TYPE_ABILITY_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_AC_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_ATTACK_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_IMMUNITY_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_SAVING_THROW_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_SPELL_RESISTANCE_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_SKILL_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_BLINDNESS ||
                GetEffectType(eBad) == EFFECT_TYPE_DEAF ||
                GetEffectType(eBad) == EFFECT_TYPE_PARALYZE ||
                GetEffectType(eBad) == EFFECT_TYPE_NEGATIVELEVEL)
                {
                    //Remove effect if it is negative.
                    RemoveEffect(oPlayer, eBad);
                }
            eBad = GetNextEffect(oPlayer);
        }
        //Fire cast spell at event for the specified target
        SignalEvent(oPlayer, EventSpellCastAt(OBJECT_SELF, SPELL_RESTORATION, FALSE));
        ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisual, oPlayer);
}


///////////////////////////////////////////////////////////////[ MAIN ]/////////
void main()
{
    object oPlayer = GetLastPlayerDied();
    object oHorse;
    object oInventory;
    string sID;
    int nC;
    string sT;
    string sR;
    int nCH;
    int nST;
    object oItem;
    effect eEffect;
    string sDB="X3SADDLEBAG"+GetTag(GetModule());
    if (GetStringLength(GetLocalString(GetModule(),"X3_SADDLEBAG_DATABASE"))>0) sDB=GetLocalString(GetModule(),"X3_SADDLEBAG_DATABASE");
    if (HorseGetIsMounted(oPlayer))
    { // Dismount and then die
        //SetCommandable(FALSE,oPlayer);
        //ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oPlayer);
        DelayCommand(0.3,HORSE_SupportResetUnmountedAppearance(oPlayer));
        DelayCommand(3.0,HORSE_SupportCleanVariables(oPlayer));
        DelayCommand(1.0,HORSE_SupportRemoveACBonus(oPlayer));
        DelayCommand(1.0,HORSE_SupportRemoveHPBonus(oPlayer));
        DelayCommand(1.1,HORSE_SupportRemoveMountedSkillDecreases(oPlayer));
        DelayCommand(1.1,HORSE_SupportAdjustMountedArcheryPenalty(oPlayer));
        DelayCommand(1.2,HORSE_SupportOriginalSpeed(oPlayer));
        if (!GetLocalInt(GetModule(),"X3_HORSE_NO_CORPSES"))
        { // okay to create lootable horse corpses
            sR=GetSkinString(oPlayer,"sX3_HorseResRef");
            sT=GetSkinString(oPlayer,"sX3_HorseMountTag");
            nCH=GetSkinInt(oPlayer,"nX3_HorseAppearance");
            nST=GetSkinInt(oPlayer,"nX3_HorseTail");
            nC=GetLocalInt(oPlayer,"nX3_HorsePortrait");
            if (GetStringLength(sR)>0&&GetStringLeft(sR,GetStringLength(HORSE_PALADIN_PREFIX))!=HORSE_PALADIN_PREFIX)
            { // create horse
                oHorse=HorseCreateHorse(sR,GetLocation(oPlayer),oPlayer,sT,nCH,nST);
                SetLootable(oHorse,TRUE);
                SetPortraitId(oHorse,nC);
                SetLocalInt(oHorse,"bDie",TRUE);
                AssignCommand(oHorse,SetIsDestroyable(FALSE,TRUE,TRUE));
            } // create horse
        } // okay to create lootable horse corpses
        oInventory=GetLocalObject(oPlayer,"oX3_Saddlebags");
        sID=GetLocalString(oPlayer,"sDB_Inv");
        if (GetIsObjectValid(oInventory))
        { // drop horse saddlebags
            if (!GetIsObjectValid(oHorse))
            { // no horse created
                HORSE_SupportTransferInventory(oInventory,OBJECT_INVALID,GetLocation(oPlayer),TRUE);
            } // no horse created
            else
            { // transfer to horse
                HORSE_SupportTransferInventory(oInventory,oHorse,GetLocation(oHorse),TRUE);
                //DelayCommand(2.0,PurgeSkinObject(oHorse));
                //DelayCommand(3.0,KillTheHorse(oHorse));
                //DelayCommand(1.8,PurgeSkinObject(oHorse));
            } // transfer to horse
        } // drop horse saddlebags
        else if (GetStringLength(sID)>0)
        { // database based inventory
            nC=GetCampaignInt(sDB,"nCO_"+sID);
            while(nC>0)
            { // restore inventory
                sR=GetCampaignString(sDB,"sR"+sID+IntToString(nC));
                sT=GetCampaignString(sDB,"sT"+sID+IntToString(nC));
                nST=GetCampaignInt(sDB,"nS"+sID+IntToString(nC));
                nCH=GetCampaignInt(sDB,"nC"+sID+IntToString(nC));
                DeleteCampaignVariable(sDB,"sR"+sID+IntToString(nC));
                DeleteCampaignVariable(sDB,"sT"+sID+IntToString(nC));
                DeleteCampaignVariable(sDB,"nS"+sID+IntToString(nC));
                DeleteCampaignVariable(sDB,"nC"+sID+IntToString(nC));
                if (!GetIsObjectValid(oHorse))
                { // no lootable corpse
                    oItem=CreateObject(OBJECT_TYPE_ITEM,sR,GetLocation(oPlayer),FALSE,sT);
                } // no lootable corpse
                else
                { // lootable corpse
                    oItem=CreateItemOnObject(sR,oHorse,nST,sT);
                } // lootable corpse
                if (GetItemStackSize(oItem)!=nST) SetItemStackSize(oItem,nST);
                if (nCH>0) SetItemCharges(oItem,nCH);
                nC--;
            } // restore inventory
            DeleteCampaignVariable(sDB,"nCO_"+sID);
            //DelayCommand(2.0,PurgeSkinObject(oHorse));
            if (GetIsObjectValid(oHorse)&&GetLocalInt(oHorse,"bDie")) DelayCommand(3.0,KillTheHorse(oHorse));
            //DelayCommand(2.5,PurgeSkinObject(oHorse));
        } // database based inventory
        else if (GetIsObjectValid(oHorse))
        { // no inventory
            //DelayCommand(1.0,PurgeSkinObject(oHorse));
            DelayCommand(2.0,KillTheHorse(oHorse));
            //DelayCommand(1.8,PurgeSkinObject(oHorse));
        } // no inventory
        //eEffect=EffectDeath();
        //DelayCommand(1.6,ApplyEffectToObject(DURATION_TYPE_INSTANT,eEffect,oPlayer));
        //DelayCommand(1.7,SetCommandable(TRUE,oPlayer));
        //return;
    } // Dismount and then die

    // * increment global tracking number of times that I died
    SetLocalInt(oPlayer, "NW_L_PLAYER_DIED", GetLocalInt(oPlayer, "NW_L_PLAYER_DIED") + 1);

    // * BK: Automation Control. Autopcs ignore death
    if (GetLocalInt(oPlayer, "NW_L_AUTOMATION") == 10)
    {
        Raise(oPlayer);
        DelayCommand(1.0, ExecuteScript("crawl", OBJECT_SELF));
        return; // Raise and return
    }


    // * Handle Spirit of the Wood Death
     string sArea = GetTag(GetArea(oPlayer));
/*
    if (sArea == "MAP_M2Q2F2" && GetDistanceBetweenLocations(GetLocation(GetObjectByTag("M2Q2F2_M2Q2G")), GetLocation(oPlayer)) < 5.0 && GetLocalInt(GetModule(),"NW_M2Q2E_WoodsFreed") == 0)
    {
        int bValid;

        Raise(oPlayer);
        string sDestTag = "WP_M2Q2GtoM2Q2F";
        object oSpawnPoint = GetObjectByTag(sDestTag);
        AssignCommand(oPlayer,JumpToLocation(GetLocation(oSpawnPoint)));
        return;

    }
*/
    // * in last level of the Sourcestone, move the player to the beginning of the area
    // * May 16 2002: or the main area of the Snowglobe (to prevent plot logic problems).
    // * May 21 2002: or Castle Never
    if (sArea == "M4Q1D2" || sArea == "M3Q3C" || sArea == "MAP_M1Q6A")
    {

        //Raise(oPlayer);
        //string sDestTag = "M4QD07_ENTER";
        //object oSpawnPoint = GetObjectByTag(sDestTag);
//        AssignCommand(oPlayer, DelayCommand(1.0, JumpToLocation(GetLocation(oSpawnPoint))));
// * MAY 2002: Just popup the YOU ARE DEAD panel at this point
        DelayCommand(2.5, PopUpDeathGUIPanel(oPlayer,FALSE, TRUE, 66487));
        return;
    }

    // * make friendly to Each of the 3 common factions
    AssignCommand(oPlayer, ClearAllActions());
    // * Note: waiting for Sophia to make SetStandardFactionReptuation to clear all personal reputation
    if (GetStandardFactionReputation(STANDARD_FACTION_COMMONER, oPlayer) <= 10)
    {   SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad
        SetStandardFactionReputation(STANDARD_FACTION_COMMONER, 80, oPlayer);
    }
    if (GetStandardFactionReputation(STANDARD_FACTION_MERCHANT, oPlayer) <= 10)
    {   SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad
        SetStandardFactionReputation(STANDARD_FACTION_MERCHANT, 80, oPlayer);
    }
    if (GetStandardFactionReputation(STANDARD_FACTION_DEFENDER, oPlayer) <= 10)
    {   SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad
        SetStandardFactionReputation(STANDARD_FACTION_DEFENDER, 80, oPlayer);
    }

//
// // created for: Dark Ruler
if ( sArea =="Area Tag Here")
{
SendMessageToPC  (oPlayer," you are unconsious...");

object oWayJump=GetObjectByTag("Way point tag here");
// fade..
FadeToBlack(oPlayer,FADE_SPEED_MEDIUM);
// raise heal
DelayCommand(1.0,Raise( oPlayer));
// jump player to area
DelayCommand(5.0,AssignCommand(oPlayer,ActionJumpToObject(oWayJump)) );
// un fade..
DelayCommand(7.3, FadeFromBlack(oPlayer,FADE_SPEED_MEDIUM));
return;
}


    DelayCommand(2.5, PopUpGUIPanel(oPlayer,GUI_PANEL_PLAYER_DEATH));
}
///////////////////////////////////////////////////////////////[ MAIN ]/////////

this should stop any error you got from this file, replace the area tag with your area name and way point tag with your waypoint tag.  I hope that helps a bit better.
               
               

               


                     Modifié par Greyfort, 19 février 2011 - 09:27 .
                     
                  


            

Legacy_Dark Ruler

  • Newbie
  • *
  • Posts: 32
  • Karma: +0/-0
Stuck at moddind....I suck at scripting...
« Reply #17 on: February 19, 2011, 09:19:37 pm »


               So do you know why? Itried to modify it but without success....
               
               

               
            

Legacy_Dark Ruler

  • Newbie
  • *
  • Posts: 32
  • Karma: +0/-0
Stuck at moddind....I suck at scripting...
« Reply #18 on: February 19, 2011, 09:27:02 pm »


               Yeah I figured it out, lol. thanks for all the help ;p. I know I was a pain the ass '<img'>



Thanks alot really!
               
               

               
            

Legacy_Greyfort

  • Sr. Member
  • ****
  • Posts: 442
  • Karma: +0/-0
Stuck at moddind....I suck at scripting...
« Reply #19 on: February 19, 2011, 09:30:22 pm »


               No problem we are here to help each other.
               
               

               
            

Legacy_Baragg

  • Sr. Member
  • ****
  • Posts: 496
  • Karma: +0/-0
Stuck at moddind....I suck at scripting...
« Reply #20 on: February 20, 2011, 01:37:41 pm »


               Just thought we could have simply made the GUI pop up an else statement.
               
               

               
            

Legacy_Dark Ruler

  • Newbie
  • *
  • Posts: 32
  • Karma: +0/-0
Stuck at moddind....I suck at scripting...
« Reply #21 on: February 20, 2011, 02:04:27 pm »


               How could we do that? explain your idea to me.... another thing, how could i change the reputation for the PC on the say hostile faction from 0 to 50 when dying and changing areas?... sorry for the trouble...
               
               

               
            

Legacy_Lightfoot8

  • Hero Member
  • *****
  • Posts: 4797
  • Karma: +0/-0
Stuck at moddind....I suck at scripting...
« Reply #22 on: February 20, 2011, 03:00:03 pm »


               â–º



Neverwinter Nights: Factions, Shouts and Attacking My Enemy
               
               

               
            

Legacy_Baragg

  • Sr. Member
  • ****
  • Posts: 496
  • Karma: +0/-0
Stuck at moddind....I suck at scripting...
« Reply #23 on: February 20, 2011, 08:52:21 pm »


               Here is my earlier with the PopUp encased in an "else" node, that should make is so the GUI does not come up if the pc dies in that area. Also added in 2 possibilities for adjusting the rep. The one I did not comment out will adjust the PCs party's rep with the entire faction of the hostile faction.

[nwscript]
//::///////////////////////////////////////////////
//:: Death Script
//:: NW_O0_DEATH.NSS
//:: Copyright © 2008 Bioware Corp.
//:://////////////////////////////////////////////
/*
   This script handles the default behavior
   that occurs when a player dies.

   BK: October 8 2002: Overriden for Expansion

   Deva Winblood:  April 21th, 2008: Modified to
   handle dismounts when PC dies while mounted.

*/
//:://////////////////////////////////////////////
//:: Created By: Brent Knowles
//:: Created On: November 6, 2001
//:://////////////////////////////////////////////

#include "x3_inc_horse"

/*
void ClearAllFactionMembers(object oMember, object oPlayer)
{
//    AssignCommand(oMember, SpeakString("here"));
   AdjustReputation(oPlayer, oMember, 100);
   SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad
   object oClear = GetFirstFactionMember(oMember, FALSE);
   while (GetIsObjectValid(oClear) == TRUE)
   {
       ClearPersonalReputation(oPlayer, oClear);
       oClear = GetNextFactionMember(oMember, FALSE);
   }
}   */
void Raise(object oPlayer)
{
       effect eVisual = EffectVisualEffect(VFX_IMP_RESTORATION);

       effect eBad = GetFirstEffect(oPlayer);
       ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oPlayer);
       ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oPlayer)), oPlayer);

       //Search for negative effects
       while(GetIsEffectValid(eBad))
       {
           if (GetEffectType(eBad) == EFFECT_TYPE_ABILITY_DECREASE ||
               GetEffectType(eBad) == EFFECT_TYPE_AC_DECREASE ||
               GetEffectType(eBad) == EFFECT_TYPE_ATTACK_DECREASE ||
               GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_DECREASE ||
               GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_IMMUNITY_DECREASE ||
               GetEffectType(eBad) == EFFECT_TYPE_SAVING_THROW_DECREASE ||
               GetEffectType(eBad) == EFFECT_TYPE_SPELL_RESISTANCE_DECREASE ||
               GetEffectType(eBad) == EFFECT_TYPE_SKILL_DECREASE ||
               GetEffectType(eBad) == EFFECT_TYPE_BLINDNESS ||
               GetEffectType(eBad) == EFFECT_TYPE_DEAF ||
               GetEffectType(eBad) == EFFECT_TYPE_PARALYZE ||
               GetEffectType(eBad) == EFFECT_TYPE_NEGATIVELEVEL)
               {
                   //Remove effect if it is negative.
                   RemoveEffect(oPlayer, eBad);
               }
           eBad = GetNextEffect(oPlayer);
       }
       //Fire cast spell at event for the specified target
       SignalEvent(oPlayer, EventSpellCastAt(OBJECT_SELF, SPELL_RESTORATION, FALSE));
       ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisual, oPlayer);
}


///////////////////////////////////////////////////////////////[ MAIN ]/////////
void main()
{
   object oPlayer = GetLastPlayerDied();
   object oHorse;
   object oInventory;
   string sID;
   int nC;
   string sT;
   string sR;
   int nCH;
   int nST;
   object oItem;
   effect eEffect;
   string sDB="X3SADDLEBAG"+GetTag(GetModule());

   if (GetStringLength(GetLocalString(GetModule(),"X3_SADDLEBAG_DATABASE"))>0) sDB=GetLocalString(GetModule(),"X3_SADDLEBAG_DATABASE");
   if (HorseGetIsMounted(oPlayer))
   { // Dismount and then die
       //SetCommandable(FALSE,oPlayer);
       //ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oPlayer);
       DelayCommand(0.3,HORSE_SupportResetUnmountedAppearance(oPlayer));
       DelayCommand(3.0,HORSE_SupportCleanVariables(oPlayer));
       DelayCommand(1.0,HORSE_SupportRemoveACBonus(oPlayer));
       DelayCommand(1.0,HORSE_SupportRemoveHPBonus(oPlayer));
       DelayCommand(1.1,HORSE_SupportRemoveMountedSkillDecreases(oPlayer));
       DelayCommand(1.1,HORSE_SupportAdjustMountedArcheryPenalty(oPlayer));
       DelayCommand(1.2,HORSE_SupportOriginalSpeed(oPlayer));
       if (!GetLocalInt(GetModule(),"X3_HORSE_NO_CORPSES"))
       { // okay to create lootable horse corpses
           sR=GetSkinString(oPlayer,"sX3_HorseResRef");
           sT=GetSkinString(oPlayer,"sX3_HorseMountTag");
           nCH=GetSkinInt(oPlayer,"nX3_HorseAppearance");
           nST=GetSkinInt(oPlayer,"nX3_HorseTail");
           nC=GetLocalInt(oPlayer,"nX3_HorsePortrait");
           if (GetStringLength(sR)>0&&GetStringLeft(sR,GetStringLength(HORSE_PALADIN_PREFIX))!=HORSE_PALADIN_PREFIX)
           { // create horse
               oHorse=HorseCreateHorse(sR,GetLocation(oPlayer),oPlayer,sT,nCH,nST);
               SetLootable(oHorse,TRUE);
               SetPortraitId(oHorse,nC);
               SetLocalInt(oHorse,"bDie",TRUE);
               AssignCommand(oHorse,SetIsDestroyable(FALSE,TRUE,TRUE));
           } // create horse
       } // okay to create lootable horse corpses
       oInventory=GetLocalObject(oPlayer,"oX3_Saddlebags");
       sID=GetLocalString(oPlayer,"sDB_Inv");
       if (GetIsObjectValid(oInventory))
       { // drop horse saddlebags
           if (!GetIsObjectValid(oHorse))
           { // no horse created
               HORSE_SupportTransferInventory(oInventory,OBJECT_INVALID,GetLocation(oPlayer),TRUE);
           } // no horse created
           else
           { // transfer to horse
               HORSE_SupportTransferInventory(oInventory,oHorse,GetLocation(oHorse),TRUE);
               //DelayCommand(2.0,PurgeSkinObject(oHorse));
               //DelayCommand(3.0,KillTheHorse(oHorse));
               //DelayCommand(1.8,PurgeSkinObject(oHorse));
           } // transfer to horse
       } // drop horse saddlebags
       else if (GetStringLength(sID)>0)
       { // database based inventory
           nC=GetCampaignInt(sDB,"nCO_"+sID);
           while(nC>0)
           { // restore inventory
               sR=GetCampaignString(sDB,"sR"+sID+IntToString(nC));
               sT=GetCampaignString(sDB,"sT"+sID+IntToString(nC));
               nST=GetCampaignInt(sDB,"nS"+sID+IntToString(nC));
               nCH=GetCampaignInt(sDB,"nC"+sID+IntToString(nC));
               DeleteCampaignVariable(sDB,"sR"+sID+IntToString(nC));
               DeleteCampaignVariable(sDB,"sT"+sID+IntToString(nC));
               DeleteCampaignVariable(sDB,"nS"+sID+IntToString(nC));
               DeleteCampaignVariable(sDB,"nC"+sID+IntToString(nC));
               if (!GetIsObjectValid(oHorse))
               { // no lootable corpse
                   oItem=CreateObject(OBJECT_TYPE_ITEM,sR,GetLocation(oPlayer),FALSE,sT);
               } // no lootable corpse
               else
               { // lootable corpse
                   oItem=CreateItemOnObject(sR,oHorse,nST,sT);
               } // lootable corpse
               if (GetItemStackSize(oItem)!=nST) SetItemStackSize(oItem,nST);
               if (nCH>0) SetItemCharges(oItem,nCH);
               nC--;
           } // restore inventory
           DeleteCampaignVariable(sDB,"nCO_"+sID);
           //DelayCommand(2.0,PurgeSkinObject(oHorse));
           if (GetIsObjectValid(oHorse)&&GetLocalInt(oHorse,"bDie")) DelayCommand(3.0,KillTheHorse(oHorse));
           //DelayCommand(2.5,PurgeSkinObject(oHorse));
       } // database based inventory
       else if (GetIsObjectValid(oHorse))
       { // no inventory
           //DelayCommand(1.0,PurgeSkinObject(oHorse));
           DelayCommand(2.0,KillTheHorse(oHorse));
           //DelayCommand(1.8,PurgeSkinObject(oHorse));
       } // no inventory
       //eEffect=EffectDeath();
       //DelayCommand(1.6,ApplyEffectToObject(DURATION_TYPE_INSTANT,eEffect,oPlayer));
       //DelayCommand(1.7,SetCommandable(TRUE,oPlayer));
       //return;
   } // Dismount and then die

   // * increment global tracking number of times that I died
   SetLocalInt(oPlayer, "NW_L_PLAYER_DIED", GetLocalInt(oPlayer, "NW_L_PLAYER_DIED") + 1);

   // * BK: Automation Control. Autopcs ignore death
   if (GetLocalInt(oPlayer, "NW_L_AUTOMATION") == 10)
   {
       Raise(oPlayer);
       DelayCommand(1.0, ExecuteScript("crawl", OBJECT_SELF));
       return; // Raise and return
   }


   // * Handle Spirit of the Wood Death
    string sArea = GetTag(GetArea(oPlayer));
/*
   if (sArea == "MAP_M2Q2F2" && GetDistanceBetweenLocations(GetLocation(GetObjectByTag("M2Q2F2_M2Q2G")), GetLocation(oPlayer))
   {
       int bValid;

       Raise(oPlayer);
       string sDestTag = "WP_M2Q2GtoM2Q2F";
       object oSpawnPoint = GetObjectByTag(sDestTag);
       AssignCommand(oPlayer,JumpToLocation(GetLocation(oSpawnPoint)));
       return;

   }
*/
   // * in last level of the Sourcestone, move the player to the beginning of the area
   // * May 16 2002: or the main area of the Snowglobe (to prevent plot logic problems).
   // * May 21 2002: or Castle Never
   if (sArea == "M4Q1D2" || sArea == "M3Q3C" || sArea == "MAP_M1Q6A")
   {

       //Raise(oPlayer);
       //string sDestTag = "M4QD07_ENTER";
       //object oSpawnPoint = GetObjectByTag(sDestTag);
//        AssignCommand(oPlayer, DelayCommand(1.0, JumpToLocation(GetLocation(oSpawnPoint))));
// * MAY 2002: Just popup the YOU ARE DEAD panel at this point
       DelayCommand(2.5, PopUpDeathGUIPanel(oPlayer,FALSE, TRUE, 66487));
       return;
   }

   // * make friendly to Each of the 3 common factions
   AssignCommand(oPlayer, ClearAllActions());
   // * Note: waiting for Sophia to make SetStandardFactionReptuation to clear all personal reputation
   if (GetStandardFactionReputation(STANDARD_FACTION_COMMONER, oPlayer)
   {   SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad
       SetStandardFactionReputation(STANDARD_FACTION_COMMONER, 80, oPlayer);
   }
   if (GetStandardFactionReputation(STANDARD_FACTION_MERCHANT, oPlayer)
   {   SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad
       SetStandardFactionReputation(STANDARD_FACTION_MERCHANT, 80, oPlayer);
   }
   if (GetStandardFactionReputation(STANDARD_FACTION_DEFENDER, oPlayer)
   {   SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad
       SetStandardFactionReputation(STANDARD_FACTION_DEFENDER, 80, oPlayer);
   }


   if(sArea == "CAPTURE_AREA")//area where PC should be captured
   {//Baragg
       FadeToBlack(oPlayer);
       Raise(oPlayer);
       AssignCommand(oPlayer, ClearAllActions());
       AssignCommand(oPlayer, JumpToLocation(GetLocation(GetWaypointByTag("CAPTURE_WAYPOINT_TAG"))));
       FadeFromBlack(oPlayer);
       //AdjustReputation(oPlayer, GetNearestPerceivedEnemy(oPlayer), 50);
       AdjustReputationWithFaction(oPlayer, GetNearestPerceivedEnemy(oPlayer), 50);
   }
   else
   {
       DelayCommand(2.5, PopUpGUIPanel(oPlayer,GUI_PANEL_PLAYER_DEATH));
   }

}
///////////////////////////////////////////////////////////////[ MAIN ]/////////
[/nwscript]
               
               

               


                     Modifié par Baragg, 20 février 2011 - 08:52 .
                     
                  


            

Legacy_Baragg

  • Sr. Member
  • ****
  • Posts: 496
  • Karma: +0/-0
Stuck at moddind....I suck at scripting...
« Reply #24 on: February 20, 2011, 08:53:37 pm »


               Might need to adjust those fade in, out to look right.
               
               

               
            

Legacy_ffbj

  • Hero Member
  • *****
  • Posts: 1097
  • Karma: +0/-0
Stuck at moddind....I suck at scripting...
« Reply #25 on: February 21, 2011, 10:20:55 pm »


               One way to make something like this more flexible is just to put an int on the area say, Captured set to 1.  In this way you could have multiple areas where an expired PC would be considered captured, and then respawn at the appropriate place.  I use Jailed for mine when a PC dies in an area where they would be arrested for fighting for instance. Of course they only get arrested if they lose, that is, die.
               
               

               
            

Legacy_Zejan the Wonder Monkey

  • Jr. Member
  • **
  • Posts: 61
  • Karma: +0/-0
Stuck at moddind....I suck at scripting...
« Reply #26 on: February 26, 2011, 06:06:47 am »


               Whoa...



Is that the OnDeath script for the CEP?
               
               

               
            

Legacy_ffbj

  • Hero Member
  • *****
  • Posts: 1097
  • Karma: +0/-0
Stuck at moddind....I suck at scripting...
« Reply #27 on: March 01, 2011, 07:48:32 pm »


               I don't think so.
               
               

               


                     Modifié par ffbj, 01 mars 2011 - 07:50 .