I know about the regular menu's, problem is our limited to 13 a page and no way of showing colour, i considered using a list dialog (set text colour to the colour with text using the ████████ characters.
Shame that colour dialog isnt avalible |
#define COLOUR_PICKDIALOG 3000
enum colourLine {
name[40],
colourID,
colourHex[10]
}
new gColourList[][colourLine] = {
{"Black",0,"FFFFFF"},
{"White",1,"FFFFFF"},
{"Light Gray",8,"BEBEC6"},
{"Gray",13,"595959"},
{"Dark Gray",25,"383B42"},
{"Red",3,"FF0000"},
{"Crimson",43,"630811"},
{"Gold/Orange",6,"D58E10"},
{"Copper",61,"957043"},
{"Light Blue",2,"2975A6"},
{"Pale Blue",93,"04688A"},
{"Blue",79,"08306B"},
{"Dark Blue",53,"11204B"},
{"Lime Green",65,"8C8F42"},
{"Green",252,"2A5922"},
{"Dark Green",242,"0A2A01"},
{"Pink",126,"F069AC"},
{"Purple",149,"4F0F5B"}
};
new mainstring[(55*sizeof(gColourList))];
//In the OnInit
for( new c=0; c<sizeof(gColourList); c++) {
new linestring[55];
if (c==0) format(linestring,55,"{%s}%s",gColourList[c][colourHex],gColourList[c][name]);
else format(linestring,55,"\n\r{%s}%s",gColourList[c][colourHex],gColourList[c][name]);
strcat(mainstring, linestring);
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){
if(dialogid == COLOUR_PICKDIALOG) {
if(response) {
new rowtext[100];
format(rowtext,100,"{%s}Colour:%s ID:%d",gColourList[listitem][colourHex],gColourList[listitem][name],gColourList[listitem][colourID]);
SendClientMessage(playerid,0xFFFFFFFF,rowtext);
showMenuType(playerid,0);
}
else {
showMenuType(playerid,0);
}
return 1;
}
return 0;
}
//to open it :D
ShowPlayerDialog(playerid,COLOUR_PICKDIALOG,DIALOG_STYLE_LIST,"Colour Picker",mainstring,"Buy", "Cancel");