CactusCole

Members
  • Content Count

    25
  • Joined

  • Last visited

Everything posted by CactusCole

  1. I want to convert an entire erf into tga files. This would be the only way to do it besides doing it by hand no?
  2. Found it it's the .are file, didn't notice the OnEnter and OnUserDefined scripts before
  3. When you use the function GetArea() what type of object does it return? An area object, a trigger, a placeable? I know it has an OnUserDefined event because they used SignalEvent(GetArea(OBJECT_SELF), EventOnUserDefined(20)); Where would I find these area objects because they don't exist in the blueprints?
  4. Finally got it to work I did exactly what Kexikus told me. For some reason though, using "extract for module editing" doesn't work and you have to extract both .rim files using "extract entire RIM file"
  5. Still doesn't work, the loading bar gets stuck at 20%. Here's what I did exactly: 1. open ERF/MOD builder 2. set output file name to end_m01aa.mod 3. set output file type to MOD 4. Click add files and add 3 .utc, 3 .ncs, 1 .git, and 1 .ifo files 5. Press Build 6. Put the file into the modules folder What am I doing wrong?
  6. I packed the .git but not the .ifo. Is that why it doesn't work? Do I always need to pack the.ifo in there?
  7. Should I place the files I modified (in this case some .utc files, some .ncs, and a .git) in a mod file or just the .git and put the rest in override? I tried putting all of them in a .mod file and putting it in the modules folder but the game wouldn't load it was stuck at 0%.
  8. I'm only a beginner so I could be wrong, but for triggering a conversation when a group of enemies dies here's how they did it for the very fist encounter on the endar spire: In the OnSpawn script for the two sith the local boolean SW_FLAG_EVENT_ON_DEATH is set to true. What this does is trigger the OnUserDefined event when OnDeath is triggered. This is because of a conditional in the default OnDeath script, k_def_death01.nss I think. Actually, each default event script has a corresponding SW_FLAG_EVENT_ON_* boolean that triggers OnUserDefined. So once each of the sith die their OnUserDefined script activates and that script first checks if a global number representing the amount of dead enemies (in this case it's called END_ROOM3_DEAD) is greater than or equal to 1 and if so the conversation occurs. If you haven't killed all the enemies yet then the global number is incremented. In this case there are 2 sith you have to kill which leads me to believe that all global numbers are initialized as -1. Someone please correct me if I'm wrong. Now if you wanna make your own script then what you gotta do is go into globalcat.2da where all the global numbers/booleans are stored and add a new global number to represent the amount of dead enemies. Then add a line in the OnSpawn script that sets SW_FLAG_EVENT_ON_DEATH to true SetLocalBoolean(OBJECT_SELF, SW_FLAG_EVENT_ON_DEATH, TRUE); Then make a custom OnUserDefined script or add to the existing one. Here is the decompiled OnUserDefined script of those sith: void main() { int int1 = GetUserDefinedEventNumber(); if ((int1 == 1001)) { } else { if ((int1 == 1002)) { } else { if ((int1 == 1003)) { } else { if ((int1 == 1004)) { } else { if ((int1 == 1005)) { } else { if ((int1 == 1006)) { } else { if ((int1 == 1007)) { int nGlobal = GetGlobalNumber("END_ROOM3_DEAD"); object object1 = sub1(); object oPC = GetFirstPC(); int nCurHP = GetCurrentHitPoints(oPC); int nMaxHP = GetMaxHitPoints(oPC); int int9 = GetCurrentHitPoints(object1); int int11 = GetMaxHitPoints(object1); if ((nGlobal >= 1)) { sub2(intGLOB_163); // TRASK_ROOM3_DONE SetLocked(GetObjectByTag("end_door05", 0), 0); if (((int9 < int11) || (nCurHP < nMaxHP))) { CancelCombat(sub1()); CancelCombat(GetFirstPC()); DelayCommand(1.0, sub3()); } } SetGlobalNumber("END_ROOM3_DEAD", (nGlobal + 1)); } else { if ((int1 == 1008)) { } else { if ((int1 == 1009)) { } else { if ((int1 == 1010)) { } else { if ((int1 == intGLOB_21)) { sub4("wp_homebase"); } } } } } } } } } } } } Each default OnEvent script has its own OnUserDefinedEventNumber() that can be used in a script like this to determine which event is triggering OnUserDefined. In this case the OnDeath event number is 1007. Actually this script is decompiled they probably used a switch statement in the original source code instead of these nested if statements. You can also just delete the nested if statements if you want and just check if the event number is 1007. Then just do what they did and check if (nGlobal >= number_of_dead_enemies) then trigger the conversation but make sure to cancel combat like they did: CancelCombat(sub1()); CancelCombat(GetFirstPC()); DelayCommand(1.0, sub3()); sub1() returns Trask and sub3() I'm assuming is ActionStartConversation().
  9. Which file are they stored in? For example the global number END_TRASK_DLG?
  10. I see, it works now if I run it directly but it didn't before which is why I used the command line. The decompiled code doesn't appear in the GUI but when I save it I could open the file to view it. Guess it's not an error I need to worry about. Thanks for all the help
  11. Yeah I did that already. The full thing says OUTPUT>Lookup path root set to: C:/NeverwinterNights/Nwn/ OUTPUT>Error: Couldn't initialize the NwnStdLoader nwnnsscomp decompile of old compiled file failed. Check code. Not sure what the lookup path root is but I tried creating those directories and placing the files in there as well. Still didn't work
  12. Do I need NWN to run it? I'm getting this error: Couldn't initialize the NwnStdLoader
  13. Thanks, not sure how I missed that. Is there a way to decompile the scripts if I wanted to modify them?
  14. So I'm trying to understand how everything works and is structured and I when I was looking at triggers some of them use scripts that I can't find. For example, the trigger called bridgeexplosi001.utt (the very first one listed in the first endar spire module) uses the script k_pend_bridge05.nss which is not found in the directory containing all the scripts. Is it located somewhere else or how does the trigger work? Also as a side question under dynamic area info how are triggers defined? I see each of them uses a list of structs defining its geometry, the reference to the blueprint, and then its position and orientation. Specifically, what is the geometry section defining? Is it defining a cube and then XPosition, YPosition, etc. define where the cube is? Is there a program I can use to view each level and all the objects within it?
  15. How do you make sure that your mod is compatible with another one? If I want to mod KotOR II how would I make it compatible with the RCM?
  16. Nevermind I found a download link. Should've searched a bit more before posting.
  17. Hi, can anyone point me to a good GFF editor? The ones listed in this thread do not have a download page anymore.
  18. Ok so apparently I am so bad at this that I can't even find the file k_inc_force.nss to see how the existing force powers are scripted. Where exactly is it?
  19. Hello, I'm completely new to modding and I would like to see if I have any interest in it so I wanted to start by trying to create a new force power for KotOR I. I've looked around the forums for a bit but I can't find any threads for beginners. Does anyone have any advice on where to begin? What programs do I need to download, should I have any knowledge in coding, etc.?