Jump to content

HELP nieuwe spawnplaats op een bepaald gebied


Recommended Posts

Geplaatst: (bewerkt)

heey.

heeft iemand een code waarmee als spelers in een bepaald gebied doodgaan dat ze op een andere spawnplek komen te staan dan als je buiten dat gebied bent.

waarschijnlijk iets van :

bovenaan new area1

bij ongamemodeinit 
area1 = createzone(blablabla x y z enz enz)

en dan verderop 

if[playerid] == area1
{
SetPlayerClass(x,y,z enz enz blabla)
}

ik denk dat het zoiets moet zijn maar dat kan ook nog anders

kan iemand helpen (of zeggen als het onmogelijk is)

bedankt

Bewerkt: door Morph1
Geplaatst: (bewerkt)

Hmz, dan moet je toch zoiets maken:

new DidPlayerDieInArea[MAX_PLAYERS];

public OnPlayerConnect(playerid)
{
DidPlayerDieInArea[playerid] = 0;

public OnPlayerDeath(playerid, killerid, reason)
{
if(IsPlayerInArea(minx, maxx, miny, maxy))
{
	DidPlayerDieInArea[playerid] = 1;
}
}

public OnPlayerSpawn(playerid)
{
if(DidPlayerDieInArea[playerid])
{
	SetPlayerPos(...);
	DidPlayerDieInArea[playerid] = 0;
}
}

Dit is basic het idee, wil je meer area's toevoegen kan je natuurlijk de array nog een extra dimensie geven. Meld het ever als het is gelukt (of als dat juist niet het geval is :7)

Bewerkt: door David22
Geplaatst: (bewerkt)
sandras tut area's

klein beetje kunne scripten en dit lezen

http://www.gtaforum.nl/index.php?showtopic=62520

als je dat nog niet kan

http://www.gtaforum.nl/index.php?showtopic=67105

of lees gewoon de PMT list klik > PMT list < klik

29vze5l.jpg

ik kan wel scripen, doe het al meer dan een half jaar, maar wist alleen dat (kleine) dingetje niet, en die halve PMT list kan ik al uit me hoofd XD

EDIT: @david22 ik zal het proberen, ik laat het wel weten of het is gelukt

Bewerkt: door Morph1
Geplaatst:

Hmm, volgens mij kan je dan nog beter zoiets maken:

public OnPlayerDeath(playerid, killerid)
{
if(IsPlayerInArea(playerid, minx, miny, maxx, maxy))
{
	SetSpawnInfo(playerid, team, skin, x, y, z, a, w1, w1_a, w2, w2_a, w3, w3_a);
}
return 1;
}

Geplaatst: (bewerkt)
Hmm, volgens mij kan je dan nog beter zoiets maken:

public OnPlayerDeath(playerid, killerid)
{
if(IsPlayerInArea(playerid, minx, miny, maxx, maxy))
{
	SetSpawnInfo(playerid, team, skin, x, y, z, a, w1, w1_a, w2, w2_a, w3, w3_a);
}
return 1;
}

ow w8 effe dat wat ik net zij klopt niet xD, waarschijnlijk moet ik er dan ook nog een

if[playerid] == TEAM ARMY

enne dat van david ging volgens mij ook niet echt werken XD had wat errors enz maarja

Bewerkt: door Morph1
Geplaatst:

naja dit word zelf wat experimenteren xD

als iemand het nog weet dat alleen 1 team het heeft en dat de team en skinid hetzelfde blijven, wil diegene me dan even helpen?

bedankt

Geplaatst: (bewerkt)

lol, dit dan:

#define koek 1 
#define koffie 2
#define taart 3
#define pizza 4

AddPlayerClassEx(id, koek ,x,y,z, wapens....);
AddPlayerClassEx(id, koffie x,y,z, wapens....);
AddPlayerClassEx(id, taart  x,y,z, wapens....);
AddPlayerClassEx(id, pizza x,y,z, wapens....);

OnPlayerUpdate(playerid)
{
if (IsPlayerInArea(playerid,x,y,z);
{
	if (GetPlayerTeam(playerid) == koek)
   {
	  // code hier
   } 
	else if (GetPlayerTeam(playerid) == koffie)
   {
	  // code hier
   } 
	else if (GetPlayerTeam(playerid) == taart)
   {
	  // code hier
   } 
	else if (GetPlayerTeam(playerid) == pizza)
   {
	  // code hier
   } 
   else
  {
	  // als de speler niet in een team zit. wat flik je um dan :P
   }
}
// Thnx GtaF voor de goede uitlijning :s

Bewerkt: door Crusher!!
Geplaatst:
lol, dit dan:

#define poep 1
#define plas 2
#define taart 3
#define pizza 4

AddPlayerClassEx(id, koek ,x,y,z, wapens....);
AddPlayerClassEx(id, koffie x,y,z, wapens....);
AddPlayerClassEx(id, taart  x,y,z, wapens....);
AddPlayerClassEx(id, pizza x,y,z, wapens....);

OnPlayerUpdate(playerid)
{
if (IsPlayerInArea(playerid,x,y,z);
{
	if (GetPlayerTeam(playerid) == koek)
   {
	  // code hier
   } 
	else if (GetPlayerTeam(playerid) == koffie)
   {
	  // code hier
   } 
	else if (GetPlayerTeam(playerid) == taart)
   {
	  // code hier
   } 
	else if (GetPlayerTeam(playerid) == pizza)
   {
	  // code hier
   } 
   else
  {
	  // als de speler niet in een team zit. wat flik je um dan :P
   }
}
// Thnx GtaF voor de goede uitlijning :s

:clown: haha, leuke namen, ik zal kijken of het werkt ^_^

Geplaatst:

oke, ik heb nog 3 puntjes:

1) idd slechte uitlijning xD

2) je ben een haakje vergeten onderaan :D

3) ik heb 1 error, undefined simbol "IsPlayerInArea"

hier het stukje van mijn script :

public OnPlayerUpdate(playerid)
{
if (IsPlayerInArea(playerid,2966.18,2662.556,-2931.147,-3748.598)
{
	if (GetPlayerTeam(playerid) == TEAM_ARMY)
   {
	  AddPlayerClassEx(1,TEAM_ARMY,2691.6938,-4523.1011,28.4478,268.496928,31,500,31,500,24,500); // Extra spawnplace
   }
}
}

ging er maar vanuit dat OnPlayerUpdate een callback was dus...^_^

moet ik erboven nog iets zetten met dat IsPlayerInArea

Geplaatst:

stock IsPlayerInArea(playerid, Float:minx, Float:miny, Float:maxx, Float:maxy)
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
if (x > minx && x < maxx && y > miny && y < maxy) return 1;
return 0;
}

Dit voeg je ergens toe in je script, het liefst onderaan en niet in een andere callback. Tevens raad ik aan om dit op een timer te zetten, omdat OnPlayerUpdate maar liefst 30 keer per seconde opgeroepen wordt.

Geplaatst:
stock IsPlayerInArea(playerid, Float:minx, Float:miny, Float:maxx, Float:maxy)
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
if (x > minx && x < maxx && y > miny && y < maxy) return 1;
return 0;
}

Dit voeg je ergens toe in je script, het liefst onderaan en niet in een andere callback. Tevens raad ik aan om dit op een timer te zetten, omdat OnPlayerUpdate maar liefst 30 keer per seconde opgeroepen wordt.

moet dit i.p.v. dat wat ik heb of gewoon eronder.

en als je het OnPlayerUpdate niet op een timer zet, word de mode dan langzaam, en hoe moet je het anders op een timer zetten

Geplaatst:

Die stock-code moet je zoals Big Boss zegt gewoon ergens (het liefst onderaan, buiten je callbacks) in je script plakken.


Een timer maak je zo:

Plaats bovenaan je script, onder de defines een forward regel met de naam van je timer en de public waarin je straks de code oproept

Ik gebruik in dit voorbeeld als naam 'Voorbeeld', logisch.

forward voorbeeld();

Plaats nu bij de callback 'OnGameModeInit' de code waarin je de timer aanmaakt

Klik hier (SA-mp wiki) voor uitleg over de functie SetTimer.

public OnGameModeInit( )
{
SetTimer("voorbeeld",1000,false);
}

Maak nu de public van de timer aan, waarin je een actie uitvoert

De public heet weer hetzelfde als de naam van de timer en van de forward-regel, 'voorbeeld' dus.

public voorbeeld()
{
//voer hier je code uit
}

Geplaatst:
Die stock-code moet je zoals Big Boss zegt gewoon ergens (het liefst onderaan, buiten je callbacks) in je script plakken.


Een timer maak je zo:

Plaats bovenaan je script, onder de defines een forward regel met de naam van je timer en de public waarin je straks de code oproept

Ik gebruik in dit voorbeeld als naam 'Voorbeeld', logisch.

forward voorbeeld();

Plaats nu bij de callback 'OnGameModeInit' de code waarin je de timer aanmaakt

Klik hier (SA-mp wiki) voor uitleg over de functie SetTimer.

public OnGameModeInit( )
{
SetTimer("voorbeeld",1000,false);
}

Maak nu de public van de timer aan, waarin je een actie uitvoert

De public heet weer hetzelfde als de naam van de timer en van de forward-regel, 'voorbeeld' dus.

public voorbeeld()
{
//voer hier je code uit
}

jah dat weet ik wel, maar hoe moet je van de public OnPlayerUpdate een timer maken, en is dat echt nodig voor een gamemode van 10 minuten???

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...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...