Показать сообщение отдельно
Старый 10.10.2011, 17:34   #453
Пользователь
 
Регистрация: 04.11.2009
Сообщений: 44
Сказал Спасибо: 57
Имеет 3 спасибок в 2 сообщенях
vahes пока неопределено
По умолчанию

Подскажите может кто сталкивался, делаю
Delphi Код:
@UNetworkHandler_MoveBackwardToLocation:= GetProcAddress(hModule,'?MoveBackwardToLocation@UNetworkHandler@@UAEXVFVector@@0@Z');
потом, как описано ранее,

Delphi Код:
procedure MoveTo(x,y,z,x1,y1,z1:single); stdcall; asm  push z1  push y1  push x1  push z  push y  push x  mov ecx, nh  call UNetworkHandler_MoveBackwardToLocation end;
все работает, только пакет на движение отправляется без последнего Dworda который указывает с клавы был сделан ввод или с мыши, на оффе это вроде прокатывает а на фришках банят.

Привожу код оригинальной ф-и с Иды, если чем-то поможет, я в ассемблере как в английском - половину понимаю, но сказать не могу
Код:
; int __stdcall UNetworkHandler__MoveBackwardToLocation(float, float, float, float, float, float)
public ?MoveBackwardToLocation@UNetworkHandler@@UAEXVFVector@@0@Z
?MoveBackwardToLocation@UNetworkHandler@@UAEXVFVector@@0@Z proc near

var_4= dword ptr -4
arg_0= dword ptr  4
arg_4= dword ptr  8
arg_8= dword ptr  0Ch
arg_C= dword ptr  10h
arg_10= dword ptr  14h
arg_14= dword ptr  18h

push    ecx
fld     [esp+4+arg_0]
push    ebx
push    ebp
push    esi
push    edi
mov     [esp+14h+var_4], ecx
call    __ftol2_sse
fld     [esp+14h+arg_4]
mov     esi, eax
call    __ftol2_sse
fld     [esp+14h+arg_8]
mov     edi, eax
call    __ftol2_sse
fld     [esp+14h+arg_C]
mov     ebx, eax
call    __ftol2_sse
fld     [esp+14h+arg_10]
mov     ebp, eax
call    __ftol2_sse
fld     [esp+14h+arg_14]
mov     [esp+14h+arg_0], eax
call    __ftol2_sse
mov     ecx, [esp+14h+var_4]
mov     ecx, [ecx+48h]
mov     edx, [ecx]
push    eax
mov     [esp+18h+arg_C], eax
mov     eax, [esp+18h+arg_0]
push    eax
push    ebp
push    ebx
push    edi
push    esi
push    0Fh
push    offset aCdddddd ; "cdddddd"
push    ecx
mov     ecx, [edx+6Ch]
call    ecx
mov     edx, [esp+38h+arg_C]
mov     eax, [esp+38h+arg_0]
mov     ecx, ds:?GNetworkLog@@3PAVFOutputDevice@@A ; FOutputDevice * GNetworkLog
push    edx
mov     edx, [ecx]
push    eax
push    ebp
push    ebx
push    edi
push    esi
push    offset aSendMovebackwa ; "(Send)MoveBackwardToLocation X:%d Y:%d "...
push    edx
call    ds:?Logf@FOutputDevice@@QAAXPBGZZ ; FOutputDevice::Logf(ushort const *,...)
add     esp, 44h
pop     edi
pop     esi
pop     ebp
pop     ebx
pop     ecx
retn    18h
?MoveBackwardToLocation@UNetworkHandler@@UAEXVFVector@@0@Z endp
vahes вне форума   Ответить с цитированием