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
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio Version 16
|
# Visual Studio Version 17
|
||||||
VisualStudioVersion = 16.0.28729.10
|
VisualStudioVersion = 17.1.32407.343
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
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
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
Debug|Mixed Platforms = Debug|Mixed Platforms
|
|
||||||
Debug|x64 = Debug|x64
|
|
||||||
Release|Any CPU = Release|Any CPU
|
Release|Any CPU = Release|Any CPU
|
||||||
Release|Mixed Platforms = Release|Mixed Platforms
|
|
||||||
Release|x64 = Release|x64
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{87349803-31DC-462A-87A3-677CD23AFBA7}.Debug|Any CPU.ActiveCfg = Debug|x64
|
{87349803-31DC-462A-87A3-677CD23AFBA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{87349803-31DC-462A-87A3-677CD23AFBA7}.Debug|Any CPU.Build.0 = Debug|x64
|
{87349803-31DC-462A-87A3-677CD23AFBA7}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{87349803-31DC-462A-87A3-677CD23AFBA7}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
|
{87349803-31DC-462A-87A3-677CD23AFBA7}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{87349803-31DC-462A-87A3-677CD23AFBA7}.Debug|Mixed Platforms.Build.0 = Debug|x64
|
{87349803-31DC-462A-87A3-677CD23AFBA7}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{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
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {99B5936A-A0A9-48E0-98C4-105DAEB535C3}
|
SolutionGuid = {CC319521-F66A-4BE0-9D8F-BD285A35C847}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|||||||
@@ -1,93 +1,15 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<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')" />
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">x64</Platform>
|
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||||
<ProjectGuid>{87349803-31DC-462A-87A3-677CD23AFBA7}</ProjectGuid>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
<OutputType>Library</OutputType>
|
<OutputType>Library</OutputType>
|
||||||
<RootNamespace>DevourClient</RootNamespace>
|
|
||||||
<AssemblyName>DevourClient</AssemblyName>
|
|
||||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
|
||||||
<FileAlignment>512</FileAlignment>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||||
<PlatformTarget>x64</PlatformTarget>
|
<WarningLevel>0</WarningLevel>
|
||||||
<DebugSymbols>true</DebugSymbols>
|
|
||||||
<DebugType>full</DebugType>
|
|
||||||
<Optimize>false</Optimize>
|
|
||||||
<OutputPath>bin\Debug\</OutputPath>
|
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
|
||||||
<PlatformTarget>x64</PlatformTarget>
|
<WarningLevel>0</WarningLevel>
|
||||||
<DebugType>pdbonly</DebugType>
|
|
||||||
<Optimize>true</Optimize>
|
|
||||||
<OutputPath>bin\Release\</OutputPath>
|
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
</PropertyGroup>
|
</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>
|
</Project>
|
||||||
@@ -1,31 +1,313 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using MelonLoader;
|
using MelonLoader;
|
||||||
using UnityEngine.UI;
|
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
|
namespace DevourClient.Hacks
|
||||||
{
|
{
|
||||||
public class Misc
|
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)
|
public static void BigFlashlight(bool reset)
|
||||||
{
|
{
|
||||||
NolanBehaviour Nolan = UnityEngine.Object.FindObjectOfType<NolanBehaviour>();
|
Il2Cpp.NolanBehaviour Nolan = Player.GetPlayer();
|
||||||
Light flashlightSpot = Nolan.flashlightSpot;
|
if (Nolan == null)
|
||||||
|
|
||||||
if (reset)
|
|
||||||
{
|
{
|
||||||
flashlightSpot.intensity = 1.5f;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Light flashlightSpot = Nolan.flashlightSpot;
|
||||||
|
if (flashlightSpot == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (reset)
|
||||||
|
{
|
||||||
|
flashlightSpot.intensity = 1.4f;
|
||||||
flashlightSpot.range = 9f;
|
flashlightSpot.range = 9f;
|
||||||
|
flashlightSpot.spotAngle = 70f;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
flashlightSpot.intensity = 1.5f;
|
flashlightSpot.intensity = 1.1f;
|
||||||
flashlightSpot.range = 200f;
|
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)
|
public static void FlashlightColor(Color color)
|
||||||
{
|
{
|
||||||
NolanBehaviour Nolan = UnityEngine.Object.FindObjectOfType<NolanBehaviour>();
|
Il2Cpp.NolanBehaviour Nolan = Player.GetPlayer();
|
||||||
Light flashlightSpot = Nolan.flashlightSpot;
|
Light flashlightSpot = Nolan.flashlightSpot;
|
||||||
|
|
||||||
flashlightSpot.color = color;
|
flashlightSpot.color = color;
|
||||||
@@ -33,12 +315,12 @@ namespace DevourClient.Hacks
|
|||||||
|
|
||||||
public static void TPKeys()
|
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 (keyBehaviour == null)
|
||||||
if (flag)
|
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -46,48 +328,185 @@ namespace DevourClient.Hacks
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void MaxRank()
|
public static void SetRank(int rank)
|
||||||
{
|
{
|
||||||
NolanRankController NolanRank = UnityEngine.Object.FindObjectOfType<NolanRankController>();
|
Il2Cpp.NolanRankController NolanRank = UnityEngine.Object.FindObjectOfType<Il2Cpp.NolanRankController>();
|
||||||
|
if (NolanRank == null)
|
||||||
NolanRank.SetRank(70);
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
NolanRank.SetRank(rank);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void MessageSpam(string message)
|
public static void MessageSpam(string message)
|
||||||
{
|
{
|
||||||
|
//TOFIX : not spamming anymore :/
|
||||||
if (Helpers.Player.IsInGame())
|
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.textChatInput.text = message;
|
||||||
game_ui_class.OnChatMessageSubmit();
|
game_ui_class.OnChatMessageSubmit();
|
||||||
}
|
}
|
||||||
else
|
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.textChatInput.text = message;
|
||||||
menu_class.OnChatMessageSubmit();
|
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()
|
public static void InstantWin()
|
||||||
{
|
{
|
||||||
Survival survival_class = UnityEngine.Object.FindObjectOfType<Survival>();
|
Il2Cpp.Survival survival_class = UnityEngine.Object.FindObjectOfType<Il2Cpp.Survival>();
|
||||||
try
|
string map_name = Map.GetMapName(Map.GetActiveScene());
|
||||||
|
|
||||||
|
if (map_name == "Menu")
|
||||||
{
|
{
|
||||||
survival_class.PlayWinEnding("InnWin");
|
return;
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
survival_class.PlayWinEnding("AsylumWin");
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
survival_class.PlayWinEnding("Win");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (map_name == "Farmhouse")
|
||||||
|
{
|
||||||
|
survival_class.PlayEnding("Win");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
survival_class.PlayEnding(map_name+"Win");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,41 +4,30 @@
|
|||||||
{
|
{
|
||||||
public static void Achievements()
|
public static void Achievements()
|
||||||
{
|
{
|
||||||
AchievementHelpers ah = UnityEngine.Object.FindObjectOfType<AchievementHelpers>();
|
Il2Cpp.AchievementHelpers ah = UnityEngine.Object.FindObjectOfType<Il2Cpp.AchievementHelpers>();
|
||||||
|
|
||||||
/*
|
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" };
|
||||||
string[] names = { "hasAchievedFusesUsed", "hasAchievedGasolineUsed", "hasAchievedNoKnockout", "hasCollectedAllPatches", "hasCollectedAllRoses",
|
|
||||||
"hasCompletedHardAsylumGame", "hasCompletedHardGame", "hasCompletedNightmareAsylumGame", "hasCompletedNightmareGame", "hasCompletedNormalGame",
|
|
||||||
"hasCompletedHardInnGamehasCompletedNightmareInnGame", "hasCollectedAllCherryBlossom", "hasAchievedEggsDestroyed", "hasCollectedAllPumpkins",
|
|
||||||
"isStatsValid", "isStatsFetched" };
|
|
||||||
|
|
||||||
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.
|
ah.Unlock(achievements[i]);
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
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]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Doors()
|
public static void Doors()
|
||||||
{
|
{
|
||||||
//Pour chaques portes, on les ouvre
|
//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();
|
doorBehaviour.Unlock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,28 +10,67 @@ namespace DevourClient.Helpers
|
|||||||
|
|
||||||
public static Color ColorPick(string title, Color color)
|
public static Color ColorPick(string title, Color color)
|
||||||
{
|
{
|
||||||
GUI.Label(new Rect(Screen.width - 120, 65, 100, 30), title);
|
GUI.Label(new Rect(Settings.Settings.x + 195, Settings.Settings.y + 70, 250, 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);
|
R = GUI.VerticalSlider(new Rect(Settings.Settings.x + 240, Settings.Settings.y + 100, 30, 90), color.r, 0f, 1f);
|
||||||
B = GUI.VerticalSlider(new Rect(Screen.width - 40, 90, 30, 100), color.b, 0f, 1f);
|
G = GUI.VerticalSlider(new Rect(Settings.Settings.x + 270, Settings.Settings.y + 100, 30, 90), color.g, 0f, 1f);
|
||||||
GUI.Label(new Rect(Screen.width - 100, 190, 30, 30), "R");
|
B = GUI.VerticalSlider(new Rect(Settings.Settings.x + 300, Settings.Settings.y + 100, 30, 90), color.b, 0f, 1f);
|
||||||
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 + 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);
|
color = new Color(R, G, B, 1);
|
||||||
GUI.color = color;
|
|
||||||
|
|
||||||
void DrawPreview(Rect position, Color color_to_draw)
|
void DrawPreview(Rect position, Color color_to_draw)
|
||||||
{
|
{
|
||||||
Texture2D texture = new Texture2D(1, 1);
|
Texture2D texture = new Texture2D(1, 1);
|
||||||
texture.SetPixel(0, 0, color);
|
texture.SetPixel(0, 0, color_to_draw);
|
||||||
texture.Apply();
|
texture.Apply();
|
||||||
GUI.skin.box.normal.background = texture;
|
GUIStyle boxStyle = new GUIStyle(GUI.skin.box);
|
||||||
GUI.Box(position, GUIContent.none);
|
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;
|
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 class Player
|
||||||
{
|
{
|
||||||
public static bool IsInGame()
|
public static bool IsInGame()
|
||||||
{
|
{
|
||||||
//Code pas très beau ici
|
Il2Cpp.OptionsHelpers optionsHelpers = UnityEngine.Object.FindObjectOfType<Il2Cpp.OptionsHelpers>();
|
||||||
//La variable gameStarted dans la classe Horror.Menu n'existe plus quand on lance une game
|
return optionsHelpers.inGame;
|
||||||
//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
|
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 null!;
|
||||||
return menu_class.gameStarted;
|
|
||||||
}
|
}
|
||||||
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;
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.CompilerServices;
|
|
||||||
using System.Runtime.Versioning;
|
|
||||||
using MelonLoader;
|
|
||||||
|
|
||||||
[assembly: MelonInfo(typeof(DevourClient.Load), "DevourClient", "1.0", "ALittlePatate")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("DevourClient")]
|
||||||
[assembly: MelonGame(null, null)]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
||||||
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: AssemblyVersion("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
|
||||||
[assembly: AssemblyCompany("DevourClient")]
|
[assembly: System.Reflection.AssemblyProductAttribute("DevourClient")]
|
||||||
[assembly: AssemblyConfiguration("Release")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("DevourClient")]
|
||||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
[assembly: AssemblyInformationalVersion("1.0.0")]
|
|
||||||
[assembly: AssemblyProduct("DevourClient")]
|
|
||||||
[assembly: AssemblyTitle("DevourClient")]
|
|
||||||
@@ -10,7 +10,30 @@ namespace DevourClient.Settings
|
|||||||
public static float x = 0;
|
public static float x = 0;
|
||||||
public static float y = 0;
|
public static float y = 0;
|
||||||
public static Color flashlight_color = new Color(1.00f, 1.00f, 1.00f, 1);
|
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 static float speed = 1f;
|
||||||
public const string message_to_spam = "Deez Nutz";
|
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.
111
README.md
111
README.md
@@ -1,38 +1,63 @@
|
|||||||
|
# Unknowncheats thread [here](https://www.unknowncheats.me/forum/other-fps-games/475950-devour-multihack-update.html)
|
||||||
|
|
||||||
# DevourClient
|
# 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.
|
Very based cheat for the game Devour.
|
||||||
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
|
|
||||||
|
|
||||||
## Detection rate
|
## 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 !
|
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
|
## 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
|
* An IMGUI menu thanks to UnityEngine
|
||||||
* Fully compatible with the new IL2CPP version of the game
|
* 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 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)
|
* Detects the map you are playing on (useful for the instant win)
|
||||||
* Big Flashlight (allows your flashlight to light a lot more)
|
* Big Flashlight (allows your flashlight to light a lot more)
|
||||||
* Flashlight color customization (with a home made color picker)
|
* 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))
|
* 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)
|
* 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)
|
* 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)
|
* Keys teleporter
|
||||||
* LV 70 (puts you to the max level of the game !)
|
* 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)
|
* 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
|
## 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.
|
0. Install [.NET 6 SDK and runtime](https://dotnet.microsoft.com/en-us/download/dotnet/6.0).
|
||||||
1. Install [MelonLoader](https://github.com/LavaGang/MelonLoader/releases/tag/v0.4.3) to Devour.
|
1. [Build the cheat from source](https://github.com/ALittlePatate/DevourClient#building-from-source).
|
||||||
2. Start your game. A cmd should appear, don't close it, MelonLoader is installing and decompiling Devour's game assemblies.
|
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. Wait for the process to finish, once it's done close the game.
|
3. Start the game, now you have successfully installed DevourClient. Use INSERT to open the menu
|
||||||
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
|
|
||||||
|
|
||||||
## Uninstallation
|
## 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
|
## Building from source
|
||||||
|
|
||||||
0. Clone the repository
|
0. Clone the repository (or Code -> Download Zip)
|
||||||
1. Install MelonLoader (see Installation)
|
1. Install [MelonLoader](https://github.com/LavaGang/MelonLoader/releases) V0.6.0 (go to Settings -> tick "Show ALPHA Pre-Releases") to Devour.
|
||||||
2. Open the solution file in Visual Studio (i used 2019, i don't know about the compatibility with the other versions)
|
2. Start your game. A cmd should appear, don't close it, MelonLoader is installing and decompiling Devour's game assemblies.
|
||||||
3. Go to : Project --> Add a reference --> Browse --> Click on the browse button in the down right corner of the window.
|
3. Wait for the process to finish, once it's done close the game.
|
||||||
4. Add those files :
|
4. Open the solution file (DevourClient.sln) in Visual Studio
|
||||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\MelonLoader.dll`
|
5. Go to : Project --> Add a reference --> Browse --> Click on the browse button in the down right corner of the window.
|
||||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\UnityEngine.IMGUIModule.dll`
|
6. Add those files :
|
||||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\UnityEngine.InputLegacyModule.dll`
|
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\net6\MelonLoader.dll`
|
||||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\bolt.user.dll`
|
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\net6\0Harmony.dll`
|
||||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\bolt.dll`
|
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\net6\Il2CppInterop.Runtime.dll`
|
||||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\UnityEngine.HotReloadModule.dll`
|
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\Assembly-CSharp.dll`
|
||||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\UnityEngine.UI.dll`
|
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\Il2CppOpsive.UltimateCharacterController.dll`
|
||||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\UnityEngine.CoreModule.dll`
|
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\Il2CppBehaviorDesigner.Runtime.dll`
|
||||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\Il2Cppmscorlib.dll`
|
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\Il2Cppbolt.user.dll`
|
||||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\Assembly-CSharp.dll`
|
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\Il2Cppbolt.dll`
|
||||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Managed\UnityENgine.InputModule.dll`
|
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\Il2Cppmscorlib.dll`
|
||||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Dependencies\Il2CppAssemblyGenerator\Il2CppUnhollower\UnhollowerBaseLib.dll`
|
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\UnityEngine.IMGUIModule.dll`
|
||||||
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Dependencies\Il2CppAssemblyGenerator\Il2CppUnhollower\UnhollowerRuntimeLib.dll`
|
* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\UnityEngine.InputLegacyModule.dll`
|
||||||
5. Build the solutions in Release | Any CPU mode
|
* `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
|
## 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
|
## Code used
|
||||||
|
|
||||||
@@ -82,10 +118,13 @@ 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 :
|
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)
|
* [DevourCheatMonoInjector](https://github.com/Glatrix/DevourCheatMonoInjector)
|
||||||
|
|
||||||
|
Game's last update before il2cpp :
|
||||||
|
* https://steamdb.info/depot/1274571/history/?changeid=M:1960656865974212833
|
||||||
|
|
||||||
## Contributing
|
## 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
|
## License
|
||||||
|
|
||||||
[GPL 3.0](https://www.gnu.org/licenses/gpl-3.0.md)
|
[GPL 3.0](https://www.gnu.org/licenses/gpl-3.0.md)
|
||||||
|
|||||||
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