Szövegbeviteles párbeszédpanelek létrehozása, használata 1. Elõszó
Üdv, ebben a leírásban bemutatom a szövegbeviteles párbeszédpaneleket.
Mivel egy magyar leírásban sincs benne, gondoltam leírom.
Nos, kezdjünk bele! ;D2. Használat
Természetesen ott vannak a funkciók mellett a magyarázatok.[pawn]
#include <a_samp> // természetesen az alap SA-MP függvénykönyvtárt beágyazzuk
public OnPlayerCommandText(playerid, cmdtext[ ])
{
if(!strcmp(\"/inputdialog\", cmdtext, true))
{
ShowPlayerDialog(playerid, 44, DIALOG_STYLE_INPUT, \"Szövegbeviteles párbeszédpanel\", \"Sajtos vagy mákostészta?\", \"OK\", \"Vissza\");
return 1;
}
return 0;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[ ])
{
if(dialogid == 44) // ha a párbeszédpanel azonosítószáma 44....
{
if(response == 1) // ha a legelsõ gombra (OK-ra) ment rá....
{
if(strfind(inputtext, \"sajtostészta\", true) != -1) // a legelsõ karaktertõl nézzük a szöveget, és ha (például) a \'sajtostészta\'-t írta be akkor....
{
print(\"Valaki beírta a sajtostésztát!\"); // példaként kiiratjuk konzolba a megadott szöveget....
}
else if(strfind(inputtext, \"mákostészta\", true) != -1) // ha pedig a \'mákostészta\'-t írta be akkor....
{
print(\"Valaki beírta a mákostésztát!\");
}
}
}
return 0;
}
[/pawn]
3. Utószó
Remélem, hogy mostmár nagyjából értitek a szövegbeviteles párbeszédpaneleket.
Ha valami nem jó, vagy nem érted, a kommentek természetesen jöhetnek! ;)Írta: ScreaM
Dátum: 2011/05/11 21:00
1. frissítés: 2011/05/11 21:03
2. frissítés: 2011/05/11 21:15
3. frissítés: 2011/05/12 17:45
azért volt bugos mert \" (egy karakter) helyett \'\' (két karakter) -t írtál :problem:
javítva
Teszteld.
Javítsd.
:D
Én erre a sorra:
if(text[0] == \"sajtostészta\")
ezt a hibaüzenetet kapom:
error 033: array must be indexed (variable \"-unknown-\")[/quote]
Teszteld.
Javítsd.
:D
Én erre a sorra:
if(text[0] == \"sajtostészta\")
ezt a hibaüzenetet kapom:
error 033: array must be indexed (variable \"-unknown-\")
[/quote]
nem text, hanem inputtext :D
Szerkesztés.
Amúgy inkább maradok az strfindnél. Ez gyorsabb mint a válozós kialakítás.
Oh igen mivel én tesztben írtam meg és mire eszembe jutott hogy át kéne írnom inputtext-ra a text-et már lekéstem, de mindegy inputtext esetében is ez a hiba.
Ennye ScreaM. Vagy aki szerkesztette át. :(
A(z)
[pawn]if(inputtext[0] == \'xy\') return 1;[/pawn]
csak 1 ismétlem 1 karaktert bír elfogadni ezzel a módszerrel.
Külömben is nem \'xy\' hanem \"xy\"-al kellene így crash lesz. C++ szerint.
Másik hogy ékezetes karakterek.
[pawn]strcmp()[/pawn]
?
Ennye ScreaM. Vagy aki szerkesztette át. :(
A(z)
[pawn]if(inputtext[0] == \'xy\') return 1;[/pawn]
csak 1 ismétlem 1 karaktert bír elfogadni ezzel a módszerrel.
Külömben is nem \'xy\' hanem \"xy\"-al kellene így crash lesz. C++ szerint.
Másik hogy ékezetes karakterek.
Próbáld ki az ékezetes karaktereket.
Egyébként én így irtam: \"...\"
Rossz a látásod? ;D
[pawn]strcmp()[/pawn]
?
[/quote]
Gondolom ezzel is mûködik, legtöbb helyen strfind-al alkalmazzák, és szerintem jól is teszik. ;)
[...] inputtext esetében is ez a hiba.[/quote]
Letesztelem.
Köszi ScreaM! ;D
Most megértettem, hogy hogy kell ilyeneket csinálni :)
A karakterláncok tömbök. Egy tömbnek egy cellájában csak egy érték van. (egy betû -> egy cella)
Ezért nem mûködik.