Skip to content

Instantly share code, notes, and snippets.

@harryhare
Last active January 12, 2019 16:54
Show Gist options
  • Save harryhare/d6984551d5c93ef158182f2d037223d0 to your computer and use it in GitHub Desktop.
Save harryhare/d6984551d5c93ef158182f2d037223d0 to your computer and use it in GitHub Desktop.
stardraw valley save file edit (星露谷游戏存档修改,Artifact Spot, item stack/ quality)
<item>
<key>
<Vector2>
<X>22</X>
<Y>88</Y>
</Vector2>
</key>
<value>
<Object>
<category>0</category>
<name>Artifact Spot</name>
<parentSheetIndex>590</parentSheetIndex>
<specialItem>false</specialItem>
<hasBeenInInventory>false</hasBeenInInventory>
<SpecialVariable>0</SpecialVariable>
<DisplayName>Artifact Spot</DisplayName>
<Name>Artifact Spot</Name>
<Stack>1</Stack>
<tileLocation>
<X>22</X>
<Y>88</Y>
</tileLocation>
<owner>0</owner>
<type>asdf</type>
<canBeSetDown>true</canBeSetDown>
<canBeGrabbed>true</canBeGrabbed>
<isHoedirt>false</isHoedirt>
<isSpawnedObject>false</isSpawnedObject>
<questItem>false</questItem>
<questId>0</questId>
<isOn>true</isOn>
<fragility>0</fragility>
<price>0</price>
<edibility>-300</edibility>
<stack>1</stack>
<quality>0</quality>
<bigCraftable>false</bigCraftable>
<setOutdoors>false</setOutdoors>
<setIndoors>false</setIndoors>
<readyForHarvest>false</readyForHarvest>
<showNextIndex>false</showNextIndex>
<flipped>true</flipped>
<hasBeenPickedUpByFarmer>false</hasBeenPickedUpByFarmer>
<isRecipe>false</isRecipe>
<isLamp>false</isLamp>
<minutesUntilReady>0</minutesUntilReady>
<boundingBox>
<X>1408</X>
<Y>5632</Y>
<Width>64</Width>
<Height>64</Height>
<Location>
<X>1408</X>
<Y>5632</Y>
</Location>
</boundingBox>
<scale>
<X>0</X>
<Y>0</Y>
</scale>
<uses>0</uses>
<preservedParentSheetIndex>0</preservedParentSheetIndex>
</Object>
</value>
</item>
<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="26">
<CheatEntries>
<CheatEntry>
<ID>19</ID>
<Description>"cost no stamina(AOB)"</Description>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : Stardew Valley.exe
Version:
Date : 2018-12-27
Author : Administrator
This script does blah blah blah
}
[ENABLE]
aobscan(INJECT,D9 1C 24 8B 01 8B 40 38 FF 10 59) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
newmem:
fstp dword ptr [esp]
fld dword ptr [ebp-08]
code:
fstp dword ptr [esp]
mov eax,[ecx]
jmp return
INJECT:
jmp newmem
return:
registersymbol(INJECT)
[DISABLE]
INJECT:
db D9 1C 24 8B 01
unregistersymbol(INJECT)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: 072BBA22
""+72BB9FB: 83 EC 04 - sub esp,04
""+72BB9FE: D9 1C 24 - fstp dword ptr [esp]
""+72BBA01: FF 75 08 - push [ebp+08]
""+72BBA04: 68 00 00 80 C1 - push C1800000
""+72BBA09: E8 02 0D 17 67 - call mscorlib.ni.dll+37C710
""+72BBA0E: 83 EC 04 - sub esp,04
""+72BBA11: D9 1C 24 - fstp dword ptr [esp]
""+72BBA14: E8 47 0D 17 67 - call mscorlib.ni.dll+37C760
""+72BBA19: 8B 8E F4 01 00 00 - mov ecx,[esi+000001F4]
""+72BBA1F: 83 EC 04 - sub esp,04
// ---------- INJECTING HERE ----------
""+72BBA22: D9 1C 24 - fstp dword ptr [esp]
""+72BBA25: 8B 01 - mov eax,[ecx]
// ---------- DONE INJECTING ----------
""+72BBA27: 8B 40 38 - mov eax,[eax+38]
""+72BBA2A: FF 10 - call dword ptr [eax]
""+72BBA2C: 59 - pop ecx
""+72BBA2D: 5E - pop esi
""+72BBA2E: 5D - pop ebp
""+72BBA2F: C2 04 00 - ret 0004
""+72BBA32: 00 00 - add [eax],al
""+72BBA34: 00 00 - add [eax],al
""+72BBA36: 00 00 - add [eax],al
""+72BBA38: D0 A7 5F 0E 00 00 - shl byte ptr [edi+00000E5F],1
}
</AssemblerScript>
</CheatEntry>
<CheatEntry>
<ID>8</ID>
<Description>"clock"</Description>
<VariableType>4 Bytes</VariableType>
<Address>"GalaxyPeer.dll"+00A7CE1C</Address>
<Offsets>
<Offset>3C</Offset>
<Offset>3C0</Offset>
<Offset>5C</Offset>
<Offset>34</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>13</ID>
<Description>"cost no money"</Description>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : Stardew Valley.exe
Version:
Date : 2018-12-27
Author : Administrator
This script does blah blah blah
}
[ENABLE]
aobscan(INJECT,2B 55 08 8B CE) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
newmem:
push eax
mov eax,[ebp+08]
cmp eax,0
pop eax
jg return
code:
sub edx,[ebp+08]
mov ecx,esi
jmp return
INJECT:
jmp newmem
return:
registersymbol(INJECT)
[DISABLE]
INJECT:
db 2B 55 08 8B CE
unregistersymbol(INJECT)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: 095CCB88
""+95CCB69: 73 07 - jae 095CCB72
""+95CCB6B: FF 24 95 D0 CB 5C 09 - jmp dword ptr [edx*4+095CCBD0]
""+95CCB72: 5E - pop esi
""+95CCB73: 5D - pop ebp
""+95CCB74: C2 04 00 - ret 0004
""+95CCB77: 38 06 - cmp [esi],al
""+95CCB79: 8B 86 F8 01 00 00 - mov eax,[esi+000001F8]
""+95CCB7F: 8B 40 24 - mov eax,[eax+24]
""+95CCB82: 8B 40 04 - mov eax,[eax+04]
""+95CCB85: 8B 50 28 - mov edx,[eax+28]
// ---------- INJECTING HERE ----------
""+95CCB88: 2B 55 08 - sub edx,[ebp+08]
""+95CCB8B: 8B CE - mov ecx,esi
// ---------- DONE INJECTING ----------
""+95CCB8D: FF 15 74 A1 EB 00 - call dword ptr [00EBA174]
""+95CCB93: 5E - pop esi
""+95CCB94: 5D - pop ebp
""+95CCB95: C2 04 00 - ret 0004
""+95CCB98: 8B 8E 74 01 00 00 - mov ecx,[esi+00000174]
""+95CCB9E: BA 48 F7 0C 06 - mov edx,060CF748
""+95CCBA3: E8 00 99 3E FD - call 069B64A8
""+95CCBA8: 2B 45 08 - sub eax,[ebp+08]
""+95CCBAB: 8B D0 - mov edx,eax
""+95CCBAD: 8B 8E 74 01 00 00 - mov ecx,[esi+00000174]
}
</AssemblerScript>
</CheatEntry>
<CheatEntry>
<ID>48</ID>
<Description>"no harm"</Description>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : Stardew Valley.exe
Version:
Date : 2018-12-31
Author : Administrator
This script does blah blah blah
}
[ENABLE]
aobscan(INJECT,2B 45 CC 85 C0 7E) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
newmem:
test eax,eax
jmp return
code:
sub eax,[ebp-34]
test eax,eax
jmp return
INJECT:
jmp newmem
return:
registersymbol(INJECT)
[DISABLE]
INJECT:
db 2B 45 CC 85 C0
unregistersymbol(INJECT)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: 0A410416
""+A4103F2: FF 50 18 - call dword ptr [eax+18]
""+A4103F5: 03 F0 - add esi,eax
""+A4103F7: 2B B3 C0 02 00 00 - sub esi,[ebx+000002C0]
""+A4103FD: 8B C6 - mov eax,esi
""+A4103FF: 83 F8 01 - cmp eax,01
""+A410402: 7E 05 - jle 0A410409
""+A410404: 89 45 CC - mov [ebp-34],eax
""+A410407: EB 07 - jmp 0A410410
""+A410409: C7 45 CC 01 00 00 00 - mov [ebp-34],00000001
""+A410410: 8B 83 0C 03 00 00 - mov eax,[ebx+0000030C]
// ---------- INJECTING HERE ----------
""+A410416: 2B 45 CC - sub eax,[ebp-34]
""+A410419: 85 C0 - test eax,eax
// ---------- DONE INJECTING ----------
""+A41041B: 7E 02 - jle 0A41041F
""+A41041D: EB 02 - jmp 0A410421
""+A41041F: 33 C0 - xor eax,eax
""+A410421: 89 83 0C 03 00 00 - mov [ebx+0000030C],eax
""+A410427: C6 83 77 03 00 00 01 - mov byte ptr [ebx+00000377],01
""+A41042E: 8B 4B 44 - mov ecx,[ebx+44]
""+A410431: 38 01 - cmp [ecx],al
""+A410433: E8 B0 49 95 FC - call 06D64DE8
""+A410438: 8B 70 54 - mov esi,[eax+54]
""+A41043B: 8D 7D BC - lea edi,[ebp-44]
}
</AssemblerScript>
</CheatEntry>
<CheatEntry>
<ID>36</ID>
<Description>"bar game(pirate king infinite life)"</Description>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : Stardew Valley.exe
Version:
Date : 2018-12-31
Author : Administrator
This script does blah blah blah
}
[ENABLE]
aobscan(INJECT,FF 4B 60 C7 05 B0 5D 5D 00 88 13 00 00) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
newmem:
mov [005D5DB0],00001388
jmp return
code:
dec [ebx+60]
mov [005D5DB0],00001388
jmp return
INJECT:
jmp newmem
nop
nop
nop
nop
nop
nop
nop
nop
return:
registersymbol(INJECT)
[DISABLE]
INJECT:
db FF 4B 60 C7 05 B0 5D 5D 00 88 13 00 00
unregistersymbol(INJECT)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: 0D9BAA86
""+D9BAA58: 39 09 - cmp [ecx],ecx
""+D9BAA5A: E8 31 BA A5 60 - call mscorlib.ni.dll+366490
""+D9BAA5F: A1 8C 5D 5D 00 - mov eax,[005D5D8C]
""+D9BAA64: 05 10 27 00 00 - add eax,00002710
""+D9BAA69: 3D 80 38 01 00 - cmp eax,00013880
""+D9BAA6E: 7D 02 - jnl 0D9BAA72
""+D9BAA70: EB 05 - jmp 0D9BAA77
""+D9BAA72: B8 80 38 01 00 - mov eax,00013880
""+D9BAA77: A3 8C 5D 5D 00 - mov [005D5D8C],eax
""+D9BAA7C: C7 05 90 5D 5D 00 A0 0F 00 00 - mov [005D5D90],00000FA0
// ---------- INJECTING HERE ----------
""+D9BAA86: FF 4B 60 - dec [ebx+60]
""+D9BAA89: C7 05 B0 5D 5D 00 88 13 00 00 - mov [005D5DB0],00001388
// ---------- DONE INJECTING ----------
""+D9BAA93: 80 3D D6 5D 5D 00 00 - cmp byte ptr [005D5DD6],00
""+D9BAA9A: 74 29 - je 0D9BAAC5
""+D9BAA9C: D9 05 D0 AC 9B 0D - fld dword ptr [0D9BACD0]
""+D9BAAA2: D9 05 D8 AC 9B 0D - fld dword ptr [0D9BACD8]
""+D9BAAA8: 8D 93 AC 00 00 00 - lea edx,[ebx+000000AC]
""+D9BAAAE: D9 C9 - fxch st(1)
""+D9BAAB0: D9 1A - fstp dword ptr [edx]
""+D9BAAB2: D9 5A 04 - fstp dword ptr [edx+04]
""+D9BAAB5: 8B 0D 88 A9 06 05 - mov ecx,[0506A988]
""+D9BAABB: E8 A8 AB 87 F9 - call 07235668
}
</AssemblerScript>
</CheatEntry>
<CheatEntry>
<ID>34</ID>
<Description>"bar game(jumimo kart infinite life)"</Description>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : Stardew Valley.exe
Version:
Date : 2018-12-31
Author : Administrator
This script does blah blah blah
}
[ENABLE]
aobscan(INJECT,FF 88 8C 00 00 00 8B) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
newmem:
jmp return
code:
dec [eax+0000008C]
jmp return
INJECT:
jmp newmem
nop
return:
registersymbol(INJECT)
[DISABLE]
INJECT:
db FF 88 8C 00 00 00
unregistersymbol(INJECT)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: 0D841D16
""+D841CE1: D9 80 9C 00 00 00 - fld dword ptr [eax+0000009C]
""+D841CE7: DB 40 6C - fild dword ptr [eax+6C]
""+D841CEA: D9 9D D0 FC FF FF - fstp dword ptr [ebp-00000330]
""+D841CF0: D9 85 D0 FC FF FF - fld dword ptr [ebp-00000330]
""+D841CF6: DF F1 - fcomip st(0),st(1)
""+D841CF8: DD D8 - fstp st(0)
""+D841CFA: 0F 8A DA 01 00 00 - jp 0D841EDA
""+D841D00: 0F 83 D4 01 00 00 - jae 0D841EDA
""+D841D06: 8B 85 E4 FC FF FF - mov eax,[ebp-0000031C]
""+D841D0C: C7 80 9C 00 00 00 F0 23 74 C9 - mov [eax+0000009C],C97423F0
// ---------- INJECTING HERE ----------
""+D841D16: FF 88 8C 00 00 00 - dec [eax+0000008C]
// ---------- DONE INJECTING ----------
""+D841D1C: 8B 0D E8 A6 06 05 - mov ecx,[0506A6E8]
""+D841D22: E8 41 39 9F F9 - call 07235668
""+D841D27: 8B 85 E4 FC FF FF - mov eax,[ebp-0000031C]
""+D841D2D: 83 B8 88 00 00 00 00 - cmp dword ptr [eax+00000088],00
""+D841D34: 0F 85 04 01 00 00 - jne 0D841E3E
""+D841D3A: 8B 85 E4 FC FF FF - mov eax,[ebp-0000031C]
""+D841D40: DB 80 8C 00 00 00 - fild dword ptr [eax+0000008C]
""+D841D46: D9 9D D0 FC FF FF - fstp dword ptr [ebp-00000330]
""+D841D4C: D9 85 D0 FC FF FF - fld dword ptr [ebp-00000330]
""+D841D52: D9 EE - fldz
}
</AssemblerScript>
</CheatEntry>
<CheatEntry>
<ID>38</ID>
<Description>"bar game (add money)"</Description>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : Stardew Valley.exe
Version:
Date : 2018-12-31
Author : Administrator
This script does blah blah blah
}
[ENABLE]
aobscan(INJECT,FF 40 64 8B 0D 44 98 06 05) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
newmem:
add [eax+64],100
mov ecx,[05069844]
jmp return
code:
inc [eax+64]
mov ecx,[05069844]
jmp return
INJECT:
jmp newmem
nop
nop
nop
nop
return:
registersymbol(INJECT)
[DISABLE]
INJECT:
db FF 40 64 8B 0D 44 98 06 05
unregistersymbol(INJECT)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: 0D8018F8
""+D8018D4: 8B 85 3C FE FF FF - mov eax,[ebp-000001C4]
""+D8018DA: 8B 48 1C - mov ecx,[eax+1C]
""+D8018DD: 8B 40 34 - mov eax,[eax+34]
""+D8018E0: 05 D0 07 00 00 - add eax,000007D0
""+D8018E5: 50 - push eax
""+D8018E6: 8B 55 DC - mov edx,[ebp-24]
""+D8018E9: 39 09 - cmp [ecx],ecx
""+D8018EB: E8 70 3C 3B 61 - call mscorlib.ni.dll+B05560
""+D8018F0: EB 59 - jmp 0D80194B
""+D8018F2: 8B 85 3C FE FF FF - mov eax,[ebp-000001C4]
// ---------- INJECTING HERE ----------
""+D8018F8: FF 40 64 - inc [eax+64]
""+D8018FB: 8B 0D 44 98 06 05 - mov ecx,[05069844]
// ---------- DONE INJECTING ----------
""+D801901: E8 62 3D A3 F9 - call 07235668
""+D801906: EB 43 - jmp 0D80194B
""+D801908: 8B 85 3C FE FF FF - mov eax,[ebp-000001C4]
""+D80190E: 83 40 64 05 - add dword ptr [eax+64],05
""+D801912: 8B 0D 44 98 06 05 - mov ecx,[05069844]
""+D801918: E8 4B 3D A3 F9 - call 07235668
""+D80191D: 8B 0D 44 98 06 05 - mov ecx,[05069844]
""+D801923: E8 40 3D A3 F9 - call 07235668
""+D801928: EB 21 - jmp 0D80194B
""+D80192A: 8B 85 3C FE FF FF - mov eax,[ebp-000001C4]
}
</AssemblerScript>
</CheatEntry>
<CheatEntry>
<ID>53</ID>
<Description>"bar game(search 80000 4byte)"</Description>
<VariableType>4 Bytes</VariableType>
<Address>00485D8C</Address>
</CheatEntry>
<CheatEntry>
<ID>56</ID>
<Description>"bar game (infinte money)"</Description>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : Stardew Valley.exe
Version:
Date : 2019-01-06
Author : Administrator
This script does blah blah blah
}
[ENABLE]
aobscan(INJECT,8B 40 64 8B 95 50 FD FF FF) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
newmem:
mov [eax+64],1000
code:
mov eax,[eax+64]
mov edx,[ebp-000002B0]
jmp return
INJECT:
jmp newmem
nop
nop
nop
nop
return:
registersymbol(INJECT)
[DISABLE]
INJECT:
db 8B 40 64 8B 95 50 FD FF FF
unregistersymbol(INJECT)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: 0F4CE03A
""+F4CE002: 8B 95 24 FD FF FF - mov edx,[ebp-000002DC]
""+F4CE008: E8 5B F7 D2 FF - call 0F1FD768
""+F4CE00D: B9 38 16 57 6E - mov ecx,mscorlib.ni.dll+4C1638
""+F4CE012: E8 B1 50 FA F0 - call 004730C8
""+F4CE017: 89 85 50 FD FF FF - mov [ebp-000002B0],eax
""+F4CE01D: A1 38 36 F0 04 - mov eax,[04F03638]
""+F4CE022: 89 85 D4 FC FF FF - mov [ebp-0000032C],eax
""+F4CE028: 8B 05 90 5E FF 04 - mov eax,[04FF5E90]
""+F4CE02E: 89 85 BC E4 FF FF - mov [ebp-00001B44],eax
""+F4CE034: 8B 85 88 E4 FF FF - mov eax,[ebp-00001B78]
// ---------- INJECTING HERE ----------
""+F4CE03A: 8B 40 64 - mov eax,[eax+64]
""+F4CE03D: 8B 95 50 FD FF FF - mov edx,[ebp-000002B0]
// ---------- DONE INJECTING ----------
""+F4CE043: 89 42 04 - mov [edx+04],eax
""+F4CE046: 8B 85 50 FD FF FF - mov eax,[ebp-000002B0]
""+F4CE04C: 89 85 B8 E4 FF FF - mov [ebp-00001B48],eax
""+F4CE052: 8B 8D BC E4 FF FF - mov ecx,[ebp-00001B44]
""+F4CE058: 8B 95 B8 E4 FF FF - mov edx,[ebp-00001B48]
""+F4CE05E: E8 DD 81 F9 5E - call mscorlib.ni.dll+3B6240
""+F4CE063: 89 85 D0 FC FF FF - mov [ebp-00000330],eax
""+F4CE069: 8D BD C8 FC FF FF - lea edi,[ebp-00000338]
""+F4CE06F: 8B 35 D8 38 F0 04 - mov esi,[04F038D8]
""+F4CE075: 83 C6 04 - add esi,04
}
</AssemblerScript>
</CheatEntry>
<CheatEntry>
<ID>58</ID>
<Description>"bar game (one shut kill)"</Description>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : Stardew Valley.exe
Version:
Date : 2019-01-06
Author : Administrator
This script does blah blah blah
}
[ENABLE]
aobscan(INJECT,29 7E 04 83 7E 04 00) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
newmem:
mov edi,0
code:
sub [esi+04],edi
cmp dword ptr [esi+04],00
jmp return
INJECT:
jmp newmem
nop
nop
return:
registersymbol(INJECT)
[DISABLE]
INJECT:
db 29 7E 04 83 7E 04 00
unregistersymbol(INJECT)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: 0F27E1C5
""+F27E1B1: 8B C1 - mov eax,ecx
""+F27E1B3: EB 05 - jmp 0F27E1BA
""+F27E1B5: E8 56 37 26 5F - call mscorlib.ni.dll+431910
""+F27E1BA: 83 F8 05 - cmp eax,05
""+F27E1BD: 7D 06 - jnl 0F27E1C5
""+F27E1BF: 33 C0 - xor eax,eax
""+F27E1C1: 5E - pop esi
""+F27E1C2: 5F - pop edi
""+F27E1C3: 5D - pop ebp
""+F27E1C4: C3 - ret
// ---------- INJECTING HERE ----------
""+F27E1C5: 29 7E 04 - sub [esi+04],edi
""+F27E1C8: 83 7E 04 00 - cmp dword ptr [esi+04],00
// ---------- DONE INJECTING ----------
""+F27E1CC: 7D 09 - jnl 0F27E1D7
""+F27E1CE: B8 01 00 00 00 - mov eax,00000001
""+F27E1D3: 5E - pop esi
""+F27E1D4: 5F - pop edi
""+F27E1D5: 5D - pop ebp
""+F27E1D6: C3 - ret
""+F27E1D7: C7 46 18 00 00 16 43 - mov [esi+18],43160000
""+F27E1DE: 8B 0D C8 75 FF 04 - mov ecx,[04FF75C8]
""+F27E1E4: E8 67 95 99 FA - call 09C17750
""+F27E1E9: 33 C0 - xor eax,eax
}
</AssemblerScript>
</CheatEntry>
</CheatEntries>
<CheatCodes>
<CodeEntry>
<Description>Change of fstp dword ptr [esi+28]</Description>
<Address>067B6EE5</Address>
<ModuleName/>
<ModuleNameOffset>0</ModuleNameOffset>
<Before>
<Byte>74</Byte>
<Byte>0B</Byte>
<Byte>D9</Byte>
<Byte>45</Byte>
<Byte>08</Byte>
</Before>
<Actual>
<Byte>D9</Byte>
<Byte>5E</Byte>
<Byte>28</Byte>
</Actual>
<After>
<Byte>5E</Byte>
<Byte>5D</Byte>
<Byte>C2</Byte>
<Byte>04</Byte>
<Byte>00</Byte>
</After>
</CodeEntry>
<CodeEntry>
<Description>Change of fsubr dword ptr [ebp-40]</Description>
<Address>0E14A619</Address>
<ModuleName/>
<ModuleNameOffset>0</ModuleNameOffset>
<Before>
<Byte>FE</Byte>
<Byte>FF</Byte>
<Byte>FF</Byte>
<Byte>DE</Byte>
<Byte>E1</Byte>
</Before>
<Actual>
<Byte>D8</Byte>
<Byte>6D</Byte>
<Byte>C0</Byte>
</Actual>
<After>
<Byte>83</Byte>
<Byte>EC</Byte>
<Byte>04</Byte>
<Byte>D9</Byte>
<Byte>1C</Byte>
</After>
</CodeEntry>
<CodeEntry>
<Description>Change of call StardewValley.Farmer::set_Stamina</Description>
<Address>0E14A625</Address>
<ModuleName/>
<ModuleNameOffset>0</ModuleNameOffset>
<Before>
<Byte>1C</Byte>
<Byte>24</Byte>
<Byte>8B</Byte>
<Byte>4D</Byte>
<Byte>08</Byte>
</Before>
<Actual>
<Byte>E8</Byte>
<Byte>4E</Byte>
<Byte>1E</Byte>
<Byte>D5</Byte>
<Byte>FB</Byte>
</Actual>
<After>
<Byte>85</Byte>
<Byte>FF</Byte>
<Byte>79</Byte>
<Byte>03</Byte>
<Byte>83</Byte>
</After>
</CodeEntry>
</CheatCodes>
<UserdefinedSymbols/>
</CheatTable>
import xml.dom.minidom
'''
FarmHouse
Farm
FarmCave
Town
SeedShop
Beach
Mountain
Forest
WizardHouse
BusStop
Sewer
Desert
Club
LibraryMuseum
AdventureGuild
Woods
Railroad
Summit
BathHousePool
CommunityCenter
JojaMart
Cellar
BeachNightMarket
MermaidHouse
Submarine
'''
# save file:
def save(filename, dom):
content=dom.toxml(encoding='utf-8')
file=open(filename,"wb")
file.write(content)
file.close()
def load(filename):
file=open(filename,encoding="utf-8")
dom=xml.dom.minidom.parse(file)
file.close()
return dom
def find_artifact_item(gamelocation):
#gamelocation=localtionMap["Forest"]
objects = gamelocation.getElementsByTagName("objects")[0]
artifact_item = None
for item in objects.getElementsByTagName("item"):
object = item.getElementsByTagName("Object")[0]
name_node = item.getElementsByTagName("Name")[0]
name=name_node.childNodes[0].data
if(name=="Artifact Spot"):
artifact_node=item
print(artifact_node)
save("artifact_item.xml",artifact_node)
def spawn(gamelocation,x_min,y_min,x_max,y_max):
#gamelocation=localtionMap[place]
objects = gamelocation.getElementsByTagName("objects")[0]
item=load("artifact_item.xml")
item=item.getElementsByTagName("item")[0]
for x in range(x_min,x_max):
for y in range(y_min,y_max):
item_new=item.cloneNode(item)
vector=item_new.getElementsByTagName("key")[0].getElementsByTagName("Vector2")[0]
x_node=vector.getElementsByTagName("X")[0]
x_node.childNodes[0].data=str(x)
y_node=vector.getElementsByTagName("Y")[0]
y_node.childNodes[0].data=str(y)
tileLocation=item_new.getElementsByTagName("value")[0].getElementsByTagName("Object")[0].getElementsByTagName("tileLocation")[0]
x_node=tileLocation.getElementsByTagName("X")[0]
x_node.childNodes[0].data=str(x)
y_node=tileLocation.getElementsByTagName("Y")[0]
y_node.childNodes[0].data=str(y)
objects.appendChild(item_new)
filename = 'C:\\Users\\harryhare\\AppData\\Roaming\\StardewValley\\Saves\\harryhare_205343769\\harryhare_205343769'
file = open(filename,encoding='utf-8-sig')
dom = xml.dom.minidom.parse(file)
file.close()
player = dom.getElementsByTagName("player")
locations = dom.getElementsByTagName("locations")[0]
localtionMap={}
for gamelocation in locations.getElementsByTagName("GameLocation"):
name=gamelocation.getAttribute("xsi:type")
if name!="":
localtionMap[name]=gamelocation
# print(name)
# need to change name and position accrodingly
# todo need to assure the positions don't overlapped
spawn(localtionMap["Farm"],30,30,42,42)
spawn(localtionMap["Town"],55,27,70,33)
spawn(localtionMap["Beach"],20,9,35,18)
spawn(localtionMap["Mountain"],8,8,20,14)
# spawn(localtionMap["Mountain"],8,27,20,36)
spawn(localtionMap["Forest"],64,13,76,25)
spawn(localtionMap["Railroad"],32,50,41,56)
spawn(localtionMap["Woods"],26,5,32,14)
spawn(localtionMap["Desert"],25,13,33,20)
# spawn(localtionMap["Desert"],25,15,43,21)
save(filename,dom)
# change item in a fixed chest (need to change the index according to save file when use)
import xml.dom.minidom
filename = 'C:\\Users\\harryhare\\AppData\\Roaming\\StardewValley\\Saves\\harryhare_205343769\\harryhare_205343769'
file = open(filename,encoding='utf-8-sig')
dom = xml.dom.minidom.parse(file)
file.close()
player = dom.getElementsByTagName("player")
locations = dom.getElementsByTagName("locations")[0]
gamelocation = locations.getElementsByTagName("GameLocation")[0]
objects = gamelocation.getElementsByTagName("objects")[0]
item = objects.getElementsByTagName("item")[2]
object = item.getElementsByTagName("Object")[0]
items = object.getElementsByTagName("items")[0]
def printitem(items):
for item in items.getElementsByTagName("Item"):
name= item.getElementsByTagName("Name")[0]
print(name.childNodes[0].data)
stack = item.getElementsByTagName("stack")[0]
print(stack.childNodes[0].data)
Stack = item.getElementsByTagName("Stack")[0]
print(Stack.childNodes[0].data)
quality = item.getElementsByTagName("quality")[0]
print(quality.childNodes[0].data)
def setitem(items):
for item in items.getElementsByTagName("Item"):
stack = item.getElementsByTagName("stack")[0]
stack.childNodes[0].data=222
Stack = item.getElementsByTagName("Stack")[0]
Stack.childNodes[0].data=222
quality = item.getElementsByTagName("quality")[0]
quality.childNodes[0].data=2
# todo edit friend ship
# printitem(items)
setitem(items)
printitem(items)
# save file:
content=dom.toxml(encoding='utf-8')
#print(content[:20])
file=open(filename,"wb")
file.write(content)
file.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment