Цитата:
Сообщение от Elecktron
мой код рабочий
|
Жаль только, что в твоем коде на кой-то ляд используется регистр ESI и ему не восстанавливается его изначальное значение, что в некоторых случаях МОЖЕТ привести к исключению или ошибках в других частях программы. Вот именно поэтому и нужно знать ассемблер, чтобы не писать код с так называемым "непредсказуемым поведением".
И ассемблер полезно использовать там, где в нем есть необходимость, а не бездумно пихать куда попало (особенно если до конца не понимаешь как он работает), да и твой код прекрасно записывается на с++:
Код:
#define PACK_MTL 0x01
void Init()
{
ClientSocket = *(DWORD*)((DWORD)UNetworkHandler + 0x48);
true_SendPacket = *(_SendPacket*)((*(DWORD*)ClientSocket) + SendPackOffset);
}
void MoveBackwardToLocation(DWORD MoveToX,DWORD MoveToY,DWORD MoveToZ,DWORD CurrentX,DWORD CurrentY,DWORD CurrentZ)
{
true_SendPacket(ClientSocket, "cddddddd", PACK_MTL, MoveToX, MoveToY, MoveToZ, CurrentX, CurrentY, CurrentZ, 1);
}
при этом в с++ варианте код реально рабочий, универсальный, не приводит к глупым ошибкам, когда у тебя меняется маска, да и явно выглядит попроще, неправда ли?