Ищу MySQL запрос
Здравствуйте господа,
Не подскажете MySQL запрос на добавление итема всем персонажам на сервере? Благодарю. pwsoft сборка. |
Re: Ищу MySQL запрос
Если есть временная таблица типа character_items
INSERT INTO character_items (owner_id, item_id, COUNT, enchant_level) SELECT charid, 4037, 10, 0 FROM characters;4037 - ID итема 10 - количество 0 - уровень заточки после релога любой из игроков получит итемы |
Re: Ищу MySQL запрос
Цитата:
|
Re: Ищу MySQL запрос
ну тогда просто вместо `characters_items` поставьте `items`
|
Re: Ищу MySQL запрос
Выполнил вот такой запрос
Код:
INSERT INTO items (owner_id, item_id, COUNT, enchant_level) SELECT obj_Id, 25005, 10, 0 FROM characters; Код:
1062 - Duplicate entry '0' for key 'PRIMARY' |
Re: Ищу MySQL запрос
Такой инсерт не годится, проблема в object_id - по дефолту при инсерте он будет 0 для каждой строчки, и после вставки первого предмета второй уже не вставится, т.к. object_id - это ключ таблицы и не допускает повторений.
К тому же object_id используется для всех сущностей в Л2 поэтому вставлять свои рендомные object_id тоже недопутимо, иначе после рестарта сервера получится дикая каша и сервак можно смело восстанавливать из бекапов. Направление действий следующее: если сервак в этот момент работает, то в базу не лезть. Когда сервак остановишь найди максимальный object_id по всем таблицам какие есть в бд, а уже после этого можно писать запрос с инкрементами опираясь на максимальный object_id. Либо сделать программно функционал, если есть сырцы. |
Re: Ищу MySQL запрос
Цитата:
|
Re: Ищу MySQL запрос
Базы pw под рукой нету, поэтому на том что есть накидал. Сделал допущение что предметы обновляются чаще всего и не очень интенсивно. соответственно заменить item_id, count,enchant_level на свои
INSERT INTO `items` (`owner_id`, `object_id`, `item_id`, `count`, `enchant_level`) SELECT t2.charId AS `owner_id`, @n:=@n+1 AS `object_id`, 999999 AS `item_id`, 1 AS`count`, 0 AS `enchant_level` FROM ( SELECT ch.obj_Id AS charId, @n:=(SELECT MAX( items.object_id )+10000 FROM items ) FROM characters ch ) t2 вкратце: берем максимальное object_id из items к нему прибавляем 10к (можно поставить 100к например) и считаем что id и считаем что в базе нету большего id, (если есть то будет лажа, например какойнить клан с подобным id и вскроется оно не скоро) затем начиная с этого object_id генерируем для каждого нового предмета, увеличивая каждый раз на 1 И еще раз напоминаю: делать при запущеном серваке только на свой страх и риск! |
Re: Ищу MySQL запрос
Цитата:
characters.sql:Развернуть ↓items.sql:Развернуть ↓Собственно сюда суть такова, мне нужно предмет с ID 25005 добавить всем персонажам. Буду благодарен за помощь. |
Re: Ищу MySQL запрос
А что вам мешает это сделать через ядро? К тому же в ядре взять новый (следующий) номер объекта куда проще чем городить костыли.
|
Текущее время: 06:56. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot