Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Problème avec un script de reconnaissance vestimentaire

Par Cassin le 29/11/2002 à 19:59:00 (#2674772)

J'ai un petit problème avec un script.

Je voudrais que si le joueur porte un des 3 types de vêtements des mes moines, les PNJ disent "oh, vous êtes un moine blablabla", et s'il porte un autre vêtement (n'importe quel type d'armure quoi), il dise la phrase normale de la conversation.

Voilà le script :

object oSpeaker = GetLastSpeaker();

int StartingConditional()
{
if (GetItemInSlot(INVENTORY_SLOT_CHEST, oSpeaker) ==
GetObjectByTag("ArmureGuerrierMGK", 0))
return FALSE;

if (GetItemInSlot(INVENTORY_SLOT_CHEST, oSpeaker) ==
GetObjectByTag("Robedemoine", 0))
return FALSE;

if (GetItemInSlot(INVENTORY_SLOT_CHEST, oSpeaker) ==
GetObjectByTag("RobeMageMGK", 0))
return FALSE;

else
return TRUE;
}


En fait, la conversation normale s'engage si le joueur est à poil (aucune armure du tout), mais s'il porte n'importe quel autre type d'armure, c'est la phrase "vous êtes un moine etc" qui arrive.

Par Kemay le 29/11/2002 à 20:06:49 (#2674828)

Essaie en remplaçant les:

if (GetItemInSlot(INVENTORY_SLOT_CHEST, oSpeaker) == GetObjectByTag("ArmureGuerrierMGK", 0))
par
if( GetTag(GetItemInSlot(INVENTORY_SLOT_CHEST,oSpeaker)) == "ArmureGuerrierMGK" )


et GetLastSpeaker() par GetPCSpeaker()

Par Iridian le 29/11/2002 à 20:16:30 (#2674899)

INVENTORY_SLOT_CHEST ?

Ce serai pas INVENTORY_SLOT_ARMOR ou autre (selon le type d'objet) ?

Par Kemay le 29/11/2002 à 20:18:45 (#2674912)

Provient du message de Iridian
INVENTORY_SLOT_CHEST ?

Ce serai pas INVENTORY_SLOT_ARMOR ou autre (selon le type d'objet) ?
Non :)
int INVENTORY_SLOT_HEAD = 0;
int INVENTORY_SLOT_CHEST = 1;
int INVENTORY_SLOT_BOOTS = 2;
int INVENTORY_SLOT_ARMS = 3;
int INVENTORY_SLOT_RIGHTHAND = 4;
int INVENTORY_SLOT_LEFTHAND = 5;
int INVENTORY_SLOT_CLOAK = 6;
int INVENTORY_SLOT_LEFTRING = 7;
int INVENTORY_SLOT_RIGHTRING = 8;
int INVENTORY_SLOT_NECK = 9;
int INVENTORY_SLOT_BELT = 10;
int INVENTORY_SLOT_ARROWS = 11;
int INVENTORY_SLOT_BULLETS = 12;
int INVENTORY_SLOT_BOLTS = 13;
int INVENTORY_SLOT_CWEAPON_L = 14;
int INVENTORY_SLOT_CWEAPON_R = 15;
int INVENTORY_SLOT_CWEAPON_B = 16;
int INVENTORY_SLOT_CARMOUR = 17;

Par Cassin le 29/11/2002 à 20:19:00 (#2674915)

Marche pas non plus, avec ça le joueur est reconnu à chaque fois comme étant un moine, qu'il porte un des vêtements de moine, un autre type d'armure, ou même rien du tout !


Il y a quelques temps, vers août ou septembre je crois, quelqu'un d'ici m'avait déjà fait un script similaire, sur une AreaTransition cette fois :

object oClicker = GetClickingObject();
object oTarget = GetTransitionTarget(OBJECT_SELF);
location lLoc = GetLocation(oTarget);

void main()
{
if ( GetItemInSlot(INVENTORY_SLOT_CHEST, oClicker) ==
object GetObjectByTag("RobeMage", 0) ) ||
( GetItemInSlot(INVENTORY_SLOT_CHEST, oClicker) ==
object GetObjectByTag("VetementGuerrier", 0) )
AssignCommand(oClicker,JumpToLocation(lLoc));
else
ActionSpeakString("Je ne peux tout de meme pas sortir sans mon uniforme le jour de mon intronisation !");
}


Le script marchait si l'armure était portée, mais marchait également si elle était dans l'inventaire.
Là ça ne me convient pas trop, je préférerais que ça marche SEULEMENT si l'armure est portée...

Par Kemay le 29/11/2002 à 20:34:57 (#2675030)

Ben je viens de tester et ça marche sans problème.
Le dialogue:
[Root]
--[NPC]Phrase à dire si le joueur a l'objet dans le bon slot
--[NPC]Phrase à dire si le joueur n'a pas l'objet dans le bon slot

Dans la condition d'exécution de la première phrase (si le joueur porte la bonne armure):

int StartingConditional()
{
object oPC = GetPCSpeaker();
string sTagArmure = GetTag(GetItemInSlot(INVENTORY_SLOT_CHEST,oPC));
if( sTagArmure == "ArmureGuerrierMGK" || sTagArmure == "Robedemoine" || sTagArmure == "RobeMageMGK" )
return TRUE;
return FALSE;
}

Par Cassin le 29/11/2002 à 22:52:36 (#2675945)

Yes, ça marche !

Merci Kemay !

JOL Archives 1.0.1
@ JOL / JeuxOnLine