INPCS - grave arquivos de NPCs dinвmicamente -
Sn0wk - 07.08.2014
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[])
Й de extrema importвncia, essa funзгo conecta NPCS no servidor!
retorno: id do npc
retira um npc do servidor
retorno: true
PHP код:
CreateBuild(playerid, x, y ,z);
Funзгo mais importante do jogo, ela cria um arquivo de gravaзгo do npc na determinada posiзгo..
Salva o trecho do arquivo de gravaзгo
Finaliza salvando todo arquivo de gravaзгo, depois dessa funзгo podes dar Play no NPC
Comeзa a gravaзгo do jogador.
PHP код:
SetNPCAngleToPlayer(npc, player)
Vira o angulo do npc para um jogador
PHP код:
SetNPCKey(npc, key)
Faz o NPC apertar uma tecla, por exemplo KEY_FIRE para atirar
PHP код:
SetNPCWeapon(npc, wep)
Coloca uma arma no NPC, caso wep = 0 tira as armas atuais.
PHP код:
SetNPCVelocity(npc, x,y,z)
Altera a velocidade do npc
PHP код:
SetNPCRepeat(npc,id)
Repete o arquivo de gravaзгo atual
Para o arquivo atual
PHP код:
MoveNPC(npc, x,y,z,velocidade)
Move o npc para um local, as velocidades sгo
Setar uma key, sу que diferente da outra, essa serve para KEYDOWN e KEYUP
PHP код:
SetNPCSpecialAction
Coloca uma
aзгo especial no NPC
PHP код:
GetNPCSpecialAction
Retorna a aзгo especial executada
No momento da gravaзгo, serve para pular para o determinada trecho. Por ex: Vocк quer que o NPC apenas pressione KEY FIRE 5 segundos depois de ter sido criado, SetNPCTime farб isto
Muda a gravaзгo para fazer o NPC pular para uma posiзгo. Essa funзгo pode ser substituida por SetPlayerPos, porйm SetPlayerPos buga caso vocк der PlayBuild com uma coordenada inicial diferente
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
Re: INPCS - grave arquivos de NPCs dinвmicamente -
Caio_Freeze - 07.08.2014
Muito bom bruno уtimo plugin!
Re: INPCS - grave arquivos de NPCs dinвmicamente -
darkxdll - 07.08.2014
Bruno , й pra colocar "#include ../bibliotecas/inpcs.inc" no server.cfg mesmo ?
Nunca imaginei que poderia fazer isto rsrsrs'
уtimo plugin cara
Quando eu instalar a internet aqui , eu testo ele
Re: INPCS - grave arquivos de NPCs dinвmicamente -
PT - 07.08.2014
Bom trabalho.
Se poder bota pastebin para dar uma olhada no source.
porque nao cria um github para todos os seus trabalhos? mais facil para as atualizacoes..
Re: INPCS - grave arquivos de NPCs dinвmicamente -
zSuYaNw - 07.08.2014
уtimo trabalho Bruno.. estou ancioso pela versгo completa ^^
Re: INPCS - grave arquivos de NPCs dinвmicamente -
ViniBorn - 07.08.2014
Trabalho incrнvel. E que tudo fique pronto logo pra gente poder jogar.
Re: INPCS - grave arquivos de NPCs dinвmicamente -
n0minal - 07.08.2014
Parabйns Bruno, finalmente Threads \o/ Espero que termine esse plugin
Re: INPCS - grave arquivos de NPCs dinвmicamente -
Ts3 - 07.08.2014
Muito bom o plugin, parabйns уtimo trabalho.
Re: INPCS - grave arquivos de NPCs dinвmicamente -
WLSF - 07.08.2014
Obrigado pelos crйditos, tamo junto.