[Plugin] INPCS - grave arquivos de NPCs dinвmicamente
#1

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


PHP код:
DestroyINPC(id
retira um npc do servidor
retorno: true



PHP код:
CreateBuild(playeridx,z); 
Funзгo mais importante do jogo, ela cria um arquivo de gravaзгo do npc na determinada posiзгo..



PHP код:
SaveBuild(id
Salva o trecho do arquivo de gravaзгo



PHP код:
FinishBuild 
Finaliza salvando todo arquivo de gravaзгo, depois dessa funзгo podes dar Play no NPC


PHP код:
PlayBuild(npc
Comeзa a gravaзгo do jogador.


PHP код:
SetNPCAngleToPlayer(npcplayer
Vira o angulo do npc para um jogador




PHP код:
SetNPCKey(npckey
Faz o NPC apertar uma tecla, por exemplo KEY_FIRE para atirar



PHP код:
SetNPCWeapon(npcwep
Coloca uma arma no NPC, caso wep = 0 tira as armas atuais.



PHP код:
SetNPCVelocity(npcx,y,z
Altera a velocidade do npc


PHP код:
SetNPCRepeat(npc,id
Repete o arquivo de gravaзгo atual


PHP код:
StopBuild(npc
Para o arquivo atual


PHP код:
MoveNPC(npcx,y,z,velocidade
Move o npc para um local, as velocidades sгo
Quote:

CORRER, COUPE e ANDAR

PHP код:
SetNPCUpDownKey 
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


PHP код:
SetNPCTime 
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



PHP код:
SetNPCPos 
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
Reply
#2

Muito bom bruno уtimo plugin!
Reply
#3

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
Reply
#4

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..
Reply
#5

уtimo trabalho Bruno.. estou ancioso pela versгo completa ^^
Reply
#6

Trabalho incrнvel. E que tudo fique pronto logo pra gente poder jogar.
Reply
#7

Parabйns Bruno, finalmente Threads \o/ Espero que termine esse plugin
Reply
#8

Muito bom o plugin, parabйns уtimo trabalho.
Reply
#9

Obrigado pelos crйditos, tamo junto.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)