Jump to content

Photo

NPC's Voice for the PC, it's possible !


  • Please log in to reply
7 replies to this topic

#1
Sebmouth

Sebmouth
  • Members
  • 14 posts
Hello,

We know, it's possible to "play as" a non player character (with the same face)…  So, what about this :

Could we custom the player character's voice with some non player character's voice ?

Edited by Sebmouth, 05 October 2010 - 06:20 AM.


#2
Guest_Dalira Montanti_*

Guest_Dalira Montanti_*
  • Guests
it is possible to add new sound sets if thats what u mean

#3
Sebmouth

Sebmouth
  • Members
  • 14 posts
Yeah i know, but…

Some players, like me, use the face of an official compagnon (like Léliana) for the grey warden. Then, why not the voice ? I think it's will be cool :o)

Edited by Sebmouth, 23 September 2010 - 10:12 AM.


#4
Jonathan Seagull

Jonathan Seagull
  • Members
  • 418 posts
I don't remember for sure whether it's possible to give the PC a voice, although I think there's a topic somewhere here about it.



But if it's possible, to give the PC the voice of an existing character (like Leliana), you would be stuck with two options: either only give the PC lines that Leliana already has voiceovers for; or use an audio editing program to splice together new dialogue from Leliana's old dialogue.



Neither option is very appealing. The first would involve rewriting pretty much every dialogue in the game (not to mention you and Leliana would be frequently repeating each other if she's in the party, too). And the second is, I can tell you from experience, time-consuming, even for small amounts of dialogue. I can't imagine trying to do it on the scale you're talking about.

#5
Sebmouth

Sebmouth
  • Members
  • 14 posts
Now, It's possible to change your PC's voice and/or have a NPC's voice, any time, every where. And it's fun !

rendez-vous ici ;o)
www.dragonagenexus.com/downloads/file.php

Thanks to Siramods

Edited by Sebmouth, 05 October 2010 - 06:19 AM.


#6
Dark_Ansem

Dark_Ansem
  • Members
  • 638 posts
that is very good! but I'd still like to know how to make an entirely new soundset. perhaps with the new toolset version that will support plugins...

#7
Lady Honor

Lady Honor
  • Members
  • 129 posts

i know this is a very old topic, but i saw this while looking for help with something else and thought i would put this out there in case someone else wanted to voice their pc.  it can be done quite easily in a standalone.  i wouldn't recommend doing it in the oc, however.  in my standalone, the pc is the only character that is fully voiced mainly because i voiced it.  here is how i did it.

 

Step 1:

 

Although this is not required, it is recommended, you should have a custom .mop file for each race you intend to use set up in the chargenmorphcfg.xml and a matching .mor file *or* if you have the toolset, you can edit your character save and give it your custom .mor.  you will need to give each .mor file the same name so you will have to keep them in separate folders and you can only use one at the time.  it doesn't really matter what you call the .mop files.  ex: hm_player_dummy.mor

 

Step 2:

 

Create a dummy player character for each race and gender you will need.  for my standalone, I only used the human male and female.  use the .mor file you created for your dummy player as the character's head morph.  you don't have to equip him with anything.  once you've created him (or her), place him in the area inactive.

 

Step 3:

 

Create a plot for your dummy player with one to activate him and one to deactivate him.  you need to do this for every male, female, and race.  so if you're going to use all races, you need six plot flags.

 

Step 4:

 

Create a plot script and a function.

 

A sample script of my function:

 

nb_player_status.ncs (my standalone was called new beginnings which I never got around to finishing)

//Equip Fake Player
void nbActivateFakePlayer()
{
    object oPC = GetHero();
    object oFem = GetObjectByTag("nb_player_female");

    object oPlayersBoots =   GetItemInEquipSlot(INVENTORY_SLOT_BOOTS,oPC);
    object oPlayersChest = GetItemInEquipSlot(INVENTORY_SLOT_CHEST,oPC);
    object oPlayersGloves = GetItemInEquipSlot(INVENTORY_SLOT_GLOVES,oPC);
    object oPlayersMnHand = GetItemInEquipSlot(INVENTORY_SLOT_MAIN,oPC);
    object oPlayersOffHand = GetItemInEquipSlot(INVENTORY_SLOT_OFFHAND,oPC);

        EquipItem(oFem, oPlayersBoots);
        EquipItem(oFem, oPlayersChest);
        EquipItem(oFem, oPlayersGloves);
        EquipItem(oFem, oPlayersMnHand);
        EquipItem(oFem, oPlayersOffHand);
        
        SetObjectActive(oFem, TRUE);
}

//Equip Real Player
void nbDeactivateFakePlayer()
{
    object oPC = GetHero();
    object oFem = GetObjectByTag("nb_player_female");

    object oPlayersBoots =   GetItemInEquipSlot(INVENTORY_SLOT_BOOTS,oFem);
    object oPlayersChest = GetItemInEquipSlot(INVENTORY_SLOT_CHEST,oFem);
    object oPlayersGloves = GetItemInEquipSlot(INVENTORY_SLOT_GLOVES,oFem);
    object oPlayersMnHand = GetItemInEquipSlot(INVENTORY_SLOT_MAIN,oFem);
    object oPlayersOffHand = GetItemInEquipSlot(INVENTORY_SLOT_OFFHAND,oFem);

        EquipItem(oPC, oPlayersBoots);
        EquipItem(oPC, oPlayersChest);
        EquipItem(oPC, oPlayersGloves);
        EquipItem(oPC, oPlayersMnHand);
        EquipItem(oPC, oPlayersOffHand);
        
        SetObjectActive(oFem, FALSE);

}

and a sample of my plot script:

 

nb_player_status.ncs

#include "log_h"
#include "utility_h"
#include "wrappers_h"
#include "plot_h"
#include "plt_nb_player_status"
#include "nb_player_status_h"


int StartingConditional()
{
    event eParms = GetCurrentEvent();             
    int nType = GetEventType(eParms);              
    string strPlot = GetEventString(eParms, 0);       
    int nFlag = GetEventInteger(eParms, 1);         
    object oParty = GetEventCreator(eParms);    
    object oConversationOwner = GetEventObject(eParms, 0); 
    int nPlotType = GetEventInteger(eParms, 5);
    int nResult = FALSE; // used to return value for DEFINED GET events
    object oPC = GetHero();
    object oFem = GetObjectByTag("nb_player_female");

    plot_GlobalPlotHandler(eParms); // any global plot operations, including debug info


    if(nType == EVENT_TYPE_SET_PLOT) // actions -> normal flags only
    {
        int nValue = GetEventInteger(eParms, 2); 
        int nOldValue = GetEventInteger(eParms, 3); 
        
        switch(nFlag)
        {
            case FEM_PLAYER_ACTIVE:

            {
                nbActivateFakePlayer();
            }

            case FEM_PLAYER_INACTIVE:

            {
                nbDeactivateFakePlayer();
            }

        }
     }
     else // EVENT_TYPE_GET_PLOT -> defined conditions only
     {

        switch(nFlag)
        {


        }

    }

    plot_OutputDefinedFlag(eParms, nResult);
    return nResult;
}

Step 5:

 

Create your dialog for your npcs/followers.  You must use a stage and each line must be run as a cutscene or they will be jumping all over the place.  Set your stage to be used "at location".  Make certain the real player character is set a stage position that is not visible to the camera and at the very beginning of the conversation. set the dummy player in the listener's stage position and finally, at the very beginning of the conversation, set the plot flag to activate your dummy player.  at the end of the conversation, set the flag to deactivate the dummy player and you're done.

 

You will have to give the player lines in order to respond to the owner of the conversation of course, but the I did it was I would use descriptions or actions.  ie:

 

1.  Flirtatious Response

2. Diplomatic Response

3. Humorous Response

 

 

I *tried* at the onset to duplicate the items the player was wearing on the dummy player, but it wound up leaving both naked and your equipment lost in the fade.  this method moves it to the dummy when he/she is in the conversation and then back to the player when the conversation has ended.

 

It is best practice when doing this to make certain the last spoken line is by the conversation owner and the "end dialog" line is left blank.  the end dialog line should be the one you set to deactivate your dummy player and put the real player back into his/her proper state.

 

It is also important that you set a dummy player in every area that allows conversation or you can set your conversations to only occur in one area, such as the camp area.  At the time I did this scripting, though, I had never messed pcrscr and it is possible I suppose to only create the dummy player when needed.

 

Anyway, just thought I would throw this out there.


  • Aren likes this

#8
Aren

Aren
  • Members
  • 3,471 posts

I once provided my PC of a voice(custom voice not from Npc) but it was long ago now i don't use anymore  the Toolset.

I appreciate the post above mine even if it pertain an old thread because it require effort to explain all the steps.


  • Lady Honor likes this