implemented the tiny trainer. (It's more a joke to piss of those 'small trainer' people and those 'because everyone makes exes' remarks)

This commit is contained in:
cheatengine@gmail.com 2011-10-31 21:43:28 +00:00
parent 2857c64281
commit 82024c7acc
9 changed files with 350 additions and 296 deletions

Binary file not shown.

View File

@ -19,7 +19,7 @@
<AutoIncrementBuild Value="True"/>
<MajorVersionNr Value="6"/>
<MinorVersionNr Value="2"/>
<BuildNr Value="2079"/>
<BuildNr Value="2085"/>
<Language Value=""/>
<CharSet Value=""/>
<StringTable CompanyName="Cheat Engine" ProductVersion="6.2" FileDescription="Cheat Engine"/>
@ -164,15 +164,17 @@
<PackageName Value="LCL"/>
</Item5>
</RequiredPackages>
<Units Count="217">
<Units Count="216">
<Unit0>
<Filename Value="cheatengine.lpr"/>
<IsPartOfProject Value="True"/>
<UnitName Value="cheatengine"/>
<EditorIndex Value="6"/>
<WindowIndex Value="0"/>
<TopLine Value="1"/>
<CursorPos X="21" Y="4"/>
<TopLine Value="70"/>
<CursorPos X="132" Y="83"/>
<UsageCount Value="211"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit0>
<Unit1>
@ -193,10 +195,10 @@
<ComponentName Value="MainForm"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="MainUnit"/>
<EditorIndex Value="1"/>
<EditorIndex Value="0"/>
<WindowIndex Value="0"/>
<TopLine Value="990"/>
<CursorPos X="61" Y="1007"/>
<TopLine Value="2539"/>
<CursorPos X="16" Y="2550"/>
<UsageCount Value="211"/>
<Bookmarks Count="1">
<Item0 X="1" Y="1" ID="2"/>
@ -219,12 +221,10 @@
<Filename Value="CEFuncProc.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="CEFuncProc"/>
<EditorIndex Value="23"/>
<WindowIndex Value="0"/>
<TopLine Value="22"/>
<CursorPos X="6" Y="39"/>
<UsageCount Value="204"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit4>
<Unit5>
@ -251,12 +251,10 @@
<Filename Value="Assemblerunit.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="Assemblerunit"/>
<EditorIndex Value="21"/>
<WindowIndex Value="0"/>
<TopLine Value="3604"/>
<CursorPos X="1" Y="3621"/>
<UsageCount Value="203"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit7>
<Unit8>
@ -315,12 +313,10 @@
<Filename Value="autoassembler.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="autoassembler"/>
<EditorIndex Value="20"/>
<WindowIndex Value="0"/>
<TopLine Value="1544"/>
<CursorPos X="121" Y="1565"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit13>
<Unit14>
@ -349,12 +345,10 @@
<Filename Value="MainUnit2.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="MainUnit2"/>
<EditorIndex Value="30"/>
<WindowIndex Value="0"/>
<TopLine Value="4"/>
<CursorPos X="21" Y="28"/>
<UsageCount Value="203"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit16>
<Unit17>
@ -451,12 +445,10 @@
<Filename Value="pluginexports.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="pluginexports"/>
<EditorIndex Value="7"/>
<WindowIndex Value="0"/>
<TopLine Value="28"/>
<CursorPos X="10" Y="45"/>
<UsageCount Value="201"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit25>
<Unit26>
@ -551,7 +543,7 @@
<WindowIndex Value="0"/>
<TopLine Value="10"/>
<CursorPos X="41" Y="16"/>
<UsageCount Value="85"/>
<UsageCount Value="76"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit33>
<Unit34>
@ -692,10 +684,10 @@
<ComponentName Value="formAddressChange"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="formAddressChangeUnit"/>
<EditorIndex Value="17"/>
<EditorIndex Value="11"/>
<WindowIndex Value="0"/>
<TopLine Value="1036"/>
<CursorPos X="1" Y="1061"/>
<TopLine Value="203"/>
<CursorPos X="16" Y="226"/>
<UsageCount Value="203"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
@ -761,21 +753,19 @@
<Filename Value="OpenSave.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="OpenSave"/>
<EditorIndex Value="0"/>
<WindowIndex Value="0"/>
<TopLine Value="184"/>
<CursorPos X="33" Y="184"/>
<TopLine Value="1158"/>
<CursorPos X="44" Y="1164"/>
<ExtraEditorCount Value="1"/>
<ExtraEditor1>
<WindowIndex Value="0"/>
<TopLine Value="1158"/>
<CursorPos X="44" Y="1164"/>
<TopLine Value="184"/>
<CursorPos X="33" Y="184"/>
</ExtraEditor1>
<UsageCount Value="221"/>
<Bookmarks Count="1">
<Item0 X="3" Y="933" ID="0"/>
</Bookmarks>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit52>
<Unit53>
@ -796,13 +786,10 @@
<ComponentName Value="frmAutoInject"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="frmautoinjectunit"/>
<EditorIndex Value="3"/>
<WindowIndex Value="0"/>
<TopLine Value="1270"/>
<CursorPos X="30" Y="1289"/>
<UsageCount Value="221"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit54>
<Unit55>
@ -820,13 +807,10 @@
<ComponentName Value="MemoryBrowser"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="MemoryBrowserFormUnit"/>
<EditorIndex Value="12"/>
<WindowIndex Value="0"/>
<TopLine Value="3636"/>
<CursorPos X="15" Y="3636"/>
<UsageCount Value="220"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit56>
<Unit57>
@ -843,12 +827,10 @@
<Filename Value="disassemblerviewunit.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="disassemblerviewunit"/>
<EditorIndex Value="16"/>
<WindowIndex Value="0"/>
<TopLine Value="109"/>
<CursorPos X="14" Y="132"/>
<UsageCount Value="218"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit58>
<Unit59>
@ -1243,12 +1225,10 @@
<ComponentName Value="frmChangedAddresses"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="formChangedAddresses"/>
<EditorIndex Value="15"/>
<WindowIndex Value="0"/>
<TopLine Value="90"/>
<CursorPos X="3" Y="100"/>
<UsageCount Value="205"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit92>
<Unit93>
@ -1257,13 +1237,10 @@
<ComponentName Value="Registers"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="frmRegistersunit"/>
<EditorIndex Value="13"/>
<WindowIndex Value="0"/>
<TopLine Value="322"/>
<CursorPos X="89" Y="322"/>
<UsageCount Value="205"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit93>
<Unit94>
@ -1533,12 +1510,10 @@
<Filename Value="debughelper.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="DebugHelper"/>
<EditorIndex Value="14"/>
<WindowIndex Value="0"/>
<TopLine Value="1185"/>
<CursorPos X="35" Y="1203"/>
<UsageCount Value="209"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit117>
<Unit118>
@ -1577,30 +1552,26 @@
<Filename Value="addresslist.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="addresslist"/>
<EditorIndex Value="2"/>
<WindowIndex Value="0"/>
<TopLine Value="638"/>
<CursorPos X="15" Y="642"/>
<UsageCount Value="203"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit121>
<Unit122>
<Filename Value="MemoryRecordUnit.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="MemoryRecordUnit"/>
<EditorIndex Value="11"/>
<WindowIndex Value="0"/>
<TopLine Value="135"/>
<CursorPos X="14" Y="153"/>
<TopLine Value="341"/>
<CursorPos X="64" Y="347"/>
<ExtraEditorCount Value="1"/>
<ExtraEditor1>
<WindowIndex Value="0"/>
<TopLine Value="341"/>
<CursorPos X="64" Y="347"/>
<TopLine Value="135"/>
<CursorPos X="14" Y="153"/>
</ExtraEditor1>
<UsageCount Value="215"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit122>
<Unit123>
@ -1641,10 +1612,12 @@
<ComponentName Value="frmStructuresConfig"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="frmStructuresConfigUnit"/>
<EditorIndex Value="2"/>
<WindowIndex Value="0"/>
<TopLine Value="256"/>
<CursorPos X="49" Y="272"/>
<CursorPos X="1" Y="264"/>
<UsageCount Value="247"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit126>
<Unit127>
@ -1808,32 +1781,27 @@
<Filename Value="CustomTypeHandler.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="CustomTypeHandler"/>
<EditorIndex Value="18"/>
<WindowIndex Value="0"/>
<TopLine Value="58"/>
<CursorPos X="56" Y="64"/>
<UsageCount Value="238"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit142>
<Unit143>
<Filename Value="LuaHandler.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="LuaHandler"/>
<EditorIndex Value="6"/>
<EditorIndex Value="5"/>
<WindowIndex Value="0"/>
<TopLine Value="1424"/>
<CursorPos X="74" Y="1441"/>
<TopLine Value="85"/>
<CursorPos X="32" Y="98"/>
<ExtraEditorCount Value="1"/>
<ExtraEditor1>
<WindowIndex Value="0"/>
<TopLine Value="8496"/>
<CursorPos X="112" Y="8496"/>
<TopLine Value="1195"/>
<CursorPos X="22" Y="1209"/>
</ExtraEditor1>
<UsageCount Value="200"/>
<Bookmarks Count="1">
<Item0 X="20" Y="1443" ID="8"/>
</Bookmarks>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit143>
@ -1843,10 +1811,10 @@
<ComponentName Value="frmLuaEngine"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="frmLuaEngineUnit"/>
<EditorIndex Value="10"/>
<EditorIndex Value="3"/>
<WindowIndex Value="0"/>
<TopLine Value="68"/>
<CursorPos X="15" Y="101"/>
<TopLine Value="41"/>
<CursorPos X="25" Y="51"/>
<UsageCount Value="201"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
@ -1957,10 +1925,12 @@
<Filename Value="LuaCaller.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="LuaCaller"/>
<EditorIndex Value="8"/>
<WindowIndex Value="0"/>
<TopLine Value="127"/>
<CursorPos X="3" Y="109"/>
<TopLine Value="84"/>
<CursorPos X="36" Y="97"/>
<UsageCount Value="234"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit154>
<Unit155>
@ -2021,10 +1991,17 @@
<ComponentName Value="frmExeTrainerGenerator"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="frmExeTrainerGeneratorUnit"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="1"/>
<WindowIndex Value="0"/>
<TopLine Value="169"/>
<CursorPos X="20" Y="186"/>
<TopLine Value="197"/>
<CursorPos X="83" Y="278"/>
<UsageCount Value="212"/>
<Bookmarks Count="1">
<Item0 X="21" Y="477" ID="8"/>
</Bookmarks>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit160>
<Unit161>
@ -2275,7 +2252,7 @@
<WindowIndex Value="0"/>
<TopLine Value="334"/>
<CursorPos X="17" Y="351"/>
<UsageCount Value="42"/>
<UsageCount Value="33"/>
</Unit184>
<Unit185>
<Filename Value="networkInterface.pas"/>
@ -2313,12 +2290,10 @@
<Unit188>
<Filename Value="C:\lazarus\lcl\graphics.pp"/>
<UnitName Value="Graphics"/>
<EditorIndex Value="4"/>
<WindowIndex Value="0"/>
<TopLine Value="537"/>
<CursorPos X="35" Y="554"/>
<UsageCount Value="90"/>
<Loaded Value="True"/>
<UsageCount Value="81"/>
</Unit188>
<Unit189>
<Filename Value="LuaGraphic.pas"/>
@ -2344,10 +2319,12 @@
<Filename Value="d3dhookUnit.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="d3dhookUnit"/>
<EditorIndex Value="4"/>
<WindowIndex Value="0"/>
<TopLine Value="564"/>
<CursorPos X="3" Y="429"/>
<TopLine Value="231"/>
<CursorPos X="3" Y="233"/>
<UsageCount Value="249"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit191>
<Unit192>
@ -2384,21 +2361,19 @@
</Unit194>
<Unit195>
<Filename Value="C:\lazarus\fpc\2.5.1\source\rtl\objpas\classes\classesh.inc"/>
<EditorIndex Value="24"/>
<EditorIndex Value="12"/>
<WindowIndex Value="0"/>
<TopLine Value="282"/>
<CursorPos X="14" Y="299"/>
<TopLine Value="93"/>
<CursorPos X="3" Y="110"/>
<UsageCount Value="191"/>
<Loaded Value="True"/>
</Unit195>
<Unit196>
<Filename Value="C:\lazarus\lcl\include\treeview.inc"/>
<EditorIndex Value="25"/>
<WindowIndex Value="0"/>
<TopLine Value="1487"/>
<CursorPos X="1" Y="1507"/>
<UsageCount Value="104"/>
<Loaded Value="True"/>
<UsageCount Value="96"/>
</Unit196>
<Unit197>
<Filename Value="StructuresFrm2.pas"/>
@ -2407,14 +2382,13 @@
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="StructuresFrm2"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="22"/>
<EditorIndex Value="9"/>
<WindowIndex Value="0"/>
<TopLine Value="674"/>
<CursorPos X="35" Y="691"/>
<TopLine Value="2878"/>
<CursorPos X="17" Y="2914"/>
<UsageCount Value="201"/>
<Bookmarks Count="1">
<Item0 X="42" Y="1104" ID="7"/>
<Item0 X="42" Y="1113" ID="7"/>
</Bookmarks>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
@ -2436,13 +2410,10 @@
<ComponentName Value="frmStructures2ElementInfo"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="frmStructures2ElementInfoUnit"/>
<EditorIndex Value="27"/>
<WindowIndex Value="0"/>
<TopLine Value="1"/>
<CursorPos X="44" Y="14"/>
<UsageCount Value="208"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit199>
<Unit200>
@ -2450,21 +2421,21 @@
<WindowIndex Value="0"/>
<TopLine Value="178"/>
<CursorPos X="23" Y="192"/>
<UsageCount Value="25"/>
<UsageCount Value="16"/>
</Unit200>
<Unit201>
<Filename Value="C:\lazarus\lcl\include\winapih.inc"/>
<WindowIndex Value="0"/>
<TopLine Value="207"/>
<CursorPos X="10" Y="221"/>
<UsageCount Value="14"/>
<UsageCount Value="5"/>
</Unit201>
<Unit202>
<Filename Value="C:\lazarus\lcl\include\intfbasewinapi.inc"/>
<WindowIndex Value="0"/>
<TopLine Value="1413"/>
<CursorPos X="3" Y="1415"/>
<UsageCount Value="14"/>
<UsageCount Value="5"/>
</Unit202>
<Unit203>
<Filename Value="C:\lazarus\fpc\2.5.1\source\packages\winunits-jedi\src\jwawindows.pas"/>
@ -2472,14 +2443,14 @@
<WindowIndex Value="0"/>
<TopLine Value="349"/>
<CursorPos X="3" Y="368"/>
<UsageCount Value="158"/>
<UsageCount Value="149"/>
</Unit203>
<Unit204>
<Filename Value="C:\lazarus\fpc\2.5.1\source\rtl\win\wininc\redef.inc"/>
<WindowIndex Value="0"/>
<TopLine Value="292"/>
<CursorPos X="10" Y="309"/>
<UsageCount Value="158"/>
<UsageCount Value="149"/>
</Unit204>
<Unit205>
<Filename Value="C:\lazarus\fpc\2.5.1\source\rtl\objpas\types.pp"/>
@ -2487,23 +2458,23 @@
<WindowIndex Value="0"/>
<TopLine Value="66"/>
<CursorPos X="20" Y="83"/>
<UsageCount Value="158"/>
<UsageCount Value="149"/>
</Unit205>
<Unit206>
<Filename Value="C:\lazarus\fpc\2.5.1\source\rtl\win\wininc\struct.inc"/>
<WindowIndex Value="0"/>
<TopLine Value="216"/>
<CursorPos X="6" Y="233"/>
<UsageCount Value="158"/>
<UsageCount Value="149"/>
</Unit206>
<Unit207>
<Filename Value="lua\lua.pas"/>
<UnitName Value="lua"/>
<EditorIndex Value="9"/>
<EditorIndex Value="7"/>
<WindowIndex Value="0"/>
<TopLine Value="190"/>
<CursorPos X="2" Y="207"/>
<UsageCount Value="104"/>
<TopLine Value="68"/>
<CursorPos X="3" Y="85"/>
<UsageCount Value="114"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit207>
@ -2513,206 +2484,187 @@
<WindowIndex Value="0"/>
<TopLine Value="54"/>
<CursorPos X="3" Y="71"/>
<UsageCount Value="32"/>
<UsageCount Value="23"/>
</Unit208>
<Unit209>
<Filename Value="C:\lazarus\lcl\include\font.inc"/>
<WindowIndex Value="0"/>
<TopLine Value="878"/>
<CursorPos X="1" Y="897"/>
<UsageCount Value="7"/>
</Unit209>
<Unit210>
<Filename Value="C:\lazarus\lcl\buttons.pp"/>
<UnitName Value="Buttons"/>
<WindowIndex Value="0"/>
<TopLine Value="368"/>
<CursorPos X="22" Y="385"/>
<UsageCount Value="5"/>
</Unit210>
<Unit211>
<Filename Value="C:\lazarus\lcl\include\control.inc"/>
<EditorIndex Value="26"/>
<WindowIndex Value="0"/>
<TopLine Value="1950"/>
<CursorPos X="1" Y="1967"/>
<UsageCount Value="104"/>
<Loaded Value="True"/>
</Unit211>
<Unit212>
<UsageCount Value="96"/>
</Unit209>
<Unit210>
<Filename Value="C:\lazarus\lcl\include\customcombobox.inc"/>
<EditorIndex Value="28"/>
<WindowIndex Value="0"/>
<TopLine Value="950"/>
<CursorPos X="1" Y="978"/>
<UsageCount Value="103"/>
<Loaded Value="True"/>
</Unit212>
<Unit213>
<UsageCount Value="95"/>
</Unit210>
<Unit211>
<Filename Value="C:\lazarus\lcl\include\wincontrol.inc"/>
<EditorIndex Value="29"/>
<WindowIndex Value="0"/>
<TopLine Value="7163"/>
<CursorPos X="1" Y="7181"/>
<UsageCount Value="103"/>
<Loaded Value="True"/>
</Unit213>
<Unit214>
<UsageCount Value="95"/>
</Unit211>
<Unit212>
<Filename Value="frmStructureLinkerUnit.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="frmStructureLinker"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="frmStructureLinkerUnit"/>
<EditorIndex Value="19"/>
<WindowIndex Value="0"/>
<TopLine Value="139"/>
<CursorPos X="34" Y="158"/>
<UsageCount Value="207"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit214>
<Unit215>
</Unit212>
<Unit213>
<Filename Value="C:\lazarus\lcl\comctrls.pp"/>
<UnitName Value="ComCtrls"/>
<EditorIndex Value="5"/>
<WindowIndex Value="0"/>
<TopLine Value="2947"/>
<CursorPos X="15" Y="2979"/>
<UsageCount Value="80"/>
<Loaded Value="True"/>
</Unit215>
<Unit216>
<UsageCount Value="71"/>
</Unit213>
<Unit214>
<Filename Value="C:\lazarus\lcl\stdctrls.pp"/>
<UnitName Value="StdCtrls"/>
<EditorIndex Value="8"/>
<WindowIndex Value="0"/>
<TopLine Value="1173"/>
<CursorPos X="17" Y="1182"/>
<UsageCount Value="47"/>
<UsageCount Value="38"/>
</Unit214>
<Unit215>
<Filename Value="C:\lazarus\fpc\2.5.1\source\rtl\objpas\sysutils\sysutilh.inc"/>
<EditorIndex Value="10"/>
<WindowIndex Value="0"/>
<TopLine Value="268"/>
<CursorPos X="13" Y="285"/>
<UsageCount Value="52"/>
<Loaded Value="True"/>
</Unit216>
</Unit215>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="Assemblerunit.pas"/>
<Caret Line="3426" Column="48" TopLine="3382"/>
<Filename Value="LuaHandler.pas"/>
<Caret Line="2641" Column="16" TopLine="2613"/>
</Position1>
<Position2>
<Filename Value="StructuresFrm2.pas"/>
<Caret Line="2889" Column="23" TopLine="2879"/>
<Filename Value="LuaHandler.pas"/>
<Caret Line="7874" Column="43" TopLine="7855"/>
</Position2>
<Position3>
<Filename Value="StructuresFrm2.pas"/>
<Caret Line="130" Column="17" TopLine="101"/>
<Filename Value="LuaHandler.pas"/>
<Caret Line="30" Column="16" TopLine="22"/>
</Position3>
<Position4>
<Filename Value="StructuresFrm2.pas"/>
<Caret Line="2715" Column="23" TopLine="2692"/>
<Filename Value="LuaHandler.pas"/>
<Caret Line="73" Column="12" TopLine="57"/>
</Position4>
<Position5>
<Filename Value="StructuresFrm2.pas"/>
<Caret Line="129" Column="15" TopLine="112"/>
<Filename Value="LuaHandler.pas"/>
<Caret Line="110" Column="31" TopLine="67"/>
</Position5>
<Position6>
<Filename Value="StructuresFrm2.pas"/>
<Caret Line="850" Column="11" TopLine="847"/>
<Filename Value="LuaHandler.pas"/>
<Caret Line="78" Column="1" TopLine="67"/>
</Position6>
<Position7>
<Filename Value="StructuresFrm2.pas"/>
<Caret Line="34" Column="5" TopLine="22"/>
<Filename Value="LuaHandler.pas"/>
<Caret Line="79" Column="1" TopLine="67"/>
</Position7>
<Position8>
<Filename Value="StructuresFrm2.pas"/>
<Caret Line="694" Column="21" TopLine="670"/>
<Filename Value="LuaHandler.pas"/>
<Caret Line="90" Column="1" TopLine="67"/>
</Position8>
<Position9>
<Filename Value="StructuresFrm2.pas"/>
<Caret Line="42" Column="45" TopLine="37"/>
<Filename Value="LuaHandler.pas"/>
<Caret Line="78" Column="1" TopLine="67"/>
</Position9>
<Position10>
<Filename Value="StructuresFrm2.pas"/>
<Caret Line="44" Column="56" TopLine="37"/>
<Filename Value="LuaHandler.pas"/>
<Caret Line="79" Column="1" TopLine="67"/>
</Position10>
<Position11>
<Filename Value="MemoryBrowserFormUnit.pas"/>
<Caret Line="2199" Column="1" TopLine="2225"/>
<Filename Value="LuaHandler.pas"/>
<Caret Line="87" Column="1" TopLine="67"/>
</Position11>
<Position12>
<Filename Value="MemoryBrowserFormUnit.pas"/>
<Caret Line="748" Column="27" TopLine="735"/>
<Filename Value="LuaHandler.pas"/>
<Caret Line="83" Column="21" TopLine="67"/>
</Position12>
<Position13>
<Filename Value="MemoryBrowserFormUnit.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
<Filename Value="LuaHandler.pas"/>
<Caret Line="92" Column="5" TopLine="67"/>
</Position13>
<Position14>
<Filename Value="MemoryBrowserFormUnit.pas"/>
<Caret Line="369" Column="12" TopLine="341"/>
<Filename Value="LuaHandler.pas"/>
<Caret Line="93" Column="1" TopLine="82"/>
</Position14>
<Position15>
<Filename Value="LuaHandler.pas"/>
<Caret Line="7212" Column="6" TopLine="7201"/>
<Caret Line="102" Column="44" TopLine="82"/>
</Position15>
<Position16>
<Filename Value="LuaHandler.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
<Filename Value="frmExeTrainerGeneratorUnit.pas"/>
<Caret Line="186" Column="20" TopLine="169"/>
</Position16>
<Position17>
<Filename Value="LuaHandler.pas"/>
<Caret Line="1425" Column="18" TopLine="1411"/>
<Filename Value="frmExeTrainerGeneratorUnit.pas"/>
<Caret Line="187" Column="20" TopLine="170"/>
</Position17>
<Position18>
<Filename Value="pluginexports.pas"/>
<Caret Line="45" Column="10" TopLine="28"/>
<Filename Value="frmExeTrainerGeneratorUnit.pas"/>
<Caret Line="188" Column="20" TopLine="171"/>
</Position18>
<Position19>
<Filename Value="pluginexports.pas"/>
<Caret Line="939" Column="26" TopLine="921"/>
<Filename Value="frmExeTrainerGeneratorUnit.pas"/>
<Caret Line="187" Column="20" TopLine="170"/>
</Position19>
<Position20>
<Filename Value="LuaHandler.pas"/>
<Caret Line="1425" Column="19" TopLine="1411"/>
<Filename Value="frmExeTrainerGeneratorUnit.pas"/>
<Caret Line="186" Column="20" TopLine="169"/>
</Position20>
<Position21>
<Filename Value="LuaHandler.pas"/>
<Caret Line="1435" Column="1" TopLine="1420"/>
<Filename Value="frmExeTrainerGeneratorUnit.pas"/>
<Caret Line="187" Column="20" TopLine="170"/>
</Position21>
<Position22>
<Filename Value="LuaHandler.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
<Filename Value="frmExeTrainerGeneratorUnit.pas"/>
<Caret Line="188" Column="20" TopLine="171"/>
</Position22>
<Position23>
<Filename Value="LuaHandler.pas"/>
<Caret Line="1097" Column="8" TopLine="1069"/>
<Filename Value="frmExeTrainerGeneratorUnit.pas"/>
<Caret Line="189" Column="20" TopLine="172"/>
</Position23>
<Position24>
<Filename Value="LuaHandler.pas"/>
<Caret Line="1099" Column="8" TopLine="1071"/>
<Filename Value="frmExeTrainerGeneratorUnit.pas"/>
<Caret Line="435" Column="21" TopLine="421"/>
</Position24>
<Position25>
<Filename Value="LuaHandler.pas"/>
<Caret Line="1113" Column="12" TopLine="1085"/>
<Filename Value="frmExeTrainerGeneratorUnit.pas"/>
<Caret Line="443" Column="1" TopLine="434"/>
</Position25>
<Position26>
<Filename Value="LuaHandler.pas"/>
<Caret Line="1107" Column="41" TopLine="1085"/>
<Filename Value="frmExeTrainerGeneratorUnit.pas"/>
<Caret Line="395" Column="36" TopLine="374"/>
</Position26>
<Position27>
<Filename Value="LuaHandler.pas"/>
<Caret Line="1113" Column="12" TopLine="1085"/>
<Filename Value="frmExeTrainerGeneratorUnit.pas"/>
<Caret Line="200" Column="5" TopLine="182"/>
</Position27>
<Position28>
<Filename Value="LuaHandler.pas"/>
<Caret Line="1125" Column="13" TopLine="1097"/>
<Filename Value="frmExeTrainerGeneratorUnit.pas"/>
<Caret Line="403" Column="39" TopLine="387"/>
</Position28>
<Position29>
<Filename Value="LuaHandler.pas"/>
<Caret Line="1127" Column="19" TopLine="1099"/>
<Filename Value="frmExeTrainerGeneratorUnit.pas"/>
<Caret Line="501" Column="55" TopLine="491"/>
</Position29>
<Position30>
<Filename Value="StructuresFrm2.pas"/>
<Caret Line="18" Column="3" TopLine="1"/>
<Filename Value="frmExeTrainerGeneratorUnit.pas"/>
<Caret Line="405" Column="41" TopLine="387"/>
</Position30>
</JumpHistory>
</ProjectOptions>
@ -2774,14 +2726,17 @@
<WatchScope Value="wpsLocal"/>
<WatchKind Value="wpkWrite"/>
<Source Value="StructuresFrm2.pas"/>
<Line Value="893"/>
<Line Value="895"/>
</Item1>
</BreakPoints>
<Watches Count="1">
<Watches Count="2">
<Item1>
<Expression Value="currentAddress"/>
<DisplayStyle Value="wdfHex"/>
</Item1>
<Item2>
<Expression Value="fmainstruct"/>
</Item2>
</Watches>
<Exceptions Count="8" IgnoreAll="True">
<Item1>

View File

@ -80,7 +80,7 @@ begin
mainformvisible:=uppercase(ExtractFileExt(paramstr(i)))<>'.CETRAINER';
LoadTable(ansitoutf8(paramstr(i)),false);
if extractfilename(paramstr(i))='CET_TRAINER.CETRAINER' then
if extractfilename(paramstr(i))='CET_TRAINER.CETRAINER' then //Let's just hope no-one names their trainer exactly this...
deletefile(paramstr(i));
break;

Binary file not shown.

View File

@ -1,12 +1,12 @@
object frmExeTrainerGenerator: TfrmExeTrainerGenerator
Left = 923
Height = 266
Top = 449
Left = 781
Height = 270
Top = 314
Width = 576
Caption = 'Exe Trainer Generator'
ClientHeight = 266
ClientHeight = 270
ClientWidth = 576
Constraints.MinHeight = 234
Constraints.MinHeight = 270
Constraints.MinWidth = 490
OnActivate = FormActivate
OnClose = FormClose
@ -16,18 +16,18 @@ object frmExeTrainerGenerator: TfrmExeTrainerGenerator
LCLVersion = '0.9.31'
object Panel1: TPanel
Left = 0
Height = 216
Height = 220
Top = 0
Width = 328
Align = alLeft
BevelOuter = bvNone
ClientHeight = 216
ClientHeight = 220
ClientWidth = 328
TabOrder = 0
object GroupBox1: TGroupBox
Left = 0
Height = 62
Top = 0
Top = 40
Width = 328
Align = alTop
Caption = 'Process'
@ -56,7 +56,7 @@ object frmExeTrainerGenerator: TfrmExeTrainerGenerator
object GroupBox2: TGroupBox
Left = 0
Height = 74
Top = 62
Top = 102
Width = 328
Align = alTop
Caption = 'Features used'
@ -97,18 +97,18 @@ object frmExeTrainerGenerator: TfrmExeTrainerGenerator
end
end
object Button1: TButton
Left = 63
Left = 56
Height = 25
Top = 144
Top = 182
Width = 99
Caption = 'Change EXE Icon'
OnClick = Button1Click
TabOrder = 2
end
object comboCompression: TComboBox
Left = 240
Left = 232
Height = 23
Top = 146
Top = 184
Width = 80
ItemHeight = 15
ItemIndex = 3
@ -123,17 +123,17 @@ object frmExeTrainerGenerator: TfrmExeTrainerGenerator
Text = 'Max'
end
object Label1: TLabel
Left = 168
Left = 160
Height = 16
Top = 149
Top = 187
Width = 71
Caption = 'Compression'
ParentColor = False
end
object Panel4: TPanel
Left = 13
Left = 11
Height = 40
Top = 138
Top = 175
Width = 40
BevelOuter = bvNone
BorderStyle = bsSingle
@ -149,41 +149,76 @@ object frmExeTrainerGenerator: TfrmExeTrainerGenerator
Stretch = True
end
end
object GroupBox4: TGroupBox
Left = 0
Height = 40
Top = 0
Width = 328
Align = alTop
Caption = 'Trainer size'
ClientHeight = 22
ClientWidth = 324
TabOrder = 5
object cbTiny: TRadioButton
Left = 86
Height = 19
Hint = 'Only put the trainer data in the trainer. The user must have Cheat Engine installed to run this trainer'
Top = 0
Width = 43
Caption = 'Tiny'
OnChange = cbTrainersizeChange
TabOrder = 0
end
object cbGigantic: TRadioButton
Left = 10
Height = 19
Hint = 'Puts the Cheat Engine executable, dll''s and other requirements into the trainer'
Top = 0
Width = 64
Caption = 'Gigantic'
Checked = True
OnChange = cbTrainersizeChange
ParentShowHint = False
ShowHint = True
TabOrder = 1
TabStop = True
end
end
end
object Panel2: TPanel
Left = 0
Height = 50
Top = 216
Top = 220
Width = 576
Align = alBottom
BevelOuter = bvNone
ClientHeight = 50
ClientWidth = 576
TabOrder = 1
object Button2: TButton
object btnGenerateTrainer: TButton
Left = 251
Height = 25
Top = 16
Width = 75
Anchors = [akTop]
Caption = 'Generate'
OnClick = Button2Click
OnClick = btnGenerateTrainerClick
TabOrder = 0
end
end
object GroupBox3: TGroupBox
Left = 328
Height = 216
Height = 220
Top = 0
Width = 248
Align = alClient
Caption = 'Extra files'
ClientHeight = 198
ClientHeight = 202
ClientWidth = 244
TabOrder = 2
object ListView1: TListView
Left = 0
Height = 163
Height = 167
Top = 0
Width = 244
Align = alClient
@ -208,7 +243,7 @@ object frmExeTrainerGenerator: TfrmExeTrainerGenerator
object Panel3: TPanel
Left = 0
Height = 35
Top = 163
Top = 167
Width = 244
Align = alBottom
BevelOuter = bvNone

View File

@ -10,7 +10,12 @@ TFRMEXETRAINERGENERATOR.CBSPEEDHACK.CAPTION=Speedhack
TFRMEXETRAINERGENERATOR.BUTTON1.CAPTION=Change EXE Icon
TFRMEXETRAINERGENERATOR.COMBOCOMPRESSION.TEXT=Max
TFRMEXETRAINERGENERATOR.LABEL1.CAPTION=Compression
TFRMEXETRAINERGENERATOR.BUTTON2.CAPTION=Generate
TFRMEXETRAINERGENERATOR.GROUPBOX4.CAPTION=Trainer size
TFRMEXETRAINERGENERATOR.CBTINY.HINT=Only put the trainer data in the trainer. The user must have Cheat Engine installed to run this trainer
TFRMEXETRAINERGENERATOR.CBTINY.CAPTION=Tiny
TFRMEXETRAINERGENERATOR.CBGIGANTIC.HINT=Puts the Cheat Engine executable, dll's and other requirements into the trainer
TFRMEXETRAINERGENERATOR.CBGIGANTIC.CAPTION=Gigantic
TFRMEXETRAINERGENERATOR.BTNGENERATETRAINER.CAPTION=Generate
TFRMEXETRAINERGENERATOR.GROUPBOX3.CAPTION=Extra files
TFRMEXETRAINERGENERATOR.LISTVIEW1.COLUMNS[0].CAPTION=File
TFRMEXETRAINERGENERATOR.LISTVIEW1.COLUMNS[1].CAPTION=Relative folder

View File

@ -6,7 +6,7 @@ interface
uses
windows, Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, ExtCtrls,
dialogs, StdCtrls, ComCtrls, Menus, cefuncproc, IconStuff, zstream;
dialogs, StdCtrls, ComCtrls, Menus, cefuncproc, IconStuff, zstream, registry;
type
@ -22,7 +22,7 @@ type
TfrmExeTrainerGenerator = class(TForm)
Button1: TButton;
Button2: TButton;
btnGenerateTrainer: TButton;
btnAddFile: TButton;
btnRemoveFile: TButton;
Button3: TButton;
@ -34,6 +34,7 @@ type
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
GroupBox4: TGroupBox;
Image1: TImage;
Label1: TLabel;
ListView1: TListView;
@ -44,14 +45,17 @@ type
Panel3: TPanel;
Panel4: TPanel;
pmFiles: TPopupMenu;
cbTiny: TRadioButton;
cbGigantic: TRadioButton;
rb32: TRadioButton;
rb64: TRadioButton;
SelectDirectoryDialog1: TSelectDirectoryDialog;
procedure btnAddFileClick(Sender: TObject);
procedure btnRemoveFileClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure btnGenerateTrainerClick(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure cbTrainersizeChange(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
@ -159,17 +163,17 @@ begin
archive.CopyFrom(f, block);
dec(i,block);
button2.caption:=rsSaving+rot;
btnGenerateTrainer.caption:=rsSaving+rot;
application.ProcessMessages;
end;
finally
f.free;
button2.caption:=rsGenerate;
btnGenerateTrainer.caption:=rsGenerate;
end;
end;
procedure TfrmExeTrainerGenerator.Button2Click(Sender: TObject);
procedure TfrmExeTrainerGenerator.btnGenerateTrainerClick(Sender: TObject);
var DECOMPRESSOR: TMemorystream;
CETRAINER: string;
icon: tmemorystream;
@ -181,92 +185,110 @@ var DECOMPRESSOR: TMemorystream;
compression: Tcompressionlevel;
i: integer;
tiny: boolean;
basefile: string;
begin
tiny:=cbTiny.Checked;
CETRAINER:=ExtractFilePath(filename)+'CET_TRAINER.CETRAINER';
SaveTable(CETRAINER, true);
button2.caption:=rsSaving+rot;
button2.enabled:=false;
btnGenerateTrainer.caption:=rsSaving+rot;
btnGenerateTrainer.enabled:=false;
saving:=true;
application.ProcessMessages;
try
if CopyFile(cheatenginedir+'standalonephase1.dat', filename) then
if tiny then basefile:='tiny' else basefile:='standalonephase1';
if CopyFile(cheatenginedir+basefile+'.dat', filename) then
begin
updatehandle:=BeginUpdateResourceA(pchar(filename), false);
if updatehandle<>0 then
begin
_archive:=TMemorystream.create; //create the archive
case comboCompression.itemindex of
0: compression:=clnone;
1: compression:=clfastest;
2: compression:=cldefault;
3: compression:=clmax;
end;
archive:=Tcompressionstream.create(compression, _archive, true);
decompressor:=TMemorystream.create;
decompressor.LoadFromFile(cheatenginedir+'standalonephase2.dat');
addfile(CETRAINER);
deletefile(cetrainer);
for i:=0 to listview1.Items.Count-1 do
addfile(TFileData(listview1.items[i].data).filepath, TFileData(listview1.items[i].data).folder);
addfile(cheatenginedir+'defines.lua');
if rb32.checked then
if not tiny then
begin
addfile(cheatenginedir+'cheatengine-i386.exe');
addfile(cheatenginedir+'lua5.1-32.dll');
addfile(cheatenginedir+'win32\dbghelp.dll','win32');
if cbSpeedhack.checked then
addfile(cheatenginedir+'speedhack-i386.dll');
case comboCompression.itemindex of
0: compression:=clnone;
1: compression:=clfastest;
2: compression:=cldefault;
3: compression:=clmax;
end;
if cbvehdebug.checked then
addfile(cheatenginedir+'vehdebug-i386.dll');
if cbKernelDebug.checked then
addfile(cheatenginedir+'dbk32.sys');
archive:=Tcompressionstream.create(compression, _archive, true);
decompressor:=TMemorystream.create;
decompressor.LoadFromFile(cheatenginedir+'standalonephase2.dat');
addfile(CETRAINER);
deletefile(cetrainer);
for i:=0 to listview1.Items.Count-1 do
addfile(TFileData(listview1.items[i].data).filepath, TFileData(listview1.items[i].data).folder);
addfile(cheatenginedir+'defines.lua');
if rb32.checked then
begin
addfile(cheatenginedir+'cheatengine-i386.exe');
addfile(cheatenginedir+'lua5.1-32.dll');
addfile(cheatenginedir+'win32\dbghelp.dll','win32');
if cbSpeedhack.checked then
addfile(cheatenginedir+'speedhack-i386.dll');
if cbvehdebug.checked then
addfile(cheatenginedir+'vehdebug-i386.dll');
if cbKernelDebug.checked then
addfile(cheatenginedir+'dbk32.sys');
end
else
begin
addfile(cheatenginedir+'cheatengine-x86_64.exe');
addfile(cheatenginedir+'lua5.1-64.dll');
if cbSpeedhack.checked then
addfile(cheatenginedir+'speedhack-x86_64.dll');
if cbvehdebug.checked then
addfile(cheatenginedir+'vehdebug-x86_64.dll');
if cbKernelDebug.checked then
addfile(cheatenginedir+'dbk64.sys');
end;
if cbXMPlayer.checked then
addfile(cheatenginedir+'xmplayer.exe');
archive.free;
end
else
begin
addfile(cheatenginedir+'cheatengine-x86_64.exe');
addfile(cheatenginedir+'lua5.1-64.dll');
if cbSpeedhack.checked then
addfile(cheatenginedir+'speedhack-x86_64.dll');
if cbvehdebug.checked then
addfile(cheatenginedir+'vehdebug-x86_64.dll');
if cbKernelDebug.checked then
addfile(cheatenginedir+'dbk64.sys');
end;
if cbXMPlayer.checked then
addfile(cheatenginedir+'xmplayer.exe');
archive.free;
_archive.LoadFromFile(CETRAINER); //tiny version has the .cetrainer only
if not UpdateResourceA(updatehandle, RT_RCDATA, 'ARCHIVE', 0, _archive.memory, _archive.size) then
raise exception.create(rsFailureOnWriting+' ARCHIVE:'+inttostr(
getlasterror()));
if not UpdateResourceA(updatehandle, RT_RCDATA, 'DECOMPRESSOR', 0, decompressor.memory, decompressor.size) then
raise exception.create(rsFailureOnWriting+' DECOMPRESSOR:'+inttostr(
getlasterror()));
if not tiny then
begin
//tiny has no decompressor
if not UpdateResourceA(updatehandle, RT_RCDATA, 'DECOMPRESSOR', 0, decompressor.memory, decompressor.size) then
raise exception.create(rsFailureOnWriting+' DECOMPRESSOR:'+inttostr(
getlasterror()));
end;
icon:=tmemorystream.create;
try
@ -316,7 +338,7 @@ begin
freeandnil(_archive);
saving:=false;
button2.enabled:=true;
btnGenerateTrainer.enabled:=true;
end;
@ -379,6 +401,29 @@ begin
addDirToList(SelectDirectoryDialog1.FileName);
end;
procedure TfrmExeTrainerGenerator.cbTrainersizeChange(Sender: TObject);
begin
groupbox1.enabled:=cbGigantic.checked;
GroupBox2.enabled:=cbGigantic.checked;
rb32.enabled:=cbGigantic.Checked;
rb64.enabled:=cbGigantic.checked;
cbSpeedhack.enabled:=cbGigantic.Checked;
cbVEHDebug.enabled:=cbGigantic.checked;
cbXMPlayer.Enabled:=cbGigantic.checked;
cbKernelDebug.enabled:=cbGigantic.Checked;
label1.enabled:=cbGigantic.checked;
comboCompression.enabled:=cbGigantic.checked;
GroupBox3.enabled:=cbGigantic.checked;
ListView1.enabled:=cbGigantic.checked;
Button3.enabled:=cbGigantic.checked;
btnAddFile.enabled:=cbGigantic.checked;
btnRemoveFile.enabled:=listview1.Selected<>nil;
end;
procedure TfrmExeTrainerGenerator.Button1Click(Sender: TObject);
begin
image1.picture.icon:=pickIcon;

View File

@ -67,6 +67,8 @@ int APIENTRY WinMain(HINSTANCE hInstance,
if (GetTempFileNameA(tempfolder,"CET",0,tempdir)>0)
{
int i;
struct stat status;
DeleteFile(tempdir);
//strcat(tempfolder
//printf("tempdir=%s\n",tempdir);
@ -102,7 +104,16 @@ int APIENTRY WinMain(HINSTANCE hInstance,
MessageBoxA(0,"Failure launching this trainer. Make sure Cheat Engine is properly installed on your system","Launch Error",MB_OK | MB_ICONERROR);
}
//Because Cheat Engine deletes files with name CET_TRAINER.CETRAINER it can be used to determine when ce is finished with it
//Wait 30 seconds max for ce to delete the file
i=30;
while (i && (stat(Archive, &status) == 0))
{
Sleep(1000);
i--;
}
#else
strcpy(Decompressor, tempdir);
strcat(Decompressor, "\\");
@ -134,9 +145,11 @@ int APIENTRY WinMain(HINSTANCE hInstance,
// printf("Failed to launch decompessor:%d\n", GetLastError());
DeleteFileA(Decompressor);
#endif
DeleteFileA(Archive);
DeleteFileA(Archive);
RemoveDirectoryA(tempdir);

View File

@ -16,6 +16,7 @@
#ifdef TINY
#include <shellapi.h>
#include <sys/stat.h>
#endif
// TODO: reference additional headers your program requires here