/** * Ashita - Copyright (c) 2014 - 2016 atom0s [atom0s@live.com] * * This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to * Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. * * By using Ashita, you agree to the above license and its terms. * * Attribution - You must give appropriate credit, provide a link to the license and indicate if changes were * made. You must do so in any reasonable manner, but not in any way that suggests the licensor * endorses you or your use. * * Non-Commercial - You may not use the material (Ashita) for commercial purposes. * * No-Derivatives - If you remix, transform, or build upon the material (Ashita), you may not distribute the * modified material. You are, however, allowed to submit the modified works back to the original * Ashita project in attempt to have it added to the original project. * * You may not apply legal terms or technological measures that legally restrict others * from doing anything the license permits. * * No warranties are given. */ #ifndef __ASHITA_Repeat_H_INCLUDED__ #define __ASHITA_Repeat_H_INCLUDED__ #if defined (_MSC_VER) && (_MSC_VER >= 1020) #pragma once #endif /** * Main Ashita ADK Header * * This is the main header to include while creating Ashita v3 plugins. This header includes * various things that are useful to plugins as well as includes all the other ADK files in * a single header. Update this path to match where you have Ashita v3 installed to. */ #include "C:\Ashita3\plugins\ADK\Ashita.h" #include #include #include /** * Plugin Information * * This object holds information specific to this plugin. The CreatePluginInfo exported function * uses this object to create information about the plugin which is used internally with Ashita. * * Please note: Ashita maintains the pointer of this object! Your plugin should never try to delete * this object manually! */ using namespace std; plugininfo_t* g_PluginInfo = nullptr; /** * Main Plugin Class Instance * * The main class the plugin will expose back to Ashita when loaded. * This class must inherit from IPlugin in order to be valid! * * See ExamplePlugin.cpp for more information about the functions in this class. */ class Repeat : IPlugin, Ashita::Threading::AS_Thread { IAshitaCore* m_AshitaCore; ILogManager* m_LogManager; uint32_t m_PluginId; IDirect3DDevice8* m_Direct3DDevice; volatile bool _ispluginrunning; volatile bool doJitter; volatile bool _debug; volatile uint32_t _userdelayinms; volatile uint32_t _jitter; volatile uint32_t _maxjitter; int _tickcount; string command; public: // Constructor and Deconstructor Repeat(void); ~Repeat(void); public: // Plugin Information Callback plugininfo_t GetPluginInfo(void) override; void PrintHelp(); public: // Main Initialization and Cleanup Callbacks bool Initialize(IAshitaCore* core, ILogManager* log, uint32_t id) override; void Release(void) override; // Thread Things uint32_t ThreadEntry(void) override; // Command Parsing bool IsNumber(const char* Input); uint32_t GetArg(const char* text, std::string* buffer); // Chat Manager Callbacks bool HandleCommand(const char* command, int32_t type) override; bool HandleIncomingText(int16_t mode, const char* message, int16_t* modifiedMode, char* modifiedMessage, bool blocked) override; bool HandleOutgoingText(int32_t type, const char* message, int32_t* modifiedType, char* modifiedMessage, bool blocked) override; // Packet Manager Callbacks bool HandleIncomingPacket(uint16_t id, uint32_t size, void* data, void* modified, bool blocked) override; bool HandleOutgoingPacket(uint16_t id, uint32_t size, void* data, void* modified, bool blocked) override; // Direct3D Related Callbacks bool Direct3DInitialize(IDirect3DDevice8* device) override; void Direct3DRelease(void) override; void Direct3DPreRender(void) override; void Direct3DRender(void) override; bool Direct3DPresent(const RECT* pSourceRect, const RECT* pDestRect, HWND hDestWindowOverride, const RGNDATA* pDirtyRegion) override; bool Direct3DDrawPrimitive(D3DPRIMITIVETYPE PrimitiveType, UINT StartVertex, UINT PrimitiveCount) override; bool Direct3DDrawIndexedPrimitive(D3DPRIMITIVETYPE PrimitiveType, UINT minIndex, UINT NumVertices, UINT startIndex, UINT primCount) override; bool Direct3DDrawPrimitiveUP(D3DPRIMITIVETYPE PrimitiveType, UINT PrimitiveCount, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) override; bool Direct3DDrawIndexedPrimitiveUP(D3DPRIMITIVETYPE PrimitiveType, UINT MinVertexIndex, UINT NumVertexIndices, UINT PrimitiveCount, CONST void* pIndexData, D3DFORMAT IndexDataFormat, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) override; bool Direct3DSetRenderState(D3DRENDERSTATETYPE State, DWORD Value) override; }; #endif // __ASHITA_Repeat_H_INCLUDED__