La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 23/11/2024 21:21:09
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
Elandil2 Chevalier Messages: 97 Localisation: sur mon ordi loir-et-cher |
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); } 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 | |
Semcatala Grand Sage du Conseil Messages: 951 |
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))); Quand a forcer des pnj a se déplacer , j'ai plutôt utilisé la commande : NWScript :
DelayCommand(58.1,AssignCommand(oPC,ActionMoveToLocation(GetLocation(GetWaypointByTag("intro_WP_prison_03")),FALSE))); 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 | |
Elandil2 Chevalier Messages: 97 Localisation: sur mon ordi loir-et-cher |
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 | |
Elandil2 Chevalier Messages: 97 Localisation: sur mon ordi loir-et-cher |
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 | |
Elandil2 Chevalier Messages: 97 Localisation: sur mon ordi loir-et-cher |
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); } _________________ Rejoignez nous sur notre forum Aelor, module en construction Vive Gimli |
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
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