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


  Page 1 sur 2 ¤ Aller à la page 1, 2  Suivante

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Devilon Bersek
Ecuyer
Inscrit le: 13 Sep 2004
Messages: 59
Localisation: Certainement dans une forge...sinon a Beaune
Répondre en citant
Posté le : 02/02/2005 02:35:58 Sujet du message : Une histoire de cuisson

bien le bonjour, je souhaiterais resoudre un petit probleme et je pense pouvoir trouver de l'aide ici ! Very Happy

voilà, je voudrais utiliser un feu de camp pour mettre de la viande crue dedans, refermer, et en ressortir de la viande cuite.

j'ai fait un script (avec un editeur) et ça marche, mais j'arrive a le faire avec un seul type de viande crue...

voilà mon script, surement trop complexe d'ailleurs Embarassed

NWScript :
int lsn=1;
//lsstype=2

void SetItemLocals()
{
SetLocalString(OBJECT_SELF, "lsn1", "ration"); //resref de mon objet final (viande cuite)
SetLocalInt(OBJECT_SELF, "lsc_ration", 1);
SetLocalString(OBJECT_SELF, "lsi1_ration", "ATS_R_BCAT_N_MEAT");//tag de mon composant (viande crue)
SetLocalInt(OBJECT_SELF, "lss_ration", -10);
SetLocalInt(OBJECT_SELF, "lsv_ration", -10);

}

void CreateGold(object oTarget, int nAmount)
{
CreateItemOnObject("nw_it_gold001", oTarget, nAmount);
}

void main()
{
object oOwner=OBJECT_SELF;

if (!GetLocalInt(OBJECT_SELF, "lsvar_set"))
{
SetItemLocals();
SetLocalInt(OBJECT_SELF, "lsvar_set", TRUE);
}

if (lsn==0) return;

object oItem;
int bOkay, nGold, nCount, nNum, nLoop, nLoops, nHasGold, nVis;
string sCur, sReq;

for (nLoop=1; nLoop<=lsn; nLoop++)
  {
  sCur=GetLocalString(OBJECT_SELF, "lsn"+IntToString(nLoop));

  nNum=GetLocalInt(OBJECT_SELF, "lsc_"+sCur);

  for (nLoops=1; nLoops<=nNum; nLoops++)
      {

      sReq=GetLocalString(OBJECT_SELF, "lsi"+IntToString(nLoops)+"_"+sCur);
      if (GetStringLeft(sReq, 8)==" gold ")
        {
        nGold=StringToInt(GetStringRight(sReq, GetStringLength(sReq)-8));
        if (GetGold(oOwner)>=nGold) nCount++;

        }
      else if (GetItemPossessedBy(oOwner, sReq)!=OBJECT_INVALID)
        {
        SetLocalObject(OBJECT_SELF, "ls__"+IntToString(nLoops), GetItemPossessedBy(oOwner, sReq));

        nCount++;
        }
      }

  if (GetLocalInt(OBJECT_SELF, "lss_"+sCur)==-10) bOkay=TRUE;
  else if (GetLastSpell()==GetLocalInt(OBJECT_SELF, "lss_"+sCur)) bOkay=TRUE;
  else bOkay=FALSE;

  if (bOkay && (nCount==nNum)) bOkay=TRUE;
  else bOkay=FALSE;
  if (bOkay==TRUE)
      {

      if (nGold>0)
      {
      nHasGold=GetGold(oOwner);
      DestroyObject(GetItemPossessedBy(oOwner, "NW_IT_GOLD001"));
      DelayCommand(0.2, CreateGold(oOwner, nHasGold-nGold));
      }
      for (nLoops=1; nLoops<=nNum; nLoops++)
        {
        oItem=GetLocalObject(OBJECT_SELF, "ls__"+IntToString(nLoops));
        DestroyObject(oItem);
        }
      CreateItemOnObject(sCur, oOwner);
      int nVis=GetLocalInt(OBJECT_SELF, "lsv_"+sCur);
      if (nVis!=-10) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(nVis), oOwner);
      }

  oItem=OBJECT_INVALID;
  bOkay=FALSE;
  nGold=0;
  nCount=0;
  sCur="";
  sReq="";
  nNum=0;
  }
}
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.


j'ai en fait une dizaine de viandes crues differentes, et je voudrais qu'elles me donnent toutes un seul type de viande cuite (mon resref "ration")

donc celui ci marche mais avec un seul type de viande crue, et je ne vois pas comment mettre mes autres viandes crues ici...je commence a etre moins clair ! Embarassed

voilà, si quelqu'un pouvais m'aider, j'aprecierais vraiment, merci d'avance ! Laughing
_________________
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
 
Laxam
Légende vivante
Inscrit le: 12 Avr 2004
Messages: 425
Localisation: Lyon
Répondre en citant
Posté le : 02/02/2005 09:42:46 Sujet du message :

Ton script me paraît en effet bien compliqué, j'ai pas tout compris d'ailleurs (il est vrai que j'ai pas trop creusé non plus). Mais pour ton problème :

Si tous tes types de viande crue ont le même tag et que tu récupère l'objet "viande_cru" par le tag, il n'y a pas de raison pour que ça marche pas, non ?
_________________
Mon site NWN nouvelle version et mon module Boisperdu en ligne ! Et maintenant un FORUM
La première version française de la doc du NPC Activities (version 2.0)
 
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 : 02/02/2005 11:40:12 Sujet du message :

oui, mais le probleme justement c'est qu'elles n'ont pas le meme tag, et je ne peux pas les changer car is servent a d'autres aplications....voilà pourquoi je suis bloqué Very Happy

il est compliqué oui, je l'ai fait avec un editeur de script sur le modele 'blacksmith'
et il y a une histoire de PO qui neme sert pas du tout, j'ai essayé d'en supprimer, mais je ne compile plus apres, alors je l'ai laissé tel quel ! Embarassed
_________________
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
 
Laxam
Légende vivante
Inscrit le: 12 Avr 2004
Messages: 425
Localisation: Lyon
Répondre en citant
Posté le : 02/02/2005 12:57:28 Sujet du message :

Bon, une idée comme ça, au lieu d'essayer de faire un script compliqué, pourquoi ne pas passer par un dialogue ? Du genre :

Dans le OnUse du feu, tu mets un script qui lance le dialogue du feu (dialogue qui se place dans un des onglets, n'ayant pas le jeu sous la main, je ne peux te dire où exactement).

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.


Et dans le dialogue :

Citation :

[PROPRIETAIRE] Quel beau feu bien chaud !
- "Et si je faisais cuir ce beau roti" (condition d'exécution 1)
[PROPRIETAIRE] "Ma viande est cuite" (action conséquente 1)
- "Et si je faisais cuir ce lapin" (condition d'exécution 2)
...
- "Si j'ai de la viande à faire cuir, je reviendrai ici"
condition d'éxécution 1 : utilise l'assistant de script pour vérifier que le joueur a bien le roti cru.
action conséquente 1 : utilise l'assisatant de script pour supprimer le roti cru et donner le roti cuit.

Voilà, ce ne serait pas mieux ?

Sinon sur la base de ton script, il faudrait récuperer le tag de l'objet placé dans le feu (il doit bien y avoir une fonction pour ça du genre GetTag mais il faut bien identifier l'objet placé dans le feu (là je sais pas trop, peut-être une fonction du genre GetNextItemInInventory) et vérifier si le tag fait partie de la liste des 10 viandes crues autorisée, si c'est le cas, on détruit l'objet et on crée la viande cuite... Un peu compliquer et très simple à faire via le dialogue.

Ca te va ?
_________________
Mon site NWN nouvelle version et mon module Boisperdu en ligne ! Et maintenant un FORUM
La première version française de la doc du NPC Activities (version 2.0)
 
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 : 02/02/2005 13:14:01 Sujet du message :

oui, merci, je vais regarder ça, ça va peut etre aller. Very Happy

mais si quelqu'un peut m'aider pour le faire sans dialoque, qu'il le dise, j'en serais ravi ! Wink

en tout cas merci pour le coup de main Very Happy
_________________
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
 
Klemmth
Seigneur
Inscrit le: 26 Juin 2004
Messages: 176
Localisation: france
Répondre en citant
Posté le : 02/02/2005 13:36:06 Sujet du message :

Sans dialogue :


NWScript :
void main()
{
  int nCount = 0;
  string sRation = "ration"; //resref de l'objet produit
  string sViande1 = "tag_viande_1";
  string sViande2 = "tag_viande_2";
  string sViande3 = "tag_viande_3";
  string sViande4 = "tag_viande_4";
  string sViande5 = "tag_viande_5";
  string sViande6 = "tag_viande_6";
  string sViande7 = "tag_viande_7";
  string sViande8 = "tag_viande_8";
  string sViande9 = "tag_viande_9";
  string sViande10 = "tag_viande_10";
  object oCreateur = OBJECT_SELF;
  object oItem = GetFirstItemInInventory( oCreateur );
  int nLoop;

  while ( GetIsObjectValid( oItem ) )
  {
    if ( ( GetTag( oItem ) == sViande1 ) || ( GetTag( oItem ) == sViande2 ) || ( GetTag( oItem ) == sViande3 ) || ( GetTag( oItem ) == sViande4 ) || ( GetTag( oItem ) == sViande5 ) || ( GetTag( oItem ) == sViande6 ) || ( GetTag( oItem ) == sViande7 ) || ( GetTag( oItem ) == sViande8 ) || ( GetTag( oItem ) == sViande9 ) || ( GetTag( oItem ) == sViande10 ) )
    {
      DestroyObject( oItem, 0.0 );
      nCount++;
    }
    oItem = GetNextItemInInventory( oCreateur );
  }

  for( nLoop=0; nLoop<nCount; nLoop++ )
  {
    CreateItemOnObject( sRation, oCreateur );
  }
}
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 Voir le profil de l'utilisateur Envoyer un message privé 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 : 02/02/2005 16:48:47 Sujet du message :

ah, merci bien, j'essaierais ça, mais je dois dire que le dialogue a aussi un certain charme.je trouve par ce script une façon plus rp...on met sa viande, on discute autour du feu, et on se sert, en tout cas merci a vous deux ! vous m'aidez grandement Wink
_________________
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
 
Devilon Bersek
Ecuyer
Inscrit le: 13 Sep 2004
Messages: 59
Localisation: Certainement dans une forge...sinon a Beaune
Répondre en citant
Posté le : 08/02/2005 02:37:16 Sujet du message :

bon, excusez moi de faire le Boulet ! , mais je voudrais mettre un DelayCommand pour simuler le temps de cuisson. j'ai fait plusieurs essais, et ça marche pas, faut dire je sais pas comment parametrer un delai... bref je vous montre ce que j'ai fait, si quelqu'un peut m'aider, merci d'avance

NWScript :
void main()
{
  int nCount = 0;
  string sRation = "ration"; //resref de l'objet produit
  string sViande1 = "ATS_R_BADG_N_MEAT";
  string sViande2 = "ATS_R_DEER_N_MEAT";
  string sViande3 = "ATS_R_WSTA_N_MEAT";
  string sViande4 = "ATS_R_BBAT_N_MEAT";
  string sViande5 = "ATS_R_BCAT_N_MEAT";
  string sViande6 = "ATS_R_CCAT_N_MEAT";
  string sViande7 = "ATS_R_COUG_N_MEAT";
  string sViande8 = "ATS_R_WWOL_N_MEAT";
  string sViande9 = "ATS_R_BEAR_N_MEAT";
  string sViande10 = "ATS_R_BLAB_N_MEAT";
  string sViande11 = "ATS_R_POLB_N_MEAT";
  object oCreateur = OBJECT_SELF;
  object oItem = GetFirstItemInInventory( oCreateur );
  int nLoop;

  while ( GetIsObjectValid( oItem ) )
  {
    if ( ( GetTag( oItem ) == sViande1 ) || ( GetTag( oItem ) == sViande2 ) || ( GetTag( oItem ) == sViande3 ) || ( GetTag( oItem ) == sViande4 ) || ( GetTag( oItem ) == sViande5 ) || ( GetTag( oItem ) == sViande6 ) || ( GetTag( oItem ) == sViande7 ) || ( GetTag( oItem ) == sViande8 ) || ( GetTag( oItem ) == sViande9 ) || ( GetTag( oItem ) == sViande10 ) || ( GetTag( oItem ) == sViande11 ) )
    {
      DestroyObject( oItem, 0.0 );
      nCount++;
    }
    oItem = GetNextItemInInventory( oCreateur );
  }

  for( nLoop=0; nLoop<nCount; nLoop++ )
  {
    CreateItemOnObject( sRation, oCreateur );
  }
  DelayCommand(6.0f,ExecuteScript(sRation,oCreateur));
}
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.


a mon avis j'ai tout faux dans la commande que j'ai ecrite(genre je demande executescript, mais je mets sRation...je suis paumé)....mais bon, si vous pouvez me montrer un bonne version Embarassed

merci a vous
_________________
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
 
Klemmth
Seigneur
Inscrit le: 26 Juin 2004
Messages: 176
Localisation: france
Répondre en citant
Posté le : 08/02/2005 09:14:07 Sujet du message :

NWScript :
void CreateItemOnObject2( string sResRef, object oTarget )
{
  CreateItemOnObject( sResRef, oTarget );
}



void main()
{
  int nCount = 0;
  string sRation = "ration"; //resref de l'objet produit
  string sViande1 = "ATS_R_BADG_N_MEAT";
  string sViande2 = "ATS_R_DEER_N_MEAT";
  string sViande3 = "ATS_R_WSTA_N_MEAT";
  string sViande4 = "ATS_R_BBAT_N_MEAT";
  string sViande5 = "ATS_R_BCAT_N_MEAT";
  string sViande6 = "ATS_R_CCAT_N_MEAT";
  string sViande7 = "ATS_R_COUG_N_MEAT";
  string sViande8 = "ATS_R_WWOL_N_MEAT";
  string sViande9 = "ATS_R_BEAR_N_MEAT";
  string sViande10 = "ATS_R_BLAB_N_MEAT";
  string sViande11 = "ATS_R_POLB_N_MEAT";
  object oCreateur = OBJECT_SELF;
  object oItem = GetFirstItemInInventory( oCreateur );
  int nLoop;

  while ( GetIsObjectValid( oItem ) )
  {
    if ( ( GetTag( oItem ) == sViande1 ) || ( GetTag( oItem ) == sViande2 ) || ( GetTag( oItem ) == sViande3 ) || ( GetTag( oItem ) == sViande4 ) || ( GetTag( oItem ) == sViande5 ) || ( GetTag( oItem ) == sViande6 ) || ( GetTag( oItem ) == sViande7 ) || ( GetTag( oItem ) == sViande8 ) || ( GetTag( oItem ) == sViande9 ) || ( GetTag( oItem ) == sViande10 ) || ( GetTag( oItem ) == sViande11 ) )
    {
      DestroyObject( oItem, 0.0 );
      nCount++;
    }
    oItem = GetNextItemInInventory( oCreateur );
  }

  for( nLoop=0; nLoop<nCount; nLoop++ )
  {
    DelayCommand( 6.0, CreateItemOnObject2( sRation, oCreateur ) );
  }
}
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 Voir le profil de l'utilisateur Envoyer un message privé 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 : 08/02/2005 11:38:23 Sujet du message :

bonjour et merci pour cette reponse rapide. bon j'etais vraiment loin du compte, j'avais pas mis de void suplementaire...

je viens de l'essayer, ça marche merci, mais y a-t-il possibilité de retarder l'ensemble, je veux dire la destruction au meme delai que la creation, voila, merci d'avance...( je sais, desolé d'etre un Boulet ! Embarassed )
_________________
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
 
Laxam
Légende vivante
Inscrit le: 12 Avr 2004
Messages: 425
Localisation: Lyon
Répondre en citant
Posté le : 08/02/2005 17:21:11 Sujet du message :

Bien sur, il suffit d'ajouter un DelayCommand devant ton DestroyObject() comme cela est fait avec le CreateItemOnObject2.
_________________
Mon site NWN nouvelle version et mon module Boisperdu en ligne ! Et maintenant un FORUM
La première version française de la doc du NPC Activities (version 2.0)
 
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 : 08/02/2005 17:32:37 Sujet du message :

ok, merci beaucoup !!! Very Happy
_________________
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
 
Devilon Bersek
Ecuyer
Inscrit le: 13 Sep 2004
Messages: 59
Localisation: Certainement dans une forge...sinon a Beaune
Répondre en citant
Posté le : 08/02/2005 17:34:31 Sujet du message :

ok, merci beaucoup !!! Very Happy

euh, il va falloir que je refasse un void DestroyObject aussi ?

desolé, je suis pas tres doué lol

PS: desolé pour le double post

rePS: ma question est nulle, je Arrow

merci d'effacer mon dernier post Embarassed
_________________
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
 
Laxam
Légende vivante
Inscrit le: 12 Avr 2004
Messages: 425
Localisation: Lyon
Répondre en citant
Posté le : 08/02/2005 20:56:57 Sujet du message :

Non pas la peine.

En fait le DelayCommand prend en paramètre un float pour le temps et une action, CreateObject n'est pas considéré comme une action, c'est pourquoi on passe par une fonction de création qu'on appelle ensuite dans le DelayCommand car la fonction est considérée comme une action.
Par contre le DestroyObject est bien considéré comme une action, tu peux donc mettre directement :
DelayCommand(6.0, DestroyObject(ton_objet_a_detruire);
_________________
Mon site NWN nouvelle version et mon module Boisperdu en ligne ! Et maintenant un FORUM
La première version française de la doc du NPC Activities (version 2.0)
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Klemmth
Seigneur
Inscrit le: 26 Juin 2004
Messages: 176
Localisation: france
Répondre en citant
Posté le : 08/02/2005 21:01:08 Sujet du message :

rectification :

DelayCommand(6.0, DestroyObject(ton_objet_a_detruire));

Wink
_________________
...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé 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 : 09/02/2005 12:16:55 Sujet du message :

oui, merci, pour le code j'avais trouvé, mais j'ai tendance a parler avant de reflechir Very Happy

par contre merci pour l'explication ! Wink

a bientot
_________________
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
 
Devilon Bersek
Ecuyer
Inscrit le: 13 Sep 2004
Messages: 59
Localisation: Certainement dans une forge...sinon a Beaune
Répondre en citant
Posté le : 12/02/2005 16:47:53 Sujet du message :

bonjour, je viens de prendre ce modele de script pour une autre application...j'ai veriffié mon ResRef mais il ne le crée pas, alors que mes objets eux sontbien detruits...je vous laisse le code, mais je vois franchement pas, pour moi ça viens du resref, mais il est bon....
NWScript :
void CreateItemOnObject2( string sResRef, object oTarget )
{
  CreateItemOnObject( sResRef, oTarget );
}



void main()
{
  int nCount = 0;
  string sCuir = "it_cmat_leath001"; //resref de l'objet produit
  string sPeau1 = "ATS_R_BADG_N_PEL";
  string sPeau2 = "ATS_R_DEER_N_PEL";
  string sPeau3 = "ATS_R_WSTA_N_PEL";
  string sPeau4 = "ATS_R_BBAT_N_PEL";
  string sPeau5 = "ATS_R_BCAT_N_PEL";
  string sPeau6 = "ATS_R_CCAT_N_PEL";
  string sPeau7 = "ATS_R_WWOL_N_PEL";
  string sPeau8 = "ATS_R_BEAR_N_PEL";
  string sPeau9 = "ATS_R_BLAB_N_PEL";
  string sPeau10 = "ATS_R_POLB_N_PEL";
  object oCreateur = OBJECT_SELF;
  object oItem = GetFirstItemInInventory( oCreateur );
  int nLoop;

  while ( GetIsObjectValid( oItem ) )
  {
    if ( ( GetTag( oItem ) == sPeau1 ) || ( GetTag( oItem ) == sPeau2 ) || ( GetTag( oItem ) == sPeau3 ) || ( GetTag( oItem ) == sPeau4 ) || ( GetTag( oItem ) == sPeau5 ) || ( GetTag( oItem ) == sPeau6 ) || ( GetTag( oItem ) == sPeau7 ) || ( GetTag( oItem ) == sPeau8 ) || ( GetTag( oItem ) == sPeau9 ) || ( GetTag( oItem ) == sPeau10 ))
    {
      DelayCommand(6.0, DestroyObject( oItem, 0.0 ));
      nCount++;
    }
    oItem = GetNextItemInInventory( oCreateur );
  }

  for( nLoop=0; nLoop<nCount; nLoop++ )
  {
    DelayCommand( 6.0, CreateItemOnObject2( sCuir, oCreateur ) );
  }
}
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à, j'ai essayé avec un autre ResRef, ça marche, si quelqu'un sait pourquoi ça ne marche pas avec celui là ! (c'est un item craftable d'HotU, cuir) merci d'avance
_________________
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
 
Fantilir
Chevalier
Inscrit le: 25 Fév 2004
Messages: 80
Répondre en citant
Posté le : 12/02/2005 19:15:40 Sujet du message :

Tu serais pas un scripteur de CTM toi par le plus pur des hasard ? Shocked
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé 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 : 12/02/2005 20:43:19 Sujet du message :

CTM ? non, desolé

bon, j'ai recuperé le tag au lieu du resref et ça marche Confused

a bientot
_________________
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
 
Devilon Bersek
Ecuyer
Inscrit le: 13 Sep 2004
Messages: 59
Localisation: Certainement dans une forge...sinon a Beaune
Répondre en citant
Posté le : 13/02/2005 01:40:43 Sujet du message :

bon, j'en remets une couche ! Very Happy

voilà, sur la meme base, est-il possible de demander selon le composant, un produit particulier, car j'ai essayeé quelquechose qui me parraissait logique, mais ça ne marche pas...je vous montre
NWScript :
void CreateItemOnObject2( string sTag, object oTarget )
{
  CreateItemOnObject( sTag, oTarget );
}



void main()
{
  int nCount = 0;
  string sBarre1 = "x2_it_cmat_iron"; //Tag de l'objet produit
  string sBarre2 = "x2_it_cmat_mith";
  string sBarre3 = "x2_it_cmat_adam";
  string sMinerai1 = "ATS_R_ORE1_N_IRO";
  string sMinerai2 = "ATS_R_ORE1_N_MIT";
  string sMinerai3 = "ATS_R_ORE1_N_ADA";
  object oCreateur = OBJECT_SELF;
  object oItem = GetFirstItemInInventory( oCreateur );
  int nLoop;

  while ( GetIsObjectValid( oItem ) )
  {
    if ( ( GetTag( oItem ) == sMinerai1 ))
    {
      DelayCommand(2.0, DestroyObject( oItem, 0.0 ));
      nCount++;
    }
    oItem = GetNextItemInInventory( oCreateur );
  }

  for( nLoop=0; nLoop<nCount; nLoop++ )
  {
    DelayCommand( 2.0, CreateItemOnObject2( sBarre1, oCreateur ) );
  }
{
if ( ( GetTag( oItem ) == sMinerai2 ))
    {
      DelayCommand(2.0, DestroyObject( oItem, 0.0 ));
      nCount++;
    }
    oItem = GetNextItemInInventory( oCreateur );
  }

  for( nLoop=0; nLoop<nCount; nLoop++ )
  {
    DelayCommand( 2.0, CreateItemOnObject2( sBarre2, oCreateur ) );
  }
  {
if ( ( GetTag( oItem ) == sMinerai3 ))
    {
      DelayCommand(2.0, DestroyObject( oItem, 0.0 ));
      nCount++;
    }
    oItem = GetNextItemInInventory( oCreateur );
  }

  for( nLoop=0; nLoop<nCount; nLoop++ )
  {
    DelayCommand( 2.0, CreateItemOnObject2( sBarre3, oCreateur ) );
  }

}
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à, en faisant ça, si je mets le minerai3, ça me le detruit mais je n'obtiens pas la barre 3, pareil pour le 2...par contre pour le minerai 1, ça me donne les 3 barres, donc si quelqu'un pouvait m'expliquer ! Embarassed

merci d'avance
_________________
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
 
Laxam
Légende vivante
Inscrit le: 12 Avr 2004
Messages: 425
Localisation: Lyon
Répondre en citant
Posté le : 13/02/2005 11:42:43 Sujet du message :

Perso je comprends pas bien l'intérêt de faire une première boucle pour vérifier les item puis une seconde pour créer. C'est du 1 pour 1 non ?

Moi je ferai plutôt ça :

NWScript :
void CreateItemOnObject2( string sTag, object oTarget )
{
CreateItemOnObject( sTag, oTarget );
}



void main()
{
int nCount = 0;
string sBarre1 = "x2_it_cmat_iron"; //Tag de l'objet produit
string sBarre2 = "x2_it_cmat_mith";
string sBarre3 = "x2_it_cmat_adam";
string sMinerai1 = "ATS_R_ORE1_N_IRO";
string sMinerai2 = "ATS_R_ORE1_N_MIT";
string sMinerai3 = "ATS_R_ORE1_N_ADA";
object oCreateur = OBJECT_SELF;
object oItem = GetFirstItemInInventory( oCreateur );
int nLoop;

while ( GetIsObjectValid( oItem ) )
{
if ( ( GetTag( oItem ) == sMinerai1 ))
{
DelayCommand(2.0, DestroyObject( oItem, 0.0 ));
DelayCommand( 2.0, CreateItemOnObject2( sBarre1, oCreateur ));
}
if ( ( GetTag( oItem ) == sMinerai2 ))
{
DelayCommand(2.0, DestroyObject( oItem, 0.0 ));
DelayCommand( 2.0, CreateItemOnObject2( sBarre2, oCreateur ));
}
if ( ( GetTag( oItem ) == sMinerai3 ))
{
DelayCommand(2.0, DestroyObject( oItem, 0.0 ));
DelayCommand( 2.0, CreateItemOnObject2( sBarre3, oCreateur ));
}
oItem = GetNextItemInInventory( oCreateur );
}
}
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 j'ai bien compris ce que tu veux faire, ça devrait marcher non ?
_________________
Mon site NWN nouvelle version et mon module Boisperdu en ligne ! Et maintenant un FORUM
La première version française de la doc du NPC Activities (version 2.0)
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Klemmth
Seigneur
Inscrit le: 26 Juin 2004
Messages: 176
Localisation: france
Répondre en citant
Posté le : 13/02/2005 11:51:26 Sujet du message :

voir meme

NWScript :
void CreateItemOnObject2( string sResRef, object oTarget )
{
  CreateItemOnObject( sResRef, oTarget );
}



void main()
{
  int nCount = 0;
  string sBarre1 = "x2_it_cmat_iron"; //ResRef de l'objet produit
  string sBarre2 = "x2_it_cmat_mith";
  string sBarre3 = "x2_it_cmat_adam";
  string sMinerai1 = "ATS_R_ORE1_N_IRO";
  string sMinerai2 = "ATS_R_ORE1_N_MIT";
  string sMinerai3 = "ATS_R_ORE1_N_ADA";
  object oCreateur = OBJECT_SELF;
  object oItem = GetFirstItemInInventory( oCreateur );
  int nLoop;

  while ( GetIsObjectValid( oItem ) )
  {
    if ( ( GetTag( oItem ) == sMinerai1 ))
    {
      DestroyObject( oItem, 2.0 );
      DelayCommand( 2.0, CreateItemOnObject2( sBarre1, oCreateur ));
    }
    else if ( ( GetTag( oItem ) == sMinerai2 ))
    {
      DestroyObject( oItem, 2.0 );
      DelayCommand( 2.0, CreateItemOnObject2( sBarre2, oCreateur ));
    }
    else if ( ( GetTag( oItem ) == sMinerai3 ))
    {
      DestroyObject( oItem, 2.0 );
      DelayCommand( 2.0, CreateItemOnObject2( sBarre3, oCreateur ));
    }
    oItem = GetNextItemInInventory( oCreateur );
  }
}
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 Voir le profil de l'utilisateur Envoyer un message privé 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 : 13/02/2005 12:00:20 Sujet du message :

j'avais essayer avec les else if, mais il ne me compilais pas, en me disant else without if chaipukoi...bref, vu que j'avais la boucle 3 fois, ça devait gener pas mal, je vais essayer ça, merci a vous Wink
_________________
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
 
Laxam
Légende vivante
Inscrit le: 12 Avr 2004
Messages: 425
Localisation: Lyon
Répondre en citant
Posté le : 13/02/2005 20:38:05 Sujet du message :

Moi je ne suis pas un fervent des elseif, ça complique toujours un peu et ça fait exactement la même chose que la série de if (dans le cas présent évidemment), le seul gain c'est la performance en temps d'exécution mais là on s'en moque un peu...
_________________
Mon site NWN nouvelle version et mon module Boisperdu en ligne ! Et maintenant un FORUM
La première version française de la doc du NPC Activities (version 2.0)
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Klemmth
Seigneur
Inscrit le: 26 Juin 2004
Messages: 176
Localisation: france
Répondre en citant
Posté le : 13/02/2005 20:40:03 Sujet du message :

il est quand même mieux d'utiliser les else, car ca evite que plusieurs conditions se chevauchent malencontreusement.
_________________
...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Montrer les messages depuis :
Page 1 sur 2 ¤ Aller à la page 1, 2  Suivante


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 122.058ms