Набросал самую простую "систему". Что сложного? Просто оформить диалоги.
if(strcmp(cmdtext, "/donate", true) == 0)
{
new name[24];
new caption[64];
GetPlayerName(playerid, name, sizeof(name));
format(caption,sizeof(caption),"{ffffff}Аккаунт {4CFF00}%s{ffffff} • Баланс: {4CFF00}%d{ffffff} рублей", name, PlayerInfo[playerid][pDonate]);
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, caption, "Пополнение баланса\nVIP привилегии\t\t\t[1 рубль]\nДругая услуга\t\t\t[2 рубля]\nДенежные средства", "Выбор", "Отмена");
}
else if(strcmp(cmd, "/givemoney", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] <= 10) return SendClienMessage(playerid, -1, "* Доступ запрещен.");
if(sscanf(params, "uds[50]", params[0], params[1])) return SendClienMessage(playerid, -1, "* Используйте: /givemoney [id] [amount] [comment].");
if(!IsPlayerConnected(params[0])) return SendClienMessage(playerid, -1, "* Данный игрок оффлайн.");
if(params[1] < 1 || params[1] > 100000) return SendClienMessage(playerid, -1, "* Сумма средств должна быть от 1 до 100 000 рублей.");
format(string, sizeof(string), "* Администратор %s выдал Вам %d рублей.", playerid, params[1]); SendClienMessage(params, -1, string);
PlayerInfo[params[0]][pDonate] = +params[1];
return 1;
}
В OnDialogReponse:
if(dialogid == 1)
{
if(response)
{
if(listitem == 0) { ShowPlayerDialog(playerid, 2, DIALOG_STYLE_MSGBOX, "{ffffff}Способы оплаты", "текст", "Назад", ""); }
if(listitem == 1)
{
if(PlayerInfo[playerid][pDonate] >= 1)
{
PlayerInfo[playerid][pDonate] =-1;
PlayerInfo[playerid][pDonateRank] = 1;
SendClientMessage(playerid, -1, "* Благодарим Вас за покупку.");
} else { SendClienMessage(playerid, -1, "* Недостаточно средств."); }
}
if(listitem == 2)
{
if(PlayerInfo[playerid][pDonate] >= 1)
{
PlayerInfo[playerid][pDonate] =-2;
SendClientMessage(playerid, -1, "* Благодарим Вас за покупку.");
} else { SendClienMessage(playerid, -1, "* Недостаточно средств."); }
}
if(listitem == 3) { ShowPlayerDialog(playerid, 2, DIALOG_STYLE_LIST, "Покупка вирт", "$1 000 000 \t\t [1000 рублей]\n$5 000 000 \t\t [2000 рублей]\n$10 000 000 \t\t [4000 рублей]", "Выбор", "Назад"); }
}
return 1;
}
if(dialogid == 2)
{
if(response)
{
if(listitem == 0)
{
if(PlayerInfo[playerid][pDonate] >= 1000)
{
GetPlayerMoney(playerid, 1000000);
} else { SendClienMessage(playerid, -1, "* Недостаточно средств."); }
}
if(listitem == 1)
{
if(PlayerInfo[playerid][pDonate] >= 2000)
{
GetPlayerMoney(playerid, 5000000);
} else { SendClienMessage(playerid, -1, "* Недостаточно средств."); }
}
if(listitem == 3)
{
if(PlayerInfo[playerid][pDonate] >= 4000)
{
GetPlayerMoney(playerid, 10000000);
} else { SendClienMessage(playerid, -1, "* Недостаточно средств."); }
}
return 1;
}
Не забудь добавить переменную 'pDonate' в загрузку/сохранение аккаунтов.