La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 22/09/2024 03:32:53


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Elandil2
Chevalier
Inscrit le: 14 Fév 2005
Messages: 97
Localisation: sur mon ordi loir-et-cher
Répondre en citant
Posté le : 08/06/2005 19:43:38 Sujet du message : Cinematique de m****

Voila, j'ai créé une petite cinematique et comme par hasard, elle bugge, je la post ici pour ceux qui s'y connaissent un peu, de l'aide serais la bienvenue ...




NWScript :
//Cree par Maelin_Fellagun

#include "x2_inc_cutscene"
#include "nw_i0_henchman"

void StartCutscene(object oPC, int iCut);
void main()
{
    object oPP_Ranger = GetObjectByTag("RANGER_CREE");
    location lPP_Ranger = GetLocation(oPP_Ranger);
    object oPasseur = GetObjectByTag("NAHEUL_PASSEUR");
    int occupe = GetLocalInt(oPasseur,"naheulbeuk_occupe");
    object oPC = OBJECT_SELF;
    int iCut = 52;

    if(occupe == 1)
    {
    CreateObject(OBJECT_TYPE_CREATURE,"le",lPP_Ranger,FALSE,"NAHEUL_RANGER");
    DelayCommand(0.1, StartCutscene(oPC, iCut));
    }
}

void StartCutscene(object oPC, int iCut)
{
    // initiallisation des variables
    object oRang = GetObjectByTag("NAHEUL_RANGER");
    object oVien = GetObjectByTag ("NAHEUL_PP_ARRIVEE_RANGER");
    object oPasseur = GetObjectByTag("NAHEUL_PASSEUR");
    int occupe = GetLocalInt(oPasseur,"naheulbeuk_occupe");
    object oPC = OBJECT_SELF;
    location position = GetLocation(oPC);
    object oVienPC = GetObjectByTag ("NAHEUL_PP_ARRIVEE_PC");
    location lCopy = GetLocalLocation(OBJECT_SELF,"COPY_PC");
    object oPP_Ranger = GetObjectByTag("RANGER_CREE");
    location lPP_Ranger = GetLocation(oPP_Ranger);
    location lCREE = GetLocalLocation(OBJECT_SELF,"RANGER_CREE");
    SetLocalLocation(OBJECT_SELF,"RANGER_CREE",lPP_Ranger);
    SetLocalLocation(OBJECT_SELF,"COPY_PC",GetLocation(oPC));

    // Demarre le scene
    CutSetActiveCutscene(iCut, CUT_DELAY_TYPE_CONSTANT);
    CutSetActiveCutsceneForObject(oPC, iCut, TRUE);
    CutSetActiveCutsceneForObject(oRang, iCut, TRUE);

    // On met les personnages en mode scene
    CutBlackScreen(0.1, oPC);
    CutSetCutsceneMode(0.1, oPC, TRUE, TRUE);
    CutSetCutsceneMode(0.1, oRang, TRUE, TRUE);

    CutSetCamera(0.4, oPC, CAMERA_MODE_TOP_DOWN, 90.0,8.0, 65.0,CAMERA_TRANSITION_TYPE_SNAP);
    CutFadeFromBlack(2.0, oPC, FADE_SPEED_FAST);
    CutCreatePCCopy(oPC,lCopy,"PC_COPY" );
    CutCreateObjectCopy(0.1,oRang,lPP_Ranger,"COPY_RANGER");
    CutActionForceMoveToObject(0.1, GetObjectByTag("PC_COPY"),oVienPC,FALSE);
    object oCopy_rang = GetNearestObjectByTag ("COPY_RANGER");


    // La cinematique
    SetLocalInt(oPasseur,"naheulbeuk_occupe",2);
    CutActionForceMoveToObject(0.1,oCopy_rang,oVien,FALSE);
    object oParle = GetNearestObjectByTag("PC_COPY");
    CutSpeakString(11.0,oCopy_rang,"Salut, tu viens pour l'aventure ?");
    CutSpeakString(13.5,oParle,"Et ouais, je suis l'aventurier !");
    CutSpeakString(16.0,oCopy_rang,"Ca se voit !");
    CutSpeakString(17.5,oParle,"Et ca ? C'est le donjon ?");
    CutSpeakString(19.5,oCopy_rang,"Effectivement, c'est le fameux donjon de Naheulbeuk !");
    CutSpeakString(22.5,oParle,"Il a pas l'air terrible !");
    CutSpeakString(24.5,oCopy_rang,"Faut pas s'y fier! car personne n'en est ressortit ...");
    CutSpeakString(32.5,oCopy_rang,"Faut dire aussi que personne n'y est entre ...");
    CutSpeakString(35.5,oParle,"On essaie ?");

    CutDestroyPCCopy(0.1,oParle);
    CutDestroyObject(0.1,oCopy_rang);
    //CutPlayAnimation(44.4, oPC, ANIMATION_LOOPING_DEAD_BACK, 3.0);
    CutDisableCutscene(iCut, 37.0, 36.0, RESTORE_TYPE_NONE);

    //SpeakString("test" );
        if (GetIsObjectValid(GetHenchman(oPC)) == TRUE)
        {
        SetFormerMaster(oPC, GetHenchman(oPC));
        object oHench = GetHenchman(oPC);
        RemoveHenchman(oPC, GetHenchman(oPC));
        AssignCommand(oHench, ClearAllActions());
        }

    SetWorkingForPlayer(oPC);
    SetBeenHired();

    SetAssociateListenPatterns();
    // * Companions, come in, by default with Attack Nearest Enemy && Follow Master modes
    SetLocalInt(oRang,"NW_COM_MODE_COMBAT",ASSOCIATE_COMMAND_ATTACKNEAREST);
    SetLocalInt(oRang,"NW_COM_MODE_MOVEMENT",ASSOCIATE_COMMAND_FOLLOWMASTER);
    AddHenchman(OBJECT_SELF,oRang);
}
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.



Il me reste encore trois bugs :

1) le Ranger ne dis pas son texte
2) le ranger rejoin le groupe avant meme la cinematique
3)a la fin de la cinematique, il y a deux ranger ...

Ca m'ennerve parce que je suis dessus depuis une semaine ...
_________________
Rejoignez nous sur notre forum
Aelor, module en construction
Vive Gimli

 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Semcatala
Grand Sage du Conseil
Inscrit le: 20 Jan 2004
Messages: 951
Répondre en citant
Posté le : 08/06/2005 20:18:00 Sujet du message :

Salut !

Déja , si je me rapelle bien , les cutspeakstring devraient de préférence être utilisés pour les pj que tu commande et qui ont perdu le contrôle de leur avatar.

J'ai fait une cinématique et elle marche parfaitement , je me permet de te donner la solution que j'ai trouvé pour faire parler mes pnj indépendament les uns des autres et sans soucis avec une tempo pour tout régler au quart de poil !

utilise cette commande :

NWScript :

DelayCommand(float_pour_choisir_le_moment_du_déclenchement_de_la_phrase,AssignCommand(GetObjectByTag("tag_de_ton_pnj_a_faire_parler"),ActionSpeakString("Prase a prononcer",TALKVOLUME_TALK)));

exemple :

DelayCommand(72.0,AssignCommand(GetObjectByTag("Lesclavagiste"),ActionSpeakString("",TALKVOLUME_TALK)));
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.




Quand a forcer des pnj a se déplacer , j'ai plutôt utilisé la commande :
NWScript :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.


Ca marche en faisant déplacer les pnj d'un waypoint a un autre au moment voulu grace a la tempo ( dans ce cas 58.1 secondes ) , et je dois dire que les résultats sont trés bons , je n'ai pas rencontré de pb particulier.

Quand au problême des 2 rangers , ça viens peut être du fait que tu crée un ranger , et que que tu le " copie " pas longtemps aprés dans ton script , mais pour ce problême là , je laisse a d'autres le soin de débusquer précisément le soucis.
_________________
" La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG
" La véritable école du Commandement est la culture générale. " CdG
" Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F
" La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG
" La fin de l'espoir est le commencement de la mort. " CdG
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Elandil2
Chevalier
Inscrit le: 14 Fév 2005
Messages: 97
Localisation: sur mon ordi loir-et-cher
Répondre en citant
Posté le : 08/06/2005 21:28:48 Sujet du message :

Merci pour ta reponse, je vais essayer ca mais pas ce soir ^^ *baille* en plus il fo que je me leve tot demain, ca va etre joli
*s'arrache la machoire*
_________________
Rejoignez nous sur notre forum
Aelor, module en construction
Vive Gimli

 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Elandil2
Chevalier
Inscrit le: 14 Fév 2005
Messages: 97
Localisation: sur mon ordi loir-et-cher
Répondre en citant
Posté le : 10/06/2005 06:19:12 Sujet du message :

Malheureusement, j'ai essayé ta technique qui resoud un probleme certes mais pas les autres ....
Le ranger ne veux toujour pas venir au point de passage que je luia ai assigné et il ne veux pas non plus dire son texte (peu etre un trou de memoire ^^)
Pour finir il vien toujour dans le groupe avant la cinématique, mais ca je pense que je vais le regler avec des DelayCommand ....
_________________
Rejoignez nous sur notre forum
Aelor, module en construction
Vive Gimli

 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Elandil2
Chevalier
Inscrit le: 14 Fév 2005
Messages: 97
Localisation: sur mon ordi loir-et-cher
Répondre en citant
Posté le : 12/06/2005 10:58:04 Sujet du message :

Voila !!!!
Grace aux info données par Semcatala et apres encore deux journées de travail, la cinematique fonctionne tres bien !

NWScript :
#include "x2_inc_cutscene"
#include "nw_i0_henchman"

void StartCutscene(object oPC, int iCut);
void main()
{
    object oPP_Ranger = GetWaypointByTag("RANGER_CREE");
    location lPP_Ranger = GetLocation(oPP_Ranger);
    object oPasseur = GetObjectByTag("NAHEUL_PASSEUR");
    int occupe = GetLocalInt(oPasseur,"naheulbeuk_occupe");
    object oPC = OBJECT_SELF;
    int iCut = 52;

    if(occupe == 1)
        {
        CreateObject(OBJECT_TYPE_CREATURE,"le",lPP_Ranger,FALSE,"NAHEUL_RANGER");
        DelayCommand(0.1, StartCutscene(oPC, iCut));
        }
}
void StartCutscene(object oPC, int iCut)
{
    object oRang = GetNearestObjectByTag("NAHEUL_RANGER");
    object oVien = GetWaypointByTag ("NAHEUL_PP_ARRIVEE_RANGER");
    object oPasseur = GetObjectByTag("NAHEUL_PASSEUR");
    int occupe = GetLocalInt(oPasseur,"naheulbeuk_occupe");
    object oPC = OBJECT_SELF;
    location position = GetLocation(oPC);
    object oVienPC = GetWaypointByTag ("NAHEUL_PP_ARRIVEE_PC");
    location lCopy = GetLocalLocation(OBJECT_SELF,"COPY_PC");
    object oPP_Ranger = GetWaypointByTag("RANGER_CREE");
    location lPP_Ranger = GetLocation(oPP_Ranger);
    location lCREE = GetLocalLocation(OBJECT_SELF,"RANGER_CREE");

    // Setup the scene
    CutSetActiveCutscene(iCut, CUT_DELAY_TYPE_CONSTANT);
    CutSetActiveCutsceneForObject(oPC, iCut, TRUE);

    // Setup the cutscene.
    CutBlackScreen(0.1, oPC);
    CutSetCutsceneMode(0.1, oPC, TRUE, TRUE);

    CutSetCamera(0.4, oPC, CAMERA_MODE_TOP_DOWN, 90.0,8.0, 65.0,CAMERA_TRANSITION_TYPE_SNAP);
    CutFadeFromBlack(2.0, oPC, FADE_SPEED_FAST);
    CutCreatePCCopy(oPC,lCopy,"PC_COPY" );
    object oParle = GetNearestObjectByTag("PC_COPY");

    // La cinematique
    SetLocalInt(oPasseur,"naheulbeuk_occupe",2);
    DelayCommand(0.1,AssignCommand(oRang,ActionForceMoveToObject(oVien,FALSE)));
    DelayCommand(11.0,AssignCommand(oRang,ActionSpeakString("Salut, tu viens pour l'aventure ?")));
    CutSpeakString(13.5,oParle,"Et ouais, je suis l'aventurier !");
    DelayCommand(16.0,AssignCommand(oRang,ActionSpeakString("Ca se voit !")));
    CutSpeakString(17.5,oParle,"Et ca ? C'est le donjon ?");
    DelayCommand(19.5,AssignCommand(oRang,ActionSpeakString("Effectivement, c'est le fameux donjon de Naheulbeuk !")));
    CutSpeakString(22.5,oParle,"Il a pas l'air terrible !");
    DelayCommand(24.5,AssignCommand(oRang,ActionSpeakString("Faut pas s'y fier! car personne n'en est ressortit ...")));
    DelayCommand(32.5,AssignCommand(oRang,ActionSpeakString("Faut dire aussi que personne n'y est entre ...")));
    CutSpeakString(35.5,oParle,"On essaie ?");
    SetLocalLocation(oPC,"NEW_POSITION",GetLocation(oParle));

    CutBlackScreen(35.5, oPC);
    CutDestroyPCCopy(0.1,oParle);
    CutDisableCutscene(iCut, 37.0, 36.0, RESTORE_TYPE_NONE);

    //SpeakString("test" );
        if (GetIsObjectValid(GetHenchman(oPC)) == TRUE)
        {
        object oHench = GetHenchman(oPC);
        DelayCommand(36.0,SetFormerMaster(oPC, GetHenchman(oPC)));
        DelayCommand(36.0,RemoveHenchman(oPC, GetHenchman(oPC)));
        DelayCommand(36.0,AssignCommand(oHench, ClearAllActions()));
        }

    DelayCommand(36.0,SetWorkingForPlayer(oPC));
    DelayCommand(36.0,SetBeenHired());

    DelayCommand(36.0,SetAssociateListenPatterns(oRang));
    // * Companions, come in, by default with Attack Nearest Enemy && Follow Master modes
    DelayCommand(36.0,SetLocalInt(oRang,"NW_COM_MODE_COMBAT",ASSOCIATE_COMMAND_ATTACKNEAREST));
    DelayCommand(36.0,SetLocalInt(oRang,"NW_COM_MODE_MOVEMENT",ASSOCIATE_COMMAND_FOLLOWMASTER));
    DelayCommand(36.0,AddHenchman(OBJECT_SELF,oRang));
    DelayCommand(36.0,AssignCommand(oPC,ActionForceMoveToLocation(GetLocalLocation(oPC,"NEW_POSITION"))));
    CutFadeFromBlack(37.0, oPC, FADE_SPEED_FAST);
}
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.

_________________
Rejoignez nous sur notre forum
Aelor, module en construction
Vive Gimli

 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger 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 71.974ms