Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 6 из 6
  1. #1
    Аватар для verteich
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2019
    Сообщений
    117
    Репутация:
    2 ±

    Загрузка вещей из инвентаря

    Подскажите, как можно реализовать систему загрузки вещей из инвентаря MySQL r39-6
    1. enum e_inventar_INFO {
    2. e_IItemId,
    3. e_ICount
    4. }
    5. new pInventory[MAX_PLAYERS][e_inventar_INFO][37];

    1. stock SaveInventory(playerid)
    2. {
    3. new quers[440],stris[330];
    4. for(new l; l < 36; l++)
    5. {
    6. format(stris, sizeof(stris), "%s%d,",stris,pInventory[playerid][e_IItemId][l]);
    7. format(quers,sizeof(quers),"UPDATE `qelksekm` SET `inventory`='%s' WHERE `NickName`='%s'",stris, PN(playerid));
    8. mysql_query(mysql, quers);
    9. stris[0] = EOS;
    10. format(stris, sizeof(stris), "%s%d,",stris,pInventory[playerid][e_ICount][l]);
    11. format(quers,sizeof(quers),"UPDATE `qelksekm` SET `inventorykolvo`='%s' WHERE `NickName`='%s'",stris, PN(playerid));
    12. mysql_query(mysql, quers);
    13. }
    14. }

  2. #2
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Во-первых, что это за сохранение? Формируй один большой запрос и отправляй, а не флуди кучей мелких запросов.
    Хотя запрос сам по себе странный. У тебя каждый раз одна и та же строка будет перезаписываться данными всех слотов и, в итоге, в таблице будут только данные последнего слота.

    Во-вторых, всё зависит от того, как ты хранишь данные. Лучше всего создать отдельную таблицу со структурой:
    Код:
    id | account_id | slot_id | item_id | item_count
    При этом, нужно создать индекс по столбцу "account_id", чтоб поиск был быстрым.

    Собственно, далее просто делаешь запрос
    PHP код:
    SELECT FROM table WHERE account_id = %d ORDER BY slot_id ASC 
    И выгружаешь. Столбец "slot_id" будет указывать номер ячейки.
    А заодно проверяешь, существуют ли в таблице столбцы для всех нужных слотов (просто создай локальный массив, размер которого будет равен количеству слотов, и при загрузке присваивай ячейкам, равным ID слота, единицу. А после загрузки запускай цикл и смотри, все ли ячейки в этом массиве равны единице. Если не все - отправляй запрос на создание недостающих столбцов).

    Сохранение лучше делать сразу после изменения данных и сохранять конкретную ячейку.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  3. #3
    Аватар для verteich
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2019
    Сообщений
    117
    Репутация:
    2 ±
    По загрузке понял, по сохранению не очень, вы имели ввиду так? (таблицу отдельная больно не нужна, удобней будет в одной, для меня):
    1. stock SaveInventory(playerid)
    2. {
    3. new quers[1000];
    4. for(new l; l < 36; l++)
    5. {
    6. format(quers,sizeof(quers),"UPDATE `qelksekm` SET `inventory`='%s%d,', `inventorykolvo`='%s%d,' WHERE `NickName`='%s'",pInventory[playerid][e_IItemId][l], pInventory[playerid][e_ICount][l], PN(playerid));
    7. mysql_query(mysql, quers);
    8. }
    9. }
    Последний раз редактировалось verteich; 25.05.2019 в 07:52.

  4. #4
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    В смысле? У тебя запрос работает с одними и теми же полями - "inventory" и "inventorykolvo". Соответственно, каждую итерацию эти поля будут перезаписываться новой информацией. И, в итоге, в поле будет записана лишь информация из последнего слота.

    Хотя в текущем виде запрос вообще что-то непонятное будет отсылать, ибо форматирование у тебя вообще непонятно как реализовано. Ты хоть код проверял, перед тем, как сюда писать? Ну или хотя бы вдумывался, когда писал его?
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  5. #5
    Аватар для verteich
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2019
    Сообщений
    117
    Репутация:
    2 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    В смысле? У тебя запрос работает с одними и теми же полями - "inventory" и "inventorykolvo". Соответственно, каждую итерацию эти поля будут перезаписываться новой информацией. И, в итоге, в поле будет записана лишь информация из последнего слота.

    Хотя в текущем виде запрос вообще что-то непонятное будет отсылать, ибо форматирование у тебя вообще непонятно как реализовано. Ты хоть код проверял, перед тем, как сюда писать? Ну или хотя бы вдумывался, когда писал его?
    не понял, но код не работает :D и не вдумывался
    покажи рабочий вариант не пойму ни***

  6. #6
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Я уже в первом сообщении расписал как всё сделать. Осталось лишь в код превратить всё. Если нужен рабочий код - это уже в стол заказов.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •