ToPsxmirex
Компетентный
Привет всем. Я, наверное, уже известен Lum'овцам по данному мануалу. И, так как я увидел инвентарь на текстдравах, я решил показать Вам инвентарь на диалогах. Я, и как некоторые люди, не люблю системы на текстдравах. Ну и по этому использую максимум диалоги. Сразу хочу написать, что данный инвентарь есть в пабликах: в виде отдельной оптимизированной системы ( продаётся ) и в виде мода, где вы его можете спокойно вырезать. Я же буду писать Вам систему с нуля, не взяв быдлокод с мода.
* Если Вы увидите быдлокод с моей стороны - опишите его в комментариях и напишите как сделать лучше.
** Набивателей постов со смыслом "норм", "пойдёт", "мне не нравится" и т.д., прошу пойти на мой большой...
*** Пишу код сразу в теме, так что прошу прощения за то, что он без табуляции.
**** Передачи / уничтожения / использования инвентаря делать не буду. Вам дана основа динамического инвентаря - продолжение за Вами. =)
Автор: ToPsxmirex
PHP:
#define MAX_ITEM 5
new ItemsName[][] =
{
"Яблоко", "Банан", "Мандарин", "Кактус", "Виноград"
};
enum pInfo
{
pItem[MAX_ITEM], // Обязательно сохранять, чтобы инвентарь не пропал.
varItemNumber[MAX_ITEM] // Сохранять не нужно
};
new PlayerInfo[MAX_PLAYERS][pInfo];
PHP:
SetPlayerItems(playerid)
{
new String[84], Number = -1;
for(new i; i < MAX_ITEM; i ++)
{
if(PlayerInfo[playerid][pItem] == 0) continue;
PlayerInfo[playerid][varItemNumber][i] = -1;
format(String, sizeof(String), "%s%s ( %d )\n", String, ItemsName[i], PlayerInfo[playerid][uItem][i]);
Number ++, PlayerInfo[playerid][varItemNumber][Number] = i;
}
if(Number == -1) return SendClientMessage(playerid, -1, "* Ваш инвентарь пуст.");
ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "Инвентарь", String, "Далее", "Закрыть");
return true;
}
PHP:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case 0:
{
if(!response) return SendClientMessage(playerid, -1, "* Вы закрыли свой инвентарь.");
SetPVarInt(playerid, "LISTITEM", PlayerInfo[playerid][varItemNumber][listitem]);
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "Инвентарь", "Использовать\nПередать\nВыбросить", "Далее", "Назад");
return true;
}
case 1:
{
if(!response) return SetPlayerItems(playerid);
switch(GetPVarInt(playerid, "LISTITEM"))
{
case 0: SendClientMessage(playerid, -1, "* Вы выбрали яблоко.");
case 1: SendClientMessage(playerid, -1, "* Вы выбрали банан.");
case 2: SendClientMessage(playerid, -1, "* Вы выбрали мандарин.");
case 3: SendClientMessage(playerid, -1, "* Вы выбрали кактус.");
case 4: SendClientMessage(playerid, -1, "* Вы выбрали виноград.");
}
return true;
}
}
return true;
}
PHP:
COMMAND:items(playerid) return SetPlayerItems(playerid);
Последнее редактирование модератором:
