peardox Posted July 4, 2018 Posted July 4, 2018 Go pick some useless NPC - I'm going for Waenglith as she's fairly useless and exists to endgame (unless I kill her) so let's go find her converstations which turn out to be at 09_cv_dawnstars_priestess.stringtable in each localised text/conversations directory - let's go copy her Waenglith is the naggy woman where you pick Xoti up - when you enter the area you're actually triggering a different convobundle to add Xoti to your party. Once you've got Xoti we switch to her personal convo mode. This ain't the best choice I could have made but she's early + late game interactible. Her conversationbundle is big and confusing as well which don't help but if I design around a complex NPC you should find others far easier to Mod. I intend to Mod another NPC to do something useful - a non-vendor who does little other than talk bull**** to fill a forum Req for the "Chest Of Consumables" Again I've automated this for you so grab Waenglith.unix / windows and paste that lot into your command prompt making sure you're still in localised Congrats - you've now got something we can play with - data Pointless? Not in the slightest - we now get to play. As I mentioned earlier Waenglith is boring - does very little so let's give her a Shop and gift you Dead Parrots (hence TT1's Mod being required to follow this) You can do this without the Dead Parrot but then you'll have to substitute DP's UUID for some stock item. Additionally I want to take you thru two versions of translation. Translation #1 is from the fish seller on Port Maje Harbour shes in exported/localised/[lang]/text/conversations/09_bs_fishmonger.stringtable You'll see that this is the en text <Entry> <ID>6</ID> <DefaultText>"Let me see what you have."</DefaultText> <FemaleText /> </Entry> We're going to do all the translations (this is optional but personally I'm going to do it) Open your conversation stringtable I'm English so I'll start here + localised + en + text + conversations + 09_cv_dawnstars_priestess.stringtable At the top you'll see <EntryCount>71</EntryCount> - increase it by one to be safe (we're not sure if it's important but better safe than broken Mod) Now, go to the bottom of the file and copy the pinched phrase above just before </Entries> </StringTableFile> We need to increase the ID of our 'borrowed' string - in this case we'll simply add 100 to it so after the edit it looks like this --- Existing --- <Entry> <ID>72</ID> <DefaultText>"I haven't seen Waenglith so riled in a long time. I like you more and more already."</DefaultText> <FemaleText /> </Entry> --- Existing --- --- Added --- <Entry> <ID>106</ID> <DefaultText>"Let me see what you have."</DefaultText> <FemaleText /> </Entry> --- Added --- --- Existing --- </Entries> </StringTableFile> For easy reference this is "Let me see what you have." in nine (9) langauages - the first line of each entry is merely a pointer for myself so I know what goes where de/text/conversations/09_port_maje <Entry> <ID>6</ID> <DefaultText>"Zeig mir, was du anzubieten hast."</DefaultText> <FemaleText /> </Entry> en/text/conversations/09_port_maje <Entry> <ID>6</ID> <DefaultText>"Let me see what you have."</DefaultText> <FemaleText /> </Entry> es/text/conversations/09_port_maje <Entry> <ID>6</ID> <DefaultText>"Déjame ver qué es lo que tienes".</DefaultText> <FemaleText /> </Entry> fr/text/conversations/09_port_maje <Entry> <ID>6</ID> <DefaultText>"Montrez-moi ce que vous avez."</DefaultText> <FemaleText /> </Entry> it/text/conversations/09_port_maje <Entry> <ID>6</ID> <DefaultText>"Fammi vedere cos'hai."</DefaultText> <FemaleText /> </Entry> pl/text/conversations/09_port_maje <Entry> <ID>6</ID> <DefaultText>„Pokaż, co masz na sprzedaż”.</DefaultText> <FemaleText /> </Entry> pt/text/conversations/09_port_maje <Entry> <ID>6</ID> <DefaultText>"Vamos ver o que você tem aí."</DefaultText> <FemaleText /> </Entry> ru/text/conversations/09_port_maje <Entry> <ID>6</ID> <DefaultText>"Покажи, что у тебя есть".</DefaultText> <FemaleText /> </Entry> zh/text/conversations/09_port_maje <Entry> <ID>6</ID> <DefaultText>“让我看看你都有什么好东西吧。”</DefaultText> <FemaleText /> </Entry> Obviously without my existing / added markers and not dupicating #72 If we repeat this process for all languages using their own versions of exported/localised/[lang]/text/conversations/09_bs_fishmonger.stringtable we have a fully translated string in #pos 106 Now let's create some original text which is a good reason for me to watch Python's Parrot sketch I've settled on "Have you got a Norwegian Blue?" - this only makes sense if you understand the joke and will result in the gifting of TT1's Dead Parrot (as presented you can spam DP - there are ways around this I'll explain if anyone wants but as this is a complex subject involving Globals I'm skipping that for this one) So - lets start off patching that into our stringtable at #107 Similarly to above we want a new entry with a new ID <Entry> <ID>107</ID> <DefaultText>"Have you got a Norwegian Blue?"</DefaultText> <FemaleText /> </Entry> This needs to keep our stringtable valid so again needs to go before the </Entries> and we need to update <EntryCount>71</EntryCount> to 73 and save the file. We now repeat this process on all other translations I'll use Google Translate to so them - it's not going to be perfect but until we get some translators available at least we have SOMETHING - it's better than making someone read a language they don't understand. I get - any translation errors, blame Google de - Hast du ein Norwegisches Blau? es - ¿Tienes un azul noruego? en - <We're translating from this one> fr - Avez-vous un bleu norvégien? it - Hai un blu norvegese? pl - Czy masz norweskiego niebieskiego? pt - Você tem um azul norueguês? ru - У вас есть норвежский синий? zh - 你有挪威蓝吗? Note that my zh is assuming its Simple Chinese Apologies to my friends who's native language isn't English, I'm fully aware that the translation may be garbage but the point of this is not for release as a MOD so I'm not that concerned if the translations are bad. The purpose of this is to educate, not teach language skills. Right - armed with our translations we can now Mod all the StringTables We've finally got to a stage of nothing happening but where we can make the changes we want Yeah - we're still at a point of no results for all this work - nobody ever said Modding was easy The next section makes stuff happen - that's the payoff we're all after It's also the most likely place to completely screw everything up If you've followed everything accurately it's time for the deep, dark development hell of putting some new content in place. You'll find by experience 90% of any dev is doing the mundane stuff we've discussed so far - it takes about 10% of the time (a famous 'law') - the next bit takes 90% of the time but results in 10% of the goal. I've been programming for > 35 years so I'm used to it... The grin you get when you get payback makes it all worthwhile. When I finally see Waenglith asking me if I wanna buy something or if I want a Norwegian Blue... I can't express the satisfaction you feel adequately - it's way out there, a Eureka moment (experienced Devs will get what I mean - TT1 - how cool did it feel getting the burn on DP? I know it thrilled me when I made that breakthrough - I'd spent 1/2 a day getting nowhere then I did traps <G>) So cool... The next stage puts me firmly into the 10% for 90% part - I'll do my utmost to get this out today but the 90% wall is about to hit. Hopefully this won't be a nightmare as I've modded her before so know what to look for [@peardox takes an hour or two off to do this and chat to the family] [@peardox takes an hour off off to do this and chat to the family] Waenglith.zip 4 OK Fair warning has been applied I'm gonna move the domain to https://perspak.com early Feb but will keep all content There are reasons behind this move which basically boil down to unifying my release schedule My friends are welcome to play (I'll set you up your own areas if you desire them) Please note that this process is messy so may take a few weeks
peardox Posted July 4, 2018 Author Posted July 4, 2018 Not even a like yet? Bugger this as an idea - let's hit the cash Unless Obsidian wanna pay - my 108 hour week should be worth something to you OK Fair warning has been applied I'm gonna move the domain to https://perspak.com early Feb but will keep all content There are reasons behind this move which basically boil down to unifying my release schedule My friends are welcome to play (I'll set you up your own areas if you desire them) Please note that this process is messy so may take a few weeks
peardox Posted July 4, 2018 Author Posted July 4, 2018 No chance I get this one done tonight The 90% rule rears it's head This SHOULD take about an hour - already done it but stupidly deleted the source I expect t release the final tomoz evening I'm doing an undocumented Mod here guys - of course I'll muck it up - more likely multiple times Back in the AM (my god - it's 10 PM - the wife is gonna roast my nuts - not in a good way) OK Fair warning has been applied I'm gonna move the domain to https://perspak.com early Feb but will keep all content There are reasons behind this move which basically boil down to unifying my release schedule My friends are welcome to play (I'll set you up your own areas if you desire them) Please note that this process is messy so may take a few weeks
Xaratas Posted July 4, 2018 Posted July 4, 2018 https://pillarsofeternity.gamepedia.com/Category:Pillars_of_Eternity_modding How much is still true? More modding for PoE II | How to Work with Stringtables
peardox Posted July 5, 2018 Author Posted July 5, 2018 (edited) https://pillarsofeternity.gamepedia.com/Category:Pillars_of_Eternity_modding How much is still true? Pedantically most if not all will probably be true for POE but it's completely changed in POE2 The answer you're probably after is zero - just had a look at it and none of it applies to POE2 Edited July 5, 2018 by peardox OK Fair warning has been applied I'm gonna move the domain to https://perspak.com early Feb but will keep all content There are reasons behind this move which basically boil down to unifying my release schedule My friends are welcome to play (I'll set you up your own areas if you desire them) Please note that this process is messy so may take a few weeks
peardox Posted July 5, 2018 Author Posted July 5, 2018 This translation stuff is well explained by a friend of mine...Hey Simon, I think most of these translate more like "a type of Blue that is norwegian" rather than "a type of parrot that is norwegian and blue". Translating jokes are really hard, but probably the best thing is to check how that scene is actually professionally translated. It seems in italian it's translated "Il pappagallo norvegese blue" for that reason. You have to specify you're still talking about the parrot Which leads us to this lot... de - Haben Sie einen Blauen Norweger? es - ¿Tienes un loro noruego azul? en - <We're translating from this one> fr - Avez-vous un bleu norvégien? it - Hai un pappagallo norvegese blu? pl - Czy masz norweskiego niebieskiego? pt - Você tem um azul norueguês? ru - У вас есть норвежский голубой? zh - 你有挪威蓝吗? Thanks to @Phenomenum, Jonathan and Florian for the correctionsNow I can do the last part... OK Fair warning has been applied I'm gonna move the domain to https://perspak.com early Feb but will keep all content There are reasons behind this move which basically boil down to unifying my release schedule My friends are welcome to play (I'll set you up your own areas if you desire them) Please note that this process is messy so may take a few weeks
TT1 Posted July 5, 2018 Posted July 5, 2018 Pretty good tutorial and really useful. That Eureka moment was amazing indeed. As a software engineer, those moments will always bring me a smile
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now