Mudar posição/coordenada de algum CHAR/actor/ped/pessoa, ou CAR/carro/veículo, ou OBJECT/objeto sem interromper ações, como a animação de uma pessoa, pois a função de teletransporte do jogo faz várias coisas além de só mudar a coordenada, o que pode atrapalhar ideias, como esta.
GTA3script
Uso:
Código: Selecionar tudo
CLEO_CALL SetEntityPosSimple 0 (pEntity x y z)()
Função:
Código: Selecionar tudo
{
LVAR_INT pEntity // In
LVAR_FLOAT x y z // In
LVAR_INT pMatrix pCoord
SetEntityPosSimple:
pMatrix = pEntity + 0x14
READ_MEMORY pMatrix 4 FALSE (pMatrix)
pCoord = pMatrix + 0x30
WRITE_MEMORY pCoord 4 (x) FALSE
pCoord += 0x4 // y
WRITE_MEMORY pCoord 4 (y) FALSE
pCoord += 0x4 // z
WRITE_MEMORY pCoord 4 (z) FALSE
CLEO_RETURN 0 ()
}
Exemplo:
Código: Selecionar tudo
SCRIPT_START
{
LVAR_INT scplayer hCar pEntity
LVAR_FLOAT x y z
GET_PLAYER_CHAR 0 scplayer
main_loop:
WAIT 0
IF TEST_CHEAT GO
IF IS_CHAR_SITTING_IN_ANY_CAR scplayer
GET_CAR_CHAR_IS_USING scplayer (hCar)
GET_VEHICLE_POINTER hCar (pEntity)
GET_OFFSET_FROM_CAR_IN_WORLD_COORDS hCar 0.0 2.0 0.0 (x y z)
ELSE
GET_PED_POINTER scplayer (pEntity)
GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.0 2.0 0.0 (x y z)
ENDIF
CLEO_CALL SetEntityPosSimple 0 (pEntity x y z)()
ENDIF
GOTO main_loop
}
SCRIPT_END
{
LVAR_INT pEntity // In
LVAR_FLOAT x y z // In
LVAR_INT pMatrix pCoord
SetEntityPosSimple:
pMatrix = pEntity + 0x14
READ_MEMORY pMatrix 4 FALSE (pMatrix)
pCoord = pMatrix + 0x30
WRITE_MEMORY pCoord 4 (x) FALSE
pCoord += 0x4 // y
WRITE_MEMORY pCoord 4 (y) FALSE
pCoord += 0x4 // z
WRITE_MEMORY pCoord 4 (z) FALSE
CLEO_RETURN 0 ()
}
Sanny Builder
Código: Selecionar tudo
:SetEntityPosSimple
4@ = 0@ + 0x14
0A8D: 4@ = read_memory 4@ size 4 virtual_protect 0
5@ = 4@ + 0x30
0A8C: write_memory 5@ size 4 value 1@ virtual_protect 0
5@ += 0x4 // y
0A8C: write_memory 5@ size 4 value 2@ virtual_protect 0
5@ += 0x4 // z
0A8C: write_memory 5@ size 4 value 3@ virtual_protect 0
0AB2: ret 0
Lua
...