[Tutorial] Uso del SetPlayerAttachedObject
#1

Bien, йste es mi primer tutorial en la comunidad, y para esta primera ocasiуn, les traigo un tutorial bбsico sobre el uso de la funciуn SetPlayerAttachedObject. El objetivo de la funciуn es sencillo, sirve para aсadir objetos a un jugador.


Parбmetros de la funciуn
SetPlayerAttachedObject(playerid, index, modelid, bone, Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ, Float:fRotX, Float:fRotY, Float:fRotZ, Float:fScaleX, Float:fScaleY, Float:fScaleZ);

playerid = Es la ID del jugador que recibirб el objeto, en procesadores de comandos como zcmd, se suele usar params[0] para referirse a una funciуn que involucre a un jugador que no ejecute el comando o una funciуn, en strcmp se suele usar giveplayerid.

index = Es el slot que se la asigna al objeto, el mismo puede ser del 0-9 a partir de la versiуn 0.3d de SA-MP. No pueden haber mбs de dos objetos en un mismo slot, o mejor dicho, index.

modelid = Es la ID del modelo del objeto a aсadirse al jugador, se pueden usar йstos y tambiйn йstos.

bone = Es la posiciуn dentro del cuerpo donde se aсadirб el objeto. Йsto es muy fundamental, porque a pesar que uno acomode perfectamente las coordenadas de un objeto por ejemplo en la espalda, debe usarse el bone correcto, ya que si no, uno se moverб y el objeto se distorsionarб y moverб mucho. Los bones son йstos, del 0-18 (el 0 trae crash). El mбs funcional es el de la mano derecha (ID 6), ya que en muy raro caso se necesitarб usar las posiciones Offset del objeto.

fOffsetX = Es la posiciуn del eje de coordenada X donde se ubicarб el objeto. Es totalmente opcional, y es usado sуlo si uno no queda satisfecho con la posiciуn del bone.

fOffsetY = Es la posiciуn del eje de coordenada Y donde se ubicarб el objeto. Es totalmente opcional, y es usado sуlo si uno no queda satisfecho con la posiciуn del bone.

fOffsetZ = Es la posiciуn del eje de coordenada Z donde se ubicarб el objeto. Es totalmente opcional, y es usado sуlo si uno no queda satisfecho con la posiciуn del bone.

fRotX = Es la rotaciуn del eje de coordenada X donde se ubicarб el objeto. Es totalmente opcional, y es usado sуlo si uno no queda satisfecho con la posiciуn del bone.

fRotY = Es la rotaciуn del eje de coordenada Y donde se ubicarб el objeto. Es totalmente opcional, y es usado sуlo si uno no queda satisfecho con la posiciуn del bone.

fRotZ = Es la rotaciуn del eje de coordenada Z donde se ubicarб el objeto. Es totalmente opcional, y es usado sуlo si uno no queda satisfecho con la posiciуn del bone.

fScaleX = Es la escala del eje de coordenada X donde se ubicarб el objeto. Es totalmente opcional, y es usado para cambiarle el tamaсo al objeto, el mal uso de йsto puede deformar el mismo.

fScaleX = Es la rotaciуn del eje de coordenada Y donde se ubicarб el objeto. Es totalmente opcional, y es usado para cambiarle el tamaсo al objeto, el mal uso de йsto puede deformar el mismo.

fScaleZ = Es la rotaciуn del eje de coordenada Z donde se ubicarб el objeto. Es totalmente opcional, y es usado para cambiarle el tamaсo al objeto, el mal uso de йsto puede deformar el mismo.


Ejemplo de uso
Hice dos comandos, /ak47, sirve para aсadirle un objeto de AK-47 en la mano y otro en la espalda al jugador que ejecutу el comando, y el de /qak47 sirve para quitar йstos.

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp(cmd, "/ak47", true) == 0)
    {
        SetPlayerAttachedObject(playerid, 0, 355, 6, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 1.000000, 1.000000); // Le coloca un objeto de AK-47 al jugador, en su mano derecha, index 0.
        SetPlayerAttachedObject(playerid, 1, 355, 1, -0.065999, -0.134999, 0.000000, 0.000000, 34.799995, 0.000000, 1.000000, 1.000000, 1.000000); // Le coloca un objeto de AK-47 al jugador, en su espalda, index 1.
       
        return 1;
    }
   
    if(strcmp(cmd, "/qak47", true) == 0)
    {
        RemovePlayerAttachedObject(playerid, 0); // Remueve el objeto aсadido al jugador, ubicado en el index 0, en nuestro caso, habнa ahн una AK47 en la mano derecha.
        RemovePlayerAttachedObject(playerid, 1); // Remueve el objeto aсadido al jugador, ubicado en el index 1, en nuestro caso, habнa ahн una AK47 en la espalda.
        return 1;
    }
    return 0;
}

їCуmo sacar las coordenadas de jugador?
Para poder conseguir las coordenadas de jugador, para asн poder aсadirle los objetos, se deberб utilizar un FilterScript (FS) llamado attachments.pwn, el cual viene con el samp server. El que no lo tiene, lo subн a mediafire, el link es йste (es el attachments original, salvo que le agreguй un par de armas). A continuaciуn, instrucciones de uso:

- Primero y principal, hay que colocar el archivo en la carpeta de filterscripts, en caso de que no estй.

- Segundo, se dirigen al archivo server.cfg, se supone que habrб una lнnea llamada filterscripts, ahн se deberб colocar la palabra "attachments", sin comillas y sin ninguna extensiуn (.pwn, .amx).

Una vez que tengamos йsto, nos corectaremos a nuestro servidor, para comenzar con йsto. Al conectarnos, colocaremos el comando /attachments, y se abrirб algo como йsto;

Escogeremos un index, en mi caso, escogerй el index 0, ahora, al escoger el index, nos aparecerб lo siguiente;

Deberemos elegir el modelo que nosotros queramos, en mi caso, elegн "GlassesType1", al hacerlo, nos aparecerб lo siguiente;

Elegiremos el bone conveniente, como yo elegн glasses, que en espaсol significa lentes, escogerй head, que significa cabeza. Al hacerlo, debermos editar la posiciуn (es clickeable), hasta encontrar la adecuado, tendremos йsto;

Y luego de unas pequeсas ediciones que le hice, resultу quedar asн (їnotan los lentes rojos?);

Al terminar de editarlo, colocaremos el save, ni bien lo hacemos, nos dirigiremos a los logs del servidor (server-log.txt) y encontraremos algo como йsto;

pawn Код:
SetPlayerAttachedObject(playerid,0,19006,2,0.079999,0.038999,0.001000,86.799980,89.599983,0.000000,1.000000,1.000000,1.000000)
Para usarlo dentro del GM, no se olviden de colocar un punto y coma ';' a lo ъltimo (ya que en los logs y en la consola aparecerбn sin el punto y coma).

Y listo, eso es todo, pronto harй mбs tutoriales, los crйditos son mнos, exceptuando la creaciуn del filterscript, aunque le hice un par de modificaciones al mнo (le agreguй armas), las imбgenes tambiйn son mнas, las tomй yo con F8, y luego les di unos efectos en Photoshop.
Reply
#2

Muy buen tutorial.
Reply
#3

Gracias, lo hice para mostrarles a los nuevos en PAWN que es muy fбcil aсadir objetos a un jugador.

Pronto mejorarй el tutorial, es muy bбsico actualmente, le agregarй mбs usos de la funciуn.
Reply
#4

Muy bueno.
Reply
#5

Estб util y bueno, ademбs te diste el tiempo para editar las fotos y tal. +rep

EDIT: No me deja darte xD
Reply
#6

buen trabajo... Y el personaje ese se tomo toda la sopita, se ver barrigуn hahahahahahah
Reply
#7

Sн, es que tengo modificados casi todos los skins, y elegн el primero con el que spawneй, estaba apurado, tenнa sueсo.
Reply
#8

Habнa tenido mъltiples dudas de esto felicidades.
Reply
#9

Es muy fбcil de usar el attachments, imaginen que hay servidores (de rol la mayorнa) que modifican el archivo attachments, para que sуlo sirva para editar objetos ("toys") comprados en las tiendas de ropa, asн que si pueden acostumbrarse usuarios que no tienen conocimientos de los que es una coordenada X, Y, Z y cosas bбsicas, ustedes sabrбn usarlo... Es agarrarle la mano, yo ya le agarrй la mano y saquй las coordenadas de todas las armas, en la espalda, costados del cinturуn, mano derecha y mano izquierda.
Reply
#10

Muy buen tuto, te felicito.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)