
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.







La date/heure actuelle est 30/04/2025 23:37:01
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 quen on passe une potre certaine arme son suprimé en entier avant de répondre à ce message. |
lalilo Acolyte ![]() Messages: 35 Localisation: quelques par en france |
Salut à toi Dadoune voila se que j'ai dans ma petite réserve :
Script à mettre dans "OnClientEnter" du module... Je n'est pas tester si ça marchais pour une zone défini mais essaye toujours,Tu le place dans "OnEnter" de la zone... NWScript :
void ItempropCheck(object oInv, int nPCLvl);
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.int FindItemLevel(object oItem); int ArmourProperties(object oItem); int AmmoProperties(object oItem); int WeaponProperties(object oItem); int ThrowingProperties(object oItem); int GloveProperties(object oItem); int ArmourType(object oItem); int AmmoType(object oItem); int ThrowingType(object oItem); int GloveType(object oItem); int MiscType(object oItem); int CreatureType(object oItem); int ItemProperties(object oItem); //added by Thaelson - converter for item level int FindItemLevel(object oItem) { int iGoldValue; int nIDd = GetIdentified(oItem); if(nIDd == FALSE) { SetIdentified(oItem, TRUE); iGoldValue = GetGoldPieceValue(oItem); SetIdentified(oItem, FALSE); } else { iGoldValue = GetGoldPieceValue(oItem); } if(iGoldValue <= 1000) return 1; if(iGoldValue > 1000 && iGoldValue <= 1500) return 2; if(iGoldValue > 1500 && iGoldValue <= 2500) return 3; if(iGoldValue > 2500 && iGoldValue <= 3500) return 4; if(iGoldValue > 3500 && iGoldValue <= 5000) return 5; if(iGoldValue > 5000 && iGoldValue <= 6500) return 6; if(iGoldValue > 6500 && iGoldValue <= 9000) return 7; if(iGoldValue > 9000 && iGoldValue <= 12000) return 8; if(iGoldValue > 12000 && iGoldValue <= 15000) return 9; if(iGoldValue > 15000 && iGoldValue <= 19500) return 10; if(iGoldValue > 19500 && iGoldValue <= 25000) return 11; if(iGoldValue > 25000 && iGoldValue <= 30000) return 12; if(iGoldValue > 30000 && iGoldValue <= 35000) return 13; if(iGoldValue > 35000 && iGoldValue <= 40000) return 14; if(iGoldValue > 40000 && iGoldValue <= 50000) return 15; if(iGoldValue > 50000 && iGoldValue <= 65000) return 16; if(iGoldValue > 60000 && iGoldValue <= 75000) return 17; if(iGoldValue > 75000 && iGoldValue <= 90000) return 18; if(iGoldValue > 90000 && iGoldValue <= 110000) return 19; if(iGoldValue > 110000 && iGoldValue <= 130000) return 20; if(iGoldValue > 250000) return 21; return 0; } void NukeBadItem(object oItem) { object oPlayer=GetEnteringObject(); string sName=GetName(oItem); string sReason=GetLocalString(oItem,"ITEMPROP"); string sMessage="Player " + GetName(oPlayer) + "(" + GetPCPlayerName(oPlayer) + ") ItemProp filter destruction of " + sName + ":" + sReason; WriteTimestampedLogEntry(sMessage); DelayCommand(10.0,FloatingTextStringOnCreature("Item " + sName + "destroyed due to " + sReason + "!",oPlayer)); DestroyObject(oItem); } void ItempropCheck(object oInv, int nPCLvl) { if (CreatureType(oInv)) NukeBadItem(oInv); else if(ArmourType(oInv) && ArmourProperties(oInv)) NukeBadItem(oInv); else if(AmmoType(oInv) && AmmoProperties(oInv)) NukeBadItem(oInv); else if(GloveType(oInv) && GloveProperties(oInv)) NukeBadItem(oInv); else if (ThrowingType(oInv) && ThrowingProperties(oInv)) NukeBadItem(oInv); //added by Thaelson - nuke item if adjusted lvl > PC lvl else if (FindItemLevel(oInv) > nPCLvl) NukeBadItem(oInv); } int ArmourProperties(object oItem) { int iAPro = FALSE; iAPro = GetItemHasItemProperty(oItem, ITEM_PROPERTY_ATTACK_BONUS)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_ATTACK_BONUS_VS_ALIGNMENT_GROUP)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_ATTACK_BONUS_VS_RACIAL_GROUP)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_ATTACK_BONUS_VS_SPECIFIC_ALIGNMENT)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_BOOMERANG)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_DANCING )+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_DAMAGE_BONUS_VS_SPECIFIC_ALIGNMENT)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_DOUBLE_STACK)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_ENHANCEMENT_BONUS)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_ALIGNMENT_GROUP)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_RACIAL_GROUP)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_SPECIFIC_ALIGNEMENT)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_EXTRA_MELEE_DAMAGE_TYPE)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_EXTRA_RANGED_DAMAGE_TYPE)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_HOLY_AVENGER)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_KEEN)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_MASSIVE_CRITICALS)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_MIGHTY)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_ON_HIT_PROPERTIES)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_ON_MONSTER_HIT)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_MONSTER_DAMAGE)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_POISON)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_REGENERATION_VAMPIRIC)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_TURN_RESISTANCE)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_UNLIMITED_AMMUNITION)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_VORPAL)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_WOUNDING); if (iAPro > 0) { iAPro = TRUE; SetLocalString(oItem,"ITEMPROP","Armor Property Violation"); } return iAPro; } int ThrowingProperties(object oItem) { int iThrow = FALSE; iThrow =GetItemHasItemProperty(oItem, ITEM_PROPERTY_AC_BONUS)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_AC_BONUS_VS_ALIGNMENT_GROUP)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_AC_BONUS_VS_DAMAGE_TYPE)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_AC_BONUS_VS_RACIAL_GROUP)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_AC_BONUS_VS_SPECIFIC_ALIGNMENT)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_BOOMERANG)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_DAMAGE_RESISTANCE)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_DAMAGE_REDUCTION)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_DANCING)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_KEEN)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_EXTRA_MELEE_DAMAGE_TYPE)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_DOUBLE_STACK)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_FREEDOM_OF_MOVEMENT)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_IMPROVED_EVASION)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_MIND_BLANK)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_MONSTER_DAMAGE)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_ON_MONSTER_HIT)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_SAVING_THROW_BONUS)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_REGENERATION)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_SAVING_THROW_BONUS_SPECIFIC)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_TRUE_SEEING)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_TURN_RESISTANCE); if(iThrow > 0) { iThrow = TRUE; SetLocalString(oItem,"ITEMPROP","Throwing Weapon Property Violation"); } return iThrow; } int AmmoProperties(object oItem) { int iWPro = FALSE; iWPro = GetItemHasItemProperty(oItem, ITEM_PROPERTY_ABILITY_BONUS)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_AC_BONUS)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_AC_BONUS_VS_ALIGNMENT_GROUP)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_AC_BONUS_VS_DAMAGE_TYPE)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_AC_BONUS_VS_RACIAL_GROUP)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_AC_BONUS_VS_SPECIFIC_ALIGNMENT)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_ATTACK_BONUS)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_ATTACK_BONUS_VS_ALIGNMENT_GROUP)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_ATTACK_BONUS_VS_RACIAL_GROUP)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_ATTACK_BONUS_VS_SPECIFIC_ALIGNMENT)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_BOOMERANG)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_DAMAGE_RESISTANCE)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_DAMAGE_REDUCTION)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_DANCING)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_KEEN)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_DOUBLE_STACK)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_FREEDOM_OF_MOVEMENT)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_IMPROVED_EVASION)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_MIND_BLANK)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_MONSTER_DAMAGE)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_ON_MONSTER_HIT)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_REGENERATION)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_SAVING_THROW_BONUS)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_SAVING_THROW_BONUS_SPECIFIC)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_SPELL_RESISTANCE)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_TRUE_SEEING)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_TURN_RESISTANCE)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_BONUS_FEAT)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_BONUS_SPELL_SLOT_OF_LEVEL_N); if(iWPro > 0) { iWPro = TRUE; SetLocalString(oItem,"ITEMPROP","Ammo Property Violation"); } return iWPro; } int GloveProperties(object oItem) { int iGPro = FALSE; iGPro = GetItemHasItemProperty(oItem, ITEM_PROPERTY_BOOMERANG)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_DANCING)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_DOUBLE_STACK)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_ENHANCEMENT_BONUS)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_ALIGNMENT_GROUP)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_RACIAL_GROUP)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_SPECIFIC_ALIGNEMENT)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_EXTRA_MELEE_DAMAGE_TYPE)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_EXTRA_RANGED_DAMAGE_TYPE)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_HOLY_AVENGER)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_KEEN)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_MASSIVE_CRITICALS)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_MIGHTY)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_MIND_BLANK)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_MONSTER_DAMAGE)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_ON_MONSTER_HIT)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_TURN_RESISTANCE)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_REGENERATION_VAMPIRIC)+ GetItemHasItemProperty(oItem, ITEM_PROPERTY_UNLIMITED_AMMUNITION); if(iGPro > 0) { iGPro = TRUE; SetLocalString(oItem,"ITEMPROP","Glove Property Violation"); } return iGPro; } int ArmourType(object oItem) { int iIBA=GetBaseItemType(oItem); if (iIBA == BASE_ITEM_AMULET || iIBA == BASE_ITEM_ARMOR || iIBA == BASE_ITEM_BELT || iIBA == BASE_ITEM_BOOTS || iIBA == BASE_ITEM_CLOAK || iIBA == BASE_ITEM_HELMET || iIBA == BASE_ITEM_BRACER || iIBA == BASE_ITEM_SMALLSHIELD || iIBA == BASE_ITEM_TOWERSHIELD || iIBA == BASE_ITEM_LARGESHIELD || iIBA == BASE_ITEM_TORCH || iIBA == BASE_ITEM_BELT || iIBA == BASE_ITEM_BOOTS || iIBA == BASE_ITEM_RING) return TRUE; else return FALSE; } int AmmoType(object oItem) { int iIBW=GetBaseItemType(oItem); if (iIBW == BASE_ITEM_ARROW || iIBW == BASE_ITEM_BOLT || iIBW == BASE_ITEM_BULLET || iIBW == BASE_ITEM_TORCH) return TRUE; else return FALSE; } int ThrowingType(object oItem) { int iIBW=GetBaseItemType(oItem); if (iIBW == BASE_ITEM_THROWINGAXE || iIBW == BASE_ITEM_DART || iIBW == BASE_ITEM_SHURIKEN) return TRUE; else return FALSE; } int GloveType(object oItem) { int iIBG=GetBaseItemType(oItem); if (iIBG == BASE_ITEM_GLOVES) return TRUE; else return FALSE; } int CreatureType(object oItem) { int iIBC=GetBaseItemType(oItem); if (iIBC == BASE_ITEM_CBLUDGWEAPON || iIBC == BASE_ITEM_CPIERCWEAPON || iIBC == BASE_ITEM_CSLASHWEAPON || iIBC == BASE_ITEM_CSLSHPRCWEAP || iIBC == BASE_ITEM_CREATUREITEM) { SetLocalString(oItem,"ITEMPROP","Creature Item"); return TRUE; } else return FALSE; } void main() { object oPC = GetEnteringObject(); object oItem = GetFirstItemInInventory(oPC); int iSlot; int nLevel = GetHitDice(oPC); while (GetIsObjectValid(oItem)) { ItempropCheck(oItem, nLevel); oItem = GetNextItemInInventory(oPC); } for (iSlot=0; iSlot<17; iSlot++) { oItem = GetItemInSlot(iSlot, oPC); ItempropCheck(oItem, nLevel); } } Voila c'est tout @++ ![]() |
Revenir en haut | ![]() ![]() ![]() |


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