Jump to content
Geplaatst:
comment_1477820

Tutorial SA-MP 0.3a



Non Playing Characters (NPC) ~ Bots

Wat is een Non Playing Character?

Een Non Playing Character of afgekort NPC is zoals in de naam word vermeld een karakter die niet speelt een bot met andere woorden, deze bot doet alles wat jij wil maar je moet wel wat stoppen ondernemen voor het zover is zo moet je bijvoorbeeld de bot laten joinen, elke NPC neemt 1 slot in van je maximum aantal slots dus gebruik niet te veel bots als je weinig slots hebt anders heb je misschien straks helemaal geen slots meer over en dat wil je natuurlijk niet want dan kan niemand meer op je server.

Wat kan een NPC?

Een NPC kan lopen, rijden, schieten animaties uitvoeren, praten in de chat, commando's gebruiken en verder eigenlijk niets, maar hoe begin je hierin, dat ga ik natuurlijk uitleggen in de tutorial.

Hoe maak ik een NPC?

Natuurlijk moet je eerst een NPC maken voor deze ook daadwerkelijk je server kan joinen en doen wat hij moet doen hiervoor zijn er een paar dingens nodig, namelijk een script in npcmodes en eventueel een record in records in de npcmodes file en natuurlijk een gamemode of filterscript die de bot zal doen joinen en hem zal leiden tot hij spawnt.

NPCmodes

Dit is net als filterscripts en gamemodes alleen voor bots, in ConnectNPC verwijs je naar een npcmode, hierin staat alles wat de bot moet uitvoeren, een record uitvoeren, iets in de chat laten zeggen het kan allemaal.

Functies van NPC's

Helaas kunnen npc's niet erg veel ik zal hier alle functies in het kort uitleggen die je in een npcmode kan gebruiken.

GetDistanceFromMeToPoint(Float:X, Float:Y, Float:Z, &Float:Distance);

Hiermee haal je simpelweg op hoe ver de npc van een plaats is verwijderd.

Word(t) herschreven... :

Sorry voor de dubbelpost maar ik wil dit wel even aankondingen: Mijn tut (deze dus) is te verourderd ik ga hem volledig herschrijven waarschijnlijk vandaag nog.

(Je ziet de tutorial soms nu groter worden bij het herschrijven.)

Bewerkt: door megadreams

  • Reacties 56
  • Bezichtigingen 15.7k
  • Created
  • Laatste reactie

Top Posters In This Topic

Featured Replies

Geplaatst:
  • Auteur
comment_1559603

Door op de plaats waar je de bot doet connecten hem het interieur id mee te geven ;)

P.S: Ik zal 1 van de komende dagen waarschijnlijk deze tutorial herschrijven aangezien ik toch wel een paar dingens ben vergeten erin te zetten ;)

  • 2 weken later...
Geplaatst:
comment_1566711

Ik heb exact gedaan zoals in de tut beschreven staat.

Als ik de samp server.exe open staat er ook NAME_NAME (mijn bot) connected, net zoals de andere bots die er standaart bij ziten.

Maar als ik ig ga op de plaats waar ik gerecord heb, zie ik mijn bot niet.

Enig idee waar hij verstopt zit?

Geplaatst:
  • Auteur
comment_1567245

als hij in een voertuig moet zet dat dan zeker op de plaats wanneer hij joint dus via PutPlayerInVehicle

Maar ik ga deze tutorial herschrijven aangezien er toch wel wat mist.

EDIT: P.S: hij is verstopt op de spawn plaats ;)

Bewerkt: door megadreams

Geplaatst:
comment_1567261

Verstopt op de spawn plaats?

Mhm ik heb hem als:

(247 = recordfile).

(OnGameModeinit : gl_npcs)

ConnectNPC("John_Panasonic","247");
en bij OnPlayerRequestClass van gl_npcs:
else if(!strcmp(playername,"John_Panasonic",true)) 
{
     SetSpawnInfo(playerid,69,61,689.4172,-580.3832,16.3359,0.0,-1,-1,-1,-1,-1,-1);
}

Op de plaats waar de record begint o.a.

bij OnPlayerSpawn(gl_npcs)

else if(!strcmp(playername,"John_Panasonic",true)) 
{
   SetPlayerColor(playerid,0xFFFFFFFF);
}

Bij de 247.pwn file heb ik:

#include <a_npc>

#define NUM_PLAYBACK_FILES 1
new gPlaybackFileCycle=0;

//------------------------------------------

main(){}

public OnNPCConnect(myplayerid)
{
       NextPlayback();
       return 1;
}

NextPlayback()
{
StartRecordingPlayback(PLAYER_RECORDING_TYPE_ONFOOT,"/npcmodes/recording/247");



gPlaybackFileCycle++;
}

public OnRecordingPlaybackEnd()
{
       NextPlayback();
}  

De bot komt niet te voorschijn, enig idee? Of ga je dat nu verwerken in de rest van de tut waar je het over had?

Bewerkt: door 1112rutger

Geplaatst:
comment_1567561

Ohja foutje, hij zat al bij OnFilterScriptInIt...(Die connectNPC alleen).

Maar ik heb nu voor de duidelijkheid dus 3 GM's:

1. Mijn eigen GM

2. die gl_npcs

3. die 247.pwn file

Maar ook: 247.rec file.

Enig idee?

Geplaatst:
comment_1567808

De 247.rec staat bij npcmodes/recordings ja.

De 247.pwn/amx tevens niet, die staan bij npcmodes.

Een ding waaraan ik twijfel, mijn eigen gamemode heeft geen #include voor dit gedoe ofzo.

Geplaatst:
  • Auteur
comment_1567905

Je gamemode moet niet a_npc includen of iets met npc's maar een npcmode moet dan weer wel a_nps includen en niet a_samp

EDIT : fout gevonden jij hebt dit in je npcmode:

StartRecordingPlayback(PLAYER_RECORDING_TYPE_ONFOOT,"/npcmodes/recording/247");

Dat moet het volgende zijn:

StartRecordingPlayback(PLAYER_RECORDING_TYPE_ONFOOT,"247");

Bewerkt: door megadreams

Geplaatst:
comment_1568727

Ben weer op een probleem gestuit.

Ik heb nu een bot die c.a 10 seconden op zijn plek staat, zoals ik had gerecord.

Deze bot staat in een interior, en als ik in en daarna uit, daarna weer in de interior ga, is de bot weg (waarschijnlijk omdat ik te kort had gerecord).

Maar hoe zorg ik er nou voor dat die bot er voor altijd blijft staan?

  • 4 maanden later...
Geplaatst:
  • Auteur
comment_1670491

Sorry voor de dubbelpost maar ik wil dit wel even aankondingen: Mijn tut (deze dus) is te verourderd ik ga hem volledig herschrijven waarschijnlijk vandaag nog.

Bewerkt: door megadreams

Een reactie plaatsen

Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.

Gast
Op dit onderwerp reageren...

Recent actief 0

  • Er zijn hier geen geregistreerde gebruikers aanwezig.