Portal SAMP
[Tutorial] Adicionando objetos em Veiculos - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Guias e Tutoriais (https://portalsamp.com/forumdisplay.php?fid=7)
+--- Tópico: [Tutorial] Adicionando objetos em Veiculos (/showthread.php?tid=1894)



Adicionando objetos em Veiculos - SrBlue - 04/12/2021

Opa,

nesse tutorial venho suprir uma necessidade de vários "coders" encontram, a personalização custom "tunning" em algum veiculo, contudo vou demonstrar o meu método que utilizo para poder adicionar objetos algum veiculo.

Programas necessarios

 * pawn, com funções nativas do samp 3.7 ou superior ( include a_samp )
 |    \_  AttachObjectToVehicle
 |    \_  CreateObject
 |    \_  CreateVehicle
 * SA-MP Map Construction
 |


1º, temos que abrir o nosso querido editor de mapas, e apontar a câmera nas coordenadas 0, 0, 0.
[Imagem: fB3eQvZ.png]


2º, vamos criar algum veiculo ( adicionar um objeto ) a gosto que queira adicionar o objeto, no caso vou aderir ao veiculo Sultan, cujo id seja 560
 * os veiculo são considerado como objeto nesse editor!
logo em seguida, aponto o objeto criado para as coordenadas 0, 0, 0
[Imagem: zKx0FCu.png]

3º, Iremos adicionar o objeto a escolha, e posicionamos no veiculo, por cima, lados a sua escolha! no meu caso vou adicionar um ventilador industrial ( id 1420 ), porem temos que adicionar o objeto no veiculo sem alterar as suas coordenadas nativas ( 0,0,0 ), o NÂO DEVEMOS MUDAR, porque se mudarmos, a posição do veiculo, pode não ficar no lugar certo o objeto, devido o veiculo não ter ido na posição nativa..

[Imagem: 32SgpJN.png]


4º logo após finalizado, vamos organizar os dados pegos, separamos o objeto,
para separar vamos ver o código, assim vai dar um resultado, no meu caso foi o 

CreateObject(1420, -0.12860, -0.20730, 0.733400.00000, 0.00000, 60.00000);

*Rosa: ID DO OBJETO
*Vermelho: Posição
*Azul: Rotação

e logo abaixo foi dado as coordenadas do veiculo, o qual não vamos utilizar.
CreateVehicle(560, 0.0000, 0.0000, 0.0000, 0.0000, -1, -1, 100);



[Imagem: cZNdtrJ.png]


5º, em seu GameMode, na função/public OnGamemodeInit, devemos adicionar o seu veiculo, e objeto, lembrando, se a rotação do veiculo for diferente para a posição final, na posição nativa também alteremos, para evitar erro de distancia no final.
nos ambos valores, vamos criar uma variável ( pode ser global ou local ).

Quando criarmos o objeto, não precisa definir posição, porque se adicionar, o objeto se o veiculo "explodir" vai retornar naquela posição, ou seja, vamos deixar a posição NATIVA 0,0,0, se no caso explodir, o objeto retorna pra lá, e depois volte no spawn.

Código:
new veiculo_com_ar = CreateVehicle(560, -2640.0833, -54.9334, 4.1513, 0.0000, -1, -1, 100);
new ar            = CreateObject(1420, 0.0000, 0.0000,0.0000,  0.00000, 0.00000, 0.00000);

pode-se notar que na criação de veiculo ( CreateVehicle ) adicionei as posição que eu quero, no lá em SF, junto com sua rotação 0, porque no inicio, quando adicionei o OBJETO, foi na rotação 0.0000.



6º, agora com quase tudo preparados, vamos "anexar" o objeto no veiculo, com a função AttachObjectToVehicle.

sua utilização:

Código:
AttachObjectToVehicle(objeto,veiculo,x,y,z, rx,ry,rz);


x, y, z sejas Posição do OBJETO no veiculo
rx, ry, rz sejas ROTAÇÃO do OBJETO no veiculo.



compreendendo isso, no código vai ficar o seguinte:

Código:
new veiculo_com_ar = CreateVehicle(560, -2640.0833, -54.9334, 4.1513, 0.0000, -1, -1, 100);
new ar                = CreateObject(1420, 0.0000, 0.0000,0.0000,  0.00000, 0.00000, 0.00000);
AttachObjectToVehicle(ar, veiculo_com_ar, -0.12860, -0.20730, 0.73340,   0.00000, 0.00000, 60.00000);



o qual o resulta em:

[Imagem: onfGiVL.png]




lembrando, que podemos alterar o material do objeto e anexar no veiculo.
* Um único objeto, serve somente como 1 ANEXO,
* podemos anexar vários objetos em um veiculo, o limite é desconhecido ( caso tenha algum, responda com ele aqui ! )


por fim, esse é o tutorial de hoje!, grato por lerem!, qual quer duvida, chamar MP ou comunicar nesse tópico.


RE: Adicionando objetos em Veiculos - ipsLuan - 05/12/2021

Recomendo mais o uso do Texture Studio.
Simples, rápido e fácil.

https://www.youtube.com/watch?v=dXhAIjP6nlA


RE: Adicionando objetos em Veiculos - ProKillerPa - 07/12/2021

Gostaria de acrescentar uma observações importante acerca de attach objetos em veiculos: Você sempre precisa estar atento a DESTRUIR os objetos attachados quando o veiculo for destruido/id alterado, pois os objetos attachados não ficam no veiculo, e sim no ID do veiculo: Isso significa que o próximo veiculo que utilizar o ID de um veiculo que possuia objetos attachados e não foram removidos, este terá os objetos attachados do veiculo anterior.

Abraços


RE: Adicionando objetos em Veiculos - SrBlue - 11/12/2021

(07/12/2021 11:33)ProKillerPa Escreveu: Gostaria de acrescentar uma observações importante acerca de attach objetos em veiculos: Você sempre precisa estar atento a DESTRUIR os objetos attachados quando o veiculo for destruido/id alterado, pois os objetos attachados não ficam no veiculo, e sim no ID do veiculo: Isso significa que o próximo veiculo que utilizar o ID de um veiculo que possuia objetos attachados e não foram removidos, este terá os objetos attachados do veiculo anterior.

Abraços


quando se cria um veiculo com alguma variável, a variável obrigado que o CreateVehicle guarde o id do veiculo, independente se ele muda, ou seja, se ele for destruído com algum outro veiculo, e os ambos ids mudaram, a variável vai detectar e mudar em conjunto, devido ter o "objeto" como fator principal! grato pelo comentario.
POREM se o coder inserir attach criando veiculo diretamente, ai sim tem chance de ocorrer isso.


RE: Adicionando objetos em Veiculos - xbruno1000x - 12/12/2021

O limite de attach é provavelmente o mesmo do createobject(1000 objetos), pois o objeto é criado por meio do createobject antes de ocorrer o attach e, além disso, a função não tem slots para limitar.