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 10:03:25
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 |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Salut.
Voila j'aurais voulu savoire comment on met des couleur sur des armures et des casques. Enfaite dès que le joueur il obtient une armure ou un casque je voudr is qu'il change de couleur par rapport a une local. Voilà comment l'armure doit se coloré : Cuir 1 : Blanc ou Noir Cuir 2 : Bleu ou Rouge Tissu 1 : Blanc ou Noir Tissu 2 : Bleu ou Rouge Metal 1 : Blanc ou Noir Metal 2 : Bleu ou Rouge Si la LocalInt(oPC, "team") est à 1 alors il est du bien (bleu/blanc), si c'est 2 alors il est mal (rouge/noir). Merci _________________ [http] Dernière édition par Black Knight le 04/08/2006 09:23:49; édité 3 fois
|
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Cherche le script des teintures (x2_s2_dyearmor completement au pif, mais dans ce genre là le nom du script, cherche "dye") ça devrait t'aider.
|
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Escuse moi je n'arrive pas a comprendre le script :s le probleme c'est que je suis obliger de retagger tout mes items???? je peux pas snif
_________________ [http] |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Non l'histoire du tag, c'est pour mettre la couleur en fonction de la teinture utilisée, c'est les items "teintures" dont le tag est important.
Tu dois avoir une fonction dans le script qui applique l'effet de la teinture, qui prend comme parametre le bout de tag (en fin de compte c'est un integer, qui correspond au numero de la couleur (de 0 à 63 ou de 1 à 64 je sais plus)). Essaye avec ça. Le tag de l'objet ciblé lui est pas modifié. Je peux pas regarder là j'ai pas l'editeur. |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Bon voila ce que j'ai essayer de faire :
NWScript :
#include "x2_inc_itemprop" int GetApprArmorColorFromSpellID(int nID) { switch (nID) { case 648 : return ITEM_APPR_ARMOR_COLOR_CLOTH1; case 649 : return ITEM_APPR_ARMOR_COLOR_CLOTH2; case 650 : return ITEM_APPR_ARMOR_COLOR_LEATHER1; case 651 : return ITEM_APPR_ARMOR_COLOR_LEATHER2; case 652 : return ITEM_APPR_ARMOR_COLOR_METAL1; case 653 : return ITEM_APPR_ARMOR_COLOR_METAL2; } return 0; } void FinishDyeScript(object oPC, object oTarget, int bEquipped, int nSlot) { object oNew = CopyItem(oTarget, oPC); DestroyObject(oTarget); IPRemoveAllItemProperties(oNew,DURATION_TYPE_TEMPORARY); if (bEquipped) { AssignCommand(oPC,ClearAllActions(TRUE)); AssignCommand(oPC,ActionEquipItem(oNew,nSlot)); } } void main() { object oItem = GetModuleItemAcquired(); object oPC = GetModuleItemAcquiredBy(); int iTeam = GetLocalInt(oPC, "team"); int nBase = GetBaseItemType(oItem); int nSlot; int bEquipped; if(nBase == BASE_ITEM_ARMOR && nBase == BASE_ITEM_HELMET) { int nColorType = GetApprArmorColorFromSpellID(GetSpellId()); if (nBase == BASE_ITEM_HELMET ) { nSlot = INVENTORY_SLOT_HEAD; bEquipped = (GetItemInSlot(nSlot,oPC) == oItem); } else { nSlot = INVENTORY_SLOT_CHEST; bEquipped = (GetItemInSlot(nSlot,oPC) == oItem); } if(iTeam == 1) { int nColor = 62; object oNew = CopyItem(oItem, IPGetIPWorkContainer()); DestroyObject(oItem); oItem = IPDyeArmor(oNew,nColorType, nColor); DelayCommand(0.01f,FinishDyeScript(oPC,oItem,bEquipped,nSlot)); } else if(iTeam == 2) { int nColor = 63; object oNew = CopyItem(oItem, IPGetIPWorkContainer()); DestroyObject(oItem); oItem = IPDyeArmor(oNew,nColorType, nColor); DelayCommand(0.01f,FinishDyeScript(oPC,oItem,bEquipped,nSlot)); } } } et voila le script de x2_s2_dyearmor : NWScript :
//:///////////////////////// ///////////////////// //:: Dye Item Spellscript //:: x2_s2_dyearmor //:: Copyright (c) 2003 Bioware Corp. //:///////////////////////// //////////////////// /* Spellscript for all Dye: Material Spells Some Notes: The color of the dye is taken from the last two letters of the item's tag The colortype which to change (cloth1, cloth2, leather1, ...) is determined by the spell ID Restrictions: - you cannot dye armor in combat - you can only dye armor && helmets - you can only dye items in your inventory - the IPWork container (see x2_inc_itemprop) must be set up for this to work properly */ //:///////////////////////// //////////////////// //:: Created By: Georg Zoeller //:: Created On: 2003-05-10 //:///////////////////////// //////////////////// #include "x2_inc_itemprop" // Maps the Spell ID to the appropriate ITEM_APPR_ARMOR_COLOR_* constant int GetApprArmorColorFromSpellID(int nID) { switch (nID) { case 648 : return ITEM_APPR_ARMOR_COLOR_CLOTH1; case 649 : return ITEM_APPR_ARMOR_COLOR_CLOTH2; case 650 : return ITEM_APPR_ARMOR_COLOR_LEATHER1; case 651 : return ITEM_APPR_ARMOR_COLOR_LEATHER2; case 652 : return ITEM_APPR_ARMOR_COLOR_METAL1; case 653 : return ITEM_APPR_ARMOR_COLOR_METAL2; } return 0; } void FinishDyeScript(object oPC, object oTarget, int bEquipped, int nSlot) { // Move the armor back from the IP Container object oNew = CopyItem(oTarget, oPC); DestroyObject(oTarget); //---------------------------- ------------------------------ ------------------ // We need to remove all temporary item properties here //---------------------------- ------------------------------ ------------------ IPRemoveAllItemProperties(oNew,DURATION_TYPE_TEMPORARY); // Reequip armor if it was equipped before if (bEquipped) { AssignCommand(oPC,ClearAllActions(TRUE)); AssignCommand(oPC,ActionEquipItem(oNew,nSlot)); } } void main() { // declare major variables object oItem = GetSpellCastItem(); // The "dye" item that cast the spell object oPC = OBJECT_SELF; // the user of the item object oTarget = GetSpellTargetObject(); string sTag = GetStringLowerCase(GetTag(oItem)); // Determine the color to edit from the spell ID int nColorType = GetApprArmorColorFromSpellID(GetSpellId()); if (GetIsInCombat(oPC)) // abort if in combat { FloatingTextStrRefOnCreature(83352,oPC); //"This item cannot be used in combat" return; } if ( GetObjectType(oTarget) != OBJECT_TYPE_ITEM || oTarget == OBJECT_INVALID) { FloatingTextStrRefOnCreature(83353,oPC); //"Invalid Target, must select armor or helmet" return; } int nBase = GetBaseItemType(oTarget); if ( nBase != BASE_ITEM_ARMOR && nBase != BASE_ITEM_HELMET ) { FloatingTextStrRefOnCreature(83353,oPC); //"Invalid Target, must select armor or helmet" return; } if (GetItemPossessor(oTarget) != oPC) { FloatingTextStrRefOnCreature(83354,oPC); //"target must be in inventory" return; } // save if the item was equipped before the process int bEquipped; int nSlot; if (nBase == BASE_ITEM_HELMET ) { nSlot = INVENTORY_SLOT_HEAD; bEquipped = (GetItemInSlot(nSlot,oPC) == oTarget); } else { nSlot = INVENTORY_SLOT_CHEST; bEquipped = (GetItemInSlot(nSlot,oPC) == oTarget); } //determine the color to edit with from the last two letters of the items tag int nColor = StringToInt(GetStringRight(GetTag(oItem),2)); // move the item into the IP work container object oNew = CopyItem(oTarget, IPGetIPWorkContainer()); DestroyObject(oTarget); // Dye the armor oTarget = IPDyeArmor(oNew,nColorType, nColor); DelayCommand(0.01f,FinishDyeScript(oPC,oTarget,bEquipped,nSlot)); } Where is the bug? The bug is in the kitchen _________________ [http] |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
NWScript :
#include "x2_inc_itemprop" int GetTeamColorForType(int nType, int nTeam) { int bTeam = (nTeam == 1); switch (nType) { case ITEM_APPR_ARMOR_COLOR_CLOTH1 : case ITEM_APPR_ARMOR_COLOR_LEATHER1 : case ITEM_APPR_ARMOR_COLOR_METAL1 : return (bTeam) ? 62 : 63 ; break; case ITEM_APPR_ARMOR_COLOR_CLOTH2 : case ITEM_APPR_ARMOR_COLOR_LEATHER2 : return (bTeam) ? 47 : 52; break; case ITEM_APPR_ARMOR_COLOR_METAL2 : return (bTeam) ? 32 : 24; break; } return 1; } void FinishDyeScript(object oPC, object oTarget, int bEquipped, int nSlot) { // Move the armor back from the IP Container SetLocalInt(oTarget, "TEMPDYE", TRUE); object oNew = CopyItem(oTarget, oPC,TRUE); DestroyObject(oTarget); //---------------------------- ------------------------------ ------------------ // We need to remove all temporary item properties here //---------------------------- ------------------------------ ------------------ IPRemoveAllItemProperties(oNew,DURATION_TYPE_TEMPORARY); // Reequip armor if it was equipped before if (bEquipped) { AssignCommand(oPC,ClearAllActions(TRUE)); AssignCommand(oPC,ActionEquipItem(oNew,nSlot)); } } void main() { object oItem = GetModuleItemAcquired(); //SetIdentified(oItem,TRUE); if (GetLocalInt(oItem, "TEMPDYE")) { DeleteLocalInt(oItem, "TEMPDYE"); return; } //if (! GetLocalInt(GetModule(), "LOADED")) return; object oPC = GetModuleItemAcquiredBy(); int iTeam = GetLocalInt(oPC, "team"); int nBase = GetBaseItemType(oItem); int nSlot; int bEquipped; /*if(nBase == BASE_ITEM_ARMOR && nBase == BASE_ITEM_HELMET) { */ //int nColorType = GetApprArmorColorFromSpellID(G etSpellId()); if (nBase == BASE_ITEM_HELMET ) { nSlot = INVENTORY_SLOT_HEAD; bEquipped = (GetItemInSlot(nSlot,oPC) == oItem); } else if (nBase == BASE_ITEM_ARMOR) { nSlot = INVENTORY_SLOT_CHEST; bEquipped = (GetItemInSlot(nSlot,oPC) == oItem); } else return; int i, nColor; object oNew; for (i = 0; i<ITEM_APPR_ARMOR_NUM_COLORS; i++) { nColor = GetTeamColorForType(i, iTeam); //PrintString(GetName(oItem) + " couleur : " + IntToString(nColor) + " team : " +IntToString(iTeam)); oNew = CopyItem(oItem, IPGetIPWorkContainer(), TRUE); DestroyObject(oItem); oItem = IPDyeArmor(oNew, i , nColor); } DelayCommand(0.01f,FinishDyeScript(oPC,oItem,bEquipped,nSlot)); } Trop la classe ^^ Mais que je te vois plus dire que t'as fait ton module tout seul ^^ |
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
Hey ! Et en plus t'as mis un titre explicite !!
_________________ » Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine » 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Super, je vais voir si ça marche! ^^
Citation : Mais que je te vois plus dire que t'as fait ton module tout seul ^^ Ta vraiment de la chance que j'ai remarqué ça. Et t'inquiète pas, mon module vous remercie tous même si il est pas finit, mais j'ai la je le recommence de A à Z, je te prévien que maintenant me faut un traducteur, je vais essayé de le mettre aussi en anglais
Citation : Hey ! Et en plus t'as mis un titre explicite !! lol_________________ [http] |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Leger probleme.... ton script me fait crash NWN.. Lors du chargement du module a la fin de la barre, plus aucune action
_________________ [http] |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Ah désolé. Il faut que tu places un plaçable de tag "x2_plc_ipbox" (c'est bien en minuscules) sur le module. Indestructible et avec inventaire, de préférence inaccessible.
Ca m'a fait la même chose au début... EDIT : et bon là le script marche, mais il déconne un peu lors de la connection d'un joueur, il va se retrouver à poil, faut je pense le faire uniquement pour les objets qu'il ramasse, pas pour ceux qu'il a a la connection (au debut du script de teinture, tu vérifies si le joueur a une variable sur lui sinon return, et dans le OnClientEnter, tu mets un delaycommand assez court pour fixer la variable sur le joueur, comme ça ses objets qu'il a a la connection ne sont pas traités, c'est mieux.) Re EDIT : Quoi que, en fait il suffit de virer le ClearAllActions de la fonction FinishDyeScript() et il remete bien son armure et son casque. |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
|
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Théoriquement ça marche bien chez un marchand aussi. T'as essayé ?
|
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Sith, il faut rajoute :
NWScript :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.
Sinon tout le monde est bleu blanc rouge noire _________________ [http] |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Je pense pas, le OnAcquire se déclanche que pour les joueurs, donc la verif est déjà faite.
|
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Sith, enfaite, je t'ai envoyer un MP disant que j'avais un probleme sur le style des casque (ça revenez a leur état normal) bein la je viens de voir que enfaite ça fait pas que ça !!!!! ça enleve les bonnus . Help! j'ai pas envie, de j'ai pas envie de, d'enlever ton script!!!!!!!!!!!!!!!!!!!!!!!!! HELP
_________________ [http] |
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