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.

[Tutorial] Strings & Variables

Hoi!

Welkom bij de tutorial over strings.



VARIABLES

We beginnen met de variables

Maak een variable op deze manier aan:

new var_name;

Je kan var_name zelf veranderen , bijvoorbeeld:

new playersonline;

Dat is nog heel simpel! Je kan ook nog eens meteen een variable toevoegen!

Doe dit door '= {getal};' erachter te zetten. Bijvoorbeeld:

new playersonline = 0;

Dit is de makkelijkste manier om variables aan te maken!

Nu de iets 'mooiere' manier, vooral handig voor account informatie!

Meestal zie je dit:

new geld[MAX_PLAYERS];
new adminlevel[MAX_PLAYERS];

Dan check je de admin bijv. zo: ' if(adminlevel[playerid] >= 2) '

Dit staat niet mooi en komt onprofessioneel over (vind ik)

Daarom is ENUM wel handig! Kijk maar naar het voorbeeld:

enum var_naam()
{
	geld,
	adminlevel
};

Ziezo, nu heb je deze twee in één 'string' gezet, maar ze werken nog niet!

Je moet de variable ook zelf maken! Dit doe je weer met 'new var_naam'

Let er wel op dat de naam achter enum niet hetzelfde is als de nieuwe variable die je gaat aanmaken!

En zorg er ook voor dat de enum IN de variable komt! Doe dit zo:

enum var_naam()
{
geld,
adminlevel
};
new andere_var_naam[MAX_PLAYERS][var_naam];

Hetgene achter enum moet dus ook tussen de haakjes ( [ & ] ) komen!

Nu check je een admin level zo:

if(andere_var_naam[playerid][adminlevel] >= 2)

Simpel, is het niet?

STRINGS

Dit is ook heel makkelijk, als je het maar snapt ;)

Weet je nog dat ik de 'new playersonline;' had aangemaakt?

Ik zal aan de hand van deze van deze variable uitleggen hoe je de BASIS string maakt.

Je kan met de 'normale' manier, zonder verschillende functie's gewoon 'tellen'.

Als een speler bijv. een speler online komt tel je één nummer aan de variable toe.

Ik zal een voorbeeld geven:

public OnPlayerDisconnect(playerid)
{ 
playersonline ++;
return 1;
}

De '++' staat dus eigenlijk voor '+1' !

Hetzelfde geldt voor '--', alleen dan is het dus '-1'

Maar wat nou als je er bijv. 15 bij op wilt tellen, of aftrekken?

Dit doe je met '+=' !

Een voorbeeld:

new var = 0;
new var += 15;
new var -= 10;

Je begint met string 0, oftewel 'niks'

Dan telt hij er 15 bij op, met '+= 15'

En daarnaa telt hij er tien vanaf! met '-= 10'

Dus nu heeft de variable 'var' de waarde 5

Je kan met de normale manier dus alleen tellen, of geld, adminlevel etc. aangeven

Maar voor een gebruikerssysteem MET WACHTWOORD heb je iets anders nodig!

Want dit werkt niet:

new wachtwoord[MAX_PLAYERS];
...(code)
wachtwoord[playerid] = "test1234";

Dan krijg je de volgende error:

error 010: invalid function or declaration

Dit is natuurlijk niet de bedoeling :puh:

Hiervoor gebruik je strins.

Deze ziet er zo uit:

strins(var, string, start, einde);

Var = Hetgene waar de string wordt ingezet

String = Hetgene wat je IN de variable zet

Start = Waar de string begint

einde = oftewel, maximum lengte

Ik zal een voorbeeld script geven, aan de hand van een DIALOG venster

new wachtwoord[MAX_PLAYERS]; //Ik gebruik even geen ENUM 

public OnPlayerConnect(playerid)
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Wachtwoord", "Vul een wachtwoord in", "OK", "Annuleer");
return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1) //Als dialog ID '1' is
{
	if(response) //Druk je wel op OK en niet op Annuleer?
	{
	strins(wachtwoord[playerid], inputtext, 0, 64); //Je wachtwoord mag dus niet langer dan 64 tekens zijn. Ik heb hier nu geen beveiliging op gezet!
	}
	else //Als je op Annuleer klikt
	{
	//Doe IETS! zoals kick, of laat dialog opnieuw zien
	} 
}
return 1;
}

Hopelijk snap je dit een beetje ;)

Zo niet, zeg het hier even, dan probeer ik het uit te leggen.

STRING VERWIJDEREN

Dit is HEEL simpel.

Het kan op 2 manieren:

1e manier:

var_naam = 0;

Dit zet de var_naam naar 0, als je een nieuwe variable aanmaakt en je zet bijv niet neer: new iets = 1; (de ' = 1 ') is de standaardwaarde 0!

2e manier:

STRDEL

Deze is IETS lastiger, maar wel 'mooier'

Gebruik hem zo:

strdel(var_naam, begin, eind);

var_naam = De string die je wilt verwijderen

begin = Het begin dat je wilt verwijderen

eind = Het einde dat je wilt verwijderen

Over het 'begin' en 'eind':

VOORBEELD:

Je hebt een wachtwoord opgeslagen in wachtwoord[playerid], met string: test1234

Je gebruikt STRDEL en hij begint bij 2, en eindigd op 5

Dan is je wachtwoord nu: est123

Als je het HELE wachtwoord wilt verwijderen kan je het beste dit doen:

strdel(wachtwoord[playerid], 0, strlen(wachtwoord[playerid]);

strlen telt de lengte van iets, en je telt hier het aantal cijfers en letter van het wachtwoord, en hij eindigd bij de laatste.

Dus wordt ALLES verwijderd

Ik hoop dat dit iets een beetje uitlegt!

Groeten,

Kwarde

Featured Replies

Goede tutorial, alleen kloppen de strings niet.

Een string is eigenlijk gewoon een variable waar een zin in opgeslagen wordt. Dus kan je bijvoorbeeld:

new String[128] = "Hallo, ik ben een string.";

gebruiken.

new Wachtwoord[MAX_PLAYERS];

wordt eigenlijk gebruikt als een integer. Dus hierin kan je geen string in opslaan voor alle spelers, zoals jij waarschijnlijk wel bedoelde. Om dit te doen moet je van deze array een string maken. Dat doe je op deze manier:

new Wachtwoord[MAX_PLAYERS][128];

Nu kan je in deze variable voor iedereen een string opslaan.

Ik ben nooit zo goed in uitleggen, dus ik hoop dat een andere scripter die het beter kan uitleggen het van mij overnemen. :puh:

  • Author

Ik dacht al dat ik iets was vergeten....

Maar toch bedankt

Gvm

Mooie tutorial, maar alleen is [MAX_PLAYERS] nu eigenlijk vervangen door PVars die veel beter zijn voor je geheugen verbruik. ;)

uitleg

Daar dacht ik eerst ook aan. Maar ik heb het getest en ik kreeg geen errors.

Ik heb overigens nog nooit met string insert gewerkt, dus ik weet eigenlijk niet waarvoor je dat nu juist gebruikt.

Ik gebruik zelf altijd format als ik een string aan een andere string wil toewijzen.

Hij zou als het goed is niet moeten werken. De compiler vervangt 'MAX_PLAYERS' door 500. Hierdoor is de variable 'Wachtwoord' nu een string van 500 cellen lang. Als het goed is, zou je dan als je

Wachtwoord[playerid]

doet, je alleen de karakter zou krijgen die op die positie staat.

Of, wat ook mogelijk is, is dat het wachtwoord gecodeerd wordt, en zo een integer wordt. Dan zou het wel kunnen namelijk.

Hoe zorg je ervoor dat als een String langer is dan 126 karakters hij door gaat op de volgende regel?

Edited by Wu-Zi-Mu

  • Author

Hoe zorg je ervoor dat als een String langer is dan 126 karakters hij door gaat op de volgende regel?

Dat gaat (vlgns mij) niet :puh:

Het gaat automatisch, maximum, lengt 128

Hoe zorg je ervoor dat als een String langer is dan 126 karakters hij door gaat op de volgende regel?

Dat gaat (vlgns mij) niet :puh:

Het gaat automatisch, maximum, lengt 128

Het kan wel, ik heb het gezien op verschillende servers.

Maar ik weet niet hoe.

Als ik bijv. /advertentie <een tekst van 500 tekens>

dat ik dan meerdere lijnen met tekst krijg.

Dat kan niet, want de maximum lengte van een chatbericht is 128 cellen (tekens). Bij 64 tekens wordt het bericht namelijk al afgekapt.

Textdraws zijn een ander verhaal, daar kan je volgens mij zoveel tekst in steken als je wil.

Dat kan niet, want de maximum lengte van een chatbericht is 128 cellen (tekens). Bij 64 tekens wordt het bericht namelijk al afgekapt.

Textdraws zijn een ander verhaal, daar kan je volgens mij zoveel tekst in steken als je wil.

Wat ik bedoel is dat als je bij een cmd zoals /advert <tekst> een tekst van bijv. 250 tekens hebt dat je dan dit krijgt.

ADVERTENTIE: TekstTekstTekstTekstTekstTekstTekstTekst...

ADVERTENTIE: Overige Tekst

Dat het bericht wordt afgekapt en op de volgende regel weer verder gaat.

Er passen maximaal 128 tekens in het vakje waar je de tekst kan invoeren.

Daar had ik nog niet eens aan gedacht, maar het kan dus sowieso niet.

Zowel Input als Output kan maximum 128 cellen zijn.

[table=header]Server Property|Limit

Text I/O|128 cells (512 bytes)[/table]

http://wiki.sa-mp.com/wiki/Limits

Dat probeer ik nou juist te zeggen in een makkelijk begrijpbare manier. :7

Ik weet niet of jullie Argonath RPG kennen. Maar die heeft het wel.

  • Author

Ik weet niet of jullie Argonath RPG kennen. Maar die heeft het wel.

Ehm, ik heb nu wel een idee, maar ik weet niet of het werkt.

Even wat uitvogelen ;) - Ik post zo weer een reactie (als er geen andere is edit ik deze post)

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.