1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

Результаты поиска

  1. syxid
  2. syxid
  3. syxid
    В общем суточный тест прошел успешно. Отпишу на всякий случай, что было сделано. Предыстория: В один далеко не прекрасный момент было замечено массовое удаление персонажей. Началось это примерно через неделю начала тестов с перенесенной базой старого сервера. Никаких ошибок при этом в world2.err лог не писалось! В логе world2.trace наблюдалась такая картина: test gamedbd: debug : TimeoutRoleQuery, roleid=65027 test gdeliveryd: debug : delroleannounce::Try to delrole 65027 test gamedbd: debug : DBDeleteRole, roleid=65027 Просто За секунду происходило удаление от 5 до 30 персонажей. Выборка удаленных персонажей совершенно случайная. Удаление происходило с определенными равными промежутками. Время между ударениями после рестарта базы менялось. Восстановление с помощью dbtool никакого эффекта не давало, более того, после восстановления все персонажи уже удаленные ранее (если брать базу из бекапа) удалялись сразу при старте сервера. Причем все это носит лавинообразный характер. Чем дольше это длится, тем чаще и больше удаляется. В конце концов было обращено внимание на странные ошибки при запуске сервера, причем ругался не модуль gamedbd, а модуль gdeliveryd. Ругался он на лоты в системе WеbTrade (кто не знает новая фишка в офлайновой торговле на версиях 1.5.0+) При всем том, система WebTrade отключена в конфиге gdeliveryd! При очередном восстановлении базы, замечены непонятные items в таблицах: playershop weborderitem webtrade webtradesold Решение: Сделан частичный вайп, удалены перечисленные таблицы + удалена таблица waitdel содержащая записи о персонажах подлежащих удалению (чтобы не потерять исправных персонажей) При запуске сервера не должно быть ошибок gdeliveryd, ругающихся на систему WеbTrade. Если они появляются значит пора восстанавливать базу, иначе вы рискуете потерять персонажей. П.С. да я нуб, можно кидать в меня тапочками и ругать нехорошими словами. Но отписал решение, для тех кто может столкнуться с подобным. И ему не придется "грызть ногти" в попытках понять и исправить все это :D П.П.С модераторам просьба, если можно, добавьте этот пост к первому, чтобы было сразу видно.
    Сообщение от: syxid, 10 апр 2014 в разделе: PW Решённые вопросы
  4. syxid
  5. syxid
  6. syxid
  7. syxid
    В логе вижу такое: GetRole failed. roleid=65027 status=3 После этого уровень персонажа ставится в 0 и далее: test gamedbd: debug : TimeoutRoleQuery, roleid=65027 test gdeliveryd: debug : delroleannounce::Try to delrole 65027 test gamedbd: debug : DBDeleteRole, roleid=65027 Ошибка получения персонажа - удаление персонажа по таймеру. Так периодически просто удаляются персы dbtool не помогает. Я понимаю, что видимо ошибка получения персонажа базой при очередной проверке, но как это можно вылечить? Вариант вайп в настоящее время не рассматривается, подозреваю, что он и не поможет. Может кто сталкивался с подобным и знает пути решения П.С. Еще одна странность, процессов gamedbd при запуске всего 1, хотя на предыдущих версиях было 22. У кого 1.5.1 на тесте есть сколько процессов gamedbd у вас? Хочу понять это изменения в версиях 1.5.0+ или проблемы с модулем базы/настройками Решение: В общем суточный тест прошел успешно. Отпишу на всякий случай, что было сделано. Предыстория: В один далеко не прекрасный момент было замечено массовое удаление персонажей. Началось это примерно через неделю начала тестов с перенесенной базой старого сервера. Никаких ошибок при этом в world2.err лог не писалось! В логе world2.trace наблюдалась такая картина: test gamedbd: debug : TimeoutRoleQuery, roleid=65027 test gdeliveryd: debug : delroleannounce::Try to delrole 65027 test gamedbd: debug : DBDeleteRole, roleid=65027 Просто За секунду происходило удаление от 5 до 30 персонажей. Выборка удаленных персонажей совершенно случайная. Удаление происходило с определенными равными промежутками. Время между ударениями после рестарта базы менялось. Восстановление с помощью dbtool никакого эффекта не давало, более того, после восстановления все персонажи уже удаленные ранее (если брать базу из бекапа) удалялись сразу при старте сервера. Причем все это носит лавинообразный характер. Чем дольше это длится, тем чаще и больше удаляется. В конце концов было обращено внимание на странные ошибки при запуске сервера, причем ругался не модуль gamedbd, а модуль gdeliveryd. Ругался он на лоты в системе WеbTrade (кто не знает новая фишка в офлайновой торговле на версиях 1.5.0+) При всем том, система WebTrade отключена в конфиге gdeliveryd! При очередном восстановлении базы, замечены непонятные items в таблицах: playershop weborderitem webtrade webtradesold Решение: Сделан частичный вайп, удалены перечисленные таблицы + удалена таблица waitdel содержащая записи о персонажах подлежащих удалению (чтобы не потерять исправных персонажей) При запуске сервера не должно быть ошибок gdeliveryd, ругающихся на систему WеbTrade. Если они появляются значит пора восстанавливать базу, иначе вы рискуете потерять персонажей. П.С. да я нуб, можно кидать в меня тапочками и ругать нехорошими словами. Но отписал решение, для тех кто может столкнуться с подобным. И ему не придется "грызть ногти" в попытках понять и исправить все это :D П.П.С модераторам просьба, если можно, добавьте этот пост к первому, чтобы было сразу видно.
    Автор темы: syxid, 9 апр 2014, ответов - 10, в разделе: PW Решённые вопросы
  8. syxid
  9. syxid
  10. syxid
  11. syxid
  12. syxid
  13. syxid
  14. syxid
  15. syxid
  16. syxid
  17. syxid
    del
    Сообщение от: syxid, 18 мар 2014 в разделе: PHP
  18. syxid
  19. syxid
    Небольшой офф топ: Занялся настройкой БД и обнаружил, что информации по ней практически нет. Пришлось долго и упорно ковыряться в гделиверед для понимания процесса БД и возможности настройки. Возможно люди, которые хотели бы сделать на этом деньги (настраивая другим пару байт) будут очень на меня сердиты... но все таки напишу )) И еще не ждите от меня готовых оффсетов - я пишу где искать для возможности редактирования на других версиях сервера! Важно! Для работы вам понадобятся: - ida (скачать можно тут) - хекс редактор - немного соображалки, чтобы понять как этим всем пользоваться :D Собственно настройка: Начнем мы мы с разбора конфига гделиверед - gamesys.conf Интересует нас в нем вот что: [IMG] По пунктам: 1) настройки выдачи наград для каждого класса (жрец, син и т.д). Подробно пока не разбирал, но с уверенностью в 90% могу сказать, что первое число в строке это коэфициент при подсчете количества монет выдаваемых в конце битвы 2) максимальное количество смертей на поле боя, после которого выкинет на карту 3) общее количество монет для всех фракций (или другого предмета, если вы перенастроили награду) 4) собственно вкл/выкл БД 5) (не проверял) вкл/выкл выбор короля династии, или (вероятно) день недели выборов. 6) ТОЛЬКО для версий 1.5.0+, настройка дня недели битвы. 0 - вск, 1 - пнд и так далее. Можно ставить хоть каждый день (как на примере). Для версии 1.4.8 и ниже эта строка работать не будет, настройка производится вручную редактированием службы гделиверед. Где именно - простите не скажу. Нет времени ковырять неактуальный для меня предмет :) На всякий случай добавлю (вдруг попадутся нубики вроде меня), для работы обычной (не межсерверной) БД, у вас в конфиге должно быть это: [CentralDeliveryServer] type = tcp port = 29101 address = 127.0.0.1 so_sndbuf = 16384 so_rcvbuf = 16384 ibuffermax = 1048576 obuffermax = 1048576 tcp_nodelay = 0 listen_backlog = 10 accumulate = 268435456 Все что касается - [CentralDeliveryClient] необходимо закоменнтировать! Это настройка межсерверной БД. С конфигом мы разобрались, двигаем дальше. Все изза чего я вообще полез в гделиверед - изменение времени проведения БД, но попутно нашел еще несколько полезных значений. Изменение ВРЕМЕНИ НАЧАЛА и ДЛИТЕЛЬНОСТИ Битвы династии Вот оно самое вкусное, запускаем иду и загружаем в нее наш gdeliveryd, ждем ждем ждем (если это первый раз) пока она его прожует. Дождались - в окне функций ищем следующее значение: CountryBattleMan::Update Попадаем сюда: [IMG] Жмем F5 и видим такой код (могут быть вариации в зависимости от версии): [IMG] Битва династий делится на несколько фаз: 1) настройка времени начала и окончания битвы. Время в секундах начиная с 00-00-00 серверного времени. (73199 это 20-20 серверного времени) Ставим оба значения такие как нам нужно - получаем время начала и окончания (то есть длительность) Битвы династий. 2) Время в течение которого идет подсчет наград и отправка почты, начинается сразу по окончании БД и его длительность зависит от вашей настройки 3) Проверка правильности отправки почты и начисления бонусов игрокам, если обнаружена не отправленная почта - делается попытка ее отправить 4) Остановка бд с ошибкой (если обнаружены не отправленные бонусы). Почта больше не отправляется, битва отключается. Запись в лог ошибки. ВАЖНО! При настройке времени необходимо корректировать все временные интервалы! Не должно получиться так, что вы выдаете награду, когда битва еще идет! Также НЕ РЕКОМЕНДУЮ ставить время больше 86300, (не проверял) скорее всего работать ваша Битва корректно не будет, так как 86400 это полные сутки, а сравнение идет с текущим временем. Изменение ОТОБРАЖЕНИЯ времени БД в клиенте Как это не смешно, но это разные функции. Для правильного отображения времени БД в клиенте (на карте Битвы Династий) необходимо редактировать следующие функции: CountryBattleMan::GetCountryBattleStartTime - время начала CountryBattleMan::GetCountryBattleEndTime - время окончания CountryBattleMan::GetCountryBattleFinishTime - завершение? [IMG] В данном случае наши значения записаны в формате Час (первое число), Минута (второе число) Редактируем в соответствии с нашими настройками Коротко: как изменять значения для чайников (хотя пишу коротко и не уверен, что все поймут :D) Нашли значение - поставили курсор на него (нажали) - далее жмем кнопку таб и попадаем в окно IDA-view Ставим курсор на наше значение и переходим в окно HEX-view, ставим курсор на наше значение (не забываем, что оно перевернуто на китайский манер) и смотрим внизу оффсет. Далее открыв гделиверед в любом хекс редакторе переходим по найденному оффсету и меняем значение на нужное нам. Примерная схема: [IMG] Учиться пользоваться хекс редактором не буду, сами научитесь :) На мои художества не ругаться - писал для чайников, вот и картинка от чайника :D Далее позволю себе (да не накажут меня строгие модераторы) немного скопипастить и приведу вам как изменять награду за Битву династий, дабы собрать все в одну тему. Взято отсюда: https://mmorpg-devs.ru/threads/Награда-за-Битву-Династий.14414/ Автор Roymike [IMG] Изменение максимального количества монет в награду 1 путь: просто изменить максимальное количество монет в стеке. Дешево и сердито. + ненадо ничего редактировать, просто изменить 1 параметр у предмета в элементах - на почту может прийти к примеру 10000 монет, а у вас максимум в пачке 5000 и ваш игрок забирая предмет с почты получит только 5000. сразу начнутся вопли и разборки куда делось остальное. Так что лучше немного потратить время и изменить верхнуюю планку награды. Максимум меняется в функции: CountryBattleMan::CalcPlayerBonus (для игроков) и CountryBattleMan::CalcKingBonus (для короля) [IMG] Как работает: При начислении игроку больше 10к монет будет выдано 10к монет. Меняем оба числа на нужные нам. Изменение максимальной длительности боя (не проверено) По умолчанию любая битва в БД длится 25 минут. Изменить это можно тут: CountryBattleMan::StartBattle [IMG] П.С. возможно позже еще будут добавления П.П.С. Да я не написал, что для входа на БД в нестандартный день нужно еще и нпс включать - но вы же люди не глупые сами знаете что и как и умеете пользоваться редактором npcgen.data ;) И совсем уж П.П.П.С за мой русский не ругать :( у мну по нему всегда был трояк. Хотя техникум и вышку окончил с красным дипломом :D Ну и конечно настрою вашу БД (если вы сами не сможете) за небольшое вознаграждение :D (надеюсь не потрут нафиг за наглую рекламу :D)
    Автор темы: syxid, 14 мар 2014, ответов - 1, в разделе: PW Документация
  20. syxid