07.08.2014, 04:00
INPCS
Bem pessoal, estou aqui para postar um projeto que eu e Willian Luigi fizemos em 2013 mas nгo teve finalizaзгo atй entгo.
INPCS й um plugin para controlar e fazer NPCS de forma dinвmica, sem precisar fazer gravaзхes. Seu mйtodo de atuaзгo й muito similar ao RNPC e FNCPC, contudo, INPC estб feito praticamente em Pawn grande parte das funзхes e tem um debug bastante eficiente para casos de erros no NPC.
Vamos as funзхes.
PHP код:
CreateINPC(nome[])
retorno: id do npc
PHP код:
DestroyINPC(id)
retorno: true
PHP код:
CreateBuild(playerid, x, y ,z);
PHP код:
SaveBuild(id)
PHP код:
FinishBuild
PHP код:
PlayBuild(npc)
PHP код:
SetNPCAngleToPlayer(npc, player)
PHP код:
SetNPCKey(npc, key)
PHP код:
SetNPCWeapon(npc, wep)
PHP код:
SetNPCVelocity(npc, x,y,z)
PHP код:
SetNPCRepeat(npc,id)
PHP код:
StopBuild(npc)
PHP код:
MoveNPC(npc, x,y,z,velocidade)
Quote:
CORRER, COUPE e ANDAR |
PHP код:
SetNPCUpDownKey
PHP код:
SetNPCSpecialAction
PHP код:
GetNPCSpecialAction
PHP код:
SetNPCTime
PHP код:
SetNPCPos
Outros.
Ainda falta o sistema de veнculos, a estrutura de arquivo jб foi criada pelo Willian Luigi, mas como o projeto foi pausado em 2013 nгo terminamos essa parte.
Como й um projeto nгo completo, nгo aconselhamos usa-lo em servidores que exigem muitos dos NPCS, isto й para ser feito em projetos simples, como um NPC em alguma loja ou coisa do gкnero.
Tambйm nгo hб THREADS ainda, por este motivo toda movimentaзгo do NPC й feita em Pawn. Vide MoveNPC
Nгo esqueзa de alterar o maxnpc de server.cfg
Exemplos.
no exemplo a seguir, o npc corre atrбs do jogador e pressiona KEY FIRE quando estiver a 1 metro dele, desferindo um soco sobre o player!
[ame]http://www.youtube.com/watch?v=A3_ff85Lqug[/ame]
pawn Код:
#include a_samp
#include ../bibliotecas/inpcs.inc
// variбvel para atribuir id do npc
new id = -1;
public OnGameModeInit() {
// criar o npc
id = CreateINPC("BrunoS");
SetTimerEx("CorrerAtras", 400, true, "i", id);
}
main() {
}
public OnPlayerSpawn(playerid) {
SetPlayerPos(playerid, 0.0,0.0,2.0);
if(IsPlayerNPC(playerid)) SetNPCPos(playerid, 0.0,0.0,2.0);
return true;
}
// public para detectar jogadores pertos e correr atrбs
forward CorrerAtras(npc) ;
public CorrerAtras(npc) {
// pegar posiзгo do npc
new Float: pos[3];
GetPlayerPos(npc, pos[0], pos[1], pos[2]);
// listar todos jogadores online
for(new i; i != MAX_PLAYERS; i++) {
if(IsPlayerConnected(i) && !IsPlayerNPC(i)) {
// verificar se o jogador estб a 40.0 perto do npc
if(IsPlayerInRangeOfPoint(i, 40.0, pos[0], pos[1], pos[2])) {
// pegar pos do jogador
GetPlayerPos(i, pos[0], pos[1], pos[2]);
// verificar se o npc estб a 1 metro do jogador
if(IsPlayerInRangeOfPoint(npc, 1.0, pos[0], pos[1], pos[2])) {
// pegar posiзгo para iniciar o arquivo de gravaзгo na posiзгo atual
GetPlayerPos(npc, pos[0], pos[1], pos[2]);
// criar o arquivo de gravaзгo
CreateBuild(npc, pos[0], pos[1], pos[2]);
// dar soco
SetNPCKey(npc, KEY_FIRE);
// salvar o trecho do arquivo de gravaзгo
SaveBuild(npc);
// finalizar o arquivo
FinishBuild(npc);
// executar
PlayBuild(npc);
}
else {
// nгo dar soco
SetNPCKey(npc, 0);
// seguir o jogador
MoveNPC(npc, pos[0], pos[1], pos[2], COUPE);
}
}
}
}
return true;
}
AQUI OUTRO VНDEO DE 2013
[ame]http://www.youtube.com/watch?v=grb6NaH-GNk[/ame]
Download.
1: -> Clique aqui
Coloque na pasta do seu servidor, modifique server.cfg e coloque no seu gm:
PHP код:
#include ../bibliotecas/inpcs.inc
Autoria.
Bruno da Silva e Willian Luigi
Agradeзo ao Mauzen por conta de algumas dъvidas que tive ao decorrer do projeto