[REL/C#] SharpHook for GTA:SA/SA:MP by adamix - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Admin_Bot, Admin_Bot2  
[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
Sa1nteD Дата: Понедельник, 03.08.2015, 12:27 | Сообщение # 4
Сообщений: 2673
Статус: Offline
Очень крутая вещь
Понравилось




Материальная помощь/твой вклад в будущее(кликабельно)
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
Ого surprised
Удачи тебе в развитии wink
adamixik Дата: Вторник, 04.08.2015, 02:52 | Сообщение # 9
Новичок
Сообщений: 3
Статус: Offline
https://yadi.sk/i/K3vLJ3oMiFcne - первая фаза реализации режима для разработчиков smile
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 ()
Лучше скрин кидай в ЛС

Какой скрин? wacko
Энибум Дата: Понедельник, 15.08.2016, 00:20 | Сообщение # 13
Новичок
Сообщений: 19
Статус: Offline
Он компилируется в asi ?
Просто не пойму, что делают в архиве ASI файлы.
  • Страница 1 из 1
  • 1
Поиск:
Статистика Форума