// OnUnEquip du module \\
void main()
{
object oLast = GetPCItemLastUnequipped();
object oPC = GetPCItemLastUnequippedBy();
int iItemBase = GetBaseItemType(oLast);
int iEquipCape = GetLocalInt(oPC, "EquipCape");
object oEquipA = GetItemInSlot(INVENTORY_SLOT_CHEST, oPC);
object oEquipC = GetItemInSlot(INVENTORY_SLOT_CLOAK, oPC);
if(iEquipCape == TRUE)
{
SetLocalInt(oPC, "EquipCape", FALSE);
if(iItemBase == BASE_ITEM_CLOAK)
{
string sResRef = GetResRef(oEquipA);
object oCape = CreateItemOnObject(sResRef, oPC, 1);
SetIdentified(oCape, TRUE);
AssignCommand(oPC, ActionEquipItem(oCape, INVENTORY_SLOT_CHEST));
DestroyObject(oEquipA);
}
if((iItemBase == BASE_ITEM_ARMOR) && (oEquipC != OBJECT_INVALID))
{
string sResRef = GetResRef(oLast);
object oCape = CreateItemOnObject(sResRef, oPC, 1);
DestroyObject(oLast);
}
DelayCommand(0.1, SetLocalInt(oPC, "EquipCape", TRUE));
}
}
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 09:46:31
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 |
Macadam Grand Chevalier Messages: 132 |
NWScript : //fonction qui equipe la cape lorsqu'on la vet void EquipCap (object oPC, object oItem); //fonction qui desequipe la cape lorsqu'on l'enleve void DesEquipCap (object oPC, object oItem); ////////////////////////////// void EquipCap (object oPC, object oItem) { string sText; string sTag = GetTag(oItem); object oArmur=GetItemInSlot(INVENTORY_SLOT_CHEST, oPC); int iOldApp = GetItemAppearance(oArmur, ITEM_APPR_TYPE_ARMOR_MODEL, ITEM_APPR_ARMOR_MODEL_NECK); int iOldValue=0; object oCape = GetItemInSlot(INVENTORY_SLOT_CLOAK, oPC); AssignCommand(oPC, ClearAllActions()); if (sTag != GetTag(oCape)) return; if(iOldApp!=112) { //Mettre la cape iOldValue=112; sText = "*Met une cape*"; } object oNewItem = CopyItemAndModify(oArmur, ITEM_APPR_TYPE_ARMOR_MODEL, ITEM_APPR_ARMOR_MODEL_NECK, iOldValue, TRUE); AssignCommand(oPC, ActionUnequipItem(oArmur)); DestroyObject(oArmur, 0.1); DelayCommand(0.3,AssignCommand(oPC, ActionEquipItem(oNewItem, INVENTORY_SLOT_CHEST))); DelayCommand(0.5, AssignCommand(oPC, SpeakString(sText))); } ////////////////////////////// ///// void DesEquipCap (object oPC, object oItem) { string sText; string sTag = GetTag(oItem); object oCape = GetItemInSlot(INVENTORY_SLOT_CLOAK, oPC); object oArmur=GetItemInSlot(INVENTORY_SLOT_CHEST, oPC); int iOldApp = GetItemAppearance(oArmur, ITEM_APPR_TYPE_ARMOR_MODEL, ITEM_APPR_ARMOR_MODEL_NECK); int iOldValue=0; if (sTag != GetTag(oCape)) return; AssignCommand(oPC, ClearAllActions()); if(iOldApp!=0) { //Enlever la cape iOldValue=0; sText = "*Enleve sa cape*"; } object oNewItem = CopyItemAndModify(oArmur, ITEM_APPR_TYPE_ARMOR_MODEL, ITEM_APPR_ARMOR_MODEL_NECK, iOldValue, TRUE); AssignCommand(oPC, ActionUnequipItem(oArmur)); DestroyObject(oArmur, 0.1); DelayCommand(0.3,AssignCommand(oPC, ActionEquipItem(oNewItem, INVENTORY_SLOT_CHEST))); DelayCommand(0.5, AssignCommand(oPC, SpeakString(sText))); } |
Revenir en haut | |
Enki Légende vivante Messages: 432 |
Salut !
Très intéressant Macadam, je suis en train d'essayer de faire la même chose avec des gants pour pouvoir trancher la main d'un joueur et éventuellement la remplacer par une main mécanique. Merci pour toutes ces fonctions ! |
Revenir en haut | |
Macadam Grand Chevalier Messages: 132 |
de rien
oui en fait pour des gants ou autre il suffit de changer la constante ITEM_APPR_ARMOR_MODEL_NECK par celle qui correspond et de changer le numero par la reference de l'apparence qui convient (le iOldValue de mon script, 112 pour le modele de cape) et ça modifierait l'armure en fonction |
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
N'hésite pas à ajouter ton script dans le sujet en post-it "Vos scripts" ; c'est toujours intéressant de le conserver quelque part.
_________________ » 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 | |
edisnotdead Grand Chevalier Messages: 132 |
il est bien de marquer l auteur aussi http://www.deepblack.be/forum/viewtopic.php?t=739
qui est spidermac si je ne m abuse celui si a été posté a 15heur et plus et l autre a 14 heur et plus |
Revenir en haut | |
Macadam Grand Chevalier Messages: 132 |
lol spidermac = macadam ^^
j'ai deux pseudo dsl, autant pour moi:lol |
Revenir en haut | |
edisnotdead Grand Chevalier Messages: 132 |
oki au temp pour moi ^^
|
Revenir en haut | |
Argyl Grand Sage du Conseil Messages: 704 |
Question d'un gros nul en script ou plutôt demande de confirmation :
Si j'ai bien compris, cette fonction permet de "déséquiper/rééquiper" un slot d'armure (dont une constante est définie) par une autre partie d'armure. Genre : je change la main 001 par la main 008 et cela sans que l'armure (ensemble des bodyparts de la nouvelle armure) pré-existe en tant qe telle dans la palette ? C'est en quelque sorte ce que fait la compétence Craft_armor, non ? Comment fais-tu le lien entre la valeur que prend la constante et le numéro du bodypart, le n° de la ligne de la partie en question dans son 2da ? Et enfin est-ce que cela peut fonctionner pour la tête/casque ? |
Revenir en haut | |
Starkanas Grand Chevalier Messages: 110 |
En fait moi si j'ai bien compris, ça fait le même effet que pour les carquois de la DLA.
Si tu t'équipes d'une cape, ton armure se modifie automatiquement pour avoir une cape visible. Juste pour un peu plus de réalisme quoi Pour les autres question, désolé j'ai rien compris , il se fait tard ... _________________ LSDA 3ème Âge : Serveur RôlePlay basé sur les écrits de J.R.R.Tolkien ... |
Revenir en haut | |
Ivellios Légende vivante Messages: 447 Localisation: Poitiers |
C'est le même système que le craft, et pour les numéros c'est ceux du model duhak pack (enfin je sais que le système que j'avais fait, j'avais pris les numéro du CEP ça marchait), ça donnait un truc du genre :
112 - Cape Simple : Tissu 1 113 - Cape Simple ; Tissu 2 154, 155, 156 les autres capes. Pour le système je le post mais maintenant ça doit être obselète. Ce message est un spoiler, et risque de vous informer de choses que vous auriez dû apprendre par vous même (fin d'un jeu, film, etc). À vos risques et périls (ludiques), vous pouvez le voir en cliquant sur cet avertissement.
Spoiler : Ce message est un spoiler, et risque de vous informer de choses que vous auriez dû apprendre par vous même (fin d'un jeu, film, etc). À vos risques et périls (ludiques), vous pouvez le voir en cliquant sur cet avertissement. Spoiler : // OnEquip du module \\
#include "x2_inc_switches" #include "x2_inc_intweapon" void main() { /* declarations */ object oLast = GetPCItemLastEquipped(); object oPC = GetPCItemLastEquippedBy(); object oEquipA = GetItemInSlot(INVENTORY_SLOT_CHEST, oPC); object oEquipC = GetItemInSlot(INVENTORY_SLOT_CLOAK, oPC); string sLeftA = GetStringLeft(GetTag(oLast), 5); string sLeftC = GetStringLeft(GetTag(oEquipC), 5); int iItemBase = GetBaseItemType(oLast); int iEquipCape = GetLocalInt(oPC, "EquipCape"); if(iEquipCape == TRUE) { SetLocalInt(oPC, "EquipCape", FALSE); /* si le dernier objet equiper est une cape */ if(iItemBase == BASE_ITEM_CLOAK) { if(sLeftA == "CapS_") // Cape Simple { object oCape = CopyItemAndModify(oEquipA, ITEM_APPR_TYPE_ARMOR_MODEL, ITEM_APPR_ARMOR_MODEL_NECK, 112, TRUE); AssignCommand(oPC, ActionEquipItem(oCape, INVENTORY_SLOT_CHEST)); DestroyObject(oEquipA); } else if(sLeftA == "CapA_") // Cape Appliquée { object oCape = CopyItemAndModify(oEquipA, ITEM_APPR_TYPE_ARMOR_MODEL, ITEM_APPR_ARMOR_MODEL_NECK, 154, TRUE); AssignCommand(oPC, ActionEquipItem(oCape, INVENTORY_SLOT_CHEST)); DestroyObject(oEquipA); } else if(sLeftA == "CapL_") // Cape Large { object oCape = CopyItemAndModify(oEquipA, ITEM_APPR_TYPE_ARMOR_MODEL, ITEM_APPR_ARMOR_MODEL_NECK, 155, TRUE); AssignCommand(oPC, ActionEquipItem(oCape, INVENTORY_SLOT_CHEST)); DestroyObject(oEquipA); } else if(sLeftA == "CapO_") // Cape Ornée { object oCape = CopyItemAndModify(oEquipA, ITEM_APPR_TYPE_ARMOR_MODEL, ITEM_APPR_ARMOR_MODEL_NECK, 156, TRUE); AssignCommand(oPC, ActionEquipItem(oCape, INVENTORY_SLOT_CHEST)); DestroyObject(oEquipA); } } else if((iItemBase == BASE_ITEM_ARMOR) && (oEquipC != OBJECT_INVALID)) { if(sLeftC == "CapS_") { object oCape = CopyItemAndModify(oLast, ITEM_APPR_TYPE_ARMOR_MODEL, ITEM_APPR_ARMOR_MODEL_NECK, 154, TRUE); AssignCommand(oPC, ActionEquipItem(oCape, INVENTORY_SLOT_CHEST)); DestroyObject(oLast); } else if(sLeftC == "CapA_") { object oCape = CopyItemAndModify(oLast, ITEM_APPR_TYPE_ARMOR_MODEL, ITEM_APPR_ARMOR_MODEL_NECK, 155, TRUE); AssignCommand(oPC, ActionEquipItem(oCape, INVENTORY_SLOT_CHEST)); DestroyObject(oLast); } else if(sLeftC == "CapL_") { object oCape = CopyItemAndModify(oLast, ITEM_APPR_TYPE_ARMOR_MODEL, ITEM_APPR_ARMOR_MODEL_NECK, 156, TRUE); AssignCommand(oPC, ActionEquipItem(oCape, INVENTORY_SLOT_CHEST)); DestroyObject(oLast); } else if(sLeftC == "CapO_") { object oCape = CopyItemAndModify(oLast, ITEM_APPR_TYPE_ARMOR_MODEL, ITEM_APPR_ARMOR_MODEL_NECK, 112, TRUE); AssignCommand(oPC, ActionEquipItem(oCape, INVENTORY_SLOT_CHEST)); DestroyObject(oLast); } } DelayCommand(0.1, SetLocalInt(oPC, "EquipCape", TRUE)); } } _________________ Scripts, systèmes, fonctions,... c'est par ici... Pyjama pour castor, une vocation, un avenir sûr |
Revenir en haut | |
edisnotdead Grand Chevalier Messages: 132 |
juste un truc tu devrai mettre un test que si il n a pas d armure sur lui il ne puisse pas metre sa cape avec un petit message "vous ne pouvez attachez votre cape a votre armure car vous n en portez pas ^^"
car la si il s equippe de sa cape puis aprés de son armure ca fais quoi ?^^ et que si il desequipe son armure ca lui enleve la cape aussi et sa desequippe la cape en meme temp |
Revenir en haut | |
Argyl Grand Sage du Conseil Messages: 704 |
Pourquoi ne pourrait-on pas mettre une cape lorsqu'on est nu ?
De plus, si ça marche comme le système de craft_armor, il faut être équipé d'une armure pour que cela fonctionne (je vois mal comment modifier une armure inexistante). Par contre, vu que c'est l'armure avec cape que tu déséquipes (et si cela se comporte comme le craft_armor), tu enlèveras tout, mais en la remettant tu la remettras automatiquement avec la cape, à moins qu'il y est une ligne qui annule la cape vers un neck000 que je n'aurai pas vu dans le script. Sinon, c'est super sympa comme script et j'ai plein d'usage en tête pour un intense gaspillage de ressource |
Revenir en haut | |
Ivellios Légende vivante Messages: 447 Localisation: Poitiers |
Dans mes vieux scripts, je crois que je gère ça ^^.
Après pourquoi pas créer une armure bidon pour mettre une cape même nu. (le mieu serait tout de même de les mettre en vfx voilà ^^) _________________ Scripts, systèmes, fonctions,... c'est par ici... Pyjama pour castor, une vocation, un avenir sûr |
Revenir en haut | |
Argyl Grand Sage du Conseil Messages: 704 |
Nan, le vfx c'est pas bien
Et puis pour l'armure type nu, je l'ai déjà fait pour une autre raison et c'est une simple copie renumérotation des pSRP_<bodypart>.mdl et plt et déclarations dans les 2da. C'est pas la mer à boire pour y arriver. |
Revenir en haut | |
edisnotdead Grand Chevalier Messages: 132 |
ouep mais ca fai un hak argyl
la soluce de ivellios et pas mal le seul truc c est les tatouages |
Revenir en haut | |
Argyl Grand Sage du Conseil Messages: 704 |
Existe-t-il actuellement 1 seul module sans hak ? et on n'oublie pas que le CEP est un ramassis de Haks
|
Revenir en haut | |
Enki Légende vivante Messages: 432 |
Oui, tous ceux qui utilisent l'override !
Enki > |
Revenir en haut | |
Argyl Grand Sage du Conseil Messages: 704 |
*Donne 2 - 3 coups de hache à Enki afin qu'il retrouve ses esprits*
|
Revenir en haut | |
edisnotdead Grand Chevalier Messages: 132 |
c est pas si con en fait ce que dit enky
explication la plus part du temp il faut mettre un hak car on ragoute des model 3d mais les model 3d on les a dejas la on les utilise juste pour autre chose donc si on arrive a ajouter des pointeur sur des model existant bein c est jouable ,mais pour ca faut que les 2da soient ceux du serveur ^^ un peu comme celui du polymorphe en fait ^^ |
Revenir en haut | |
BenGorre Légende vivante Messages: 301 |
Argyl> pourquoi les vfx c'est pas bien pour toi?
Sinon, il faudra forcemment un hak puisqu'il n'y pas de capes dans le jeu de base. _________________ La mort n'est rien seul le fait de mourir est terrible Henry Fielding 1745 Le serveur Filandre a été stoppé pour le moment, je on travail à la conversion vers NWN2. |
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