[FilterScript] Trabalhando com Zumbis RNPC (inacabado)
#1

Como prometido, neste tуpico 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:
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


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 Код:
#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 Код:
#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 Код:
new NPCSZUMBIS[MAX_ZUMBIS];
Essa array serve para registrar a identificaзгo do zumbi a ser criado


Logo em OnGameModeInit vocк coloca

pawn Код:
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 Код:
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 Код:
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.


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/



Demonstraзгo

Fiz um vнdeo para demonstrar como ficou o cуdigo baixado no pacote acima
[ame]http://www.youtube.com/watch?v=pjPjqEtIi5E[/ame]

Em breve estarei atualizando o tуpico para fazer o zumbi tirar vida e seguir apenas o jogador mais perto. Fique atento!
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 2 Guest(s)