Jump to content
Geplaatst:
comment_1515137

[Tutorial]Dialog Box

[Tutorial]by Scofield6

De nieuwe 0.3 menu's zijn al een tijdje in gebruik maar er was hier nog geen tutorial van, dus bij deze: de tutorial van de dialog box! :)

*Hiervoor hebben we dus ook 0.3 client en server voor nodig, je weet waar ze staan neem ik aan.

We beginnen al gelijk bij OnPlayerCommandText (zoek dus de regel op)...

public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
// Do something here
return 1;
}
return 0;
}

Nu gaan we enkele regels aanpassen van hierboven die van toepassing zijn om de dialog box te openen in-game.

De regel...

if (strcmp("/mycommand", cmdtext, true, 10) == 0)

Passen we aan naar...

	if (strcmp("/dialogbox1", cmdtext, true, 11) == 0)

Deze regel hierboven is voor het intypen van de command in-game, hierbij heb je de naam veranderd voor het intypen en het cijfer 10 in dit geval, let op: de tekens zijn inclusief het / streepje dus omdat we de naam veranderd hebben naar /dialogbox1 moet de 10 in 11 worden veranderd.

Volgende regel...

Waar...

	// Do something here

Stond, zetten we nu...

	ShowPlayerDialog(playerid, 1, 2, "GTA-Forum", "Keuze1\nKeuze2\nKeuze3\nKeuze4\nKeuze5\nKeuze6\nKeuze7\nKeuze8\nKeuze9", "Select", "Cancel");

Deze regel zorgt dat na het intypen van /dialogbox1 het menu geopend wordt.

Even wat toelichten...

1=id kun je veranderen naar elk getal, maar let op: je kunt niet meerdere dialog boxes hetzelfde id geven anders gaat het fout.

2=style kun je kiezen uit 1,2 of 3

0 - DIALOG_STYLE_MSGBOX

1 - DIALOG_STYLE_INPUT

2 - DIALOG_STYLE_LIST

ik heb dus voor 2 gekozen

GTA-Forum=tekst bovenaan de dialog, kun je dus naar jouw eigen wensen veranderen

Keuze1 enzovoort zijn de keuze's die we kunnen kiezen als het menu geopend is let goed op dat je vanaf de tweede keuze na de eerste \ dus een 'n' zet anders krijg je errors.

select=voor het geval als je een keuze wilt maken kun je op die knop klikken.

cancel=voor het geval als je geen keuze wilt maken kun je op die knop klikken.

Om het werkend te krijgen hebben we nu dit totaal...

public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/dialogbox1", cmdtext, true, 11) == 0)
{
ShowPlayerDialog(playerid, 1, 2, "GTA-Forum", "Keuze1\nKeuze2\nKeuze3\nKeuze4\nKeuze5\nKeuze6\nKeuze7\nKeuze8\nKeuze9", "Select", "Cancel");
return 1;
}
return 0;
}

Daarvoor zijn we dus klaar met het eerste gedeelte, nu gaan we naar het tweede gedeelte wat tevens ook het laatste gedeelte is, nu moet je nog iets beter opletten wat de regels precies inhouden. Ik probeer het dan ook zo goed mogelijk voor jou duidelijk te maken.

Zoek de volgende regels op...

	public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
return 1;
}

Staan die nog niet in je script, voeg ze dan nu toe.

Als eerste komt de regel...

	if (dialogid == 1)
{

Erbij, je moet wel het id nummer hetzelfde laten wat je bij het eerste gedeelte ook had, dit zorgt ervoor dat het eerder opgegeven keuze's en het id (bij het eerste gedeelte) dus overeen komt met elkaar.

De regel die nu komt is...

	if (response)
{

Dit zorgt voor het bevestigen van het kloppende id.

En nu de keuze en eventuele uitvoeringen die erbij komen kijken...

	if (listitem == 0)
{
SendClientMessage(playerid, 0xFFFFFFAA, "Gefeliciteerd, je hebt keuze1 gekozen.");
}

De eerste regel van hierboven zorgt dat als keuze1 wordt gekozen dat regel 3 dan verschijnt. Regel 3 kun je zelf ook veranderen, je kunt ook meerdere regels erbij toevoegen, het is aan jou, kies daarom je eigen wensen. Ik heb dus voor een tekst gekozen oftewel SendClientMessage, dit zorgt ervoor dat in-game een tekst verschijnt als je de betreffende keuze hebt gekozen.

In totaal hebben we nu het volgende...

	public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if (dialogid == 1)
{
if (response)
{
if (listitem == 0)
{
SendClientMessage(playerid, 0xFFFFFFAA, "Gefeliciteerd, je hebt keuze1 gekozen.");
}
return 1;
}

Echter zijn we nu nog niet klaar, want we hebben nog maar voor alleen keuze1 de uitvoering behandeld, dus doen we dat nu ook even met alle andere overige 8 keuze's...

Dan komt het er dus zo uit te zien in het totaal...

	public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if (dialogid == 1)
{
if (response)
{
if (listitem == 0)
{
SendClientMessage(playerid, 0xFFFFFFAA, "Gefeliciteerd, je hebt keuze1 gekozen.");
}
if (listitem == 1)
{
SendClientMessage(playerid, 0xFFFFFFAA, "Gefeliciteerd, je hebt keuze2 gekozen.");
}
if (listitem == 2)
{
SendClientMessage(playerid, 0xFFFFFFAA, "Gefeliciteerd, je hebt keuze3 gekozen.");
}
if (listitem == 3)
{
SendClientMessage(playerid, 0xFFFFFFAA, "Gefeliciteerd, je hebt keuze4 gekozen.");
}
if (listitem == 4)
{
SendClientMessage(playerid, 0xFFFFFFAA, "Gefeliciteerd, je hebt keuze5 gekozen.");
}
if (listitem == 5)
{
SendClientMessage(playerid, 0xFFFFFFAA, "Gefeliciteerd, je hebt keuze6 gekozen.");
}
if (listitem == 6)
{
SendClientMessage(playerid, 0xFFFFFFAA, "Gefeliciteerd, je hebt keuze7 gekozen.");
}
if (listitem == 7)
{
SendClientMessage(playerid, 0xFFFFFFAA, "Gefeliciteerd, je hebt keuze8 gekozen.");
}
if (listitem == 
{
SendClientMessage(playerid, 0xFFFFFFAA, "Gefeliciteerd, je hebt keuze9 gekozen.");
}
}
return 1;
}
return 0;
}

Let op dat je tekens: } niet twee keer vergeet boven de regel: return 1; en dat je de regels return 0; en } niet vergeet anders werkt het niet, dit is om de callback af te sluiten.

In het kort: wat we hebben gedaan bij dit gedeelte is dus het zorgen voor dat het id overeen komt, een bevestiging maken, het uitvoeren van regels die overeen komen met de gekozen keuze.

Nu zijn we klaar, hopelijk heb je het gesnapt...

Resultaat:

gtaforumtutorial.png

Hopelijk is het zo duidelijk anders moet je het maar even melden, als iets onduidelijk is. :cya:

Bewerkt: door Scofield6

Featured Replies

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

Recent actief 0

  • Er zijn hier geen geregistreerde gebruikers aanwezig.