|
Флудильня Разговоры на любые темы. Мы устаем постоянно работать. Иногда надо где-то немного отдохнуть. Пожалуйста, не надо здесь устраивать бардак. |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
29.08.2010, 04:51 | #1 |
Пользователь
Регистрация: 04.05.2010
Сообщений: 54
Сказал(а) спасибо: 11
Поблагодарили 13 раз(а) в 11 сообщениях
|
работа с базой characters извне
Всем привет. Появилась пара интересных мыслишек для работы с базой персонажей, а именно - создание/копирование/перенос персонажей через вебморду.
Насколько я понимаю, при генерации гуидов шмоток/персонажей, используются максимальные значения, берущиеся из базы при запуске сервера, и автоматически им увеличиваемые. Это позволяет уменьшить количество запросов в базу данных при добавлении записей о вещах/персонажах. Но при этом возникает проблема следующего характера: если вручную добавить запись в таблицу characters или item_instance, то сервер заменит эту запись, как только будет создан новый персонаж/копия предмета в игре. Таким образом, подобные операции невозможны при включенном сервере. Возможные варианты решения проблемы: а) Разрешить в базе создание записей с отрицательным значением гуида, и написать патч для ядра, который при построении списка персонажей будет пересоздавать персонажей с отрицательным гуидом. Например, из пхп скрипта мы создаем в базе чара с гуидом -1, а при следующем входе на экран выбора персонажей для этого аккаунта он будет автоматически пересоздан, с нормальными гуидами. Это наиболее удобный вариант на мой взгляд б) Написать патч для ядра, с добавлением таблиц в БД characters, и обрабатывать их так же, как в предыдущем варианте, за исключением того, что в этих таблицах будет свой порядок гуидов. Главный недостаток - лишние несколько таблиц, дублирующих уже имеющиеся, и которые нужно подгружать. в) Написать патч для ядра, позволяющий создавать персонажей и добавлять им предметы через консоль сервера (имхо наиболее неудобный вариант) Соответственно прежде чем что-то на эту тему думать, хотелось бы узнать у разработчиков, какой из вышеперечисленных вариантов наиболее приемлем, и имеет шанс попасть в виде патча в ядро мангоса. Или может быть есть еще какие-то варианты реализации данной функции? |
29.08.2010, 05:06 | #2 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Я думаю с реализацией различных HIGHGUID для игроков можно будет реализовать перенос персонажей между реалмами более корректно. Можно даже хранить персонажей с разных реалмов в одной таблице.
А сейчас это сделать достаточно проблематично, т.к. гуид персонажа хранится во многих других полях. Например, item_instance.data. |
29.08.2010, 05:40 | #3 |
MaNGOS Dev
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
|
Вообще-то есть команды .pdump
__________________
Так как устал объяснять знайте ICQ не пользуюсь |
29.08.2010, 07:40 | #4 |
Пользователь
Регистрация: 04.05.2010
Сообщений: 54
Сказал(а) спасибо: 11
Поблагодарили 13 раз(а) в 11 сообщениях
|
Которые работают с файлами дампов. А задача стоит работать с базой, и желательно напрямую.
Грубо говоря представьте себе близовские странички копирования персонажей на птр. Вообще идея в чем - у меня 2 рилма. Один из них так сказать "лайв", то есть стабильный отлаженный билд мангоса с некоторым количеством патчей. Второй - "тестовый". На нем я отлаживаю новые билды (либо просто с обновленной ревизией мангоса, или с добавлением патчей, которых не было ранее). Соответственно, с тех пор когда было убрано поле data у персонажей, у меня крутится идея реализации премейд чаров. Это позволит ускорить тестирование, например, рейдового контента. Не придется мудрить со специальными неписями для быстрой прокачки проф, и можно будет реализовать копирование персонажей с основного рилма. Создаю персонажа, делаю ему левелап, учу спеллы, покупаю дуалспек, одеваю его. Проще говоря - создаю готового персонажа, вроде премейд чара у близов. Скорее всего таких персонажей будет 20 - по 1 каждого класса для каждой фракции. Потом я переношу этих самых премейд персонажей на специальный аккаунт, ид которго я храню в пхп скрипте. При входе на страничку тестового сервера у игрока есть возможность скопировать одного из этих персонажей себе на аккаунт. При этом исходный чар не должен быть удален. Скрипт создает копию этого чара в базе тестового сервера, на аккаунте пользователя. Сейчас это реализуемо, если на время добавления копии в базу тестового сервера выключать его. Но это, естесственно, не вариант. Соответственно, чтобы можно было создать в базе тестового рилма персонажа в то время, когда сервер включен, нужно решить проблему с тем, что сервер заменяет записи, сделанные извне, своими. Последний раз редактировалось Energy; 29.08.2010 в 07:44. |
31.08.2010, 05:43 | #5 | |
MaNGOS Dev
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
|
Цитата:
т.е вполне можно написать команду типа .character clone
__________________
Так как устал объяснять знайте ICQ не пользуюсь Последний раз редактировалось Vladimir; 31.08.2010 в 05:50. |
|
31.08.2010, 10:48 | #6 | |
Пользователь
Регистрация: 04.05.2010
Сообщений: 54
Сказал(а) спасибо: 11
Поблагодарили 13 раз(а) в 11 сообщениях
|
Цитата:
|
|
30.08.2010, 00:40 | #7 |
Пользователь
Регистрация: 09.03.2010
Сообщений: 41
Сказал(а) спасибо: 15
Поблагодарили 20 раз(а) в 11 сообщениях
|
я долго думал при заливке через Dbscript 4 правильно ли заливается дамп.
и пришёл к выводу что лучше всего заливать в _первый пустой гуид. т.е. у нас есть номераа 1,2,4,5,8,9. кто то по разным причинам выпадает и всегда есть пустое место которое более не используется, даже если персонаж удален - поэтому восстанавлвать именно на это место вроде как удобно |
30.08.2010, 08:48 | #8 | |
Пользователь
Регистрация: 04.05.2010
Сообщений: 54
Сказал(а) спасибо: 11
Поблагодарили 13 раз(а) в 11 сообщениях
|
Цитата:
|
|
31.08.2010, 11:44 | #10 |
Пользователь
Регистрация: 04.05.2010
Сообщений: 54
Сказал(а) спасибо: 11
Поблагодарили 13 раз(а) в 11 сообщениях
|
Реализовано как? Пхп скрипт создает файл дампа и его в игре нужно ручками грузить? Мне кажется что в данном случае это не лучшее решение. Тогда уж проще написать патч, добавляющий таблицы в базу characters, в которых будут содержаться персонажи для копирования, а сервер их будет автоматом оттуда вытягивать.
|
31.08.2010, 13:23 | #11 | |
Гость
Сообщений: n/a
|
Цитата:
1. шлем pdump write 2. редактируем 3. шлем pdump load все - делов на 10 минут Последний раз редактировалось Minimajack; 31.08.2010 в 13:34. |
|
31.08.2010, 18:17 | #12 | |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
Цитата:
|
|
31.08.2010, 18:23 | #13 |
Пользователь
Регистрация: 04.05.2010
Сообщений: 54
Сказал(а) спасибо: 11
Поблагодарили 13 раз(а) в 11 сообщениях
|
|
31.08.2010, 17:13 | #15 |
MaNGOS Dev
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
|
Имеено. Я только предложил что если исходные чары в той-же базе то возможно было бы удобно добавить команду аналогичную .pdump load работающую напрямую с даными базы
__________________
Так как устал объяснять знайте ICQ не пользуюсь |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с MySQL через c++ | Hantet | Языки программирования | 54 | 10.04.2013 10:38 |
Работа с DataLife Engine | Праведник | WWW | 70 | 07.11.2011 15:59 |
как соединить сайт на хостинге с базой | kurban | Корзина | 1 | 26.11.2010 18:19 |
Работа с Mangos | Vampirenok | Корзина | 2 | 29.08.2010 05:00 |
ScriptDev2 Работа с ГО. | xmolex | Прочая документация | 9 | 04.08.2010 06:59 |