[FilterScript] Trabalhando com Zumbis RNPC (inacabado)

9 de jan. de 2013.
Como prometido, estarei trazendo um código completinho e básico para trabalhar com RNPCS

Para ZUMBIS, nesse caso, está apenas para seguir o jogador de forma bonita, em breve estarei implementando como fazer para tirar vida e seguir apenas o jogador mais perto!

Usando RNPC

Funções:

Código PHP:
MoveRNPC npcidposicaoXposicaoYposicaoZvelocidade)  
Essa função faz o NPC ir para uma posição a partir da atual, com uma velocidade definida ali nos parâmetros.
Código PHP:
ConnectRNPC("nome")  
Essa função conecta um RNPC ao jogo, o nome do NPC é o nome definido logo acima, a função ConnectRNPC retorna o id do npc conectado

Fiz para servidor 0.3x RC

Importante:

Caso dar falta de dlls ao abrir o samp-server.exe baixe essas daqui:
msvcr100d.dll
msvcp100d.dll

Coloque na pasta do servidor ou na pasta system32 do windows em disco local!

Tutorial

Primeiramente:
Coloque:
pawn Código:
#include <RNPC>
No topo do código assim estará carregando a biblioteca rnpc.inc contida em pawno/includes

Após isto coloque o seguinte logo abaixo:
pawn Código:
#define MAX_ZUMBIS 5 #undef MAX_PLAYERS #define MAX_PLAYERS 10
Assim vai definir o número de jogadores zumbis a ser criado bem como o número máximo de jogadores do servidor

Agora logo abaixo crie:
pawn Código:
new NPCSZUMBIS[MAX_ZUMBIS];
Essa array serve para registrar a identificação do zumbi a ser criado

Logo em OnGameModeInit você coloca
pawn Código:
for(new i; i != MAX_ZUMBIS; ++i)     {         static string[128];         format(string, 128, "Zumbi_%d", i);         NPCSZUMBIS[i] = ConnectRNPC(string);     }
A primeira linha vai fazer um loop percorrendo de 1 a MAX_ZUMBIS, que vai criando todos NPCS Zumbis

Logo abaixo tem a string e format, ambos servem para formar um nome para o NPC zumbi, logo que ao conecta-lo devemos atribuir um nome.

ConnectRNPC vai conectar o zumbi e retornar a identificação dele, que logo após será colocada em NPCSZUMBIS

Logo abaixo disto você coloca
pawn Código:
SetTimer("PerseguirJogador", 800, true);
Isto vai chamar uma função chamada PerseguirJogador a cada 800 ms. Assim atualizando a caminhada do nosso jogador

Na função, que fica logo abaixo da última linha do codigo deverá conter isto:
pawn Código:
PerseguirJogador(); public PerseguirJogador() {     for(new i; i != MAX_ZUMBIS; i++) { // pegar todos jogadores possíveis         if(IsPlayerNPC(i)) // checar se é zumbi         {             for(new j ; j != MAX_PLAYERS; j ++) { // pegar todos jogadores possíveis                 if(IsPlayerConnected(j) && !IsPlayerNPC(j)) { // pegar todos jogadores online não npcs conectado para persegui-los                     static Float: rnpcpos[3];                     GetPlayerPos(j, rnpcpos[0], rnpcpos[1], rnpcpos[2]); // pegar posição do jogador, para segui-lo em movernpc                     new Float: angle; GetPlayerFacingAngle(i, angle); // pegar angulo do npc                     MoveRNPC(i, rnpcpos[0] + floatsin(angle - 90.0, degrees) * (1.0 + random(15)), rnpcpos[1] + floatcos(angle - 90.0, degrees) * (1.0 + random(15)), rnpcpos[2], RNPC_SPEED_RUN);                     // movernpc vai mover o rnpc zumbi para posição pega do jogador                     // com esse floatsin e floatcos fará os npcs andarem separados, evitando lag e deixando um estilo mais inteligente de caminhada                 }             }         }     } }
E pronto, o básico já está criado.

Demonstração:
Fiz um vídeo para demonstrar como ficou o código baixado no pacote acima.

Download:
Já esta tudo configurado no pacote, com includes modificadas e as DLLS do RNPC corretamente colocadas. Com pacote inteiro do RNPC, Includes e Gamemode

http://www.solidfiles.com/d/9fdb6a8c31/

Creditos: ipsBruno

0 comentários:

Postar um comentário