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.
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...
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:
Hopelijk is het zo duidelijk anders moet je het maar even melden, als iets onduidelijk is.
[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)...
Nu gaan we enkele regels aanpassen van hierboven die van toepassing zijn om de dialog box te openen in-game.
De regel...
Passen we aan naar...
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...
Stond, zetten we nu...
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...
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...
Staan die nog niet in je script, voeg ze dan nu toe.
Als eerste komt de regel...
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...
Dit zorgt voor het bevestigen van het kloppende id.
En nu de keuze en eventuele uitvoeringen die erbij komen kijken...
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...
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...
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:
Hopelijk is het zo duidelijk anders moet je het maar even melden, als iets onduidelijk is.
Bewerkt: door Scofield6