La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 02/06/2024 02:12:46


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Drako
Novice
Inscrit le: 15 Oct 2003
Messages: 8
Répondre en citant
Posté le : 24/07/2004 18:53:25 Sujet du message : Comment tous leurs enlever ?

J'aimerais faire commencer mes joueurs sans aucun matériel (à poil quoi !) comment faire ?
_________________
Il est des gens qui observent les rêgles de l'honneur comme on observe les étoiles
De loin !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Konrad
Grand Maître Chanteur du Conseil
Inscrit le: 30 Sep 2002
Messages: 1258
Localisation: Empire d'Halöven
Répondre en citant
Posté le : 24/07/2004 21:06:26 Sujet du message :

Tiens, j'ai fais ça sur mon module L5A, ça peut t'aider :

NWScript :

    object oUser = GetEnteringObject();
    object oItem = GetFirstItemInInventory(oUser);
    object oCoffre = GetObjectByTag("kofr_start");
    int i;
    int iGold = GetGold(oUser);

if ((GetName(oUser) == "Titisa Kitsuki")
  && (GetLocalInt(oUser, "ENTER") == 0) /*&& (GetIsDM(oUser) == TRUE)*/)
  {
  CreateItemOnObject("katana", oUser);
  SetLocalInt(oUser, "ENTER", 1);
//  SetXP (oUser, 50000);
  }

else if (GetIsPC(oUser)
&& (GetLocalInt(oUser, "ENTER") == 0))
    {

if (GetItemInSlot(INVENTORY_SLOT_CHEST, oUser) == OBJECT_INVALID) CreateItemOnObject("cloth024", oCoffre);
    while (GetIsObjectValid(oItem))
            {
            AssignCommand(oCoffre, ActionTakeItem(oItem, oUser));
            oItem = GetNextItemInInventory(oUser);
            }

            for(i = 0 ; i <= NUM_INVENTORY_SLOTS ; i++)
            {
            AssignCommand(oCoffre, ActionTakeItem(oItem, oUser));
            oItem = GetItemInSlot(i,oUser);
            }
AssignCommand(oCoffre, TakeGoldFromCreature(iGold, oUser));

/* warning: 1 unclosed block {} */
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.



Le truc c'est que moi, je met tout l'équipement dans un coffre "kofr_start" mais après rien ne t'empèche de détruire le coffre...
_________________
Le site du Module Dragon Noir
Le groupe du Module L5A - L'ombre et la Lumière
Crimson Skies
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Drako
Novice
Inscrit le: 15 Oct 2003
Messages: 8
Répondre en citant
Posté le : 26/07/2004 00:57:25 Sujet du message :

Alors je vais m'expliquer, je suis un débutant et je suis nul en prog donc, je te remerci pour le script, mais tu m'aiderais si tu me disait genre ou tu met ça ?
_________________
Il est des gens qui observent les rêgles de l'honneur comme on observe les étoiles
De loin !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Konrad
Grand Maître Chanteur du Conseil
Inscrit le: 30 Sep 2002
Messages: 1258
Localisation: Empire d'Halöven
Répondre en citant
Posté le : 26/07/2004 09:36:18 Sujet du message :

C'est vrai qu'il est un peut brute de fonderie là vu que j'ai fait un copier coller directe de mon module. Embarassed

Enfaite tu va dans les propriétés de la première zone de ton module, là où arrive les PJ.
Dans le champ "Onenter" se trouve le script que se déclanche à l'entrée d'un objet dans la zone (un joueur par exemple)

Tu colles donc ce script à cette endroit mais faut que tu adaptes en fonction de ton module.
Il faut que dans ta zone il y ai un placable avec inventaire qui ai le TAG 'kofr_start'

NWScript :


main()
{
// Recuperer l'objet enrant dans la zone
object oUser = GetEnteringObject();

// Trouver le premier objet dans l'inventaire de l'objet entrant
object oItem = GetFirstItemInInventory(oUser);

// Trouver l'objet 'kofr_start'
    object oCoffre = GetObjectByTag("kofr_start");

    int i;
    int iGold = GetGold(oUser);


if (GetIsPC(oUser)
&& (GetLocalInt(oUser, "ENTER") == 0))
    {

if (GetItemInSlot(INVENTORY_SLOT_CHEST, oUser) == OBJECT_INVALID) CreateItemOnObject("cloth024", oCoffre);
    while (GetIsObjectValid(oItem))
            {
            AssignCommand(oCoffre, ActionTakeItem(oItem, oUser));
            oItem = GetNextItemInInventory(oUser);
            }

            for(i = 0 ; i <= NUM_INVENTORY_SLOTS ; i++)
            {
            AssignCommand(oCoffre, ActionTakeItem(oItem, oUser));
            oItem = GetItemInSlot(i,oUser);
            }
AssignCommand(oCoffre, TakeGoldFromCreature(iGold, oUser));

//Si tu veux que ses objets disparaisse, il suffit d'ajouter cette ligne :
// DestroyObject(oCoffre);


}


/* warning: 1 unclosed block {} */
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.



Dans mon module le kofr_start et verrouillé et impossible a ouvrir. Tu peux aussi le mettre dans un endoit inaccessible.
_________________
Le site du Module Dragon Noir
Le groupe du Module L5A - L'ombre et la Lumière
Crimson Skies
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Drako
Novice
Inscrit le: 15 Oct 2003
Messages: 8
Répondre en citant
Posté le : 26/07/2004 14:28:33 Sujet du message :

merci:grin:
_________________
Il est des gens qui observent les rêgles de l'honneur comme on observe les étoiles
De loin !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Drako
Novice
Inscrit le: 15 Oct 2003
Messages: 8
Répondre en citant
Posté le : 26/07/2004 15:00:08 Sujet du message :

heu, y as pas un end à mettre à la fin ? parceque je n'arrive pas compiler le script
_________________
Il est des gens qui observent les rêgles de l'honneur comme on observe les étoiles
De loin !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Drako
Novice
Inscrit le: 15 Oct 2003
Messages: 8
Répondre en citant
Posté le : 26/07/2004 15:09:10 Sujet du message :

26/07/2004 16:08:02 : Erreur. 'sc_001' n’est pas compilé.
sc_001.nss(41): ERREUR : UNEXPECTED END COMPOUND STATEMENT

voila mon message d'erreur
_________________
Il est des gens qui observent les rêgles de l'honneur comme on observe les étoiles
De loin !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Laxam
Légende vivante
Inscrit le: 12 Avr 2004
Messages: 425
Localisation: Lyon
Répondre en citant
Posté le : 26/07/2004 18:31:42 Sujet du message :

 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Elanam Alarune
Novice
Inscrit le: 25 Juil 2004
Messages: 19
Localisation: Dans les Bas Fonds de Kemper, là où les korrigans dansent la gigue
Répondre en citant
Posté le : 27/07/2004 17:16:27 Sujet du message :

Bonjour à vous tous.
Une autre manière consiste à détruire un par un tous les objets de l'inventaire. Cela permet de choisir quels objets enlever et quels objets garder.


NWScript :

void main ()
//supprime tous l'equipement

object oPC = GetEnteringObject ();
if (! GetIsPC(oPC)) return ;

object oItem;

oItem = GetItemInSlot(INVENTORY_SLOT_HEAD, oPC);

if (GetIsObjectValid(oItem))
  DestroyObject(oItem);

oItem = GetItemInSlot(INVENTORY_SLOT_ARMS, oPC);

if (GetIsObjectValid(oItem))
  DestroyObject(oItem);
oItem = GetItemInSlot(INVENTORY_SLOT_ARROWS, oPC);

if (GetIsObjectValid(oItem))
  DestroyObject(oItem);

  oItem = GetItemInSlot(INVENTORY_SLOT_BELT, oPC);

if (GetIsObjectValid(oItem))
  DestroyObject(oItem);

oItem = GetItemInSlot(INVENTORY_SLOT_BOOTS, oPC);

if (GetIsObjectValid(oItem))
  DestroyObject(oItem);

    oItem = GetItemInSlot(INVENTORY_SLOT_BULLETS, oPC);

if (GetIsObjectValid(oItem))
  DestroyObject(oItem);

oItem = GetItemInSlot(INVENTORY_SLOT_CARMOUR, oPC);

if (GetIsObjectValid(oItem))
  DestroyObject(oItem);

oItem = GetItemInSlot(INVENTORY_SLOT_CHEST, oPC);

if (GetIsObjectValid(oItem))
  DestroyObject(oItem);

  oItem = GetItemInSlot(INVENTORY_SLOT_CLOAK, oPC);

if (GetIsObjectValid(oItem))
  DestroyObject(oItem);

oItem = GetItemInSlot(INVENTORY_SLOT_CWEAPON_B, oPC);

if (GetIsObjectValid(oItem))
  DestroyObject(oItem);

  oItem = GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oPC);

if (GetIsObjectValid(oItem))
  DestroyObject(oItem);

oItem = GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oPC);

if (GetIsObjectValid(oItem))
  DestroyObject(oItem);

oItem = GetItemInSlot(INVENTORY_SLOT_HEAD, oPC);

if (GetIsObjectValid(oItem))
  DestroyObject(oItem);

oItem = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC);

if (GetIsObjectValid(oItem))
  DestroyObject(oItem);

oItem = GetItemInSlot(INVENTORY_SLOT_LEFTRING, oPC);

if (GetIsObjectValid(oItem))
  DestroyObject(oItem);

oItem = GetItemInSlot(INVENTORY_SLOT_NECK, oPC);

if (GetIsObjectValid(oItem))
  DestroyObject(oItem);

oItem = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC);

if (GetIsObjectValid(oItem))
  DestroyObject(oItem);

oItem = GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oPC);

if (GetIsObjectValid(oItem))
  DestroyObject(oItem);

oItem = GetFirstItemInInventory( oPC );
    while( oItem != OBJECT_INVALID )
    {
        DestroyObject( oItem );

      oItem = GetNextItemInInventory( oPC );
    }
DestroyObject(OBJECT_SELF, 1.0);


    }/* suspect block end found !*/
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.


Bon, voilà, c'est un peu contraignant mais ça te permet de choisir les objets à enlever et tu ne crées pas de coffre qu'il faut ensuite supprimer.
_________________
Nous sommes des héros, Bouh ! Les rodeurs et les hamsters, partout, content nos exploits !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
lendraste
Grand Maître Chanteur du Conseil
Inscrit le: 20 Fév 2003
Messages: 1403
Localisation: Quelque part ailleurs
Répondre en citant
Posté le : 27/07/2004 17:37:48 Sujet du message :


Elanam Alarune a écrit :
Bonjour à vous tous.
Une autre manière consiste à détruire un par un tous les objets de l'inventaire. Cela permet de choisir quels objets enlever et quels objets garder.
.../...
Bon, voilà, c'est un peu contraignant mais ça te permet de choisir les objets à enlever et tu ne crées pas de coffre qu'il faut ensuite supprimer.
Les constantes INVENTORY_SLOT_XXXXXX représentant des valeurs numériques entre 0 et 17, la solution suivante (sous forme de fonction réutilisable) est moins contraignante. Par ailleurs si on veut épargner des emplacements particuliers, il suffit d'effectuer un test sur le valeur de nCnt

NWScript :

void EmptyCreatureInventoryAndSlots(object oCreature)
{
  object oItem;
  int nCnt;
  for (nCnt=0; nCnt<=17; nCnt++)
  {
    oItem = GetItemInSlot(nCnt, oCreature);
    if (GetIsObjectValid(oItem))
    {
      DestroyObject(oItem);
    }
  }

  oItem = GetFirstItemInInventory( oCreature );
  while( oItem != OBJECT_INVALID )
  {
    DestroyObject( oItem );
    oItem = GetNextItemInInventory( oCreature );
  }
}
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.

_________________
Lendraste de Loreval
Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel.
La cité des mensonges - 1
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Numéro ICQ Ignorer l'utilisateur
 
Drako
Novice
Inscrit le: 15 Oct 2003
Messages: 8
Répondre en citant
Posté le : 27/07/2004 17:43:40 Sujet du message :

si l'accolade c'est " } " alors j'y pensé et je l'ai mis mais ça donne toujours ce message d'erreur
_________________
Il est des gens qui observent les rêgles de l'honneur comme on observe les étoiles
De loin !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Albator003
Invité


Répondre en citant
Posté le : 27/07/2004 17:55:04 Sujet du message :

Voila ce que j'utilise enfin une partie de mon OnCLientEnterModule

NWScript :

void main()
{
object item;
object oPC = GetEnteringObject(); // le joueur entrant

if (GetIsPC(oPC) && !GetIsDM(oPC))// si c'est un joueur et non un DM
{
  if(GetXP(oPC) == 0 )// si il est nouveau
  {
  item = GetFirstItemInInventory(oPC);
  while (GetIsObjectValid(item)) // boucle qui vide l'inventaire
    {
    DestroyObject(item);
    item = GetNextItemInInventory(oPC);
    }

  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));

  int nInt;
nInt=GetGold(oPC);// on prend l'or du joueur nouveau

AssignCommand(oPC, TakeGoldFromCreature(nInt, oPC, TRUE));


  item = CreateItemOnObject("vetementdedebut", oPC);
  DelayCommand(1.0,AssignCommand(oPC,ActionEquipItem(item, INVENTORY_SLOT_CHEST)));
  DelayCommand(3.0,GiveGoldToCreature(oPC,500));// on lui donne 500 Po




  GiveXPToCreature(oPC, 1); // on donne 1 xp pour identifier le joueur comme non nouveau
  }
}
}

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.
 
Revenir en haut
 
Konrad
Grand Maître Chanteur du Conseil
Inscrit le: 30 Sep 2002
Messages: 1258
Localisation: Empire d'Halöven
Répondre en citant
Posté le : 27/07/2004 18:08:17 Sujet du message :


Drako a écrit :
si l'accolade c'est " } " alors j'y pensé et je l'ai mis mais ça donne toujours ce message d'erreur
il est manque peut être plusieurs Embarassed

Les truc c'est que j'ai un peu trop épurer mon script de départ pour te montrer l'exemple car al'origine mon script met le PJ tout nue l'alonge et le fait dormir avec des petit ZZZ sur sa tête... Very Happy

Enfin, la tu as le choix avec tout ces scripts...
_________________
Le site du Module Dragon Noir
Le groupe du Module L5A - L'ombre et la Lumière
Crimson Skies
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Devilon Bersek
Ecuyer
Inscrit le: 13 Sep 2004
Messages: 59
Localisation: Certainement dans une forge...sinon a Beaune
Répondre en citant
Posté le : 01/10/2004 23:04:27 Sujet du message :

salut, bon, je souhaite faire en gros la meme chose, mais au moment de mourir, pour une mort definitive...genre je clique sur des flammes, et pof plus rien, plus d'xp, plus de po, plus d'equipement....seulement voilà, j'arrive a detruire les objets equipés, mais pas ceux de l'inventaire, j'arrive pas a inclure le "boucle de destruction" ^^

voilà mon script, un peu fouilli mais bon....
NWScript :


void RemoveXPFromParty(int nXP, object oPC, int bAllParty=TRUE)
{

if (!bAllParty)
{
nXP=(GetXP(oPC)-nXP)>=0 ? GetXP(oPC)-nXP : 0;
SetXP(oPC, nXP);
}
else
{
object oMember=GetFirstFactionMember(oPC, TRUE);

while (GetIsObjectValid(oMember))
{
nXP=(GetXP(oMember)-nXP)>=0 ? GetXP(oMember)-nXP : 0;
SetXP(oMember, nXP);
oMember=GetNextFactionMember(oPC, TRUE);
}
}
}

void main()
{

object oPC = GetLastUsedBy();

if (!GetIsPC(oPC)) return;

object oTarget;
oTarget = oPC;

effect eEffect;
eEffect = EffectDeath();

ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oTarget);

RemoveXPFromParty(999999, oPC, FALSE); //enleve xp

int nInt;
nInt=GetGold(oPC); //enleve or

AssignCommand(oPC, TakeGoldFromCreature(nInt, oPC, TRUE));

  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));


}
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.


voilà, si on peut m'aider, merci d'avance

Razz
_________________
Rien n'est grave dans la vie...sauf de la perdre...
Chroniques des Royaumes Perdus :
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Montrer les messages depuis :
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


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 68.173ms