• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

Система подарков

KrakeNMeM

Новичок
Всем привет! К наступающим праздникам появилось у меня вдохновение сделать динамическую систему подарков на сервере. И вот сделал я команду, которая создаёт подарки на месте игрока и сразу же записывает в БД всю инфу о них (Модель самого подарка и его расположение).
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];
Наконец я это всё написал, и вдруг у меня появились проблемы. А как же можно сделать так, чтобы игрок мог использовать каждый подарок 1 раз? Ну тоесть он получил 12-й подарок и больше его не мог брать. Как можно сделать лучше всего, если моя система динамическая?
P.S. В павно я новичок абсолютный и если что, прошу ругать меня не сильно =)
 
Сверху Снизу