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:28:30


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 31/07/2006 16:38:28 Sujet du message : [Resolu]Changement de couleur lors d'un recu :p

Salut.
Voila j'aurais voulu savoire comment on met des couleur sur des armures et des casques.

Enfaite dès que le joueur il obtient une armure ou un casque je voudr is qu'il change de couleur par rapport a une local. Voilà comment l'armure doit se coloré :

Cuir 1 : Blanc ou Noir
Cuir 2 : Bleu ou Rouge
Tissu 1 : Blanc ou Noir
Tissu 2 : Bleu ou Rouge
Metal 1 : Blanc ou Noir
Metal 2 : Bleu ou Rouge

Si la LocalInt(oPC, "team") est à 1 alors il est du bien (bleu/blanc), si c'est 2 alors il est mal (rouge/noir).

Merci
_________________
[http]
Dernière édition par Black Knight le 04/08/2006 09:23:49; édité 3 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 31/07/2006 16:46:32 Sujet du message :

Cherche le script des teintures (x2_s2_dyearmor completement au pif, mais dans ce genre là le nom du script, cherche "dye") ça devrait t'aider.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 31/07/2006 17:26:41 Sujet du message :

Escuse moi je n'arrive pas a comprendre le script :s le probleme c'est que je suis obliger de retagger tout mes items???? je peux pas snif Sad
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 31/07/2006 17:32:04 Sujet du message :

Non l'histoire du tag, c'est pour mettre la couleur en fonction de la teinture utilisée, c'est les items "teintures" dont le tag est important.
Tu dois avoir une fonction dans le script qui applique l'effet de la teinture, qui prend comme parametre le bout de tag (en fin de compte c'est un integer, qui correspond au numero de la couleur (de 0 à 63 ou de 1 à 64 je sais plus)). Essaye avec ça. Le tag de l'objet ciblé lui est pas modifié.

Je peux pas regarder là j'ai pas l'editeur.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 31/07/2006 17:58:59 Sujet du message :

Bon voila ce que j'ai essayer de faire :

NWScript :
#include "x2_inc_itemprop"
int GetApprArmorColorFromSpellID(int nID)
{
    switch (nID)
    {
        case 648 : return ITEM_APPR_ARMOR_COLOR_CLOTH1;
        case 649 : return ITEM_APPR_ARMOR_COLOR_CLOTH2;
        case 650 : return ITEM_APPR_ARMOR_COLOR_LEATHER1;
        case 651 : return ITEM_APPR_ARMOR_COLOR_LEATHER2;
        case 652 : return ITEM_APPR_ARMOR_COLOR_METAL1;
        case 653 : return ITEM_APPR_ARMOR_COLOR_METAL2;
    }
    return 0;
}


void FinishDyeScript(object oPC, object oTarget, int bEquipped, int nSlot)
{
object oNew = CopyItem(oTarget, oPC);
  DestroyObject(oTarget);
IPRemoveAllItemProperties(oNew,DURATION_TYPE_TEMPORARY);
if (bEquipped)
  {
    AssignCommand(oPC,ClearAllActions(TRUE));
    AssignCommand(oPC,ActionEquipItem(oNew,nSlot));
  }
}

void main()
{
object oItem = GetModuleItemAcquired();
object oPC = GetModuleItemAcquiredBy();
int iTeam = GetLocalInt(oPC, "team");
int nBase = GetBaseItemType(oItem);
int nSlot;
int bEquipped;
if(nBase == BASE_ITEM_ARMOR && nBase == BASE_ITEM_HELMET)
{
int nColorType = GetApprArmorColorFromSpellID(GetSpellId());
if (nBase == BASE_ITEM_HELMET )
{
nSlot = INVENTORY_SLOT_HEAD;
bEquipped = (GetItemInSlot(nSlot,oPC) == oItem);
}
else
{
nSlot = INVENTORY_SLOT_CHEST;
bEquipped = (GetItemInSlot(nSlot,oPC) == oItem);
}
if(iTeam == 1)
{
int nColor = 62;
object oNew = CopyItem(oItem, IPGetIPWorkContainer());
DestroyObject(oItem);
oItem = IPDyeArmor(oNew,nColorType, nColor);
DelayCommand(0.01f,FinishDyeScript(oPC,oItem,bEquipped,nSlot));
}
else if(iTeam == 2)
{
int nColor = 63;
object oNew = CopyItem(oItem, IPGetIPWorkContainer());
DestroyObject(oItem);
oItem = IPDyeArmor(oNew,nColorType, nColor);
DelayCommand(0.01f,FinishDyeScript(oPC,oItem,bEquipped,nSlot));
}
}
}
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 voila le script de x2_s2_dyearmor :

NWScript :
//:Confused///////////////////////// /////////////////////
//:: Dye Item Spellscript
//:: x2_s2_dyearmor
//:: Copyright (c) 2003 Bioware Corp.
//:Confused///////////////////////// ////////////////////
/*
    Spellscript for all Dye: Material Spells

    Some Notes:

    The color of the dye is taken from the
    last two letters of the item's tag

    The colortype which to change (cloth1, cloth2,
    leather1, ...) is determined by the spell ID

    Restrictions:
    - you cannot dye armor in combat
    - you can only dye armor && helmets
    - you can only dye items in your inventory

    - the IPWork container (see x2_inc_itemprop)
      must be set up for this to work properly

*/

//:Confused///////////////////////// ////////////////////
//:: Created By: Georg Zoeller
//:: Created On: 2003-05-10
//:Confused///////////////////////// ////////////////////
#include "x2_inc_itemprop"


// Maps the Spell ID to the appropriate ITEM_APPR_ARMOR_COLOR_* constant
int GetApprArmorColorFromSpellID(int nID)
{
    switch (nID)
    {
        case 648 : return ITEM_APPR_ARMOR_COLOR_CLOTH1;
        case 649 : return ITEM_APPR_ARMOR_COLOR_CLOTH2;
        case 650 : return ITEM_APPR_ARMOR_COLOR_LEATHER1;
        case 651 : return ITEM_APPR_ARMOR_COLOR_LEATHER2;
        case 652 : return ITEM_APPR_ARMOR_COLOR_METAL1;
        case 653 : return ITEM_APPR_ARMOR_COLOR_METAL2;
    }
    return 0;
}


void FinishDyeScript(object oPC, object oTarget, int bEquipped, int nSlot)
{
  // Move the armor back from the IP Container
  object oNew = CopyItem(oTarget, oPC);
  DestroyObject(oTarget);
  //---------------------------- ------------------------------ ------------------
  // We need to remove all temporary item properties here
  //---------------------------- ------------------------------ ------------------

  IPRemoveAllItemProperties(oNew,DURATION_TYPE_TEMPORARY);
  // Reequip armor if it was equipped before
  if (bEquipped)
  {
    AssignCommand(oPC,ClearAllActions(TRUE));
    AssignCommand(oPC,ActionEquipItem(oNew,nSlot));
  }
}

void main()
{

  // declare major variables
  object oItem = GetSpellCastItem(); // The "dye" item that cast the spell
  object oPC = OBJECT_SELF; // the user of the item
  object oTarget = GetSpellTargetObject();
  string sTag = GetStringLowerCase(GetTag(oItem));
  // Determine the color to edit from the spell ID
  int nColorType = GetApprArmorColorFromSpellID(GetSpellId());

  if (GetIsInCombat(oPC)) // abort if in combat
  {
        FloatingTextStrRefOnCreature(83352,oPC); //"This item cannot be used in combat"
        return;
  }

  if ( GetObjectType(oTarget) != OBJECT_TYPE_ITEM || oTarget == OBJECT_INVALID)
  {
    FloatingTextStrRefOnCreature(83353,oPC); //"Invalid Target, must select armor or helmet"
    return;
  }

  int nBase = GetBaseItemType(oTarget);
  if ( nBase != BASE_ITEM_ARMOR && nBase != BASE_ITEM_HELMET )
  {
    FloatingTextStrRefOnCreature(83353,oPC); //"Invalid Target, must select armor or helmet"
    return;
  }

  if (GetItemPossessor(oTarget) != oPC)
  {
      FloatingTextStrRefOnCreature(83354,oPC); //"target must be in inventory"
      return;
  }


  // save if the item was equipped before the process
  int bEquipped;
  int nSlot;
  if (nBase == BASE_ITEM_HELMET )
  {
      nSlot = INVENTORY_SLOT_HEAD;
      bEquipped = (GetItemInSlot(nSlot,oPC) == oTarget);
  }
  else
  {
      nSlot = INVENTORY_SLOT_CHEST;
      bEquipped = (GetItemInSlot(nSlot,oPC) == oTarget);
  }

  //determine the color to edit with from the last two letters of the items tag
  int nColor = StringToInt(GetStringRight(GetTag(oItem),2));


  // move the item into the IP work container
  object oNew = CopyItem(oTarget, IPGetIPWorkContainer());


  DestroyObject(oTarget);

  // Dye the armor
  oTarget = IPDyeArmor(oNew,nColorType, nColor);

  DelayCommand(0.01f,FinishDyeScript(oPC,oTarget,bEquipped,nSlot));

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


Where is the bug? The bug is in the kitchen
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 01/08/2006 00:52:28 Sujet du message :

NWScript :
#include "x2_inc_itemprop"

int GetTeamColorForType(int nType, int nTeam)
{
    int bTeam = (nTeam == 1);
    switch (nType)
    {
        case ITEM_APPR_ARMOR_COLOR_CLOTH1 :
        case ITEM_APPR_ARMOR_COLOR_LEATHER1 :
        case ITEM_APPR_ARMOR_COLOR_METAL1 : return (bTeam) ? 62 : 63 ; break;
        case ITEM_APPR_ARMOR_COLOR_CLOTH2 :
        case ITEM_APPR_ARMOR_COLOR_LEATHER2 : return (bTeam) ? 47 : 52; break;
        case ITEM_APPR_ARMOR_COLOR_METAL2 : return (bTeam) ? 32 : 24; break;
    }
    return 1;


}

void FinishDyeScript(object oPC, object oTarget, int bEquipped, int nSlot)
{
  // Move the armor back from the IP Container

  SetLocalInt(oTarget, "TEMPDYE", TRUE);
  object oNew = CopyItem(oTarget, oPC,TRUE);
  DestroyObject(oTarget);
  //---------------------------- ------------------------------ ------------------
  // We need to remove all temporary item properties here
  //---------------------------- ------------------------------ ------------------

  IPRemoveAllItemProperties(oNew,DURATION_TYPE_TEMPORARY);
  // Reequip armor if it was equipped before
  if (bEquipped)
  {
    AssignCommand(oPC,ClearAllActions(TRUE));
    AssignCommand(oPC,ActionEquipItem(oNew,nSlot));
  }
}

void main()
{
object oItem = GetModuleItemAcquired();
//SetIdentified(oItem,TRUE);
if (GetLocalInt(oItem, "TEMPDYE"))
{
    DeleteLocalInt(oItem, "TEMPDYE");
    return;

}
//if (! GetLocalInt(GetModule(), "LOADED")) return;
object oPC = GetModuleItemAcquiredBy();
int iTeam = GetLocalInt(oPC, "team");
int nBase = GetBaseItemType(oItem);
int nSlot;
int bEquipped;
/*if(nBase == BASE_ITEM_ARMOR && nBase == BASE_ITEM_HELMET)
{  */

//int nColorType = GetApprArmorColorFromSpellID(G etSpellId());
if (nBase == BASE_ITEM_HELMET )
{
    nSlot = INVENTORY_SLOT_HEAD;
    bEquipped = (GetItemInSlot(nSlot,oPC) == oItem);
}
else if (nBase == BASE_ITEM_ARMOR)
{
    nSlot = INVENTORY_SLOT_CHEST;
    bEquipped = (GetItemInSlot(nSlot,oPC) == oItem);
}
else return;

int i, nColor;
object oNew;
for (i = 0; i<ITEM_APPR_ARMOR_NUM_COLORS; i++)
{
    nColor = GetTeamColorForType(i, iTeam);
    //PrintString(GetName(oItem) + "  couleur : " + IntToString(nColor) + "  team : " +IntToString(iTeam));
    oNew = CopyItem(oItem, IPGetIPWorkContainer(), TRUE);
    DestroyObject(oItem);
    oItem = IPDyeArmor(oNew, i , nColor);
}


DelayCommand(0.01f,FinishDyeScript(oPC,oItem,bEquipped,nSlot));

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


Trop la classe ^^

Mais que je te vois plus dire que t'as fait ton module tout seul ^^
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 01/08/2006 03:06:28 Sujet du message :

Hey ! Et en plus t'as mis un titre explicite !! Laughing
_________________
» 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 Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 01/08/2006 10:10:59 Sujet du message :

Super, je vais voir si ça marche! ^^


Citation :
Mais que je te vois plus dire que t'as fait ton module tout seul ^^
Ta vraiment de la chance que j'ai remarqué ça. Et t'inquiète pas, mon module vous remercie tous même si il est pas finit, mais j'ai la je le recommence de A à Z, je te prévien que maintenant me faut un traducteur, je vais essayé de le mettre aussi en anglais Razz


Citation :
Hey ! Et en plus t'as mis un titre explicite !! Laughing
lol
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 01/08/2006 10:27:50 Sujet du message :

Leger probleme.... ton script me fait crash NWN.. Lors du chargement du module a la fin de la barre, plus aucune action Sad
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 01/08/2006 11:15:19 Sujet du message :

Ah désolé. Il faut que tu places un plaçable de tag "x2_plc_ipbox" (c'est bien en minuscules) sur le module. Indestructible et avec inventaire, de préférence inaccessible.

Ca m'a fait la même chose au début...

EDIT : et bon là le script marche, mais il déconne un peu lors de la connection d'un joueur, il va se retrouver à poil, faut je pense le faire uniquement pour les objets qu'il ramasse, pas pour ceux qu'il a a la connection (au debut du script de teinture, tu vérifies si le joueur a une variable sur lui sinon return, et dans le OnClientEnter, tu mets un delaycommand assez court pour fixer la variable sur le joueur, comme ça ses objets qu'il a a la connection ne sont pas traités, c'est mieux.)

Re EDIT : Quoi que, en fait il suffit de virer le ClearAllActions de la fonction FinishDyeScript() et il remete bien son armure et son casque.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 01/08/2006 12:20:05 Sujet du message :

Heu il recois les armures et les casque chez un marchand, ça t'aide? Razz
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 01/08/2006 12:54:49 Sujet du message :

Théoriquement ça marche bien chez un marchand aussi. T'as essayé ?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 01/08/2006 18:53:27 Sujet du message :

Sith, il faut rajoute :

NWScript :
void main()
{
if(GetIsPC(oPC) == TRUE)
{
}
}
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.


Sinon tout le monde est bleu blanc rouge noire Razz
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 01/08/2006 19:01:55 Sujet du message :

Je pense pas, le OnAcquire se déclanche que pour les joueurs, donc la verif est déjà faite.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 02/08/2006 20:30:53 Sujet du message :

Sith, enfaite, je t'ai envoyer un MP disant que j'avais un probleme sur le style des casque (ça revenez a leur état normal) bein la je viens de voir que enfaite ça fait pas que ça Shocked !!!!! ça enleve les bonnus ShockedShocked . Help! j'ai pas envie, de j'ai pas envie de, d'enlever ton script!!!!!!!!!!!!!!!!!!!!!!!!! HELP
_________________
[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 74.688ms