Criar o .rec
Primeiro de tudo, precisamos do "playback" que é a gravação do nosso npc, sem isso,
o NPC nunca iria trabalhar.
Começa o um server, entra na rcon ("/rcon login <a_tua_rcon_pass>") e inicia o fs
chamado npc_record ("/rcon loadfs npc_record")
Agora há 3 commandos para gravar um NPC, no filterscript npc_record.
- /vrecord <nome> - Para começares a gravar enquanto estás num vehiculo.
- /ofrecord <nome> - Para começares a gravar enquanto não estás num vehiculo.
- /stoprecord - Para parares de gravar o teu NPC.
NOTA: Precisas de estar loggado rcon, para começares a gravar.
Coduzes um bocado... quando acabares faz /stoprecord.
Fecha o jogo, vai a pasta "scriptfiles", deve estar ai um ficheiro chamado mynpc.rec.
Mete o mynpc.rec dentro deste directorio: <O teu directorio do SA-MP>/npcmodes/recordings/
Ja está? Muito bem! Agora ja temos o nosso NPC gravado, e no local certo.
Controlar o NPC
Ja viste que dentro do directorio "npcmodes" estão la varios scripts. São "mini" scripts que
controlam o que o teu NPC faz.
Vamos la criar o script do NPC.
Começa um novo ficheiro pawno, e cola isto
pawn Code:
#define RECORDING "mynpc" //This is the filename of your recording without the extension. #define RECORDING_TYPE 1 //1 for in vehicle and 2 for on foot. #include <a_npc> main(){} public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING); #if RECORDING_TYPE == 1 public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING); public OnNPCExitVehicle() StopRecordingPlayback(); #else public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING); #endif
Vamos la então rever.
pawn Code:
#define RECORDING "mynpc" //Vai ser o nome, do .rec que gravamos
pawn Code:
#define RECORDING_TYPE 1 //1 para dentro do vehicle, 2 para se o bot estiver a pé
pawn Code:
#include <a_npc>
pawn Code:
public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
pawn Code:
public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);
pawn Code:
public OnNPCExitVehicle() StopRecordingPlayback();
pawn Code:
public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
Como vês é facil. Agora grava o teu "mynpc.pwn" em <O teu directorio do SA-MP>/npcmodes.
Connectar o teu NPC
Fecha o mynpc.pwn, e abra o teu GameMode ou abra um Filterscript.
pawn Code:
ConnectNPC("Dave","mynpc");
pawn Code:
public OnGameModeInit() { print("my gamemode"); ConnectNPC("MyFirstNPC","mynpc"); return 1; }
Ou se for um Filterscript
pawn Code:
public OnFilterScriptInit() { print("my filterscript"); ConnectNPC("MyFirstNPC","mynpc"); return 1; }
Como criamos o NPC dentro de um vehiculo precisamos de criar um vehiculo.
NOTA: SE ESTÁS A CRIAR UM NPC NUM VEHICULO, PASSA ESTE PASSO.
pawn Code:
new MyFirstNPCVehicle; //Global variable! public OnGameModeInit() { print("my gamemode"); ConnectNPC("MyFirstNPC","mynpc"); MyFirstNPCVehicle = CreateVehicle(400, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000); return 1; }
pawn Code:
new MyFirstNPCVehicle; //Global variable! public OnFilterScriptInit() { print("my filterscript"); ConnectNPC("MyFirstNPC","mynpc"); MyFirstNPCVehicle = CreateVehicle(400, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000); return 1; }
Só mais uma coisa antes de poderes testar, temos de po-lo num vehiculo.E
Eu fiz no OnPlayerSpawn.
NOTA: SE O TEU NPC NÃO USA VEHICULO, PASSA ESTE PASSO.
pawn Code:
public OnPlayerSpawn(playerid) { if(IsPlayerNPC(playerid)) //Checka se o player que fez spawn é um NPC { new npcname[MAX_PLAYER_NAME]; GetPlayerName(playerid, npcname, sizeof(npcname)); //Getar o nome do NPC if(!strcmp(npcname, "MyFirstNPC", true)) //Checkar se o nome do NPC é MyFirstNPC { PutPlayerInVehicle(playerid, MyFirstNPCVehicle, 0); //Por o NPC que criarmos dentro de um vehiculo } return 1; } //Other stuff for normal players goes here! return 1; }
Se quiseres adicionar mais do que 1 NPC
pawn Code:
public OnPlayerSpawn(playerid) { if(IsPlayerNPC(playerid)) //Checka se o player que fez spawn é um NPC { new npcname[MAX_PLAYER_NAME]; GetPlayerName(playerid, npcname, sizeof(npcname)); //Getar o nome do NPC if(!strcmp(npcname, "MyFirstNPC", true)) //Checkar se o nome do NPC é MyFirstNPC { PutPlayerInVehicle(playerid, MyFirstNPCVehicle, 0); //Por o NPC que criarmos dentro de um vehiculo return 1; } if(!strcmp(npcname, "MySecondNPC", true)) { PutPlayerInVehicle(playerid, AnotherVehicleID, 0); return 1; } return 1; } //Other stuff for normal players goes here! return 1; }
Vês o NPC? Parabens! Acabas-te de criar o teu primeiro NPC!
Não trabalha? Posta aqui o problema, e vamos falar sobre ele para tentar arranjalo!
Problemas comuns
O meu NPC desconecta, logo que entra
Pode ser um anti cheat, ou o player tem de registrar ou é kickado. Adiciona
[pawn]
if(IsPlayerNPC(playerid)) return 1;
O meu NPC não entra
Mais provavel é porque o server tem password.
Não consigo que o npc_record faça load
Ja está loaded, ou então não está criado.
O npc só fica parado no spawn
Revolta a ver o OnPlayerSpawn
Espero que gostem
Isto foi feito por kc.
Eu só traduzi.
0 comentários:
Postar um comentário