[REL/C#] SharpHook for GTA:SA/SA:MP by adamix
|
|
adamixik |
Дата: Понедельник, 03.08.2015, 10:07 | Сообщение # 1
|
Новичок
Сообщений: 3
Статус: Offline
|
SharpHook v0.1a
Позволяет писать читы на C#, в комплекте: Интерфейсы game_sa из МТА Интерфейсы multiplayer_sa из МТА RakNet Hook и небольшая часть функций SA:MP DX Hook
В архиве необходимые библиотеки и пример https://yadi.sk/d/SyRJWEQoiEg92
Пример модуля: Код using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using GameSA; using System.IO; using System.Timers; using System.Runtime.InteropServices; using System.Threading; using Timer = System.Timers.Timer; using SharpDX.Direct3D9; using SharpDX.Windows; using SharpDX; using GameSAMP;
namespace SharpHook { public class Module : SharpHook.Interfaces.IModule { Timer tickTimer = null; bool initialized = false;
Device D3DDevice = null; CGame Game = null; CMultiplayer MP = null; SAMPFramework SAMP = null;
CPed Player = null;
Font font = null; [DllImport("user32.dll")] public static extern short GetAsyncKeyState(int vKey);
public void Main(CGame Game, CMultiplayer MP, Device D3DDevice) { this.Game = Game; this.MP = MP; this.D3DDevice = D3DDevice;
File.AppendAllText("mylog.txt", "IN MAIN!"); Game.GetSystemState(); File.AppendAllText("mylog.txt", "AFTER INIT!");
tickTimer = new Timer(100); tickTimer.Elapsed += OnTick; tickTimer.Start();
Thread thread = new Thread(WorkerThread); thread.Start();
}
public void SAMPMain(SAMPFramework SAMP) { File.AppendAllText("mylog.txt", "SAMPINited: " + SAMP.isInited);
// delayed loading for font FontDescription fontDescription = new FontDescription() { Height = 22, Italic = false, CharacterSet = FontCharacterSet.Russian, FaceName = "Arial", MipLevels = 0, OutputPrecision = FontPrecision.TrueType, PitchAndFamily = FontPitchAndFamily.Default, Quality = FontQuality.ClearType, Weight = FontWeight.Bold };
font = new Font(D3DDevice, fontDescription); // end
this.SAMP = SAMP; unsafe { SAMP.AddMessageToChat(0xFFFF0000, ToSByteString("test")); SAMP.AddClientCommand(ToSByteString("run"), CMDTEST); } }
unsafe public void CMDTEST(sbyte*o) { SAMP.AddMessageToChat(0xFFFF0000, o);
try { string s = @"using System; using GameSA; using GameSAMP; public class Script { public void s(CGame Game, CMultiplayer MP, SAMPFramework SAMP, CPed Me) { %SC%; } }"; string script = FromSByteString(o); var v = new CSScriptLibrary.Evaluator(); dynamic e = v.LoadCode(s.Replace("%SC%", script)); e.s(Game, MP, SAMP, Player); } catch(Exception e) { SAMP.AddMessageToChat(0xFFFF0000, ToSByteString(e.Message)); } }
unsafe public string FromSByteString(sbyte* s) { return new string(s); }
unsafe public sbyte* ToSByteString(string msg) { byte[] bytes = Encoding.ASCII.GetBytes(msg);
unsafe { fixed (byte* p = bytes) { sbyte* sp = (sbyte*)p; //SP is now what you want return sp; } }
} public void WorkerThread() { while (true) { if (GetAsyncKeyState(0x71) != 0) { try {
Game.GetModelInfo((uint)eVehicleTypes.VT_SULTAN).Request(true, true); CVehicle v = Game.GetPools().AddVehicle(eVehicleTypes.VT_SULTAN); CVector pos = Player.GetPosition(); v.Teleport(pos.fX + 3, pos.fY + 3, pos.fZ); v.SetVisible(true);
//CTaskComplexEnterCarAsDriver task = Game.GetTasks().CreateTaskComplexEnterCarAsDriver(v); CTaskSimpleCarSetPedInAsDriver task = Game.GetTasks().CreateTaskSimpleCarSetPedInAsDriver(v); //task.SetAsPedTask(Player, 1, true); task.SetIsWarpingPedIntoCar(); task.ProcessPed(Player); task.Destroy(); //me.Teleport(0, 0, 20);
Game.GetCheckpoints().CreateCheckpoint(1, 1, pos, pos, 5.0f, 5.0f, new GameSA.SharedUtilInternal.SColor((uint)0xFFFF0000));
System.Threading.Thread.Sleep(500); } catch(Exception e) { File.AppendAllText("exc.txt", e.ToString()); } } Thread.Sleep(10); } }
void OnTick(object sender, ElapsedEventArgs e) { if(Game.GetSystemState() == eSystemState.GS_PLAYING_GAME && !initialized) { Game.Initialize(); Game.InitLocalPlayer(); //Game.GetModelInfo(0).Request(false, true); Game.GetModelInfo(0).LoadAllRequestedModels(); Player = Game.GetPools().GetPedFromRef(1); File.AppendAllText("mylog.txt", "inited: " + Game.GetSystemState()); initialized = true; } }
public void DXBeginScene(SharpDX.Direct3D9.Device D3DDevice) {
} public void DXAfterBeginScene(SharpDX.Direct3D9.Device D3DDevice) {
}
public void DXPresent(SharpDX.Direct3D9.Device D3DDevice) {
} public void DXAfterPresent(SharpDX.Direct3D9.Device D3DDevice) {
} public void DXEndScene(SharpDX.Direct3D9.Device D3DDevice) { if (font != null) font.DrawText(null, "SharpHook работает!", 0, 0, new ColorBGRA(0.0f, 200.0f, 0.0f, 100.0f)); } public void DXAfterEndScene(SharpDX.Direct3D9.Device D3DDevice) {
} public void DXReset(SharpDX.Direct3D9.Device D3DDevice) {
} } }
Сообщение отредактировал adamixik - Понедельник, 03.08.2015, 13:12 |
|
|
|
CentiuS |
Дата: Понедельник, 03.08.2015, 12:14 | Сообщение # 2
|
Ignat Bantserov
Сообщений: 398
Статус: Offline
|
Отличное решение для кодеров C#, спасибо!
|
|
|
|
_Ando_ |
Дата: Понедельник, 03.08.2015, 12:18 | Сообщение # 3
|
Бывалый
Сообщений: 462
Статус: Offline
|
Хотел начать изучать C#, но не было подходящих примеров под самп, thanks!
Нету ни вк , ни скайпа! НЕ ВЕДИТЕСЬ НА ФЕЙКИ ВК НЕАКТИВ
Сообщение отредактировал _Ando_ - Понедельник, 03.08.2015, 23:18 |
|
|
|
|
SH4RKz |
Дата: Понедельник, 03.08.2015, 12:43 | Сообщение # 5
|
Новичок
Сообщений: 9
Статус: Offline
|
перезалей
|
|
|
|
adamixik |
Дата: Понедельник, 03.08.2015, 13:12 | Сообщение # 6
|
Новичок
Сообщений: 3
Статус: Offline
|
Пофиксил ссылку.
|
|
|
|
JasonHELP |
Дата: Понедельник, 03.08.2015, 13:19 | Сообщение # 7
|
Боец
Сообщений: 156
Статус: Offline
|
adamixik, круто, попробую что-то новенькое) За старания + твой)
Мои творения: http://cheat-master.ru/forum/83-495416-1 - Пиар CM by JasonHELP
Чего я достиг на CM: 1 ранг 10% - [Новичок] ,0 Комментариев Цвет - [Серый] [✔] 2 ранг 20% - [Любитель] ,30 Комментариев Цвет - [Серый] [✔] 3 ранг 30% - [Боец], 50 Постов Цвет - [Серый] [✔] 4 ранг 40% - [Боец], 100 Постов Цвет - [Зеленый] [✔] 5 ранг 50% - [Бывалый], 150 Постов Цвет - [Зеленый] [✔]
Сообщение отредактировал JasonHELP - Понедельник, 03.08.2015, 13:20 |
|
|
|
Jamiraque[t0wer] |
Дата: Понедельник, 03.08.2015, 20:20 | Сообщение # 8
|
Советник
Сообщений: 603
Статус: Offline
|
Ого Удачи тебе в развитии
|
|
|
|
adamixik |
Дата: Вторник, 04.08.2015, 02:52 | Сообщение # 9
|
Новичок
Сообщений: 3
Статус: Offline
|
https://yadi.sk/i/K3vLJ3oMiFcne - первая фаза реализации режима для разработчиков
|
|
|
|
FixR |
Дата: Суббота, 08.08.2015, 21:11 | Сообщение # 10
|
Новичок
Сообщений: 7
Статус: Offline
|
Как его запустить? Пробовал закинуть файл .asi и ничего.
Сообщение отредактировал FixR - Суббота, 08.08.2015, 21:51 |
|
|
|
Landstyle |
Дата: Четверг, 13.08.2015, 14:55 | Сообщение # 11
|
Боец
Сообщений: 172
Статус: Offline
|
Спасибо, тема гуд
|
|
|
|
Jamiraque[t0wer] |
Дата: Пятница, 28.08.2015, 21:48 | Сообщение # 12
|
Советник
Сообщений: 603
Статус: Offline
|
Цитата KLIONKA ( ) Лучше скрин кидай в ЛС Какой скрин?
|
|
|
|
Энибум |
Дата: Понедельник, 15.08.2016, 00:20 | Сообщение # 13
|
Новичок
Сообщений: 19
Статус: Offline
|
Он компилируется в asi ? Просто не пойму, что делают в архиве ASI файлы.
|
|
|
|