-
Бонусы для игроков
Проблема системы в том что если 1 день получил бонус на 2 не получаю..
PHP код:
stock Bonus(playerid)
{
if(PlayerInfo[playerid][pProigral]==0)
{
if(PlayerInfo[playerid][pPoluchil]==0)
{
if(PlayerInfo[playerid][pBonusDay]==0)
{
PlayerInfo[playerid][pExp] += 1;
SendClientMessage(playerid,COLOR_LIGHTGREEN,"Вы получили бонус ");
PlayerInfo[playerid][pBonusDay]=1;
PlayerInfo[playerid][pPoluchil]=1; // это значит что игрок получил бонус
new hour,minut,sec;
gettime(hour,minut,sec);//узнаём время
new wremya = 23 - hour;//отнимаем 23 от часа который у игрока сейчас
SetTimer("Obnul",wremya*60*60*1000,false);//запускаем таймер который обнулит переменную получения бонуса
new mtr[144];
format(mtr,144,"Вы сможете получить следующий бонус через {FFFFFF}%d часов",wremya);
SendClientMessage(playerid,COLOR_LIGHTGREEN,mtr);
return true;
}
if(PlayerInfo[playerid][pBonusDay]==1)
{
PlayerInfo[playerid][pExp] += 2;
SendClientMessage(playerid,COLOR_LIGHTGREEN,"Вы получили бонус ");
PlayerInfo[playerid][pBonusDay]=2;
PlayerInfo[playerid][pPoluchil]=1;
new hour,minut,sec;
gettime(hour,minut,sec);
new wremya = 23 - hour;
SetTimer("Obnul",wremya*60*60*1000,false);
new mtr[144];
format(mtr,144,"Вы сможете получить следующий бонус через {FFFFFF}%d часов",wremya);
SendClientMessage(playerid,COLOR_LIGHTGREEN,mtr);
return true;
}
}
}
else
{
if(PlayerInfo[playerid][pBonusDay]!=0)
{
SendClientMessage(playerid,COLOR_LIGHTGREEN,"Чтобы получать бонусы Вы должны играть каждый день. Начинайте с начала.");
PlayerInfo[playerid][pBonusDay]=0;
PlayerInfo[playerid][pPoluchil]=0;
if(PlayerInfo[playerid][pBonusDay]==0)
{
PlayerInfo[playerid][pExp] += 1;
SendClientMessage(playerid,COLOR_LIGHTGREEN,"Вы получили бонус ");
PlayerInfo[playerid][pBonusDay]=1;
PlayerInfo[playerid][pPoluchil]=1;
new hour,minut,sec;
gettime(hour,minut,sec);
new wremya = 23 - hour;
SetTimer("Obnul",wremya*60*60*1000,false);
new mtr[144];
format(mtr,144,"Вы сможете получить следующий бонус через {FFFFFF}%d часов",wremya);
SendClientMessage(playerid,COLOR_LIGHTGREEN,mtr);
return true;
}
}
}
return true;
}
PHP код:
forward Obnul(i);
public Obnul(i)
{
PlayerInfo[i][pPoluchil]=0;//обнулили теперь игрок сможет получить бонус!!
SetTimer("Zawel",1000,true);
return true;
}
forward Zawel(i);
public Zawel(i)
{
prower[i]++;//переменная которая будет считать кол-во раз загружения паблика
if(prower[i]==86400)//если игрок не зашел на сервер за это время (это колво секунд = 24 часам)
{
PlayerInfo[i][pProigral]=1; // устанавливаем игроку что он проиграл и ему прийдёться начать все с начала )
}
if(IsPlayerConnected(i))// а если подключился
{
prower[i]=0; // обнуляем и продолжаем давать бонусы игроку
}
return true;
}
- - - Добавлено - - -
сохронение и т.д все сделал все сохроняет
-
PHP код:
if(PlayerInfo[playerid][pPoluchil]==0)
PHP код:
PlayerInfo[playerid][pPoluchil]=1; // это значит что игрок получил бонус
-
Опишите систему. Сам принцип не ясен.
Как вы собираетесь отслеживать что-то, если у вас игроки меняются, а id остаются. Без записи в таблицу или в фаил ничего не выйдет.
Или задача игрока оставаться на сервере до 24 часов?
-
смысла не понял -_- т.е если я так сделаю то перезайду и получу за 2й день
- - - Добавлено - - -
сейчас опишу
- - - Добавлено - - -
бонус на система по дням если допустим игрок не зашел один день на сервер то ему прийдеться начинать все с начала.
OnPlayerLogin
PHP код:
iniGetInt(File,"BonusDay",PlayerInfo[playerid][pBonusDay]);
iniGetInt(File,"Poluchil",PlayerInfo[playerid][pPoluchil]);
iniGetInt(File,"Proigral",PlayerInfo[playerid][pProigral]);
и т.д где это сохроняем в файл с аккаунтом игрока если игрок получил бонус за 1 день то
pBonusDay=1;
pPoluchil =1;
затем наступил следующий день то игрок должен получить бонус за 2й день
pBonusDay=2;
pPoluchil =1;
но проблема в том что он его не получает хоть и есть этот паблик обнуления "pPoluchil"
PHP код:
forward Obnul(i);
public Obnul(i)
{
PlayerInfo[i][pPoluchil]=0;
SetTimer("Zawel",1000,true);
return true;
}
надеюсь понятно...
-
Вы в файл записывайте дату получения из getdate, а не получил/не получил. И уже когда игрок хочет получить бонус - проверяйте