Главная » Файлы » Всё для SA-MP (San Andreas Multiplayer) » [FS] Скрипты

Система Доната

Изображение Отсутствует


Описание:

Автор Скрипта: iBublik
Описание:
Данный скрипт был написан мной давно. Он построен на mxINI. Включает в себя 2 команды.
Скрипт позволяет добавлять и использовать внутреигровую валюту (DonatePoints).
Для добавления DP нужно ввести зарегистрированный код при помощи специальной команды.
Команды:
- /donate- Открывает меню системы.
- /setdonatecode - Позволяет Зарегистрировать в Базе Данных (DonateCodes.ini) новый код.
Для этого нужно ввести код, который будет работать, и количество DP.

Для тех, кто желает вшить скрипт себе в мод:

Ко всем new добавить: 

Код:
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. Добавьте эти строки после ввода:
    Код:
    for(new i; i<strlen(inputtext), i++) {
    switch(inputtext[i]){
    A..Z: {
    ShowPlayerDialog(playerid,61,DIALOG_STYLE_INPUT,"Регистрация Кода","Введите количество DP:","Регистрация","Отмена");
    break; }
    a..z: {
    ShowPlayerDialog(playerid,61,DIALOG_STYLE_INPUT,"Регистрация Кода","Введите количество DP:","Регистрация","Отмена"); 
    break; }
    }
    }

 

Дополнительная информация:
Добавил: YECHEZ
Автор материала: Неизвестно (если знаете, то пишите в комментарии)
Источник: //gnr-samp.ucoz.ru/load/samp/fs/sistema_donata/4-1-0-131 (указывать при копировании)
Раздел материала: Всё для SA-MP (San Andreas Multiplayer)
О материале:
Дата добавления материала: 30.04.2014 в 22:13
Дата последнего обновления материала:
Материал просмотрен: 17081 раз
Категория материала: [FS] Скрипты
К материалу оставлено: 7 комментариев

Ccылка
BB-Code
HTML-код

Правила публикации комментариев:
1. Запрещено оскорблять, унижать в грубой форме других пользователей.
2. Мат и грубые слова запрещены, даже в скрытой форме, для этого существуют масса слов которые заменяют мат.
3. Запрещено писать ссылки на другие сайты

Всего комментариев: 7
7 lyuisdenerro  
Куда кидать скрипт?

6 den_chik  
как зделать чтобы после покупки доната писалась админ команда типо /money ид доната 1000000 Донат

2 YECHEZ  
1
Чуть поже на форум залью более понятную версию

4 23456  
Куда писать строки new и остальные, ПОМОГИ пожалуйста

5 YECHEZ  
0
new обычно находятся в самом верху мода, а про остальные строки там всё написано.

1 Кирилл  
Эх...Долго и сложно,не гарантия если будет работать

3 Excel_Smit  
Все работает без багов, у YECHEZ стоит этот же скрипт

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]