работа с базой characters извне
Всем привет. Появилась пара интересных мыслишек для работы с базой персонажей, а именно - создание/копирование/перенос персонажей через вебморду.
Насколько я понимаю, при генерации гуидов шмоток/персонажей, используются максимальные значения, берущиеся из базы при запуске сервера, и автоматически им увеличиваемые. Это позволяет уменьшить количество запросов в базу данных при добавлении записей о вещах/персонажах. Но при этом возникает проблема следующего характера: если вручную добавить запись в таблицу characters или item_instance, то сервер заменит эту запись, как только будет создан новый персонаж/копия предмета в игре. Таким образом, подобные операции невозможны при включенном сервере. Возможные варианты решения проблемы: а) Разрешить в базе создание записей с отрицательным значением гуида, и написать патч для ядра, который при построении списка персонажей будет пересоздавать персонажей с отрицательным гуидом. Например, из пхп скрипта мы создаем в базе чара с гуидом -1, а при следующем входе на экран выбора персонажей для этого аккаунта он будет автоматически пересоздан, с нормальными гуидами. Это наиболее удобный вариант на мой взгляд б) Написать патч для ядра, с добавлением таблиц в БД characters, и обрабатывать их так же, как в предыдущем варианте, за исключением того, что в этих таблицах будет свой порядок гуидов. Главный недостаток - лишние несколько таблиц, дублирующих уже имеющиеся, и которые нужно подгружать. в) Написать патч для ядра, позволяющий создавать персонажей и добавлять им предметы через консоль сервера (имхо наиболее неудобный вариант) Соответственно прежде чем что-то на эту тему думать, хотелось бы узнать у разработчиков, какой из вышеперечисленных вариантов наиболее приемлем, и имеет шанс попасть в виде патча в ядро мангоса. Или может быть есть еще какие-то варианты реализации данной функции? |
Я думаю с реализацией различных HIGHGUID для игроков можно будет реализовать перенос персонажей между реалмами более корректно. Можно даже хранить персонажей с разных реалмов в одной таблице.
А сейчас это сделать достаточно проблематично, т.к. гуид персонажа хранится во многих других полях. Например, item_instance.data. |
Вообще-то есть команды .pdump
|
Цитата:
Грубо говоря представьте себе близовские странички копирования персонажей на птр. Вообще идея в чем - у меня 2 рилма. Один из них так сказать "лайв", то есть стабильный отлаженный билд мангоса с некоторым количеством патчей. Второй - "тестовый". На нем я отлаживаю новые билды (либо просто с обновленной ревизией мангоса, или с добавлением патчей, которых не было ранее). Соответственно, с тех пор когда было убрано поле data у персонажей, у меня крутится идея реализации премейд чаров. Это позволит ускорить тестирование, например, рейдового контента. Не придется мудрить со специальными неписями для быстрой прокачки проф, и можно будет реализовать копирование персонажей с основного рилма. Создаю персонажа, делаю ему левелап, учу спеллы, покупаю дуалспек, одеваю его. Проще говоря - создаю готового персонажа, вроде премейд чара у близов. Скорее всего таких персонажей будет 20 - по 1 каждого класса для каждой фракции. Потом я переношу этих самых премейд персонажей на специальный аккаунт, ид которго я храню в пхп скрипте. При входе на страничку тестового сервера у игрока есть возможность скопировать одного из этих персонажей себе на аккаунт. При этом исходный чар не должен быть удален. Скрипт создает копию этого чара в базе тестового сервера, на аккаунте пользователя. Сейчас это реализуемо, если на время добавления копии в базу тестового сервера выключать его. Но это, естесственно, не вариант. Соответственно, чтобы можно было создать в базе тестового рилма персонажа в то время, когда сервер включен, нужно решить проблему с тем, что сервер заменяет записи, сделанные извне, своими. |
я долго думал при заливке через Dbscript 4 правильно ли заливается дамп.
и пришёл к выводу что лучше всего заливать в _первый пустой гуид. т.е. у нас есть номераа 1,2,4,5,8,9. кто то по разным причинам выпадает и всегда есть пустое место которое более не используется, даже если персонаж удален - поэтому восстанавлвать именно на это место вроде как удобно |
Цитата:
|
Цитата:
т.е вполне можно написать команду типа .character clone |
Цитата:
|
Вообще это давно реализовано именно на пхп и именно через .pdump
Или нужен какой-то очередной велосипед? |
Цитата:
|
Цитата:
1. шлем pdump write 2. редактируем 3. шлем pdump load все - делов на 10 минут |
Имеено. Я только предложил что если исходные чары в той-же базе то возможно было бы удобно добавить команду аналогичную .pdump load работающую напрямую с даными базы
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Текущее время: 16:03. Часовой пояс GMT +3. |
ru-mangos.ru - Русское сообщество MaNGOS