#include <a_samp>
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1){
switch(listitem){
case 0:{
//Ha az elsõ lehetõséget választotta
}
case 1:{
//Ha a második lehetõséget választotta
}
case 2:{
//Ha a harmadik lehetõséget választotta
}
//És így tovább
}
}
return 1;
}
Ezt nem értem. Miért akarsz egy listát strcat-el összekapcsolni?
Ilyenre gondoltál?
new str[128];
for(new i;i<MAX_PLAYERS;i++)
{
format(str,sizeof(str),\"%sLista%d\\n\",str,i);
}
ShowPlayerDialog(playerid,DIALOG_ID,DIALOG_STYLE_LIST,str,\"Választ\",\"Mégse\");
for(new i=0;i<MAX_CONTACTS;i++)
{
if(!isnull(TelefonInfo[playerid][tNev]))
{
format(str, sizeof(str), \"%s - %i\\n\", TelefonInfo[playerid][tNev], TelefonInfo[playerid][tSzam]);
strcat(buff, str);
}
}
Ez a kódom. Végigmegyek a telefoninfoján a játékosnak és ha találok névjegyet akkor hozzákapcsolom. Mivel ilyenkor nem tudom, hogy a case 0-nál mi fog kijönni(nem tudom a nevet és a számot), nem tudok mit írni oda, hogy mit csináljon ha a játékos azt választja.
Ez egyszerû. DIALOG_STYLE_LIST alatt is használhatsz \"inputtext\"-et. Pl.
ShowPlayerDialog(playerid, 1231, DIALOG_STYLE_LIST, \"Kecske\\nJuh\\nMarha\", \"OK\", \"Mégsem\");
Majd az eljárás alatt...
if(!strcmp(inputtext, \"Kecske\", true)) return SendClientMessage(playerid, -1, \"A kecskére kattintottál!\");
Viszont mi nem tudjuk hogy mit ad ki, ezért...
new mirekattint[24], telefonszam; // létrehozunk egy új sztring ill. telefonszám változót, amikbe a beviteli szöveget fogjuk feldarabolni
sscanf(inputtext, \"p<->s[24]{s[1]}i\", mirekattint, telefonszam);
// mivel az inputtext így néz ki alapesetben: Kocka_Pali - 4334256, a \"-\" az elválasztó. ezért a \"-\" elõtt a név, utána pedig a telefonszám van.
new str[128];
format(str, 128, \"Rákattintottál %s nevû kontaktodra, akinek a telefonszáma: %d!\", mirekattint, telefonszam);
SendClientMessage(playerid, -1, str);
Remélem segítettem.