- Регистрация
- 12 Ноя 2011
- Сообщения
- 46
- Лучшие ответы
- 0
- Репутация
- 13
Видел в вопросах, люди спрашивали как систему кредитов через диалог создать в моде RLS, вот решил урок написать.Автор урока я, понимаю что многие до такого уже давно додумались, но всё же, автор урока я, ошибок быть по сути не должно, если вы всё правильно сделаете, как тут описано.
Урок писал напрямую в браузере, но функции взяты именно из RLS по этому ни к каким другим модам данная система в готовом состоянии не подойдёт, если только переделывать на этой основе.
Поясню сразу, всё что выделенно жирным обязательно к сведениям, так что ошибки могут быть только от вашей невнимательности!
Урок писал напрямую в браузере, но функции взяты именно из RLS по этому ни к каким другим модам данная система в готовом состоянии не подойдёт, если только переделывать на этой основе.
Поясню сразу, всё что выделенно жирным обязательно к сведениям, так что ошибки могут быть только от вашей невнимательности!
В общем:
1 шаг
В pInfo после последней переменной вставляем:
PHP:
pCredit,pCreditSrok
2 шаг
Дальше в public OnPlayerLogin(playerid,password[]) вставляем следующее:
PHP:
ini_getInteger(File,"Кредит",PlayerInfo[playerid][pCredit]);
ini_getInteger(File,"Срок кредита",PlayerInfo[playerid][pCreditSrok]);
3 шаг
После похожая ситуация, но уже не с чтением файла (ini_getInteger), а с записью в файл (ini_setInteger).
Вставляем в public OnPlayerRegister(playerid, password[]) следующее:
PHP:
ini_setInteger(File,"Кредит",PlayerInfo[playerid][pCredit]);
ini_setInteger(File,"Срок кредита",PlayerInfo[playerid][pCreditSrok]);
4 шаг
Идём в public OnPlayerUpdateRL(playerid) и вставляем:
PHP:
ini_setInteger(File,"Кредит",PlayerInfo[playerid][pCredit]);
ini_setInteger(File,"Срок кредита",PlayerInfo[playerid][pCreditSrok]);
С переменной в файле и проверку мы сделали, можно двигаться дальше, пол работы выполнено.
5 шаг
Создаём диалог самого кредита:
Идём в public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
PHP:
case 1111: // Тут номер диалога, который установите вы.
{
if(response)
{
switch(listitem)
{
case 0: // Первый слот в диалоге и функция к нему (в нашем случае это 300.000 кредит)
{
PlayerInfo[playerid][pCreditSrok] = 30; //Устанавливает значение pCredit на 30 (30 часов платить)
PlayerInfo[playerid][pCredit] = 1; //Устанавливает значение pCredit на 1 (взяли кредит на 1 сумму)
PlayerInfo[playerid][pCash] += 300000; //Добавляет игроку деньги, можно перечислить на карту
SendClientMessage(playerid,COLOR_WHITE,"Вам выдали кредит на сумму 300.000."); // Это сообщение понятно
}
case 1: // Второй слот в диалоге и функция к нему (в нашем случае это 1.000.000)
{
PlayerInfo[playerid][pCredit] = 2; //Устанавливает значение pCredit на 2 (взяли кредит на 2 сумму)
PlayerInfo[playerid][pCreditSrok] = 40; //Устанавливает значение pCredit на 40 (40 часов платить)
PlayerInfo[playerid][pCash] += 1000000; //Добавляет игроку деньги, можно перечислить на карту
SendClientMessage(playerid,COLOR_WHITE,"Вам выдали кредит на сумму 1.000.000."); // Это сообщение понятно
}
case 2: // Третий слот в диалоге и функция к нему (в нашем случае это 5.000.000)
{
PlayerInfo[playerid][pCredit] = 3; //Устанавливает значение pCredit на 3 (взяли кредит на 3 сумму)
PlayerInfo[playerid][pCreditSrok] = 50; //Устанавливает значение pCredit на 50 (позже поймёте почему не 30, 40)
PlayerInfo[playerid][pCash] += 5000000; //Добавляет игроку деньги, можно перечислить на карту
SendClientMessage(playerid,COLOR_WHITE,"Вам выдали кредит на сумму 5.000.000."); // Это сообщение понятно
}
}
return 1;
}
}
PHP:
ShowPlayerDialog(playerid, 1111, DIALOG_STYLE_LIST, "Выберите сумму", "- 300.000 (по 3.000 каждый PayDay) \n- 1.000.000 (по 5.000 каждый PayDay \n- 5.000.000 (по 10.000 каждый PayDay)", "Выбор", "Назад");
6 шаг
Теперь наша задача создать выплату кредита (автоматическую).
Ищем в моде public PayDay() и где то после Клиент банка и тому подобное между скобками } и { (именно они должны стоять в таком положении, получается между зактрытой и открытой скобкой, а не наоборот) вставляем следующее:
PHP:
if(PlayerInfo[i][pCreditSrok] >= 0 && PlayerInfo[i][pCredit] == 1) // Это выплата за кредит в 300.000
{
format(string, sizeof(string), "**** Выплата кредитов: -3000 вирт"); // Пишет сообщение при PayDay
SendClientMessage(i, COLOR_LIGHTRED, string);
PlayerInfo[i][pBank] -= 3000; // Если хотите чтобы снимало с рук вместо pBank пишете pCash
PlayerInfo[i][pCreditSrok] -= 1; // Снимает по 1 значению каждый PayDay, пока не дойдёт до 0
}
if(PlayerInfo[i][pCreditSrok] >= 0 && PlayerInfo[i][pCredit] == 2) // Это выплата за кредит в 1.000.000
{
format(string, sizeof(string), "**** Выплата кредитов: -5000 вирт"); // Пишет сообщение при PayDay
SendClientMessage(i, COLOR_LIGHTRED, string);
PlayerInfo[i][pBank] -= 5000; // Если хотите чтобы снимало с рук вместо pBank пишете pCash
PlayerInfo[i][pCreditSrok] -= 1; // Снимает по 1 значению каждый PayDay, пока не дойдёт до 0
}
if(PlayerInfo[i][pCreditSrok] >= 0 && PlayerInfo[i][pCredit] == 3) // Это выплата за кредит в 5.000.000
{
format(string, sizeof(string), "**** Выплата кредитов: -10000 вирт"); // Пишет сообщение при PayDay
SendClientMessage(i, COLOR_LIGHTRED, string);
PlayerInfo[i][pBank] -= 10000; // Если хотите чтобы снимало с рук вместо pBank пишете pCash
PlayerInfo[i][pCreditSrok] -= 1; // Снимает по 1 значению каждый PayDay, пока не дойдёт до 0
}
if(PlayerInfo[i][pCreditSrok] == 1 && PlayerInfo[i][pCredit] >= 0) // Это последний срок
{
format(string, sizeof(string), "**** Вы выплатили кредит"); // Пишет сообщение при PayDay
SendClientMessage(i, COLOR_LIGHTRED, string);
PlayerInfo[i][pCredit] = 0; // Убирает наличие кредита
PlayerInfo[i][pCreditSrok] = 0; // Онулирует срок кредита
}
А теперь создаём диалог, в котором можно будет добровольно выплатить кредит.
PHP:
case 1111: // Тут номер диалога, который установите вы.
{
if(response)
{
if(PlayerInfo[playerid][pCreditSrok] >= 0 && PlayerInfo[playerid][pCredit] == 1) // Это выплата за кредит в 300.000
{
format(string, sizeof(string), "Вы заплатили своевременно кредит: -3000 вирт"); // Пишет сообщение при PayDay
SendClientMessage(playerid, COLOR_LIGHTRED, string);
PlayerInfo[playerid][pBank] -= 3000; // Если хотите чтобы снимало с рук вместо pBank пишете pCash
PlayerInfo[playerid][pCreditSrok] -= 1; // Снимает по 1 значению каждый PayDay, пока не дойдёт до 0
}
if(PlayerInfo[playerid][pCreditSrok] >= 0 && PlayerInfo[playerid][pCredit] == 2) // Это выплата за кредит в 1.000.000
{
format(string, sizeof(string), "Вы заплатили своевременно кредит: -5000 вирт"); // Пишет сообщение при PayDay
SendClientMessage(playerid, COLOR_LIGHTRED, string);
PlayerInfo[playerid][pBank] -= 5000; // Если хотите чтобы снимало с рук вместо pBank пишете pCash
PlayerInfo[playerid][pCreditSrok] -= 1; // Снимает по 1 значению каждый PayDay, пока не дойдёт до 0
}
if(PlayerInfo[playerid][pCreditSrok] >= 0 && PlayerInfo[playerid][pCredit] == 3) // Это выплата за кредит в 5.000.000
{
format(string, sizeof(string), "Вы заплатили своевременно кредит: -10000 вирт"); // Пишет сообщение при PayDay
SendClientMessage(playerid, COLOR_LIGHTRED, string);
PlayerInfo[playerid][pBank] -= 10000; // Если хотите чтобы снимало с рук вместо pBank пишете pCash
PlayerInfo[playerid][pCreditSrok] -= 1; // Снимает по 1 значению каждый PayDay, пока не дойдёт до 0
}
if(PlayerInfo[playerid][pCreditSrok] == 1 && PlayerInfo[playerid][pCredit] >= 0) // Это последний срок
{
format(string, sizeof(string), "**** Вы выплатили кредит"); // Пишет сообщение при PayDay
SendClientMessage(playerid, COLOR_LIGHTRED, string);
PlayerInfo[playerid][pCredit] = 0; // Убирает наличие кредита
PlayerInfo[playerid][pCreditSrok] = 0; // Онулирует срок кредита
}
if(PlayerInfo[playerid][pCreditSrok] == 0 && PlayerInfo[playerid][pCredit] == 0) // Это последний срок
{
format(string, sizeof(string), "Кредит уже выплачен или вы его не брали."); // Пишет сообщение при PayDay
SendClientMessage(playerid, COLOR_WHITE, string);
}
else
{
return 1;
}
}
}
PHP:
ShowPlayerDialog(playerid, 1111, DIALOG_STYLE_MSGBOX, "Выплата кредита", "Вы хотите заплатить\n своевременно?", "Да", "Нет");
И так же можете это вставить в диалог банка или команду. Спасибо за внимание!
Последнее редактирование: