Skip to content
View in the app

A better way to browse. Learn more.

GTAGames.nl - De Nederlandse Grand Theft Auto Community!

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

npc doet niet wat ik wil :S

hallo,

tjah, weer geen tut maar een raar probleem. ik wilde voor mijn RP gedeelte in mijn server een npc neerzetten die fietsen verkoopt :puh:. dus moet ik eerst gewoon een NPC hebben staan. nu heb ik dit stukje code bij OnGameModeInit

ConnectNPC("Jake", "bikedealer");

ja het kleine scriptje van deze npc heet bikedealer

verder dus bij OnPlayerConnect :

	if(IsPlayerNPC(playerid))
{
	        new npcname[MAX_PLAYER_NAME];
		GetPlayerName(playerid, npcname, sizeof(npcname)); //De naam aanvragen
		if(!strcmp(npcname, "Jake", true))
	{
		SetPlayerSkin(playerid, 28);
		label[playerid] = Create3DTextLabel("Jake", BLAUW, 0,0,0,0,0,0);
		Attach3DTextLabelToPlayer(label[playerid], playerid, 0,0,0.7);
		return 1;
	}
}

de NPC spawnt wel maar alleen gewoon als een CJ poppetje zonder textlabel.

volgens mij heb ik simpelweg iets over het hoofd gezien alleen weet ik niet wat.

weet iemand mischien waarom dit niet werkt

alvast bedankt.

-M

Edited by Morph1

Featured Replies

Zet dat hele stukje dan eens onder OnPlayerSpawn. ;)

  • Author
volgens mij heb ik simpelweg iets over het hoofd gezien alleen weet ik niet wat.

XD

als jij er toch niet was Big Boss :bier:

weet iemand nog een special action (of een applyanimation) zodat mijn NPC een beetje beweegt, en dus niet dood lijkt.

Edited by Morph1

  • Author

haha, ik heb weer een probleem, ik ben erachter gekomen dat als je 1 npc heb dat hij altijd het spelerid 0 heeft. ik probeerde het even met boost en kick en hij kreeg inderdaad zijn geld en punten en hij werdt gekickt XD. dus had ik dit uitgedacht :

onplayerspawn:

	if(IsPlayerNPC(playerid))
{
		new npcname[MAX_PLAYER_NAME];
		GetPlayerName(playerid, npcname, sizeof(npcname)); //De naam aanvragen
		if(!strcmp(npcname, "Jake", true))
	{
		SetPlayerSkin(playerid, 28);
	 	label[playerid] = Create3DTextLabel("Jake [bikeDealer]", 0x0000FFAA, 30.0,40.0,50.0, 40.0,0);
	 	Attach3DTextLabelToPlayer(label[playerid], playerid, 0,0,0.2);
	 	ApplyAnimation(playerid, "ON_LOOKERS", "wave_loop", 4.0, 1, 0, 0, 0, 0);
		return 1;
	}
}

hier zwaait de NPC nu dus. dus ik dacht als hij nu ziet dat je in de buurt komt kruist hij zijn armen en gaat hij stil staan :

	if(IsPlayerInRangeOfPoint(playerid, 11.0, 1508.4408,-1663.0276,13.5469))
{
    ApplyAnimation(0, "COP_AMBIENT", "Coplook_loop", 4.0, 0, 1, 1, 1, -1);
}

dit staat uiteraard bij OnPlayerUpdate.

nu is het probleem dat de server de NPC ook als een speler ziet. dus houdt hij continu zijn armen gekruisd, is het mogelijk om de server te laten zien dat het geen echte speler is maar dat het wel zo blijft werken.

Heb niet zoveel verstand van NPC's, maar miss werkt het als je het zo doet:

if(IsPlayerInRangeOfPoint(playerid, 11.0, 1508.4408,-1663.0276,13.5469))
{
   if(!IsPlayerNPC(playerid))
   {
       ApplyAnimation(0, "COP_AMBIENT", "Coplook_loop", 4.0, 0, 1, 1, 1, -1);
   }
   else if(IsPlayerNPC(playerid))
   {
       return 1;
   }
}

Enkel ID 0 gebruiken is een slecht idee. Als de npc om de 1 of andere reden uit de server gaat en bv er weer in komt (mogelijk in restart)? Dan kan hij een andere spelerid aannemen en dan werkt het natuurlijk niet meer.

Edited by Megadreams

  • Author

maar hoe wil je dan de NPC aanduiden bij de Playerid?

edit: TY killer37, eerst had ik mijn point maar op een plek voor de npc gezet maar als ik er toen inliep krijg hij alleen maar spastische trekjes als hij zijn armen moest kruisen, nu gebeurt het wel goed, verder heb ik er nog een stukje aan toegevoegd dat als ik uit het gebied gaat dat hij dan weer begint te zwaaien,

en @ megadreams, ik ga morgen wel even die connectNPC aan een variable toewijzen, kijken of dat dan werkt.

Edited by Morph1

ConnectNPC returned niets. Maar je kan ook kijken of de speler een NPC is en op de naam om dit te bereiken. Via de naam haal je dan weer de ID op.

Je kan hiervoor deze fnctie gebruiken (die ik uit de Useful Functions include heb gehaald):

stock GetPlayerID(const playername[], partofname=0) //By Jan "DracoBlue" Schütze (edited by Gabriel "Larcius" Cordes)
{
new i;
new playername1[MAX_STRING];
for (i=0;i<MAX_PLAYERS;i++)
{
	if (IsPlayerConnected(i))
	{
		GetPlayerName(i,playername1,sizeof(playername1));
		if (strcmp(playername1,playername,true)==0)
		{
			return i;
		}
	}
}
new correctsigns_userid=-1;
new tmpuname[MAX_STRING];
new hasmultiple=-1;
if(partofname)
{
	for (i=0;i<MAX_PLAYERS;i++)
	{
		if (IsPlayerConnected(i))
		{
			GetPlayerName(i,tmpuname,sizeof(tmpuname));
			if (strfind(tmpuname,partofname,true)==0)
			{
				hasmultiple++;
				correctsigns_userid=i;
			}
			if (hasmultiple>0)
			{
				return -2;
			}
		}
	}
}
return correctsigns_userid;
}

const playername[]: Hier moet je de naam van de speler inzetten die je dus opgehaald hebt.

partofname=0: Is de naam een stuk van een naam (1) of is het de hele naam (0). In dit geval dus 0.

Als je sscanf gebruikt kan het daarmee ook;

stock GetPlayerID(const name[])
{
   new
       id;

   sscanf(name, "u", id);
   return id;
}

  • Author

Als je sscanf gebruikt kan het daarmee ook;

stock GetPlayerID(const name[])
{
   new
       id;

   sscanf(name, "u", id);
   return id;
}

lol ik heb totaal geen ervaring met stock, ja ik gebruik scanff, dus als ik dan deze code onderaan neerzet en dan in plaats van die "0" kan ik dan "id" neerzetten.

dat is wat ik er uit begrijp. maar tevens is dat onmogelijk omdat hij vervolgens dan gewoon de spelerid van de speler die in dat gebied loopt pakt. dus als ik dit onderaan zet, welke naam/variable moet ik dan gebruiken op de plek van "playerid"?

Edited by Morph1

Join the conversation

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

Guest
Reply to this topic...

Recently Browsing 0

  • No registered users viewing this page.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.