Compare commits
231 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1efd4bd1b0 | ||
|
|
c50f9263f7 | ||
|
|
61adb2030c | ||
|
|
486301f83a | ||
|
|
27c9e7f83a | ||
|
|
1d67349a38 | ||
|
|
c4187bdb65 | ||
|
0c7158bdca
|
|||
|
25622d70ec
|
|||
|
|
f56b26cdb3 | ||
|
f732234e7a
|
|||
|
9fbabb2de1
|
|||
|
|
7aeacb2991 | ||
|
|
c1c11265a5 | ||
|
8793b6b6e2
|
|||
|
038c9add25
|
|||
|
158afd9bd2
|
|||
|
|
157deabf45 | ||
|
7080c72eec
|
|||
|
|
7b20b88b57 | ||
|
350f92ea6e
|
|||
|
b706f3be7b
|
|||
|
422b3a69c6
|
|||
|
faae081b30
|
|||
|
3e00d483ef
|
|||
|
5eb20c0d0b
|
|||
|
|
a83cba0651 | ||
|
94031f346c
|
|||
|
9cf481e196
|
|||
|
1ee1c78b97
|
|||
|
cac4c63dad
|
|||
|
27e6956f2d
|
|||
|
666529bbc0
|
|||
|
|
ff3eea37bb | ||
|
|
7d581257df | ||
|
1f251987b1
|
|||
|
|
b459b310bb | ||
|
a72d36cb5b
|
|||
|
f0907c07ff
|
|||
|
56c3bcd5be
|
|||
|
|
1807f44bf1 | ||
|
|
b051282c55 | ||
|
|
f4c6ce980f | ||
|
b3987980e6
|
|||
|
27475bbd71
|
|||
|
6c8e750c05
|
|||
|
a94a3df0eb
|
|||
|
8c94e12023
|
|||
|
|
1eb7b1f9ed | ||
|
f492715f3c
|
|||
|
cb7dc3ba15
|
|||
|
|
b2ee6eee89 | ||
|
98ed98371e
|
|||
|
261f098f2d
|
|||
|
886dc8d95b
|
|||
|
dc5ddcc2a3
|
|||
|
|
5a8f937203 | ||
|
|
e1cca375b1 | ||
|
|
11381bdebc | ||
|
|
19234b3c66 | ||
|
|
2d337d4e9e | ||
|
f6cfbc21cb
|
|||
|
|
7f046e5446 | ||
|
|
8e76055757 | ||
|
|
933664de8d | ||
|
|
26a9607853 | ||
|
|
fcf6ae16dc | ||
|
|
56dfc1295a | ||
|
d3a97f090c
|
|||
|
c873e60617
|
|||
|
|
0dec95a512 | ||
|
|
3000f18eeb | ||
|
|
929aaeacd0 | ||
|
|
ea9a4e13ab | ||
|
|
7550443ead | ||
|
|
5c14210fd4 | ||
|
|
81dce606f1 | ||
|
|
d1151d5bc1 | ||
|
|
8c50e83a7a | ||
|
|
26eca35097 | ||
|
|
91333aae6e | ||
|
ee4f2bf31b
|
|||
|
90bc75c7f8
|
|||
|
4230bcd431
|
|||
|
c53c2aca0f
|
|||
|
51ce511183
|
|||
|
0902dee605
|
|||
|
c06ad2363e
|
|||
|
734f7ced0a
|
|||
|
64c6b4129a
|
|||
|
2676c89989
|
|||
|
8bbdbd7027
|
|||
|
3d88b189a6
|
|||
|
d633f4e2fb
|
|||
|
8a1cf5e96b
|
|||
|
|
22b2e583f7 | ||
|
6532b34d7a
|
|||
|
f0d949c274
|
|||
|
0fcb62ee6d
|
|||
|
|
735b9d61f7 | ||
|
|
6e1ae6e71d | ||
|
|
1ef0e76cab | ||
|
|
1fc001577d | ||
|
|
0cf787f11e | ||
|
|
218fe9c2d7 | ||
|
|
5d2a26bc5d | ||
|
|
30a56b01e7 | ||
|
|
733759634a | ||
|
|
f269dbeb1d | ||
|
|
5736ade142 | ||
|
|
d6c66dcc6f | ||
|
|
837dccc822 | ||
|
|
5a5d05eac6 | ||
|
|
e4114d4575 | ||
|
|
97a04c606b | ||
|
|
0ac8c6d8fe | ||
|
|
25b8b21379 | ||
|
|
375a7e7cd7 | ||
|
|
5f91d5e609 | ||
|
|
cddcb3f833 | ||
|
|
1a306e5ee1 | ||
|
|
73aa8806ad | ||
|
|
d8714b627b | ||
|
|
34fea1a131 | ||
|
|
53fda7a510 | ||
|
|
b33d6ec41d | ||
|
|
39d5840a45 | ||
|
|
180b454176 | ||
|
|
8022eca3ae | ||
|
|
775b003b29 | ||
|
|
395a4d2d86 | ||
|
|
76c324780e | ||
|
|
863b3e78a2 | ||
|
|
a8bf48f31a | ||
|
|
3a773ee9a2 | ||
|
|
0c42c0c2a3 | ||
|
|
4be8fe52bf | ||
|
|
76adb12c32 | ||
|
|
8b816d39cb | ||
|
|
e3cf689a8d | ||
|
|
1209383e43 | ||
|
|
91c316b708 | ||
|
|
b1df82035c | ||
|
|
d21225efa8 | ||
|
|
131a47b0cd | ||
|
|
7609900c85 | ||
|
|
8f7dbe99fb | ||
|
|
1cee28dd6c | ||
|
|
2fa3a4ac17 | ||
|
|
92aa684320 | ||
|
|
3ebe60224d | ||
|
|
6dedffd8c8 | ||
|
|
59f290773f | ||
|
|
6fb812fce2 | ||
|
|
a62d93d96b | ||
|
|
e640b7b980 | ||
|
|
117598cfff | ||
|
|
123e09e079 | ||
|
|
aca1424b9b | ||
|
|
d0f685894c | ||
|
|
50d7c6f9ee | ||
|
|
a6d88f6273 | ||
|
|
c17fedef14 | ||
|
|
f43aef2deb | ||
|
|
0f04804290 | ||
|
|
48cd33e6df | ||
|
|
1939d7435a | ||
|
|
92dc6645e5 | ||
|
|
9684889d3e | ||
|
|
1bd7799380 | ||
|
|
9614e68794 | ||
|
|
0f05ceb5b8 | ||
|
|
b7b3fff1dc | ||
|
|
fc31364dee | ||
|
|
dc5d2b4ef5 | ||
|
|
b08c2e9f4a | ||
|
|
4cdf0f49f2 | ||
|
|
2ab3b2c15f | ||
|
|
6f4deb0d84 | ||
|
|
952779d6f3 | ||
|
|
c6e358a56e | ||
|
|
ff6820d201 | ||
|
|
bd94736ff6 | ||
|
|
84bfdf5940 | ||
|
|
b815c4dee4 | ||
|
|
9559f21885 | ||
|
|
5a858bea23 | ||
|
|
f7253d6ac5 | ||
|
|
52e7f7648a | ||
|
|
c5432f7bc8 | ||
|
|
aff5e80549 | ||
|
|
3409b97c6f | ||
|
|
101f15864e | ||
|
|
57e0f872ec | ||
|
|
bdc4af6742 | ||
|
|
b0b6a92600 | ||
|
|
24c78c366e | ||
|
|
375d47af6a | ||
|
|
4724506017 | ||
|
|
0ac4c99a8e | ||
|
|
b99350a897 | ||
|
|
da117c754c | ||
|
|
fe6ab58fd6 | ||
|
|
dbb597f03b | ||
|
|
2b9be131f6 | ||
|
|
b97933a0f8 | ||
|
|
e9efd3af9c | ||
|
|
a7e3ee435e | ||
|
|
06c6b1e334 | ||
|
|
4a2515e238 | ||
|
|
e1117d68e1 | ||
|
|
7340c53813 | ||
|
|
f8e57df71d | ||
|
|
0bee338e79 | ||
|
|
20e598c569 | ||
|
|
8b17b26353 | ||
|
|
7587cffca4 | ||
|
|
4df7828b9b | ||
|
|
dcb9407aff | ||
|
|
a4abceb466 | ||
|
|
0e0005d5a9 | ||
|
|
14ae3e1c43 | ||
|
|
c0858f7eae | ||
|
|
3c245213c7 | ||
|
|
00b2d67939 | ||
|
|
820a8889a8 | ||
|
|
34a57c3928 | ||
|
|
9ddecf0f68 | ||
|
|
f1b931c9b0 | ||
|
|
9348dc3c02 | ||
|
|
a89599ea5a |
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
#Visual studio stuff
|
||||
.vs
|
||||
.git
|
||||
DevourClient/DevourClient.csproj
|
||||
DevourClient/bin
|
||||
DevourClient/obj
|
||||
@@ -1,37 +1,25 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.28729.10
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.1.32407.343
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevourClient", "DevourClient\DevourClient.csproj", "{87349803-31DC-462A-87A3-677CD23AFBA7}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DevourClient", "DevourClient\DevourClient.csproj", "{87349803-31DC-462A-87A3-677CD23AFBA7}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|Mixed Platforms = Debug|Mixed Platforms
|
||||
Debug|x64 = Debug|x64
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|Mixed Platforms = Release|Mixed Platforms
|
||||
Release|x64 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{87349803-31DC-462A-87A3-677CD23AFBA7}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{87349803-31DC-462A-87A3-677CD23AFBA7}.Debug|Any CPU.Build.0 = Debug|x64
|
||||
{87349803-31DC-462A-87A3-677CD23AFBA7}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
|
||||
{87349803-31DC-462A-87A3-677CD23AFBA7}.Debug|Mixed Platforms.Build.0 = Debug|x64
|
||||
{87349803-31DC-462A-87A3-677CD23AFBA7}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{87349803-31DC-462A-87A3-677CD23AFBA7}.Debug|x64.Build.0 = Debug|x64
|
||||
{87349803-31DC-462A-87A3-677CD23AFBA7}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{87349803-31DC-462A-87A3-677CD23AFBA7}.Release|Any CPU.Build.0 = Release|x64
|
||||
{87349803-31DC-462A-87A3-677CD23AFBA7}.Release|Mixed Platforms.ActiveCfg = Release|x64
|
||||
{87349803-31DC-462A-87A3-677CD23AFBA7}.Release|Mixed Platforms.Build.0 = Release|x64
|
||||
{87349803-31DC-462A-87A3-677CD23AFBA7}.Release|x64.ActiveCfg = Release|x64
|
||||
{87349803-31DC-462A-87A3-677CD23AFBA7}.Release|x64.Build.0 = Release|x64
|
||||
{87349803-31DC-462A-87A3-677CD23AFBA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{87349803-31DC-462A-87A3-677CD23AFBA7}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{87349803-31DC-462A-87A3-677CD23AFBA7}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{87349803-31DC-462A-87A3-677CD23AFBA7}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {99B5936A-A0A9-48E0-98C4-105DAEB535C3}
|
||||
SolutionGuid = {CC319521-F66A-4BE0-9D8F-BD285A35C847}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
@@ -1,93 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">x64</Platform>
|
||||
<ProjectGuid>{87349803-31DC-462A-87A3-677CD23AFBA7}</ProjectGuid>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<OutputType>Library</OutputType>
|
||||
<RootNamespace>DevourClient</RootNamespace>
|
||||
<AssemblyName>DevourClient</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<WarningLevel>0</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
|
||||
<WarningLevel>0</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Assembly-CSharp">
|
||||
<HintPath>..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\Assembly-CSharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="bolt, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\bolt.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="bolt.user, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\bolt.user.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Il2Cppmscorlib">
|
||||
<HintPath>..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\Il2Cppmscorlib.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="MelonLoader">
|
||||
<HintPath>..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\MelonLoader.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="UnhollowerBaseLib">
|
||||
<HintPath>..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Dependencies\Il2CppAssemblyGenerator\Il2CppAssemblyUnhollower\UnhollowerBaseLib.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UnhollowerRuntimeLib">
|
||||
<HintPath>..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Dependencies\Il2CppAssemblyGenerator\Il2CppAssemblyUnhollower\UnhollowerRuntimeLib.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine">
|
||||
<HintPath>..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\UnityEngine.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.CoreModule">
|
||||
<HintPath>..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\UnityEngine.CoreModule.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.IMGUIModule">
|
||||
<HintPath>..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\UnityEngine.IMGUIModule.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.InputLegacyModule, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\UnityEngine.InputLegacyModule.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.InputModule">
|
||||
<HintPath>..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\UnityEngine.InputModule.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.UI, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\UnityEngine.UI.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="WindowsBase" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AppDesigner Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Hacks\Misc.cs" />
|
||||
<Compile Include="Hacks\Unlock.cs" />
|
||||
<Compile Include="Helpers\GUIHelper.cs" />
|
||||
<Compile Include="Helpers\StateHelper.cs" />
|
||||
<Compile Include="MelonMain.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Settings\Settings.cs" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
@@ -1,31 +1,313 @@
|
||||
using UnityEngine;
|
||||
using MelonLoader;
|
||||
using UnityEngine.UI;
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
using DevourClient.Helpers;
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
using Il2CppOpsive.UltimateCharacterController.Character;
|
||||
using Il2CppPhoton.Bolt;
|
||||
|
||||
namespace DevourClient.Hacks
|
||||
{
|
||||
public class Misc
|
||||
{
|
||||
public static void Fly(float speed) //normal speed 5f
|
||||
{
|
||||
Il2Cpp.NolanBehaviour nb = Player.GetPlayer();
|
||||
Vector3 pos = nb.transform.position;
|
||||
Il2Cpp.RewiredHelpers helpers = UnityEngine.Object.FindObjectOfType<Il2Cpp.RewiredHelpers>();
|
||||
if (Input.GetKey((KeyCode)System.Enum.Parse(typeof(KeyCode), helpers.GetCurrentBinding("Move Up").ToString().Replace(" ", ""))))
|
||||
{
|
||||
pos += nb.transform.forward * speed * Time.deltaTime;
|
||||
}
|
||||
if (Input.GetKey((KeyCode)System.Enum.Parse(typeof(KeyCode), helpers.GetCurrentBinding("Move Down").ToString().Replace(" ", ""))))
|
||||
{
|
||||
pos += -nb.transform.forward * speed * Time.deltaTime;
|
||||
}
|
||||
if (Input.GetKey((KeyCode)System.Enum.Parse(typeof(KeyCode), helpers.GetCurrentBinding("Move Right").ToString().Replace(" ", ""))))
|
||||
{
|
||||
pos += nb.transform.right * speed * Time.deltaTime;
|
||||
}
|
||||
if (Input.GetKey((KeyCode)System.Enum.Parse(typeof(KeyCode), helpers.GetCurrentBinding("Move Left").ToString().Replace(" ", ""))))
|
||||
{
|
||||
pos += -nb.transform.right * speed * Time.deltaTime;
|
||||
}
|
||||
if (Input.GetKey(KeyCode.Space))
|
||||
{
|
||||
pos += nb.transform.up * speed * Time.deltaTime;
|
||||
}
|
||||
if (Input.GetKey(KeyCode.LeftControl))
|
||||
{
|
||||
pos += -nb.transform.up * speed * Time.deltaTime;
|
||||
}
|
||||
nb.locomotion.SetPosition(pos, false);
|
||||
}
|
||||
|
||||
public static void WalkInLobby(bool walk)
|
||||
{
|
||||
GameObject LocalPlayer = Helpers.Entities.LocalPlayer_.p_GameObject;
|
||||
if (LocalPlayer == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//GetComponent called only once as AddComponent returns a component
|
||||
UltimateCharacterLocomotionHandler cmp = Helpers.Entities.LocalPlayer_.p_GameObject.GetComponent<UltimateCharacterLocomotionHandler>();
|
||||
|
||||
if (cmp == null)
|
||||
{
|
||||
cmp = LocalPlayer.AddComponent<UltimateCharacterLocomotionHandler>();
|
||||
cmp.enabled = false;
|
||||
}
|
||||
|
||||
cmp.enabled = walk;
|
||||
}
|
||||
|
||||
public static void BurnRitualObj(string map, bool burnAll)
|
||||
{
|
||||
switch (map)
|
||||
{
|
||||
case "Inn":
|
||||
Il2Cpp.InnMapController _innMapController = UnityEngine.Object.FindObjectOfType<Il2Cpp.InnMapController>();
|
||||
if (!_innMapController) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (burnAll){
|
||||
_innMapController.SetProgressTo(10);
|
||||
}
|
||||
else{
|
||||
_innMapController.IncreaseProgress();
|
||||
}
|
||||
break;
|
||||
|
||||
case "Slaughterhouse":
|
||||
Il2Cpp.SlaughterhouseAltarController _slaughterhouseAltarController = UnityEngine.Object.FindObjectOfType<Il2Cpp.SlaughterhouseAltarController>();
|
||||
if (!_slaughterhouseAltarController) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (burnAll)
|
||||
{
|
||||
_slaughterhouseAltarController.BurnGoat();
|
||||
}
|
||||
else
|
||||
{
|
||||
_slaughterhouseAltarController.SkipToGoat(10);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
Il2Cpp.SurvivalObjectBurnController _altar = UnityEngine.Object.FindObjectOfType<Il2Cpp.SurvivalObjectBurnController>();
|
||||
if (!_altar) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (burnAll)
|
||||
{
|
||||
_altar.SkipToGoat(10);
|
||||
}
|
||||
else
|
||||
{
|
||||
_altar.BurnGoat();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public static void SpawnAzazel(PrefabId _azazelPrefabId)
|
||||
{
|
||||
if (!Il2CppPhoton.Bolt.BoltNetwork.IsServer)
|
||||
{
|
||||
MelonLogger.Msg("You need to be host to spawn stuff !");
|
||||
return;
|
||||
}
|
||||
|
||||
GameObject _azazel;
|
||||
Vector3 pos = Player.GetPlayer().transform.position;
|
||||
|
||||
_azazel = BoltNetwork.Instantiate(_azazelPrefabId, new Vector3(pos.x, pos.y, pos.z + 1f), Quaternion.identity);
|
||||
|
||||
_azazel.gameObject.GetComponent<Il2Cpp.SurvivalAzazelBehaviour>().Spawn();
|
||||
}
|
||||
|
||||
public static void CarryObject(string name)
|
||||
{
|
||||
Il2Cpp.NolanBehaviour nb = Helpers.Entities.LocalPlayer_.p_GameObject.GetComponent<Il2Cpp.NolanBehaviour>();
|
||||
|
||||
nb.StartCarry(name);
|
||||
}
|
||||
|
||||
public static void CleanFountain()
|
||||
{
|
||||
GameObject[] fountains = GameObject.FindGameObjectsWithTag("InnFountain");
|
||||
|
||||
foreach (GameObject fountain in fountains)
|
||||
{
|
||||
fountain.GetComponent<Il2Cpp.InnFountainController>().Clean();
|
||||
}
|
||||
}
|
||||
|
||||
public static void AutoRespawn()
|
||||
{
|
||||
Il2Cpp.NolanBehaviour nb = Player.GetPlayer();
|
||||
|
||||
Il2Cpp.SurvivalReviveInteractable _reviveInteractable = UnityEngine.Object.FindObjectOfType<Il2Cpp.SurvivalReviveInteractable>(); //probably can't be null
|
||||
|
||||
_reviveInteractable.Interact(nb.gameObject);
|
||||
}
|
||||
public static void TPItems()
|
||||
{
|
||||
Il2Cpp.NolanBehaviour Nolan = Player.GetPlayer();
|
||||
|
||||
foreach (Il2Cpp.SurvivalInteractable item in Helpers.Entities.SurvivalInteractables)
|
||||
{
|
||||
item.transform.position = Nolan.transform.position + Nolan.transform.forward * UnityEngine.Random.RandomRange(1f, 3f);
|
||||
}
|
||||
}
|
||||
|
||||
public static void CreateCustomizedLobby(int lobbySize = 4, bool isPrivate = false, Il2CppUdpKit.Platform.Photon.PhotonRegion.Regions __region = Il2CppUdpKit.Platform.Photon.PhotonRegion.Regions.BEST_REGION)
|
||||
{
|
||||
//TODO : make it so we can specify a password for a private lobby
|
||||
|
||||
Il2CppHorror.Menu _menu = UnityEngine.Object.FindObjectOfType<Il2CppHorror.Menu>();
|
||||
|
||||
Il2CppUdpKit.Platform.PhotonPlatformConfig __photonPlatformConfig = new Il2CppUdpKit.Platform.PhotonPlatformConfig();
|
||||
__photonPlatformConfig.Region = Il2CppUdpKit.Platform.Photon.PhotonRegion.regions[__region];
|
||||
|
||||
BoltLauncher.SetUdpPlatform(new Il2CppUdpKit.Platform.PhotonPlatform(__photonPlatformConfig));
|
||||
|
||||
BoltConfig __config = UnityEngine.Object.FindObjectOfType<Il2CppHorror.Menu>().boltConfig;
|
||||
Toggle __toggle = _menu.hostPrivateServer;
|
||||
|
||||
__toggle.isOn = isPrivate;
|
||||
__config.serverConnectionLimit = lobbySize;
|
||||
|
||||
BoltLauncher.StartServer(__config, null);
|
||||
|
||||
Il2CppHorror.Menu.ShowCanvasGroup(_menu.loadingCanvasGroup, true);
|
||||
Il2CppHorror.Menu.ShowCanvasGroup(_menu.hostCanvasGroup, false);
|
||||
Il2CppHorror.Menu.ShowCanvasGroup(_menu.mainMenuCanvasGroup, false);
|
||||
}
|
||||
|
||||
public static void SetSteamName(string name)
|
||||
{
|
||||
Il2CppHorror.Menu Menu_ = UnityEngine.Object.FindObjectOfType<Il2CppHorror.Menu>();
|
||||
if (Menu_ == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Menu_.steamName = name;
|
||||
}
|
||||
public static void SetServerName(string name)
|
||||
{
|
||||
Il2CppHorror.Menu Menu_ = UnityEngine.Object.FindObjectOfType<Il2CppHorror.Menu>();
|
||||
if (Menu_ == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Menu_.serverNameText.text = name;
|
||||
}
|
||||
|
||||
public static void BigFlashlight(bool reset)
|
||||
{
|
||||
NolanBehaviour Nolan = UnityEngine.Object.FindObjectOfType<NolanBehaviour>();
|
||||
Il2Cpp.NolanBehaviour Nolan = Player.GetPlayer();
|
||||
if (Nolan == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Light flashlightSpot = Nolan.flashlightSpot;
|
||||
if (flashlightSpot == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (reset)
|
||||
{
|
||||
flashlightSpot.intensity = 1.5f;
|
||||
{
|
||||
flashlightSpot.intensity = 1.4f;
|
||||
flashlightSpot.range = 9f;
|
||||
flashlightSpot.spotAngle = 70f;
|
||||
}
|
||||
else
|
||||
{
|
||||
flashlightSpot.intensity = 1.5f;
|
||||
{
|
||||
flashlightSpot.intensity = 1.1f;
|
||||
flashlightSpot.range = 200f;
|
||||
flashlightSpot.spotAngle = 90f;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static List<Transform> GetAllBones(Animator a)
|
||||
{
|
||||
List<Transform> Bones = new List<Transform>
|
||||
{
|
||||
a.GetBoneTransform(HumanBodyBones.Head), // 0
|
||||
a.GetBoneTransform(HumanBodyBones.Neck), // 1
|
||||
a.GetBoneTransform(HumanBodyBones.Spine), // 2
|
||||
a.GetBoneTransform(HumanBodyBones.Hips), // 3
|
||||
|
||||
a.GetBoneTransform(HumanBodyBones.LeftShoulder), // 4
|
||||
a.GetBoneTransform(HumanBodyBones.LeftUpperArm), // 5
|
||||
a.GetBoneTransform(HumanBodyBones.LeftLowerArm), // 6
|
||||
a.GetBoneTransform(HumanBodyBones.LeftHand), // 7
|
||||
|
||||
a.GetBoneTransform(HumanBodyBones.RightShoulder), // 8
|
||||
a.GetBoneTransform(HumanBodyBones.RightUpperArm), // 9
|
||||
a.GetBoneTransform(HumanBodyBones.RightLowerArm), // 10
|
||||
a.GetBoneTransform(HumanBodyBones.RightHand), // 11
|
||||
|
||||
a.GetBoneTransform(HumanBodyBones.LeftUpperLeg), // 12
|
||||
a.GetBoneTransform(HumanBodyBones.LeftLowerLeg), // 13
|
||||
a.GetBoneTransform(HumanBodyBones.LeftFoot), // 14
|
||||
|
||||
a.GetBoneTransform(HumanBodyBones.RightUpperLeg), // 15
|
||||
a.GetBoneTransform(HumanBodyBones.RightLowerLeg), // 16
|
||||
a.GetBoneTransform(HumanBodyBones.RightFoot) // 17
|
||||
};
|
||||
|
||||
return Bones;
|
||||
}
|
||||
|
||||
public static void Fullbright(bool reset)
|
||||
{
|
||||
Il2Cpp.NolanBehaviour Nolan = Player.GetPlayer();
|
||||
if (Nolan == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Light flashlightSpot = Nolan.flashlightSpot;
|
||||
if (flashlightSpot == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (reset)
|
||||
{
|
||||
flashlightSpot.intensity = 1.4f;
|
||||
flashlightSpot.range = 9f;
|
||||
flashlightSpot.spotAngle = 70f;
|
||||
flashlightSpot.type = LightType.Spot;
|
||||
flashlightSpot.shadows = LightShadows.Soft;
|
||||
}
|
||||
else
|
||||
{
|
||||
flashlightSpot.intensity = 1.1f;
|
||||
flashlightSpot.range = 200f;
|
||||
flashlightSpot.spotAngle = 179f;
|
||||
flashlightSpot.type = LightType.Point;
|
||||
flashlightSpot.shadows = LightShadows.None;
|
||||
}
|
||||
|
||||
}
|
||||
public static void FlashlightColor(Color color)
|
||||
{
|
||||
NolanBehaviour Nolan = UnityEngine.Object.FindObjectOfType<NolanBehaviour>();
|
||||
Il2Cpp.NolanBehaviour Nolan = Player.GetPlayer();
|
||||
Light flashlightSpot = Nolan.flashlightSpot;
|
||||
|
||||
flashlightSpot.color = color;
|
||||
@@ -33,12 +315,12 @@ namespace DevourClient.Hacks
|
||||
|
||||
public static void TPKeys()
|
||||
{
|
||||
NolanBehaviour Nolan = UnityEngine.Object.FindObjectOfType<NolanBehaviour>();
|
||||
//TOFIX: spawn manually the missing key in slaughterhouse
|
||||
Il2Cpp.NolanBehaviour Nolan = Player.GetPlayer();
|
||||
|
||||
foreach (KeyBehaviour keyBehaviour in UnityEngine.Object.FindObjectsOfType<KeyBehaviour>())
|
||||
foreach (Il2Cpp.KeyBehaviour keyBehaviour in Helpers.Entities.Keys)
|
||||
{
|
||||
bool flag = keyBehaviour == null;
|
||||
if (flag)
|
||||
if (keyBehaviour == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -46,48 +328,185 @@ namespace DevourClient.Hacks
|
||||
}
|
||||
}
|
||||
|
||||
public static void MaxRank()
|
||||
public static void SetRank(int rank)
|
||||
{
|
||||
NolanRankController NolanRank = UnityEngine.Object.FindObjectOfType<NolanRankController>();
|
||||
|
||||
NolanRank.SetRank(70);
|
||||
Il2Cpp.NolanRankController NolanRank = UnityEngine.Object.FindObjectOfType<Il2Cpp.NolanRankController>();
|
||||
if (NolanRank == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
NolanRank.SetRank(rank);
|
||||
}
|
||||
|
||||
public static void MessageSpam(string message)
|
||||
{
|
||||
//TOFIX : not spamming anymore :/
|
||||
if (Helpers.Player.IsInGame())
|
||||
{
|
||||
GameUI game_ui_class = UnityEngine.Object.FindObjectOfType<GameUI>();
|
||||
Il2Cpp.GameUI game_ui_class = UnityEngine.Object.FindObjectOfType<Il2Cpp.GameUI>();
|
||||
|
||||
game_ui_class.textChatInput.text = message;
|
||||
game_ui_class.OnChatMessageSubmit();
|
||||
}
|
||||
else
|
||||
{
|
||||
Horror.Menu menu_class = UnityEngine.Object.FindObjectOfType<Horror.Menu>();
|
||||
Il2CppHorror.Menu menu_class = UnityEngine.Object.FindObjectOfType<Il2CppHorror.Menu>();
|
||||
menu_class.textChatInput.text = message;
|
||||
menu_class.OnChatMessageSubmit();
|
||||
}
|
||||
}
|
||||
|
||||
public static void DespawnDemons()
|
||||
{
|
||||
foreach (Il2Cpp.SurvivalDemonBehaviour demon in Helpers.Entities.Demons)
|
||||
{
|
||||
if (demon != null)
|
||||
{
|
||||
demon.Despawn();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void DespawnSpiders()
|
||||
{
|
||||
foreach (Il2Cpp.SpiderBehaviour spider in Helpers.Entities.Spiders)
|
||||
{
|
||||
if (spider != null)
|
||||
{
|
||||
spider.Despawn();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void DespawnGhosts()
|
||||
{
|
||||
foreach (Il2Cpp.GhostBehaviour ghost in Helpers.Entities.Ghosts)
|
||||
{
|
||||
if (ghost != null)
|
||||
{
|
||||
ghost.Despawn();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void DespawnBoars()
|
||||
{
|
||||
foreach (Il2Cpp.BoarBehaviour boar in Helpers.Entities.Boars)
|
||||
{
|
||||
if (boar != null)
|
||||
{
|
||||
boar.Despawn();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void DespawnCorpses()
|
||||
{
|
||||
foreach (Il2Cpp.CorpseBehaviour corpse in Helpers.Entities.Corpses)
|
||||
{
|
||||
if (corpse != null)
|
||||
{
|
||||
corpse.Despawn();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void ShowMessageBox(string message)
|
||||
{
|
||||
//not used, might be useful, some day
|
||||
Il2CppHorror.Menu menu = UnityEngine.Object.FindObjectOfType<Il2CppHorror.Menu>();
|
||||
menu.ShowMessageModal(message);
|
||||
}
|
||||
|
||||
public static void PlaySound()
|
||||
{
|
||||
Il2Cpp.PlayRandomAudioClip playRandomAudioClip = UnityEngine.Object.FindObjectOfType<Il2Cpp.PlayRandomAudioClip>();
|
||||
Il2Cpp.NolanVoiceOvers nolanVoiceOvers = UnityEngine.Object.FindObjectOfType<Il2Cpp.NolanVoiceOvers>();
|
||||
playRandomAudioClip.delay = 0f;
|
||||
|
||||
int num = UnityEngine.Random.RandomRangeInt(0, 10);
|
||||
switch (num)
|
||||
{
|
||||
case 0:
|
||||
nolanVoiceOvers.yesClips.Play();
|
||||
return;
|
||||
case 1:
|
||||
nolanVoiceOvers.noClips.Play();
|
||||
return;
|
||||
case 2:
|
||||
nolanVoiceOvers.beckonClips.Play();
|
||||
return;
|
||||
case 3:
|
||||
nolanVoiceOvers.showOffClips.Play();
|
||||
return;
|
||||
case 4:
|
||||
nolanVoiceOvers.screamClips.Play();
|
||||
return;
|
||||
case 5:
|
||||
nolanVoiceOvers.pickupClips.Play();
|
||||
return;
|
||||
case 6:
|
||||
nolanVoiceOvers.burnGoatClips.Play();
|
||||
return;
|
||||
case 7:
|
||||
nolanVoiceOvers.laughClips.Play();
|
||||
return;
|
||||
case 8:
|
||||
nolanVoiceOvers.PlayMoan();
|
||||
return;
|
||||
case 9:
|
||||
nolanVoiceOvers.Scream();
|
||||
return;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public static void FreezeAzazel()
|
||||
{
|
||||
if (Helpers.Map.GetActiveScene() == "Menu")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (Helpers.Map.GetAzazel() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
UltimateCharacterLocomotion _azazelLocomotion = Helpers.Map.GetAzazel().GetComponent<UltimateCharacterLocomotion>();
|
||||
|
||||
if (_azazelLocomotion == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (_azazelLocomotion.TimeScale > 0.0f)
|
||||
{
|
||||
_azazelLocomotion.TimeScale = 0f; //host only (?)
|
||||
}
|
||||
else
|
||||
{
|
||||
_azazelLocomotion.TimeScale = 1.0f;
|
||||
}
|
||||
}
|
||||
|
||||
public static void InstantWin()
|
||||
{
|
||||
Survival survival_class = UnityEngine.Object.FindObjectOfType<Survival>();
|
||||
try
|
||||
Il2Cpp.Survival survival_class = UnityEngine.Object.FindObjectOfType<Il2Cpp.Survival>();
|
||||
string map_name = Map.GetMapName(Map.GetActiveScene());
|
||||
|
||||
if (map_name == "Menu")
|
||||
{
|
||||
survival_class.PlayWinEnding("InnWin");
|
||||
}
|
||||
catch
|
||||
{
|
||||
try
|
||||
{
|
||||
survival_class.PlayWinEnding("AsylumWin");
|
||||
}
|
||||
catch
|
||||
{
|
||||
survival_class.PlayWinEnding("Win");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (map_name == "Farmhouse")
|
||||
{
|
||||
survival_class.PlayEnding("Win");
|
||||
return;
|
||||
}
|
||||
|
||||
survival_class.PlayEnding(map_name+"Win");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,41 +4,30 @@
|
||||
{
|
||||
public static void Achievements()
|
||||
{
|
||||
AchievementHelpers ah = UnityEngine.Object.FindObjectOfType<AchievementHelpers>();
|
||||
Il2Cpp.AchievementHelpers ah = UnityEngine.Object.FindObjectOfType<Il2Cpp.AchievementHelpers>();
|
||||
|
||||
/*
|
||||
string[] names = { "hasAchievedFusesUsed", "hasAchievedGasolineUsed", "hasAchievedNoKnockout", "hasCollectedAllPatches", "hasCollectedAllRoses",
|
||||
"hasCompletedHardAsylumGame", "hasCompletedHardGame", "hasCompletedNightmareAsylumGame", "hasCompletedNightmareGame", "hasCompletedNormalGame",
|
||||
"hasCompletedHardInnGamehasCompletedNightmareInnGame", "hasCollectedAllCherryBlossom", "hasAchievedEggsDestroyed", "hasCollectedAllPumpkins",
|
||||
"isStatsValid", "isStatsFetched" };
|
||||
string[] achievements = { "STAT_NUM_BLEACH_USED", "ACH_WON_TOWN_COOP", "ACH_WON_TOWN_HARD", "ACH_WON_SLAUGHTERHOUSE_SP", "ACH_WON_SP", "ACH_WON_SLAUGHTERHOUSE_NIGHTMARE", "ACH_WON_SLAUGHTERHOUSE_NIGHTMARE_SP", "ACH_WON_SLAUGHTERHOUSE_HARD", "ACH_WON_SLAUGHTERHOUSE_HARD_SP", "ACH_WON_NO_MEDKITS", "ACH_WON_SLAUGHTERHOUSE_COOP", "ACH_WON_NO_BATTERIES", "ACH_WON_NO_KNOCKOUT_COOP", "ACH_WON_NIGHTMARE_NO_BATTERIES", "ACH_WON_NIGHTMARE_NO_MEDKITS", "ACH_WON_MOLLY_NIGHTMARE_SP", "ACH_WON_MOLLY_SP", "ACH_WON_TOWN_NIGHTMARE_SP", "ACH_WON_TOWN_SP", "ACH_WON_TOWN_HARD_SP", "ACH_WON_TOWN_NIGHTMARE", "ACH_UNLOCKED_CAGE", "ACH_WIN_NIGHTMARE", "ACH_SURVIVED_TO_7_GOATS", "ACH_UNLOCKED_ATTIC_CAGE", "ACH_SURVIVED_TO_3_GOATS", "ACH_SURVIVED_TO_5_GOATS", "ACH_STAGGERED_SAM_20_TIMES", "ACH_STAGGERED_ZARA_20_TIMES", "ACH_STAGGERED_MOLLY_20_TIMES", "ACH_STAGGERED_NATHAN_20_TIMES", "ACH_REVIVED_20_PLAYERS", "ACH_STAGGERED_ANNA_20_TIMES", "ACH_NEVER_KNOCKED_OUT", "ACH_ONLY_ONE_KNOCKED_OUT", "ACH_LOST", "ACH_LURED_20_GOATS", "ACH_WON_MOLLY_HARD_SP", "ACH_WON_MOLLY_NIGHTMARE", "ACH_WON_MOLLY_COOP", "ACH_WON_MOLLY_HARD", "ACH_WON_INN_NIGHTMARE_SP", "ACH_WON_INN_SP", "ACH_WON_INN_HARD_SP", "ACH_WON_INN_NIGHTMARE", "ACH_WON_INN_COOP", "ACH_WON_INN_HARD", "ACH_WON_HARD_NO_MEDKITS", "ACH_WON_HARD_SP", "ACH_WON_HARD", "ACH_WON_HARD_NO_BATTERIES", "ACH_WIN_NIGHTMARE_SP", "ACH_WON_COOP", "ACH_ALL_ROSES", "ACH_BEAT_GAME_5_TIMES", "ACH_ALL_NOTES_READ", "ACH_ALL_PATCHES", "ACH_ALL_CLIPBOARDS_READ", "ACH_ALL_HORSESHOES", "ACH_ALL_BARBED_WIRES", "ACH_ALL_CHERRY_BLOSSOM", "ACH_20_POOPS_SEARCHED", "ACH_20_TRASH_CANS_KICKED", "ACH_100_GASOLINE_USED", "ACH_20_BLEACH_USED", "ACH_100_EGGS_DESTROYED", "ACH_100_FUSES_USED", "ACH_1000_PIGS_DESTROYED", "ACH_100_BOOKS_CURSED", "ACH_KNOCKED_OUT_IN_HIDING", "ACH_KNOCKOUT_OUT_BY_DEMON", "ACH_KNOCKED_OUT_20_TIMES", "ACH_KNOCKED_OUT_BY_ANNA", "ACH_FRIED_20_DEMONS", "ACH_FRIED_RAT", "ACH_FRIED_100_CORPSES", "ACH_FRIED_100_INMATES", "ACH_FRIED_1000_GHOSTS", "ACH_FRIED_1000_SPIDERS", "ACH_CALM_MOLLY_10_TIMES", "ACH_FRIED_1000_BOARS", "ACH_CALMED_ANNA", "ACH_CALMED_ANNA_10_TIMES", "ACH_BEAT_GAME_5_TIMES_IN_NIGHTMARE_MODE", "ACH_BURNT_GOAT", "ACH_1000_BOOKS_DESTROYED" };
|
||||
|
||||
for (int i = 0; i < names.Length; i++)
|
||||
for (int i = 0; i < achievements.Length; i++)
|
||||
{
|
||||
ah.GetType().GetField(names[i], System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue(ah, true); //Causing a crash.
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
string[] achievments = { "ACH_WON_INN_NIGHTMARE", "ACH_WON_INN_NIGHTMARE_SP", "ACH_WON_INN_HARD", "ACH_WON_INN_HARD_SP", "ACH_WON_INN_COOP", "ACH_ALL_ROSES", "ACH_BURNT_GOAT",
|
||||
"ACH_ALL_CHERRY_BLOSSOM", "ACH_100_EGGS_DESTROYED", "ACH_WON_INN_SP", "ACH_SURVIVED_TO_3_GOATS", "ACH_SURVIVED_TO_5_GOATS", "ACH_SURVIVED_TO_7_GOATS", "ACH_WON_SP", "ACH_WON_COOP",
|
||||
"ACH_LOST", "ACH_LURED_20_GOATS", "ACH_REVIVED_20_PLAYERS", "ACH_ALL_NOTES_READ", "ACH_KNOCKED_OUT_BY_ANNA", "ACH_KNOCKOUT_OUT_BY_DEMON", "ACH_KNOCKED_OUT_20_TIMES",
|
||||
"ACH_NEVER_KNOCKED_OUT", "ACH_ONLY_ONE_KNOCKED_OUT", "ACH_UNLOCKED_CAGE", "ACH_UNLOCKED_ATTIC_CAGE", "ACH_BEAT_GAME_5_TIMES", "ACH_100_GASOLINE_USED",
|
||||
"ACH_FRIED_20_DEMONS", "ACH_STAGGERED_ANNA_20_TIMES", "ACH_CALMED_ANNA_10_TIMES", "ACH_CALMED_ANNA", "ACH_WIN_NIGHTMARE", "ACH_BEAT_GAME_5_TIMES_IN_NIGHTMARE_MODE",
|
||||
"ACH_WON_NO_KNOCKOUT_COOP", "ACH_WIN_NIGHTMARE_SP", "ACH_WON_HARD", "ACH_WON_HARD_SP", "ACH_100_FUSES_USED", "ACH_ALL_CLIPBOARDS_READ", "ACH_ALL_PATCHES",
|
||||
"ACH_FRIED_RAT", "ACH_FRIED_100_INMATES", "ACH_LURED_20_RATS", "ACH_STAGGERED_MOLLY_20_TIMES", "ACH_WON_MOLLY_SP", "ACH_WON_MOLLY_HARD_SP", "ACH_WON_MOLLY_NIGHTMARE_SP",
|
||||
"ACH_WON_MOLLY_COOP", "ACH_WON_MOLLY_HARD", "ACH_WON_MOLLY_NIGHTMARE", "ACH_20_TRASH_CANS_KICKED", "ACH_CALM_MOLLY_10_TIMES" };
|
||||
|
||||
for (int i = 0; i < achievments.Length; i++)
|
||||
{
|
||||
ah.Unlock(achievments[i]);
|
||||
ah.Unlock(achievements[i]);
|
||||
}
|
||||
}
|
||||
|
||||
public static void Doors()
|
||||
{
|
||||
//Pour chaques portes, on les ouvre
|
||||
foreach (Horror.DoorBehaviour doorBehaviour in UnityEngine.Object.FindObjectsOfType<Horror.DoorBehaviour>())
|
||||
foreach (Il2CppHorror.DoorBehaviour doorBehaviour in UnityEngine.Object.FindObjectsOfType<Il2CppHorror.DoorBehaviour>())
|
||||
{
|
||||
doorBehaviour.state.Locked = false;
|
||||
if (doorBehaviour.IsOpen())
|
||||
{
|
||||
doorBehaviour.m_DoorGraphUpdate.DoorOpening();
|
||||
}
|
||||
else
|
||||
{
|
||||
doorBehaviour.m_DoorGraphUpdate.DoorClosed();
|
||||
}
|
||||
doorBehaviour.Unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,28 +10,67 @@ namespace DevourClient.Helpers
|
||||
|
||||
public static Color ColorPick(string title, Color color)
|
||||
{
|
||||
GUI.Label(new Rect(Screen.width - 120, 65, 100, 30), title);
|
||||
R = GUI.VerticalSlider(new Rect(Screen.width - 100, 90, 30, 100), color.r, 0f, 1f);
|
||||
G = GUI.VerticalSlider(new Rect(Screen.width - 70, 90, 30, 100), color.g, 0f, 1f);
|
||||
B = GUI.VerticalSlider(new Rect(Screen.width - 40, 90, 30, 100), color.b, 0f, 1f);
|
||||
GUI.Label(new Rect(Screen.width - 100, 190, 30, 30), "R");
|
||||
GUI.Label(new Rect(Screen.width - 70, 190, 30, 30), "G");
|
||||
GUI.Label(new Rect(Screen.width - 39, 190, 30, 30), "B");
|
||||
GUI.Label(new Rect(Settings.Settings.x + 195, Settings.Settings.y + 70, 250, 30), title);
|
||||
|
||||
R = GUI.VerticalSlider(new Rect(Settings.Settings.x + 240, Settings.Settings.y + 100, 30, 90), color.r, 0f, 1f);
|
||||
G = GUI.VerticalSlider(new Rect(Settings.Settings.x + 270, Settings.Settings.y + 100, 30, 90), color.g, 0f, 1f);
|
||||
B = GUI.VerticalSlider(new Rect(Settings.Settings.x + 300, Settings.Settings.y + 100, 30, 90), color.b, 0f, 1f);
|
||||
|
||||
GUI.Label(new Rect(Settings.Settings.x + 240, Settings.Settings.y + 190, 30, 30), "R");
|
||||
GUI.Label(new Rect(Settings.Settings.x + 270, Settings.Settings.y + 190, 30, 30), "G");
|
||||
GUI.Label(new Rect(Settings.Settings.x + 300, Settings.Settings.y + 190, 30, 30), "B");
|
||||
|
||||
color = new Color(R, G, B, 1);
|
||||
GUI.color = color;
|
||||
|
||||
void DrawPreview(Rect position, Color color_to_draw)
|
||||
{
|
||||
Texture2D texture = new Texture2D(1, 1);
|
||||
texture.SetPixel(0, 0, color);
|
||||
texture.SetPixel(0, 0, color_to_draw);
|
||||
texture.Apply();
|
||||
GUI.skin.box.normal.background = texture;
|
||||
GUI.Box(position, GUIContent.none);
|
||||
GUIStyle boxStyle = new GUIStyle(GUI.skin.box);
|
||||
boxStyle.normal.background = texture;
|
||||
GUI.Box(position, GUIContent.none, boxStyle);
|
||||
}
|
||||
|
||||
DrawPreview(new Rect(Screen.width - 130, 90, 20, 100), color);
|
||||
DrawPreview(new Rect(Settings.Settings.x + 195, Settings.Settings.y + 100, 20, 90), color);
|
||||
|
||||
return color;
|
||||
}
|
||||
|
||||
public static Texture2D MakeTex(int width, int height, Color col)
|
||||
{
|
||||
Color[] pix = new Color[width * height];
|
||||
for (int i = 0; i < pix.Length; ++i)
|
||||
{
|
||||
pix[i] = col;
|
||||
}
|
||||
Texture2D result = new Texture2D(width, height);
|
||||
result.SetPixels(pix);
|
||||
result.Apply();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static Texture2D GetCircularTexture(int width, int height)
|
||||
{
|
||||
Texture2D texture = new Texture2D(width, height);
|
||||
for (int x = 0; x < texture.width; x++)
|
||||
{
|
||||
for (int y = 0; y < texture.height; y++)
|
||||
{
|
||||
if (Vector2.Distance(new Vector2(x, y), new Vector2(texture.width / 2, texture.height / 2)) <= texture.width / 2)
|
||||
{
|
||||
texture.SetPixel(x, y, Color.white);
|
||||
}
|
||||
else
|
||||
{
|
||||
texture.SetPixel(x, y, Color.clear);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
texture.Apply();
|
||||
|
||||
return texture;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
48
DevourClient/Helpers/Map.cs
Normal file
48
DevourClient/Helpers/Map.cs
Normal file
@@ -0,0 +1,48 @@
|
||||
namespace DevourClient.Helpers
|
||||
{
|
||||
class Map
|
||||
{
|
||||
public static string GetActiveScene()
|
||||
{
|
||||
return UnityEngine.SceneManagement.SceneManager.GetActiveScene().name;
|
||||
}
|
||||
|
||||
public static string GetMapName(string sceneName)
|
||||
{
|
||||
switch (sceneName)
|
||||
{
|
||||
case "Devour":
|
||||
return "Farmhouse";
|
||||
case "Molly":
|
||||
return "Asylum";
|
||||
case "Inn":
|
||||
return "Inn";
|
||||
case "Town":
|
||||
return "Town";
|
||||
case "Slaughterhouse":
|
||||
return "Slaughterhouse";
|
||||
default:
|
||||
return "Menu";
|
||||
}
|
||||
}
|
||||
|
||||
public static UnityEngine.GameObject GetAzazel()
|
||||
{
|
||||
return Helpers.Entities.Azazels[0].gameObject;
|
||||
}
|
||||
|
||||
public static void LoadMap(string mapName)
|
||||
{
|
||||
if (Il2CppPhoton.Bolt.BoltNetwork.IsServer)
|
||||
{
|
||||
Il2CppPhoton.Bolt.BoltNetwork.LoadScene(mapName);
|
||||
|
||||
MelonLoader.MelonLogger.Warning("Please press the button only once, it may take some time for the map to load.");
|
||||
}
|
||||
else
|
||||
{
|
||||
MelonLoader.MelonLogger.Warning("You must be the host to use this command!");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
143
DevourClient/Helpers/Render.cs
Normal file
143
DevourClient/Helpers/Render.cs
Normal file
@@ -0,0 +1,143 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
using MelonLoader;
|
||||
|
||||
namespace DevourClient.Render
|
||||
{
|
||||
public class Render
|
||||
{
|
||||
public static GUIStyle StringStyle { get; set; } = new GUIStyle(GUI.skin.label);
|
||||
|
||||
public static void DrawString(Vector2 position, Color color, string label, bool centered = true)
|
||||
{
|
||||
var content = new GUIContent(label);
|
||||
var size = StringStyle.CalcSize(content);
|
||||
var upperLeft = centered ? position - size / 2f : position;
|
||||
Color color2 = GUI.color;
|
||||
GUI.color = color;
|
||||
GUI.Label(new Rect(upperLeft, size), content);
|
||||
GUI.color = color2;
|
||||
}
|
||||
|
||||
public static Texture2D lineTex = default!;
|
||||
public static void DrawLine(Vector2 pointA, Vector2 pointB, Color color, float width)
|
||||
{
|
||||
Matrix4x4 matrix = GUI.matrix;
|
||||
if (!lineTex)
|
||||
lineTex = new Texture2D(1, 1);
|
||||
|
||||
Color color2 = GUI.color;
|
||||
GUI.color = color;
|
||||
float num = Vector3.Angle(pointB - pointA, Vector2.right);
|
||||
|
||||
if (pointA.y > pointB.y)
|
||||
num = -num;
|
||||
|
||||
GUIUtility.ScaleAroundPivot(new Vector2((pointB - pointA).magnitude, width), new Vector2(pointA.x, pointA.y + 0.5f));
|
||||
GUIUtility.RotateAroundPivot(num, pointA);
|
||||
GUI.DrawTexture(new Rect(pointA.x, pointA.y, 1f, 1f), lineTex);
|
||||
GUI.matrix = matrix;
|
||||
GUI.color = color2;
|
||||
}
|
||||
|
||||
public static void DrawNameESP(Vector3 pos, string name, Color color)
|
||||
{
|
||||
if (Camera.main == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Vector3 vector = Camera.main.WorldToScreenPoint(pos);
|
||||
if (vector.z > 0f)
|
||||
{
|
||||
vector.y = (float)Screen.height - (vector.y + 1f);
|
||||
GUI.color = color;
|
||||
GUI.DrawTexture(new Rect(new Vector2(vector.x, vector.y), new Vector2(5f, 5f)), Texture2D.whiteTexture, 0);
|
||||
GUI.Label(new Rect(new Vector2(vector.x, vector.y), new Vector2(100f, 100f)), name);
|
||||
GUI.color = Color.white;
|
||||
}
|
||||
}
|
||||
public static void DrawBones(Transform bone1, Transform bone2, Color c)
|
||||
{
|
||||
if (!Camera.main) //fix the crash maybe
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!bone1 || !bone2)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Vector3 w1 = Camera.main.WorldToScreenPoint(bone1.position);
|
||||
Vector3 w2 = Camera.main.WorldToScreenPoint(bone2.position);
|
||||
if (w1.z > 0.0f && w2.z > 0.0f)
|
||||
{
|
||||
DrawLine(new Vector2(w1.x, Screen.height - w1.y), new Vector2(w2.x, Screen.height - w2.y), c, 2f);
|
||||
}
|
||||
}
|
||||
|
||||
public static void DrawAllBones(List<Transform> b, Color c)
|
||||
{
|
||||
DrawBones(b[0], b[1], c); //head, neck
|
||||
DrawBones(b[1], b[2], c); //neck, spine
|
||||
DrawBones(b[2], b[3], c); //spine, hips
|
||||
|
||||
DrawBones(b[1], b[4], c); //neck, left shoulder
|
||||
DrawBones(b[4], b[5], c); //left shoulder, left upper arm
|
||||
DrawBones(b[5], b[6], c); //left upper arm, left lower arm
|
||||
DrawBones(b[6], b[7], c); //left lower arm, left hand
|
||||
|
||||
DrawBones(b[1], b[8], c); //neck, right shoulder
|
||||
DrawBones(b[8], b[9], c); //right shoulder, right upper arm
|
||||
DrawBones(b[9], b[10], c); //right upper arm, right lower arm
|
||||
DrawBones(b[10], b[11], c); //right lower arm, right hand
|
||||
|
||||
DrawBones(b[3], b[12], c); //hips, left upper leg
|
||||
DrawBones(b[12], b[13], c); //left upper leg, left lower leg
|
||||
DrawBones(b[13], b[14], c); //left lower leg, left foot
|
||||
|
||||
DrawBones(b[3], b[15], c); //hips, right upper leg
|
||||
DrawBones(b[15], b[16], c); //right upper leg, right lower leg
|
||||
DrawBones(b[16], b[17], c); //right lower leg, right foot
|
||||
}
|
||||
|
||||
static void DrawBox(float x, float y, float w, float h, Color color, float thickness)
|
||||
{
|
||||
Render.DrawLine(new Vector2(x, y), new Vector2(x + w, y), color, thickness);
|
||||
Render.DrawLine(new Vector2(x, y), new Vector2(x, y + h), color, thickness);
|
||||
Render.DrawLine(new Vector2(x + w, y), new Vector2(x + w, y + h), color, thickness);
|
||||
Render.DrawLine(new Vector2(x, y + h), new Vector2(x + w, y + h), color, thickness);
|
||||
}
|
||||
|
||||
public static void DrawBoxESP(GameObject it, float footOffset, float headOffset, string name, Color color, bool snapline = false, bool esp = false, float nameOffset = -0.5f, float widthOffset = 2.0f)
|
||||
{
|
||||
if (!it || !Camera.main)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Vector3 footpos = Camera.main.WorldToScreenPoint(new Vector3(it.transform.position.x, it.transform.position.y + footOffset, it.transform.position.z));
|
||||
Vector3 headpos = Camera.main.WorldToScreenPoint(new Vector3(it.transform.position.x, it.transform.position.y + headOffset, it.transform.position.z));
|
||||
Vector3 namepos = Camera.main.WorldToScreenPoint(new Vector3(it.transform.position.x, it.transform.position.y + nameOffset, it.transform.position.z));
|
||||
|
||||
if (esp && footpos.z > 0.0f)
|
||||
{
|
||||
float height = (headpos.y - footpos.y);
|
||||
float width = height / widthOffset;
|
||||
|
||||
DrawBox(footpos.x - (width / 2), (float)Screen.height - footpos.y - height, width, height, color, 2.0f);
|
||||
DrawString(new Vector2(namepos.x, (float)Screen.height - namepos.y), color, name);
|
||||
}
|
||||
|
||||
if (snapline && footpos.z > 0f)
|
||||
{
|
||||
Render.DrawLine(new Vector2((float)(Screen.width / 2), (float)(Screen.height / 2)), new Vector2(footpos.x, (float)Screen.height - footpos.y), color, 2f);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,21 +1,325 @@
|
||||
namespace DevourClient.Helpers
|
||||
using UnityEngine;
|
||||
using Il2CppOpsive.UltimateCharacterController.Character;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections;
|
||||
using MelonLoader;
|
||||
using Il2CppPhoton.Bolt;
|
||||
|
||||
namespace DevourClient.Helpers
|
||||
{
|
||||
public class BasePlayer
|
||||
{
|
||||
public GameObject p_GameObject { get; set; } = default!;
|
||||
public string Name { get; set; } = default!;
|
||||
public string Id { get; set; } = default!;
|
||||
|
||||
public void Kill()
|
||||
{
|
||||
if (p_GameObject == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Il2Cpp.SurvivalAzazelBehaviour sab = Il2Cpp.SurvivalAzazelBehaviour.FindObjectOfType<Il2Cpp.SurvivalAzazelBehaviour>();
|
||||
|
||||
if (sab == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
sab.OnKnockout(sab.gameObject, p_GameObject);
|
||||
}
|
||||
|
||||
public void Revive()
|
||||
{
|
||||
if (p_GameObject == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Il2Cpp.NolanBehaviour nb = p_GameObject.GetComponent<Il2Cpp.NolanBehaviour>();
|
||||
Il2Cpp.SurvivalReviveInteractable _reviveInteractable = UnityEngine.Object.FindObjectOfType<Il2Cpp.SurvivalReviveInteractable>();
|
||||
|
||||
_reviveInteractable.Interact(nb.gameObject);
|
||||
}
|
||||
|
||||
public void Jumpscare()
|
||||
{
|
||||
if (!BoltNetwork.IsServer)
|
||||
{
|
||||
MelonLogger.Msg("You need to be server !");
|
||||
return;
|
||||
}
|
||||
|
||||
if (p_GameObject == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Il2Cpp.SurvivalAzazelBehaviour sab = Il2Cpp.SurvivalAzazelBehaviour.FindObjectOfType<Il2Cpp.SurvivalAzazelBehaviour>();
|
||||
|
||||
if (sab == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
sab.OnPickedUpPlayer(sab.gameObject, p_GameObject, false);
|
||||
|
||||
/*
|
||||
MelonLogger.Msg(Name);
|
||||
Il2Cpp.JumpScare _jumpscare = UnityEngine.Object.FindObjectOfType<Il2Cpp.JumpScare>();
|
||||
_jumpscare.player = p_GameObject;
|
||||
_jumpscare.Activate(p_GameObject.GetComponent<BoltEntity>());
|
||||
*/
|
||||
}
|
||||
|
||||
public void LockInCage()
|
||||
{
|
||||
if (p_GameObject == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
BoltNetwork.Instantiate(BoltPrefabs.Cage, p_GameObject.transform.position, Quaternion.identity);
|
||||
|
||||
}
|
||||
|
||||
public void TP()
|
||||
{
|
||||
if (p_GameObject == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Il2Cpp.NolanBehaviour nb = Player.GetPlayer();
|
||||
nb.TeleportTo(p_GameObject.transform.position, Quaternion.identity);
|
||||
}
|
||||
|
||||
public void TPAzazel()
|
||||
{
|
||||
if (p_GameObject == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
UltimateCharacterLocomotion ucl = Helpers.Map.GetAzazel().GetComponent<UltimateCharacterLocomotion>();
|
||||
|
||||
try
|
||||
{
|
||||
ucl.SetPosition(p_GameObject.transform.position);
|
||||
}
|
||||
catch { return; }
|
||||
}
|
||||
}
|
||||
public class Player
|
||||
{
|
||||
public static bool IsInGame()
|
||||
{
|
||||
//Code pas très beau ici
|
||||
//La variable gameStarted dans la classe Horror.Menu n'existe plus quand on lance une game
|
||||
//Donc si elle existe on retourne sa valeur (qui est false)
|
||||
//Et si elle existe pas (donc si on est ingame) on retourne true
|
||||
try
|
||||
Il2Cpp.OptionsHelpers optionsHelpers = UnityEngine.Object.FindObjectOfType<Il2Cpp.OptionsHelpers>();
|
||||
return optionsHelpers.inGame;
|
||||
}
|
||||
|
||||
public static bool IsInGameOrLobby()
|
||||
{
|
||||
return GetPlayer() != null;
|
||||
}
|
||||
|
||||
public static Il2Cpp.NolanBehaviour GetPlayer()
|
||||
{
|
||||
if (Entities.LocalPlayer_.p_GameObject == null)
|
||||
{
|
||||
Horror.Menu menu_class = UnityEngine.ScriptableObject.FindObjectOfType<Horror.Menu>();
|
||||
return menu_class.gameStarted;
|
||||
return null!;
|
||||
}
|
||||
catch
|
||||
|
||||
return Entities.LocalPlayer_.p_GameObject.GetComponent<Il2Cpp.NolanBehaviour>();
|
||||
}
|
||||
|
||||
public static bool IsPlayerCrawling()
|
||||
{
|
||||
Il2Cpp.NolanBehaviour nb = Player.GetPlayer();
|
||||
|
||||
if (nb == null)
|
||||
{
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
return nb.IsCrawling();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class Entities
|
||||
{
|
||||
public static int MAX_PLAYERS = 4; //will change by calling CreateCustomizedLobby
|
||||
|
||||
public static BasePlayer LocalPlayer_ = new BasePlayer();
|
||||
public static BasePlayer[] Players = default!;
|
||||
public static Il2Cpp.GoatBehaviour[] GoatsAndRats = default!;
|
||||
public static Il2Cpp.SurvivalInteractable[] SurvivalInteractables = default!;
|
||||
public static Il2Cpp.KeyBehaviour[] Keys = default!;
|
||||
public static Il2Cpp.SurvivalDemonBehaviour[] Demons = default!;
|
||||
public static Il2Cpp.SpiderBehaviour[] Spiders = default!;
|
||||
public static Il2Cpp.GhostBehaviour[] Ghosts = default!;
|
||||
public static Il2Cpp.SurvivalAzazelBehaviour[] Azazels = default!;
|
||||
public static Il2Cpp.BoarBehaviour[] Boars = default!;
|
||||
public static Il2Cpp.CorpseBehaviour[] Corpses = default!;
|
||||
|
||||
public static IEnumerator GetLocalPlayer()
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
GameObject[] currentPlayers = GameObject.FindGameObjectsWithTag("Player");
|
||||
|
||||
for (int i = 0; i < currentPlayers.Length; i++)
|
||||
{
|
||||
if (currentPlayers[i].GetComponent<Il2Cpp.NolanBehaviour>().entity.IsOwner)
|
||||
{
|
||||
LocalPlayer_.p_GameObject = currentPlayers[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Wait 5 seconds before caching objects again.
|
||||
yield return new WaitForSeconds(5f);
|
||||
}
|
||||
}
|
||||
|
||||
public static IEnumerator GetAllPlayers()
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
GameObject[] players = GameObject.FindGameObjectsWithTag("Player");
|
||||
Players = new BasePlayer[players.Length];
|
||||
|
||||
int i = 0;
|
||||
foreach (GameObject p in players)
|
||||
{
|
||||
string player_name = "";
|
||||
string player_id = "-1";
|
||||
|
||||
Il2Cpp.DissonancePlayerTracking dpt = p.gameObject.GetComponent<Il2Cpp.DissonancePlayerTracking>();
|
||||
if (dpt != null)
|
||||
{
|
||||
player_name = dpt.state.PlayerName;
|
||||
player_id = dpt.state.PlayerId;
|
||||
}
|
||||
|
||||
if (Players[i] == null)
|
||||
{
|
||||
Players[i] = new BasePlayer();
|
||||
}
|
||||
|
||||
Players[i].Id = player_id;
|
||||
Players[i].Name = player_name;
|
||||
Players[i].p_GameObject = p;
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
|
||||
// Wait 5 seconds before caching objects again.
|
||||
yield return new WaitForSeconds(5f);
|
||||
}
|
||||
}
|
||||
public static IEnumerator GetGoatsAndRats()
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
GoatsAndRats = Il2Cpp.GoatBehaviour.FindObjectsOfType<Il2Cpp.GoatBehaviour>();
|
||||
|
||||
// Wait 5 seconds before caching objects again.
|
||||
yield return new WaitForSeconds(5f);
|
||||
}
|
||||
}
|
||||
|
||||
public static IEnumerator GetSurvivalInteractables()
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
SurvivalInteractables = Il2Cpp.SurvivalInteractable.FindObjectsOfType<Il2Cpp.SurvivalInteractable>();
|
||||
|
||||
// Wait 5 seconds before caching objects again.
|
||||
yield return new WaitForSeconds(5f);
|
||||
}
|
||||
}
|
||||
|
||||
public static IEnumerator GetKeys()
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
Keys = Il2Cpp.KeyBehaviour.FindObjectsOfType<Il2Cpp.KeyBehaviour>();
|
||||
|
||||
// Wait 5 seconds before caching objects again.
|
||||
yield return new WaitForSeconds(5f);
|
||||
}
|
||||
}
|
||||
|
||||
public static IEnumerator GetDemons()
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
Demons = Il2Cpp.SurvivalDemonBehaviour.FindObjectsOfType<Il2Cpp.SurvivalDemonBehaviour>();
|
||||
|
||||
// Wait 5 seconds before caching objects again.
|
||||
yield return new WaitForSeconds(5f);
|
||||
}
|
||||
}
|
||||
|
||||
public static IEnumerator GetSpiders()
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
Spiders = Il2Cpp.SpiderBehaviour.FindObjectsOfType<Il2Cpp.SpiderBehaviour>();
|
||||
|
||||
// Wait 5 seconds before caching objects again.
|
||||
yield return new WaitForSeconds(5f);
|
||||
}
|
||||
}
|
||||
|
||||
public static IEnumerator GetGhosts()
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
Ghosts = Il2Cpp.GhostBehaviour.FindObjectsOfType<Il2Cpp.GhostBehaviour>();
|
||||
|
||||
// Wait 5 seconds before caching objects again.
|
||||
yield return new WaitForSeconds(5f);
|
||||
}
|
||||
}
|
||||
|
||||
public static IEnumerator GetBoars()
|
||||
{
|
||||
for (; ; )
|
||||
{
|
||||
Boars = Il2Cpp.BoarBehaviour.FindObjectsOfType<Il2Cpp.BoarBehaviour>();
|
||||
|
||||
// Wait 5 seconds before caching objects again.
|
||||
yield return new WaitForSeconds(5f);
|
||||
}
|
||||
}
|
||||
|
||||
public static IEnumerator GetCorpses()
|
||||
{
|
||||
for (; ; )
|
||||
{
|
||||
Corpses = Il2Cpp.CorpseBehaviour.FindObjectsOfType<Il2Cpp.CorpseBehaviour>();
|
||||
|
||||
// Wait 5 seconds before caching objects again.
|
||||
yield return new WaitForSeconds(5f);
|
||||
}
|
||||
}
|
||||
|
||||
public static IEnumerator GetAzazels()
|
||||
{
|
||||
/*
|
||||
* ikr AzazelS, because in case we spawn multiple we want the esp to render all of them
|
||||
*/
|
||||
for (;;)
|
||||
{
|
||||
Azazels = Il2Cpp.SurvivalAzazelBehaviour.FindObjectsOfType<Il2Cpp.SurvivalAzazelBehaviour>();
|
||||
|
||||
// Wait 5 seconds before caching objects again.
|
||||
yield return new WaitForSeconds(5f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
123
DevourClient/Hooks/Hooks.cs
Normal file
123
DevourClient/Hooks/Hooks.cs
Normal file
@@ -0,0 +1,123 @@
|
||||
using HarmonyLib;
|
||||
using DevourClient;
|
||||
|
||||
namespace DevourClient.Hooks
|
||||
{
|
||||
public class Hooks
|
||||
{
|
||||
[HarmonyPatch(typeof(Il2Cpp.NolanBehaviour), "OnAttributeUpdateValue")]
|
||||
static class NolanBehaviour_UV
|
||||
{
|
||||
[HarmonyPrefix]
|
||||
static void Prefix(ref Il2CppOpsive.UltimateCharacterController.Traits.Attribute attribute)
|
||||
{
|
||||
if (Load.unlimitedUV && attribute.m_Name == "Battery")
|
||||
{
|
||||
attribute.m_Value = 100.0f;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[HarmonyPatch(typeof(Il2Cpp.RankHelpers))]
|
||||
[HarmonyPatch(nameof(Il2Cpp.RankHelpers.CalculateExpGain))] //annotation boiler plate to tell Harmony what to patch. Refer to docs.
|
||||
static class RankHelpers_CalculateExpGain
|
||||
{
|
||||
static void Postfix(ref Il2Cpp.RankHelpers.ExpGainInfo __result)
|
||||
{
|
||||
if (Load.exp_modifier)
|
||||
{
|
||||
__result.totalExp = (int)Load.exp;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[HarmonyPatch(typeof(Il2CppHorror.Menu))]
|
||||
[HarmonyPatch(nameof(Il2CppHorror.Menu.SetupPerk))] //annotation boiler plate to tell Harmony what to patch. Refer to docs.
|
||||
static class Horror_Menu_SetupPerk_Patch
|
||||
{
|
||||
static void Prefix(ref Il2Cpp.CharacterPerk perk)
|
||||
{
|
||||
/*
|
||||
public int cost { get; set; }
|
||||
public bool isOwned { get; set; }
|
||||
public bool isHidden { get; set; }
|
||||
*/
|
||||
|
||||
//MelonLoader.MelonLogger.Msg("cost : " + perk.cost);
|
||||
//MelonLoader.MelonLogger.Msg("isOwned : " + perk.isOwned);
|
||||
//MelonLoader.MelonLogger.Msg("isHidden : " + perk.isHidden);
|
||||
perk.cost = 0;
|
||||
perk.isOwned = true;
|
||||
perk.isHidden = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
[HarmonyPatch(typeof(Il2CppHorror.Menu))]
|
||||
[HarmonyPatch(nameof(Il2CppHorror.Menu.SetupOutfit))] //annotation boiler plate to tell Harmony what to patch. Refer to docs.
|
||||
static class Horror_Menu_SetupOutfit_Patch
|
||||
{
|
||||
static void Prefix(ref Il2Cpp.CharacterOutfit outfit)
|
||||
{
|
||||
/*
|
||||
public ulong currentPrice;
|
||||
public ulong basePrice;
|
||||
public bool isOwned;
|
||||
public bool isHidden;
|
||||
*/
|
||||
|
||||
//MelonLoader.MelonLogger.Msg("basePrice : " + outfit.basePrice);
|
||||
//MelonLoader.MelonLogger.Msg("currentPrice : " + outfit.currentPrice);
|
||||
//MelonLoader.MelonLogger.Msg("isOwned : " + outfit.isOwned);
|
||||
//MelonLoader.MelonLogger.Msg("isHidden : " + outfit.isHidden);
|
||||
outfit.basePrice = 0;
|
||||
outfit.currentPrice = 0;
|
||||
outfit.isOwned = true;
|
||||
outfit.isHidden = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
[HarmonyPatch(typeof(Il2Cpp.OptionsHelpers))]
|
||||
[HarmonyPatch(nameof(Il2Cpp.OptionsHelpers.IsRobeUnlocked))] //annotation boiler plate to tell Harmony what to patch. Refer to docs.
|
||||
static class OptionsHelpers_IsRobeUnlocked_Patch
|
||||
{
|
||||
static bool Prefix(ref string robe)
|
||||
{
|
||||
//MelonLoader.MelonLogger.Msg("robe : " + robe);
|
||||
|
||||
robe = "Default";
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
[HarmonyPatch(typeof(Il2CppHorror.Menu))]
|
||||
[HarmonyPatch(nameof(Il2CppHorror.Menu.SetupFlashlight))] //annotation boiler plate to tell Harmony what to patch. Refer to docs.
|
||||
static class Horror_Menu_SetLocked_Patch
|
||||
{
|
||||
static void Prefix(Il2Cpp.CharacterFlashlight flashlight)
|
||||
{
|
||||
/*
|
||||
public bool isHidden { get; set; }
|
||||
public int cost { get; set; }
|
||||
public bool requiresPurchase { get; set; }
|
||||
public bool isOwned { get; set; }
|
||||
*/
|
||||
|
||||
//MelonLoader.MelonLogger.Msg("isHidden : " + flashlight.isHidden);
|
||||
//MelonLoader.MelonLogger.Msg("cost : " + flashlight.cost);
|
||||
//MelonLoader.MelonLogger.Msg("requiresPurchase : " + flashlight.requiresPurchase);
|
||||
//MelonLoader.MelonLogger.Msg("isOwned : " + flashlight.isOwned);
|
||||
|
||||
flashlight.isHidden = false;
|
||||
flashlight.cost = 0;
|
||||
flashlight.requiresPurchase = false;
|
||||
flashlight.isOwned = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,17 +1,10 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.Versioning;
|
||||
using MelonLoader;
|
||||
|
||||
[assembly: MelonInfo(typeof(DevourClient.Load), "DevourClient", "1.0", "ALittlePatate")]
|
||||
[assembly: MelonGame(null, null)]
|
||||
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyCompany("DevourClient")]
|
||||
[assembly: AssemblyConfiguration("Release")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
[assembly: AssemblyInformationalVersion("1.0.0")]
|
||||
[assembly: AssemblyProduct("DevourClient")]
|
||||
[assembly: AssemblyTitle("DevourClient")]
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("DevourClient")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("DevourClient")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("DevourClient")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
@@ -10,7 +10,30 @@ namespace DevourClient.Settings
|
||||
public static float x = 0;
|
||||
public static float y = 0;
|
||||
public static Color flashlight_color = new Color(1.00f, 1.00f, 1.00f, 1);
|
||||
public static Color player_esp_color = new Color(0.00f, 1.00f, 0.00f, 1);
|
||||
public static Color azazel_esp_color = new Color(1.00f, 0.00f, 0.00f, 1);
|
||||
public static float speed = 1f;
|
||||
public const string message_to_spam = "Deez Nutz";
|
||||
public static KeyCode flyKey = KeyCode.None;
|
||||
public static Vector2 itemsScrollPosition = Vector2.zero;
|
||||
public static Vector2 rituelObjectsScrollPosition = Vector2.zero;
|
||||
public static Vector2 stuffsScrollPosition = Vector2.zero;
|
||||
|
||||
public static KeyCode GetKey()
|
||||
{
|
||||
Thread.Sleep(50); //TOFIX tried using anyKeydown, no success
|
||||
foreach (KeyCode vkey in System.Enum.GetValues(typeof(KeyCode)))
|
||||
{
|
||||
if (Input.GetKey(vkey))
|
||||
{
|
||||
if (vkey != KeyCode.Delete)
|
||||
{
|
||||
return vkey;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return KeyCode.None;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
// <autogenerated />
|
||||
using System;
|
||||
using System.Reflection;
|
||||
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
|
||||
Binary file not shown.
Binary file not shown.
109
README.md
109
README.md
@@ -1,38 +1,63 @@
|
||||
# Unknowncheats thread [here](https://www.unknowncheats.me/forum/other-fps-games/475950-devour-multihack-update.html)
|
||||
|
||||
# DevourClient
|
||||
|
||||
I wasn't home for 2 days so i made that, i learnt a lot about C# programming and about Unity IL2CPP game hacking.
|
||||
DevourClient is a rather uncommon cheat for Devour, i've seen multiple cheats for this game but they all had some boring features such as ESP and stuff.
|
||||
This cheat hasn't many features and some of them may broke with the time, but hey, spaming the chat with "Deez Nutz" is funny.
|
||||
Also don't mind french comments lol, google translate is your friend !
|
||||
|
||||
ps : my computer was really bad so i couldn't do a lot of testing in game because it required too much time to load
|
||||
Very based cheat for the game Devour.
|
||||
|
||||
## Detection rate
|
||||
|
||||
Well at this point i don't really know, i think there is some sort of native Unity anti cheat template but it doesn't seem active. You're fine, no anti cheat !
|
||||
|
||||
## Menu
|
||||

|
||||
|
||||
## Features
|
||||
Everything about spoofing ehre (steam name, server name, level...) will persist if you don't uncheck it (it will be reseted when you'll restart the game obv).
|
||||
* An IMGUI menu thanks to UnityEngine
|
||||
* Fully compatible with the new IL2CPP version of the game
|
||||
* Detects if you're in game (with bad code lol), so no chances of crashing on main menu by activating features
|
||||
* Detects the map you are playing on (useful for the instant win)
|
||||
* Big Flashlight (allows your flashlight to light a lot more)
|
||||
* Flashlight color customization (with a home made color picker)
|
||||
* Unlimited UV light (thanks to [@jadis0x](https://github.com/jadis0x))
|
||||
* A chat spammer for Lobby and InGame chat (i couldn't do a text entry because of the limitations of [Il2CppAssemblyUnhollower](https://github.com/knah/Il2CppAssemblyUnhollower))
|
||||
* Achievements unlocker (couldn't do all of them, my code is crashing for some reasons at some point, i may fix it, for now it's commented out)
|
||||
* Doors unlocker (should work fine, though it doesn't seem to work sometimes)
|
||||
* Keys teleporter (broken, works sometimes but doesn't TP all the keys for some reasons)
|
||||
* LV 70 (puts you to the max level of the game !)
|
||||
* Keys teleporter
|
||||
* LV spoofer
|
||||
* Steam name spoofer (sets it to "patate", again no input text :/)
|
||||
* Server name spoofer (sets it to "patate on top !", again no input text :/)
|
||||
* Fly
|
||||
* Unlock all, including flashlights, perks, outfits. Active by default, can't be turned off, no persistance.
|
||||
* Instant Win (allows you to win instantaniously on any map, works in singleplayer, but not as a client. May be working as host)
|
||||
* Random Sound (make your character play a random acting sound)
|
||||
* Always carrying a medkit
|
||||
* Change your exp at the end of the game, changing it is permanant !
|
||||
* Player ESP (with a home made color picker)
|
||||
* Player skeleton ESP
|
||||
* Player snaplines (with a home made color picker)
|
||||
* Azazel ESP (with a home made color picker)
|
||||
* Azazel Skeleton ESP
|
||||
* Azazel snapline (with a home made color picker)
|
||||
* Item ESP
|
||||
* Demon ESP
|
||||
* Goat/Rat ESP
|
||||
* TP all the items to your position ! (thanks to [@jadis0x](https://github.com/jadis0x))
|
||||
* Spawn any item/entity to your position
|
||||
* Walk in the lobby
|
||||
* Change the player's speed
|
||||
* Fullbright
|
||||
* Create a lobby with no player limit
|
||||
|
||||
## Installation
|
||||
For my French fellas out there, 1tap2times made a French video tutorial for the installation of the Mod : [link](https://vimeo.com/789315436)<br>
|
||||
For my German friends, KiwiJuice02 made a german video tutorial right here : [link](https://www.youtube.com/watch?v=Ntablvo6y-I)<br>
|
||||
In order to get all of this working you need to generate the DevourClient.dll file by building the source code.
|
||||
|
||||
0. Download the release version or build it from source.
|
||||
1. Install [MelonLoader](https://github.com/LavaGang/MelonLoader/releases/tag/v0.4.3) to Devour.
|
||||
2. Start your game. A cmd should appear, don't close it, MelonLoader is installing and decompiling Devour's game assemblies.
|
||||
3. Wait for the process to finish, once it's done close the game.
|
||||
4. Put the DevourClient.dll file inside `C:\Program Files (x86)\Steam\steamapps\common\Devour\Mods` folder.
|
||||
5. Start the game, now you have successfully installed DevourClient. Use INSERT to open the menu
|
||||
0. Install [.NET 6 SDK and runtime](https://dotnet.microsoft.com/en-us/download/dotnet/6.0).
|
||||
1. [Build the cheat from source](https://github.com/ALittlePatate/DevourClient#building-from-source).
|
||||
2. Put the DevourClient.dll file located in `DevourClient\bin\Release\net6.0` inside `C:\Program Files (x86)\Steam\steamapps\common\Devour\Mods` folder.
|
||||
3. Start the game, now you have successfully installed DevourClient. Use INSERT to open the menu
|
||||
|
||||
## Uninstallation
|
||||
|
||||
@@ -40,29 +65,40 @@ Well at this point i don't really know, i think there is some sort of native Uni
|
||||
|
||||
## Building from source
|
||||
|
||||
0. Clone the repository
|
||||
1. Install MelonLoader (see Installation)
|
||||
2. Open the solution file in Visual Studio (i used 2019, i don't know about the compatibility with the other versions)
|
||||
3. Go to : Project --> Add a reference --> Browse --> Click on the browse button in the down right corner of the window.
|
||||
4. Add those files :
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\MelonLoader.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\UnityEngine.IMGUIModule.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\UnityEngine.InputLegacyModule.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\bolt.user.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\bolt.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\UnityEngine.HotReloadModule.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\UnityEngine.UI.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\UnityEngine.CoreModule.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\Il2Cppmscorlib.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\Assembly-CSharp.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\UnityENgine.InputModule.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Dependencies\Il2CppAssemblyGenerator\Il2CppUnhollower\UnhollowerBaseLib.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Dependencies\Il2CppAssemblyGenerator\Il2CppUnhollower\UnhollowerRuntimeLib.dll`
|
||||
5. Build the solutions in Release | Any CPU mode
|
||||
0. Clone the repository (or Code -> Download Zip)
|
||||
1. Install [MelonLoader](https://github.com/LavaGang/MelonLoader/releases) V0.6.0 (go to Settings -> tick "Show ALPHA Pre-Releases") to Devour.
|
||||
2. Start your game. A cmd should appear, don't close it, MelonLoader is installing and decompiling Devour's game assemblies.
|
||||
3. Wait for the process to finish, once it's done close the game.
|
||||
4. Open the solution file (DevourClient.sln) in Visual Studio
|
||||
5. Go to : Project --> Add a reference --> Browse --> Click on the browse button in the down right corner of the window.
|
||||
6. Add those files :
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\net6\MelonLoader.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\net6\0Harmony.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\net6\Il2CppInterop.Runtime.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\Assembly-CSharp.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\Il2CppOpsive.UltimateCharacterController.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\Il2CppBehaviorDesigner.Runtime.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\Il2Cppbolt.user.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\Il2Cppbolt.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\Il2Cppmscorlib.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\UnityEngine.IMGUIModule.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\UnityEngine.InputLegacyModule.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\UnityEngine.HotReloadModule.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\UnityEngine.UI.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\UnityEngine.UIModule.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\UnityEngine.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\UnityEngine.CoreModule.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\UnityEngine.InputModule.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\Il2Cppudpkit.common.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\Il2Cppudpkit.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\Il2Cppudpkit.platform.photon.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\UnityEngine.AnimationModule.dll`
|
||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\UnityEngine.PhysicsModule.dll`
|
||||
7. Build the solutions in Release | Any CPU
|
||||
|
||||
## Contact
|
||||
|
||||
You can add me on discord at patate#1252
|
||||
You can add me on discord at patate#1252 or on the [discord server](https://discord.gg/2amMFvqjYd)
|
||||
|
||||
## Code used
|
||||
|
||||
@@ -82,9 +118,12 @@ For decompiling and looking in the source code of the game :
|
||||
For teaching me the basics about Devour game hacking, and i pasted the Key TP hack and the non working part of the Achievements Unlocker from it :
|
||||
* [DevourCheatMonoInjector](https://github.com/Glatrix/DevourCheatMonoInjector)
|
||||
|
||||
Game's last update before il2cpp :
|
||||
* https://steamdb.info/depot/1274571/history/?changeid=M:1960656865974212833
|
||||
|
||||
## Contributing
|
||||
|
||||
Open an issue or make a pull request, i'll be glad to improve my project with you !
|
||||
Open an [issue](https://github.com/ALittlePatate/DevourClient/issues/new) or make a [pull request](https://github.com/ALittlePatate/DevourClient/pulls), i'll be glad to improve my project with you !
|
||||
|
||||
## License
|
||||
|
||||
|
||||
BIN
Screenshots/menu.png
Normal file
BIN
Screenshots/menu.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 544 KiB |
28
Scripts/generate_achievements.py
Normal file
28
Scripts/generate_achievements.py
Normal file
@@ -0,0 +1,28 @@
|
||||
"""
|
||||
This file will generate a list of achievements that can be used by the Unlock.Achievements function of the cheat.
|
||||
|
||||
files :
|
||||
script.json -> all the functions/strings/data in the game, generated by https://github.com/Perfare/Il2CppDumper
|
||||
out.cs -> final list of achievements in the form : string[] achievements = { "XXX" ...};
|
||||
"""
|
||||
import json
|
||||
|
||||
# Opening JSON file
|
||||
f = open('script.json')
|
||||
data = json.load(f)
|
||||
|
||||
o = open('out.cs', 'a')
|
||||
o.write("string[] achievements = {")
|
||||
tot = 0
|
||||
for i in data['ScriptString']:
|
||||
v = i["Value"]
|
||||
if "ACH_" in v :
|
||||
o.write('"'+v+'", ')
|
||||
tot+=1
|
||||
|
||||
o.write("};")
|
||||
print(f"{tot} achievements")
|
||||
|
||||
# Closing files
|
||||
o.close()
|
||||
f.close()
|
||||
Reference in New Issue
Block a user