Salk

Members
  • Content Count

    1,346
  • Joined

  • Last visited

  • Days Won

    43

Everything posted by Salk

  1. I'm trying to change the record times to beat for the different tiers in the swoop races on Manaan and Tatooine.
  2. It does work in the dialogue file. It's when assigned to a string that doesn't work.
  3. 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!
  4. 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!
  5. 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; } }
  6. 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!
  7. 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?
  8. STR 4261: it's own -> its own STR 4574: find my self -> find myself
  9. STR 18169: your Selkath -> you Selkath (although the VO erroneously says "your")
  10. Salk

    TOOL:tpcview

    Great tool! Thanks, ndix UR!
  11. A clear improvement. The issue I reported seems to be gone. Cheers!
  12. 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...
  13. 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!
  14. 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.
  15. 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!
  16. Thanks Kexikus! I'm happy to report my testing was successful and now the scuba walk has appropriate footsteps sounds.
  17. 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!
  18. 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.
  19. Hello! You just need to download the file from here then extract the content of the archive and run the TSLPatcher.exe file
  20. 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!
  21. 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!
  22. 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.
  23. There are many instances of "targetting" in the dialog.tlk. Shouldn't it be "targeting"?
  24. That's how I did initially but then I wouldn't get the wounded animation which I want to have right from the start. This solution is not ideal but is the closest to what I imagined. I'm actually even more bothered by some inconsistencies that I cannot do anything about (still part of this scene): 1: The VO talking to the player in plural, even if no party members can follow in there 2: The VO mentioning opening a door when instead it's a force field Oh well, cannot have everything...