#ifndef __ASHITA_SERVO_H_INCLUDED__ #define __ASHITA_SERVO_H_INCLUDED__ #if defined (_MSC_VER) && (_MSC_VER >= 1020) #pragma once #endif #include #include #include #include #include "zmq.hpp" #include "G:/Code/git.ashita.atom0s.com/Ashita v3/Ashita-src/build/plugins/ADK/Ashita.h" #include "CommandParser.h" #include "Chat.hpp" plugininfo_t* g_PluginInfo = NULL; #pragma comment(lib,"libzmq.lib") struct auto_follow { unsigned int unknown_ptr; unsigned int TargetIndex; unsigned int TargetID; float DirectionX; float DirectionY; float DirectionZ; float unknown_float; // 1 -- Deals with collision (CXiCollisionActor) unsigned int unknown_ptr2; unsigned int FollowIndex; unsigned int FollowID; unsigned char CameraMode; // 0 = third-person - 1 = first-person unsigned char AutoRun; }; namespace ServoMode { enum Mode { Standby, Server, Client }; }; class Servo : IPlugin { private: IAshitaCore* m_AshitaCore; Chat::Log log; std::string me; auto_follow* StructPointer; zmq::context_t zContext; std::mutex lock; std::atomic_bool connected; std::atomic_bool follow; std::atomic_bool zoning; std::vector groups; std::thread conn; std::thread pos; std::deque buffer; std::atomic state; std::string servAddr; std::mutex lservAddr; std::string StringSub(std::string, std::string, std::string); CommandParser* cmdParse; void formatCommand(std::string* command); void SendCommand(std::string command); void RecvCommand(std::string* command); void SetState(ServoMode::Mode mode); void Sync(std::string host); void WalkTo(float x, float y); //Threads void Serv(); void ServPos(); void Client(); void Follow(); public: Servo() {} ~Servo() {} plugininfo_t GetPluginInfo(void) override; bool Initialize(IAshitaCore* ashitaCore, ILogManager* log, uint32_t dwPluginId) override; void Release(void) override; bool HandleCommand(const char* pszCommand, int nCommandType) override; bool Direct3DInitialize(IDirect3DDevice8* lpDevice) override; void Direct3DRender(void) override; 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; }; #endif //__ASHITA_SERVO_H_INCLUDED__