Como define esta variable en delphi?
type float (WINAPI* GetMaxHP)();
Escrito 14 agosto 2009 - 06:30
type float (WINAPI* GetMaxHP)();
Escrito 14 agosto 2009 - 06:43
Escrito 14 agosto 2009 - 07:50
Escrito 14 agosto 2009 - 08:57
VOID CPlayer_SetMaxAP(PEntity pEntity, float amount) { if (pEntity != NULL) { __asm { mov ecx, pEntity mov esi, pEntity push amount call dword ptr [fpCPlayer_SetMaxAP] } } return; }
Procedure CPlayer_SetMaxAP(pEntity: PEntity, amount: float); begin if (pEntity <> nil) then begin asm mov ecx, pEntity mov esi, pEntity push amount call dword ptr [fpCPlayer_SetMaxAP] end; end; end;
Escrito 14 agosto 2009 - 10:28
pEMageMissile: PBYTE; bSlotNumber: BYTE *(pEMageMissile + 0x8) = bSlotNumber;
PBYTE pEChangeMode *(DWORD *)(pEChangeMode + 8) = 1;
Escrito 15 agosto 2009 - 03:35
Bueno estoy trabajando en un proyecto con unos amigos de los cuales me dieron un codigo en C y yo quiero llevar algunas partes al delphi.
Como define esta variable en delphi?
cpp
type float (WINAPI* GetMaxHP)();
float WINAPI _GetMaxHP();
function GetMaxHP(): Single;
TGetMaxHP = function (): Single; stdcall;
Escrito 15 agosto 2009 - 03:45
Ademas como define o como entiendo esta funcion en delphi
cpp
VOID CPlayer_SetMaxAP(PEntity pEntity, float amount) { if (pEntity != NULL) { __asm { mov ecx, pEntity mov esi, pEntity push amount call dword ptr [fpCPlayer_SetMaxAP] } } return; }
Yo la estoy traduciendo asi:
delphi
Procedure CPlayer_SetMaxAP(pEntity: PEntity, amount: float); begin if (pEntity <> nil) then begin asm mov ecx, pEntity mov esi, pEntity push amount call dword ptr [fpCPlayer_SetMaxAP] end; end; end;
Como puedo definer el amount... de tal manera sea lo correcto porque en delphi no existe Float...
Procedure CPlayer_SetMaxAP(pEntity: Pointer; amount: Single); begin if (pEntity <> nil) then begin asm mov ecx, pEntity mov esi, pEntity push amount call dword ptr [fpCPlayer_SetMaxAP] end; end; end;
Escrito 15 agosto 2009 - 04:28
Hay Dios, leo tutoriales de Delphi acerca de punteros pero aun sigo perdido, haber si me dan una manito y un jalon de orejas..
cpp
pEMageMissile: PBYTE; bSlotNumber: BYTE *(pEMageMissile + 0x8) = bSlotNumber;
y
cpp
PBYTE pEChangeMode *(DWORD *)(pEChangeMode + 8) = 1;
como lo puedo definier en delphi..
Gracias
PBYTE pEMageMissile; // PBYTE esta definido como BYTE* (un puntero a un BYTE) BYTE bSlotNumber; *(pEMageMissile + 0x8) = bSlotNumber;
var pEMageMissile: PBYTE; bSlotNumber: BYTE; begin PBYTE((DWORD(pEMageMissile) + $08))^:= bSlotNumber;
PBYTE pEChangeMode *(DWORD *)(pEChangeMode + 8) = 1;
var pEChangeMode: PBYTE begin PDWORD((DWORD(pEChangeMode) + 8))^:= 1;
Escrito 15 agosto 2009 - 05:49
BOOL CPlayer_IsAlive(PBYTE pEntity) { BOOL bReturn = FALSE; if (pEntity != NULL) { __asm { mov ecx, pEntity call dword ptr [fpCPlayer_IsAlive] mov bReturn, eax } } return bReturn; }
mov bReturn, eax
Escrito 15 agosto 2009 - 05:55
function CPlayer_IsAlive(PBYTE: pEntity): boolean;
Escrito 15 agosto 2009 - 05:58
typedef float (WINAPI* GetMaxHP)();
FARPROC fpCPlayer_GetMaxHP = NULL;
float CPlayer_GetMaxHP(PBYTE pEntity) { float fReturn = 0; GetMaxHP _GetMaxHP = (GetMaxHP)fpCPlayer_GetMaxHP; if (pEntity != NULL) { __asm { mov ecx, pEntity mov esi, pEntity } fReturn = _GetMaxHP(); } return fReturn; }
Escrito 15 agosto 2009 - 06:02
Pues me imagino que sería algo así:
delphi
function CPlayer_IsAlive(PBYTE: pEntity): boolean;
Saludos.
Function CPlayer_IsAlive(pEntity: PBYTE): Boolean; var bReturn: Boolean; begin bReturn := false; if (pEntity <> nil) then begin asm mov ecx, pEntity call dword ptr [fpCPlayer_IsAlive] mov bReturn, eax end; end; result := bReturn; end;
mov bReturn, eax
Escrito 15 agosto 2009 - 06:58
Muchas Gracias escafandra, nose que haria yo sin vos
A una mas
cpp
BOOL CPlayer_IsAlive(PBYTE pEntity) { BOOL bReturn = FALSE; if (pEntity != NULL) { __asm { mov ecx, pEntity call dword ptr [fpCPlayer_IsAlive] mov bReturn, eax } } return bReturn; }
en delphi tengo problemas al deinfier el boolean y que sea usado en asm...
delphi
mov bReturn, eax
como seria la definciion exacta en delphi. Gracias
function CPlayer_IsAlive(pEntity: PBYTE): boolean; var R: integer; begin Result:= FALSE; if (pEntity <> nil) then begin asm mov ecx, pEntity call dword ptr [fpCPlayer_IsAlive] mov R, eax end; end; Result:= boolean(R); end;
Escrito 15 agosto 2009 - 07:11
Disculpen, me olvide lo mas importante creo, y donde si me estoy rompiendo la cabeza..
cpp
typedef float (WINAPI* GetMaxHP)();
cpp
FARPROC fpCPlayer_GetMaxHP = NULL;
cpp
float CPlayer_GetMaxHP(PBYTE pEntity) { float fReturn = 0; GetMaxHP _GetMaxHP = (GetMaxHP)fpCPlayer_GetMaxHP; if (pEntity != NULL) { __asm { mov ecx, pEntity mov esi, pEntity } fReturn = _GetMaxHP(); } return fReturn; }
type TGetMaxHP = function (): Single; stdcall; var fpCPlayer_GetMaxHP: FARPROC; implementation function CPlayer_GetMaxHP(pEntity: PBYTE): Single; var GetMaxHP: TGetMaxHP; begin Result:= 0; GetMaxHP:= TGetMaxHP(fpCPlayer_GetMaxHP); if (pEntity <>nil) then begin asm mov ecx, pEntity mov esi, pEntity end; Result:= GetMaxHP(); end; end;
Escrito 15 agosto 2009 - 08:04