- Reacties 228
- Bezichtigingen 47.9k
- Aangemaakt
- Laatste reactie
Populairste bijdragers
Populaire dagen
Featured Replies
Recent actief 0
- Er zijn hier geen geregistreerde gebruikers aanwezig.
Een betere weg om onze GTA community te volgen. Leer meer.
Een volledig scherm app op het beginscherm inclusief notificaties, badges en meer.
Tutorial Account-systeem
Gemaakt door Sandra18[NL]
Andere Tutorials van mij:
>>Objecten<<
>>Menu's<<
>>CheckPoints+AdminArea<<
** In deze tutorial ga ik uitleggen hoe je een account-systeem kan maken inclusief het opslaan van gegevens.
In veel servers kan je een eigen account aanmaken met een eigen wachtwoord.
Als je zo'n account hebt, kunnen er persoonlijke gegevens worden opgeslagen zoals, geld, aantal kills enzovoort.
(Welke info er word opgeslagen is natuurlijk afhankelijk van de server).
Als er een account word aangemaakt word er in de map 'scriptfiles' een nieuw bestand aangemaakt.
Deze heeft geen extentie (zoals .txt of .inc) maar je kan de bestanden gewoon met 'kladblok' openen en bewerken.
Voor een account systeem heb je de volgende include bestanden nodig:
- a_samp.inc
- dudb.inc
- dutils.inc
- dini.inc
De laatste 3 bestanden kan je >>hier<< downloaden (Puma, thnx voor de link
)
met 'dini' kan je comunniseren met bestanden.
We gaan de volgende functies gebruiken:
- dini_Exists(udb_encode(naam)) ---> Dit kijkt of het bestand 'naam' wel of niet bestaat
- dini_Create(udb_encode(naam)) ---> Deze functie maakt een bestand aan met de naam 'naam'
- dini_IntSet(udb_encode(naam), "variabele", waarde); ---> Deze functie maakt in het bestand 'naam' een nieuwe variabele "variabele" en zet daar de waarde 'waarde' achter.
- dini_Get(udb_encode(naam), "variabele"); ---> Haalt de waarde die achter de variabele staat in het bestand 'naam' op
Voor de 'naam' gebruiken we de naam van de speler dus we noemen het 'playername'
Om die te achterhalen zullen we de volgende functie gaan gebruiken:
OKe, nu gaan we stap voor stap het script in elkaar zetten:
We beginnen bovenaan het script met de includes en de defines:
Je hoeft dutils en dini niet te 'includen' omdat die automatisch door dudb worden included.
We gebruiken 3 kleuren (rood, geel en groen)
Vervolgens moeten we een paar variabelen aanmaken.
We gebruiken:
- logged[MAX_PLAYERS] --> Hiermee slaan we voor elke speler zijn login-waarde op (0 = niet, 1=wel ingelogd)
- adminlevel[MAX_PLAYERS] --> Hiermee slaan we voor elke speler de adminlevel op
- money[MAX_PLAYERS] --> Hiermee slaan we voor elke speler het geld op
- playername[MAX_PLAYER_NAME] --> Definitie van playername
Dan volgen nog 3 standaard callbacks:
Dan volgt de OnPlayerConnect-callback:
Hier hoeven we alleen de login-waarde van de nieuwe speler op '0' te zetten, aangezien hij/zij nog niet ingelogd is als hij contact maakt met de server.
Bij de OnPlayerSpawn-callback gaan we kijken of de speler wel of niet ingelogd is, is dat niet het geval, dan krijgt hij/zij een melding dat hij/zij zich nog moet inloggen:
Dan nu de OnPlayerCommandText-callback
Dit is het lastigste gedeelte dus lees het heel goed door en probeer te begrijpen wat er per regel gebeurt.
We beginnen met wat standaard 'defines':
Eerst maken we het /register [wachtwoord] commando:
(De teksten in het rood zijn aantekeningen)
(De rode aantekeningen gaan over de regel onder de aantekening zelf
Nu doen we het /login [wachtwoord] commando op dezelfde manier:
Nou, dit waren de /register en /login commando's het is een beetje chaotisch, maarja, tis niet 1 van de makkelijkste dingen om uit te leggen...
Dan moeten we nu nog een commando maken waarmee je je admin kan maken:
Mijn idee was om in dit script 4 adminlevels te hebben:
level 0 = geen admin
level 1 = beginner-admin
level 2 = gevorderde-admin
level 3 = hoofd-admin.
Om je met dit commando hoofdadmin te maken moet je jezelf eerst met rcon inloggen: /rcon login [rcon-pass]
Je kan uiteraard ook de level (en het geld) van een speler aanpassen door het getal achter de desbetreffende variabele te veranderen.
Als je nu commando's wilt maken die alleen door level 1 adminsgebruikt mogen worden.
Dan voeg je in die functie de volgende regel toe:
De volgende tekens kan je gebruiken.
== gelijk aan ...
< kleiner dan ...
> groter dan ...
<= kleiner of gelijk aan ...
>= groter of gelijk aan ...
!= niet gelijk aan ...
Nog een voorbeeldje:
Als een commando alleen door admins die level 2 of hoger hebben, dan voeg je deze regel toe:
Om de OnPlayerCommandText-callback af te sluiten:
Tot slot moeten we ervoor zorgen dat de gegevens van de speler worden opgeslagen zodra hij/zij de server verlaat.
Dit doen we in de callback 'OnPlayerDisconnect':
Oke, dat was het, dat was de hele code...
Omdat kwaliteit van filmpjes zo slecht zijn, kan je niet lezen welke berichten er in de chat verscheinen, daarom doe ik het nu in plaats van een filmpje nu maar met woorden en een plaatje:
- Ik join de server met de naam 'GtaForum'
- Ik kies een karakter uit (maar 1 keus in dit geval)
- Ik spawn en er komt een melding: "Je bent nog niet ingelogd! Gebruik /login [wachtwoord]!"
- Ik verzin het wachtwoord 'abcdefg' (hoe origineel
)
- Ik typ in "/login abcdefg", nu krijg ik een melding:
"Het account GtaForum, bestaat nog niet. Typ /register [wachtwoord] om een account te maken."
- Ik typ "/register abcdefg", nu komt er de melding:
"Account GtaForum aangemaakt! Je kunt nu inloggen met het wachtwoord: abcdefg."
- Nu typ ik "/login" (dus zonder wachtwoord. Nu staat er "Gebruik: /login [wachtwoord]"
- Nu een verkeerd wachtwoord: "/login 1234567". Nu staat er "Verkeerd wachtwoord!."
- Nu het goede wachtwoord: "/login abcdefg" en nu staat er
""GtaForum, je bent nu ingelogd. Je hebt adminlevel 0 en je hebt 0 dollar"
- Nu typ ik /rcon login [mijn rcon pass] en nu staat er "You are now logged in as an admin"
- Nu kan ik /maakmijadmin typen en er komt de melding: ""Je bent nu hoofdadmin! Gefeliciteerd!"
- Ik geef mezelf even (met een extra commando (niet bij dit script inbegrepen)) 9751 dollar.
- Nu verlaat ik de server.
- Als ik nu naar de map 'scriptfiles' ga en daar het bestand 'GtaForum' open, dan staan daar mijn gegevens.
(zie afbeelding onderaan).
- Als ik nu weer de server in ga, dan typ ik "/login abcdefg" dan staat er:
""GtaForum, je bent nu ingelogd. Je hebt adminlevel 3 en je hebt 9751 dollar"
Zo, nu doen mijn vingers zeer van het typen
Omdat het hier nogal chaotisch is, heb ik het script op internet gezet zodat het er wat duidelijker uitziet
Download >>hier<< het hele script met de commentaren:
Download >>hier<< het hele script zonder de commentaren.
Als je nog vragen hebt, of foutjes ziet, of andere opmerkingen hebt, kan je ze in dit topic stellen.
P.s. Als je tekens zoals [ ] ( ) _ in je spelersnaam hebt staan, dan veranderd sa:mp dat in de namen van de user-files zoals je kunt zien aan mijn user-file "Sandra18[NL]" is veranderd naar "Sandra18_05NL_06"
Dit heeft geen concequenties op het inloggen enzo.
Veel succes en plezier ermee
Groetjes Sandra
Bewerkt: door =>Sandra<=