Ты определись сначала куда тебе нужно, на бд или на катапульты )) Если на бд - то в настройках нпс "комбинированные службы 2" ставь параметр 1. Это обычная бд. Про колесницы не знаю, с 1.5.1 не работал. Но пробуй тот же параметр начиная с 512 и далее 1024, 2048 и т.д.
Если я не ошибаюсь ты пытаешься попасть на межсерверную битву династий, а не битву колесниц :^) Дерон, это все равно что "замутить телепорт" на тв/гвг. Это особые события, просто "прилетев" на которые вы ничего не добьетесь. Заходить нужно именно через определенную службу, так как идет "регистрация" персонажа на эвенте.
В общем суточный тест прошел успешно. Отпишу на всякий случай, что было сделано. Предыстория: В один далеко не прекрасный момент было замечено массовое удаление персонажей. Началось это примерно через неделю начала тестов с перенесенной базой старого сервера. Никаких ошибок при этом в 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 П.П.С модераторам просьба, если можно, добавьте этот пост к первому, чтобы было сразу видно.
ясно, с базой я заметил,что если на нее нагрузка возрастает подключаются новые, дублирующие процессы. Эта фигня началась несколько дней назад, сейчас проверяю одну теорию. Как заметил при отключенном трейдклиенте появляются записи в базе webtrade и др. И при этом во время запуска сервера в лог сыпятся ошибки на лоты которые там якобы существуют. Удалил нафиг глючные базы (мини вайп) сейчас тест, время покажет :(
Это понятно, что проблема с самой базой. Интересуют пути решения, так как удаленные персонажи не битые, если восстановить (копированием xml) то персонажем можно играть, а вот если просто сделать откат базы, то все уже удаленные до этого персонажи, удаляются еще при запуске сервера, будто база помнит кого надо удалить. Удаление идет совершенно случайным образом, на кого "рандом" покажет
Доступ на сервер только с одного ip, база доступна только с 127.0.0.1 Да и нафига взламывать тест сервер, на котором ничего нет
В логе вижу такое: 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 П.П.С модераторам просьба, если можно, добавьте этот пост к первому, чтобы было сразу видно.
Хм, видимо вы не меня не поняли. Хорошо разжую. 1. отвечая на ваш вопрос - Ок, а как по твоему сундук понимает что он должен быть сундуком с картинкой и располагаться именно там? Сундук "понимает", что он располагается в том то месте и выглядит так-то исходя из настроек .xml файла, что вы собственно и сами знаете. 2. Я сказал, что сундук не привязан к конкретным нескольким квестам. Он привязан к ТИПУ квестов. Надеюсь это вам понятно. Вы можете сделать НОВЫЙ квест с НОВЫМ id по определенному шаблону и увидите этот сундук.
Для справки - этот сундук привязан к определенному типу квестов. А именно одиночный квест (без подквестов) с условием выполнения - подождать время. делаете такой квест - вылезает сундук.
Ну урок может и полезный новичкам, но название темы не соответствует содержанию. Не надо путать флеш и гиф. Для создания флеш баннеров используется к примеру Adobe Flash Professional, и как правильно замечено совсем по другому. Название темы вводит в заблуждение.
библиотеки залей правильные libtask.so и т.д
Через логи можно, но награда на почту? Тоже не всегда удобно. Представь после большого замеса у тебя почта забита. Тут еще вопрос, не знаю точно - действует ли ограничение на количество писем в почтовом ящике, если отправляет система. Ну или как вариант если есть ЛК туда, или отсылать по окончании мероприятия суммарную награду
насколько я знаю на этой версии нельзя зачесть убийство игрока, могу предложить пару альтернативных вариантов: 1. даешь игрокам по 1 итему, который выпадает при смерти. У каждого висит квест на этот итем. Убил-поднял-получил награду (вариант для любых случаев) 2. подходит только для определенных локаций, у игроков висят квесты - сдать можно только определенному нпс, который в данный момент выключен. Когда один из игроков умирает то его квест проваливается, в награде за провал - активация тригера с НПС. Тот кто выжил сдает квест и (при сдаче) отключает НПС. Квесты повторяемые П.С. для гарены - не смотрел, но подозреваю что куб реализован по 2 варианту
удали (перемести) из папки с базой uniquebd файлы: config unamefamily Перезапусти uniquenamed Если не поможет смотри еррор.лог и формат.лог
поверь надо)) советую еще написать руководство про БД - подозреваю, что 90% купивших начнут задавать вопросы: - почему я изменил время, а бд не началась??? - где мой нпс для входа на бд??? - почему нет квеста для входа??? - почему нет объявления о входе??? и т.д. пиши сразу ридми.txt )))
программа хорошая как раз для начинающих, не умеющих работать с сервером Собрана информация с гайдов и все в одной программе) Забыл добавить редактор конфига гделиверед ))
del
Спасибо пилад, как раз нужно было убрать эту гадость. Добавлю - можно искать в иде по функции: DelayExpelMember Если вдруг в другой версии сменят время :)
Небольшой офф топ: Занялся настройкой БД и обнаружил, что информации по ней практически нет. Пришлось долго и упорно ковыряться в гделиверед для понимания процесса БД и возможности настройки. Возможно люди, которые хотели бы сделать на этом деньги (настраивая другим пару байт) будут очень на меня сердиты... но все таки напишу )) И еще не ждите от меня готовых оффсетов - я пишу где искать для возможности редактирования на других версиях сервера! Важно! Для работы вам понадобятся: - 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)
Просьба закрыть тему. Вопрос решен. Вечером постараюсь написать подробный гайд по настройке БД. (время, описание конфига, доп параметры)
Имена участников (разделяйте запятой).