diff --git a/modules/main.py b/modules/main.py
index 02bcbe4..3a106d4 100644
--- a/modules/main.py
+++ b/modules/main.py
@@ -11,7 +11,7 @@ from modules.txt import handleTXT
from modules.tyrano import handleTyrano
from modules.json import handleJSON
-THREADS = 10 # For GPT4 rate limit will be hit if you have more than 1 thread.
+THREADS = 9 # For GPT4 rate limit will be hit if you have more than 1 thread.
# Info Message
print(Fore.LIGHTYELLOW_EX + "WARNING: Once a translation starts do not close it unless you want to lose your\
diff --git a/modules/rpgmakerace.py b/modules/rpgmakerace.py
index cfbe4cf..b8bdba6 100644
--- a/modules/rpgmakerace.py
+++ b/modules/rpgmakerace.py
@@ -195,12 +195,6 @@ def parseMap(data, filename):
events = data['events']
global LOCK
- # Translate displayName for Map files
- if 'Map' in filename:
- response = translateGPT(data['displayName'], 'Reply with only the english translation of the RPG location name', False)
- totalTokens += response[1]
- data['displayName'] = response[0].replace('\"', '')
-
# Get total for progress bar
for key in events:
if key is not None:
diff --git a/modules/rpgmakermvmz.py b/modules/rpgmakermvmz.py
index 274e0a4..6e29ffd 100644
--- a/modules/rpgmakermvmz.py
+++ b/modules/rpgmakermvmz.py
@@ -39,7 +39,7 @@ POSITION=0
LEAVE=False
# Flags
-CODE401 = False
+CODE401 = True
CODE405 = False
CODE102 = True
CODE122 = False
@@ -56,7 +56,7 @@ CODE108 = False
NAMES = False # Output a list of all the character names found
BRFLAG = False # If the game uses
instead
FIXTEXTWRAP = True
-IGNORETLTEXT = True
+IGNORETLTEXT = False
def handleMVMZ(filename, estimate):
global ESTIMATE, TOKENS, TOTALTOKENS, TOTALCOST
@@ -580,25 +580,25 @@ def searchCodes(page, pbar):
if speaker not in NAMESLIST:
with LOCK:
NAMESLIST.append(speaker)
- elif '\\kw' in finalJAString:
- match = re.findall(r'\\+kw\[[0-9]+\]', finalJAString)
- if len(match) != 0:
- if '1' in match[0]:
- speaker = 'Ayako Nagatsuki'
- if '2' in match[0]:
- speaker = 'Rei'
+ # elif '\\kw' in finalJAString:
+ # match = re.findall(r'\\+kw\[[0-9]+\]', finalJAString)
+ # if len(match) != 0:
+ # if '1' in match[0]:
+ # speaker = 'Ayako Nagatsuki'
+ # if '2' in match[0]:
+ # speaker = 'Rei'
- # Set name var to top of list
- codeList[j]['parameters'][0] = match[0]
- codeList[j]['code'] = code
+ # # Set name var to top of list
+ # codeList[j]['parameters'][0] = match[0]
+ # codeList[j]['code'] = code
- # Set next item as dialogue
- j += 1
- codeList[j]['parameters'][0] = match[0]
- codeList[j]['code'] = code
+ # # Set next item as dialogue
+ # j += 1
+ # codeList[j]['parameters'][0] = match[0]
+ # codeList[j]['code'] = code
- # Remove nametag from final string
- finalJAString = finalJAString.replace(match[0], '')
+ # # Remove nametag from final string
+ # finalJAString = finalJAString.replace(match[0], '')
elif '\\nc' in finalJAString:
matchList = re.findall(r'(\\+nc<(.*?)>)(.+)?', finalJAString)
if len(matchList) != 0:
@@ -710,12 +710,12 @@ def searchCodes(page, pbar):
# Translate
if speaker == '' and finalJAString != '':
- response = translateGPT(finalJAString, 'Past Translated Text: ' + '|\n\n'.join(textHistory), True)
+ response = translateGPT(finalJAString, 'Past Translated Text: (' + ' || '.join(textHistory) + ')', True)
tokens += response[1]
translatedText = response[0]
textHistory.append('\"' + translatedText + '\"')
elif finalJAString != '':
- response = translateGPT(speaker + ': ' + finalJAString, 'Past Translated Text: ' + '|\n\n'.join(textHistory), True)
+ response = translateGPT(speaker + ': ' + finalJAString, 'Past Translated Text: (' + ' || '.join(textHistory) + ')', True)
tokens += response[1]
translatedText = response[0]
textHistory.append('\"' + translatedText + '\"')
@@ -1152,6 +1152,68 @@ def searchCodes(page, pbar):
else:
continue
+ if 'ShowInfo ' in jaString:
+ # Remove any textwrap
+ jaString = re.sub(r'\n', '_', jaString)
+
+ # Capture Arguments and text
+ infoList = re.findall(r'ShowInfo (.+)', jaString)
+ if len(infoList) > 0:
+ info = infoList[0]
+ originalInfo = info
+
+ # Remove underscores
+ info = re.sub(r'_', ' ', info)
+
+ # Using this to keep track of 401's in a row. Throws IndexError at EndOfList (Expected Behavior)
+ currentGroup.append(info)
+
+ while (codeList[i+1]['code'] == 356):
+ # Want to translate this script
+ if 'ShowInfo ' not in codeList[i+1]['parameters'][0]:
+ break
+
+ codeList[i]['parameters'][0] = ''
+ i += 1
+ jaString = codeList[i]['parameters'][0]
+ infoList = re.findall(r'ShowInfo (.+)', jaString)
+ if len(infoList) > 0:
+ dtext = infoList[0]
+ currentGroup.append(info)
+
+ # Join up 356 groups for better translation.
+ if len(currentGroup) > 0:
+ finalJAString = ' '.join(currentGroup)
+ else:
+ finalJAString = info
+
+ # Clear Group
+ currentGroup = []
+
+ # Remove any textwrap
+ jaString = re.sub(r'\n', '_', jaString)
+
+ # Translate
+ response = translateGPT(finalJAString, 'Reply with the English Translation.', True)
+ translatedText = response[0]
+ tokens += response[1]
+
+ # Remove characters that may break scripts
+ charList = ['.', '\"']
+ for char in charList:
+ translatedText = translatedText.replace(char, '')
+
+ # Cant have spaces?
+ translatedText = translatedText.replace(' ', '_')
+
+ # Put Args Back
+ translatedText = jaString.replace(originalInfo, translatedText)
+
+ # Set Data
+ codeList[i]['parameters'][0] = translatedText
+ else:
+ continue
+
### Event Code: 102 Show Choice
if codeList[i]['code'] == 102 and CODE102 == True:
for choice in range(len(codeList[i]['parameters'][0])):
@@ -1358,7 +1420,7 @@ def searchSS(state, pbar):
def searchSystem(data, pbar):
tokens = 0
- context = 'Reply with only the english translation of the UI textbox'
+ context = 'Reply with only the english translation of the UI textbox.\nTranslate "逃げる" as "Escape".\nTranslate"大事なもの" as "Key Items.\nTranslate "最強装備" as "Optimize".\nTranslate "攻撃力" as "Attack".\nTranslate "回避率" as "Evasion".\nTranslate "最大HP" as "Max HP".\nTranslate "経験値" as "EXP".\n Translate "購入する" as "Buy"'
# Title
response = translateGPT(data['gameTitle'], ' Reply with the English translation of the game title name', False)
@@ -1427,11 +1489,11 @@ def subVars(jaString):
# Icons
count = 0
- iconList = re.findall(r'[\\]+[iI]\[[0-9]+\]', jaString)
+ iconList = re.findall(r'[\\]+[iIkKwW]+\[[0-9]+\]', jaString)
iconList = set(iconList)
if len(iconList) != 0:
for icon in iconList:
- jaString = jaString.replace(icon, '')
+ jaString = jaString.replace(icon, '[Icon' + str(count) + ']')
count += 1
# Colors
@@ -1440,7 +1502,7 @@ def subVars(jaString):
colorList = set(colorList)
if len(colorList) != 0:
for color in colorList:
- jaString = jaString.replace(color, '')
+ jaString = jaString.replace(color, '[Color' + str(count) + ']')
count += 1
# Names
@@ -1449,7 +1511,7 @@ def subVars(jaString):
nameList = set(nameList)
if len(nameList) != 0:
for name in nameList:
- jaString = jaString.replace(name, '')
+ jaString = jaString.replace(name, '[Name' + str(count) + ']')
count += 1
# Variables
@@ -1458,7 +1520,7 @@ def subVars(jaString):
varList = set(varList)
if len(varList) != 0:
for var in varList:
- jaString = jaString.replace(var, '')
+ jaString = jaString.replace(var, '[Var' + str(count) + ']')
count += 1
# Put all lists in list and return
@@ -1467,7 +1529,7 @@ def subVars(jaString):
def resubVars(translatedText, allList):
# Fix Spacing and ChatGPT Nonsense
- matchList = re.findall(r'<\s?.+?\s?>', translatedText)
+ matchList = re.findall(r'\[\s?.+?\s?\]', translatedText)
if len(matchList) > 0:
for match in matchList:
text = match.replace(' ', '')
@@ -1477,28 +1539,28 @@ def resubVars(translatedText, allList):
count = 0
if len(allList[0]) != 0:
for var in allList[0]:
- translatedText = translatedText.replace('', var)
+ translatedText = translatedText.replace('[Icon' + str(count) + ']', var)
count += 1
# Colors
count = 0
if len(allList[1]) != 0:
for var in allList[1]:
- translatedText = translatedText.replace('', var)
+ translatedText = translatedText.replace('[Color' + str(count) + ']', var)
count += 1
# Names
count = 0
if len(allList[2]) != 0:
for var in allList[2]:
- translatedText = translatedText.replace('', var)
+ translatedText = translatedText.replace('[Name' + str(count) + ']', var)
count += 1
# Vars
count = 0
if len(allList[3]) != 0:
for var in allList[3]:
- translatedText = translatedText.replace('', var)
+ translatedText = translatedText.replace('[Var' + str(count) + ']', var)
count += 1
# Remove Color Variables Spaces
@@ -1524,7 +1586,7 @@ def translateGPT(t, history, fullPromptFlag):
return(t, 0)
"""Translate text using GPT"""
- context = 'Eroge Names Context: Name: セレナ == Serena\nGender: Female,\n\nName: カトリーヌ == Catherine\nGender: Female'
+ context = 'Eroge Names Context: (Name: サクラ == Sakura\nGender: Female,\n\nName: ルリカ == Rurika\nGender: Female,\n\nName: ケンイチ == Kenichi\nGender: Male)'
if fullPromptFlag:
system = PROMPT
user = 'Line to Translate: ' + subbedT
@@ -1565,6 +1627,6 @@ def translateGPT(t, history, fullPromptFlag):
# Return Translation
if len(translatedText) > 15 * len(t) or "I'm sorry, but I'm unable to assist with that translation" in translatedText:
- return [t, response.usage.total_tokens]
+ raise Exception
else:
return [translatedText, tokens]
\ No newline at end of file