Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Script de transformation ????
Script de transformation ????
Par Le Hamster le 15/9/2002 à 14:53:56 (#2161261)
Une bonne âme peut-il le réaliser ?
C'est pour une histoire classique. Un animal domestique parle aux PC. Dans la conversation, il demande un bisou. Le PC accepte et l'animal se transforme en humain (dans un joli effet visuel ce serait parfait). En se transformant, le PC reçoit 500 exp et un objet magique (custom item), une nouvelle conversation s'engageant aussitôt
Animal Tag = "vache"
Humain Tag ="humain"
Objet magique Tag = "balai"
Nouvelle conversation = "Conv2"
Merci d'avance.
Re: Script de transformation ????
Par Darkmore le 15/9/2002 à 16:02:28 (#2161690)
Tu pourrait bidouiller le fichier polymorph.2da mais je vais d'abord te donner une solution plus simple ... à toi de voire si ça te vas.
Dont tu commence par créer un PNJ humain de la forme que tu veux avoir en fin de dialogue.
Ensuite tu le transforme en vache via son script OnSpaw en plaçant.
ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectPolymorph(POLYMORPH_TYPE_COW), OBJECT_SELF);
Le petit truc génant c'est qu'en clickant à droite sur la vache les PJ vont se rendre compte qu'elle est "polymorphé" (une idée a la con de bioware fait que l'effet polymorph est affiché dans les propriété de la creature comme si les PJ pouvaient le voir :doute: )
Mais bon si ça ne te dérange pas plus que ça tu aura un humain transformé en vache.
Ensuit dans le ActionTaken qui correspond a la ligne de conversation tu crées un petit script qui donnevoid main()
Ouala
{
effect eVisual=EffectVisualEffect(VFX_IMP_POLYMORPH, FALSE); //visuel de wildshape/polymorph self...
//moi j'utilise ça pour mes transfos
effect eEffect=GetFirstEffect(OBJECT_SELF);
while(GetIsEffectValid(eEffect)==TRUE)
{
if (GetEffectType(eEffect)==EFFECT_TYPE_POLYMORPH))
{
RemoveEffect(OBJECT_SELF, eEffect);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisual, OBJECT_SELF);
}
eEffect = GetNextEffect(OBJECT_SELF);
}
ActionWait(1.0);
GiveXPToCreature(GetLastSpeaker(), 500);
ActionGiveItem(GetObjectByTag("balai", GetLastSpeaker());
ActionStartConversation(GetLastSpeaker(), "Conv2");
}
Par Le Hamster le 15/9/2002 à 22:05:10 (#2164226)
A ton avis, c'est quoi le problème ?
Note : le "balai" est un custom item et pas un objet. (ça a peut-être une importance ?)
merci encore.
Par Darkmore le 15/9/2002 à 22:48:48 (#2164528)
GetObjectByTag("balai")...
Je poste pas du scrip pré-digéré,il faut vérifier quand même ce genre de carabistouilles.
:merci:
A vrai dire je l'ai même pas tester ... :D
ah lala je vais être chiant
Par Le Hamster le 16/9/2002 à 10:31:45 (#2166022)
Je trouve vraiment pas. C'est du chinois pour moi.
Si tu as le temps de jeter un oeil, merci
Par Jedaï le 16/9/2002 à 18:42:03 (#2168855)
Je ne suis pas sûr de la syntaxe donc vérifie dans l'éditeur de script si ce n'est pas plutôt : GetItemPossessedBy(OBJECT_SELF, "balai").
Par Darkmore le 16/9/2002 à 19:28:47 (#2169225)
En fait la parenthèse que j'avais oublié je l'avais rajouté dans la condition du IF ... ça s'équilibre finalement
Donc la version corrigé seraitvoid main()
:merci:
{
effect eVisual=EffectVisualEffect(VFX_IMP_POLYMORPH, FALSE); //visuel de wildshape/polymorph self...
//moi j'utilise ça pour mes transfos
effect eEffect=GetFirstEffect(OBJECT_SELF);
while(GetIsEffectValid(eEffect)==TRUE)
{
if (GetEffectType(eEffect)==EFFECT_TYPE_POLYMORPH)
{
RemoveEffect(OBJECT_SELF, eEffect);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisual, OBJECT_SELF);
}
eEffect = GetNextEffect(OBJECT_SELF);
}
ActionWait(1.0);
GiveXPToCreature(GetLastSpeaker(), 500);
ActionGiveItem(GetObjectByTag("balai"), GetLastSpeaker());
ActionStartConversation(GetLastSpeaker(), "Conv2");
}
PS : tu n'as pas vraiment besoin d'appliquer de Visuel .. c'est automatique en enlevant l'effect polymorph tu auras l'animation de sort polymorph/wildshape
JOL Archives 1.0.1
@ JOL / JeuxOnLine