Jump to content
Geplaatst:
comment_1462113

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

Featured Replies

Geplaatst:
comment_1462122

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:
  • Auteur
comment_1462191
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:
comment_1462207

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:
  • Auteur
comment_1462212
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:
  • Auteur
comment_1462999

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:
comment_1464957

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:
  • Auteur
comment_1465890
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:
  • Auteur
comment_1466092

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:
comment_1466129

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:
  • Auteur
comment_1466211
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:
comment_1466987

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:
  • Auteur
comment_1467085
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???

Geplaatst:
  • Auteur
comment_1467678

enne, moet ik bij

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;
}

nog wat invullen, want als ik niets invul gebeurt er niets maar als ik wel wat invul komen er veel errors en warnings

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.