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

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

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


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

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

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