DarthParametric

Members
  • Content Count

    3,699
  • Joined

  • Days Won

    380

Everything posted by DarthParametric

  1. Ah. That would presumably be where they have both a Sound (for generic alien/droid-speak) and a VO_ResRef rather than one or the other.
  2. No. Most of the vanilla textures in the PC version already have it as part of their TXI data. The engine should just ignore anything that isn't valid.
  3. It doesn't do anything. It's not an engine semantic, it was used by Bioware's texture compiler when creating TPCs and TXBs. It would downres the source texture into a 256x256 TXB, whereas the TPC would remain the original 512x512 or whatever it was.
  4. The mod uses TSLPatcher to install, which is a Windows executable. You'd have to run it under Wine or something similar. But structurally the game content should be the same.
  5. There shouldn't be any issues as long as you don't just duplicate it but edit it appropriately. For example: //Check for banter 12 if (!GetGlobalBoolean("G_Banter12") && IsNPCPartyMember(NPC_T3_M4) && IsNPCPartyMember(INSERT_NPC_ID_HERE) && GetDistanceBetween(GetPartyMemberByIndex(0), GetPartyMemberByIndex(1)) <= 5.0 && GetDistanceBetween(GetPartyMemberByIndex(0), GetPartyMemberByIndex(2)) <= 5.0 && GetDistanceBetween(GetPartyMemberByIndex(1), GetPartyMemberByIndex(2)) <= 5.0) { AssignCommand(GetPartyMemberByIndex(0),ClearAllActions()); AssignCommand(GetPartyMemberByIndex(1),ClearAllActions()); AssignCommand(GetPartyMemberByIndex(2),ClearAllActions()); UT_SetTalkedToBooleanFlag(OBJECT_SELF); ActionStartConversation(GetFirstPC(),"Banter"); } Insert it below case 11. You'll see there's a gap above the last three closing braces: ActionStartConversation(GetFirstPC(),"Banter"); } // INSERT NEW ENTRY HERE } } } Just make sure the boolean name matches whatever you choose for your added ones. For the DLG, you'll need a new starting conditional. The vanilla ones also have a second script to set the global to true, but you can just roll that directly into the starting conditional, like so: int StartingConditional() { if (!GetGlobalBoolean("G_Banter12") && IsNPCPartyMember(NPC_T3_M4) && IsNPCPartyMember(INSERT_NPC_ID_HERE)) { SetGlobalBoolean("G_Banter12", TRUE); return TRUE; } else { return FALSE; } }
  6. Leaving aside the fact that I thought the entire point was to add new banter, not replace the existing ones, how do you expect me to know what's wrong when you haven't even said what you have done and provided the scripts, DLG, etc.?
  7. MDLEdit decompiles a binary model into memory when loaded, so there's no need to generate physical ASCIIs unless you intend to load them in Max/GMax. I don't believe MDLOps supports the Xbox format, no. Perhaps @seedhartha could be convinced to add Xbox support to KBlender (which now imports/exports binaries directly) if you ask nicely. I'm not familiar with the differences between the PC and Xbox formats, so I couldn't really say what in particular could be causing issues. The only time I have seen something similar is with ye olde MDLOps mangling meshes, so my guess would be that MDLEdit is doing something incorrectly for those models for some reason.
  8. There's no reason it shouldn't run under Win 10. It requires Java though, which is less than ideal. You could always spin up a Win 7 VM and run it under that if you want to contain the taint. Edit: Added the Upari amulet fix to K1CP - https://github.com/KOTORCommunityPatches/K1_Community_Patch/blob/master/Source/k_pkas_hurtgive.nss
  9. You really should just grab DeNCS. void main() { object oPC = GetPCSpeaker(); object oCrystal = GetItemPossessedBy(OBJECT_SELF, "kas25_wookcrysta"); ActionGiveItem(oCrystal, oPC); } The problem is the UTC doesn't actually have the item in its inventory. They used ActionGiveItem because that makes the NPC walk to the PC and do an animation, but it needs to either be switched to a CreateItemOnObject directly spawning it into the PC's inventory, or it needs to first be spawned into the Wookiee's inventory and then given to the PC, or the Wookiee's UTC needs to be edited to add it. If you find a problem that either Community Patch doesn't address, you can just raise an issue for it on the repo. I've added this one (and I also see an issue with the heal scripts).
  10. Since you can't actually add new companions, just replace the vanilla ones, I assume he's using either Jolee, Juhani, Zaalbar, or HK's slot? As such he will potentially incorrectly trigger certain vanilla banters because the script only checks the character slot is active in the party, not what the tag of the actual NPC is. You'll probably need to add a tag check to prevent the appropriate vanilla banters accidentally firing, if there are any. And, likewise, also add a tag check to only trigger your new ones correctly. I haven't looked at the DLG or the associated scripts (I gather that's what the starting conditional script in the first post is), but I assume it is setting the appropriate global to true once a given scene has started, so you'll need to replicate that behaviour as well for your added DLG nodes.
  11. Creating new globals is as simple as adding them to the end of the 2DA. It will require starting a new game for them to work though. Adding extra custom conditions to trigger your banters will require editing the k_bant_trig script. I'm not sure how many total triggers are in the game, so keep in mind that adding additional banters means potentially reducing the likelihood of seeing vanilla banters, since each trigger will only fire once (unless you change the TALKED_TO local boolean checking/setting in k_bant_trig).
  12. As the script says, it's a global boolean. Or technically 11 booleans. The globals are defined in globalcat.2da. The banters are fired by triggers in various modules. They should all use the same global trigger template, k_bant_trig.utt which uses the global script k_bant_trig as its OnEnter. Since 11 cases already exist for vanilla banters, you'd need to add new globals and new conditions for your added banters.
  13. The ones in the archive are just the vanilla scripts so you don't need any special permission. You can credit me for supplying them if you want, but all I did was decompile them and tidy them up a bit so it's really Bioware's work not mine. For compatibility purposes we encourage people to look at K1CP's source, available here, which people are free to use as a basis for their own mods as long as credit is provided. You are likely running it from inside Program Files. Don't put/install anything there and your life will be much easier. Windows is particularly bitchy about permissions there.
  14. Probably, if someone other than me wanted to go to that much effort.
  15. Module scripts only exist as binaries. They need to be decompiled. Currently the only option is DeNCS - https://web.archive.org/web/20160405105949/http://starwarsknights.com/mtools/DeNCS.zip Attached are the vanilla module scripts that I have already previously decompiled and cleaned up while working on K1CP. unk_m44ac_Lehon_Temple_Summit_Selected_Source.zip
  16. You say that like I'm supposed to know what it is, but I gather from your subsequent comment that the game is running under a 360 emulator. Assuming everything else is working correctly, it's mostly likely a MDLEdit issue with the conversion. Make sure you are using the most recent beta version, not the outdated one from the official release thread.
  17. Yes, the script exitheart: #include "k_inc_debug" void main() { if (GetIsObjectValid(GetObjectByTag("jolee", 0)) == FALSE && GetIsObjectValid(GetObjectByTag("juhani", 0)) == FALSE && GetGlobalNumber("G_FinalChoice") == 1) { Db_PostString("start conv", 5, 5, 1.0); if (GetIsObjectValid(GetObjectByTag("bastila", 0)) == TRUE) { Db_PostString("bast valid", 5, 6, 1.0); } else { Db_PostString("bast not valid", 5, 6, 1.0); } AssignCommand(GetObjectByTag("bastila", 0), ClearAllActions()); DelayCommand(0.5, AssignCommand(GetObjectByTag("bastila", 0), ActionStartConversation(GetFirstPC(), "unk44_exittrig", FALSE, 0, TRUE))); DelayCommand(1.0, DestroyObject(OBJECT_SELF)); } } I just modified this script last week for the next version of K1CP, which you may wish to use as a basis - https://github.com/KOTORCommunityPatches/K1_Community_Patch/blob/master/Source/exitheart.nss All you'd need to do is remove the check for Juhani. This was a failure on Bioware's part to toggle SetLightsaberPowered back off. I also dealt with this in the K1CP versions of the scene's scripts. Look at the "see also" list in the above link. The computer's OnUsed script (k_punk_comptalk) gates the DLG to prevent its conversation firing before the showdown with Bastila is resolved. The DS route is another simple GetIsObjectValid check. The version you attached won't decompile, so I can't tell what's wrong with it. You need to provide the source (NSS).
  18. Beggars can't be choosers. Besides, the master robe looks ugly.
  19. It's either a character length issue or a permissions issue. Have a look at this similar issue someone else had recently and try the suggestions listed - https://github.com/KOTORCommunityPatches/K1_Community_Patch/issues/475
  20. Stop using Workshop mods. Especially stop using stolen Workshop mods.
  21. Not entirely true, given the 2DA row limit bug. Multiple installations of any K1 mod that edits placeables.2da will absolutely break it (even just a few mods installed normally will probably push it past its limit) and reinstalling large mods with numerous appearance additions could similarly break appearance.2da. Starting from a clean install is always advisable, especially when installing large and/or multiple mods.
  22. Your problems are straightforward. In the first instance, you haven't declared the variables properly. Per nwscript.nss: void RemoveJournalQuestEntry(string szPlotID); Since the plot ID is a string it must be inside double quotes, like so: RemoveJournalQuestEntry("tat_IzizCaptive"); Note that this function removes the quest, as stated - i.e. deletes it entirely. Typically you will want to advance a quest to a closed stage, assuming one is available, so that it is still viewable by the player in the completed quests tab. You can do that with: void AddJournalQuestEntry(string szPlotID, int nState, int bAllowOverrideHigher=FALSE); Where you state the state number you want. The final TRUE/FALSE variable allows you to override a high numbered plot state (e.g. 90) with a lower number one (i.e. 20) if that is required. Typically it's not needed, but there are a handful of vanilla quests that have low numbered end states. If you are making your own custom quests, as seems to be the case here given the plot ID, then you can avoid that being a problem by using incrementing state numbers with the ending/s using the highest value/s. If instead you are trying to deal with the vanilla quest, its plot ID is tat17aa_jawarescue (all the quests are found in global.jrl). Also note that quest states can be set directly via a DLG, as is the case here when talking to the Jawa you free in the Sandpeople Enclave. For the second instance, as the compiler error stated, you have an undeclared variable, oPC. You either need to declare it in your script, like so: object oPC = GetFirstPC(); Or simply change your existing line to: GiveXPToCreature(GetFirstPC(), 250);
  23. Cool. I'm looking forward to finally being able to decode some of those holdout scripts that still remain impervious to DeNCS's charms (like some of the Star Forge level 4 ones for example). If you manage to release something before the end of the year we can clear out the last of the remaining hijacked scripts in K1CP before v1.9 releases.