Portal SAMP
[Tutorial] Criando Actor / NPC parado com TextLabel - 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] Criando Actor / NPC parado com TextLabel (/showthread.php?tid=161)



Criando Actor / NPC parado com TextLabel - RosaScripter - 07/10/2020

Tutorial Actor & TextLabel 

Sobre

Muitos não tem a mínima noção como se usar um actor e como ele é mais fácil que um Pickup c/ Textlabel
Eu mesmo não tinha noção de como usar e de como seria fácil minhas criações de GM usando  Actor
Assim  sigo trazendo esse Tutorial bem básico.

• Poderá usar em Lojas e qualquer outro  interior
[u]• Poderá fazer sistemas usando Actor por exemplo: Assaltos, Vendas entre outros usando Actor
[/u]
• Podera usar para simular pessoas dentro de interiores
[u]• Entre outras coisas...
[/u]
Imagens
Imagem Actor

Instalação

include:

Código:
/*  SA:MP Actor Functions
*
*  (c) Copyright 2005-2006, SA:MP Team
*
*/

#if defined _actors_included
    #endinput
#endif
#define _actors_included
#pragma library actors

// Actor
native CreateActor(modelid, Float:X, Float:Y, Float:Z, Float:Rotation);
native DestroyActor(actorid);
native SpawnActor(actorid);
native ActorMoveTo(actorid, movetype, Float:X, Float:Y, Float:Z );
native ActorEnterVehicle(actorid, vehicleid, passenger);
native ActorExitVehicle(actorid,vehicleid);
native ActorDriveVehicleTo(actorid, vehicleid, Float:X, Float:Y, Float:Z, Float:Speed, drivetype, Float:MinAltitude=0.0, Float:MaxAltitude=0.0);

// Actor info
native SetActorPos(actorid, Float:x, Float:y, Float:z);
native SetActorPosFindZ(actorid, Float:x, Float:y, Float:z);
native GetActorPos(actorid, &Float:x, &Float:y, &Float:z);
native SetActorFacingAngle(actorid,Float:ang);
native GetActorFacingAngle(actorid,&Float:ang);
native SetActorInterior(actorid,interiorid);
native GetActorInterior(actorid);
native SetActorHealth(actorid, Float:health);
native GetActorHealth(actorid, &Float:health);
native SetActorArmour(actorid, Float:armour);
native GetActorArmour(actorid, &Float:armour);
native SetActorInvulnerable(actorid, invulnerable = true);
native IsActorInvulnerable(actorid);
native SetActorTeam(actorid, teamid);
native GetActorTeam(actorid);
native SetActorColor(actorid,color);
native GetActorColor(actorid);
native SetActorSkin(actorid, skinid);
native GetActorSkin(actorid);
native SetActorWeapon(actorid, weaponid);
native ResetActorWeapon(actorid);
native SetActorName(actorid, const name[]);
native GetActorState(actorid);
native GetActorWeapon(actorid);
native GetActorKeys(actorid, &keys, &updown, &leftright);
native GetActorName(actorid, const name[], len);

// Actor controls
native PutActorInVehicle(actorid, vehicleid, seatid);
native GetActorVehicleID(actorid);
native GetActorVehicleSeat(actorid);
native RemoveActorFromVehicle(actorid);
native ApplyActorAnimation(actorid, animlib[], animname[], Float:fDelta, loop, lockx, locky, freeze, time);
native ClearActorAnimations(actorid);

// Actor conditionals
native IsActorConnected(actorid);
native IsActorInVehicle(actorid, vehicleid);
native IsActorInAnyVehicle(actorid);

// Virtual Worlds
native SetActorVirtualWorld(actorid, worldid);
native GetActorVirtualWorld(actorid);
Crie um  arquivo .inc escrito a_actor.inc e coloque na pasta includes

Criando um Actor

1. Criando variaveis
Obs: Criaremos uma variavel global com a quantidade de Actor que iremos criar
Código:
#include < a_actor >

//No topo de sua Gamemode
new Actors[2+1];
    Text3D:LabelActors[2+1];

2. Criando o Primeiro Actor Parado
Código:
    Actors[0] = CreateActor(skin, x, y, z, Angle);
    LabelActors[0] = Create3DTextLabel("{FFFFFF}Ola, Use {FF00FF}/ajuda {FFFFFF}para \n{FF00FF}consultar os comandos", 0x008080FF, x, y, z, 15.0, 0);
    Attach3DTextLabelToPlayer(LabelActors[0], Actors[0], 0.0, 0.0, 0.7);
3. Criando  Actor c/ Anim
Código:
Actors[1] = CreateActor(skin, x, y, z, Angle);
    LabelActors[1] = Create3DTextLabel("{FFFFFF}Ola, Use {FF00FF}/ajuda {FFFFFF}para \n{FF00FF}consultar os comandos", 0x008080FF, x, y, z, 15.0, 0);
    Attach3DTextLabelToPlayer(LabelActors[1], Actors[1], 0.0, 0.0, 0.7);
ApplyActorAnimation(Actors[1],"BOMBER", "BOM_Plant", 4.1, 1, 0, 1, 0, 1);
4. Criando Actor c/ Arma
Código:
    Actors[2] = CreateActor(skin, x, y, z, Angle);
    LabelActors[2] = Create3DTextLabel("{FFFFFF}Ola, Use {FF00FF}/ajuda {FFFFFF}para \n{FF00FF}consultar os comandos", 0x008080FF, x, y, z, 15.0, 0);
    Attach3DTextLabelToPlayer(LabelActors[2], Actors[2], 0.0, 0.0, 0.7);
    SetActorWeapon(Actors[2], 32);
5. Criando Actor que morre
Código:
Actors[3] = CreateActor(skin, x, y, z, Angle);
    LabelActors[3] = Create3DTextLabel("{FFFFFF}Ola, Use {FF00FF}/ajuda {FFFFFF}para \n{FF00FF}consultar os comandos", 0x008080FF, x, y, z, 15.0, 0);
    Attach3DTextLabelToPlayer(LabelActors[3], Actors[3], 0.0, 0.0, 0.7);
    SetActorInvulnerable(Actors[3], false);


Pronto agora aprendeu como podemos usar os Actor em nosso servidor, Você também pode fazer sistemas usando Actor
Fica muito bom e divertido o servidor!

Agora é só felicidades criando e editando sua gamemode
______________________________________________________
+REP  [Imagem: heart.png]
O sucesso é a soma de pequenos esforços, repetidos dias após dias.


RE: Criando Actor / NPC parado com TextLabel - LeleziiN - 06/12/2020

Como faço para adiciona-lo em um Interior?


RE: Criando Actor / NPC parado com TextLabel - xbruno1000x - 08/12/2020

(06/12/2020 17:14)LeleziiN Escreveu: Como faço para adiciona-lo em um Interior?

Actors são como objetos, não há necessidade de coloca-los em um interior, basta por a coordenada.


RE: Criando Actor / NPC parado com TextLabel - LeleziiN - 08/12/2020

Ok mais ja fiz isso tbm e não funcionou pelomenos para mim
vc poderia fazer um exemplo disso para mim pfvr

[Imagem: Pub.jpg]

Ointerior que estou tentando por o Actor


RE: Criando Actor / NPC parado com TextLabel - xbruno1000x - 08/12/2020

Use o create actor da streamer então.
Código:
new nomedonpc = CreateDynamicActor(214, 497.2294,-77.6133,998.7651,0.9498, true, 100.0, -1, 11); //Bar



RE: Criando Actor / NPC parado com TextLabel - LeleziiN - 13/12/2020

Bom eu tentei aqui e não funcionou.

Código:
new BrucedGx = CreateDynamicActor(214, 500.0966,-77.9900,998.7578,3.1568, false, 100.0, -1, 11); //Bar

O que poderá ser ??


RE: Criando Actor / NPC parado com TextLabel - Mateus - 25/06/2022

Bom actor necessita sim de um código pra por eles em um interior


RE: Criando Actor / NPC parado com TextLabel - Seck - 26/06/2022

(07/10/2020 06:03)RosaScripter Escreveu:
Tutorial Actor & TextLabel 

Sobre

Muitos não tem a mínima noção como se usar um actor e como ele é mais fácil que um Pickup c/ Textlabel
Eu mesmo não tinha noção de como usar e de como seria fácil minhas criações de GM usando  Actor
Assim  sigo trazendo esse Tutorial bem básico.

• Poderá usar em Lojas e qualquer outro  interior
[u]• Poderá fazer sistemas usando Actor por exemplo: Assaltos, Vendas entre outros usando Actor
[/u]
• Podera usar para simular pessoas dentro de interiores
[u]• Entre outras coisas...
[/u]
Imagens
Imagem Actor

Instalação

include:

Código:
/*  SA:MP Actor Functions
*
*  (c) Copyright 2005-2006, SA:MP Team
*
*/

#if defined _actors_included
    #endinput
#endif
#define _actors_included
#pragma library actors

// Actor
native CreateActor(modelid, Float:X, Float:Y, Float:Z, Float:Rotation);
native DestroyActor(actorid);
native SpawnActor(actorid);
native ActorMoveTo(actorid, movetype, Float:X, Float:Y, Float:Z );
native ActorEnterVehicle(actorid, vehicleid, passenger);
native ActorExitVehicle(actorid,vehicleid);
native ActorDriveVehicleTo(actorid, vehicleid, Float:X, Float:Y, Float:Z, Float:Speed, drivetype, Float:MinAltitude=0.0, Float:MaxAltitude=0.0);

// Actor info
native SetActorPos(actorid, Float:x, Float:y, Float:z);
native SetActorPosFindZ(actorid, Float:x, Float:y, Float:z);
native GetActorPos(actorid, &Float:x, &Float:y, &Float:z);
native SetActorFacingAngle(actorid,Float:ang);
native GetActorFacingAngle(actorid,&Float:ang);
native SetActorInterior(actorid,interiorid);
native GetActorInterior(actorid);
native SetActorHealth(actorid, Float:health);
native GetActorHealth(actorid, &Float:health);
native SetActorArmour(actorid, Float:armour);
native GetActorArmour(actorid, &Float:armour);
native SetActorInvulnerable(actorid, invulnerable = true);
native IsActorInvulnerable(actorid);
native SetActorTeam(actorid, teamid);
native GetActorTeam(actorid);
native SetActorColor(actorid,color);
native GetActorColor(actorid);
native SetActorSkin(actorid, skinid);
native GetActorSkin(actorid);
native SetActorWeapon(actorid, weaponid);
native ResetActorWeapon(actorid);
native SetActorName(actorid, const name[]);
native GetActorState(actorid);
native GetActorWeapon(actorid);
native GetActorKeys(actorid, &keys, &updown, &leftright);
native GetActorName(actorid, const name[], len);

// Actor controls
native PutActorInVehicle(actorid, vehicleid, seatid);
native GetActorVehicleID(actorid);
native GetActorVehicleSeat(actorid);
native RemoveActorFromVehicle(actorid);
native ApplyActorAnimation(actorid, animlib[], animname[], Float:fDelta, loop, lockx, locky, freeze, time);
native ClearActorAnimations(actorid);

// Actor conditionals
native IsActorConnected(actorid);
native IsActorInVehicle(actorid, vehicleid);
native IsActorInAnyVehicle(actorid);

// Virtual Worlds
native SetActorVirtualWorld(actorid, worldid);
native GetActorVirtualWorld(actorid);
Crie um  arquivo .inc escrito a_actor.inc e coloque na pasta includes

Criando um Actor

1. Criando variaveis
Obs: Criaremos uma variavel global com a quantidade de Actor que iremos criar
Código:
#include < a_actor >

//No topo de sua Gamemode
new Actors[2+1];
    Text3D:LabelActors[2+1];

2. Criando o Primeiro Actor Parado
Código:
    Actors[0] = CreateActor(skin, x, y, z, Angle);
    LabelActors[0] = Create3DTextLabel("{FFFFFF}Ola, Use {FF00FF}/ajuda {FFFFFF}para \n{FF00FF}consultar os comandos", 0x008080FF, x, y, z, 15.0, 0);
    Attach3DTextLabelToPlayer(LabelActors[0], Actors[0], 0.0, 0.0, 0.7);
3. Criando  Actor c/ Anim
Código:
Actors[1] = CreateActor(skin, x, y, z, Angle);
    LabelActors[1] = Create3DTextLabel("{FFFFFF}Ola, Use {FF00FF}/ajuda {FFFFFF}para \n{FF00FF}consultar os comandos", 0x008080FF, x, y, z, 15.0, 0);
    Attach3DTextLabelToPlayer(LabelActors[1], Actors[1], 0.0, 0.0, 0.7);
ApplyActorAnimation(Actors[1],"BOMBER", "BOM_Plant", 4.1, 1, 0, 1, 0, 1);
4. Criando Actor c/ Arma
Código:
    Actors[2] = CreateActor(skin, x, y, z, Angle);
    LabelActors[2] = Create3DTextLabel("{FFFFFF}Ola, Use {FF00FF}/ajuda {FFFFFF}para \n{FF00FF}consultar os comandos", 0x008080FF, x, y, z, 15.0, 0);
    Attach3DTextLabelToPlayer(LabelActors[2], Actors[2], 0.0, 0.0, 0.7);
    SetActorWeapon(Actors[2], 32);
5. Criando Actor que morre
Código:
Actors[3] = CreateActor(skin, x, y, z, Angle);
    LabelActors[3] = Create3DTextLabel("{FFFFFF}Ola, Use {FF00FF}/ajuda {FFFFFF}para \n{FF00FF}consultar os comandos", 0x008080FF, x, y, z, 15.0, 0);
    Attach3DTextLabelToPlayer(LabelActors[3], Actors[3], 0.0, 0.0, 0.7);
    SetActorInvulnerable(Actors[3], false);


Pronto agora aprendeu como podemos usar os Actor em nosso servidor, Você também pode fazer sistemas usando Actor
Fica muito bom e divertido o servidor!

Agora é só felicidades criando e editando sua gamemode
______________________________________________________
+REP  [Imagem: heart.png]
O sucesso é a soma de pequenos esforços, repetidos dias após dias.
Tentei criar com uma arma na mão, consegui até compilar o GM certinho, mas quando vou iniciar o server ele fica como Unknown... Não achei nenhum outro tutorial na internet, será que não é possível colocar a arma na mão?


RE: Criando Actor / NPC parado com TextLabel - xbruno1000x - 26/06/2022

(26/06/2022 17:39)Seck Escreveu: Tentei criar com uma arma na mão, consegui até compilar o GM certinho, mas quando vou iniciar o server ele fica como Unknown... Não achei nenhum outro tutorial na internet, será que não é possível colocar a arma na mão?

Não existe nenhuma função nativa para colocar uma arma na mão. Acho que também não é possível dar attach object num actor. Você teria que criar o objeto na posição da mão do actor.

Pelo que notei, algumas das funções nativas colocadas no tópico não existem. Recomendo a todos que verifiquem na documentação se a função existe antes de utilizá-la.

link:
https://open.mp/pt-br/docs