Um Geek
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Título : Carinha que mora logo ali
Mensagens : 761
Reputação : 160
Desde : 07/03/2017
Localização : BH - MG
Link : https://gta-geek.blogspot.com.br/
Ver perfil do usuáriohttps://gta-geek.blogspot.com.br/
em Sex 02 Mar 2018, 21:49

@Junior_Djjr escreveu:

Pegue o RpClump do veículo em CVehicle+0x18 (é um ponteiro).
Chame a função 0x004C5400 enviando 2 argumentos: o nome do node e o RpClump. Provavelmente em Lua é o inverso, não sei.
Caso o tal node exista dentro do modelo, retornará um valor. É o ponteiro para o RwFrame.
RwFrame+0x40 você tem o offset X (ltm.top.x)
E pronto, +4 tem Y e +4 tem Z.

Comecei a fazer o código a abaixo com base no comentário a cima em outro post.
Nunca tinha feito algo do tipo então parei em como esta abaixo.

Codigo:

Código:


function main()
   while true do
      wait(40)
      local vehicle = getCarCharIsUsing(PLAYER_PED)
      if testCheat('PL') and vehicle ~= -1 then
         getDummiesOffsetCoords(vehicle, 'misc_a')
      end
   end
end

function getDummiesOffsetCoords(vehicle, ndummie)
   if doesVehicleExist(vehicle) then
      local Cvehicle = getCarPointer(vehicle)
      local RpClump = readMemory(Cvehicle+0x18, 4, false)
      local RwFrame = callFunction(0x004C5400, 2, 2, RpClump, ndummie)
      if RwFrame > 0 then
         local a = RwFrame + 0x04
         local offsetX = readMemory(a, 4, false)
         printStringNow('Dummie ' .. ndummie .. '~n~ Valor: ~y~' .. offsetX, 2000)
      else
         printStringNow('Dummie ~p~' .. ndummie .. ' ~w~ausente', 2000)
      end
   end
end


Comecei fazer em Lua, no entanto empaquei na parte do código a cima e o máximo que achei foi o que esta na imagem abaixo, creio que se trata de um pointer talvez.

Lua ou GTA3Script: Pegar referencia offset de dummie em veículos Dummie10

Preciso achar as posições X, Y, Z do dummie com referencia ao veiculo.

______________________________
Lua ou GTA3Script: Pegar referencia offset de dummie em veículos BAER-09

.::
Os mods que crio serão colocados no meu workshop link
Fabio
Programador - Avançado
Programador - Avançado
Mensagens : 18260
Reputação : 388
Desde : 04/05/2012
Idade : 22
Link : gtamodvicio.blogspot.com
Ver perfil do usuáriohttp://gtamodvicio.blogspot.com
em Sex 02 Mar 2018, 22:55
Você deveria somar +0x40 para ter o ltm.top.x

______________________________
Lua ou GTA3Script: Pegar referencia offset de dummie em veículos 226c0ef57f9d7520d171cbadc68b3c56
Modifico quase qualquer coisa.   :)
------------------>>>http://gtamodvicio.blogspot.com/<<<------------------
Lua ou GTA3Script: Pegar referencia offset de dummie em veículos 76561198069372249
Meu PC:
Spoiler:

Configurações PC:
*Processador: Intel Core i7 4790K 4.00GHz LGA1150
*Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
*HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
*HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
*Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
*RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
*Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
*Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
*Monitor: LG 23MP55HQ Full HD HDMI 23'
Junior_Djjr
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Censurando since 2011
Mensagens : 22701
Reputação : 727
Desde : 03/05/2012
Idade : 23
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br
em Sex 02 Mar 2018, 23:10
Somou 0x04 ao invés de 0x40.

______________________________
BMS agora em nova plataforma:
Forum.MixMods.com.br
Um Geek
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Título : Carinha que mora logo ali
Mensagens : 761
Reputação : 160
Desde : 07/03/2017
Localização : BH - MG
Link : https://gta-geek.blogspot.com.br/
Ver perfil do usuáriohttps://gta-geek.blogspot.com.br/
em Sab 03 Mar 2018, 00:57
@Fabio escreveu:Você deveria somar +0x40 para ter o ltm.top.x

@Junior_Djjr escreveu:Somou 0x04 ao invés de 0x40.

Mexi tanto que nem percebi que tinha deixado 0x04 ali, lembro que tinha retornado 0 umas das vezes, mas só consegui isto.

Código:

function getDummiesOffsetCoords(vehicle, ndummie)
   if doesVehicleExist(vehicle) then
      local Cvehicle = getCarPointer(vehicle)
      local RpClump = readMemory(Cvehicle+0x18, 4, false)
      local RwFrame = callFunction(0x004C5400, 2, 2, RpClump, ndummie)
      if RwFrame > 0 then
      
         local abc = RwFrame + 0x40
         
         local a = readMemory(abc, 4, false)
         abc = abc + 4
         local b = readMemory(abc, 4, false)
         abc = abc + 4
         local c = readMemory(abc, 4, false)
         
         printStringNow('Dummie ' .. ndummie .. '~n~ x:' .. a .. ' y:' .. b .. ' z:' .. c, 2000)
         
         --local particle = createFxSystemOnCar('puke', vehicle, a, b, c, 1)
         --playFxSystem(particle)
         --wait(2000)
         --stopFxSystem(particle)

      else
         printStringNow('Dummie ~p~' .. ndummie .. ' ~w~ausente', 2000)
      end
   end
end

Lua ou GTA3Script: Pegar referencia offset de dummie em veículos Screen26

O primeiro retornou 0 que faz sentido, já que é eixo X então esta posicionado no meio, já os valores de Y e Z não parecem estarem corretos.

______________________________
Lua ou GTA3Script: Pegar referencia offset de dummie em veículos BAER-09

.::
Os mods que crio serão colocados no meu workshop link
Fabio
Programador - Avançado
Programador - Avançado
Mensagens : 18260
Reputação : 388
Desde : 04/05/2012
Idade : 22
Link : gtamodvicio.blogspot.com
Ver perfil do usuáriohttp://gtamodvicio.blogspot.com
  • Reputação da mensagem: 100% (1 votos)
em Sab 03 Mar 2018, 00:59
Precisa usar um read memory float ou algo assim.

O resultado que está mostrando é a representação inteira do valor do float .

Spoiler:

______________________________
Lua ou GTA3Script: Pegar referencia offset de dummie em veículos 226c0ef57f9d7520d171cbadc68b3c56
Modifico quase qualquer coisa.   :)
------------------>>>http://gtamodvicio.blogspot.com/<<<------------------
Lua ou GTA3Script: Pegar referencia offset de dummie em veículos 76561198069372249
Meu PC:
Spoiler:

Configurações PC:
*Processador: Intel Core i7 4790K 4.00GHz LGA1150
*Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
*HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
*HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
*Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
*RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
*Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
*Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
*Monitor: LG 23MP55HQ Full HD HDMI 23'
Nex
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 1239
Reputação : 99
Desde : 04/03/2013
Idade : 19
Ver perfil do usuário
em Sab 03 Mar 2018, 01:03
memory.getfloat
De qualquer maneira, se printar com string.format("%f", ...) deve ficar de boas... ou talvez inicializar a variável com 0.0 deve funcionar também (?) philosoraptor
Um Geek
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Título : Carinha que mora logo ali
Mensagens : 761
Reputação : 160
Desde : 07/03/2017
Localização : BH - MG
Link : https://gta-geek.blogspot.com.br/
Ver perfil do usuáriohttps://gta-geek.blogspot.com.br/
em Sab 03 Mar 2018, 01:19
@Fabio escreveu:Precisa usar um read memory float ou algo assim.

O resultado que está mostrando é a representação inteira do valor do float .

Spoiler:

Então terei que converter este resultado, eu tinha até achado isto, como não tinha uma valor '0.0' por exemplo pensei estar errado já que não sou aprofundado nisto.

@Nex escreveu:memory.getfloat
De qualquer maneira, se printar com string.format("%f", ...) deve ficar de boas... ou talvez inicializar a variável com 0.0 deve funcionar também (?) philosoraptor

Esta função não retornou nada aqui, acho que parou o script até. estou achando que se eu estivesse fazendo em GTA3Script já teria retornado os valores como o @Junior_Djjr disse philosoraptor

______________________________
Lua ou GTA3Script: Pegar referencia offset de dummie em veículos BAER-09

.::
Os mods que crio serão colocados no meu workshop link
Nex
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 1239
Reputação : 99
Desde : 04/03/2013
Idade : 19
Ver perfil do usuário
em Sab 03 Mar 2018, 01:22
Se você setar os valores em algum lugar eles ficaram certinhos, se você formatar a string com string.format também vai mostrar os valores certos... isso só aconteceu porque o interpretador não tem informação o suficiente pra saber qual é o tipo dessas variáveis, por isso é importante inicializar variáveis!!!!!!! kidding
Junior_Djjr
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Censurando since 2011
Mensagens : 22701
Reputação : 727
Desde : 03/05/2012
Idade : 23
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br
  • Reputação da mensagem: 100% (1 votos)
em Sab 03 Mar 2018, 01:51
Eu até ia citar esse negócio de não saber o data type da variável, mas não sei Lua então preferi ficar calado Fuch That Guy

______________________________
BMS agora em nova plataforma:
Forum.MixMods.com.br
Um Geek
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Título : Carinha que mora logo ali
Mensagens : 761
Reputação : 160
Desde : 07/03/2017
Localização : BH - MG
Link : https://gta-geek.blogspot.com.br/
Ver perfil do usuáriohttps://gta-geek.blogspot.com.br/
em Sab 03 Mar 2018, 02:17
Código:

LVAR_INT scplayer vehicle fxs Cvehicle RpClump RwFrame
LVAR_FLOAT offSetX offSetY offSetZ

GET_PLAYER_CHAR 0 scplayer
GET_CAR_CHAR_IS_USING scplayer vehicle

IF DOES_VEHICLE_EXIST vehicle

    GET_VEHICLE_POINTER vehicle Cvehicle

    Cvehicle += 0x18

    READ_MEMORY Cvehicle 4 0 RpClump

    CALL_FUNCTION_RETURN 0x004C5400 2 2 "misc_a" RpClump RwFrame

    IF (RwFrame > 0)

        RwFrame += 0x40

        READ_MEMORY RwFrame 4 0 offSetX
        RwFrame += 4
        READ_MEMORY RwFrame 4 0 offSetY
        RwFrame += 4 
        READ_MEMORY RwFrame 4 0 offSetZ 

        PRINT_FORMATTED_NOW ("X:%4.2f Y:%4.2f Z:4.2f" 1500 offSetX offSetY offSetZ)

        CREATE_FX_SYSTEM_ON_CAR "jetpack" vehicle offSetX offSetY offSetZ 0 fxs
        PLAY_FX_SYSTEM fxs
        WAIT 1500
        KILL_FX_SYSTEM fxs
    ENDIF

ENDIF

Lua ou GTA3Script: Pegar referencia offset de dummie em veículos Screen27

Eu estava fazendo em lua por ser mais fácil de testar, mas em gta3script nem precisou teste badpokerface

______________________________
Lua ou GTA3Script: Pegar referencia offset de dummie em veículos BAER-09

.::
Os mods que crio serão colocados no meu workshop link
Nex
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 1239
Reputação : 99
Desde : 04/03/2013
Idade : 19
Ver perfil do usuário
em Sab 03 Mar 2018, 03:24
Testei aqui usando a memory.getfloat e funcionou de boas, mas preferi fazer assim:
Código:
local ffi = require("ffi")

function main()
   while true do
      wait(0)
      if isCharInAnyCar(PLAYER_PED) then
         local vehicle = getCarCharIsUsing(PLAYER_PED)
         if testCheat("ZX") and doesVehicleExist(vehicle) then
            local success, x, y, z = getDummyOffsetCoords(vehicle, "misc_a")
            if success then
               printStringNow(string.format("%f %f %f", x, y, z), 2000)
               local fx = createFxSystemOnCar("jetpack", vehicle, x, y, z, 0)
               playFxSystem(fx)
               wait(2000)
               killFxSystemNow(fx)
            end
         end
      end
   end
end

function getDummyOffsetCoords(vehicle, dummyName)
   if doesVehicleExist(vehicle) then
      local vehiclePtr = getCarPointer(vehicle)
      local clump = ffi.cast("int**", vehiclePtr + 0x18)
      local getFrameFromName = ffi.cast("int (*)(int*, const char*)", 0x004C5400)
      local frame = getFrameFromName(clump[0], dummyName)
      
      if frame > 0 then
         local vec3d = ffi.cast("float*", frame + 0x40)
         local x = vec3d[0]
         local y = vec3d[1]
         local z = vec3d[2]
         return true, x, y, z
      end
  end
  return false, 0.0, 0.0, 0.0
end
Um Geek
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Título : Carinha que mora logo ali
Mensagens : 761
Reputação : 160
Desde : 07/03/2017
Localização : BH - MG
Link : https://gta-geek.blogspot.com.br/
Ver perfil do usuáriohttps://gta-geek.blogspot.com.br/
  • Reputação da mensagem: 100% (2 votos)
em Sab 03 Mar 2018, 11:03
Resolvido

Problema reconhecido
@Fabio escreveu:Precisa usar um read memory float ou algo assim.

O resultado que está mostrando é a representação inteira do valor do float .

Spoiler:
______________________________________________

Solução em GTA3Script
@Junior_Djjr escreveu:Eu até ia citar esse negócio de não saber o data type da variável, mas não sei Lua então preferi ficar calado Fuch That Guy
Eu estava fazendo em lua para depois converter para gta3script, no entanto como já define o tipo de variável no começo de cada escopo nem tem este problema.

Exemplo GTA3Script
@Um Geek escreveu:
Código:

LVAR_INT scplayer vehicle fxs Cvehicle RpClump RwFrame
LVAR_FLOAT offSetX offSetY offSetZ

GET_PLAYER_CHAR 0 scplayer
GET_CAR_CHAR_IS_USING scplayer vehicle

IF DOES_VEHICLE_EXIST vehicle

    GET_VEHICLE_POINTER vehicle Cvehicle

    Cvehicle += 0x18

    READ_MEMORY Cvehicle 4 0 RpClump

    CALL_FUNCTION_RETURN 0x004C5400 2 2 "misc_a" RpClump RwFrame

    IF (RwFrame > 0)

        RwFrame += 0x40

        READ_MEMORY RwFrame 4 0 offSetX
        RwFrame += 4
        READ_MEMORY RwFrame 4 0 offSetY
        RwFrame += 4  
        READ_MEMORY RwFrame 4 0 offSetZ  

        PRINT_FORMATTED_NOW ("X:%4.2f Y:%4.2f Z:%4.2f" 1500 offSetX offSetY offSetZ)

        CREATE_FX_SYSTEM_ON_CAR "jetpack" vehicle offSetX offSetY offSetZ 0 fxs
        PLAY_FX_SYSTEM fxs
        WAIT 1500
        KILL_FX_SYSTEM fxs
    ENDIF

ENDIF

Exemplo Lua
@Nex escreveu:Testei aqui usando a memory.getfloat e funcionou de boas, mas preferi fazer assim:
Código:

local ffi = require("ffi")

function main()
   while true do
      wait(0)
      if isCharInAnyCar(PLAYER_PED) then
         local vehicle = getCarCharIsUsing(PLAYER_PED)
         if testCheat("ZX") and doesVehicleExist(vehicle) then
            local success, x, y, z = getDummyOffsetCoords(vehicle, "misc_a")
            if success then
               printStringNow(string.format("%f %f %f", x, y, z), 2000)
               local fx = createFxSystemOnCar("jetpack", vehicle, x, y, z, 0)
               playFxSystem(fx)
               wait(2000)
               killFxSystemNow(fx)
            end
         end
      end
   end
end

function getDummyOffsetCoords(vehicle, dummyName)
   if doesVehicleExist(vehicle) then
      local vehiclePtr = getCarPointer(vehicle)
      local clump = ffi.cast("int**", vehiclePtr + 0x18)
      local getFrameFromName = ffi.cast("int (*)(int*, const char*)", 0x004C5400)
      local frame = getFrameFromName(clump[0], dummyName)
      
      if frame > 0 then
         local vec3d = ffi.cast("float*", frame + 0x40)
         local x = vec3d[0]
         local y = vec3d[1]
         local z = vec3d[2]
         return true, x, y, z
      end
  end
  return false, 0.0, 0.0, 0.0
end

Esta pode ter sido a solução  philosoraptor
Código:

local vec3d = ffi.cast("float*", frame + 0x40)

Já puxar os números em float, avançado para quem não sabe como usar ffi, mas a função pode ser bem útil a quem quiser fazer em lua.
Como a ideia  era fazer em lua e depois converter para gta3script não é bem o caso


___________
Vlw quem ajudou, se eu tivesse feito já em gta3script nem precisaria de pedir ajuda  facepalm

______________________________
Lua ou GTA3Script: Pegar referencia offset de dummie em veículos BAER-09

.::
Os mods que crio serão colocados no meu workshop link
Nex
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 1239
Reputação : 99
Desde : 04/03/2013
Idade : 19
Ver perfil do usuário
em Sab 03 Mar 2018, 15:26
É só aprender C, a FFI é só uma interface. :)
Um Geek
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Título : Carinha que mora logo ali
Mensagens : 761
Reputação : 160
Desde : 07/03/2017
Localização : BH - MG
Link : https://gta-geek.blogspot.com.br/
Ver perfil do usuáriohttps://gta-geek.blogspot.com.br/
em Sab 03 Mar 2018, 16:27
@Nex escreveu:É só aprender C, a FFI é só uma interface. :)

Achei bem interessante isto de usar ffi, pena que sei bem pouco de C, quando eu terminar o que estou fazendo vou mesmo ver um pouco mais sobre o que o lua tem.
Código:

function main()
  while true do
    wait(40)
 if testCheat('HY') then
 ffi.cdef[[int MessageBoxA(void *w, const char *txt, const char *cap, int type);]]
 local x, y, z = getCharCoordinates(PLAYER_PED)
 ffi.C.MessageBoxA(nil, "Coordenadas do CJ \n" .. string.format('%4.2f %4.2f %4.2f',  x, y, z), "GTA SA Mensagem", 0)
 end
  end
end

incluindo achei o projeto luacheia e vi que tem coisas interessantes nele tipo uso de sqlite.

______________________________
Lua ou GTA3Script: Pegar referencia offset de dummie em veículos BAER-09

.::
Os mods que crio serão colocados no meu workshop link
Fabio
Programador - Avançado
Programador - Avançado
Mensagens : 18260
Reputação : 388
Desde : 04/05/2012
Idade : 22
Link : gtamodvicio.blogspot.com
Ver perfil do usuáriohttp://gtamodvicio.blogspot.com
em Sab 03 Mar 2018, 22:26
@Nex escreveu:Se você setar os valores em algum lugar eles ficaram certinhos, se você formatar a string com string.format também vai mostrar os valores certos... isso só aconteceu porque o interpretador não tem informação o suficiente pra saber qual é o tipo dessas variáveis, por isso é importante inicializar variáveis!!!!!!! kidding

Lua muda os tipos das variáveis quando você seta elas se bem me lembro. philosoraptor

______________________________
Lua ou GTA3Script: Pegar referencia offset de dummie em veículos 226c0ef57f9d7520d171cbadc68b3c56
Modifico quase qualquer coisa.   :)
------------------>>>http://gtamodvicio.blogspot.com/<<<------------------
Lua ou GTA3Script: Pegar referencia offset de dummie em veículos 76561198069372249
Meu PC:
Spoiler:

Configurações PC:
*Processador: Intel Core i7 4790K 4.00GHz LGA1150
*Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
*HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
*HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
*Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
*RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
*Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
*Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
*Monitor: LG 23MP55HQ Full HD HDMI 23'
Nex
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 1239
Reputação : 99
Desde : 04/03/2013
Idade : 19
Ver perfil do usuário
em Dom 04 Mar 2018, 00:21
deve ser isso mesmo
Um Geek
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Título : Carinha que mora logo ali
Mensagens : 761
Reputação : 160
Desde : 07/03/2017
Localização : BH - MG
Link : https://gta-geek.blogspot.com.br/
Ver perfil do usuáriohttps://gta-geek.blogspot.com.br/
em Dom 04 Mar 2018, 11:33
↑ Eu havia testado,  parece que só colocava  uma virgula e umas casas atras do numero, tipo

Código:

local float = 0.0
-- ficava
-12345.0

Única maneira que deu certo mesmo foi puxar o numero já em float  como fez e setar na variável.

______________________________
Lua ou GTA3Script: Pegar referencia offset de dummie em veículos BAER-09

.::
Os mods que crio serão colocados no meu workshop link
Fabio
Programador - Avançado
Programador - Avançado
Mensagens : 18260
Reputação : 388
Desde : 04/05/2012
Idade : 22
Link : gtamodvicio.blogspot.com
Ver perfil do usuáriohttp://gtamodvicio.blogspot.com
em Dom 04 Mar 2018, 16:25
@Um Geek escreveu:↑ Eu havia testado,  parece que só colocava  uma virgula e umas casas atras do numero, tipo

Código:

local float = 0.0
-- ficava
-12345.0

Única maneira que deu certo mesmo foi puxar o numero já em float  como fez e setar na variável.

É normal, porque ele reconhecia o valor do readmemory como um inteiro, então ele fazia a conversão do número em inteiro para float.

______________________________
Lua ou GTA3Script: Pegar referencia offset de dummie em veículos 226c0ef57f9d7520d171cbadc68b3c56
Modifico quase qualquer coisa.   :)
------------------>>>http://gtamodvicio.blogspot.com/<<<------------------
Lua ou GTA3Script: Pegar referencia offset de dummie em veículos 76561198069372249
Meu PC:
Spoiler:

Configurações PC:
*Processador: Intel Core i7 4790K 4.00GHz LGA1150
*Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
*HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
*HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
*Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
*RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
*Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
*Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
*Monitor: LG 23MP55HQ Full HD HDMI 23'
Um Geek
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Título : Carinha que mora logo ali
Mensagens : 761
Reputação : 160
Desde : 07/03/2017
Localização : BH - MG
Link : https://gta-geek.blogspot.com.br/
Ver perfil do usuáriohttps://gta-geek.blogspot.com.br/
em Qua 28 Mar 2018, 14:35
Revivendo tópico por 2 motivos sec

Motivo I
A função para moonloader estava dando erro em "ffi.cast" caso aplicado a muitos veiculos, então atualizei usando MoonAdditions.
Ficou assim:
Código:

local memory = require("memory")
local mad = require("MoonAdditions")

function vehicleDummyCoords(car,dummy)
   local x,y,z = 0.0,0.0,0.0
   if doesVehicleExist(car)then
      for _, component in ipairs(mad.get_all_vehicle_components(car)) do
         if component.name == dummy then
            local ptr = component:get_pointer()
            ptr = ptr + 0x40
            x = memory.getfloat(ptr,false)
            ptr = ptr + 0x4
            y = memory.getfloat(ptr,false)
            ptr = ptr + 0x4   
            z = memory.getfloat(ptr,false)
            return true,x,y,z
         end
      end
   end
   return false,x,y,z
end

Não teve problemas com floats usando esta também, mas eu tinha criado uma gambiarra para converter os números em float antes
Código:

local memory = require("memory")

function convertToFloat(v)
   local address = allocateMemory(8)
   memory.write(address,v,4,false)
   local float_out = memory.getfloat(address,false)
   freeMemory(address)
   return float_out
end

Exemplo:

Código:

local memory = require("memory")

function main()
  while true do
      wait(40)
      if testCheat("GO") then
      local gX = convertToFloat(getGameGlobal(494)) -- X_Angel_Pine
      local gY = convertToFloat(getGameGlobal(495)) -- Y_Angel_Pine
      local gZ = convertToFloat(getGameGlobal(496)) -- Z_Angel_Pine
      setCharCoordinates(PLAYER_PED,gX,gY,gZ)         
      end
  end
end
function convertToFloat(v)
   local address = allocateMemory(8)
   memory.write(address,v,4,false)
   local float_out = memory.getfloat(address,false)
   freeMemory(address)
   return float_out
end



Motivo II
É possivel mover o dummy ou parte so veiculo usando isto
Código:

local ptr = component:get_pointer()
ptr = ptr + 0x40
memory.setfloat(ptr,tox,false)

Tentei ir pondo +0x4 para ver se achava o angulo para rotacionar o dummy e não encontrei, as angulações x,y,z não estão nesta parte? I Like Trains

______________________________
Lua ou GTA3Script: Pegar referencia offset de dummie em veículos BAER-09

.::
Os mods que crio serão colocados no meu workshop link
Junior_Djjr
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Censurando since 2011
Mensagens : 22701
Reputação : 727
Desde : 03/05/2012
Idade : 23
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br
em Qua 28 Mar 2018, 18:42
As rotações são guardadas em quat, não 3D.
O correto é usar funções próprias para isso:
Código:
_rwFrameTranslate = 0x007F0E30
_rwFrameRotate = 0x007F1010
_rwFrameScale = 0x007F0ED0
_pstAxisX = 0x008D2E00
_pstAxisY = 0x008D2E0C
_pstAxisZ = 0x008D2E18
Sanny Builder:
Código:
0AC7: pCoord = var posX offset
0AA5: call _rwFrameTranslate num_params 3 pop 3 iCombine 0 pstOffset pCoord pstRwFrame pFrame
0AA5: call _rwFrameRotate num_params 4 pop 4 iCombine 1 fAngle 0.0 pstAxis _pstAxisX pstRwFrame pFrame
0AA5: call _rwFrameRotate num_params 4 pop 4 iCombine 1 fAngle 0.0 pstAxis _pstAxisY pstRwFrame pFrame
0AA5: call _rwFrameRotate num_params 4 pop 4 iCombine 1 fAngle 0.0 pstAxis _pstAxisZ pstRwFrame pFrame
0AC7: pSize = var sizeX offset
0AA5: call _rwFrameScale num_params 3 pop 3 iCombine 1 pstOffset pSize pstRwFrame pFrame
O "Combine" são diferentes modos, você entende melhor na prática (um reseta tudo, o outro adiciona etc)

______________________________
BMS agora em nova plataforma:
Forum.MixMods.com.br
Um Geek
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Título : Carinha que mora logo ali
Mensagens : 761
Reputação : 160
Desde : 07/03/2017
Localização : BH - MG
Link : https://gta-geek.blogspot.com.br/
Ver perfil do usuáriohttps://gta-geek.blogspot.com.br/
em Qui 29 Mar 2018, 14:55
Até funcionou, só não foi para onde eu queria e da forma que queria, eu testei o do eixo X

Código:

CALL_FUNCTION _rwFrameRotate /*num_params*/ 4 /*pop*/ 4 /*iCombine*/ 1 /*fAngle*/ 1.0 /*pstAxis*/ _pstAxisX /*pstRwFrame*/ rwFrame

No entanto fez foi subir ou descer, ainda assim meio torto para um lado isto parece mais complicado que parece, eu queria um movimento semelhante de uma porta philosoraptor

______________________________
Lua ou GTA3Script: Pegar referencia offset de dummie em veículos BAER-09

.::
Os mods que crio serão colocados no meu workshop link
Junior_Djjr
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Censurando since 2011
Mensagens : 22701
Reputação : 727
Desde : 03/05/2012
Idade : 23
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br
  • Reputação da mensagem: 100% (1 votos)
em Qui 29 Mar 2018, 15:41
@Um Geek escreveu:No entanto fez foi subir ou descer,  ainda assim meio torto para um lado isto parece mais complicado que parece, eu queria um movimento semelhante de uma porta philosoraptor
Rotações acontecem a partir do ponto de origem (onde fica o pivot; a origem dos eixos). Você precisa ajustar o pivot do modelo para a origem que você quer.

______________________________
BMS agora em nova plataforma:
Forum.MixMods.com.br
Um Geek
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Título : Carinha que mora logo ali
Mensagens : 761
Reputação : 160
Desde : 07/03/2017
Localização : BH - MG
Link : https://gta-geek.blogspot.com.br/
Ver perfil do usuáriohttps://gta-geek.blogspot.com.br/
em Sex 30 Mar 2018, 13:30
Deu certo,  era um errinho bobo, eu tinha colocado valores nas constantes fora da chamada do cleo call, algo assim

Código:


{
    CONST_INT pstAxisZ 0x008D2E18

    Function:
        [...]
    CLEO_RETURN 0
}


Então coloquei direto os valores em vez das constantes e funcionou, estranho que as 3 primeiras constantes funcionaram.

______________________________
Lua ou GTA3Script: Pegar referencia offset de dummie em veículos BAER-09

.::
Os mods que crio serão colocados no meu workshop link
Junior_Djjr
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Censurando since 2011
Mensagens : 22701
Reputação : 727
Desde : 03/05/2012
Idade : 23
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br
em Sex 30 Mar 2018, 15:33
Quase todo o MDPMv5 é feito assim e funcionava deboa pokerface

______________________________
BMS agora em nova plataforma:
Forum.MixMods.com.br
avatar
Programador - Intermediário
Programador - Intermediário
Mensagens : 440
Reputação : 11
Desde : 02/06/2017
Idade : 100
Localização : Unidade Federal do Leste
Link : 127.0.0.1:80
Ver perfil do usuário
em Sab 31 Mar 2018, 01:31
.

______________________________

Conteúdo patrocinado
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum