Página 1 de 1

Teleportar algo sem interromper ações

Enviado: 21 Abr 2018, 03:46
por Junior_Djjr
Descrição:
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

...