Hali. Szóval beraktam a szerverre 1 NPC -t, és mindig mintha elteleportálna onnan, majd vissza. Videó: http://www.youtube.com/watch?v=RwCkxtAxlgc
Felvettem /ofrecord paranccsal az NPC -t, majd az NPC_Boltos.rec fájlt az npcmodes/recordings mappába másoltam. Utána létrehoztam egy NPC_Boltos.pwn nevû fájlt az npcmodes mappába, amit átfordított a pawno hiba nélkül, tartalma:
#define RECORDING \"NPC_Boltos\" // Ez az NPC-d neve, melyet felvettél
#define RECORDING_TYPE 2 // Az NPC közlekedése, 1 ha jármût vezet, 2 ha gyalogol
#include <a_npc> // Az NPC függvénykönyvtár beágyazása
public OnRecordingPlaybackEnd ( )
{
StartRecordingPlayback ( RECORDING_TYPE, RECORDING );
return 0;
}
#if RECORDING_TYPE == 1 // Ha az NPC típusa jármûves vezetõ
public OnNPCEnterVehicle ( vehicleid, seatid )
{
StartRecordingPlayback ( RECORDING_TYPE, RECORDING );
return 0;
}
public OnNPCExitVehicle ( )
{
StopRecordingPlayback ( );
return 0;
}
#else // Viszont ha gyalogos
public OnNPCSpawn ( )
{
StartRecordingPlayback ( RECORDING_TYPE, RECORDING );
return 0;
}
#endif
Majd csatlakoztattam OnGameModeInit() alatt:
ConnectNPC (\"NPC_Boltos\",\"NPC_Boltos\");
OnPlayerSpawn alatt pedig kap a feje fölé egy 3DTextet, egy interiort, és egy skint:
if(!strcmp(npcname,\"NPC_Boltos\",true))
{
SetPlayerInterior(playerid, 6);
CreateDynamic3DTextLabel(\"[NPC] Eladó\", 0x00BFFFFF, 0, 0, 0.5, 20.0, playerid, INVALID_VEHICLE_ID, 0);
SetPlayerSkin(playerid, 210);
}
Nem hinném hogy azért tûnik el mert rövid a felvétel, ugyanis kb. 20 másodperces felvételeket készítettem, hogy ne másodpercenként indítsa újra a felvételt.
SetPlayerPos(playerid, x,y,z);//az xyxt cseréld arra ahol akarod hogy legyen
Ezt kihagytad a OnPlayerSpawn-nál.
Igen de nem csak NPC spawn kell..
Szerintem így:
OnPlayerSpawn(playerid)
{
if ( IsPlayerNPC ( playerid ) ) // Ellenõrzi a szerver, hogy a játékos NPC játékos-e
{
new npcname [ MAX_PLAYER_NAME ]; // Létrehozunk egy változót
GetPlayerName ( playerid, npcname, sizeof ( npcname ) );
if ( !strcmp ( npcname, \"NPC NEVE\", true ) )
{
StartRecordingPlayback ( RECORDING_TYPE, RECORDING );
SetPlayerPos(playerid, x,y,z);
}
return 1;
}
public OnNPCSpawn ( )
{
StartRecordingPlayback ( RECORDING_TYPE, RECORDING );
return 0;
}
Ezt Írd Át erre:
public OnNPCSpawn ( )
{
SetMyPos(x,y,z);//ide ird be a poziciot
return 0;
}
vagy ha nem jó
public OnNPCSpawn ( )
{
SetMyPos(x,y,z);//ide ird be a poziciot
StartRecordingPlayback ( RECORDING_TYPE, RECORDING );
return 0;
}
Remélem segített, most nem vok sa-mp közelében, de ha küldesz egy képet és egy pozíciót hogy hol álljon az npc, megcsinálom neked