Этот инклуд, позволяет создавать динамический список, в диалоговом окне, а так же удобно использовать его в дальнейшем.
Функции:
Данный инклуд, имеет три функции,подробней о них:
AddDListItem(playerid, Item[], ItemID = -1, , ItemParameter = -1);
playerid - ID игрока для которого создается список. Item[] - Текст строки из списка. ItemID - ID строки из списка ( в дальнейшем используется в OnDialogResponse ). ItemParameter - Дополнительный параметр ( если требуется ).
Clear_DList(playerid);
playerid - ID игрока для которого выполняется чистка списка.
Настройка и установка:
Для настройки инклуда, используются строки:
#define DLD_STRING_SIZE 256 // Размер списка,во всём диалоге.
#define DLD_MAX_LIST_ITEMS 10 // Максимальное количество строк в одном диалоге.
Для подключения инклуда, необходимо вставить следующий код, в начало мода:
#include <DLDiag>
Пример использования:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | enum { DLITEM_PM, DLITEM_KICK, DLITEM_BAN, DLITEM_GIVEMONEY } // Данный enum, использовать не обязательно. ItemID может быть любым целым числом. public OnPlayerClickPlayer(playerid, clickedplayerid, source) { // Код написан для примера. AddDListItem(playerid, "Личное сообщение" , DLITEM_PM, clickedplayerid); if ( IsPlayerAdmin(playerid) ) AddDListItem(playerid, "Кикнуть" , DLITEM_KICK, clickedplayerid); if ( IsPlayerAdmin(playerid) ) Function2(playerid, clickedplayerid); AddDListItem(playerid, "Дать денег" , DLITEM_GIVEMONEY, clickedplayerid); AddDListItem(playerid, "Закрыть" ); ShowPlayerDlist(playerid, 1, "Пример динамического диалога" , "Круто" , "Закрыть" ); return true ; } public Function2(playerid, ExtraParam) { return AddDListItem(playerid, "Забанить" , DLITEM_BAN, ExtraParam); } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch ( dialogid ) { case 1: { switch ( DLItemID ) { case DLITEM_PM: { // Тут должен быть код отправки сообщения. } case DLITEM_BAN: Ban(DLParam); case DLITEM_KICK: Kick(DLParam); case DLITEM_GIVEMONEY: // Тут должен быть код выдачи денег. } } } } |
PAWNO code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | /* _____ _ _____ _ | __ \| | | __ \(_) | | | | | | | | |_ __ _ __ _ | | | | | | | | | |/ _` |/ _` | | |__| | |____| |__| | | (_| | (_| | |_____/|______|_____/|_|\__,_|\__, | DynamicListDialog (v1.2) __/ | ByTheXIII |___/ */ /*===================================== native AddDListItem(playerid, Item[], ItemID = -1, ItemParam = -1); native ShowPlayerDList(playerid, DialogID, Caption[], Button1[], Button2[]); native Clear_DList(playerid); =====================================*/ #if defined _DLDiag_included #endinput #endif #define _DLDiag_included #if !defined _samp_included #error "<a_samp> must be included before <DLDiag>" #endif #if !defined DLD_STRING_SIZE #define DLD_STRING_SIZE 256 #endif #if !defined DLD_MAX_LIST_ITEMS #define DLD_MAX_LIST_ITEMS 10 #endif #define DLItemID DLDPlayerListItems[playerid][listitem] #define DLParam DLDPlayerListParam[playerid][listitem] new DLDString[DLD_STRING_SIZE]; new DLDPlayerListItems[MAX_PLAYERS][DLD_MAX_LIST_ITEMS]; new DLDPlayerListParam[MAX_PLAYERS][DLD_MAX_LIST_ITEMS]; new DLDLastIS; stock AddDListItem(playerid, ItemStr[DLD_STRING_SIZE], ItemID = -1, ItemParam = -1) { DLDPlayerListItems[playerid][DLDLastIS] = ItemID; DLDPlayerListParam[playerid][DLDLastIS] = ItemParam; if ( !DLDLastIS ){DLDString = "" ; format(DLDString, sizeof (DLDString), "%s" , ItemStr);} else format(DLDString, sizeof (DLDString), "%s\r\n%s" , DLDString, ItemStr); DLDLastIS++; return DLDLastIS -1; } stock ShowPlayerDList(playerid, DialogID, Caption[], Button1[], Button2[]) { DLDLastIS = 0; ShowPlayerDialog(playerid, DialogID, DIALOG_STYLE_LIST, Caption, DLDString, Button1, Button2); DLDString = "" ; return true ; } stock Clear_DList(playerid) { for ( new i; i < DLD_MAX_LIST_ITEMS; i++ ) { DLDPlayerListItems[playerid][i] = 0; DLDPlayerListParam[playerid][i] = 0; } return true ; } |
Автор: TheXIII.