From 5fb0191b1708c89c60cecc4d25d50279300f5c55 Mon Sep 17 00:00:00 2001 From: DazedAnon Date: Fri, 17 Jan 2025 16:57:49 -0600 Subject: [PATCH] Couple of fixes to rpgm --- modules/rpgmakermvmz.py | 117 +++++++++++++++++++++++++++++++++++--- modules/rpgmakerplugin.py | 93 +++++++++++++++--------------- vocab.txt | 49 ++++++---------- 3 files changed, 173 insertions(+), 86 deletions(-) diff --git a/modules/rpgmakermvmz.py b/modules/rpgmakermvmz.py index 94e22b4..d28ea4e 100644 --- a/modules/rpgmakermvmz.py +++ b/modules/rpgmakermvmz.py @@ -38,6 +38,7 @@ ESTIMATE = "" TOKENS = [0, 0] NAMESLIST = [] FIRSTLINESPEAKERS = False # If 1st line of dialogue is a speaker, set to True +FACENAME101 = False # Find Speakers in 101 Codes based on Face Name NAMES = False # Output a list of all the character names found BRFLAG = False # If the game uses
instead FIXTEXTWRAP = True # Overwrites textwrap @@ -580,6 +581,14 @@ def searchNames(data, pbar, context): tokensResponse = translateNote(data[i], r"") totalTokens[0] += tokensResponse[0] totalTokens[1] += tokensResponse[1] + if "") + totalTokens[0] += tokensResponse[0] + totalTokens[1] += tokensResponse[1] + if "") + totalTokens[0] += tokensResponse[0] + totalTokens[1] += tokensResponse[1] i += 1 else: @@ -620,6 +629,16 @@ def searchNames(data, pbar, context): else: number += 1 + # Notes + if "") + totalTokens[0] += tokensResponse[0] + totalTokens[1] += tokensResponse[1] + if "") + totalTokens[0] += tokensResponse[0] + totalTokens[1] += tokensResponse[1] + i += 1 else: batchFull = True @@ -1364,8 +1383,67 @@ def searchCodes(page, pbar, jobList, filename): codeList[i]["parameters"][3][argVar] = translatedText pbar.update(1) - if "TextPicture" in headerString or "BalloonInBattle" in headerString: - argVar = "text" + # if "TextPicture" in headerString or "BalloonInBattle" in headerString: + # argVar = "text" + # font = None + # ### Message Text First + # if argVar in codeList[i]["parameters"][3]: + # acExist = False + # jaString = codeList[i]["parameters"][3][argVar] + + # # Check ac + # if "\\ac" in jaString: + # acExist = True + # else: + # acExist = False + + # # If there isn't any Japanese in the text just skip + # # if not re.search(r'[一-龠]+|[ぁ-ゔ]+|[ァ-ヴー]+', jaString): + # # i += 1 + # # continue + + # # Remove any textwrap & TL + # if '[Lewd Power' in jaString: + # jaString = re.sub(r"\n", " ", jaString) + # if acExist: + # jaString = jaString.replace("\\ac ", " ") + # jaString = jaString.replace("\\ac", "") + + # # Pass 1 + # if setData == False: + # list357.append(jaString) + + # # Pass 2 + # else: + # if len(list357) > 0: + # # Grab and Replace + # translatedText = list357[0] + # translatedText = jaString.replace(jaString, translatedText) + + # # Remove characters that may break scripts + # charList = ['"', "\\n"] + # for char in charList: + # translatedText = translatedText.replace(char, "") + + # # Textwrap + # if '[Lewd Power' in jaString: + # translatedText = textwrap.fill(translatedText, 50) + + # # Center Text + # if acExist: + # translatedText = f'\\ac {translatedText.replace('\n', '\n\\ac ')}' + + # # Check and Set Font + # if "fontSize" in codeList[i]["parameters"][3]: + # if font: + # codeList[i]["parameters"][3]["fontSize"] = font + + # # Set + # codeList[i]["parameters"][3][argVar] = translatedText + # list357.pop(0) + + if "QuestSystem" in headerString: + argVar = "DetailNote" font = None ### Message Text First if argVar in codeList[i]["parameters"][3]: @@ -1384,7 +1462,7 @@ def searchCodes(page, pbar, jobList, filename): # continue # Remove any textwrap & TL - jaString = re.sub(r"\n", " ", jaString) + jaString = jaString.replace('\\n', ' ') if acExist: jaString = jaString.replace("\\ac ", " ") jaString = jaString.replace("\\ac", "") @@ -1406,8 +1484,9 @@ def searchCodes(page, pbar, jobList, filename): translatedText = translatedText.replace(char, "") # Textwrap - translatedText = textwrap.fill(translatedText, WIDTH) - translatedText = translatedText.replace("- ", "-") + translatedText = textwrap.fill(translatedText, 80) + translatedText = translatedText.replace('\n', '\\n') + translatedText = re.sub(r"[\\]+c", r"\\\\c", translatedText) # Center Text if acExist: @@ -1419,7 +1498,7 @@ def searchCodes(page, pbar, jobList, filename): codeList[i]["parameters"][3]["fontSize"] = font # Set - codeList[i]["parameters"][3][argVar] = translatedText + codeList[i]["parameters"][3][argVar] = f"\"{translatedText}\"" list357.pop(0) ## Event Code: 657 [Picture Text] [Optional] @@ -1522,7 +1601,7 @@ def searchCodes(page, pbar, jobList, filename): continue # Get Speaker - if "\\" not in jaString: + if "\\" not in jaString and jaString: response = getSpeaker(jaString) totalTokens[0] += response[1][0] totalTokens[1] += response[1][1] @@ -1541,11 +1620,33 @@ def searchCodes(page, pbar, jobList, filename): continue else: speaker = "" + elif FACENAME101: + faceName = codeList[i]["parameters"][0] + if faceName == "Actor1_1": + speaker = "Sakura" + if faceName == "Actor2_1": + speaker = "Suzune" + if faceName == "Actor3_1": + speaker = "Kaji" + if faceName == "Actor4_1": + speaker = "Kirari" + if faceName == "Actor5_1": + speaker = "Onsen" + if faceName == "Actor6_1": + speaker = "Gufu" + if faceName == "Actor7_1": + speaker = "Kahimeru" + if faceName == "Actor10_1": + speaker = "Miuma" + if faceName == "Actor11_1": + speaker = "Nurari" + if faceName == "Actor12_1": + speaker = "Kokotsuzumi" ## Event Code: 355 or 655 Scripts [Optional] if "code" in codeList[i] and (codeList[i]["code"] == 355 or codeList[i]["code"] == 655) and CODE355655 is True: jaString = codeList[i]["parameters"][0] - regexPatterns = [r'.*subject=(.*?)"', r"テキスト-(.*)"] + regexPatterns = [r'const.+=\s?\"(.+?)\"'] # Iterate over the list of regex patterns for regex in regexPatterns: diff --git a/modules/rpgmakerplugin.py b/modules/rpgmakerplugin.py index 86e26b6..ec99df1 100644 --- a/modules/rpgmakerplugin.py +++ b/modules/rpgmakerplugin.py @@ -194,39 +194,40 @@ def translatePlugin(data, pbar, filename, translatedList): newline = r"\n" # Custom - regex = r'hint:\s"(.*)"' - match = re.search(regex, data[i]) - if match: - # Save Original String - jaString = match.group(1) - originalString = jaString + regex = r'{.+?"Text[\\]+":[\\]+"[\\]+}[\\]*(.+?)[\\]' + matchList = re.findall(regex, data[i]) + if len(matchList) > 0: + for match in matchList: + # Save Original String + jaString = match + originalString = jaString - # Remove any textwrap - jaString = jaString.replace(newline, " ") + # Remove any textwrap + jaString = jaString.replace(newline, " ") - # Pass 1 - if setData == False: - custom.append(jaString.strip()) + # Pass 1 + if setData == False: + custom.append(jaString.strip()) - # Pass 2 - else: - if custom: - # Grab and Pop - translatedText = custom[0] - custom.pop(0) + # Pass 2 + else: + if custom: + # Grab and Pop + translatedText = custom[0] + custom.pop(0) - # Set to None if empty list - if len(translatedList) <= 0: - translatedList = None + # Set to None if empty list + if len(translatedList) <= 0: + translatedList = None - # Replace Single Quotes - translatedText = re.sub(r'[^\\]"', '\\"', translatedText) + # Replace Single Quotes + translatedText = re.sub(r'[^\\]"', '\\"', translatedText) - # Set Data - data[i] = re.sub(r"\b%s\b" % originalString, translatedText, data[i]) + # Set Data + data[i] = data[i].replace(originalString, translatedText) # Quest Name - regex = r'[\\]+"QuestName[\\]+":[\\]+"(.*?)[\\]+"' + regex = r'[\\]+"Titled[\\]+":[\\]+"(.*?)[\\]+"' matchList = re.findall(regex, data[i]) if len(matchList) > 0: for match in matchList: @@ -255,14 +256,14 @@ def translatePlugin(data, pbar, filename, translatedList): translatedList = None # Replace Single Quotes - translatedText = re.sub(r"[^\\]'", "\\'", translatedText) - translatedText = re.sub(r'[^\\]"', '\\"', translatedText) + translatedText = translatedText.replace('"', "'") + translatedText = re.sub(r"([^\\'])'", r"\1\\'", translatedText) # Set Data - data[i] = re.sub(r"\b%s\b" % originalString, translatedText, data[i]) + data[i] = data[i].replace(originalString, translatedText) # Quest Client - regex = r'QuestClientName[\\]+":[\\]+"(.*?)[\\]+"' + regex = r'Requesterd[\\]+":[\\]+"(.*?)[\\]+"' matchList = re.findall(regex, data[i]) if len(matchList) > 0: for match in matchList: @@ -288,14 +289,14 @@ def translatePlugin(data, pbar, filename, translatedList): translatedList = None # Replace Single Quotes - translatedText = re.sub(r"[^\\]'", "\\'", translatedText) - translatedText = re.sub(r'[^\\]"', '\\"', translatedText) + translatedText = translatedText.replace('"', "'") + translatedText = re.sub(r"([^\\'])'", r"\1\\'", translatedText) # Set Data - data[i] = re.sub(r"\b%s\b" % originalString, translatedText, data[i]) + data[i] = data[i].replace(originalString, translatedText) # Quest Location - regex = r'QuestLocation[\\]+":[\\]+"(.*?)[\\]+"' + regex = r'Placed[\\]+":[\\]+"(.*?)[\\]+"' matchList = re.findall(regex, data[i]) if len(matchList) > 0: for match in matchList: @@ -321,14 +322,14 @@ def translatePlugin(data, pbar, filename, translatedList): translatedList = None # Replace Single Quotes - translatedText = re.sub(r"[^\\]'", "\\'", translatedText) - translatedText = re.sub(r'[^\\]"', '\\"', translatedText) + translatedText = translatedText.replace('"', "'") + translatedText = re.sub(r"([^\\'])'", r"\1\\'", translatedText) # Set Data - data[i] = re.sub(r"\b%s\b" % originalString, translatedText, data[i]) + data[i] = data[i].replace(originalString, translatedText) # Quest Target - regex = r'PlaceInformation[\\]+":[\\]+"(.*?)[\\]+"' + regex = r'PlacedInformation[\\]+":[\\]+"(.*?)[\\]+"' matchList = re.findall(regex, data[i]) if len(matchList) > 0: for match in matchList: @@ -354,14 +355,14 @@ def translatePlugin(data, pbar, filename, translatedList): translatedList = None # Replace Single Quotes - translatedText = re.sub(r"[^\\]'", "\\'", translatedText) - translatedText = re.sub(r'[^\\]"', '\\"', translatedText) + translatedText = translatedText.replace('"', "'") + translatedText = re.sub(r"([^\\'])'", r"\1\\'", translatedText) # Set Data - data[i] = re.sub(r"\b%s\b" % originalString, translatedText, data[i]) + data[i] = data[i].replace(originalString, translatedText) # Quest Summary - regex = r'QuestContent[\\]+":[\\]+"[\\]+"(.*?)[\\]+"' + regex = r'[\\]+"DetaildNote[\\]+":[\\]+"[\\]+"(.*?)[\\]+"[\\]+"' matchList = re.findall(regex, data[i]) if len(matchList) > 0: for match in matchList: @@ -371,6 +372,7 @@ def translatePlugin(data, pbar, filename, translatedList): # Remove any textwrap match = match.replace(r"\\\\\\\\n", " ") + match = match.replace(r"\\\\\\\\\\\\\\\\c", "\\c") # Pass 1 if setData == False: @@ -392,10 +394,11 @@ def translatePlugin(data, pbar, filename, translatedList): # Textwrap translatedText = textwrap.fill(translatedText, width=WIDTH) translatedText = translatedText.replace("\n", r"\\\\\\\\n") + match = match.replace("\\c", r"\\\\\\\\\\\\\\\\c") # Replace Single Quotes - translatedText = re.sub(r"[^\\]'", "\\'", translatedText) - translatedText = re.sub(r'[^\\]"', '\\"', translatedText) + translatedText = translatedText.replace('"', "'") + translatedText = re.sub(r"([^\\'])'", r"\1\\'", translatedText) # Set Data data[i] = data[i].replace(originalString, translatedText) @@ -434,8 +437,8 @@ def translatePlugin(data, pbar, filename, translatedList): translatedText = translatedText.replace("\n", r"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n") # Replace Single Quotes - translatedText = re.sub(r"[^\\]'", "\\'", translatedText) - translatedText = re.sub(r'[^\\]"', '\\"', translatedText) + translatedText = translatedText.replace('"', "'") + translatedText = re.sub(r"([^\\'])'", r"\1\\'", translatedText) # Set Data data[i] = data[i].replace(originalString, translatedText) diff --git a/vocab.txt b/vocab.txt index 739101e..699d38e 100644 --- a/vocab.txt +++ b/vocab.txt @@ -1,38 +1,18 @@ Here are some vocabulary and terms so that you know the proper spelling and translation. ``` # Game Characters -ココナ (Kokona) - Female -センリ (Senri) - Female -カナミ (Kanami) - Female -サキ (Saki) - Female -ミユ (Miyu) - Female -カナミ (Kanami) - Female -ノノカ (Nonoka) - Female -シンジ (Shinji) -タクオ (Takuo) -ユヅキ (Yuzuki) -マリナ (Marina) -レン (Ren) -コクリュウ (Kokuryu) -センリ (Senri) -ノノカ (Nonoka) -ミユ (Miyu) -リツコ (Ritsuko) -カスゾウ (Kasuzou) -ヨシオ (Yoshio) -ブスジマ (Busujima) -タロウ (Tarou) -オリバー (Oliver) -デブオ (Debuo) -ミン (Min) -ザコ戦闘員 (Zako Combatant) -Dr.ゲーリー (Dr. Gary) -キャプテンブランドー (Captain Brando) -サンタコロース (Santa Claus) -一ノ瀬 茂 (Shigeru Ichinose) -クズオ (Kuzuo) -ガリオ (Gario) -シゲさん (Shige-san) +桜 謳歌 (Sakura Ouka) - Female +鈴音 (Suzune) - Female +鍛冶 演歌 (Kaji Enka) - Female +希来里 (Kirari) - Female +温泉 玉子 (Onsen Tamago) - Female +愚譜 徳朗 (Gufu Tokuro) - Unknown +華姫瑠 (Kahimeru) - Unknown +枝切 はらら (Edakiri Harara) - Unknown +枝切 鋏 (Edakiri Hasami) - Unknown +御馬 忠勝 (Miuma Tadakatsu) - Unknown +ぬらり (Nurari) - Unknown +狐鼓 (Kokotsuzumi) - Unknown # Lewd Terms マンコ (pussy) @@ -121,6 +101,9 @@ ME 音量 (ME Volume) ローバー (Roper) w ((lol)) 巫女 (Shrine Maiden) -コイツ (this bastard) 2万 (20,000) + +# Locations +サイノ河 (Saino River) +オソレ峠 一幕 (Osore Pass Act One) ``` \ No newline at end of file