Saltar al contenido
  • Global

    Global

    Chatroom Rules

    • NO SE DA SOPORTE EN CHATBOX
    • NO SPAM
    • NO FLOOD

Como crear NPC (SemiBot)En Sa-mp 0.3


Publicaciones recomendadas

  • Usuario
Publicado

AVISO ESTA WEA NO ES MIA ASI KE NO WEBEEN POR LOS CREDITOS ES DE KINGWORLD DE PAWNOSCRIPTING.COM

 

 

 

 

 

 

 

 

/vrecord te gravas en un vehiculo

 

/ofrecord te gravas andando a pie

 

/stoprecord detienes la gravacion

 

 

 

muy bien para empesar entramos al server y nos logeamos como rcon, ahora vamos a elegir el personaje que queremos gravar o el vehiculo, una ves elegido vemos que recorrido ba a ase este "bot", una ves desidido lo llevamos a la pratica, ponemos: /vrecord nombre o /ofrecord nombre y empesar a gravar disiendonos: Recording: started, ahora lo que ases es aser el recorrido que ara el NPC, una ves que termines de acerlo pones /stoprecord, automaticamente en la carpeta scriptfiles aparesera un archivo llamado: elnombrequeelegiste.rec, este lo moves a: npcmodes\recordings, hay estaria finalizado la primera parte, ahora creamos un nuevo archivo .pwn, con el mismo nombre que el archivo.rec, y en este ponemos:

 

 

 

 

Spoiler para CODIGO:
#include <a_npc>

new gPlaybackFileCycle=0;

#define NUM_PLAYBACK_FILES 1 //este numero depende de cuanto .rec unas

main(){}

NextPlayback()

{

// Reset the cycle count if we reach the max

if(gPlaybackFileCycle==NUM_PLAYBACK_FILES) gPlaybackFileCycle = 0;

 

if(gPlaybackFileCycle==0) {

StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER,"aca pone el name de el .rcord");

}

 

gPlaybackFileCycle++;

}

public OnRecordingPlaybackEnd()

{

NextPlayback();

}

 

 

eso es para gravar un peaton para gravar un vehiculo agregas al final de todo:

 

 

public OnNPCEnterVehicle(vehicleid, seatid)
{
NextPlayback();
}
public OnNPCExitVehicle()
{
StopRecordingPlayback();
gPlaybackFileCycle = 0;
}

 

 

 

 

 

 

 

Lo antrior ase que la gravacion que isiste se repita una y otra y otra vez.

ahora esplicare algunos codigos:

 

 

 

 

 

 

#define NUM_PLAYBACK_FILES 1

 

 

ese codigo sirve para definir cuantos gravaciones bayas a unir en el FS, para eso remplasa el 1 por el total de gravaciones.

 

 

if(gPlaybackFileCycle==0) {
   StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER,"nombre de el .rec");
  }

 

 

 

 

 

muy bien este es el codigo que une las gravaciones, ejemplo para unir 2 gravaciones quedaria asi:

 

 

 

 

 

if(gPlaybackFileCycle==0) {
StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER,"gravacion 1");
}
else if(gPlaybackFileCycle==1) {
StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER,"gravacion 2");
}

 

 

 

 

 

 

 

Nota: cada ves que agreges uno nuevo sumele un numero a los numeritos que estan en verde en el code anterior.

bueno con eso tenemos todo, copilamos el .pwn y lo guardamos en la carpeta npcmodes.

 

ahora el ultimo paso:

creamos un nuevo archivo .pwn y ponemos este code:

 

 

 

#pragma tabsize 0
#include <a_samp>
public OnFilterScriptInit()
{
ConnectNPC("nombre de el npc jemplo police","aca pone el name de el amx que creamos antes sin el .amx final");
return 1;
}
public OnPlayerConnect(playerid)
{
if(IsPlayerNPC(playerid)) {
new ip_addr_npc[64+1];
new ip_addr_server[64+1];
GetServerVarAsString("bind",ip_addr_server,64);
GetPlayerIp(playerid,ip_addr_npc,64);

if(!strlen(ip_addr_server)) {
ip_addr_server = "127.0.0.1";
}

if(strcmp(ip_addr_npc,ip_addr_server,true) != 0) {
// this bot is remote connecting
printf("NPC: Got a remote NPC connecting from %s and I'm kicking it.",ip_addr_npc);
Kick(playerid);
return 0;
}
printf("NPC: Connection from %s is allowed.",ip_addr_npc);
}

return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
if(!IsPlayerNPC(playerid)) return 0;

new playername[64];
GetPlayerName(playerid,playername,64);//hasta aca te aconsejo no modificar nada
if(!strcmp(playername,"el nombre que pusimos arriba ejemplo police",true)) {
SetSpawnInfo(playerid,cordenadas dnde nacera);//me olvide antes de gravar ase un /save de la pocicion en donde nace
}
return 0;
}
public OnPlayerSpawn(playerid)
{
if(!IsPlayerNPC(playerid)) return 1;

new playername[64];
GetPlayerName(playerid,playername,64);

if(!strcmp(playername,"nombre que pusimos arriba ejemplo police",true)) {
PutPlayerInVehicle(playerid,1,0);//esto ponelo si el bot va a estar en un vehiculo
SetPlayerColor(playerid,0xFFFFFFFF);//hay pone el color con el que se vera el bot en el mapa
}
return 1;
}

 

 

a este archivo copilalo y guardalo en la carpeta filterscrpt y lo agregas al server.cfg como un FS mas.

 

PD a mi me funciono de dies =D

 

tuto by: [sXe]m3rc3nari0

post oficial: pawnoscripting.com

en caso de copiar el tuto poner los derechos de autor y un lick asa este post.

 

 

 

fUENTE

 

 

Extra:

si no tenes el FS: npc_record aca les dejo el code:

 

 

//-------------------------------------------------
//
// Recording player data for NPC playback
// Kye 2009
//
//-------------------------------------------------

#pragma tabsize 0

#include <a_samp>
#include <core>
#include <float>

#include "../include/gl_common.inc"

//-------------------------------------------------
public OnPlayerConnect(playerid)
{
SendClientMessage(playerid,0xFF0000FF,"/vrecord /ofrecord /stoprecord");
}
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256];
new idx;
cmd = strtok(cmdtext, idx);

if(!IsPlayerAdmin(playerid)) return 0; // this is an admin only script

// Start recording vehicle data (/vrecord recording_name[])
// Find the recording_name[] file in /scriptfiles/
if(strcmp(cmd, "/vrecord", true) == 0) {
new tmp[512];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid,0xFF0000FF,"Usage: /vrecord {name}");
return 1;
}
if(!IsPlayerInAnyVehicle(playerid)) {
SendClientMessage(playerid,0xFF0000FF,"Recording: Get in a vehicle.");
return 1;
}
StartRecordingPlayerData(playerid,PLAYER_RECORDING_TYPE_DRIVER,tmp);
SendClientMessage(playerid,0xFF0000FF,"Recording: started.");
return 1;
}

// Start recording onfoot data (/ofrecord recording_name[])
// Find the recording_name[] file in /scriptfiles/
if(strcmp(cmd, "/ofrecord", true) == 0) {
new tmp[512];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid,0xFF0000FF,"Usage: /ofrecord {name}");
return 1;
}
if(IsPlayerInAnyVehicle(playerid)) {
SendClientMessage(playerid,0xFF0000FF,"Recording: Leave the vehicle and reuse the command.");
return 1;
}
StartRecordingPlayerData(playerid,PLAYER_RECORDING_TYPE_ONFOOT,tmp);
SendClientMessage(playerid,0xFF0000FF,"Recording: started.");
return 1;
}

// Stop recording any data
if(strcmp(cmd, "/stoprecord", true) == 0) {
StopRecordingPlayerData(playerid);
SendClientMessage(playerid,0xFF0000FF,"Recording: stopped.");
return 1;
}

return 0;
}

//-------------------------------------------------
// EOF

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invitado
Responder a este tema...

×   Pegar como texto enriquecido.   Pegar como texto sin formato

  Only 75 emoji are allowed.

×   Tu enlace se ha incrustado automáticamente..   Mostrar como un enlace en su lugar

×   Se ha restaurado el contenido anterior.   Limpiar editor

×   No se pueden pegar imágenes directamente. Carga o inserta imágenes desde la URL.

  • Explorando recientemente   0 miembros

    • No hay usuarios registrados viendo esta página.
×
×
  • Crear nuevo...