La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 23/11/2024 15:03:33
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
Attention ! | Vous êtes en train de lire un message hors de son contexte. Veuillez lire le sujet Prob avec un respawn en entier avant de répondre à ce message. |
PsyCalimero Ecuyer Messages: 44 |
Bonjour tout le monde, j'ai visité le forum et j'y ai trouvé des instruction pour le script anti deco reco respawn... Seulement voilà, dans le OnRespawn, le personnage ne perd pas son objet (tag cartemort)... Pire, il en obtient un autre...
De l'aide svp:D j'aimerai que tout objet de tag cartemort soit supprimé de l'inventaire au respawn ! merci bcp ! Voici mon script NWScript :
#include "nw_i0_plot"
Le code a colorer syntaxiquement est trop long (plus de 10240 caractères) et risque de ne pas s'afficher du tout. Vous pouvez le voir en version colorée ici.void ApplyPenalty(object oDead) { int Mort; Mort = 0; SetLocalInt(oDead, "campe_mort", Mort); int nXP = GetXP(oDead); int nPenalty; int nHD = GetHitDice(oDead); if (nHD < 11) { nPenalty = 20 * GetHitDice(oDead); } if ((nHD >= 11) && (nHD < 16)) { nPenalty = 40 * GetHitDice(oDead); } if (nHD >= 16) { nPenalty = 80 * 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(oDead, nNewXP); int nGoldToTake; if (nHD < 11 ) { nGoldToTake = FloatToInt(0.05 * GetGold(oDead)); } if (( nHD >= 11) && (nHD < 16)) { nGoldToTake = FloatToInt(0.10 * GetGold(oDead)); } if (nHD >= 16) { nGoldToTake = FloatToInt(0.20 * GetGold(oDead)); } /* object oGear; int Pif; if (nHD < 10) { Pif = 20; } if ((nHD >= 10) && (nHD < 16)) { Pif = Random(75); } if (nHD > 16) { Pif = Random(50); } if (Pif == 0) { oGear = GetItemInSlot(INVENTORY_SLOT_ARMS, oDead); if(GetIsObjectValid(oGear)) DestroyObject(oGear); } if (Pif == 1) { oGear = GetItemInSlot(INVENTORY_SLOT_ARROWS, oDead); if(GetIsObjectValid(oGear)) DestroyObject(oGear); } if (Pif == 2) { oGear = GetItemInSlot(INVENTORY_SLOT_BELT, oDead); if(GetIsObjectValid(oGear)) DestroyObject(oGear); } if (Pif == 3) { oGear = GetItemInSlot(INVENTORY_SLOT_BOLTS, oDead); if(GetIsObjectValid(oGear)) DestroyObject(oGear); } if (Pif == 4) { oGear = GetItemInSlot(INVENTORY_SLOT_BOOTS, oDead); if(GetIsObjectValid(oGear)) DestroyObject(oGear); } if (Pif == 5) { oGear = GetItemInSlot(INVENTORY_SLOT_BULLETS, oDead); if(GetIsObjectValid(oGear)) DestroyObject(oGear); } if (Pif == 6) { oGear = GetItemInSlot(INVENTORY_SLOT_CARMOUR, oDead); if(GetIsObjectValid(oGear)) DestroyObject(oGear); } if (Pif == 7) { oGear = GetItemInSlot(INVENTORY_SLOT_CHEST, oDead); if(GetIsObjectValid(oGear)) DestroyObject(oGear); } if (Pif == { oGear = GetItemInSlot(INVENTORY_SLOT_CLOAK, oDead); if(GetIsObjectValid(oGear)) DestroyObject(oGear); } if (Pif == 9) { oGear = GetItemInSlot(INVENTORY_SLOT_CWEAPON_B, oDead); if(GetIsObjectValid(oGear)) DestroyObject(oGear); } if (Pif == 10) { oGear = GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oDead); if(GetIsObjectValid(oGear)) DestroyObject(oGear); } if (Pif == 11) { oGear = GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oDead); if(GetIsObjectValid(oGear)) DestroyObject(oGear); } if (Pif == 12) { oGear = GetItemInSlot(INVENTORY_SLOT_HEAD, oDead); if(GetIsObjectValid(oGear)) DestroyObject(oGear); } if (Pif == 13) { oGear = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oDead); if(GetIsObjectValid(oGear)) DestroyObject(oGear); } if (Pif == 14) { oGear = GetItemInSlot(INVENTORY_SLOT_LEFTRING, oDead); if(GetIsObjectValid(oGear)) DestroyObject(oGear); } if (Pif == 15) { oGear = GetItemInSlot(INVENTORY_SLOT_NECK, oDead); if(GetIsObjectValid(oGear)) DestroyObject(oGear); } if (Pif == 16) { oGear = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oDead); if(GetIsObjectValid(oGear)) DestroyObject(oGear); } if (Pif == 17) { oGear = GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oDead); if(GetIsObjectValid(oGear)) DestroyObject(oGear); } */ // * a cap of 10 000gp taken from you //if (nGoldToTake > 10000) //{ // nGoldToTake = 10000; //} AssignCommand(oDead, TakeGoldFromCreature(nGoldToTake, oDead, TRUE)); DelayCommand(4.0, FloatingTextStrRefOnCreature(58299, oDead, FALSE)); DelayCommand(4.8, FloatingTextStrRefOnCreature(58300, oDead, FALSE)); } /////////////////////////////////////////////////////////////////////// // 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 oPC = GetLastRespawnButtonPresser(); 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 = "NW_DEATH_TEMPLE"; string sArea = GetTag(GetArea(oRespawner)); /* CHAPTER 1 SPECIAL CASE */ if (sArea == "MAP_M1S3B") { sDestTag = "M1_WIZSPAWN"; } else if (sArea == "Map_M1S4E" || sArea == "Map_M1S4C" || sArea == "Map_M1S4D" || sArea == "Map_M1S4F") { sDestTag = "M1_FIGSPAWN"; ClearArena(oRespawner,sArea); } else /* CHAPTER 2 SPECIAL CASE */ /* if (sArea == "MAP_M2Q2F2" && GetDistanceBetweenLocations(GetLocation(GetObjectByTag("M2Q2F2_M2Q2G")), GetLocation(oRespawner)) < 5.0 && GetLocalInt(GetModule(),"NW_M2Q2E_WoodsFreed") == 0) { sDestTag = "WP_M2Q2GtoM2Q2F"; } else */ // * Druid Match if (sArea == "MAP_M2Q2E2") { sDestTag = "WP_M2Q2E_ENDDCC"; DestroyObject(GetObjectByTag("M2Q2EWELCARFT")); DestroyObject(GetObjectByTag("M2Q2EHENNAFT")); DestroyObject(GetObjectByTag("M2Q2EJANKENFT")); DestroyObject(GetObjectByTag("M2Q2EELGARFT")); // * June 2002: Destroy pets as well DestroyObject(GetObjectByTag("M2Q2EWELCARFTPET")); DestroyObject(GetObjectByTag("M2Q2EHENNAFTPET")); DestroyObject(GetObjectByTag("M2Q2EJANKENFTPET")); DestroyObject(GetObjectByTag("M2Q2EELGARFTPET")); SetLocalInt(GetObjectByTag("M2Q2EJAER"),"NW_M2Q2E_LFIGHT",FALSE); } /* CHAPTER 3 SPECIAL CASE */ else // * time travel dungeon past - Dungeon if (sArea == "M3Q2G") { sDestTag = "WP_ALTERNATE_SPWN"; } // * time travel dungeon past - Grove else if (sArea == "M3Q2I") { sDestTag = "WP_ALTERNATE_SPWN"; } //***** Respawn dasn l'arene sans penalites ! ***** if (sArea == "Arene") { sDestTag = "NW_DEATH_ARENE"; } if (sArea == "ZONEHRP") { sDestTag = "NW_DEATH_HRP"; } if (GetIsObjectValid(GetObjectByTag(sDestTag))) { if (sDestTag == "NW_DEATH_TEMPLE") { object oPriest = GetObjectByTag("NW_DEATH_CLERIC"); //SetLocalInt(oPriest, "NW_L_SAYONELINER", 10); //AssignCommand(oPriest, DelayCommand(3.0,ActionStartConversation(oRespawner))); AssignCommand(oPriest, DelayCommand(2.1, PlayVoiceChat(VOICE_CHAT_TALKTOME, oPriest))); SetLocalLocation(oRespawner, "NW_L_I_DIED_HERE", GetLocation(GetLastRespawnButtonPresser())); SetLocalInt(oRespawner, "NW_L_I_DIED", 1); SetLocalObject(oPriest, "NW_L_LASTDIED", GetLastRespawnButtonPresser()); // * April 2002: Moved penalty here, only when going back to the death temple ApplyPenalty(oRespawner); } object oSpawnPoint = GetObjectByTag(sDestTag); AssignCommand(oRespawner,JumpToLocation(GetLocation(oSpawnPoint))); // * mak } else { object oPC = GetLastRespawnButtonPresser(); if (!GetIsPC(oPC)) return; ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oPC); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oPC)), oPC); RemoveEffects(oPC); object oCarte = GetItemPossessedBy(oRespawner, "cartemort"); DestroyObject(oCarte); object oItemToTake; oItemToTake = GetItemPossessedBy(GetLastRespawnButtonPresser(), "cartemort"); if(GetIsObjectValid(oItemToTake) != 0) DestroyObject(oItemToTake); } } Voilà c'est le script, un peu long, mais il n'y a pas une enorme retouche a faire je crois merci ^^ |
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
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