jastey Posted August 29, 2021 Posted August 29, 2021 I need a second pair of eyes. I define this in the ALWAYS section: ACTION_IF GAME_IS ~bgee~ THEN BEGIN OUTER_SPRINT ~eet_2~ ~~ END ACTION_IF GAME_IS ~eet~ THEN BEGIN OUTER_SPRINT ~eet_2~ ~2~ END But it throws an error at all instances where I'm using %eet_2% in the tp2: instance 1: ADD_JOURNAL EXISTING TITLE (#%eet_2%59615) @10000 @10001 @10002 @10003 @10004 @10005 @10006 @10007 @10008 @10009 @10010 @10011 @10012 @10013 @10014 @10015 @10016 @10017 @10018 @10019 @10020 @10021 @10022 @10023 @10024 @10025 @10026 @10027 @10028 @10029 @10030 @10031 USING ~sodrtd/translations/autotra/%LANGUAGE%/game.tra~ instance 2: COPY_EXISTING ~sodrtd/cre/c#rtdblc.cre~ ~override/c#rtdblc.cre~ SAY NAME1 ~Karlen~ SAY NAME2 ~Karlen~ SAY SELECT_COMMON1 #%eet_2%69456 Wrapping it in ~~ makes it writing a string, not a number. Adding EVAL gave an error, too. Using OUTER_SET instead gave an error. Using this inside a d-file works like a charm. I know I am missing something obvious. Any hints welcome. Quote
argent77 Posted August 29, 2021 Posted August 29, 2021 Variable replacement cannot be performed for instances where WeiDU expects a numeric value or an expression. There are several ways around it though. For SAY you can use WRITE_LONG instead. The ADD_JOURNAL action is more limited, but it's possible to include variable replacements if you build the command dynamically and INCLUDE it. Btw, simply prefixing existing strrefs by "2" can be dangerous if the strref in question is either less than 10000, or greater than 100000. It's much safer to add 200000 as a number instead. ALWAYS OUTER_SET eet_2 = GAME_IS ~eet~ ? 200000 : 0 END // Build ADD_JOURNAL command dynamically <<<<<<<< .../inlined/my_mod/journal.tph >>>>>>>> OUTER_SET title_strref = eet_2 + 59615 APPEND_OUTER - ~.../inlined/my_mod/journal.tph~ "ADD_JOURNAL EXISTING TITLE (#%title_strref%) @10000 @10001 @10002 @10003 @10004 @10005 @10006 @10007 @10008 @10009 @10010 @10011 @10012 @10013 @10014 @10015 @10016 @10017 @10018 @10019 @10020 @10021 @10022 @10023 @10024 @10025 @10026 @10027 @10028 @10029 @10030 @10031 USING ~sodrtd/translations/autotra/%LANGUAGE%/game.tra~" INCLUDE ~.../inlined/my_mod/journal.tph~ // Replace SAY by WRITE_LONG COPY_EXISTING ~sodrtd/cre/c#rtdblc.cre~ ~override/c#rtdblc.cre~ SAY NAME1 ~Karlen~ SAY NAME2 ~Karlen~ WRITE_LONG SELECT_COMMON1 (eet_2 + 69456) Quote
jastey Posted August 29, 2021 Author Posted August 29, 2021 @argent77 thank you very much for the answer with examples. I am using the OUTER_SPRINT inside of d-files and it seems to work. Am I outsmarting WeiDU there? EDIT: I already got a very good explanation from @Taimon for why it works inside a d-file. Thanks! At least this inside a d-file: == BDCAELAR #%eet_2%39143 /* How many have scorned me these past months? How many believed it mad to open the portal to Avernus? I could not ask. I could not risk your refusal. */ looks right if compiled/decompiled: IF ~~ THEN BEGIN 100 // from: 99.0 SAY #39143 /* ~How many have scorned me these past months? How many believed it mad to open the portal to Avernus? I could not ask. I could not risk your refusal.~ */ IF ~~ THEN GOTO 101 END ...My next question would be how to work with OUTER_SET inside a d-file (if necessary)... Quote
Recommended Posts
Join the conversation
You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.