Pasul 1
Descarcati aces FS de aici, si bagati in filterscript editati server.cfg si la linia cu filterscripts adaugati npc_record.

Pasul 2
Deschidem server, intram in joc si tastam /rcon login ( rcon din server.cfg), dupa tastam /vrecord {nume} intr-un vehicul ca sa facem inregistrarea. Dupa ce am facut inregistrarea tastam /stoprecord.

Pasul 3
Mergem in scriptfiles si avem nume.rec (nume insemnand ce ati scris voi la /vrecord {nume}) si il mutam in folderul cu npcmodes -> recordings.

Pasul 4
Deschidem pawno, facem un nou script si adaugam in el:
Code: [Select]
#define RECORDING "nume" //numele inregistratii
#define RECORDING_TYPE 1 //1 npc fiind in vehicul

#include <a_npc>
main(){}
public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);
public OnNPCExitVehicle() StopRecordingPlayback();
Salvam si compilam si folderul npcmodes.

Pasul 5
Mergem in gamemode si salvam vehiculul si ii facem conexiunea !
Definim global:
Code: [Select]
new buscar1;

la public OnPlayerSpawn adaugam:
Code: [Select]
if(IsPlayerNPC(playerid))
{
new npcname[MAX_PLAYER_NAME]; GetPlayerName(playerid, npcname, sizeof(npcname));
if(!strcmp(npcname, "Mihai", true))// Mihai find numele botului
{
PutPlayerInVehicle(playerid, buscar1, 0);// pune botul in vehicul
SetPlayerSkin(playerid, 253);// skinul botuui
SetPlayerColor(playerid,COLOR_WHITE);// culoare lui
PlayerInfo[playerid][pCarLic] = 1;// in caz ca vreti sa adaugati pe RP mai recomandat este sa ii dati licenta
return 1;
}
}

Bagam vehiculul la public OnGameModeInit():
Code: [Select]
buscar1 = AddStaticVehicle(coordonate, etc...); //

si tot aici adaugam:
ConnectNPC("Mihai","nume");// nume find .amx din npcmodes iar Mihai numele botului

Mergem la public OnPlayerRequestClass si adaugam:
Code: [Select]
if(IsPlayerNPC(playerid))
{
new playername[64];
GetPlayerName(playerid,playername,64);

if(!strcmp(playername,"Mihai",true)) { // Mihai fiind numele botului
SetPlayerColor(playerid,COLOR_WHITE); // culoare lui
SetSpawnInfo(playerid,69,236,1462.0745,2630.8787,10.8203,0.0,-1,-1,-1,-1,-1,-1);
}
return 1;
}

Mergem la public OnPlayerConnect(playerid)
Code: [Select]
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) {
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);
}

Si mai avem de adaugat la public OnPlayerDisconnect
Code: [Select]
if(IsPlayerNPC(playerid))
return 1;

Sursa: http://www.sa-mp.ro/forum/index.php/topic,13609.0.html