- Moved wrongly placed BMD in Green Area 1

- Renamed Judge Tree areas, as now it's clear what the names should really be
- Renamed Undernet Zero map
- Renamed project executable name
- Added a splitter to make UI adjstable
- Added translation support (see "po" folder to add more)
- Added Russian Translation
- Added more rooms from the Green Town postion of the game
This commit is contained in:
4aiman 2024-04-03 14:29:00 +03:00
commit 56ede08dbf
14 changed files with 666 additions and 235 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 68 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 75 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Before After
Before After

View file

@ -14,11 +14,16 @@
</XPManifest> </XPManifest>
<Icon Value="0"/> <Icon Value="0"/>
</General> </General>
<i18n>
<EnableI18N Value="True"/>
<OutDir Value="po"/>
</i18n>
<VersionInfo> <VersionInfo>
<UseVersionInfo Value="True"/> <UseVersionInfo Value="True"/>
<AutoIncrementBuild Value="True"/> <AutoIncrementBuild Value="True"/>
<MinorVersionNr Value="2"/> <MinorVersionNr Value="2"/>
<BuildNr Value="18"/> <RevisionNr Value="1"/>
<BuildNr Value="19"/>
<Attributes pvaPrivateBuild="True"/> <Attributes pvaPrivateBuild="True"/>
<StringTable CompanyName="4aiman" FileDescription="Megaman Battle Network 5 and 6 minimap app" InternalName="mmbn56mm" LegalCopyright="4aiman" OriginalFilename="mmbn56mm" ProductName="MMBN56MM" ProductVersion="2"/> <StringTable CompanyName="4aiman" FileDescription="Megaman Battle Network 5 and 6 minimap app" InternalName="mmbn56mm" LegalCopyright="4aiman" OriginalFilename="mmbn56mm" ProductName="MMBN56MM" ProductVersion="2"/>
</VersionInfo> </VersionInfo>

View file

@ -9,7 +9,7 @@
<Version Value="11"/> <Version Value="11"/>
<PathDelim Value="\"/> <PathDelim Value="\"/>
<Target> <Target>
<Filename Value="mmbn5mm"/> <Filename Value="mmbn56mm"/>
</Target> </Target>
<SearchPaths> <SearchPaths>
<IncludeFiles Value="$(ProjOutDir)"/> <IncludeFiles Value="$(ProjOutDir)"/>
@ -47,8 +47,8 @@
<Filename Value="mmbn5m.lpr"/> <Filename Value="mmbn5m.lpr"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<EditorIndex Value="2"/> <EditorIndex Value="2"/>
<CursorPos X="25" Y="5"/> <CursorPos X="49" Y="20"/>
<UsageCount Value="57"/> <UsageCount Value="65"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit> </Unit>
<Unit> <Unit>
@ -58,10 +58,9 @@
<HasResources Value="True"/> <HasResources Value="True"/>
<ResourceBaseClass Value="Form"/> <ResourceBaseClass Value="Form"/>
<UnitName Value="Unit1"/> <UnitName Value="Unit1"/>
<IsVisibleTab Value="True"/> <TopLine Value="364"/>
<TopLine Value="325"/> <CursorPos X="52" Y="411"/>
<CursorPos X="25" Y="346"/> <UsageCount Value="65"/>
<UsageCount Value="57"/>
<Loaded Value="True"/> <Loaded Value="True"/>
<LoadedDesigner Value="True"/> <LoadedDesigner Value="True"/>
</Unit> </Unit>
@ -70,21 +69,22 @@
<EditorIndex Value="-1"/> <EditorIndex Value="-1"/>
<TopLine Value="128"/> <TopLine Value="128"/>
<CursorPos Y="152"/> <CursorPos Y="152"/>
<UsageCount Value="21"/> <UsageCount Value="20"/>
</Unit> </Unit>
<Unit> <Unit>
<Filename Value="C:\lazarus\fpc\3.2.2\source\rtl\objpas\sysutils\syshelph.inc"/> <Filename Value="C:\lazarus\fpc\3.2.2\source\rtl\objpas\sysutils\syshelph.inc"/>
<EditorIndex Value="-1"/> <EditorIndex Value="-1"/>
<TopLine Value="147"/> <TopLine Value="147"/>
<CursorPos X="16" Y="161"/> <CursorPos X="16" Y="161"/>
<UsageCount Value="11"/> <UsageCount Value="10"/>
</Unit> </Unit>
<Unit> <Unit>
<Filename Value="rooms.ini"/> <Filename Value="rooms.ini"/>
<EditorIndex Value="1"/> <IsVisibleTab Value="True"/>
<TopLine Value="40"/> <EditorIndex Value="4"/>
<CursorPos X="121" Y="53"/> <TopLine Value="274"/>
<UsageCount Value="16"/> <CursorPos X="12" Y="298"/>
<UsageCount Value="20"/>
<Loaded Value="True"/> <Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Ini"/> <DefaultSyntaxHighlighter Value="Ini"/>
</Unit> </Unit>
@ -92,128 +92,148 @@
<Filename Value="mmbn5m.lpi"/> <Filename Value="mmbn5m.lpi"/>
<EditorIndex Value="-1"/> <EditorIndex Value="-1"/>
<CursorPos Y="46"/> <CursorPos Y="46"/>
<UsageCount Value="9"/> <UsageCount Value="8"/>
<DefaultSyntaxHighlighter Value="XML"/> <DefaultSyntaxHighlighter Value="XML"/>
</Unit> </Unit>
<Unit>
<Filename Value="C:\lazarus\lcl\lcltranslator.pas"/>
<UnitName Value="LCLTranslator"/>
<EditorIndex Value="1"/>
<TopLine Value="95"/>
<CursorPos Y="95"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit>
<Unit>
<Filename Value="C:\lazarus\components\lazutils\translations.pas"/>
<UnitName Value="Translations"/>
<EditorIndex Value="3"/>
<TopLine Value="738"/>
<CursorPos X="54" Y="775"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit>
</Units> </Units>
<JumpHistory HistoryIndex="29"> <JumpHistory HistoryIndex="29">
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="31" Column="11"/> <Caret Line="9" Column="34" TopLine="9"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="32" Column="11"/> <Caret Line="432" Column="49" TopLine="387"/>
</Position>
<Position>
<Filename Value="mmbn5m.lpr"/>
<Caret Line="21" Column="21"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="40" Column="21"/> <Caret Line="435" Column="35" TopLine="408"/>
</Position>
<Position>
<Filename Value="mmbn5m.lpr"/>
<Caret Line="13" Column="16"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="168" Column="27" TopLine="128"/> <Caret Line="428" Column="73" TopLine="409"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="170" Column="13" TopLine="130"/> <Caret Line="435" Column="50" TopLine="388"/>
</Position>
<Position>
<Filename Value="C:\lazarus\components\lazutils\translations.pas"/>
<Caret Line="762" Column="128" TopLine="738"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="171" Column="13" TopLine="131"/> <Caret Line="435" Column="44" TopLine="406"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="176" Column="11" TopLine="136"/> <Caret Line="437" Column="54" TopLine="406"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="282" Column="49" TopLine="282"/> <Caret Line="26" Column="92"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="272" Column="72" TopLine="235"/> <Caret Line="414" Column="53" TopLine="390"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="312" Column="88" TopLine="283"/> <Caret Line="412" Column="27" TopLine="387"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="121" Column="7" TopLine="102"/> <Caret Line="211" Column="5" TopLine="165"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="291" Column="84" TopLine="272"/> <Caret Line="409" Column="19" TopLine="399"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="286" Column="14" TopLine="262"/> <Caret Line="175" Column="24" TopLine="151"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="287" Column="47" TopLine="264"/> <Caret Line="9" Column="73"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="289" Column="45" TopLine="265"/> <Caret Line="188" Column="20" TopLine="173"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="291" Column="69" TopLine="268"/> <Caret Line="189" Column="25" TopLine="171"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="300" Column="37" TopLine="275"/> <Caret Line="208" Column="3" TopLine="186"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="268" Column="98" TopLine="235"/> <Caret Line="453" Column="5" TopLine="408"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="344" Column="52" TopLine="315"/> <Caret Line="209" Column="46" TopLine="197"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="383" Column="89" TopLine="351"/> <Caret Line="224" Column="58" TopLine="192"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="281" Column="68" TopLine="259"/> <Caret Line="210" Column="59" TopLine="210"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="358" Column="89" TopLine="333"/> <Caret Line="195" Column="6" TopLine="171"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="136" Column="109" TopLine="108"/> <Caret Line="214" Column="66" TopLine="190"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="398" Column="5" TopLine="351"/> <Caret Line="415" Column="13" TopLine="375"/>
</Position>
<Position>
<Filename Value="rooms.ini"/>
<Caret Line="51" Column="40" TopLine="25"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="396" Column="5" TopLine="350"/> <Caret Line="201" Column="82" TopLine="174"/>
</Position> </Position>
<Position> <Position>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
</Position> <Caret Line="265" Column="25" TopLine="241"/>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="355" Column="14" TopLine="308"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="371" Column="57" TopLine="350"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="360" Column="141" TopLine="352"/>
</Position> </Position>
</JumpHistory> </JumpHistory>
<RunParams> <RunParams>

Binary file not shown.

111
po/mmbn56mm.en.po Normal file
View file

@ -0,0 +1,111 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
#: tform1.caption
msgid "MMBN5-6M"
msgstr "MMBN5-6M"
#: tform1.edit_room_button.caption
msgid "Edit Room"
msgstr "Edit Room"
#: tform1.gamebox.text
msgid "MMBN 5"
msgstr "MMBN 5"
#: tform1.label1.caption
msgid "Game:"
msgstr "Game:"
#: tform1.langbox.text
msgid "en"
msgstr ""
#: tform1.map_stretch_checkbox.caption
msgid "Stretch"
msgstr "Stretch"
#: tform1.minus_spoil1.caption
msgid "-"
msgstr "-"
#: tform1.plus_spoil.caption
msgid "+"
msgstr "+"
#: tform1.room_name_label.caption
msgctxt "tform1.room_name_label.caption"
msgid "Run the game, then press \"Start\""
msgstr "Run the game, then press \"Start\""
#: tform1.spoils_label.caption
msgid "Spoils:"
msgstr "Spoils:"
#: tform1.start_stop_button.caption
msgctxt "tform1.start_stop_button.caption"
msgid "Start"
msgstr "Start"
#: unit1.adding_item
msgid "Adding item to Room #"
msgstr "Adding item to Room #"
#: unit1.app_caption
msgid "MMBN5-6M: Reading from process ID"
msgstr "MMBN5-6M: Reading from process ID"
#: unit1.editing_item
msgid "Editing item in Room #"
msgstr "Editing item in Room #"
#: unit1.editing_room
msgid "Editing Room #"
msgstr "Editing Room #"
#: unit1.enter_item_name
msgid "Enter item's name"
msgstr "Enter item's name"
#: unit1.enter_room_name
msgid "Enter this Room's name"
msgstr "Enter this Room's name"
#: unit1.error_game_memory_not_read
msgid "Error. Game's memory not read."
msgstr "Error. Game's memory not read."
#: unit1.error_game_not_running
msgid "Error. Make sure the game's running."
msgstr "Error. Make sure the game's running."
#: unit1.error_hotkey_registration_failed
msgid "HotKey registration failed. You won't be able to press Win+Y to temporarily view map in full screen."
msgstr "HotKey registration failed. You won't be able to press Win+Y to temporarily view map in full screen."
#: unit1.error_unable_to_read_game_memory
msgid "Error. Can't read game's memory."
msgstr "Error. Can't read game's memory."
#: unit1.room_number
msgid "Room #"
msgstr "Room #"
#: unit1.run_the_game_notice
msgctxt "unit1.run_the_game_notice"
msgid "Run the game, then press \"Start\""
msgstr "Run the game, then press \"Start\""
#: unit1.start_button_stop
msgid "Stop"
msgstr "Stop"
#: unit1.start_button_strat
msgctxt "unit1.start_button_strat"
msgid "Start"
msgstr "Start"
#: unit1.unknown_room
msgid "Unknown"
msgstr "Unknown"

107
po/mmbn56mm.ru.po Normal file
View file

@ -0,0 +1,107 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
#: tform1.caption
msgid "MMBN5-6M"
msgstr ""
#: tform1.edit_room_button.caption
msgid "Edit Room"
msgstr "Дать Комнате Имя"
#: tform1.gamebox.text
msgid "MMBN 5"
msgstr ""
#: tform1.label1.caption
msgid "Game:"
msgstr "Игра:"
#: tform1.map_stretch_checkbox.caption
msgid "Stretch"
msgstr "Растянуть карту"
#: tform1.minus_spoil1.caption
msgid "-"
msgstr "Удалить"
#: tform1.plus_spoil.caption
msgid "+"
msgstr "Добавить"
#: tform1.room_name_label.caption
msgctxt "tform1.room_name_label.caption"
msgid "Run the game, then press \"Start\""
msgstr "Запусти игру, нажми \"Запуск\""
#: tform1.spoils_label.caption
msgid "Spoils:"
msgstr "Находки:"
#: tform1.start_stop_button.caption
msgctxt "tform1.start_stop_button.caption"
msgid "Start"
msgstr "Запуск"
#: unit1.adding_item
msgid "Adding item to Room #"
msgstr "Новая находка в Комнате №"
#: unit1.app_caption
msgid "MMBN5-6M: Reading from process ID"
msgstr "MMBN5-6M: Чтение процесса с идентификатором"
#: unit1.editing_item
msgid "Editing item in Room #"
msgstr "Редактирование находки в Комнате №"
#: unit1.editing_room
msgid "Editing Room #"
msgstr "Переименование Комнаты №"
#: unit1.enter_item_name
msgid "Enter item's name"
msgstr "Введи название находки"
#: unit1.enter_room_name
msgid "Enter this Room's name"
msgstr "Введи название Комнаты"
#: unit1.error_game_memory_not_read
msgid "Error. Game's memory not read."
msgstr "Ошибка. Память приложения не прочитана."
#: unit1.error_game_not_running
msgid "Error. Make sure the game's running."
msgstr "Ошибка. Игра точно запущена?"
#: unit1.error_hotkey_registration_failed
msgid "HotKey registration failed. You won't be able to press Win+Y to temporarily view map in full screen."
msgstr "Регистрация горячих клавиш не удалась. Нажимать Win+Y для переключения в полноэкранный режим не выйдет."
#: unit1.error_unable_to_read_game_memory
msgid "Error. Can't read game's memory."
msgstr "Ошибка. Чтение памяти приложения невозможно."
#: unit1.room_number
msgid "Room #"
msgstr "Комната №"
#: unit1.run_the_game_notice
msgctxt "unit1.run_the_game_notice"
msgid "Run the game, then press \"Start\""
msgstr "Запусти игру, нажми \"Запуск\""
#: unit1.start_button_stop
msgid "Stop"
msgstr "Остановка"
#: unit1.start_button_strat
msgctxt "unit1.start_button_strat"
msgid "Start"
msgstr "Запуск"
#: unit1.unknown_room
msgid "Unknown"
msgstr "Неизвестно где..."

View file

@ -237,6 +237,23 @@ MMBN 6=2147425942
2533274790526976=Research Lab 1 2533274790526976=Research Lab 1
281474985885696=Lab's Comp 1 281474985885696=Lab's Comp 1
1125899906908160=AsterLand 1125899906908160=AsterLand
1688849869504512=Popcorn Shop Comp
1125899907039232=Control Room (Aquarium)
2533274799570944=Security Camera Comp (Class 6-1)
262144=Green Town
1125899916083200=Symbol Comp (Green Town)
1407374892466176=Green Home Page (TRUTH Tablet)
9568256=Green Area 1
2814749776281600=Book Comp
281474976972800=Court Foyer
281474986278912=Green Area 2
281474986475520=Undernet Zero
562949953683456=Courtroom (Green Town)
844424930394112=The Punishment Room
562949962661888=Punishment Chair Comp
8519680=Judge Tree Area 1
281474985230336=Judge Tree Area 2
562949961940992=Judge Tree Area 3
[Spoils MMBN 6] [Spoils MMBN 6]
562949962596352=700z,Thunder * 562949962596352=700z,Thunder *
@ -246,11 +263,11 @@ MMBN 6=2147425942
844424939307008={PMD},Reg UP2 844424939307008={PMD},Reg UP2
1125899916017664=Full Energy 1125899916017664=Full Energy
8388608=Water Data,Spreader1 M,HP Memory 8388608=Water Data,Spreader1 M,HP Memory
281474985099264=Reg UP2,Rocovery 30 * 281474985099264=Reg UP2,Rocovery 30 *,ImgData [story]
562949962858496=Hi Cannon L,Elec Sword {PMD} 562949962858496=Hi Cannon L,Elec Sword {PMD}
1688849869438976=Unlocker 1688849869438976=Unlocker
3659174706479104=Dubl Shot *,1000z 3659174706479104=Dubl Shot *,1000z
281474986213376=Panel Return *,Vulcan 2D 281474986213376=Panel Return *,Vulcan 2D,Attack +1 [Tengu]
844424939044864=Tornado L {PMD},Geddon A [Pnl Return],HP Memory 844424939044864=Tornado L {PMD},Geddon A [Pnl Return],HP Memory
562949962924032=Wide Blade B {PMD},Reg Up 2,HP Memory {S},Bamboo Sword W {S},Recov 80 K {S},Barr 100 H {S},Time Bomb 1 {S} 562949962924032=Wide Blade B {PMD},Reg Up 2,HP Memory {S},Bamboo Sword W {S},Recov 80 K {S},Barr 100 H {S},Time Bomb 1 {S}
844424939372544=Barr 100 H 844424939372544=Barr 100 H
@ -261,5 +278,21 @@ MMBN 6=2147425942
562949961875456=HP + 50,Hi Cannon M 562949961875456=HP + 50,Hi Cannon M
281474985885696=FireHit1 F,Fan * 281474985885696=FireHit1 F,Fan *
9502720=Sub Memory [Aqua],HP Memory Aquaman has no use for it ;p 9502720=Sub Memory [Aqua],HP Memory Aquaman has no use for it ;p
1125899906908160= 1125899906908160=Full Energy [c]
1407374883684352=QuizBook 1407374883684352=QuizBook
1688849869504512=HP memory
2533274799570944=HP Memory [story],Expo Folder [story],Jungle,3000z
1125899916083200=Reg UP 2,2400z
1407374892466176=BlkBomb F {PMD},HP Memory
2814749776281600=Yoyo *,Sub Memory
9568256=Lance W {PMD},Spreader2 C
281474986278912=Speed +1,Auth Data
281474986475520=Reg UP 2 [Tengu]
281474976972800=87341489
562949962661888=Guardion O {PMD},Full Energy
8519680=ComingRd *,StepSword L
281474985230336=YoYo N,HP Memory
562949961940992=Reg UP 3,Expansion Memory
[Settings]
Language=ru

376
unit1.lfm
View file

@ -1,11 +1,12 @@
object Form1: TForm1 object Form1: TForm1
Left = 1066 Left = 1705
Height = 448 Height = 478
Top = 323 Top = 548
Width = 606 Width = 792
Anchors = [akTop]
Caption = 'MMBN5-6M' Caption = 'MMBN5-6M'
ClientHeight = 448 ClientHeight = 478
ClientWidth = 606 ClientWidth = 792
Font.CharSet = ANSI_CHARSET Font.CharSet = ANSI_CHARSET
Font.Height = -16 Font.Height = -16
Font.Name = 'Liberation Mono' Font.Name = 'Liberation Mono'
@ -16,14 +17,13 @@ object Form1: TForm1
Position = poScreenCenter Position = poScreenCenter
LCLVersion = '2.2.6.0' LCLVersion = '2.2.6.0'
object room_name_label: TLabel object room_name_label: TLabel
AnchorSideLeft.Control = start_stop_button AnchorSideLeft.Control = Splitter2
AnchorSideLeft.Side = asrBottom AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Owner AnchorSideTop.Control = Owner
Left = 192 Left = 231
Height = 18 Height = 18
Top = 8 Top = 8
Width = 320 Width = 320
BorderSpacing.Left = 8
BorderSpacing.Top = 8 BorderSpacing.Top = 8
Caption = 'Run the game, then press "Start"' Caption = 'Run the game, then press "Start"'
Color = clGradientInactiveCaption Color = clGradientInactiveCaption
@ -31,18 +31,20 @@ object Form1: TForm1
Transparent = False Transparent = False
end end
object map_image: TImage object map_image: TImage
AnchorSideLeft.Control = room_name_label AnchorSideLeft.Control = Splitter2
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = room_name_label AnchorSideTop.Control = room_name_label
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = Owner AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom AnchorSideBottom.Side = asrBottom
Left = 192 Left = 232
Height = 406 Height = 436
Top = 34 Top = 34
Width = 406 Width = 552
Anchors = [akTop, akLeft, akRight, akBottom] Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Left = 1
BorderSpacing.Top = 8 BorderSpacing.Top = 8
BorderSpacing.Right = 8 BorderSpacing.Right = 8
BorderSpacing.Bottom = 8 BorderSpacing.Bottom = 8
@ -51,153 +53,231 @@ object Form1: TForm1
Proportional = True Proportional = True
Stretch = True Stretch = True
end end
object start_stop_button: TSpeedButton object Splitter1: TSplitter
AnchorSideLeft.Control = Owner Left = 787
AnchorSideTop.Control = gamebox Height = 478
AnchorSideTop.Side = asrBottom Top = 0
Left = 8 Width = 5
Height = 30 Align = alRight
Top = 40 ResizeAnchor = akRight
Width = 176
AllowAllUp = True
BorderSpacing.Left = 8
BorderSpacing.Top = 8
Caption = 'Start'
GroupIndex = 1
Transparent = False
OnClick = start_stop_buttonClick
end end
object edit_room_button: TButton object Panel1: TPanel
AnchorSideLeft.Control = Owner Left = 0
AnchorSideTop.Control = start_stop_button Height = 478
AnchorSideTop.Side = asrBottom Top = 0
AnchorSideRight.Control = map_image Width = 227
Left = 8 Align = alLeft
Height = 30 BevelOuter = bvNone
Top = 78 ClientHeight = 478
Width = 176 ClientWidth = 227
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 8
BorderSpacing.Top = 8
BorderSpacing.Right = 8
Caption = 'Edit Room'
OnClick = edit_room_buttonClick
TabOrder = 0
end
object spoils_listbox: TListBox
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = spoils_label
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = map_image
AnchorSideBottom.Control = plus_spoil
Left = 8
Height = 250
Top = 142
Width = 176
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 8
BorderSpacing.Top = 8
BorderSpacing.Right = 8
BorderSpacing.Bottom = 8
BorderStyle = bsNone
Color = clGradientInactiveCaption
ItemHeight = 0
OnDblClick = spoils_listboxDblClick
TabOrder = 1 TabOrder = 1
object plus_spoil: TButton
AnchorSideLeft.Control = Panel1
AnchorSideBottom.Control = Panel1
AnchorSideBottom.Side = asrBottom
Left = 8
Height = 40
Top = 430
Width = 104
Anchors = [akLeft, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 8
Caption = '+'
OnClick = plus_spoilClick
TabOrder = 0
end
object minus_spoil1: TButton
AnchorSideLeft.Control = plus_spoil
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = plus_spoil
AnchorSideRight.Control = Panel1
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = Panel1
AnchorSideBottom.Side = asrBottom
Left = 120
Height = 40
Top = 430
Width = 103
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Right = 4
BorderSpacing.Bottom = 8
Caption = '-'
OnClick = minus_spoil1Click
TabOrder = 1
end
object map_stretch_checkbox: TCheckBox
AnchorSideLeft.Control = Panel1
AnchorSideTop.Control = spoils_listbox
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Panel1
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = plus_spoil
Left = 8
Height = 22
Top = 400
Width = 215
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Top = 8
BorderSpacing.Right = 4
BorderSpacing.Bottom = 8
Caption = 'Stretch'
OnChange = map_stretch_checkboxChange
TabOrder = 2
end
object spoils_listbox: TListBox
AnchorSideLeft.Control = Panel1
AnchorSideTop.Control = spoils_label
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Panel1
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = plus_spoil
Left = 8
Height = 250
Top = 142
Width = 215
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 8
BorderSpacing.Top = 8
BorderSpacing.Right = 4
BorderSpacing.Bottom = 8
BorderStyle = bsNone
Color = clGradientInactiveCaption
ItemHeight = 0
OnDblClick = spoils_listboxDblClick
TabOrder = 3
end
object spoils_label: TLabel
AnchorSideLeft.Control = Panel1
AnchorSideTop.Control = edit_room_button
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Panel1
AnchorSideRight.Side = asrBottom
Left = 8
Height = 18
Top = 116
Width = 215
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 8
BorderSpacing.Top = 8
BorderSpacing.Right = 4
Caption = 'Spoils:'
ParentColor = False
end
object edit_room_button: TButton
AnchorSideLeft.Control = Panel1
AnchorSideTop.Control = start_stop_button
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Panel1
AnchorSideRight.Side = asrBottom
Left = 8
Height = 30
Top = 78
Width = 215
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 8
BorderSpacing.Top = 8
BorderSpacing.Right = 4
Caption = 'Edit Room'
OnClick = edit_room_buttonClick
TabOrder = 4
end
object start_stop_button: TSpeedButton
AnchorSideLeft.Control = Panel1
AnchorSideTop.Control = gamebox
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Panel1
AnchorSideRight.Side = asrBottom
Left = 8
Height = 30
Top = 40
Width = 215
AllowAllUp = True
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 8
BorderSpacing.Top = 8
BorderSpacing.Right = 4
Caption = 'Start'
GroupIndex = 1
Transparent = False
OnClick = start_stop_buttonClick
end
object gamebox: TComboBox
AnchorSideLeft.Control = Label1
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Panel1
AnchorSideRight.Control = Panel1
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = start_stop_button
Left = 66
Height = 24
Top = 8
Width = 157
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 8
BorderSpacing.Top = 8
BorderSpacing.Right = 4
BorderSpacing.Bottom = 8
ItemHeight = 18
ItemIndex = 0
Items.Strings = (
'MMBN 5'
'MMBN 6'
)
OnSelect = gameboxSelect
ReadOnly = True
Style = csOwnerDrawFixed
TabOrder = 5
Text = 'MMBN 5'
end
object Label1: TLabel
AnchorSideLeft.Control = Panel1
AnchorSideTop.Control = Panel1
AnchorSideBottom.Control = gamebox
AnchorSideBottom.Side = asrBottom
Left = 8
Height = 18
Top = 11
Width = 50
BorderSpacing.Left = 8
BorderSpacing.Top = 11
Caption = 'Game:'
ParentColor = False
end
end end
object spoils_label: TLabel object Splitter2: TSplitter
Left = 227
Height = 478
Top = 0
Width = 4
OnMoved = Splitter2Moved
ResizeStyle = rsLine
end
object langbox: TComboBox
AnchorSideLeft.Control = Owner AnchorSideLeft.Control = Owner
AnchorSideTop.Control = edit_room_button
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = map_image
Left = 8
Height = 18
Top = 116
Width = 176
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 8
BorderSpacing.Top = 8
BorderSpacing.Right = 8
Caption = 'Spoils:'
ParentColor = False
end
object plus_spoil: TButton
AnchorSideLeft.Control = Owner
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 8
Height = 40
Top = 400
Width = 56
Anchors = [akLeft, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 8
Caption = '+'
OnClick = plus_spoilClick
TabOrder = 2
end
object minus_spoil1: TButton
AnchorSideLeft.Control = plus_spoil
AnchorSideLeft.Side = asrBottom AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = map_image
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 72
Height = 40
Top = 400
Width = 112
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Right = 8
BorderSpacing.Bottom = 8
Caption = '-'
OnClick = minus_spoil1Click
TabOrder = 3
end
object map_stretch_checkbox: TCheckBox
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = spoils_listbox
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = map_image
AnchorSideBottom.Control = plus_spoil
Left = 8
Height = 22
Top = 370
Width = 176
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Top = 8
BorderSpacing.Right = 8
BorderSpacing.Bottom = 8
Caption = 'Stretch'
OnChange = map_stretch_checkboxChange
TabOrder = 4
end
object gamebox: TComboBox
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner AnchorSideTop.Control = Owner
AnchorSideRight.Control = start_stop_button AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = start_stop_button Left = 734
Left = 8 Height = 26
Height = 24 Top = 1
Top = 8 Width = 50
Width = 176 Anchors = [akTop, akRight]
Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 1
BorderSpacing.Left = 8 BorderSpacing.Right = 8
BorderSpacing.Top = 8
BorderSpacing.Bottom = 8
ItemHeight = 18 ItemHeight = 18
ItemIndex = 0 ItemIndex = 0
Items.Strings = ( Items.Strings = (
'MMBN 5' 'en'
'MMBN 6' 'ru'
) )
OnSelect = gameboxSelect OnSelect = langboxSelect
ReadOnly = True ReadOnly = True
Style = csOwnerDrawFixed Style = csDropDownList
TabOrder = 5 TabOrder = 3
Text = 'MMBN 5' Text = 'en'
end end
object Timer1: TTimer object Timer1: TTimer
Enabled = False Enabled = False

13
unit1.lrj Normal file
View file

@ -0,0 +1,13 @@
{"version":1,"strings":[
{"hash":24216973,"name":"tform1.caption","sourcebytes":[77,77,66,78,53,45,54,77],"value":"MMBN5-6M"},
{"hash":223940658,"name":"tform1.room_name_label.caption","sourcebytes":[82,117,110,32,116,104,101,32,103,97,109,101,44,32,116,104,101,110,32,112,114,101,115,115,32,34,83,116,97,114,116,34],"value":"Run the game, then press \"Start\""},
{"hash":43,"name":"tform1.plus_spoil.caption","sourcebytes":[43],"value":"+"},
{"hash":45,"name":"tform1.minus_spoil1.caption","sourcebytes":[45],"value":"-"},
{"hash":179882696,"name":"tform1.map_stretch_checkbox.caption","sourcebytes":[83,116,114,101,116,99,104],"value":"Stretch"},
{"hash":175506234,"name":"tform1.spoils_label.caption","sourcebytes":[83,112,111,105,108,115,58],"value":"Spoils:"},
{"hash":6676461,"name":"tform1.edit_room_button.caption","sourcebytes":[69,100,105,116,32,82,111,111,109],"value":"Edit Room"},
{"hash":5941396,"name":"tform1.start_stop_button.caption","sourcebytes":[83,116,97,114,116],"value":"Start"},
{"hash":86077493,"name":"tform1.gamebox.text","sourcebytes":[77,77,66,78,32,53],"value":"MMBN 5"},
{"hash":5079946,"name":"tform1.label1.caption","sourcebytes":[71,97,109,101,58],"value":"Game:"},
{"hash":1726,"name":"tform1.langbox.text","sourcebytes":[101,110],"value":"en"}
]}

120
unit1.pas
View file

@ -6,7 +6,7 @@ interface
uses uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls,
Buttons, Grids, IniFiles, Windows; Buttons, Grids, IniFiles, Windows, DefaultTranslator, LCLTranslator, FileUtil;
type type
TWMHotKey = packed record TWMHotKey = packed record
@ -22,25 +22,32 @@ type
{ TForm1 } { TForm1 }
TForm1 = class ( TForm ) TForm1 = class ( TForm )
gamebox :TComboBox; langbox :TComboBox;
map_stretch_checkbox :TCheckBox;
plus_spoil :TButton;
edit_room_button :TButton; edit_room_button :TButton;
gamebox :TComboBox;
Label1 :TLabel;
map_stretch_checkbox :TCheckBox;
minus_spoil1 :TButton; minus_spoil1 :TButton;
spoils_label :TLabel; Panel1 :TPanel;
spoils_listbox :TListBox; plus_spoil :TButton;
Splitter1 :TSplitter;
map_image :TImage; map_image :TImage;
room_name_label :TLabel; room_name_label :TLabel;
Splitter2 :TSplitter;
spoils_label :TLabel;
spoils_listbox :TListBox;
start_stop_button :TSpeedButton; start_stop_button :TSpeedButton;
Timer1 :TTimer; Timer1 :TTimer;
procedure edit_room_buttonClick ( Sender :TObject ); procedure edit_room_buttonClick ( Sender :TObject );
procedure FormClose ( Sender :TObject; var CloseAction :TCloseAction ); procedure FormClose ( Sender :TObject; var CloseAction :TCloseAction );
procedure FormCreate ( Sender :TObject ); procedure FormCreate ( Sender :TObject );
procedure gameboxSelect ( Sender :TObject ); procedure gameboxSelect ( Sender :TObject );
procedure langboxSelect ( Sender :TObject );
procedure map_imagePaint ( Sender :TObject ); procedure map_imagePaint ( Sender :TObject );
procedure map_stretch_checkboxChange ( Sender :TObject ); procedure map_stretch_checkboxChange ( Sender :TObject );
procedure minus_spoil1Click ( Sender :TObject ); procedure minus_spoil1Click ( Sender :TObject );
procedure plus_spoilClick ( Sender :TObject ); procedure plus_spoilClick ( Sender :TObject );
procedure Splitter2Moved ( Sender :TObject );
procedure spoils_listboxDblClick ( Sender :TObject ); procedure spoils_listboxDblClick ( Sender :TObject );
procedure start_stop_buttonClick ( Sender :TObject ); procedure start_stop_buttonClick ( Sender :TObject );
procedure Timer1Timer ( Sender :TObject ); procedure Timer1Timer ( Sender :TObject );
@ -53,6 +60,25 @@ PROTECTED
end; end;
resourcestring
ADDING_ITEM = 'Adding item to Room #';
ENTER_ITEM_NAME = 'Enter item''s name';
EDITING_ITEM = 'Editing item in Room #';
EDITING_ROOM = 'Editing Room #';
ENTER_ROOM_NAME = 'Enter this Room''s name';
START_BUTTON_STRAT = 'Start';
START_BUTTON_STOP = 'Stop';
APP_CAPTION = 'MMBN5-6M: Reading from process ID';
ROOM_NUMBER = 'Room #';
RUN_THE_GAME_NOTICE = 'Run the game, then press "Start"';
ERROR_GAME_NOT_RUNNING = 'Error. Make sure the game''s running.';
ERROR_GAME_MEMORY_NOT_READ = 'Error. Game''s memory not read.';
ERROR_UNABLE_TO_READ_GAME_MEMORY = 'Error. Can''t read game''s memory.';
ERROR_HOTKEY_REGISTRATION_FAILED = 'HotKey registration failed. You won''t be able to press Win+Y to temporarily view map in full screen.';
UNKNOWN_ROOM = 'Unknown';
var var
Form1 :TForm1; Form1 :TForm1;
@ -76,8 +102,7 @@ begin
while INTEGER ( ContinueLoop ) <> 0 do while INTEGER ( ContinueLoop ) <> 0 do
begin begin
if ( ( UpperCase ( ExtractFileName ( FProcessEntry32.szExeFile ) ) = UpperCase ( ExeFileName ) ) if ( ( UpperCase ( ExtractFileName ( FProcessEntry32.szExeFile ) ) = UpperCase ( ExeFileName ) ) OR( UpperCase ( FProcessEntry32.szExeFile ) = UpperCase ( ExeFileName ) ) ) then begin
OR( UpperCase ( FProcessEntry32.szExeFile ) = UpperCase ( ExeFileName ) ) ) then begin
Result := FProcessEntry32.th32ProcessID; Result := FProcessEntry32.th32ProcessID;
Break; Break;
end; end;
@ -118,8 +143,8 @@ var
hProcess :THandle; hProcess :THandle;
ROOMS :TIniFile; // contains room labels ROOMS :TIniFile; // contains room labels
process_list :TStrings; process_list :TStrings;
room :QWORD = -1; // contains current room 16-bit value room :QWORD = 18446744073709551615; // contains current room 16-bit value
last_room :QWORD = -1; last_room :QWORD = 18446744073709551615;
room_name :STRING; room_name :STRING;
new_room :bool; new_room :bool;
spoils_list :STRING; spoils_list :STRING;
@ -138,12 +163,17 @@ is_cyberworld :BOOLEAN = False;
var var
x, y, w, h :INTEGER; x, y, w, h :INTEGER;
state :TWindowState; state :TWindowState;
languages :TStrings;
current_language :STRING;
{$R *.lfm} {$R *.lfm}
{ TForm1 } { TForm1 }
procedure TForm1.FormCreate ( Sender :TObject ); procedure TForm1.FormCreate ( Sender :TObject );
var
i :INTEGER;
begin begin
current_game_pointer := mmbn5_pointer; current_game_pointer := mmbn5_pointer;
// open ini file and create a list to hold processes // open ini file and create a list to hold processes
@ -151,7 +181,18 @@ begin
process_list := TStringList.Create ( ); process_list := TStringList.Create ( );
spoils_listbox.Height := 0; spoils_listbox.Height := 0;
if NOT RegisterHotKey ( Handle, 111000, MOD_WIN, VK_Y ) then if NOT RegisterHotKey ( Handle, 111000, MOD_WIN, VK_Y ) then
ShowMessage ( 'HotKey registration failed. You won''t be able to press Win+Y to temporarily view map in full screen.' ); ShowMessage ( ERROR_HOTKEY_REGISTRATION_FAILED );
// translations
languages := TStringList.Create ( );
current_language := ROOMS.ReadString ( 'Settings', 'Language', 'en' );
FindAllFiles ( languages, 'po', '*.po', False );
for i := 0 to languages.Count -1 do begin
languages[i] := languages [i].Replace ( 'po\mmbn56mm.', '' ).Replace ( '.po', '' );
end;
langbox.Items := languages;
langbox.ItemIndex := langbox.Items.IndexOf ( current_language );
SetDefaultLang ( current_language, 'po' );
end; end;
@ -167,6 +208,14 @@ begin
end; end;
procedure TForm1.langboxSelect ( Sender :TObject );
begin
current_language := langbox.Items [langbox.ItemIndex];
SetDefaultLang ( current_language, 'po' );
ROOMS.WriteString ( 'Settings', 'Language', current_language );
end;
procedure TForm1.map_imagePaint ( Sender :TObject ); procedure TForm1.map_imagePaint ( Sender :TObject );
begin begin
//map_image.Canvas.Brush.Style := bsClear; //map_image.Canvas.Brush.Style := bsClear;
@ -182,7 +231,7 @@ end;
procedure TForm1.minus_spoil1Click ( Sender :TObject ); procedure TForm1.minus_spoil1Click ( Sender :TObject );
var var
Txt :STRING; Txt :STRING = '';
i :INTEGER; i :INTEGER;
begin begin
if ( spoils_listbox.ItemIndex > -1 ) then begin if ( spoils_listbox.ItemIndex > -1 ) then begin
@ -205,11 +254,11 @@ end;
procedure TForm1.plus_spoilClick ( Sender :TObject ); procedure TForm1.plus_spoilClick ( Sender :TObject );
var var
new_spoil_name :STRING; new_spoil_name :STRING = '';
Txt :STRING; Txt :STRING = '';
i :INTEGER; i :INTEGER;
begin begin
if InputQuery ( 'Adding item to Room #' + IntToStr ( room ), 'Enter item''s name', new_spoil_name ) then begin if InputQuery ( ADDING_ITEM + IntToStr ( room ), ENTER_ITEM_NAME, new_spoil_name ) then begin
spoils_listbox.Items.Add ( new_spoil_name ); spoils_listbox.Items.Add ( new_spoil_name );
for i := 0 to spoils_listbox.Items.Count - 1 do begin for i := 0 to spoils_listbox.Items.Count - 1 do begin
if i < spoils_listbox.Items.Count - 1 then if i < spoils_listbox.Items.Count - 1 then
@ -227,16 +276,22 @@ begin
end; end;
procedure TForm1.Splitter2Moved ( Sender :TObject );
begin
plus_spoil.Width := Round ( Panel1.Width/2 ) -12;
end;
procedure TForm1.spoils_listboxDblClick ( Sender :TObject ); procedure TForm1.spoils_listboxDblClick ( Sender :TObject );
var var
new_spoil_name :STRING; new_spoil_name :STRING;
var var
Txt :STRING; Txt :STRING = '';
i :INTEGER; i :INTEGER;
begin begin
if ( spoils_listbox.ItemIndex > -1 ) then begin if ( spoils_listbox.ItemIndex > -1 ) then begin
new_spoil_name := spoils_listbox.Items [spoils_listbox.ItemIndex]; new_spoil_name := spoils_listbox.Items [spoils_listbox.ItemIndex];
if InputQuery ( 'Editing item in Room #' + IntToStr ( room ), 'Enter item''s name', new_spoil_name ) then begin if InputQuery ( EDITING_ITEM + IntToStr ( room ), ENTER_ITEM_NAME, new_spoil_name ) then begin
spoils_listbox.Items[spoils_listbox.ItemIndex] := new_spoil_name; spoils_listbox.Items[spoils_listbox.ItemIndex] := new_spoil_name;
for i := 0 to spoils_listbox.Items.Count - 1 do begin for i := 0 to spoils_listbox.Items.Count - 1 do begin
if i < spoils_listbox.Items.Count - 1 then if i < spoils_listbox.Items.Count - 1 then
@ -262,22 +317,22 @@ var
begin begin
if start_stop_button.Down = False then begin if start_stop_button.Down = False then begin
start_stop_button.Caption := 'Start'; start_stop_button.Caption := START_BUTTON_STRAT;
Timer1.Enabled := False; Timer1.Enabled := False;
CloseHandle ( hProcess ); CloseHandle ( hProcess );
room_name_label.Caption := 'Run the game, then press "Start"'; room_name_label.Caption := RUN_THE_GAME_NOTICE;
end else begin end else begin
start_stop_button.Caption := 'Stop'; start_stop_button.Caption := START_BUTTON_STOP;
ListRunningProcesses ( process_list ); ListRunningProcesses ( process_list );
for i := 0 to process_list.Count - 1 do begin for i := 0 to process_list.Count - 1 do begin
if ( process_list [i] = 'MMBN_LC2.exe' ) then begin if ( process_list [i] = 'MMBN_LC2.exe' ) then begin
ProcID := FindProcessID ( process_list [i] ); ProcID := FindProcessID ( process_list [i] );
hProcess := OpenProcess ( PROCESS_VM_READ, False, ProcID ); hProcess := OpenProcess ( PROCESS_VM_READ, False, ProcID );
Caption := 'MMBN5-6M: Reading from process ID ' + IntToStr ( ProcID ); Caption := APP_CAPTION + ' ' + IntToStr ( ProcID );
Timer1.Enabled := True; Timer1.Enabled := True;
break; break;
end else begin end else begin
room_name_label.Caption := 'Error. Run the game.'; room_name_label.Caption := ERROR_GAME_NOT_RUNNING;
end; end;
end; end;
end; end;
@ -307,8 +362,8 @@ begin
room_name_label.Caption := room_name; room_name_label.Caption := room_name;
end else begin end else begin
room := SMALLINT ( room ); // - 844424930459648; room := SMALLINT ( room ); // - 844424930459648;
room_name := ROOMS.ReadString ( 'Rooms ' + current_game, IntToStr ( room ), 'Unknown' ); room_name := ROOMS.ReadString ( 'Rooms ' + current_game, IntToStr ( room ), UNKNOWN_ROOM );
room_name_label.Caption := 'Room #' + IntToStr ( room ) + ': ' + room_name; room_name_label.Caption := ROOM_NUMBER + IntToStr ( room ) + ': ' + room_name;
end; end;
spoils_list := ROOMS.ReadString ( 'Spoils ' + current_game, IntToStr ( room ), '' ); spoils_list := ROOMS.ReadString ( 'Spoils ' + current_game, IntToStr ( room ), '' );
@ -325,11 +380,11 @@ begin
end; end;
end; end;
end else begin end else begin
room_name_label.Caption := 'Error. Make sure the game is running.'; room_name_label.Caption := ERROR_GAME_MEMORY_NOT_READ;
end; end;
except except
on edit_room_button :Exception do on edit_room_button :Exception do
room_name_label.Caption := 'Error. Can''t read game''s memory.'; room_name_label.Caption := ERROR_UNABLE_TO_READ_GAME_MEMORY;
end; end;
end; end;
@ -338,12 +393,12 @@ end;
procedure TForm1.edit_room_buttonClick ( Sender :TObject ); procedure TForm1.edit_room_buttonClick ( Sender :TObject );
var var
new_room_name :STRING; new_room_name :STRING = '';
begin begin
new_room_name := room_name; new_room_name := room_name;
if InputQuery ( 'Editing Room # ' + IntToStr ( room ), 'Enter this Room''s name', new_room_name ) then begin if InputQuery ( EDITING_ROOM + ' ' + IntToStr ( room ), ENTER_ROOM_NAME, new_room_name ) then begin
ROOMS.WriteString ( 'Rooms ' + current_game, IntToStr ( room ), new_room_name ); ROOMS.WriteString ( 'Rooms ' + current_game, IntToStr ( room ), new_room_name );
last_room := -1; last_room := 18446744073709551615;
end; end;
end; end;
@ -358,6 +413,7 @@ begin
// free additionally created objects // free additionally created objects
ROOMS.Free; ROOMS.Free;
process_list.Free; process_list.Free;
languages.Free;
UnregisterHotKey ( Handle, 111000 ); UnregisterHotKey ( Handle, 111000 );
end; end;
@ -397,4 +453,10 @@ begin
end; end;
initialization
SetDefaultLang ( 'en', 'po' );
end. end.