• Content Count

  • Joined

  • Last visited

  • Days Won


Salk last won the day on February 22 2019

Salk had the most liked content!

Community Reputation

189 Jedi Grand Master


About Salk

  • Rank
    Jedi Master
  • Birthday 12/30/1973

Profile Information

  • Gender

Recent Profile Visitors

12,428 profile views
  1. No, the fix would override the changes made by K1R (if K1R even makes any change to that .2da file which I don't think it does).
  2. Hello! We can wait for @R2-X2 confirmation but I think the two modifications are already compatible and do not require any specific patch.
  3. 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.
  4. 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!
  5. I'm trying to change the record times to beat for the different tiers in the swoop races on Manaan and Tatooine.
  6. It does work in the dialogue file. It's when assigned to a string that doesn't work.
  7. 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!
  8. 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!
  9. 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; } }
  10. 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!
  11. 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?
  12. STR 4261: it's own -> its own STR 4574: find my self -> find myself
  13. I like this idea but we'd need the VO for the dialogues you are suggesting, which we do not have. So I fear this is quite unpractical. Cheers!
  14. STR 18169: your Selkath -> you Selkath (although the VO erroneously says "your")
  15. Salk


    Great tool! Thanks, ndix UR!