Ru-MaNGOS

Вернуться   Ru-MaNGOS > Флуд > Флудильня

Важная информация

Флудильня Разговоры на любые темы.

Мы устаем постоянно работать. Иногда надо где-то немного отдохнуть. Пожалуйста, не надо здесь устраивать бардак.

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.08.2010, 04:51   #1
Energy
Пользователь
 
Регистрация: 04.05.2010
Сообщений: 54
Сказал(а) спасибо: 11
Поблагодарили 13 раз(а) в 11 сообщениях
Energy На верном пути
По умолчанию работа с базой characters извне

Всем привет. Появилась пара интересных мыслишек для работы с базой персонажей, а именно - создание/копирование/перенос персонажей через вебморду.
Насколько я понимаю, при генерации гуидов шмоток/персонажей, используются максимальные значения, берущиеся из базы при запуске сервера, и автоматически им увеличиваемые. Это позволяет уменьшить количество запросов в базу данных при добавлении записей о вещах/персонажах.
Но при этом возникает проблема следующего характера: если вручную добавить запись в таблицу characters или item_instance, то сервер заменит эту запись, как только будет создан новый персонаж/копия предмета в игре.
Таким образом, подобные операции невозможны при включенном сервере.

Возможные варианты решения проблемы:
а) Разрешить в базе создание записей с отрицательным значением гуида, и написать патч для ядра, который при построении списка персонажей будет пересоздавать персонажей с отрицательным гуидом. Например, из пхп скрипта мы создаем в базе чара с гуидом -1, а при следующем входе на экран выбора персонажей для этого аккаунта он будет автоматически пересоздан, с нормальными гуидами. Это наиболее удобный вариант на мой взгляд


б) Написать патч для ядра, с добавлением таблиц в БД characters, и обрабатывать их так же, как в предыдущем варианте, за исключением того, что в этих таблицах будет свой порядок гуидов. Главный недостаток - лишние несколько таблиц, дублирующих уже имеющиеся, и которые нужно подгружать.

в) Написать патч для ядра, позволяющий создавать персонажей и добавлять им предметы через консоль сервера (имхо наиболее неудобный вариант)

Соответственно прежде чем что-то на эту тему думать, хотелось бы узнать у разработчиков, какой из вышеперечисленных вариантов наиболее приемлем, и имеет шанс попасть в виде патча в ядро мангоса. Или может быть есть еще какие-то варианты реализации данной функции?
Energy вне форума   Ответить с цитированием
Старый 29.08.2010, 05:06   #2
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Я думаю с реализацией различных HIGHGUID для игроков можно будет реализовать перенос персонажей между реалмами более корректно. Можно даже хранить персонажей с разных реалмов в одной таблице.

А сейчас это сделать достаточно проблематично, т.к. гуид персонажа хранится во многих других полях. Например, item_instance.data.
LordJZ вне форума   Ответить с цитированием
Старый 29.08.2010, 05:40   #3
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Вообще-то есть команды .pdump
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума   Ответить с цитированием
Старый 29.08.2010, 07:40   #4
Energy
Пользователь
 
Регистрация: 04.05.2010
Сообщений: 54
Сказал(а) спасибо: 11
Поблагодарили 13 раз(а) в 11 сообщениях
Energy На верном пути
По умолчанию

Цитата:
Сообщение от Vladimir Посмотреть сообщение
Вообще-то есть команды .pdump
Которые работают с файлами дампов. А задача стоит работать с базой, и желательно напрямую.

Грубо говоря представьте себе близовские странички копирования персонажей на птр. Вообще идея в чем - у меня 2 рилма. Один из них так сказать "лайв", то есть стабильный отлаженный билд мангоса с некоторым количеством патчей. Второй - "тестовый". На нем я отлаживаю новые билды (либо просто с обновленной ревизией мангоса, или с добавлением патчей, которых не было ранее). Соответственно, с тех пор когда было убрано поле data у персонажей, у меня крутится идея реализации премейд чаров. Это позволит ускорить тестирование, например, рейдового контента. Не придется мудрить со специальными неписями для быстрой прокачки проф, и можно будет реализовать копирование персонажей с основного рилма.

Создаю персонажа, делаю ему левелап, учу спеллы, покупаю дуалспек, одеваю его. Проще говоря - создаю готового персонажа, вроде премейд чара у близов. Скорее всего таких персонажей будет 20 - по 1 каждого класса для каждой фракции. Потом я переношу этих самых премейд персонажей на специальный аккаунт, ид которго я храню в пхп скрипте.

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

Соответственно, чтобы можно было создать в базе тестового рилма персонажа в то время, когда сервер включен, нужно решить проблему с тем, что сервер заменяет записи, сделанные извне, своими.

Последний раз редактировалось Energy; 29.08.2010 в 07:44.
Energy вне форума   Ответить с цитированием
Старый 30.08.2010, 00:40   #5
dj--alex
Пользователь
 
Аватар для dj--alex
 
Регистрация: 09.03.2010
Сообщений: 41
Сказал(а) спасибо: 15
Поблагодарили 20 раз(а) в 11 сообщениях
dj--alex На верном пути
По умолчанию

я долго думал при заливке через Dbscript 4 правильно ли заливается дамп.
и пришёл к выводу что лучше всего заливать в _первый пустой гуид.

т.е. у нас есть номераа 1,2,4,5,8,9.
кто то по разным причинам выпадает и всегда есть пустое место которое более не используется, даже если персонаж удален - поэтому восстанавлвать именно на это место вроде как удобно
dj--alex вне форума   Ответить с цитированием
Старый 30.08.2010, 08:48   #6
Energy
Пользователь
 
Регистрация: 04.05.2010
Сообщений: 54
Сказал(а) спасибо: 11
Поблагодарили 13 раз(а) в 11 сообщениях
Energy На верном пути
По умолчанию

Цитата:
Сообщение от dj--alex Посмотреть сообщение
я долго думал при заливке через Dbscript 4 правильно ли заливается дамп.
и пришёл к выводу что лучше всего заливать в _первый пустой гуид.

т.е. у нас есть номераа 1,2,4,5,8,9.
кто то по разным причинам выпадает и всегда есть пустое место которое более не используется, даже если персонаж удален - поэтому восстанавлвать именно на это место вроде как удобно
Пустых гуидов может не оказаться или не хватить. Тем более на сервере, где регулярно производится вайп.
Energy вне форума   Ответить с цитированием
Старый 31.08.2010, 05:43   #7
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Цитата:
Сообщение от Energy Посмотреть сообщение
Которые работают с файлами дампов. А задача стоит работать с базой, и желательно напрямую.
Напрямую вы не можете при включенном сервере - потому что счетчики в памяти. А если делать командой, то принципы работы не будет отличаться от .pdump load - только запросы проще делать будет из базы... чем шаманство с подменой строк...

т.е вполне можно написать команду типа .character clone
__________________
Так как устал объяснять знайте ICQ не пользуюсь

Последний раз редактировалось Vladimir; 31.08.2010 в 05:50.
Vladimir вне форума   Ответить с цитированием
Старый 31.08.2010, 10:48   #8
Energy
Пользователь
 
Регистрация: 04.05.2010
Сообщений: 54
Сказал(а) спасибо: 11
Поблагодарили 13 раз(а) в 11 сообщениях
Energy На верном пути
По умолчанию

Цитата:
Сообщение от Vladimir Посмотреть сообщение
Напрямую вы не можете при включенном сервере - потому что счетчики в памяти. А если делать командой, то принципы работы не будет отличаться от .pdump load - только запросы проще делать будет из базы... чем шаманство с подменой строк...

т.е вполне можно написать команду типа .character clone
Получается, из пхп скрипта это не реализуемо, да и копирование персонажей из базы другого сервера тоже. Грустно.
Energy вне форума   Ответить с цитированием
Старый 31.08.2010, 11:40   #9
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Вообще это давно реализовано именно на пхп и именно через .pdump
Или нужен какой-то очередной велосипед?
rsa вне форума   Ответить с цитированием
Старый 31.08.2010, 11:44   #10
Energy
Пользователь
 
Регистрация: 04.05.2010
Сообщений: 54
Сказал(а) спасибо: 11
Поблагодарили 13 раз(а) в 11 сообщениях
Energy На верном пути
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
Вообще это давно реализовано именно на пхп и именно через .pdump
Или нужен какой-то очередной велосипед?
Реализовано как? Пхп скрипт создает файл дампа и его в игре нужно ручками грузить? Мне кажется что в данном случае это не лучшее решение. Тогда уж проще написать патч, добавляющий таблицы в базу characters, в которых будут содержаться персонажи для копирования, а сервер их будет автоматом оттуда вытягивать.
Energy вне форума   Ответить с цитированием
Старый 31.08.2010, 13:23   #11
Minimajack
Гость
 
Сообщений: n/a
По умолчанию

Цитата:
Сообщение от Energy Посмотреть сообщение
Реализовано как? Пхп скрипт создает файл дампа и его в игре нужно ручками грузить? Мне кажется что в данном случае это не лучшее решение. Тогда уж проще написать патч, добавляющий таблицы в базу characters, в которых будут содержаться персонажи для копирования, а сервер их будет автоматом оттуда вытягивать.
http://github.com/mangos/mangos/tree.../contrib/soap/
1. шлем pdump write
2. редактируем
3. шлем pdump load
все - делов на 10 минут

Последний раз редактировалось Minimajack; 31.08.2010 в 13:34.
  Ответить с цитированием
Старый 31.08.2010, 17:13   #12
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Имеено. Я только предложил что если исходные чары в той-же базе то возможно было бы удобно добавить команду аналогичную .pdump load работающую напрямую с даными базы
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума   Ответить с цитированием
Старый 31.08.2010, 18:17   #13
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Energy Посмотреть сообщение
Реализовано как? Пхп скрипт создает файл дампа и его в игре нужно ручками грузить? Мне кажется что в данном случае это не лучшее решение. Тогда уж проще написать патч, добавляющий таблицы в базу characters, в которых будут содержаться персонажи для копирования, а сервер их будет автоматом оттуда вытягивать.
учите командную оболочку мангоса или soap. любые возможные через них функции доступны из любого языка сисшелла.
rsa вне форума   Ответить с цитированием
Старый 31.08.2010, 18:23   #14
Energy
Пользователь
 
Регистрация: 04.05.2010
Сообщений: 54
Сказал(а) спасибо: 11
Поблагодарили 13 раз(а) в 11 сообщениях
Energy На верном пути
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
учите командную оболочку мангоса или soap. любые возможные через них функции доступны из любого языка сисшелла.
Изначально идея подразумевала отсутствие работы с файлами дампов. Спасибо, я уже понял в каком направлении копать.
Energy вне форума   Ответить с цитированием
Старый 31.08.2010, 18:28   #15
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Energy Посмотреть сообщение
Изначально идея подразумевала отсутствие работы с файлами дампов. Спасибо, я уже понял в каком направлении копать.
сэр впервые слышит про туннели, очереди и перенаправление? какие файлы к черту?
rsa вне форума   Ответить с цитированием
Старый 31.08.2010, 19:10   #16
Energy
Пользователь
 
Регистрация: 04.05.2010
Сообщений: 54
Сказал(а) спасибо: 11
Поблагодарили 13 раз(а) в 11 сообщениях
Energy На верном пути
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
сэр впервые слышит про туннели, очереди и перенаправление? какие файлы к черту?
Насколько я помню, команды pdump работают с файлами. Это не повод для сарказма.
Energy вне форума   Ответить с цитированием
Ответ


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с 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


Текущее время: 06:19. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot