Added ClearScript for upcoming clientside

Example code for "test.js": ```script.SendMessage('test message');```
This commit is contained in:
EntenKoeniq
2022-03-25 19:53:48 +01:00
parent 9c3aab008c
commit cfca7ad412
7 changed files with 6085 additions and 0 deletions

View File

@ -13,6 +13,8 @@
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic> <Deterministic>true</Deterministic>
<TargetFrameworkProfile /> <TargetFrameworkProfile />
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@ -39,6 +41,14 @@
<DocumentationFile>bin\Release\CoopClient.xml</DocumentationFile> <DocumentationFile>bin\Release\CoopClient.xml</DocumentationFile>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="ClearScript.Core, Version=7.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Libs\Release\scripts\ClearScript.Core.dll</HintPath>
</Reference>
<Reference Include="ClearScript.V8, Version=7.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Libs\Release\scripts\ClearScript.V8.dll</HintPath>
</Reference>
<Reference Include="LemonUI.SHVDN3, Version=1.5.1.0, Culture=neutral, processorArchitecture=AMD64"> <Reference Include="LemonUI.SHVDN3, Version=1.5.1.0, Culture=neutral, processorArchitecture=AMD64">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\Libs\Release\scripts\LemonUI.SHVDN3.dll</HintPath> <HintPath>..\Libs\Release\scripts\LemonUI.SHVDN3.dll</HintPath>
@ -81,6 +91,7 @@
<Compile Include="Entities\EntitiesThread.cs" /> <Compile Include="Entities\EntitiesThread.cs" />
<Compile Include="Entities\Player\Sync\OnFootSync.cs" /> <Compile Include="Entities\Player\Sync\OnFootSync.cs" />
<Compile Include="Entities\Player\Sync\VehicleSync.cs" /> <Compile Include="Entities\Player\Sync\VehicleSync.cs" />
<Compile Include="JavascriptHook.cs" />
<Compile Include="Main.cs" /> <Compile Include="Main.cs" />
<Compile Include="Menus\MenusMain.cs" /> <Compile Include="Menus\MenusMain.cs" />
<Compile Include="Menus\Sub\Servers.cs" /> <Compile Include="Menus\Sub\Servers.cs" />

57
Client/JavascriptHook.cs Normal file
View File

@ -0,0 +1,57 @@
using System;
using Microsoft.ClearScript.V8;
using GTA;
namespace CoopClient
{
/// <summary>
/// Don't use this!
/// </summary>
public class JavascriptHook : Script
{
private bool LoadedEngine = false;
private static V8ScriptEngine ScriptEngine;
/// <summary>
/// Don't use this!
/// </summary>
public JavascriptHook()
{
Tick += Ontick;
}
private void Ontick(object sender, EventArgs e)
{
if (!Main.MainNetworking.IsOnServer())
{
return;
}
if (!LoadedEngine)
{
ScriptEngine = new V8ScriptEngine();
LoadedEngine = true;
ScriptEngine.AddHostObject("script", new ScriptContext());
ScriptEngine.Execute(System.IO.File.ReadAllText("scripts\\test.js"));
}
}
}
/// <summary>
/// FOR JAVASCRIPT ONLY!
/// </summary>
public class ScriptContext
{
/// <summary>
/// Don't use this!
/// </summary>
public void SendMessage(string message)
{
Main.MainChat.AddMessage("JAVASCRIPT", message);
}
}
}

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.