public bool ClickToMove(float x, float y, float z) { write.WriteFloat((uint)ClickToMovex.CTM_Base + (uint)ClickToMovex.CTM_X, x); write.WriteFloat((uint)ClickToMovex.CTM_Base + (uint)ClickToMovex.CTM_Y, y); write.WriteFloat((uint)ClickToMovex.CTM_Base + (uint)ClickToMovex.CTM_Z, z); write.WriteUInt((uint)ClickToMovex.CTM_Base + (uint)ClickToMovex.CTM_Action, 4); return(true); }
/// <summary> Write the coordinates and action to the memory. </summary> <param /// name="pos">Vector3 containing the X,y & Z coordinates</param> <param name="action">CTM /// Interaction to perform</param> private static void WriteXYZToMemory(Vector3 pos, InteractionType action) { const float distance = 1.5f; AmeisenLogger.Instance.Log(LogLevel.VERBOSE, $"Writing: X [{pos.X},{pos.Y},{pos.Z}] Action [{action}] Distance [{distance}]", "AmeisenCore"); BlackMagic.WriteFloat(Offsets.ctmX, (float)pos.X); BlackMagic.WriteFloat(Offsets.ctmY, (float)pos.Y); BlackMagic.WriteFloat(Offsets.ctmZ, (float)pos.Z); BlackMagic.WriteInt(Offsets.ctmAction, (int)action); BlackMagic.WriteFloat(Offsets.ctmDistance, distance); }
/// <summary> /// Going to coords/guid ///7 - подойти и полутать(Move to + Interact (OBJECT ONLY)) ///11 - Лететь и ебашить(Attack GUID pos) ///4 - лететь в координату(Walk to Assigned POS) ///6 - Loot /// </summary> /// <param name="X"></param> /// <param name="Y"></param> /// <param name="Z"></param> /// <param name="GUID"></param> /// <param name="ActionType"></param> public void GoTo(float X, float Y, float Z, UInt64 GUID, int ActionType) { uint ctmBase = (uint)ClickToMove.CTM_Base; uint ctmTurnScale = ctmBase + 0x04; uint ctmDistance = ctmBase + 0x0c; uint ctmAction = ctmBase + 0x1c; uint ctmTarget = ctmBase + 0x20; uint ctmDestinationX = ctmBase + 0x8C; uint ctmDestinationY = ctmDestinationX + 0x4; uint ctmDestinationZ = ctmDestinationY + 0x4; switch (ActionType) { case 0: wow.WriteUInt64(ctmTarget, 0); wow.WriteFloat(ctmDistance, 0f); // ctm distance wow.WriteFloat(ctmDestinationX, 0); //ctm x wow.WriteFloat(ctmDestinationY, 0); //ctm y wow.WriteFloat(ctmDestinationZ, 0); //ctm z break; case 1: wow.WriteUInt64(ctmTarget, GUID); wow.WriteFloat(ctmDistance, 30.5f); // ctm distance break; case 3: wow.WriteUInt64(ctmTarget, 0); wow.WriteFloat(ctmDistance, 30.5f); // ctm distance break; case 4: if (Abilities.AbilityStatus == "Casting") { return; } wow.WriteFloat(ctmDestinationX, X); //ctm x wow.WriteFloat(ctmDestinationY, Y); //ctm y wow.WriteFloat(ctmDestinationZ, Z); //ctm z wow.WriteFloat(ctmDistance, 0.5f); // ctm distance break; case 6: wow.WriteUInt64(ctmTarget, GUID); wow.WriteFloat(ctmDistance, 3.66666650772095f); // ctm distance break; case 7: wow.WriteUInt64(ctmTarget, GUID); wow.WriteFloat(ctmDistance, 3.66666650772095f); // ctm distance break; case 9: wow.WriteUInt64(ctmTarget, GUID); wow.WriteFloat(ctmDistance, 3.66666650772095f); // ctm distance break; case 11: if ((Abilities.AbilityStatus == "Casting") & (WowControl.ClassType == 0)) { return; } wow.WriteUInt64(ctmTarget, GUID); wow.WriteFloat(ctmDistance, 3.66666650772095f); // ctm distance break; } wow.WriteInt(ctmAction, ActionType); // ctm action }