30.10.2012, 13:03
(
Последний раз редактировалось Detonador; 30.10.2012 в 13:41.
)
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:
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:
Explicando as linhas:
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.
Essa linha й de fбcil explicaзгo, ela apenas "pegarб" o nome do NPC que serб feita a animaзгo.
Identifica se o NPC estб conectado.
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.
Define as Floats(coordenadas) e depois "pega" a posiзгo do NPC.
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:
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
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];
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);
}
}
}
}
pawn Код:
for(new i = 0; i < MAX_PLAYERS; i++)
pawn Код:
GetPlayerName(i, npcname, sizeof(npcname));
pawn Код:
if(IsPlayerConnected(i))
pawn Код:
if(IsPlayerNPC(i) && !strcmp(npcname, "Junior", true))
pawn Код:
new Float:X, Float:Y, Float:Z;
GetPlayerPos(i, X, Y, Z);
pawn Код:
if(IsPlayerInRangeOfPoint(playerid, 5.0, X, Y, Z))
{
ApplyAnimation(i,"GYMNASIUM","GYMshadowbox",4.1,1,1,1,1,9500);
}
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;
}
Muito obrigado!
Crйditos:
Detonador