|
Архив - только для чтения |
| Модератор форума: andycrowz |
| Форум Корзина форума Корзина Табу на персонажа (добавить возможность убийства перса в любом месте) |
| Табу на персонажа |
Доброго времени суток.
Полазил по форуму, погуглил, но так и не нашел ответа на вопрос. Поэтому обращаюсь за помощью. Проблема такова: необходимо на выбранного персонажа накладывать некоторое, так скажем, табу. Персонажа, имеющего это табу, можно убивать везде и всюду, без разницы, свои или чужие, также как не важна местность. Главное - это возможность убийства персонажа имеющего табу. Подскажите как реализовать это, дайте направление или, если есть, поделитесь готовым сорцом. Спасибо за внимание, жду ответа.
Сообщение # 1 написано 05.03.2014 в 20:18
|
эээ брат.... эт довольно весёлый патч в ядро. по реализации:
1. в плеере флаг. типо если он есть - то твоё "табу" активно на плеере 2. Дальше в функции френдли/хостли лепим все проверки по этмоу вопросу. 3. Проверяем. выявляем баги. чиним их.
2.4.3 Blizzlike Server by Evrial - Лучшая 2.4.3 сборка+исходник.
Рисуем итемы для 2.4.3 ГАЙД Создаём свой сервер WoW (подробно и доходчиво) Поистине ловок тот, кто умеет скрывать свою ловкость
Сообщение # 2 написано 05.03.2014 в 21:53
|
эээ брат.... эт довольно весёлый патч в ядро. по реализации: 1. в плеере флаг. типо если он есть - то твоё "табу" активно на плеере 2. Дальше в функции френдли/хостли лепим все проверки по этмоу вопросу. 3. Проверяем. выявляем баги. чиним их. Сделал всё именно так. Но проблема не решается. А конкретно - я никак не могу сделать одного игрока враждебным, по отношению к остальным. Ковырял функции Unit::IsHostileTo() и Unit::IsFriendlyTo(), добавил проверку. Ну никак не получается - не враждебный и всё. Уже дошло до того, что нпц начал бить этого игрока с заданным флагом, а игроки - не могут. Вот немного кода: Код Unit::IsFriendlyTo ... pUnit->HasByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_UNK7))) return false; Unit::IsHostileTo ... pUnit->HasByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_UNK7))) return true; Причем код специально вывел наверх функции, чтобы исключить влияние другого кода. Иными словами, по факту эти функции возвращают верный ответ, но игрок по прежнему не враждебен. p.s. Конечно же имелось в виду, что фракция у игроков одна и та же.
Сообщение # 3 написано 07.03.2014 в 18:47
|
в player.h объявляем 2 строчки
Код bool hasTabuFlag() const { return tabuFlag; } void SetTabuFlag(bool on); и перед приват частью: Код bool tabuFlag; Дальше в Player.cpp: в инициализацию плеера Код tabuFlag = false; и функция: Код void Player::SetTabuFlag(bool on) { if (on) tabuFlag= true; else tabuFlag= false; } И ТОЛЬКО ПОТОМ В ЮНИТЕ в функции френдли/хостли: принцип проверки Код if (плеер_таргет->hasTabuFlag()) // именно таргет!!! return true; // в случаи хостли, если же врендли - то false Для установки этого флага собственно используется SetTabuFlag(true); где и как его использовать - дело твоё. пиши команду, делай в базу и делай проверку при загрузке... в общем простор для мысли.
2.4.3 Blizzlike Server by Evrial - Лучшая 2.4.3 сборка+исходник.
Рисуем итемы для 2.4.3 ГАЙД Создаём свой сервер WoW (подробно и доходчиво) Поистине ловок тот, кто умеет скрывать свою ловкость |
Да, спасибо за помощь, у меня флаг давался свой и с флагом нет проблемы, вся проблема в том, что если персы с одной фракции, то добавляй-не добавляй в Unit::IsHostileTo() и Unit::IsFriendlyTo(), все равно враждебности между игроками нет, вот в чем беда.
Добавлено (07.03.2014, 19:26) --------------------------------------------- Может стоит, вместо того, чтобы задавать флаги и делать проверки в вышеназванных функциях, лучше давать какую-нибудь 100% враждебную фракцию на игрока, тем самым решив проблему? Это реально сделать? p.s. так и сделал - выдал враждебную фракцию, получил что хотел. Тему можно закрывать. Спасибо за помощь! |
А не проще ли было выдавать флаг игроку FFA_PVP что дает возможность убивать игрока как своим так и чужим но за исключением стоит запрет в столицах на бой.
У тебя плохое настроение? А ты попробуй без улыбки произнести: «Миша – мишенька, медведь! научи меня пердеть!»
>>Мой блог<<
Сообщение # 6 написано 08.03.2014 в 02:54
|
А не проще ли было выдавать флаг игроку FFA_PVP что дает возможность убивать игрока как своим так и чужим но за исключением стоит запрет в столицах на бой. Не проще. Так как начинал именно с выдачи этого флага, и тут много нюансов, с тем же запретом на бой, необходимостью запускать PvP-режим не только для жертвы и много чего еще.
Сообщение # 7 написано 08.03.2014 в 07:49
|
TroyashkA, хз как у тебя не получилось через функции, а через рассу получилось. ибо рассы учитываем именно функция френдли/хостли. Просто нужно было почти в самом начале сделать и не парится.
2.4.3 Blizzlike Server by Evrial - Лучшая 2.4.3 сборка+исходник.
Рисуем итемы для 2.4.3 ГАЙД Создаём свой сервер WoW (подробно и доходчиво) Поистине ловок тот, кто умеет скрывать свою ловкость
Сообщение # 8 написано 08.03.2014 в 14:42
|
TroyashkA, хз как у тебя не получилось через функции, а через рассу получилось. ибо рассы учитываем именно функция френдли/хостли. Просто нужно было почти в самом начале сделать и не парится. Сервер лишь проверяет, может ли юнит бить другого юнита. За отображение возможности бить юнита (отображение как врага) в клиенте отвечает сам клиент. И что бы Вы не написали в isHostile/Friendly игрок "красным" не станет. В данном случае единственный верный вариант - смена фракции.
Сообщение # 9 написано 09.03.2014 в 11:59
|
Сервер лишь проверяет, может ли юнит бить другого юнита. За отображение возможности бить юнита (отображение как врага) в клиенте отвечает сам клиент. И что бы Вы не написали в isHostile/Friendly игрок "красным" не станет. В данном случае единственный верный вариант - смена фракции. возможно ты и прав... наверно красный/зелёный определяется в клиенте в зависимости от фракции, а дальше уже обрабатывает ядро.
2.4.3 Blizzlike Server by Evrial - Лучшая 2.4.3 сборка+исходник.
Рисуем итемы для 2.4.3 ГАЙД Создаём свой сервер WoW (подробно и доходчиво) Поистине ловок тот, кто умеет скрывать свою ловкость
Сообщение # 12 написано 25.03.2014 в 20:13
|
| |||
| |||
