[BÁSICO] Attachar objeto ao bone (osso) do ator

    Compartilhe

    Junior_Djjr
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Título : Junior, o periquito.
    Plataforma : PC
    Mensagens : 20753
    Reputação : 590
    Idade : 21
    Localização : Ibitinga - SP
    Link : www.MixMods.com.br

    [BÁSICO] Attachar objeto ao bone (osso) do ator

    Mensagem por Junior_Djjr em Dom 06 Jul 2014, 09:32

    Primeiramente, por que usar isso ao invés do opcode 09A0:? POIS USANDO ESSA FUNÇÃO VOCÊ TERÁ ATÉ 6 MIL OBJETOS!
    Já usando aquele opcode você poderá ter somente 2, além de vários bugs

    Veja como é simples o usar essa função:

    Uso:
    Código:
    0AB1: call_scm_func @attachObjectToActorOnBone 6 actor $player_actor attach_to_object 0@ offset 0.0 0.0 0.0 on_bone 24


    Função:
    Código:
    :attachObjectToActorOnBone
    {
    0AB1: call_scm_func @attachObjectToActorOnBone 6 actor $player_actor attach_to_object 0@ offset 0.0 0.0 0.0 on_bone 24
    }
    0A96: 0@ = actor 0@ struct
    0AA6: call_method 0x532B20 struct 0@ num_params 0 pop 0 // sub_532B20
    0@ += 0x18
    0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
    0AA7: call_function 0x734A40 num_params 1 pop 1 0@ 0@ // _clumpGetFirstSkinAtomicHAnimHierarchy
    if
       0@ <> 0
    then
       0AA7: call_function 0x7C51A0 num_params 2 pop 2 5@ 0@ 5@ // _RpHAnimIDGetIndex
       0AA7: call_function 0x7C5120 num_params 1 pop 1 0@ 0@ // _RpHAnimHierarchyGetMatrixArray
       5@ *= 0x40
       005A: 5@ += 0@
       0AC7: 6@ = var 2@ offset
       0AA5: call 0x54EEF0 num_params 4 pop 4 6@ 5@ 1 6@ // _transformPoints
       0177: set_object 1@ Z_angle_to 0.0
       0A98: 1@ = object 1@ struct
       1@ += 0x14
       0A8D: 0@ = read_memory 1@ size 4 virtual_protect 0
       1@ -= 0x14
       0AA6: call_method 0x411990 struct 1@ num_params 0 pop 0 // sub_411990
       0AA6: call_method 0x59AD20 struct 0@ num_params 1 pop 0 5@ // CMatrix__copyTo
       0AA6: call_method 0x4241C0 struct 1@ num_params 1 pop 0 6@ // CPlaceable__setPosition
       1@ += 0x18
       0A8D: 7@ = read_memory 1@ size 4 virtual_protect 0
       if
           7@ <> 0
       then
           7@ += 0x4
           0A8D: 7@ = read_memory 7@ size 4 virtual_protect 0
           7@ += 0x10
           0AA6: call_method 0x59AD70 struct 0@ num_params 1 pop 0 7@ // CMatrix__copyTo
           1@ -= 0x18
           0AA6: call_method 0x532B00 struct 1@ num_params 0 pop 0 // _RwFrameUpdateObject
       else
           1@ -= 0x18
           0AA6: call_method 0x532B00 struct 1@ num_params 0 pop 0 // _RwFrameUpdateObject
       end
    else
       0AB2: ret 0
    end
    0AB2: ret 0


    Exemplo:
    Código:
    {$cleo}
    0000:

    while true
        wait 0
        0ADC:   test_cheat "OBJ"
        jf continue
        
        model.Load(1575) //1575 = drug_white.dff (data/maps/generic/multiobj.ide)
        038B: load_requested_models
        
        object.Create(0@,1575,0.0,0.0,0.0)
        object.CollisionDetection(0@,false) //tire a colisao do objeto senão vai bugar no CJ
        
        
        while 8ADC:   not test_cheat "OBJ"
            wait 0
            0AB1: call_scm_func @attachObjectToActorOnBone 6 actor $player_actor attach_to_object 0@ offset 0.0 0.0 0.0 on_bone 24
        end
    end




    //-- Função criada por Ryosuke839 e atualizada por DK

    :attachObjectToActorOnBone
    {
    0AB1: call_scm_func @attachObjectToActorOnBone 6 actor $3 attach_to_object 0@ offset 0.0 0.0 0.0 on_bone 24
    }
    0A96: 0@ = actor 0@ struct
    0AA6: call_method 0x532B20 struct 0@ num_params 0 pop 0 // sub_532B20
    0@ += 0x18
    0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
    0AA7: call_function 0x734A40 num_params 1 pop 1 0@ 0@ // _clumpGetFirstSkinAtomicHAnimHierarchy
    if
       0@ <> 0
    then
       0AA7: call_function 0x7C51A0 num_params 2 pop 2 5@ 0@ 5@ // _RpHAnimIDGetIndex
       0AA7: call_function 0x7C5120 num_params 1 pop 1 0@ 0@ // _RpHAnimHierarchyGetMatrixArray
       5@ *= 0x40
       005A: 5@ += 0@
       0AC7: 6@ = var 2@ offset
       0AA5: call 0x54EEF0 num_params 4 pop 4 6@ 5@ 1 6@ // _transformPoints
       0177: set_object 1@ Z_angle_to 0.0
       0A98: 1@ = object 1@ struct
       1@ += 0x14
       0A8D: 0@ = read_memory 1@ size 4 virtual_protect 0
       1@ -= 0x14
       0AA6: call_method 0x411990 struct 1@ num_params 0 pop 0 // sub_411990
       0AA6: call_method 0x59AD20 struct 0@ num_params 1 pop 0 5@ // CMatrix__copyTo
       0AA6: call_method 0x4241C0 struct 1@ num_params 1 pop 0 6@ // CPlaceable__setPosition
       1@ += 0x18
       0A8D: 7@ = read_memory 1@ size 4 virtual_protect 0
       if
           7@ <> 0
       then
           7@ += 0x4
           0A8D: 7@ = read_memory 7@ size 4 virtual_protect 0
           7@ += 0x10
           0AA6: call_method 0x59AD70 struct 0@ num_params 1 pop 0 7@ // CMatrix__copyTo
           1@ -= 0x18
           0AA6: call_method 0x532B00 struct 1@ num_params 0 pop 0 // _RwFrameUpdateObject
       else
           1@ -= 0x18
           0AA6: call_method 0x532B00 struct 1@ num_params 0 pop 0 // _RwFrameUpdateObject
       end
    else
       0AB2: ret 0
    end
    0AB2: ret 0
    Basta digitar "OBJ" para ver a mágica


    Na linha pra chamar a função, em "on_bone 24", você pode mudar para o número do bone que você quer


    Última edição por Junior_Djjr em Dom 06 Jul 2014, 09:56, editado 1 vez(es)


    ____________________

    Djjr is back.

    Junior_Djjr
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Título : Junior, o periquito.
    Plataforma : PC
    Mensagens : 20753
    Reputação : 590
    Idade : 21
    Localização : Ibitinga - SP
    Link : www.MixMods.com.br

    Re: [BÁSICO] Attachar objeto ao bone (osso) do ator

    Mensagem por Junior_Djjr em Dom 06 Jul 2014, 09:38

    Pessoas olham pra esse tópico e pensam "wtf q porra de script gigante, nunca vou entender isso", serio vei, até eu tenho dificuldade de entender oq tudo oq essa função faz, nao importa se vc nao entende, a função está ai aberta para o uso, unica coisa q vc irá fazer no seu script eh criar um objeto, colar essa função em algum lugar do script (lah embaixo etc), e usar a linha pra chamar a função:
    Código:
    0AB1: call_scm_func @attachObjectToActorOnBone 6 actor $player_actor attach_to_object 0@ offset 0.0 0.0 0.0 on_bone 24
    no caso, attachar o objeto da variavel 0@ no ator $player_actor (pode qualquer em qualquer pessoa) no offset 0.0 0.0 0.0 (por exemplo, deixe 0.0 0.5 0.0 para o objeto ficar mais pra "frente"), e no osso 24

    muito simples... as pessoas q se assustam e dificultam, na verdade qualquer um consegue fazer isso :)


    ____________________

    Djjr is back.

    Mak47
    Modelador - Básico
    Modelador - Básico

    Plataforma : PC,Android,PS2

    Mensagens : 171
    Reputação : 4
    Idade : 13
    Localização : West-Side

    Re: [BÁSICO] Attachar objeto ao bone (osso) do ator

    Mensagem por Mak47 em Qua 04 Jan 2017, 17:33

    Tem como attachar a qualquer ped?

    AguiaX2
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Plataforma : PC
    Mensagens : 513
    Reputação : 37
    Idade : 14
    Localização : Em algum lugar do brasil

    Re: [BÁSICO] Attachar objeto ao bone (osso) do ator

    Mensagem por AguiaX2 em Qua 04 Jan 2017, 18:47

    tem


    ____________________



    Mak47
    Modelador - Básico
    Modelador - Básico

    Plataforma : PC,Android,PS2

    Mensagens : 171
    Reputação : 4
    Idade : 13
    Localização : West-Side

    Re: [BÁSICO] Attachar objeto ao bone (osso) do ator

    Mensagem por Mak47 em Qua 04 Jan 2017, 20:15

    Como?

    Junior_Djjr
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Título : Junior, o periquito.
    Plataforma : PC
    Mensagens : 20753
    Reputação : 590
    Idade : 21
    Localização : Ibitinga - SP
    Link : www.MixMods.com.br

    Re: [BÁSICO] Attachar objeto ao bone (osso) do ator

    Mensagem por Junior_Djjr em Qua 04 Jan 2017, 20:49

    É a mesma coisa, na linha da função pede o ator (no $player_actor), é só colocar qual você quer.


    ____________________

    Djjr is back.

    Mak47
    Modelador - Básico
    Modelador - Básico

    Plataforma : PC,Android,PS2

    Mensagens : 171
    Reputação : 4
    Idade : 13
    Localização : West-Side

    Re: [BÁSICO] Attachar objeto ao bone (osso) do ator

    Mensagem por Mak47 em Qua 04 Jan 2017, 21:39

    @Junior_Djjr escreveu:É a mesma coisa, na linha da função pede o ator (no $player_actor), é só colocar qual você quer.
    Valew, vai me ajuda bastante

    Mak47
    Modelador - Básico
    Modelador - Básico

    Plataforma : PC,Android,PS2

    Mensagens : 171
    Reputação : 4
    Idade : 13
    Localização : West-Side

    Re: [BÁSICO] Attachar objeto ao bone (osso) do ator

    Mensagem por Mak47 em Sab 07 Jan 2017, 19:37

    Desculpa o double post.
    Eu testei em um ped e crashou

    Junior_Djjr
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Título : Junior, o periquito.
    Plataforma : PC
    Mensagens : 20753
    Reputação : 590
    Idade : 21
    Localização : Ibitinga - SP
    Link : www.MixMods.com.br

    Re: [BÁSICO] Attachar objeto ao bone (osso) do ator

    Mensagem por Junior_Djjr em Sab 07 Jan 2017, 19:53



    ____________________

    Djjr is back.

    Mak47
    Modelador - Básico
    Modelador - Básico

    Plataforma : PC,Android,PS2

    Mensagens : 171
    Reputação : 4
    Idade : 13
    Localização : West-Side

    Re: [BÁSICO] Attachar objeto ao bone (osso) do ator

    Mensagem por Mak47 em Dom 08 Jan 2017, 10:33

    Tá assim no scrlog(No final)

    00000075&1: [0AB1] CALL -122 6 1129126403 37890 0.0 0.0 0.0 25
    00000122&1: [0A96] GET_CHAR_POINTER 1129126403 -> 0x0
    00000130&1: [0AA6] CALL_METHOD 0x532B20 0x0 0 0

    Junior_Djjr
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Título : Junior, o periquito.
    Plataforma : PC
    Mensagens : 20753
    Reputação : 590
    Idade : 21
    Localização : Ibitinga - SP
    Link : www.MixMods.com.br

    Re: [BÁSICO] Attachar objeto ao bone (osso) do ator

    Mensagem por Junior_Djjr em Dom 08 Jan 2017, 21:26

    [0A96] GET_CHAR_POINTER 1129126403 -> 0x0
    [0AA6] CALL_METHOD 0x532B20 0x0 0 0
    "0x0"
    Simples, retornou "0" quando tentou pegar o ponteiro do actor. Possivelmente o actor não existia, ou você enviou errado etc.


    ____________________

    Djjr is back.

    Conteúdo patrocinado

    Re: [BÁSICO] Attachar objeto ao bone (osso) do ator

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Qui 23 Fev 2017, 11:15