Автор: Yurik_Jakson
И так, придумал систему не я но воплотил её в реальность. Это как в играх заходи каждый день чтобы получать бонусы.
Приступим:
Для начала после всех инклудов #include вставим это (фунция которая позволит нам писать SCM а не SendClientMessage)
Code: Select all
stock SCM(playerid,color,string[])
{
SendClientMessage(playerid,color,string);
return true;
}
#define SendClientMessage SCM
потом добавим в enum pInfo
Code: Select all
pBonusDay,
pPoluchil,
pProigral,
ко всем new
Code: Select all
new prower[MAX_PLAYERS];
потом в OnPlayerConnect(playerid)
Code: Select all
PlayerInfo[playerid][pBonusDay]=0;
PlayerInfo[playerid][pPoluchil]=0;
PlayerInfo[playerid][pProigral]=0;
Теперь в OnPlayerLogin
Code: Select all
iniGetInt(File,"BonusDay",PlayerInfo[playerid][pBonusDay]);
iniGetInt(File,"Poluchil",PlayerInfo[playerid][pPoluchil]);
iniGetInt(File,"Proigral",PlayerInfo[playerid][pProigral]);
ну и в OnPlayerRegister, OnPlayerUpdate(или как там у Вас)
Code: Select all
iniSetInt(File,"BonusDay",PlayerInfo[playerid][pBonusDay]);
iniSetInt(File,"Poluchil",PlayerInfo[playerid][pPoluchil]);
iniSetInt(File,"Proigral",PlayerInfo[playerid][pProigral]);
теперь в паблик OnPlayerSpawn(playerid)
Code: Select all
Bonus(playerid);
Теперь приступим к созданию паблика который будет отвечать за бонус
Code: Select all
forward Bonus(playerid);
public Bonus(playerid)
{
if(PlayerInfo[playerid][pProigral]==0)
{
if(PlayerInfo[playerid][pPoluchil]==0)
{
if(PlayerInfo[playerid][pBonusDay]==0)
{
//здесь то что будете давать игроку
SCM(playerid,COLOR_LIGHTGREEN,"{FFFFFF} День 1/5");// сообщение
PlayerInfo[playerid][pBonusDay]=1;
PlayerInfo[playerid][pPoluchil]=1;
}
else if(PlayerInfo[playerid][pBonusDay]==1)
{
//и здесь
SCM(playerid,COLOR_LIGHTGREEN,"{FFFFFF} День 2/5");// сообщение
PlayerInfo[playerid][pBonusDay]=2;
PlayerInfo[playerid][pPoluchil]=1;
}
else if(PlayerInfo[playerid][pBonusDay]==2)
{
//и здесь
SCM(playerid,COLOR_LIGHTGREEN,"{FFFFFF} День 3/5");// сообщение
PlayerInfo[playerid][pBonusDay]=3;
PlayerInfo[playerid][pPoluchil]=1;
}
else if(PlayerInfo[playerid][pBonusDay]==3)
{
//и здесь
SCM(playerid,COLOR_LIGHTGREEN,"{FFFFFF} День 4/5");// сообщение
PlayerInfo[playerid][pBonusDay]=4;
PlayerInfo[playerid][pPoluchil]=1;
}
else if(PlayerInfo[playerid][pBonusDay]==4)
{
//и здесь
SCM(playerid,COLOR_LIGHTGREEN,"{FFFFFF} День 5/5");// сообщение
PlayerInfo[playerid][pBonusDay]=0;
PlayerInfo[playerid][pPoluchil]=1;
}
}
}
else
{
if(PlayerInfo[playerid][pBonusDay]!=0)
{
SCM(playerid,COLOR_LIGHTGREEN,"Чтоб получать бонусы Вы должны играть кадый день. Начните с начала.");// сообщение
PlayerInfo[playerid][pBonusDay]=0;
PlayerInfo[playerid][pPoluchil]=0;
if(PlayerInfo[playerid][pBonusDay]==0)
{
//и здесь
SCM(playerid,COLOR_LIGHTGREEN,"{FFFFFF} День 1/5");// сообщение
PlayerInfo[playerid][pBonusDay]=1;PlayerInfo[playerid][pPoluchil]=1;
}
}
}
return true;
}
forward Zawel(i);
public Zawel(i)
{
prower[i]++;
if(prower[i]==86400)/*здесь количество раз сколько запустился паблик если игрок не заходил(24 часа), если не зашел в течении 24 часов - значит начинает всё с начала*/
{
PlayerInfo[i][pProigral]=1;
}
if(IsPlayerConnected(i))
{
prower[i]=0;
}
return true;
}
ну и последнее в OnGameModeInit()
Code: Select all
new hour,minute,second;
gettime(hour,minute,second);
for(new i=0; i<GetMaxPlayers(); i++)
{
if(hour==24)
{
SetTimer("Zawel",1000,true);// стартует проверку паблика зашел ли игрок.
PlayerInfo[i][pPoluchil]=0;// обнуляет переменную которая даёт возможность получить бонус
}
}
Система полностью рабочая с INI сохранением
Далее прикреплен файл .PWN с бонус системой по дням и простенькой регистрацией на INI