La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 23/09/2024 08:32:37


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Seth de Sombrelune
Seigneur
Inscrit le: 10 Jan 2005
Messages: 156
Répondre en citant
Posté le : 10/01/2005 18:14:22 Sujet du message : Retirer l'equipement d'un personage

Bonjour à vous.

Je cherche à retirer tout son equipement à un PJ, mais je ne veux pas detruire cet equipement, juste qu'il se retrouve dans l'inventaire du joueur.
Apres recherche sur les scripts proposé ici, j'en avais trouver un qui me convenais, mais il detruit les items du personnage. J'ai donc pensé ajouté la commande "ActionUnEquipItem".
Mais cela ne marche pas.
Voici a titre d'exemple le script terminé, il est dans le "Action concequente" d'un dialogue :

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.


Voilà si quelqun a une réponse à me donner, le script compile mais ne fonctionne pas.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
BlackMagik
Acolyte
Inscrit le: 02 Jan 2005
Messages: 22
Répondre en citant
Posté le : 10/01/2005 18:34:50 Sujet du message :

C'est normal que cela ne fonctionne pas il faut assigner la commande ActionUnequipItem au PJ.
NWScript :

void main()
{

object oPC=GetPCSpeaker();


AssignCommand(oPc, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_ARMS, oPC)));
AssignCommand(oPc, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_ARROWS, oPC)));
AssignCommand(oPc, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_BELT, oPC)));
AssignCommand(oPc, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_BOLTS, oPC)));
AssignCommand(oPc, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_BOOTS, oPC)));
AssignCommand(oPc, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_BULLETS, oPC)));
AssignCommand(oPc, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_CARMOUR, oPC)));
AssignCommand(oPc, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_CHEST, oPC)));
AssignCommand(oPc, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_CLOAK, oPC)));
AssignCommand(oPc, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_CWEAPON_B, oPC)));
AssignCommand(oPc, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oPC)));
AssignCommand(oPc, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oPC)));
AssignCommand(oPc, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_HEAD, oPC)));
AssignCommand(oPc, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)));
AssignCommand(oPc, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_LEFTRING, oPC)));
AssignCommand(oPc, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_NECK, oPC)));
AssignCommand(oPc, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)));
AssignCommand(oPc, ActionUnequipItem(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.


Je pense que comme ça ça marchera, essaie Smile
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Seth de Sombrelune
Seigneur
Inscrit le: 10 Jan 2005
Messages: 156
Répondre en citant
Posté le : 10/01/2005 20:42:24 Sujet du message :

Ca, c'est Youpi !

hum.. ça fait trop longtemps que je n'ai plus touché un script.... Comme quoi, c'est pas comme le velo, ça s'oublie vite !

Encore Merci !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Athanor salamander
Légende vivante
Inscrit le: 01 Avr 2003
Messages: 306
Localisation: Ecole du Script
Répondre en citant
Posté le : 10/01/2005 21:58:36 Sujet du message :

Comme ça ça marche aussi et je pense que c même bcp plus dynamique :
NWScript :

void main()
{
object oPC=GetPCSpeaker();
int iSlotParam; //indice de la constante


for (iSlotParam=0;iSlotParam<16;iSlotParam++){
AssignCommand(oPC, ActionUnequipItem(GetItemInSlot(iSlotParam, 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.


Explication rapide :
les constantes INVENTORY_SLOT_* sont des valeurs allant de 0 à 15 et définies dans les 2da.
Donc n'utilisez ces constantes que si vous ne voulez déséquipper qu'un ou deux items.
Si par contre vous voulez déséquiper le joueur entier, passez par une boucle avec une vvariable de 0 à 15. Laughing
_________________
Atha, Artisan Scripteur.
meet the most beautiful woman in the world
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
S@ntoS
Seigneur
Inscrit le: 12 Déc 2004
Messages: 169
Localisation: J'aimerais bien le savoir.
Répondre en citant
Posté le : 11/01/2005 21:18:38 Sujet du message :

Salut,

Très intéressant, ce script. Petite question de newb : j'ai une zone hanté par un mauvais génie qui s'amuse a déséquiper les PJs tous les « X » rounds. Que donnerait le script ? Et où le placer, dans le « OnHearthBeat » de la zone ?

Merci d'avance.

@+. F€r. Surprised
_________________
L'oiseau vole, le serpent rampe et l'homme... heu, j'en sais rien. Surprised
Le RP, cé vrémant tro z'injuste !Calimero
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Athanor salamander
Légende vivante
Inscrit le: 01 Avr 2003
Messages: 306
Localisation: Ecole du Script
Répondre en citant
Posté le : 12/01/2005 09:09:50 Sujet du message :

faut déjà que ton Jinn soit dans la zone. Mettons sont tag est : "JinnDesequippeur"
Ensuite mettre ce script, et sur l'event onheartbeat et sur l'event onuserdef de la zone du jinn.
Vous remarquerez que j'ai pas mis les scripts sur le jinn, ça allège son IA au cas où il ait à se battre.

NWScript :
float fTimeBetween = 3.0;
void main(){
object oJinn = GetObjectByTag("JinnDesequippeur");
if (oJinn == OBJECT_INVALID || GetArea(oJinn) != OBJECT_SELF) return; // pas de jinn, pas de stripteese Razz
object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, oJinn);
int nCalledBy = GetUserDefinedEventNumber();
if (nCalledBy == EVENT_HEARTBEAT){
      if (GetLocalInt(OBJECT_SELF, "HeartBtOK") == 0){
            SetLocalInt(OBJECT_SELF, "HeartBtOK", 1);
            SignalEvent(OBJECT_SELF, EventUserDefined(2000));
                }
      else return;
        }
else if (nCalledBy == 2000){
      if (GetLocalInt(OBJECT_SELF, "HeartBtOK") == 1){
          // y a t'il des PJs dans la salle ??
          if (GetIsObjectValid(oPC)){
              int i;
              while (GetIsObjectValid(oPC)){
                  int iSlotParam; //indice de la constante
                 
                  for (iSlotParam=0;iSlotParam<16;iSlotParam++){
                      AssignCommand(oPC, ActionUnequipItem(GetItemInSlot(iSlotParam, oPC)));
                            }
                  i++;
                  oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, oJinn, i);
                    }
              DelayCommand(fTimeBetween, SignalEvent(OBJECT_SELF, EventUserDefined(2000)));
              }
          // sinon abandonner le show
          else {
                SetLocalInt(OBJECT_SELF, "HeartBtOK", 0);
                return;
            }
        }
    }
}
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 j'ai écrit ce script à la volée sans NWScript à coté, s'il y a des fautes, synthaxes ou autre, merci soit bah de corriger, soit de m'envoyer un MP pour que je corrige les erreurs (pas avant ce soir hein Razz )
_________________
Atha, Artisan Scripteur.
meet the most beautiful woman in the world
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
S@ntoS
Seigneur
Inscrit le: 12 Déc 2004
Messages: 169
Localisation: J'aimerais bien le savoir.
Répondre en citant
Posté le : 12/01/2005 09:38:41 Sujet du message :

Salut,
Effectivement pas avant ce soir. Je suis au boulot et je viens de parcourir ton script, impressionnant. Je le test dés que j'arrive chez moi. Question de newb : ne risque-t-il pas d'entraîner des conflits où des lourdeurs avec d'autres scripts présents dans le « OnHearthBeat » du module (Script de fatigue entre autres).

Merci et à ce soir donc.
@+.f€r. Surprised

PS : Très bonne initiative pour l'IA. Le mauvais génie aura effectivement à se battre.
_________________
L'oiseau vole, le serpent rampe et l'homme... heu, j'en sais rien. Surprised
Le RP, cé vrémant tro z'injuste !Calimero
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Athanor salamander
Légende vivante
Inscrit le: 01 Avr 2003
Messages: 306
Localisation: Ecole du Script
Répondre en citant
Posté le : 12/01/2005 13:08:08 Sujet du message :

J'ai parlé du onheartbeat et du onuserdefined de la zone et non pas du module.
Maintenant, si tu gères autre chose dans ces events là oui il se peut qu'il y ait quelques lourdeurs, mais uniquement vraiment s'il s'agit de gros scripts.
_________________
Atha, Artisan Scripteur.
meet the most beautiful woman in the world
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
S@ntoS
Seigneur
Inscrit le: 12 Déc 2004
Messages: 169
Localisation: J'aimerais bien le savoir.
Répondre en citant
Posté le : 12/01/2005 17:25:32 Sujet du message :

Salut Athanor,

Je viens de tester ton script. Je l'ai bien mis dans le « OnHearthBeat » et le « OnUserDefined » de la zone concernée. J'ai bien rajouté une créature dans cette zone avec le tag précisé dans le script. Je n'ai pas constaté de conflits, ni de lourdeurs, par contre le script ne fonctionne pas. Ma créature est de nature « hostile », cela pose-t-il un problème. Au bout de combien de temps le PJ devrait-il être déséquipé ? 3 secondes ?

Merci d'avance pour les réponses.
@+. F€r.Surprised
_________________
L'oiseau vole, le serpent rampe et l'homme... heu, j'en sais rien. Surprised
Le RP, cé vrémant tro z'injuste !Calimero
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Athanor salamander
Légende vivante
Inscrit le: 01 Avr 2003
Messages: 306
Localisation: Ecole du Script
Répondre en citant
Posté le : 12/01/2005 18:04:48 Sujet du message :

Je veux toujours croire que ça marche alors qu'en fait apparemment ça ne marche pas bref !
Change la ligne :
NWScript :
if (nCalledBy == EVENT_HEARTBEAT){
/* 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.

en :
NWScript :
if (nCalledBy != 2000){
/* 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.


Si ça marche pas, je ferai mes propres tests. Je dois forcément avoir merdé qqs part. Embarassed
_________________
Atha, Artisan Scripteur.
meet the most beautiful woman in the world
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
S@ntoS
Seigneur
Inscrit le: 12 Déc 2004
Messages: 169
Localisation: J'aimerais bien le savoir.
Répondre en citant
Posté le : 12/01/2005 20:42:27 Sujet du message :

Félicitation Athanor,

Ton script fonctionne à merveille. Je le poste pour ceux que ça intéresse.

Merci beaucoup.
@+. F€r. Surprised

NWScript :



float fTimeBetween = 1.0;
void main(){
object oJinn = GetObjectByTag("oDesequippeur");
if (oJinn == OBJECT_INVALID || GetArea(oJinn) != OBJECT_SELF) return; // pas de jinn, pas de stripteese Razz
object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, oJinn);
int nCalledBy = GetUserDefinedEventNumber();
if (nCalledBy != 2000){
      if (GetLocalInt(OBJECT_SELF, "HeartBtOK") == 0){
            SetLocalInt(OBJECT_SELF, "HeartBtOK", 1);
            SignalEvent(OBJECT_SELF, EventUserDefined(2000));
                }
      else return;
        }
else if (nCalledBy == 2000){
      if (GetLocalInt(OBJECT_SELF, "HeartBtOK") == 1){
          // y a t'il des PJs dans la salle ??
          if (GetIsObjectValid(oPC)){
              int i;
              while (GetIsObjectValid(oPC)){
                  int iSlotParam; //indice de la constante
                 
                  for (iSlotParam=0;iSlotParam<16;iSlotParam++){
                      AssignCommand(oPC, ActionUnequipItem(GetItemInSlot(iSlotParam, oPC)));
                            }
                  i++;
                  oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, oJinn, i);
                    }
              DelayCommand(fTimeBetween, SignalEvent(OBJECT_SELF, EventUserDefined(2000)));
              }
          // sinon abandonner le show
          else {
                SetLocalInt(OBJECT_SELF, "HeartBtOK", 0);
                return;
            }
        }
    }
}
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.

_________________
L'oiseau vole, le serpent rampe et l'homme... heu, j'en sais rien. Surprised
Le RP, cé vrémant tro z'injuste !Calimero
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Athanor salamander
Légende vivante
Inscrit le: 01 Avr 2003
Messages: 306
Localisation: Ecole du Script
Répondre en citant
Posté le : 12/01/2005 22:04:07 Sujet du message :

Bah de rien Embarassed
Le tout c'est aussi de le comprendre hein Laughing:lol
_________________
Atha, Artisan Scripteur.
meet the most beautiful woman in the world
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger 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 75.326ms