I've been attempting to create a Cullen companion (for personal use only). After the Broken Circle quest completes, you can recruit Cullen from the first floor of the circle tower, which is where he normally hangs out. As a last resort (yes, I know it's not the right way to do it), I tried overriding the original first floor area with an updated duplicate. Basically I created a new Cullen, duplicated the first floor tower, deleted the old Cullen from the tower, put the new Cullen in his place, exported without dependent resources, dumped the area/scripts/creature/dialog into the override folder, renamed the first floor tower area to the same name as the original, loaded up a save, and got the "Unable to load area/module" error. I figured I could override practically everything else, why not the area? Alas I was wrong.
What's the proper way to do this? I assume via PRCSCR. I've tried a simple one that just spawns the new Cullen into the area (but then there are two Cullens, which is just sloppy). How can I get rid of or replace the old Cullen without altering the area, and/or does anyone know where I can find a sample script?
Unable to load area
Débuté par
Karma
, juin 24 2010 04:12
#1
Posté 24 juin 2010 - 04:12
#2
Posté 24 juin 2010 - 02:50
You can use Safe_DestroyObject to get rid of the old Cullen. You have to make sure you do this after the party engages him in conversation after coming out of the Fade (I assume Cullen is the guy who is in the force field) since that is a critical conversation during which Wynne can die.
#3
Posté 25 juin 2010 - 01:36
After the Broken Circle quest completes and the player talks to Greagoir, Cullen can be hired. I think he's usually in the library. I initiate conversation to hire him. The conversation concludes and a look-alike spawns in the party. Can the Safe_Destroy_Object function be included in the hiring script?
My WIP hiring script is:
[dascript]
#include "events_h"
#include "global_objects_h"
#include "wrappers_h"
#include "sys_chargen_h"
#include "utility_h"
#include "sys_rewards_h"
#include "approval_h"
#include "core_h"
#include "plt_gen00pt_party_kc" //Make sure you include your party handling plot
void main()
{
object oHero = GetHero();
object oFollower = CreateObject(OBJECT_TYPE_CREATURE, R"kc_cir230cr_cullen.utc", GetLocation(oHero));
UT_HireFollower(oFollower);
SetLocalInt(oFollower, CREATURE_REWARD_FLAGS, 0);
SetFollowerApprovalEnabled(oFollower, TRUE);
SetFollowerApprovalDescription(oFollower, 371487);
WR_SetPlotFlag(PLT_GEN00PT_PARTY_KC, GEN_CULLEN_RECRUITED, TRUE);
//Show the party picker
SetPartyPickerGUIStatus(2);
ShowPartyPickerGUI();
}
[/dascript]
Can I just plug "Safe_Destroy_Object(GetObjectByTag("cir230cr_cullen"));" in there somewhere?
My WIP hiring script is:
[dascript]
#include "events_h"
#include "global_objects_h"
#include "wrappers_h"
#include "sys_chargen_h"
#include "utility_h"
#include "sys_rewards_h"
#include "approval_h"
#include "core_h"
#include "plt_gen00pt_party_kc" //Make sure you include your party handling plot
void main()
{
object oHero = GetHero();
object oFollower = CreateObject(OBJECT_TYPE_CREATURE, R"kc_cir230cr_cullen.utc", GetLocation(oHero));
UT_HireFollower(oFollower);
SetLocalInt(oFollower, CREATURE_REWARD_FLAGS, 0);
SetFollowerApprovalEnabled(oFollower, TRUE);
SetFollowerApprovalDescription(oFollower, 371487);
WR_SetPlotFlag(PLT_GEN00PT_PARTY_KC, GEN_CULLEN_RECRUITED, TRUE);
//Show the party picker
SetPartyPickerGUIStatus(2);
ShowPartyPickerGUI();
}
[/dascript]
Can I just plug "Safe_Destroy_Object(GetObjectByTag("cir230cr_cullen"));" in there somewhere?
#4
Posté 25 juin 2010 - 02:14
Sure you can. You can include that before or after the Hire Follower call - doesn't really matter since he is a different game object.
#5
Posté 25 juin 2010 - 02:15
I tried it. It seemed to work. Thanks.
#6
Posté 25 juin 2010 - 02:33
Could this script be applied to Eamon's Castle (the one that's like the party camp) by just changing the vector positions?
[dascript]
#include "plt_gen00pt_party_kc"
#include "wrappers_h"
#include "utility_h"
void main()
{
object oCullen = GetObjectByTag("kc_cir230cr_cullen");
{
if(GetFollowerState(oCullen) != FOLLOWER_STATE_ACTIVE)
{
SetFollowerState(oCullen, FOLLOWER_STATE_ACTIVE);
SetFollowerState(oCullen, FOLLOWER_STATE_AVAILABLE);
vector vPosition = Vector(134.41,113.905,-0.552629);
location lMoveTo = Location(GetArea(GetHero()), vPosition, 220.0);
command cMove = CommandJumpToLocation(lMoveTo);
AddCommand(oCullen, cMove);
}
}
SetFollowerState(oCullen, FOLLOWER_STATE_AVAILABLE);
vector vPosition = Vector(134.41,113.905,-0.552629);
location lMoveTo = Location(GetArea(GetHero()), vPosition, 220.0);
command cMove = CommandJumpToLocation(lMoveTo);
AddCommand(oCullen, cMove);
}
[/dascript]
[dascript]
#include "plt_gen00pt_party_kc"
#include "wrappers_h"
#include "utility_h"
void main()
{
object oCullen = GetObjectByTag("kc_cir230cr_cullen");
{
if(GetFollowerState(oCullen) != FOLLOWER_STATE_ACTIVE)
{
SetFollowerState(oCullen, FOLLOWER_STATE_ACTIVE);
SetFollowerState(oCullen, FOLLOWER_STATE_AVAILABLE);
vector vPosition = Vector(134.41,113.905,-0.552629);
location lMoveTo = Location(GetArea(GetHero()), vPosition, 220.0);
command cMove = CommandJumpToLocation(lMoveTo);
AddCommand(oCullen, cMove);
}
}
SetFollowerState(oCullen, FOLLOWER_STATE_AVAILABLE);
vector vPosition = Vector(134.41,113.905,-0.552629);
location lMoveTo = Location(GetArea(GetHero()), vPosition, 220.0);
command cMove = CommandJumpToLocation(lMoveTo);
AddCommand(oCullen, cMove);
}
[/dascript]
Modifié par satans_karma, 25 juin 2010 - 06:09 .





Retour en haut







