i have looked i dont see a fix for this...
I don't believe InteractUnit exists in 1.12.1.
Does anyone have the offset for UIParent?
Also; TLSMainTable
TLSPlayerID
TLSSlot
Last edited by alexbleks; 05-22-2015 at 06:18 AM.
does anyone know which unit descriptor to use to check if a mob has been tagged by someone?
I took mine from here
http://www.ownedcore.com/forums/worl...urce-code.html (/ [Bot] 1.12.1 WoW Bot Source Code)
I would check out this source the object structure is relatively easy to read, you need to read the descriptor and check it's value.
Code:DynamicFlags = 0x23C tagged = 0x4
Anybody has an example on C# or Delphi about calling NetClient__ProcessMessage?
not sure how many parameters should i pass.
i think clientservices can be nil. And i also have to pass Datastore, but still, i don't know in which order and if i need to make something else in the stack.
i always get wow crashing.
new(datastore);
datastore^.vTable := nil;
datastore^.Buffer := @packet[0];
datastore^.Base := 0;
datastore^.Alloc := $FFFFFFFF;
datastore^.Size := (Length(packet));
datastore^.Read := 0;
ClientServices__Recv_vanilla(nil,datastore);
dispose(datastore);
Thanks in advance.
Here is some copy-pasta for ya!
Edit: Oh, you're asking about parsing phony packets, not sending yours. I'll just leave this here in case some future reader finds it useful. I would suggest using the pointer from the code above rather than a null pointer. It absolutely does need that value in vanilla because it will read an array indexed by the opcode of the message for the handler.Code:static class Net { [UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate int SendPacketDelegate(IntPtr thisPtr, IntPtr datastorePtr); private static IntPtr ClientConnectionPtr { get { return Marshal.ReadIntPtr(new IntPtr(0xC28128)); } } public static int Send(CDataStore buffer) { if (!buffer.Complete) throw new Exception("Buffer incomplete"); var func = (SendPacketDelegate) Marshal.GetDelegateForFunctionPointer(Locator.ClientConnection__SendPacket, typeof (SendPacketDelegate)); return func(ClientConnectionPtr, buffer.UnmanagedPtr); } }
Last edited by namreeb; 06-17-2015 at 11:01 PM.
Use NetClient::HandleData it will do the DataStore job for you.
Code:procedure blah(); const NetClient__HandleData: procedure(__eax, __edx, __this: Pointer; Size: Integer; Data: Pointer; timeStamp: Cardinal) = Pointer($00537C50); ClientServices__Connection: function: Pointer = Pointer($005AB490); var data: TByteBuffer; begin data := TByteBuffer.Create(6); data.PutUInt16(SMSG_LEARNED_SPELL); data.PutUInt32(1); NetClient__HandleData(nil, nil, ClientServices__Connection(), data.WritePos, @data.Data[0], OsGetAsyncTimeMs()); data.Free(); end;
You still can't pass a null pointer for 'this'.