shape1
shape2
shape3
shape4
shape7
shape8

Система нужд [Голод, жажда].


Maxim_Capone

Новичок
Пользователь
27.11.2019
54
2
0
Еще раз приветствую. Давайте напишем систему голода и жажды, а, говоря проще, систему нужд.

Для начала добавим в enum pInfo:

pHunger,
pZhazhda,




Перейдем к public OnPlayerSpawn(playerid). Туда вставим:

SetHunger(playerid, PI[playerid][pHunger]);
SetZhazhda(playerid, PI[playerid][pZhazhda]);




Идём в public OnPlayerEnterDynamicArea(playerid, areaid). Если его нет - создайте forward и public.

Теперь создаём команду для проверки своих нужд и адм-команду:

CMD:needs(playerid)
{
new string[256];
format(string, sizeof(string), "{FFFFFF}Голод: {FFCC00}%d%%\n{FFFFFF}Жажда: {FFCC00}%d%%\n{FFFFFF}Туалет: {FFCC00}%d%%\n{FFFFFF}Гигиена: {FFCC00}%d%%", PI[playerid][pHunger], PI[playerid][pZhazhda], PI[playerid][pTualet], PI[playerid][pGigiena]);
ShowPlayerDialog(playerid, D_NULL, DIALOG_STYLE_MSGBOX, "{FF8C00}Нужды", string, "Закрыть", "");
return 1;
}

CMD:setneeds(playerid)
{
if(PI[playerid][pAdmin] < ADM_MODER) return SendClientMessage(playerid, COLOR_RED, "Вы не администратор!");
else if(PI[playerid][pAdmin] < 1) return SendClientMessage(playerid, COLOR_RED, "Вы не администратор!");

SetHunger(playerid, 100);
SetZhazhda(playerid, 100);

return SCM(playerid, COLOR_GREEN, "Вы установили себе все нужды на 100 процентов");
}



Переходим к stock CreateAccount(playerid, password[]):

SetHunger(playerid, PI[playerid][pHunger]);
Hunger(playerid, 0);
SetZhazha(playerid, PI[playerid][pZhazha]);




Переходим к паблику сохранения. У меня это - OnPlayerLogin, и вставляем:

PI[playerid][pHunger] = cache_get_row_int(0, n, dbHandle); // hunger
PI[playerid][pZhazhda] = cache_get_row_int(0, 2n, dbHandle); // zazda


ВНАМАНИЕ: n, 2n заменить на любой свободный номер!!!

В public SaveAccount:

format(src,sizeof(src),"hunger='%i',",PI[playerid][pHunger]);
strcat(query,src,sizeof(query));




Сюда - stock SetPlayerDataToDefault(playerid):

PI[playerid][pHunger] = 50;
PI[playerid][pZhazhda] = 50;




Итак. Создадим stock-и:

stock SetHunger(playerid, amount)
{
if(amount > 100) PI[playerid][pHunger] = 100;
else if(amount < 0) PI[playerid][pHunger] = 0;
else PI[playerid][pHunger] = amount;
Hunger(playerid, 0);
return 1;
}

stock Hunger(playerid, type)
{
if(PI[playerid][pSettings] & setHungerInfo)
{
switch(type)
{
case 0:
{
/* TextDrawShowForPlayer(playerid, HungerBackground[0]);
TextDrawShowForPlayer(playerid, HungerBackground[1]);
PlayerTextDrawTextSize(playerid, HungerProgress[playerid], 549.5 + PI[playerid][pHunger] / 100.0 * 54.5, 40.000000);*/
switch(PI[playerid][pHunger])
{
/* case 81..100: PlayerTextDrawBoxColor(playerid, HungerProgress[playerid], 0x63BD4EFF);
case 51..80: PlayerTextDrawBoxColor(playerid, HungerProgress[playerid], 0xCCFF00FF);
case 31..50: PlayerTextDrawBoxColor(playerid, HungerProgress[playerid], 0xFDE910FF);
case 16..30: PlayerTextDrawBoxColor(playerid, HungerProgress[playerid], 0xFF8800FF);
case 0..15: PlayerTextDrawBoxColor(playerid, HungerProgress[playerid], 0xFF0600FF);*/
}
// PlayerTextDrawShow(playerid, HungerProgress[playerid]);
}
case 1:
{
/* PlayerTextDrawHide(playerid, HungerProgress[playerid]);
TextDrawHideForPlayer(playerid, HungerBackground[0]);
TextDrawHideForPlayer(playerid, HungerBackground[1]);*/
}
}
}
}

stock SetZhazhda(playerid, amount)
{
if(amount > 100) PI[playerid][pZhazhda] = 100;
else if(amount < 0) PI[playerid][pZhazhda] = 0;
else PI[playerid][pZhazhda] = amount;
return 1;
}
stock GiveZhazhda(playerid, amount)
{
SetZhazhda(playerid,PI[playerid][pZhazhda] + amount);
if(PI[playerid][pZhazhda] + amount > 100) PI[playerid][pZhazhda] = 100;
}
stock GiveHunger(playerid, amount)
{
SetHunger(playerid,PI[playerid][pHunger] + amount);
if(PI[playerid][pHunger] + amount > 100) PI[playerid][pHunger] = 100;
Hunger(playerid, 0);
}



И последний рывок - создадим массив, хранящий наши хот-доги:

enum AreaInformation
{
arHotdogHP
}

new AreaInfo[AreaInformation];




Итак. Мы наконец-то закончили.. Слава Богу.. Теперь тест.

Скриншоты: https://imgur.com/a/bqFvkkg

У меня, как видите, все работает. Если у Вас возникли ошибки или проблемы - отпишите в эту тему, я с радостью помогу Вам.

Урок завершен, я пошёл отдыхать после столь долгой работы с кодом..

Автор: Maxim_Capone (часть кода взята с Amazing RP, автор которого Mark_Richards).

 
Последнее редактирование модератором: