Jump to content

Recommended Posts

Geplaatst:

ik wil er voor zorgen dat een definitie, bijvoorbeeld

#define Jobmoney 1500

kan veranderen op basis van het aantal mensen dat online is. ik heb het geprobeerd met GetMaxPlayers, maar dat krijg ik niet voor elkaar omdat het niet in een public staat. hoe kan ik er voor zorgen dat dat wel werkt?

Geplaatst: (bewerkt)

Ik denk dat jij wilt weten hoe je het aantal spelers online wilt laten weergeven? Ik denk dat ik wel wet hoe dat moet :Y

new PlayersOnline;
forward PlayerCount()

OnGameModeInit
{
	 SetTimer("PlayerCount", 500, true);
}

public PlayerCount()
for(new i = 0; i <= MAX_PLAYERS; i++)
{
	if(IsPlayerConnected(i))
	{
	PlayersOnline ++;
		   //Doe iets, met een TextDrawSetString ofzo
	}
	return 1;
}

Wat je ook kan doen:

public OnPlayerCommandText(playerid, cmdtext[])
{
	if (strcmp("/ponline", cmdtext, true) == 0)
{
			 for(new i = 0; i <= MAX_PLAYERS; i++)
			 {
					 if(IsPlayerConnected(i))
					 {
							new PlayersOnline;
							new string[256];
							PlayersOnline ++;
							format(string, sizeof(string), "%d players online!", PlayersOnline);
							SendClientMessage(playerid, COLOR, string);
							return 1;
					 }
			 }
	}
	return 1;
}

Als dit niet is wat je bedoelt, zeg het dan even ;)

EDIT: Hmm, uitlijning werkt niet lekker :N

Bewerkt: door Remi-X
Geplaatst: (bewerkt)

nee, dat is niet wat ik bedoel. stel je voor:

ik heb een definitie:

#define lol 1000

ik wil die definitie op 1000 hebben als er minder dan 10 mensen zijn, als er 10-20 mensen zijn wil ik bijvoorbeeld:

#define lol 2000

hoe kan ik daar voor zorgen?

Bewerkt: door thuron
Geplaatst: (bewerkt)

new PlayersOnline;
forward Defines();

OnGameModeInit()
{
 SetTimer("Defines", 500, true);
}

public Defines()
{
 for(new i = 0; i <= MAX_PLAYERS; i++)
 {
	  if(IsPlayerConnected(i))
	  {
		   PlayersOnline ++; //Aantal spelers tellen
	  }
 }
 if(PlayersOnline <= 10) //dus 10 en minder
 {
	  #undef NAME //Zorgen dat de vorige define word uitgeschakeld
	  #define NAME 10 //En zet hem opnieuw
 }
 else if(PlayersOnline > 10 || PlayersOnline <= 20) //Van 11 tot en met 20
 {
	  #undef NAME
	  #define NAME 20
 }
 return 1;
}

Bedoel je zoeits? Gaat veel code worden, maa ik weet zo snel even geen andere manier.

Bewerkt: door Remi-X
Geplaatst:

Dan moet je gewone variabelen gebruiken en geen definities. Definities behoor je niet te kunnen wijzigen, want daarom worden het definities genoemd. Werk bij veranderende waardes gewoon met variabelen ;)

Geplaatst:

Lees de hoofdpost nou eens :duh:

Hij wil JUIST dat die definities kunnen worden veranderd, dus wat ik doe is goed. En 'Definitie' betekent niet dat het maar 1 betekenis heeft. Het weer, en alweer, 2 verschillende 'definities' van 'weer'. Ik defineer hier ook verschillende waarden, voor 1 ding.

Geplaatst:

Als je het zo doet word het alleen lokaal gedefiniëerd, en dat gaat dus niet werken. Je hebt een globale define nodig.

Variabelen zijn in dit geval gewoon de beste keus.

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