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 01/11/2024 20:30:23
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 |
trenim Ecuyer Messages: 64 Localisation: DANS TON C** !!!! |
Posté le : 06/09/2005 18:52:07 Sujet du message : detruire l'inventaire a 1er connexion et sauver le journal
je ne trouve pas comment detruire l'invantaire d'un PJ. j'ai bien trouver comment dtruire les objet equiper, mais pour le reste...
De plus, est ce qu'il est possible de sauver les données du journal de quetes ? _________________ ON EST DES MARINES !! ON EST NAIT POUR TUER !! C'EST QUOI NOTRE METIER ? TUER TUER TUER !!! |
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
Pour détruire l'inventaire, il faut faire une boucle dans ce genre là :
NWScript : object oPC = GetEnteringObject(); object oItem = GetFirstItemInInventory(oPC); while(GetIsObjectValid(oItem)) { DestroyObject(oItem); oItem = GetNextItemInInventory(oPC); } _________________ » 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 | |
trenim Ecuyer Messages: 64 Localisation: DANS TON C** !!!! |
ok, merci, je testerais ca demain ^^
_________________ ON EST DES MARINES !! ON EST NAIT POUR TUER !! C'EST QUOI NOTRE METIER ? TUER TUER TUER !!! |
Revenir en haut | |
trenim Ecuyer Messages: 64 Localisation: DANS TON C** !!!! |
Ca ne marche pas, sur la ligne "while" il me dit : "INVALID DECLARATION TYPE"
Deplus, ca va vider l'equipement des PJs a chaque fois qu'ils vont entrer sur le serveur... _________________ ON EST DES MARINES !! ON EST NAIT POUR TUER !! C'EST QUOI NOTRE METIER ? TUER TUER TUER !!! |
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
Ben oui ça va détruire à chaque fois. Il faudrait que tu précises dans quelles conditions exactes tu souhaiterais détruire l'inventaire, je ne peux pas le deviner
Sinon chez moi ça marche très bien... As-tu bien mis ce script après le "void main()" ? Comme ceci : NWScript : void main() { object oPC = GetEnteringObject(); object oItem = GetFirstItemInInventory(oPC); while(GetIsObjectValid(oItem)) { DestroyObject(oItem); oItem = GetNextItemInInventory(oPC); } } _________________ » 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 | |
trenim Ecuyer Messages: 64 Localisation: DANS TON C** !!!! |
En fait, je voudrait vider tout l'equipement d'un joueur la premiére fois qu'il entre sur le serveur.
Pour le script, je me suis juste planter ^^ _________________ ON EST DES MARINES !! ON EST NAIT POUR TUER !! C'EST QUOI NOTRE METIER ? TUER TUER TUER !!! |
Revenir en haut | |
Seth de Sombrelune Seigneur Messages: 156 |
quand ton pj se connecte, il a 0 xp tu peu t'en servir comme condition pour lancer le script, sinon tu peu aussi essayer la variable locale mais en setcampagne (bdd)...
|
Revenir en haut | |
trenim Ecuyer Messages: 64 Localisation: DANS TON C** !!!! |
voila le script final que j'utilise :
NWScript :
void main() { object oPC = GetEnteringObject(); int oXP = GetXP(oPC); object oItem = GetFirstItemInInventory(oPC); object oItem2 = GetObjectByTag("a"); if (oXP == 0) { DestroyObject(GetItemInSlot(INVENTORY_SLOT_ARMS, oPC)); DestroyObject(GetItemInSlot(INVENTORY_SLOT_ARROWS, oPC)); DestroyObject(GetItemInSlot(INVENTORY_SLOT_BELT, oPC)); DestroyObject(GetItemInSlot(INVENTORY_SLOT_BOLTS, oPC)); DestroyObject(GetItemInSlot(INVENTORY_SLOT_BOOTS, oPC)); DestroyObject(GetItemInSlot(INVENTORY_SLOT_BULLETS, oPC)); DestroyObject(GetItemInSlot(INVENTORY_SLOT_CARMOUR, oPC)); DestroyObject(GetItemInSlot(INVENTORY_SLOT_CHEST, oPC)); DestroyObject(GetItemInSlot(INVENTORY_SLOT_CLOAK, oPC)); DestroyObject(GetItemInSlot(INVENTORY_SLOT_CWEAPON_B, oPC)); DestroyObject(GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oPC)); DestroyObject(GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oPC)); DestroyObject(GetItemInSlot(INVENTORY_SLOT_HEAD, oPC)); DestroyObject(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)); DestroyObject(GetItemInSlot(INVENTORY_SLOT_LEFTRING, oPC)); DestroyObject(GetItemInSlot(INVENTORY_SLOT_NECK, oPC)); DestroyObject(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)); DestroyObject(GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oPC)); while(GetIsObjectValid(oItem)) { DestroyObject(oItem); oItem = GetNextItemInInventory(oPC); } } } le probléme, c'est que si je veux donner un objet aux PJ, il est tout de suite detruit... _________________ ON EST DES MARINES !! ON EST NAIT POUR TUER !! C'EST QUOI NOTRE METIER ? TUER TUER TUER !!! |
Revenir en haut | |
Seth de Sombrelune Seigneur Messages: 156 |
toute les commande se font quasiment instantanément, donc quand tu donne ton item, il sera intégré aux items de la boucle destroy item. J'ai pas l'éditeur sous la main, je te suggère de temporiser le don des items que tu souhaite en utilisant un delaycomand...
|
Revenir en haut | |
Ivellios Légende vivante Messages: 447 Localisation: Poitiers |
Sinon si tu veux quelque chose avec des équipements selon la classe il y a [ça].
_________________ Scripts, systèmes, fonctions,... c'est par ici... Pyjama pour castor, une vocation, un avenir sûr |
Revenir en haut | |
BenGorre Légende vivante Messages: 301 |
Piour pas que ton objet soit detruit quand tu lui donne au debut de la partie met juste un DelayCommand() ou plus simplement tu fais un ExecuteScript() avec le nom du script qui donne des objets à la fin de ton script qui détruit. en clair il fau les faire les un apres les autres et pas en même temps je te conseil de mettre ton script qui donne les objets pour voir ce qu'on peus faire.
_________________ 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 | |
lylver Héros Messages: 274 |
Voilà une lib de fonctions qui ... fonctionnent, ajustez le délai pour les machines lentes, ActionUnequipItem ben c'est une action : c'est pas instantané.
Mettez en lib ou en tête de votre script avant void main(){} et appelez CleanThePc au moment ou vous souhaitez faire le ménage. NWScript : // Unequip for Destroy the Item in Slot void UnequipSlotItem(int iSlot, object oPC) { object oItem = GetItemInSlot(iSlot, oPC) ; if (oItem != OBJECT_INVALID) { // mieux dans ce cas que GetIsObjectValid(oItem) AssignCommand(oPC, ActionUnequipItem(oItem)) ; } } void DestroyInventory(object oPC) { object oItem = GetFirstItemInInventory(oPC); while( GetIsObjectValid(oItem) ){ DestroyObject(oItem) ; oItem = GetNextItemInInventory(oPC); } } void CleanThePc(object oPC) { int i; for( i=INVENTORY_SLOT_HEAD ; i<=INVENTORY_SLOT_CARMOUR ; i++ ){ UnequipSlotItem(i, oPC) ; } DelayCommand(0.2, DestroyInventory(oPC)); // il faut separer creation/destruction dans un script a part //create inventory //Because of timing problems this had to be moved to //its own function and delayed for 0.2 seconds. //Thanks to fendis_khan. } |
Revenir en haut | |
trenim Ecuyer Messages: 64 Localisation: DANS TON C** !!!! |
la commande DestroyInventory n'est pas reconnue par Aurora...
il n'y a pas de commande detruisant l'in ventaire, par contre, la commande ActionUnequipItem marche au poil ^^ _________________ ON EST DES MARINES !! ON EST NAIT POUR TUER !! C'EST QUOI NOTRE METIER ? TUER TUER TUER !!! |
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
La commande DestroyInventory() est une fonction écrite par Lylver juste avant de l'utiliser, donc ça devrait fonctionner.
Tu devrais faire quelques Tutoriaux sur les scripts avant de venir poser des questions, ça éviterait bien des pertes de temps (parce que c'est un peu lourd de devoir à chaque fois réexpliciter le b-a-ba). _________________ » 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 | |
lylver Héros Messages: 274 |
comme quoi faut sortir un élément de son contexte en connaissance de cause, et ce surtout pour les citations et les bouts de scripts, merci pour le commentaire que j'aurais du mettre finipe, c'était extrait d'une bibliothèque de fonction et l'ordre de codage compte.
|
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
Oui, c'est aussi pour ça que quand on répond faut essayer de se forcer à bien préciser les circonstances, car on oublie que nous aussi au début, on ne comprenait rien
Enfin ceci dit, ça ne retire en rien le fait qu'avant de venir poser une question ou dire "ça marche pas", il faut regarder un peu tout seul, faire quelques tutoriaux, ou utiliser la RECHERCHE du forum _________________ » 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 | |
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