Darge
Умник
Это второй вариант системы бонуса. В нем теперь нету таких недочетов как в прошлой версии. Вся суть - игра переменных.
Если:
Не забываем подключить foreach.inc.
База данных:
Тут мы добавляем 2 колонки. Первая - player_bonus, тип INT, максимальное количество символов 1 и day_of_bonus, тип INT, максимальное количество символов 1
Непосредственно код:
Ко всем переменным добавим
Далее, добавим stock. Он будет вызываться только тогда, когда игрок авторизуется. Добавим в конец вашего мода.
Теперь добавим GivePlayerBonus(playerid) в коллбэк, когда игрок авторизовался.
Это опять же в конец вашего мода. Ведь нам нужно сохранить наш результат?
Теперь в OnGameModeExit добавим NonBonusEx().
PHP:
// как простой пример
if(a == 0)
{
if(b == 0)
{
a++;
}
}
Если:
- игрок не не получал бонуса, то после рестарта сервер его показатели обнулятся.
- игрок получал бонус, то его обнулиться все, кроме количества пройденных дней, что даст ему возможно перейти к следующему дню.
Не забываем подключить foreach.inc.
База данных:
Тут мы добавляем 2 колонки. Первая - player_bonus, тип INT, максимальное количество символов 1 и day_of_bonus, тип INT, максимальное количество символов 1
Непосредственно код:
Ко всем переменным добавим
PHP:
new player_bonus[MAX_PLAYERS],
day_of_bonus[MAX_PLAYERS];
PHP:
stock GivePlayerBonus(playerid)
{
player_bonus[playerid] = cache_get_field_content_int(0, "player_bonus", <MySQL>);
day_of_bonus[playerid] = cache_get_field_content_int(0, "day_of_bonus", <MySQL>);
if(player_bonus[playerid] == 0)
{// когда то пропустил бонус
}
else if(player_bonus[playerid] == 1)
{// первый день боуса
if(day_of_bonus[playerid] == 0)
{// сегодня он не получал бонуса
// ...
day_of_bonus[playerid] = 1;
player_bonus[playerid]++;
SaveBonusInformation(playerid);
}
}
else if(player_bonus[playerid] == 2)
{// второй день боуса
if(day_of_bonus[playerid] == 0)
{// сегодня он не получал бонуса
// ...
day_of_bonus[playerid] = 1;
player_bonus[playerid]++;
SaveBonusInformation(playerid);
}
}
else if(player_bonus[playerid] == 3)
{// третий день боуса
if(day_of_bonus[playerid] == 0)
{// сегодня он не получал бонуса
// ...
day_of_bonus[playerid] = 1;
player_bonus[playerid]++;
SaveBonusInformation(playerid);
}
}
else if(player_bonus[playerid] == 4)
{// четвертый день боуса
if(day_of_bonus[playerid] == 0)
{// сегодня он не получал бонуса
// ...
day_of_bonus[playerid] = 1;
player_bonus[playerid]++;
SaveBonusInformation(playerid);
}
}
else if(player_bonus[playerid] == 5)
{// пятый день боуса
if(day_of_bonus[playerid] == 0)
{// сегодня он не получал бонуса
// ...
day_of_bonus[playerid] = 1;
player_bonus[playerid]++;
SaveBonusInformation(playerid);
}
}
else if(player_bonus[playerid] == 6)
{// шестой день боуса
if(day_of_bonus[playerid] == 0)
{// сегодня он не получал бонуса
// ...
day_of_bonus[playerid] = 1;
player_bonus[playerid]++;
SaveBonusInformation(playerid);
}
}
else if(player_bonus[playerid] == 7)
{// последний седьмой день боуса
if(day_of_bonus[playerid] == 0)
{// сегодня он не получал бонуса
// ...
day_of_bonus[playerid] = 1;
player_bonus[playerid] = 0;
SaveBonusInformation(playerid);
}
}
}
Это опять же в конец вашего мода. Ведь нам нужно сохранить наш результат?
PHP:
stock SaveBonusInformation(playerid)
{
if(player_bonus[playerid] > 0 && day_of_bonus[playerid] == 1)
{
new
query[MAX_PLAYER_NAME+3]= "UPDATE `таблица` SET",
player_name[MAX_PLAYER_NAME];
GetPlayerName(playerid, player_name, sizeof(player_name));
format(query, sizeof(query), "%s `player_bonus` = '%d'", query, player_bonus[playerid]);
format(query, sizeof(query), "%s `day_of_bonus` = '%d'", query, day_of_bonus[playerid]);
format(query, sizeof(query), "%s WHERE `столбец` = '%s'", query, player_name);
mysql_function_query(<MySQL>, query, false, "", "");
}
return 1;
}
stock NonBonus(playerid)
{
if(player_bonus[playerid] > 0 && day_of_bonus[playerid] == 0)
{
new
query[MAX_PLAYER_NAME+3]= "UPDATE `таблица` SET",
player_name[MAX_PLAYER_NAME];
GetPlayerName(playerid, player_name, sizeof(player_name));
format(query, sizeof(query), "%s `player_bonus` = '0'", query);
format(query, sizeof(query), "%s `day_of_bonus` = '0'", query);
format(query, sizeof(query), "%s WHERE `столбец` = '%s'", query, player_name);
mysql_function_query(<MySQL>, query, false, "", "");
}
else if(player_bonus[playerid] > 0 && day_of_bonus[playerid] == 1)
{
new
query[MAX_PLAYER_NAME+3]= "UPDATE `таблица` SET",
player_name[MAX_PLAYER_NAME];
GetPlayerName(playerid, player_name, sizeof(player_name));
format(query, sizeof(query), "%s `player_bonus` = '%d'", query, player_bonus[playerid]);
format(query, sizeof(query), "%s `day_of_bonus` = '0'", query);
format(query, sizeof(query), "%s WHERE `столбец` = '%s'", query, player_name);
mysql_function_query(<MySQL>, query, false, "", "");
}
return 1;
}
stock NonBonusEx()
{
foreach(Player, i)
{
NonBonus(i);
}
return 1;
}
Последнее редактирование:
