-
Content Count
1,398 -
Joined
-
Last visited
-
Days Won
47
Content Type
Profiles
Forums
Blogs
Forum & Tracker Requests
Downloads
Gallery
Store
Calendar
Everything posted by Salk
-
Well, I am truly delighted. Thanks, AmanoJyaku! And DP too, of course. I cannot even begin to count how many headaches having these means one year ago would have spared.
-
I modified the necessary files so that the game shows the desired times in dialogues creating this following new file, called on heartbeat in the area: void SetTokenRaceTime(int nToken, int nRacerTime) { // calculate the time components int nMinutes = nRacerTime/6000; int nSeconds = (nRacerTime - (nMinutes * 6000)) / 100; int nFractions = nRacerTime - ((nMinutes * 6000) + (nSeconds * 100)); //building the time string string sTime = IntToString(nMinutes) + ":"; if (nSeconds < 10) { sTime = sTime + "0"; } sTime = sTime + IntToString(nSeconds) + ":"; if(nFractions < 10) { sTime = sTime + "0"; } sTime = sTime + IntToString(nFractions); SetCustomToken(nToken,sTime); } void main() { int QUEEDLE_TIME = 3012; int CASSANDRA_TIME = 2616; int JAX_TIME = 2363; int CHAMP_TIME = 2298; SetTokenRaceTime(18, QUEEDLE_TIME); SetTokenRaceTime(19, CASSANDRA_TIME); SetTokenRaceTime(20, JAX_TIME); SetTokenRaceTime(21, CHAMP_TIME); } This code changes the custom tokens (I have a similar one for Tatooine) in the dialogues so that the times displayed in dialogues are the ones I want. But at the end of each race the game uses a global variable to check whether the player has won or lost and that variable is set using the original racing times. That's why I tried to create a new WON/LOST conditional script that no longer depends on checking that variable but rather compares the Player's time in the last race (which is stored in CUSTOM17 for Manaan) and the opponent's record time. The problem is that there is no way, it seems, to retrieve that CUSTOM17 value from script. And that goes against what that person that wrote the tutorial said. The reason I cannot try and change things directly in the original script is, of course, that it doesn't decompile. Cheers!
-
I'm trying to change the record times to beat for the different tiers in the swoop races on Manaan and Tatooine.
-
It does work in the dialogue file. It's when assigned to a string that doesn't work.
-
I suppose there is no solution then. It's really quite frustrating that Bioware didn't bother writing a simple GetCustomToken function to retrieve the value and it's even more frustrating to find a "tutorial" whose author didn't even bother to test the veracity of their own code. If someone else has any other idea however, I'd be overjoyed. Thanks!
-
Weird... The BarkString DOES return the token's value instead... Either I need more coffee (which I don't drink) like our friend above or the April's fool is on me today. void main { string sLastTimeManaan = GetStringByStrRef(49415); BarkString(OBJECT_SELF, 49415); SendMessageToPC(GetFirstPC(), sLastTimeManaan); } The BarkString() correctly retrieves the value of the token while the message feedback reports <CUSTOM17>. More ideas? Cheers!
-
That's exactly what I did but GetStringByStrRef() returns <CUSTOMxx>, not its value. My STR 49415 is <CUSTOM17> (this should be the token used to store the time for the player's latest race on Manaan). and this is my code: int Result (int nResult) { SetGlobalBoolean("MAN_JUST_RACED", FALSE); return nResult; } int StartingConditional() { if (GetGlobalBoolean("MAN_JUST_RACED") == TRUE) { string sLastTimeManaan = GetStringByStrRef(49415); string sLastTimeManaanMinutes = GetSubString(sLastTimeManaan, 0, 1); string sLastTimeManaanSeconds = GetSubString(sLastTimeManaan, 2, 2); string sLastTimeManaanFractions = GetSubString(sLastTimeManaan, 5, 2); //string sOpponentTimeManaan; if (GetGlobalNumber("CRI_SWP_RESULT") == 1) { //sOpponentTimeManaan = "0:30:12"; if (StringToInt(sLastTimeManaanMinutes) > 0) { return Result(1); } else if (StringToInt(sLastTimeManaanSeconds) > 30) { return Result(1); } else if (StringToInt(sLastTimeManaanSeconds) > 12) { return Result(1); } else { return 0; } } else if (GetGlobalNumber("CRI_SWP_RESULT") == 2) { //sOpponentTimeManaan = "0:26:16"; if (StringToInt(sLastTimeManaanMinutes) > 0) { return Result(1); } else if (StringToInt(sLastTimeManaanSeconds) > 26) { return Result(1); } else if (StringToInt(sLastTimeManaanSeconds) > 16) { return Result(1); } else { return 0; } } else if (GetGlobalNumber("CRI_SWP_RESULT") == 3) { //sOpponentTimeManaan = "0:23:63"; if (StringToInt(sLastTimeManaanMinutes) > 0) { return Result(1); } else if (StringToInt(sLastTimeManaanSeconds) > 23) { return Result(1); } else if (StringToInt(sLastTimeManaanSeconds) > 63) { return Result(1); } else { return 0; } } else { //sOpponentTimeManaan = "0:22:98"; if (StringToInt(sLastTimeManaanMinutes) > 0) { return Result(1); } else if (StringToInt(sLastTimeManaanSeconds) > 22) { return Result(1); } else if (StringToInt(sLastTimeManaanSeconds) > 98) { return Result(1); } else { return 0; } } } else { return 0; } }
-
Hello again! I was wondering if someone would know how to retrieve the value of custom tokens. The game doesn't unfortunately have a GetCustomToken() function but earlier I found something that gave me hope, although it was short-lived. There is this tutorial from I don't know when and by I don't know who which says: Custom Tokens: The Custom Tokens are slightly different from the Game Tokens. For one thing, to use them them you have to use the format <CUSTOM#>, where "#" is a number between 0 to 2147483647. In practice, however, the game uses 0-9 and the WhereAmI band mod uses 61 and 62, so I'd avoid those in TSL. Also, in K1, the K1R mod uses 1998-2030(or around there) for the Pazaak Tourney, so I'd really avoid those...:) To set a Custom Token: void main() { // Syntax for the function: SetCustomToken(int iTokenToSet, string sMessage) SetCustomToken(2000, "Hi, I'm token 2000!"); } Though there is no GetCustomToken function, you can still check the value in a script: void main() { string sToken = "<CUSTOM2000>"; if(sToken == "Hi, I'm token 2000") { SendMessageToPC(GetFirstPC(), "Yep, this is it."); } else { SendMessageToPC(GetFirstPC(), "No, it's not it."); } } Unfortunately it seems that string sToken returns "<CUSTOM2000>" rather than the content of the token. The NWN Lexicon here under "Token Duplication" speaks of another method using two other functions that are not present in KotOR (SetLocalString() and GetLocalString()). The game uses <CUSTOM17> and <CUSTOM 26> to store the time for the latest swoop race and I need to retrieve those values. Any idea? Thanks a lot!
-
I'm not sure I understand the question correctly but yes, it is very possible to spawn creatures in the SW:KotOR 1 and 2 games. What kind of mod were you looking for?
-
eXtensive Dialog Overhaul -beta- for KotOR 1.03
Salk replied to Gimmick5000's topic in Work In Progress
STR 4261: it's own -> its own STR 4574: find my self -> find myself -
eXtensive Dialog Overhaul -beta- for KotOR 1.03
Salk replied to Gimmick5000's topic in Work In Progress
STR 18169: your Selkath -> you Selkath (although the VO erroneously says "your") -
A clear improvement. The issue I reported seems to be gone. Cheers!
-
It seems there is a problem with at least the comm_a_f head model. The issue is more prominent under certain light conditions and is affecting the corners of the mouth. Since a picture tells more than 1000 words...
-
Hello! While examining the man26_sunry.dlg file (manm26aa module), I noticed that there should be a way to confront Sunry about his affair with Elora by showing him an item (W_RDATAPAD) if you fail to persuade him to admit to it. Apparently, this item is non existent but I might be interested in introducing it. I was thinking of placing it in the Sith Embassy (the mysterious man speaks of visiting the Sith Embassy too to gather more evidence about the Sunry Trial). Any suggestion/advice? Cheers!
-
Hello! Somehow the modification swapped place for the conditional script k_pman_comp66 which is moved to the Script to Fire slot in the man26_bigcomp.dlg file. The original game file does not have this problem.
- 13 replies
-
- 1
-
-
I love the custom animation you created for the protagonist! I am not familiar with Battlefront2 but the effect of this new Force Power (very nice icon as well) seem a little odd to me... The enemies are... levitating and at the same time being chocked? Perhaps it would feel like it belongs more to the KotOR series if the enemy would instead be all caught into a whirlpool animation but I realize that was not your initial intention. Very good initiative though and, again, wonderful custom animation and icon! Congratulations!
-
Thanks Kexikus! I'm happy to report my testing was successful and now the scuba walk has appropriate footsteps sounds.
-
Hello! I don't like the footstep sounds for the water suit on the sea floor of Manaan. I believe they are completely inappropriate and I'm trying to understand if it is possible to replace them. From what I understand I would first need to create a new set of footstep sounds (they usually come in triplets fs_XXXXXXXXXX.wav) which I have done, then either add a new row to footstepsounds.2da or use one of the unused existing slot in that table (it has 11 slots and it seems 4 and 7 are unused). Lastly, I should input the slot number under the footsteptype column in appearance.2da. This same table also has a column called soundapptype. Does anyone know what it is used for? Any advice? Thanks!
-
As much as I wish for that, I doubt there will be any development here. blinkyzero has not even logged in here for 2 and half years. A real pity.
-
eXtensive Dialog Overhaul -beta- for KotOR 1.03
Salk replied to Gimmick5000's topic in Work In Progress
One more: (2x) reprecussions -> repercussions -
Hello! You just need to download the file from here then extract the content of the archive and run the TSLPatcher.exe file
-
Hello uwadmin12! I was wondering if it may actually be a good idea to force your workaround (a very short stun effect after the knockdown) to every enemy that is affected by the knockdown. In this way, there wouldn't be any special case that may fall through the net and after being knocked out it is not so unreasonable to think a short stun effect is appropriate. Cheers!
-
Hello! I'd not have any problems testing a modified script but I checked the Selkath and it has RACIAL_TYPE_HUMAN and SUBRACE_NONE and that's why it won't be caught in the second condition check of yours. I suppose I could just tweak this line: } else if (GetRacialType(oTarget) == RACIAL_TYPE_HUMAN && GetSubRace(oTarget) != SUBRACE_NONE) { to: } else if ((GetRacialType(oTarget) == RACIAL_TYPE_HUMAN && GetSubRace(oTarget) != SUBRACE_NONE) || (GetTag(oTarget) == "man28_inssel")) { This wouldn't break anything. I'll test it and then let you know. Cheers!
-
bead-v, thanks for the suggestion but I took another route. I used SetPlayerRestrictMode() which suits me even better in this particular case. DP, I followed your advice and now there is a choke effect for every HP loss. Of course if the player enter the conversation already with very low HPs there won't be additional damage thus no extra chocking animation other than the initial and final ones.