Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Помогите создать правильный mssql запрос
#1
Всем привет!
В общем столкнулся со следующей проблемой, я добавил итем всем персонажам через mssql запрос.

Сам запрос вот:

DECLARE @item_type INT;
DECLARE @amount int;
SET @item_type = '6673';
SET @amount = '10';

INSERT INTO user_item (char_id, item_type, amount, enchant, eroded, bless, ident, wished, warehouse)
SELECT char_id, @item_type, @amount, 0, 0, 0, 0, 0, 0
FROM user_data

Только вот проблема..., персонажам у которых уже есть этот итем, новый (который я добавляю) добавляется в новый слот инвентаря и когда персонаж заходит в игру, то появляется на этой почве ошибка и не всегда выдаваемый итем получает игрок. Т.е не всега происходит слияние итемов из двух ячеек в одну.
Как бы по сути нужен запрос - если итем есть, то они суммируются, а если нету - выдается.
Кто шарит в mssql подскажите как дописать скрипт?
Ответ
#2
Код:
CREATE PROCEDURE pewItem(IN @charId INT, IN @item_type INT, IN @count INT)
BEGIN
  DECLARE @currentCount INT;
  SELECT amount FROM user_item WHERE charId=@charId AND item_type=@item_type INTO @currentCount;
  IF @currentCount IS NULL THEN
    INSERT INTO user_item (char_id, item_type, amount, enchant, eroded, bless, ident, wished, warehouse) VALUES (@charId,@item_type,@count,0,0,0,0,0);
  ELSE
    UPDATE user_item SET amount=@count + @currentCount WHERE char_id=@charId AND item_type=@item_type;
  END IF;
END

С MSSQL не сильно много работал, но должно получиться типа этого. И да, оно будет не правильно работать для non-stackable предметов.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#3
ussyka Написал:Всем привет!
В общем столкнулся со следующей проблемой, я добавил итем всем персонажам через mssql запрос.

Сам запрос вот:

DECLARE @item_type INT;
DECLARE @amount int;
SET @item_type = '6673';
SET @amount = '10';

INSERT INTO user_item (char_id, item_type, amount, enchant, eroded, bless, ident, wished, warehouse)
SELECT char_id, @item_type, @amount, 0, 0, 0, 0, 0, 0
FROM user_data

Только вот проблема..., персонажам у которых уже есть этот итем, новый (который я добавляю) добавляется в новый слот инвентаря и когда персонаж заходит в игру, то появляется на этой почве ошибка и не всегда выдаваемый итем получает игрок. Т.е не всега происходит слияние итемов из двух ячеек в одну.
Как бы по сути нужен запрос - если итем есть, то они суммируются, а если нету - выдается.
Кто шарит в mssql подскажите как дописать скрипт?

Схитрю чутка Smile
-- увеличим кол-во тем, у кого предметы есть
UPDATE aa
SET aa.amount = aa.amount + 1
FROM user_item AS aa, user_data AS bb
WHERE aa.char_id = bb.char_id
AND aa.item_type = @item_type
AND bb.account_id > 0

-- добавим тем, у кого предметов нет
INSERT INTO user_item (char_id, item_type, amount, enchant, eroded, bless, ident, wished, warehouse)
SELECT aa.char_id, @item_type, @amount, 0, 0, 0, 0, 0, 0
FROM user_data AS aa
WHERE aa.account.id > 0 -- зачем добавлять удаленным персонажам?
AND ( SELECT count(*) FROM user_item AS bb WHERE bb.char_id = aa.char_id AND bb.item_type = @item_type ) = 0

на скорость и идеальность не претендую Smile
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Помогите с Сервером L2Dream версии 439 для Lineage 2 Gracia Part 2 CAHTEX 4 3,379 10-01-2021, 02:40 PM
Последний пост: tenor
  Помогите выбрать! denisgreen11 3 1,405 09-25-2021, 05:13 PM
Последний пост: zmeylsdn
  Помогите. IIpu3pak 2 1,365 05-10-2021, 12:43 PM
Последний пост: Lord_Gothic
  Помогите voland3 8 5,314 01-30-2021, 10:54 AM
Последний пост: han
  Уважаемые Гуру помогите ! Klvl 46 11,240 06-20-2020, 08:02 PM
Последний пост: Klvl
  Ребята помогите с настройкой сервера la2 Heon 11 2,836 04-15-2020, 10:36 PM
Последний пост: Shady
  Помогите с ошибкой ГС при запуске pustota312 1 1,297 04-15-2020, 11:27 AM
Последний пост: Tiger7th
  помогите понять в чем дело. nexami 1 1,806 11-14-2019, 01:30 AM
Последний пост: nexami
  Помогите с сервером не могу запустить Lalak 4 3,029 10-13-2018, 10:23 PM
Последний пост: Kampina
  запрос sql. добавить предмет в дроп мобам по уровню sheg300 2 1,928 06-17-2018, 09:48 PM
Последний пост: PROGRAMMATOR

Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)