[Tutorial] OnDialogResponse
#1

Reeks van tutorials: Callbacks
Moeilijkheidsgraad: Gevorderd
Benodigdheden: de a_samp include (komt standaard bij een SA:MP 0.3 server)
Opmerkingen: Het kan zijn dat ik in deze tutorial de woorden functie en methode door elkaar gebruik. Het betekent in deze context hetzelfde.

OnDialogResponse
Dit is de eerste tutorial van mij in de series 'callbacks'. Deze tutorial kan gezien worden als een vervolg op de functie 'ShowPlayerDialog' waarvan een tutorial al bestaat in deze sectie.

Theorie
OnDialogResponse wordt aangeroepen als er interactie is geweest met een dialog. Dit betekent dat als de speler op ййn van de knoppen heeft gedrukt bij het dialog dan wordt dit aangeroepen.

Parameterlijst:
playerid Het ID van de speler die de dialog te zien heeft gekregen
dialogid Het ID van de dialog die je zelf aan het dialog hebt meegegeven
response 1/0 afhankelijk van de knop (links is 1, rechts is 0 - als er maar 1 knop is, dan is dit altijd 1)
listitem Het ID van de rij als je een DIALOG_STYLE_LIST hebt gebruikt. Dit begint bij 0
inputtext[] De tekst ingevoerd door de speler in een DIALOG_STYLE_INPUT of DIALOG_STYLE_PASSWORD

Hier valt niet veel meer over te zeggen. Dit is hoe de callback werkt en hierop kan gecontroleerd worden. Wellicht wordt het duidelijk in ons voorbeeld.
Praktijk
pawn Код:
OnDialogReponse(playerid, dialogid, response, listitem, inputtext[]) {
    if(dialogid == DIALOG_LOGIN && response == 0) {
        SendClientMessage(playerid, COLOR_RED, "Kickje omdat je niet inlogde");
        Kick(playerid);
        return 1;
    }
    if(dialogid == DIALOG_LOGIN && strlen(inputtext) > 0) {
         // controleer wachtwoord en log de speler in of laat het dialog opnieuw zien als er iets fout ging
    } elseif(dialogid == DIALOG_LOGIN && strlen(inputtext) == 0) {
        // laat dialog sowieso zien aangezien de input 0 was
    }
    return 1;
}
In deze code worden drie dingen gedaan (let op dat dit veel compacter kan, maar dit is even voor de tutorial handig omdat je verschillende scenarios hebt nu)
1. Controleer of de dialog het DIALOG_LOGIN was en als response 0 was (dit betekent bij ons de 'annuleer knop'. Simuleer deze even in je hoofd Als dit het geval is, dan kick je hem aangezien hij moet inloggen voor onze server (echt? Ja, vind ik wel)
2. Controleer of de dialog het DIALOG_LOGIN was en de inputtext meer dan 0 tekens bevat. inputtext is hier dan ook de tekst die de speler heeft ingevoerd. Het kan zijn bij een STYLE_PASSWORD of een STYLE_INPUT. Dit maakt niet uit aangezien het beide een tekstveld omvat.
3. Controleer of de dialog het DIALOG_LOGIN was en of de inputtext gelijk is aan 0. Laat het dialog dan nogmaals zien aangezien de input leeg was.

Hopelijk is alles van deze korte omschrijving van OnDialogResponse hierbij iets duidelijker geworden. Listitems worden hier niet gebruikt maar hier kan ook gewoon op gecontroleerd worden door middel van een switch.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)