In deze tutorial ga ik je uitleggen hoe je een script kan maken, waarmee je om de vijf minuten in de chat de volgende boodschap kan plaatsen:
PUNTEN VERDIENEN: Verdien nu [1 - 5]* punten en [100 - 400]* dollar door als eerste [ code ]* te typen!
* = random
Okay, voordat we beginnen hebben we eerst de nodige defines en variabelen nodig. Dit zijn:
Define voor de kleur
Variabele (integer) voor de code
Variabele voor het aantal te verdienen punten
Variabele voor het aantal te verdienen dollars
Variabele (string) voor de code.
Dit komt er dan als volgt uit te zien:
#define YELLOW 0xFFA500AA
new PuntenVerdienenCode;
new AantalPuntenVerdienen;
new AantalDollarsVerdienen;
new PuntenVerdienenText[128];
Je zal je wel afvragen waarom we zowel een integer (getal) als een string (tekst) voor de code nodig hebben. Dit is omdat we eerst het getal random kiezen, en we deze later met strcmp (string compare) met de ingevoerde tekst vergelijken.
Verder moeten we nog de functie hebben die om de vijf minuten wordt uitgevoerd, waarin ook de code en het aantal punten / dollar gegenereerd wordt. Omdat we deze met een timer instellen, moet deze public zijn, en dus ook geforward. Dit levert de volgende code op:
forward PuntenVerdienen();
Nu gaan we de functie zelf maken. Zet de volgende code onderaan je script:
public PuntenVerdienen()
{
return 1;
}
Nu gaan we deze functie invullen. We moeten eerste een variabele maken voor de te geven boodschap, dit doen we door de volgende code te plaatsen:
new Bericht[128];
Nu gaan we de eerder gemaakte variabelen waarden geven. Dit doen we met de functie random. Dit geeft ons de volgende code:
PuntenVerdienenCode = 111111+random(888888); //Random code van 6 cijfers**
AantalPuntenVerdienen = random(5); //Random aantal punten
AantalDollarsVerdienen = random(4); //Random aantal dollars
** = By BigBoss
Maar, nu lopen we tegen een probleem aan. De functie random(4) geeft namelijk 0, 1, 2 of 3. Omdat het een beetje lullig zou zijn als er in eens in de chat het volgende zou staan:
PUNTEN VERDIENEN: Verdien nu 0 punten en 0 dollar door als eerste 123456 te typen!
Gelukkig is dit probleem gemakkelijk op te lossen door 1 bij de uitkomst van random op te tellen. Dat levert de volgende code op:
Maar, het aantal te verdienen dollars moet een honderdtal worden. Gelukkig is dit ook simpel te regelen, wel op de volgende manier:
AantalDollarsVerdienen *= 100;
Nu we al deze gegevens op een rijtje hebben, moeten we nog een bericht in de chat plaatsen dat de gebruiker de code kan intypen. Daarvoor moeten we eerst het bericht een waarde geven, en vervolgens deze in de chat plaatsen. Dat gaat op de volgende manier:
format(Bericht, sizeof(Bericht), "PUNTEN VERDIENEN: Verdien nu %d punten en %d dollar door als eerste %d te typen!", AantalPuntenVerdienen, AantalDollarsVerdienen, PuntenVerdienenCode);
SendClientMessageToAll(YELLOW, Bericht);
Nu moeten we in deze functie alleen nog maar de string aanmaken waarmee de ingetypte tekst vergeleken kan worden. Dit doen we ook met een format:
Nu zijn we klaar met de functie PuntenVerdienen(). Het enige wat we nu nog moeten doen, is het vergelijken van de ingetypte tekst met de code. Dit doen we bij de OnPlayerText(playerid, text[]) functie. We beginnen met het vergelijken met de ingetypte tekst (text) met de code (PuntenVerdienenText). Dit doen we als volgt:
if(!strcmp(PuntenVerdienenText, text, true))
{
Ook nu moeten we weer wat variabelen aanmaken:
new Bericht[128];
new SpelerNaam[MAX_PLAYER_NAME];
new AantalPuntenTotaal;
Hierna verzenden we een bericht naar alle spelers (GetPlayerName -> format -> SendClientMessageToAll)
GetPlayerName(playerid, SpelerNaam, sizeof(SpelerNaam));
format(Bericht, sizeof(Bericht), "%s heeft %d punten en %d dollar verdient door %s als eerste te typen!", SpelerNaam, AantalPuntenVerdienen, AantalDollarsVerdienen, PuntenVerdienenText);
SendClientMessageToAll(YELLOW, Bericht);
Nu moeten we de speler de punten en dollars ook daadwerkelijk geven:
En om te voorkomen dat de ingetypte code in de chat verschijnt, voegen we nog een return-waarde toe:
return 0;
}
Bijna klaar
Nu moeten we alleen nog een paar dingen in OnGamemodeInit toevoegen. Ten eerste is dit het niet te raden getal, om te voorkomen dat de eerste vijf minuten de eerste persoon die niets intypt 0 punten en 0 dollar krijgt.
Tutorial
Random punten & geld verdienen met code
Welkom!
In deze tutorial ga ik je uitleggen hoe je een script kan maken, waarmee je om de vijf minuten in de chat de volgende boodschap kan plaatsen:
PUNTEN VERDIENEN: Verdien nu [1 - 5]* punten en [100 - 400]* dollar door als eerste [ code ]* te typen!
* = random
Okay, voordat we beginnen hebben we eerst de nodige defines en variabelen nodig. Dit zijn:
Dit komt er dan als volgt uit te zien:
Je zal je wel afvragen waarom we zowel een integer (getal) als een string (tekst) voor de code nodig hebben. Dit is omdat we eerst het getal random kiezen, en we deze later met strcmp (string compare) met de ingevoerde tekst vergelijken.
Verder moeten we nog de functie hebben die om de vijf minuten wordt uitgevoerd, waarin ook de code en het aantal punten / dollar gegenereerd wordt. Omdat we deze met een timer instellen, moet deze public zijn, en dus ook geforward. Dit levert de volgende code op:
Nu gaan we de functie zelf maken. Zet de volgende code onderaan je script:
Nu gaan we deze functie invullen. We moeten eerste een variabele maken voor de te geven boodschap, dit doen we door de volgende code te plaatsen:
Nu gaan we de eerder gemaakte variabelen waarden geven. Dit doen we met de functie random. Dit geeft ons de volgende code:
** = By BigBoss
Maar, nu lopen we tegen een probleem aan. De functie random(4) geeft namelijk 0, 1, 2 of 3. Omdat het een beetje lullig zou zijn als er in eens in de chat het volgende zou staan:
PUNTEN VERDIENEN: Verdien nu 0 punten en 0 dollar door als eerste 123456 te typen!
Gelukkig is dit probleem gemakkelijk op te lossen door 1 bij de uitkomst van random op te tellen. Dat levert de volgende code op:
Maar, het aantal te verdienen dollars moet een honderdtal worden. Gelukkig is dit ook simpel te regelen, wel op de volgende manier:
Nu we al deze gegevens op een rijtje hebben, moeten we nog een bericht in de chat plaatsen dat de gebruiker de code kan intypen. Daarvoor moeten we eerst het bericht een waarde geven, en vervolgens deze in de chat plaatsen. Dat gaat op de volgende manier:
Nu moeten we in deze functie alleen nog maar de string aanmaken waarmee de ingetypte tekst vergeleken kan worden. Dit doen we ook met een format:
Nu zijn we klaar met de functie PuntenVerdienen(). Het enige wat we nu nog moeten doen, is het vergelijken van de ingetypte tekst met de code. Dit doen we bij de OnPlayerText(playerid, text[]) functie. We beginnen met het vergelijken met de ingetypte tekst (text) met de code (PuntenVerdienenText). Dit doen we als volgt:
Ook nu moeten we weer wat variabelen aanmaken:
Hierna verzenden we een bericht naar alle spelers (GetPlayerName -> format -> SendClientMessageToAll)
Nu moeten we de speler de punten en dollars ook daadwerkelijk geven:
Om te voorkomen dat de tweede speler die de code intypt, ook het aantal punten krijgt, zetten we de code op een onmogelijk te raden getal:
En om te voorkomen dat de ingetypte code in de chat verschijnt, voegen we nog een return-waarde toe:
Bijna klaar
Nu moeten we alleen nog een paar dingen in OnGamemodeInit toevoegen. Ten eerste is dit het niet te raden getal, om te voorkomen dat de eerste vijf minuten de eerste persoon die niets intypt 0 punten en 0 dollar krijgt.
Verder moeten we de timer ook nog instellen:
KANTTEKENING: 300000 miliseconden = 300 seconden = 5 minuten !
Zo. Nu zijn we klaar.
De volledige code komt er zo uit te zien.
Zo. Dit is geen verschrikkelijk moeilijke tutorial, maar ik hoop wel dat jullie er wat aan hebben gehad
Succes!
David.
Bewerkt: door David22