Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- new g_PlayerDialog[MAX_PLAYERS] = {-1,...};
- #define MAX_OWN_DIALOGS 100
- new g_dCaption[MAX_OWN_DIALOGS][36];
- new g_dInfo[MAX_OWN_DIALOGS][256];
- new g_dButton1[MAX_OWN_DIALOGS][8];
- new g_dButton2[MAX_OWN_DIALOGS][8];
- public OnPlayerDisconnect(playerid, reason)
- {
- g_PlayerDialog[playerid] = -1;
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if(!strcmp("/ListeZeigen", cmdtext, true))
- {
- if(!strlen(GetDialogInfo(0))) return SendClientMessage(playerid, 0xFF0000FF, "Es ist niemand in der Liste.");
- ShowPlayerDialog_Ex(playerid, 0, DIALOG_STYLE_LIST, "Beispiel", GetDialogInfo(0), "Ausw.", "Cancel");
- print(GetDialogInfo(0));
- return 1;
- }
- if(!strcmp("/InListeEintragen", cmdtext, true))
- {
- AddItemToDialog(0, SpielerName(playerid));
- return 1;
- }
- if(!strcmp("/AusListeAustragen", cmdtext, true))
- {
- RemoveItemFromDialog(0, SpielerName(playerid));
- return 1;
- }
- return 0;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- g_PlayerDialog[playerid] = -1;
- if(dialogid == 0 && response == 1)
- {
- new item[64], l_found_id = -1;
- item = GetItemFromDialog(dialogid, listitem);
- print(item);
- for(new i=0; i<MAX_PLAYERS; i++)
- {
- if(IsPlayerConnected(i) && !strcmp(SpielerName(i), item))
- {
- l_found_id = i;
- break;
- }
- }
- new l_str[144];
- format(l_str, sizeof(l_str), "Info: Ich habe Spieler %s mit der ID %d angeklickt.", SpielerName(l_found_id), l_found_id);
- SendClientMessage(playerid, -1, l_str);
- }
- return 1;
- }
- stock ShowPlayerDialog_Ex(playerid, dialogid, style, caption[], info[], button1[], button2[])
- {
- ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);
- g_PlayerDialog[playerid] = dialogid;
- if(dialogid > -1 && dialogid < MAX_OWN_DIALOGS)
- {
- format(g_dCaption[dialogid], sizeof(g_dCaption[]), caption);
- format(g_dInfo[dialogid], sizeof(g_dInfo[]), info);
- format(g_dButton1[dialogid], sizeof(g_dButton1[]), button1);
- format(g_dButton2[dialogid], sizeof(g_dButton2[]), button2);
- }
- return 1;
- }
- stock GetPlayerDialog(playerid)
- {
- return g_PlayerDialog[playerid];
- }
- stock GetDialogCaption(dialogid)
- {
- return g_dCaption[dialogid];
- }
- stock GetDialogInfo(dialogid)
- {
- return g_dInfo[dialogid];
- }
- stock GetDialogButton1(dialogid)
- {
- return g_dButton1[dialogid];
- }
- stock GetDialogButton2(dialogid)
- {
- return g_dButton2[dialogid];
- }
- stock AddItemToDialog(dialogid, item[])
- {
- new l_pos = strfind(g_dInfo[dialogid], item);
- if(l_pos != -1) strdel(g_dInfo[dialogid], l_pos, l_pos+strlen(item)+2);
- format(g_dInfo[dialogid], sizeof(g_dInfo[]), "%s%s\n", g_dInfo[dialogid], item);
- return UpdateDialogForAll(dialogid);
- }
- stock RemoveItemFromDialog(dialogid, item[])
- {
- new l_pos = strfind(g_dInfo[dialogid], item);
- if(l_pos == -1) return 0;
- strdel(g_dInfo[dialogid], l_pos, l_pos+strlen(item)+1);
- return UpdateDialogForAll(dialogid);
- }
- stock GetItemFromDialog(dialogid, listitem)
- {
- new l_str[64], c_count, l_lastpos = -1, tmp[sizeof(g_dInfo[])];
- tmp = "*";
- for(new i=0; i<strlen(g_dInfo[dialogid]); i++)
- {
- if(g_dInfo[dialogid][i] == '\n')
- {
- if(c_count == listitem)
- {
- tmp = g_dInfo[dialogid];
- strdel(tmp, i, strlen(g_dInfo[dialogid]));
- strdel(tmp, 0, l_lastpos+1);
- break;
- }
- c_count++;
- l_lastpos = i;
- }
- }
- format(l_str, sizeof(l_str), tmp);
- return l_str;
- }
- stock UpdateDialogForAll(dialogid)
- {
- for(new i=0; i<MAX_PLAYERS; i++)
- {
- if(g_PlayerDialog[i] == dialogid)
- {
- ShowPlayerDialog(i, g_PlayerDialog[i], DIALOG_STYLE_LIST, g_dCaption[g_PlayerDialog[i]], g_dInfo[g_PlayerDialog[i]], g_dButton1[g_PlayerDialog[i]], g_dButton2[g_PlayerDialog[i]]);
- }
- }
- return 1;
- }
- stock SpielerName(playerid)
- {
- new l_name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, l_name, sizeof(l_name));
- return l_name;
- }
Advertisement
Add Comment
Please, Sign In to add comment