[Tutorial] Aplicando animaзгo em um NPC
#1

Tutorial: Aplicado animaзгo a um determinado NPC:

Olб! Bem, creio que muita gente tem dъvida nisso. Mas й algo bem simples!
Portanto, pode-se chamar esse tуpico de um mini-tutorial.
Bem, vamos comeзar.
Para quem nгo sabe, NPC quer dizer Non Playing(ou Player) Character, o que significa que й um personagem nгo controlado pelo jogador, й um Bot.
Neste tutorial, adicionarei a animaзгo do NPC ficar dando socos(como aqueles caras que ficam nos ginбsios do GTA). Mas caso vocк queria outra, basta dar uma olhadinha aqui: Animations: SA-MP Wiki e tambйm, em Apply Animation: SA-MP Wiki.
Primeiro passo: Adicione no comeзo do seu GM/FS:
pawn Код:
new npcname[MAX_PLAYER_NAME];
Esta linha criarб a variбvel que serб usada para distinguir o nome do npc. Porque se nгo tiver ela, a animaзгo serб aplicada a todos os NPC's conectados no servidor.
Segundo passo: Vб em PublicOnPlayerUpdate e adicione:
pawn Код:
for(new i = 0; i < MAX_PLAYERS; i++)
    {
        GetPlayerName(i, npcname, sizeof(npcname));
        if(IsPlayerConnected(i))
        {
            if(IsPlayerNPC(i) && !strcmp(npcname, "Junior", true))
            {
                new Float:X, Float:Y, Float:Z;
                GetPlayerPos(i, X, Y, Z);
                if(IsPlayerInRangeOfPoint(playerid, 5.0, X, Y, Z))
                {
                   ApplyAnimation(i,"GYMNASIUM","GYMshadowbox",4.1,1,1,1,1,9500);
                }
            }
        }
    }
Explicando as linhas:
pawn Код:
for(new i = 0; i < MAX_PLAYERS; i++)
Essa linha define o i como um playerid, mas este serб usado para identificar o jogador real que estarб perto do NPC, e entгo verб a animaзгo. O i serб usado para identificar o NPC.
pawn Код:
GetPlayerName(i, npcname, sizeof(npcname));
Essa linha й de fбcil explicaзгo, ela apenas "pegarб" o nome do NPC que serб feita a animaзгo.
pawn Код:
if(IsPlayerConnected(i))
Identifica se o NPC estб conectado.
pawn Код:
if(IsPlayerNPC(i) && !strcmp(npcname, "Junior", true))
Agora vem a parte mais importante do nosso cуdigo, o que serб fundamental para aplicar a animaзгo corretamente: Aplica a animaзгo se o i й for um NPC, e tambйm se ele tiver o nome que vocк colocou. Como vocк viu, o nome do meu NPC й Junior. Basta trocar pelo nome do seu NPC.
pawn Код:
new Float:X, Float:Y, Float:Z;
GetPlayerPos(i, X, Y, Z);
Define as Floats(coordenadas) e depois "pega" a posiзгo do NPC.
pawn Код:
if(IsPlayerInRangeOfPoint(playerid, 5.0, X, Y, Z))
{
ApplyAnimation(i,"GYMNASIUM","GYMshadowbox",4.1,1,1,1,1,9500);
}
Aqui o playerid й usado para identificar o jogador real, que ao se aproximar do NPC, o mesmo aplicarб a animaзгo! Vocк pode aumentar o "range", ou seja, o raio de distвncia de que o NPC comeзarб a fazer a animaзгo. Pode, ao envйs de 5.0, aumentar para 10.0 ou qualquer outro valor que vocк queira.

Todo o cуdigo:
pawn Код:
//Comeзo do GM/FS
new npcname[MAX_PLAYER_NAME];

//Em OnPlayerUpdate
public OnPlayerUpdate(playerid)
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        GetPlayerName(i, npcname, sizeof(npcname));
        if(IsPlayerConnected(i))
        {
            if(IsPlayerNPC(i) && !strcmp(npcname, "Junior", true))
            {
                new Float:X, Float:Y, Float:Z;
                GetPlayerPos(i, X, Y, Z);
                if(IsPlayerInRangeOfPoint(playerid, 5.0, X, Y, Z))
                {
                   ApplyAnimation(i,"GYMNASIUM","GYMshadowbox",4.1,1,1,1,1,9500);
                }
            }
        }
    }
    return 1;
}
PRONTO! Nosso tutorial foi finalizado! Espero que tenha sido bem explicado, embora seja uma coisa simples, muita gente deve ter dъvida! Obrigado, espero que gostem e comentem o que acharam, com sugestхes, algum erro ou crнticas.
Muito obrigado!
Crйditos:
Detonador
Reply
#2

Bom tutorial...
Reply
#3

Quote:

Bom tutorial...

Muito obrigado. Fico feliz que vocк gostou
Reply
#4

ruim de mais muita coisa para melhorar isso ae nem e um tutorial se uma pessoa nao sabe criar um npc sabera colocar animaзao que a coisa mais simples do mundo!

os novatos nao sabem criar npc saberao colocar anim ?

e os caras que sabem criar um npc nao saberao colocar um anim


um lixo de tutorial isso ae!
Reply
#5

Quote:

ruim de mais muita coisa para melhorar isso ae nem e um tutorial se uma pessoa nao sabe criar um npc sabera colocar animaзao que a coisa mais simples do mundo!

os novatos nao sabem criar npc saberao colocar anim ?

e os caras que sabem criar um npc nao saberao colocar um anim


um lixo de tutorial isso ae!

Sim, no comeзo do tutorial isso й para ficar chamativo, quem ler o que й NPC, talvez se interessar e ir aprender, e depois retornar, caso queria que ele tenha uma animaзгo.
Eu quando comecei a mecher com NPC, foi deste mesmo modo. Vi falando sobre o que й NPC e pesquisei, e entгo comecei a mecher.
Mas obrigado. Respeito sua opiniгo.

Quote:

e os caras que sabem criar um npc nao saberao colocar um anim

Sim, muita gente nгo sabe como fazer muitas funзхes depois de criar um NPC.
Um NPC nгo й apenas este cуdigo: ConnectNPC("Junior","pedestre1");
Tem muitas funзхes pra fazer depois, desde setar skin, colocar nome acima da cabeзa, alйm de mais avanзadas, como criar uma animaзгo para ele, fazer ele conversar com os jogadores, etc.
Reply
#6

bom tutorial, nada mal. *_*
Reply
#7

Explicame , fiquei curioso!
Код:
!strcmp(npcname, "Junior", true
Reply
#8

Eu gostei. .


Eu mesmo tinha dъvidas no нnico de como fazer isto. Parabйns.
Reply
#9

Q.I

O RETORNO!
Reply
#10

Muito obrigado galera! Fico muito feliz que gostaram!
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)