Название Скрипта: Система Доната Автор Скрипта: iBublik
Описание: Данный скрипт был написан мной давно. Он построен на mxINI. Включает в себя 2 команды. Скрипт позволяет добавлять и использовать внутреигровую валюту (DonatePoints). Для добавления DP нужно ввести зарегистрированный код при помощи специальной команды.
Команды: - /donate- Открывает меню системы. - /setdonatecode - Позволяет Зарегистрировать в Базе Данных (DonateCodes.ini) новый код. Для этого нужно ввести код, который будет работать, и количество DP.
new DonatePoints[MAX_PLAYERS]; new bool:RegCode = false; new RegCodes[32];
В GameModeInit() добавить:
Код
new DonateFile = ini_openFile("DonateCodes.ini"); // Пытаемся обнаружить файл DonateCodes.ini if(DonateFile < 0) { // Не обнаруженно print("\nБаза данных с Donate кодами не обнаружен!"); DonateFile = ini_createFile("DonateCodes.ini"); // создаем файл print("База данных с Donate кодами создан!\n"); } else { // Обнаруженно print("\nБаза данных с Donate кодами обнаруженна!\n"); } ini_closeFile(DonateFile); // Закрываем файл
В OnPlayerCommandText(playerid, cmdtext[]) добавить:
Код
if (strcmp("/donate", cmdtext, true, 10) == 0) { new string[256],plname[MAX_PLAYER_NAME]; GetPlayerName(playerid,plname,sizeof(plname)); format(string,sizeof(string),"Меню Доната | Аккаунт: %s | Баланс: %i DP",plname,DonatePoints[playerid]); ShowPlayerDialog(playerid,50,DIALOG_STYLE_LIST,string,"[*] Услуги\n[*] Активировать Код\n[*] Запросить Код","Выбор","Отмена"); return 1; } if (strcmp("/setdonatecode", cmdtext, true, 10) == 0) { if(IsPlayerAdmin(playerid)) { if(!RegCode) { ShowPlayerDialog(playerid,60,DIALOG_STYLE_INPUT,"Создание Кода","Введите Код, который будет использоваться при активации","Далее","Отмена"); } else { SendClientMessage(playerid,-1,"Кто-то уже активирует код..."); } } return 1; }
В OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]):
Код
case 50: { if(response) { switch(listitem) { case 0: ShowPlayerDialog(playerid,51,DIALOG_STYLE_LIST,"Услуги","Услуга1\nУслуга2\nУслуга3","Выбор","Назад"); // Вводить сюда свои услуги case 1: ShowPlayerDialog(playerid,52,DIALOG_STYLE_INPUT,"Активация Кода","Введите выданный Вам код в окно снизу:","Ввод","Назад"); case 3: SendClientMessage(playerid,-1,"Измените код, чтобы написать свои условия"); } } } case 52: {//1 if(response) {//2 if(strlen(inputtext)) {//3 new DonCod = ini_openFile("DonateCodes.ini"); new donpoints; ini_getInteger(DonCod,inputtext,donpoints); if(donpoints <= 0) {//4 ShowPlayerDialog(playerid,2,DIALOG_STYLE_MSGBOX,"Ошибка Активации","Данный Код не зарегистрирован в системе!\nПопробуйте ввести свой код заного\n\nЕсли эта проблема повторяется - свяжитесь с администрацией.","OK",""); }//4 else {//4 new string[256]; format(string,sizeof(string),"Активация прошла успешно! На Ваш счет зачисленно +%i DonatePoints!",donpoints); ShowPlayerDialog(playerid,2,DIALOG_STYLE_MSGBOX,"Активация Прошла Успешно!",string,"OK",""); DonatePoints[playerid] += donpoints; ini_removeKey(DonCod,inputtext); }//4 ini_closeFile(DonCod); }//3 }//2 }//1 case 60: { if(response) { if(strlen(inputtext)) { RegCode = true; format(RegCodes,sizeof(RegCodes),"%s",inputtext); ShowPlayerDialog(playerid,61,DIALOG_STYLE_INPUT,"Регистрация Кода","Введите количество DP:","Регистрация","Отмена"); } } } case 61: { if(response) { if(strlen(inputtext)) { RegCode = false; new iniFile = ini_openFile("DonateCodes.ini"); ini_setInteger(iniFile,RegCodes,strval(inputtext)); ini_closeFile(iniFile); SendClientMessage(playerid,-1,"Код создан!"); } } }
Примечание! В моде желательно изменить ID диалогов для того, чтобы избежать ошибок!
Известные проблемы и баги:
1. Файл DonateCodes.ini не создается 2. Нету сохранения количества DP 3. При вводе слов в диалоге "Введите количество DP" код создается, но не имеет DP
Решения:
1. Просто создайте файл DonateCodes.ini в папке scriptfiles в папке сервера 2. Измените чуток код. Либо ждите, когда мои руки дотянутся полностью вылизать систему 3. Добавьте эти строки после ввода: