The package can be found here: http://www.nexusmods...onage/mods/4085
Contenu de Karma
Il y a 391 élément(s) pour Karma (recherche limitée depuis 06-août 06)
Par type de contenu
Voir pour ce membre
#16234373 Common Dialogue Files
Posté par
Karma
sur 13 mars 2014 - 05:39
dans
DAO Companion Creators
#16230568 Common Dialogue Files
Posté par
Karma
sur 12 mars 2014 - 09:36
dans
DAO Companion Creators
So this is basically done now. Anyone want to test it? Or look it over and constructively criticize it?
#16207744 Get Random Follower from Pool
Posté par
Karma
sur 08 mars 2014 - 01:46
dans
Scripting
Thanks. I'll give it a try this weekend.
EDIT: I made some small modifications to the script, and it appears to be working at least for my followers. I still need to test it to see if it works with multiple m2da fragments.
One more question though... In the wiki example you provided for GetM2DARowIdFromRowIndex(), you noted, "Random function gives a number between 0 and nRows - 1 however as the first row is invalid and the last row is a lyrium potion we actually want a number between 1 adn nRows," and you accommodated this by adding a "+1" to the Random() line. Is that necessary to do in this case assuming valid m2da rows start at 0? I'm assuming not, but I wanted to confirm.
#16188862 Get Random Follower from Pool
Posté par
Karma
sur 04 mars 2014 - 11:00
dans
Scripting
My understanding of arrays is limited, so this is what I came up with. It compiles, which is weird, because it shouldn't. I'm sure something needs to be fixed, but am I at least on the right track for what you suggested in #2?
object [] arPool = GetPartyPoolList();
int nSize = GetArraySize(arPool);
int [] arAvailablePool;
int i;
object oCurrent;
for(i = 0; i < nSize; i++)
{
oCurrent = arPool[i];
if(!IsHero(oCurrent) && !IsSummoned(oCurrent) && !IsFollowerVanilla(oCurrent) && GetFollowerState(oCurrent, FOLLOWER_STATE_AVAILABLE))
{
arAvailablePool [i] = GetM2DARowIdFromRowIndex(CCC_TABLE_CAPTURED, i);
}
}
int nRandom = Random(GetArraySize(arAvailablePool));
nFollowerID = arAvailablePool[nRandom];
string sFollowerTag = GetM2DAString(CCC_TABLE_CAPTURED, CCC_COL_FOLLOWER_TAG, nFollowerID);
string sPlot = GetM2DAString(CCC_TABLE_CAPTURED, CCC_COL_PARTY_PLOT, nFollowerID);
int nFlag = GetM2DAInt(CCC_TABLE_CAPTURED, CCC_COL_IN_PARTY_FLAG, nFollowerID);
WR_SetFollowerState(GetObjectByTag(sFollowerTag), FOLLOWER_STATE_ACTIVE);
WR_SetPlotFlag(sPlot, nFlag, TRUE);
#16187532 Get Random Follower from Pool
Posté par
Karma
sur 04 mars 2014 - 06:36
dans
Scripting
So let's say that the follower who was randomly selected isn't available. How do I loop it back around and select a different and available follower? It doesn't necessarily have to be another random selection (since, unless I'm mistaken, the random function can't omit numbers); at that point, it could be the next available follower.
#16184306 Get Random Follower from Pool
Posté par
Karma
sur 04 mars 2014 - 12:55
dans
Scripting
I know there is a scripting function that allows us to randomly select a member of the party (I assume this means a member of the active party), but I would like to select a random follower from the party pool. More particularly, I'd like to select the random follower from a pool of ID numbers from an M2DA (the row IDs will probably not be consecutive integers from 0 to whatever). I can think of a couple ways to do it, but neither seems very efficient. Is there a "best practice" method of doing this?
EDIT: More specific question... Does GetM2DAString() et al use the actual row number or does it use the ID number from the first column?
#16173296 DA:O Modders and the New BSN Site
Posté par
Karma
sur 01 mars 2014 - 10:15
dans
General Discussion
I know I'm going to get boos and hisses from the guy doing all the work, but is it possible to catalog the links for the mods from other DA mod hosting sites (e.g. Nexus) as well? Some mods were released on other mod hosting sites but not on BSN for various reasons. Obviously, it's unnecessary to keep copies of the files hosted outside of BSN because those projects are probably not in any danger of being lost, but having a searchable or categorized list of as many DA projects as possible would be really useful for players looking for new mods.
#16165011 DA:O Modders and the New BSN Site
Posté par
Karma
sur 28 février 2014 - 03:52
dans
General Discussion
I'd like to see a comprehensive list of modder resources (especially a list of supplemental programs) similar to what the DA2 forum had posted here.
I'd also like to see a stickied link to that community index/open house website in the Project Announcements & Recruiting forum. (I know it caused some conflict way back when, but it was still a useful resource for players and modders to find content.) And/Or perhaps something of similar organization contained in a single post that can be regularly updated, so players don't have to scroll through 20 pages of project announcements to find what they're looking for. Maybe give new mods top spots on the list, so they can get some more press amongst an ever diminishing population of players.
A stickied post about "where to start" (not that there are a lot of people just learning the toolset, but...) for people just learning the scary toolset would also be nice. Maybe with a list of volunteers who don't mind giving advice via PM if new toolset users are too intimidated by the toolset to potentially embarass themselves by asking dumb questions in public forums.
And for the love of the Maker, can we please make a stickied post that explains how to deal with head morphs in the toolset in newbie language or a link to the toolset wiki tutorial (if there is one)? I feel like we have an abundance of "help me change head morphs" posts.
#16161153 DA:O Modders and the New BSN Site
Posté par
Karma
sur 27 février 2014 - 04:19
dans
General Discussion
There are no "project" pages for building/testing here. No place to upload test files??? The old site still has the ability to create a new project. I just checked it. But, I don't think any of the old groups are working (no new posts allowed).
I noticed in "My Settings" that there is a "Manage Attachments" option (500kb limit). I would have assumed that that was for the PM system, but I don't see anywhere to upload attachments. I just see a "My Media" button in the full PM editor. Again, no link to upload an attachment though.
#16160897 Someone help me before I go insane...
Posté par
Karma
sur 27 février 2014 - 03:09
dans
General Discussion
It's unlikely to be a performance issue for me too. It's a newer gaming rig with plenty of speed to spare.
It's always been like this, but on my old computer, I fixed it somehow. For some reason, I keep thinking that it's a Microsoft Mouse/Keyboard intelli drivers, but I haven't had either on this machine, so I'm probably mis-remembering.
#16157754 Someone help me before I go insane...
Posté par
Karma
sur 26 février 2014 - 11:13
dans
General Discussion
Whenever I'm writing scripts in the toolset, every minute or so I get this dreadful mouse lag that lasts for 5-10 seconds. I remember fixing it once based on something I read in the BSN forums, but I can't remember how anymore nor can I find that forum post (if it even ever existed).
#16154945 Common Dialogue Files
Posté par
Karma
sur 26 février 2014 - 03:33
dans
DAO Companion Creators
I'm working on a new version of CCC that will include support for the conversations with the gauntlet guardian and the sloth demon in addition to the usual cutscene_slideshow and party_events. I designed a way to "split" a conversation into two pieces, so that conversations in which the companions speak in the middle of the conversation can still be amended. The tests I've done were successful (although there was a very short but annoying delay between new dialogue files which hopefully someone here knows how to fix), so it's time for me to move on to using the real dialogues. I do not have B2B copies of the fixed party_events and cutscene_slideshow by ejoslin and TerraEx nor do I have Immortality's Ser Gilmore lines. Does anyone have those as B2Bs? I have made some of the fixes to cutscene_slideshow and party_events that the dialogue experts have made, but certainly not all of them.
#16150584 Welcome!
Posté par
Karma
sur 25 février 2014 - 10:52
dans
DAO Companion Creators
This group is for anyone who creates, tests, or even plays companion mods for DAO. As the group description states, this group was created as a place to discuss authoring dialogue, writing back stories, creating cutscenes, designing new areas, discussing quests, providing feedback, scripting, testing projects, sharing resources, improving compatibility, etc.
Feel free to start discussing companion mods or to introduce yourself.
#16150250 DA:O Modders and the New BSN Site
Posté par
Karma
sur 25 février 2014 - 10:04
dans
General Discussion
I created a group called "DAO Companion Creators" as a sort of catch all group for anyone who creates, tests, or even plays companion mods. It's public but by approval... at least for now. Anyone interested in companion mods is welcome to join.
#16062098 Broken custom function
Posté par
Karma
sur 30 janvier 2014 - 02:56
dans
Scripting
#16029103 Broken custom function
Posté par
Karma
sur 20 janvier 2014 - 07:57
dans
Scripting
The kcGetFollowerApprovalIndex() is basically the copy-paste version of Approval_GetFollowerIndex() just with my companions added at the bottom. It ought to be spitting out the integer that is specified in the approval 2da and that is unique to the companion in question. Is it? I don't know. For a long time, I assumed it was, but lately, I'm not so sure. It appears to be working only sometimes, which is why I'm utterly perplexed. I have other means of accessing that number and I'm implementing them as a test (and possibly as a permanent change), but that's just slapping a band-aid on it. I'd really like to figure out what the problem is, so that I can either fix it properly or avoid it in the future.
#16023933 Broken custom function
Posté par
Karma
sur 19 janvier 2014 - 04:55
dans
Scripting
#16023557 Broken custom function
Posté par
Karma
sur 19 janvier 2014 - 02:41
dans
Scripting
#16023069 Broken custom function
Posté par
Karma
sur 19 janvier 2014 - 12:07
dans
Scripting
2) Already confirmed. Level 1 is in an AL, and level 2 is an area in no area list.
3) Already tried. No go.
I guess it really doesn't matter that much. I used another method to place them in camp that uses even less code and is more accessible to other modders. I'm just getting really annoyed by the number of inexplicable bugs I've found lately. This is only one of many...
The line I added a red arrow to is randomly setting the fired flag for some companions. Something else is also causing one of my companions to be un-hired but not fired. The generated VO for one conversation plays in the .fsb and .fev but won't play in-game. Oh yeah, and the toolset keeps freezing for 5 seconds every 2 minutes making my frustration grow.
#16021600 Broken custom function
Posté par
Karma
sur 18 janvier 2014 - 06:19
dans
Scripting
CREATURE --> LOCATION:
location kcGetCampLocation(object oFollower)
{
string sTag = GetTag(oFollower);
location lLocation;
if(sTag == GEN_FL_CULLEN) lLocation = Location(GetArea(GetHero()), Vector(138.564f, 111.815f, -1.08586f), 180.0f);
else if(sTag == GEN_FL_JOWAN) lLocation = Location(GetArea(GetHero()), Vector(187.728f, 117.281f, -0.187108f), 180.0f);
else if(sTag == GEN_FL_GORIM) lLocation = Location(GetArea(GetHero()), Vector(144.716f, 122.112f, -0.523375f), 0.0f) ;
else if(sTag == GEN_FL_GILMORE) lLocation = Location(GetArea(GetHero()), Vector(130.438f, 118.121f, -0.43786f), 180.0f);
else if(sTag == GEN_FL_TAMLEN) lLocation = Location(GetArea(GetHero()), Vector(162.725f, 112.49f, -1.9237f), -88.5f);
else if(sTag == GEN_FL_SORIS) lLocation = Location(GetArea(GetHero()), Vector(170.45f, 114.992f, -1.97934f), -84.2f);
else if(sTag == GEN_FL_LESKE) lLocation = Location(GetArea(GetHero()), Vector(171.912f, 115.0f, -1.8909f), 106.7f);
else if(sTag == GEN_FL_ADELA && WR_GetPlotFlag(PLT_KCPT_MISC_PARTY, SAAREBAS_HIRED) == TRUE) lLocation = Location(GetArea(GetHero()), Vector(170.786f, 111.907f, -2.03677f), 29.1f);
else if(sTag == GEN_FL_ADELA && WR_GetPlotFlag(PLT_KCPT_MISC_PARTY, SAAREBAS_HIRED) == FALSE) lLocation = Location(GetArea(GetHero()), Vector(169.855f, 109.97f, -1.94591f), 90.0f);
else if(sTag == GEN_FL_TEAGAN) lLocation = Location(GetArea(GetHero()), Vector(135.424f, 124.962f, -0.253687f), -49.8f);
else if(sTag == GEN_FL_SAAREBAS && WR_GetPlotFlag(PLT_KCPT_MISC_PARTY, ADELA_HIRED) == TRUE) lLocation = Location(GetArea(GetHero()), Vector(169.855f, 109.97f, -1.94591f), -163.4f);
else if(sTag == GEN_FL_SAAREBAS && WR_GetPlotFlag(PLT_KCPT_MISC_PARTY, ADELA_HIRED) == FALSE) lLocation = Location(GetArea(GetHero()), Vector(169.855f, 109.97f, -1.94591f), 90.0f);
return lLocation;
}
PLACES CREATURES IN CAMP USING LOCATION FROM PREVIOUS SCRIPT:
void kcPlaceFollowersInCamp()
{
object oArea = GetArea(GetHero());
object [] arParty = GetPartyPoolList();
int nSize = GetArraySize(arParty);
int i;
object oCurrent;
for(i = 0; i < nSize; i++)
{
oCurrent = arParty[i];
if(!IsHero(oCurrent) && !IsSummoned(oCurrent) && IsFollowerKC(oCurrent))
{
SetFollowerState(oCurrent, FOLLOWER_STATE_AVAILABLE);
WR_SetObjectActive(oCurrent, TRUE);
SetImmortal(oCurrent, TRUE);
RW_CatchUpToPlayer(oCurrent);
if (GetTag(oArea) == "cam100ar_camp_plains" || GetTag(oArea) == "cam110ar_camp_arch3" || GetTag(oArea) == "cam104ar_camp_arch1")
{
AddCommand(oCurrent, CommandJumpToLocation(kcGetCampLocation(oCurrent)));
kcFollowerCampAmbient(oCurrent, TRUE);
}
else if (GetTag(oArea) == "cli300ar_redcliffe_castle")
{
AddCommand(oCurrent, CommandJumpToLocation(kcGetRedcliffeLocation(oCurrent)));
kcFollowerCampAmbient(oCurrent, FALSE); //Change to TRUE after ambient is updated
//setting Adela and Tamlen inactive because they are upstairs
if(GetTag(oCurrent) == GEN_FL_TAMLEN || GetTag(oCurrent) == GEN_FL_ADELA)
{
WR_SetObjectActive(oCurrent, FALSE);
}
}
else if (GetTag(oArea) == "cli310ar_redcliffe_castle_2")
{
WR_SetObjectActive(oCurrent, FALSE);
AddCommand(oCurrent, CommandJumpToLocation(kcGetRedcliffeLocation(oCurrent)));
kcFollowerCampAmbient(oCurrent, FALSE); //Change to TRUE after ambient is updated
//setting Adela and Tamlen active because they are placed here
if(GetTag(oCurrent) == GEN_FL_TAMLEN || GetTag(oCurrent) == GEN_FL_ADELA)
{
WR_SetObjectActive(oCurrent, TRUE);
}
}
else if (GetTag(oArea) == "den211ar_arl_eamon_estate_1")
{
AddCommand(oCurrent, CommandJumpToLocation(kcGetDenerimLocation(oCurrent)));
kcFollowerCampAmbient(oCurrent, FALSE); //Change to TRUE after ambient is updated
}
WR_SetPlotFlag(PLT_KCPT_MISC_PARTY, kcGetFollowerInPartyFlag(kcGetFollowerApprovalIndex(oCurrent)), FALSE, FALSE);
------>>>WR_SetPlotFlag(PLT_KCPT_MISC_PARTY, kcGetFollowerInCampFlag(kcGetFollowerApprovalIndex(oCurrent)), TRUE, FALSE);
}
}
}
#15855463 Crafting UI Stopped Showing Up
Posté par
Karma
sur 01 décembre 2013 - 12:20
dans
General Discussion
Just in case someone else has this issue...
Set the hero/followers as "suspended" initially.
Do not use SetPartyLeader().
Turn the hero/followers back on by using the following:
[dascript]
WR_SetObjectActive(oFollower, TRUE);
WR_SetFollowerState(oFollower, FOLLOWER_STATE_ACTIVE, FALSE);
AddCommand(oFollower, CommandJumpToLocation(GetLocation(oNewLeader)));
[/dascript]
Still not sure why that works, but whatever...
#15854464 Crafting UI Stopped Showing Up
Posté par
Karma
sur 30 novembre 2013 - 07:39
dans
General Discussion
This is the situation:
My party enters a fade area I created (all party members can access the crafting UIs at this point). The party talks to a demon who does some hocus pocus on the hero. (I confirmed that this hocus pocus does not affect the usage of the crafting UIs.) A cutscene plays, and afterward, a non-hero party member finds himself transported to a different part of the fade area and battling himself without the others who were previously in the party. (The non-hero can still use the crafting UIs at this stage.) The non-hero kills the ghostly version of himself and is automatically teleported back to the entrance with the other party members now in tow. (Now no one can use the crafting UIs.) If I go back to camp and form a new party, party members who could not use the crafting skills in the fade now can (and companions who never entered the fade can as well); however, the hero still cannot use the crafting skills.
I'm guessing that it has something to do with setting party members active/available/unavailable because that's essentially the only thing I've done between transports. Does setting a party member/hero "unavailable" affect their usage of the crafting UIs if they go from "unavailable" directly to "active"? Are they still at least partially "unavailable"? It seems rather strange...
(I can post the relevant script bits if that would help.)
EDIT:
I've tested some more things... It's still not fixed of course, but at least the problem seems to be getting narrowed down.
1. Followers (including the hero) keep access to the crafting UI if they remain with the party when the non-hero is leading the party. So obviously removing them from the party or how they're added back is what's causing the loss of access to the crafting UI.
2. Access is restored for the non-hero followers as soon as the party picker is called. So whatever the partypicker does restores access. My mod causes the partypicker to set the creature object as active, set the follower state to active, set the local variable "CREATURE_REWARD_FLAGS" to 0, and jumps them to the location of the party leader in addition to whatever the partypicker naturally does.
3. I've tried changing the follower states to available, suspended, and unavailable during the non-hero leading phase, and none prevented the follower (or hero) from losing access to the crafting UIs.
What is the proper way to remove the hero and other followers from the party and add them back later?
#15115060 Preventing follower auto-level on recruit
Posté par
Karma
sur 15 juin 2013 - 12:37
dans
General Discussion
void AL_DoAutoLevelUp(object oChar, int bInitial = FALSE, int bChargenDefault = FALSE)
{
int nTable = _GetTableToUseForAL(oChar);
AL_SpendAttributePoints(oChar, nTable, bChargenDefault);
AL_SpendSkillPoints(oChar, nTable, bInitial);
AL_SpendSpecializationPoints(oChar, nTable);
AL_SpendTalentSpellPoints(oChar, nTable, bInitial);
// -------------------------------------------------------------------------
// Update various UIs
// -------------------------------------------------------------------------
Chargen_SetNumTactics(oChar);
SetCanLevelUp(oChar,Chargen_HasPointsToSpend(oChar));
}
Notice that bInitial is only taken into account for skill points and talent points. So setting it not to autolevel appears to only partially work. You may want to check out the script sys_autolevelup_h just to see how the autolevelup process works.
#15115043 Preventing follower auto-level on recruit
Posté par
Karma
sur 15 juin 2013 - 12:26
dans
General Discussion
If I remember correctly, the function RW_CatchUpToPlayer() sets the XP of the follower to match that of the player (or at least enough to be one level behind the player). You *may* have to add that line in there. Maybe.
MerAnne suggested removing the SetAutoLevelUp() function (although it looks like you've set it not to autolevel, so in theory it shouldn't be autoleveling). Do you have a package selected in your creature file? If so, make sure that it is set to "none."
If all else fails, you could "cancel out" the autolevel by removing all skills/talents/spells (except the starting ones), setting available attribute points to 0, and re-adding the proper number of points after the autolevel is complete.
#14807492 WTF Toolset?
Posté par
Karma
sur 17 avril 2013 - 10:52
dans
Level and Area Creation
- The BioWare Forum
- → Contenu de Karma



