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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Script de transformation ????

Par Le Hamster le 15/9/2002 à 14:53:56 (#2161261)

Le script suivant est au dessus de mes forces (largement)

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)

Problème ... autant transformé un humain en vache est ectremement facile, l'inverse est très dure.
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 donne
void main()
{
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");


}
Ouala

Par Le Hamster le 15/9/2002 à 22:05:10 (#2164226)

merci pour ta réponse. Sans vouloir paraître chiant, le second script a apparemment un problème à la ligne 9. J'ai essayé de le bidouiller mais je n'y parviens pas.

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)

Oui il y a une simple faute de frappe il maque une parenthèse

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 suis désolé mais c'est à la ligne 9 que le script merdouille.

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 crois qu'une fonction GetItemPossessedBy("balai", OBJECT_SELF) serait mieux ici que le GetObjectByTag("balai").
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)

AHAH j'ai trouvé :D
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é serait

void main()
{
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");


}
:merci:

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