KrakeNMeM
Новичок
Всем привет! К наступающим праздникам появилось у меня вдохновение сделать динамическую систему подарков на сервере. И вот сделал я команду, которая создаёт подарки на месте игрока и сразу же записывает в БД всю инфу о них (Модель самого подарка и его расположение).
Соответственно, во время загрузки мода это всё загружается из БД в мод и он уже раставляет подарки:
Сам массив с подарками:
Наконец я это всё написал, и вдруг у меня появились проблемы. А как же можно сделать так, чтобы игрок мог использовать каждый подарок 1 раз? Ну тоесть он получил 12-й подарок и больше его не мог брать. Как можно сделать лучше всего, если моя система динамическая?
P.S. В павно я новичок абсолютный и если что, прошу ругать меня не сильно =)
C++:
CMD:creategift(playerid)
{
if(Player[playerid][pAdmin] > 6)return ESCM
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid, x,y,z);
switch(random(5))// вид подарка выбирается рандомно
{
case 0:
{
for(new i; i < MAX_GIFTS; i++)
{
if(Giftss[i] == -1)
{
Giftss[i] = CreatePickup(19054,23, x,y,z); // пикап записывается в пустую ячейку массива Giftss
Gift[i][GiftID] = 19054;
Gift[i][PX] = x;
Gift[i][PY] = y;
Gift[i][PZ] = z;
new string[105];
format(string, sizeof(string),"INSERT INTO `gifts` (`ID`,`PX`,`PY`,`PZ`) VALUES(%d, %f, %f, %f)", Gift[i][GiftID], Gift[i][PX], Gift[i][PY], Gift[i][PZ]);
mysql_query(DBCONNECT,string);
SCM(playerid, COLOR_GREEN, "[Новогодний ивент]Подарок успешно создан!");
break;
}
}
}
case 1:
{
for(new i; i < MAX_GIFTS; i++)
{
if(Giftss[i] == -1)
{
Giftss[i] = CreatePickup(19055,23, x,y,z);
Gift[i][GiftID] = 19055;
Gift[i][PX] = x;
Gift[i][PY] = y;
Gift[i][PZ] = z;
new string[105];
format(string, sizeof(string),"INSERT INTO `gifts` (`ID`,`PX`,`PY`,`PZ`) VALUES(%d, %f, %f, %f)", Gift[i][GiftID], Gift[i][PX], Gift[i][PY], Gift[i][PZ]);
mysql_query(DBCONNECT,string);
SCM(playerid, COLOR_GREEN, "[Новогодний ивент]Подарок успешно создан!");
break;
}
}
}
case 2:
{
for(new i; i < MAX_GIFTS; i++)
{
if(Giftss[i] == -1)
{
Giftss[i] = CreatePickup(19056,23, x,y,z);
Gift[i][GiftID] = 19056;
Gift[i][PX] = x;
Gift[i][PY] = y;
Gift[i][PZ] = z;
new string[105];
format(string, sizeof(string),"INSERT INTO `gifts` (`ID`,`PX`,`PY`,`PZ`) VALUES(%d, %f, %f, %f)", Gift[i][GiftID], Gift[i][PX], Gift[i][PY], Gift[i][PZ]);
mysql_query(DBCONNECT,string);
SCM(playerid, COLOR_GREEN, "[Новогодний ивент]Подарок успешно создан!");
break;
}
}
}
case 3:
{
for(new i; i < MAX_GIFTS; i++)
{
if(Giftss[i] == -1)
{
Giftss[i] = CreatePickup(19057,23, x,y,z);
Gift[i][GiftID] = 19057;
Gift[i][PX] = x;
Gift[i][PY] = y;
Gift[i][PZ] = z;
new string[105];
format(string, sizeof(string),"INSERT INTO `gifts` (`ID`,`PX`,`PY`,`PZ`) VALUES(%d, %f, %f, %f)", Gift[i][GiftID], Gift[i][PX], Gift[i][PY], Gift[i][PZ]);
mysql_query(DBCONNECT, string);
SCM(playerid, COLOR_GREEN, "[Новогодний ивент]Подарок успешно создан!");
break;
}
}
}
case 4:
{
for(new i; i < MAX_GIFTS; i++)
{
if(Giftss[i] == -1)
{
Giftss[i] = CreatePickup(19058,23, x,y,z);
Gift[i][GiftID] = 19058;
Gift[i][PX] = x;
Gift[i][PY] = y;
Gift[i][PZ] = z;
new string[105];
format(string, sizeof(string),"INSERT INTO `gifts` (`ID`,`PX`,`PY`,`PZ`) VALUES(%d, %f, %f, %f)", Gift[i][GiftID], Gift[i][PX], Gift[i][PY], Gift[i][PZ]);
mysql_query(DBCONNECT,string);
SCM(playerid, COLOR_GREEN, "[Новогодний ивент]Подарок успешно создан!");
break;
}
}
}
}
return true;
}
C++:
mysql_function_query(DBCONNECT, "SELECT*FROM `gifts`", true, "LoadGifts", "");
publics LoadGifts()
{
new rows, fields;
cache_get_data(rows, fields);
if(rows)
{
for(new i; i < rows; i++)
{
Gift[i][GiftID] = cache_get_field_content_int(i, "ID", DBCONNECT);
Gift[i][PX] = cache_get_field_content_float(i, "PX", DBCONNECT);
Gift[i][PY] = cache_get_field_content_float(i, "PY", DBCONNECT);
Gift[i][PZ] = cache_get_field_content_float(i, "PZ", DBCONNECT);
Giftss[i] = CreatePickup(Gift[i][GiftID],23,Gift[i][PX],Gift[i][PY],Gift[i][PZ]);
}
}
}
C++:
#define MAX_GIFTS 50
enum Gifts
{
GiftID,
Float:PX,
Float:PY,
Float:PZ
};
new Gift[MAX_GIFTS][Gifts];
new Giftss[MAX_GIFTS];
P.S. В павно я новичок абсолютный и если что, прошу ругать меня не сильно =)
