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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Script animation avec placeable

Par Le Hamster le 19/9/2002 à 10:31:48 (#2186578)

Bien, voilà. Je n'arrive pas à terminer le script suivant, n'ayant jamais utilisé de Placeable dans mes animations précédentes.

Le déroulement :

Le PJ surprend une femme qui s'apprète à prendre son bain. Elle le voit, se précipite en deux temps vers une armoire. Elle ouvre cette armoire (l'armoire s'ouvre) et s'habille avec un costume. Ensuite, elle se dirige vers une chaise, s'assoit et une conversation s'engage

J'ai placé le script suivant sur le OnPerception, dans l'état il fonctionne mais je ne sais pas aller plus plus loin dans le déroulement ci-dessus.

Tag Femme = "Mimi"
Tag Armoire = "ArmoireMimi"
Tag Chaise = "Chair"
Tag Costume = "CostumeMimi"
Tag Conversation = "conv_mimi"

void main()
{

ClearAllActions();
ActionMoveToObject(GetNearestObjectByTag("point_mimi1"),TRUE);

ActionSpeakString("Eh, mais que faites-vous ici ?");

ActionMoveToObject(GetNearestObjectByTag("point_mimi2"),TRUE);
GetFacingFromLocation (GetLocation(oObject)); // ça, ça ne marche pas, j'aimerais qu'elle se retourne avant d'enchainer la suite
ActionPlayAnimation(ANIMATION_LOOPING_TALK_FORCEFUL);
ActionSpeakString("Tournez-vous gros cochon !");

ActionMoveToObject(GetNearestObjectByTag("ArmoireMimi"));
ActionPlayAnimation(ACTION_OPENLOCK);

?????

}

En fait ce que je dois apprendre, c'est comment bien utiliser les ANIMATION_PLACEABLE et EquipItem, je sais pas faire ça. Faire que Mimi retourne à la chaise et s'assoit ne devrait pas poser de problème.

Voili, voilà. EUH, pls si vous répondez, écrivez moi le bout de script qui manque, ça me donnera un exemple pour tout comprendre.

Bises à toutes et àa tous.

S'il vous plait ?

Par Le Hamster le 20/9/2002 à 20:45:49 (#2197646)

Juste pour moi et tant de nullards, ecrivez-moi les deux ou trois lignes de commandes qui font que l'on voit mon perso ouvrir l'armoire et s'habiller (avec l'armoire qui s'ouvre).

Tag voir précedent post

merci et bisous

Par Jedaï le 21/9/2002 à 12:25:36 (#2200983)

Bon alors je ne sais pas faire tout ça mais je pense que ceci devrait marcher :


void main()
{
object oPC = GetLastPerceived();

if (GetIsPC(oPC) && GetLastPerceptionSeen())
{
ClearAllActions();
ActionMoveToObject(GetNearestObjectByTag("point_mimi1"),TRUE);

ActionSpeakString("Eh, mais que faites-vous ici ?");

ActionMoveToObject(GetNearestObjectByTag("point_mimi2"),TRUE);
float fFacing = GetFacing(GetNearestObjectByTag("point_mimi2"));
//mettez le waypoint "point_mimi2" dans le sens ou vous voulez qu'elle se tourne
SetFacing(fFacing);
ActionWait(0.5);
ActionSpeakString("Tournez-vous gros cochon !");

ActionInteractObject(GetObjectByTag("ArmoireMimi"));
ActionWait(1.5);
ActionEquipItem(GetObjectByTag("CostumeMimi"), INVENTORY_SLOT_CHEST);

ActionMoveToObject(GetNearestObjectByTag("Chair"), FALSE, 0.3);
ActionStartConversation(oPC, "conv_mimi");
ActionSit(GetNearestObjectByTag("Chair"));

}
}


Plusieurs problème peuvent se présenter : d'abord je ne suis pas sûr de moi pour ce qui est du facing, ensuite si la chaise est trop loin du PC, il y a risque d'interruption de la conversation et je ne suis pas sûr non plus qu'elle s'assoit avant la fin de la conversation. (Ce qui est sûr c'est qu'on ne peut la faire asseoir puis lui faire commencer la conversation).

Par Jedaï le 21/9/2002 à 19:25:38 (#2203206)

Alors voilà ce script testé et approuvé par moi :


void main()
{
object oPC = GetLastPerceived();

if (GetIsPC(oPC) && GetLastPerceptionSeen())
{
AssignCommand(oPC, ClearAllActions());
SetCommandable(FALSE, oPC);

ClearAllActions();
ActionMoveToObject(GetNearestObjectByTag("point_mimi1"),TRUE);

ActionSpeakString("Eh, mais que faites-vous ici ?");

ActionMoveToObject(GetNearestObjectByTag("point_mimi2"),TRUE);
float fFacing = GetFacing(GetNearestObjectByTag("point_mimi2"));
//mettez le waypoint "point_mimi2" dans le sens ou vous voulez qu'elle se tourne
ActionDoCommand(SetFacing(fFacing));
ActionSpeakString("Tournez-vous gros cochon !");
ActionWait(2.0);


ActionMoveToObject(GetObjectByTag("ArmoireMimi"), TRUE);
ActionDoCommand(AssignCommand(GetObjectByTag("ArmoireMimi"), PlayAnimation(ANIMATION_PLACEABLE_OPEN)));
ActionPlayAnimation(ANIMATION_LOOPING_GET_MID, 1.0, 1.5);
ActionEquipItem(GetObjectByTag("CostumeMimi"), INVENTORY_SLOT_CHEST);
ActionDoCommand(AssignCommand(GetObjectByTag("ArmoireMimi"), PlayAnimation(ANIMATION_PLACEABLE_CLOSE)));

ActionMoveToObject(GetNearestObjectByTag("Chair"), FALSE, 0.3);

SetCommandable(TRUE, oPC);

ActionStartConversation(oPC, "conv_mimi");
ActionSit(GetNearestObjectByTag("Chair"));

}
}


Alors quelque point à préciser : je n'ai pas intégré l'animation TALK_FORCEFUL parce que je ne la connais pas mais libre à toi de la rajouter. On peut ajuster les temps d'attente pour obtenir un meilleur effet.
Je n'ai pas trop compris comment et quand tu voulais que la femme se retourne donc ajuste ton waypoint toi-même pour répondre à tes désidératas.
Il faut placer la chaise pas trop loin de la porte pour que la discussion puisse avoir lieu.
Lors de son habillage la femme est face à l'armoire à cause du ActionMoveToObject (si le waypoint 2 est bien placé) donc pense la position de ton armoire de façon à ce que la femme soit dans la bonne position par rapport au PC (qui doit se trouver à la porte puisqu'il ne peut plus recevoir d'ordre à partir du moment où la femme l'a vu).

JOL Archives 1.0.1
@ JOL / JeuxOnLine