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:
comment_1492959
wat bedoel je met
NPCconnect("naam","??npcmode??");
?

Die code doet een bot connecten, bij die naam, vul je dan naam van de bot in voor in de server.

maar waarover je vraag gaat, je bot staat in npcmode met een bepaalde file naam je moet bij het gedeelte waarbij jij: ??npcmode?? zette de naam van de file zetten ;) (botnaam.amx) zonder de .amx ;) ik hoop dat ik je vraag goed beantwoord heb?

ja dat "botnaam.amx" kan je die zelf maken, in pawn of?

ps: ik weet het verschil tussen amx en pwn wel hoor ;)

Bewerkt: door Crusher!!

  • 2 weken later...
Geplaatst:
  • Auteur
comment_1503294

Tutorial is nog eens geupdate en de volgende update zal niet lang duren, alleen zijn de laatste 2 delen wat meer bij elkaar geplakt dit heb ik zo niet in de text editor gedaan maar die kiest blijkbaar zelf wat die wil doen.

Geplaatst:
comment_1503384
Tutorial is nog eens geupdate en de volgende update zal niet lang duren, alleen zijn de laatste 2 delen wat meer bij elkaar geplakt dit heb ik zo niet in de text editor gedaan maar die kiest blijkbaar zelf wat die wil doen.

Lolled :puh: je bent gepwnd door je eigen tut xd

maarja leuk gedaan deze tut.. (kijk ff in je PM box)

Geplaatst:
  • Auteur
comment_1504154

Dat in een voertuig zetten gebeurd in de gl_npcs lees dat stukje opnieuw. (zoek het stukje van PutPlayerInVehicle)

Het voertuig moet al gespawnd zijn in de gamemode ;)

EDIT: dat deel van PutPlayerInVehicle moet nog komen, ik zal dit zo snel mogelijk zetten bij Bot laten connecten!

Bewerkt: door megadreams

  • 4 weken later...
Geplaatst:
comment_1525466

Ik heb ook het topic bij forum.sa-mp doorgelezen maar ik heb een paar vraagjes over de bots, limieten of mogenlijkheden.

- Is het mogenlijk om een bot te laten richten en schieten op spelers? Of een dat een NPC iemand achterna loopt?

- Is het mogenlijk om een reactie erin te zetten? bijvoorbeeld dat als hij word beschoten dat hij dan terug vuurt, of andere dingen, als de auto ontploft dat hij dan naar een andere actie overgaat,

blijkbaar wel, kan het alleen niet testen want heb wat problemen met mijn server, maar ik neem aan dat het werkt:

Klik hier!

Bewerkt: door propje400

Geplaatst:
comment_1529326

Dat forum van sa-mp daar moeten ze echt iets aan doen. Hele tijd offline. Eigenlijk heel sa-mp.com offline, ze moeten een nieuwe host zoeken.

Maar wat mijn probleem nu is. Ik kan niet recorden omdat ik een 'Server: Unkown Command' melding krijg. Mijn code:

#include <a_samp>
#include <dudb>

#pragma unused ret_memcpy

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
return 1;
}

public OnFilterScriptExit()
{
return 1;
}

#else

main()
{
print("\n----------------------------------");
print(" NPC Script ");
print("----------------------------------\n");
}

#endif

public OnGameModeInit()
{
return 1;
}

public OnGameModeExit()
{
return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256], tmp[256], idx, RecordFile[128][MAX_PLAYERS];
cmd = strtok(cmdtext, idx);
new Recording[MAX_PLAYERS]=0;
if (strcmp(cmd, "/recording", true) == 0)
{
    tmp = strtok(cmdtext, idx);
    RecordFile[playerid] = tmp;
    if(!strlen(tmp))
    {
        SendClientMessage(playerid, ROOD, "[Gebruik]: '/recording 1 [bestand-naam]' om te starten!");
        SendClientMessage(playerid, ROOD, "[Gebruik]: '/recording 2' om te stoppen");
    }
    else
    {
	       if(strval(tmp) == 1)
	       {
			if(GetPlayerState(playerid) == 1)
			{
		    	    StartRecordingPlayerData(playerid, PLAYER_RECORDING_TYPE_ONFOOT, tmp);
		    	    SendClientMessage(playerid, GROEN, "je neemt nu alles lopend op");
		    	    Recording[playerid] = 1;
			}
			else if(GetPlayerState(playerid) == 2)
			{
		    	    StartRecordingPlayerData(playerid, PLAYER_RECORDING_TYPE_DRIVER, tmp);
		    	    SendClientMessage(playerid, GROEN, "Je neemt nu alles rijdend op");
		    	    Recording[playerid] = 1;
			}
		}
		if(strval(tmp) == 2)
		{
		    if(Recording[playerid] == 1)
		    {
			StopRecordingPlayerData(playerid);
	    		SendClientMessage(playerid, GROEN, "Alles wat je hebt gedaan is opgeslagen in: /scriptfiles/[bestand-naam].rec !");
	    		Recording[playerid] = 0;
		    }
		    else
		    {
			    SendClientMessage(playerid, ROOD, "Je bent niet aan het opnemen!");
		    }
		}
		else
		{
		    SendClientMessage(playerid, ROOD, "kies uit 1 of 2!");
		}
	}
	return 1;
}
return 0; // ook al 'return 1;' geprobeerd
}

De kleur definities zitten in de include Kleuren die in a_samp zit. Daar krijg ik dus ook geen errors. Ik krijg ook geen errors of warnings.

.

Bewerkt: door CAR

  • 1 maand later...
Geplaatst:
comment_1559349

Ik ben nu druk bezig met de NPC, en een heleboel lukt ook al,

Maar nu heb ik een probleempje,

Ik heb een loop-route ge-record, maar zonder wapens.

Nu wil ik een wapen aan mijn NPC toevoegen, Hoe doe ik dat?

De code klopt, hij krijgt een andere skin, maar blijft zonder wapen rondlopen.

Weet iemand hoe ik dit oplos?

forward place();
public place()
{
Cop1 = GetPlayerID("Cop1");
SetPlayerSkin(Cop1,280);
GivePlayerWeapon(Cop1,24,1000);
SetPlayerArmedWeapon(Cop1,24);
return 1;
}

De route sluit nu goed aan dus ik wil hem het liefst niet overnieuw opnemen.

Bewerkt: door mosweg

Geplaatst:
  • Auteur
comment_1559355

Volgens mij is het niet mogelijk een bot een wapen te geven ajoewel, ik volgens mij wat anders heb gezien blijf proberen en ik zal zelf ook nog wel zoeken of het gaat of niet.

EDIT: en wat ik hierboven zei bedoel ik dit mee: Klik hier

Bewerkt: door megadreams

Geplaatst:
comment_1559360

Volgens mij is het niet mogelijk een bot een wapen te geven ajoewel, ik volgens mij wat anders heb gezien blijf proberen en ik zal zelf ook nog wel zoeken of het gaat of niet.

EDIT: en wat ik hierboven zei bedoel ik dit mee: Klik hier

Als je hem record terwijl je een wapen vast heb lukt het wel, maar ik wil liever niet overnieuw recorden, eigenlijk zou je zoiets moeten kunnen veranderen in de .rec

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.