|
|
Модератор форума: Dimitro |
Форум TrinityCore [TrinityCore] Help Нерф спелов |
Нерф спелов |
Суть проблемы, есть любой спел ( созданный близами или мной, не важно ( хотя я не создавал ) ) который добавляет +10% ко всем характеристикам, если взять 2 таких спела, то они будут увеличивать все характеристики на 100%, так вот, как сделать чтобы он не перемножал, а складывал значения? Тоже самое и с берсерками, если повесить 2 берсерка ( например 1000 и 190 ) то получится не 1190 а 190000, что приведет к очень плохим последствиям
Искал много где, возможно есть такая тема на форуме ( но по запросам: "спелы перемножаются, а не прибавляются ", " заклинания умножаются а не складываются" ничего не нашел ).
Сообщение # 1 написано 18.01.2016 в 20:34
|
я так понимаю это на 2.4.3, возможно ошибаюсь.
Была у меня такая проблема, нужно копать исходники на бафы, ауры. Точно где, уже не помню. Похожей темы я не нашёл, исправлял сам.
[blizz]Судить меня дано лишь богу, другим я укажу дорогу
[/blizz]
Сообщение # 2 написано 19.01.2016 в 14:14
|
который добавляет +10% ко всем характеристикам, если взять 2 таких спела, то они будут увеличивать все характеристики на 100% Это что за абсурд вообще? Такая "теория" не основана ни на внутриигровых правилах скалирования, ни даже на банальных правилах математики. Боюсь, что из базы можно лишь не допустить их одновременного наложения. Такой функционал, который описываете Вы, существует лишь у стакающихся аур. И стакаться могут только эффекты от одних и тех же заклинаний, а не от разных. С другой стороны, Вы можете создать сценарий в ядре, специфическую обертку для положительных эффектов (всех или некоторых), и свое заклинание, которое будет отражать модификацию характеристики, которая реально произошла в результате работы вышеупомянутого сценария. Примерно такая логика: - Накладывается положительный эффект, изменяющий интересующую Вас характеристику. - Смотрите значение и продолжительность действия. Сохраняете эти значения, сам эффект не накладываете/снимаете (в зависимости от того, на каком уровне будет вестись обработка). - Если это первый эффект из категории - накладываете визуализирующую ауру. - Применяете значение для персонажа и отображаете значение на тултипе ауры (здесь потребуется уточнить, конечно, информацию, не уверен, что такое взаимодействие возможно без правки клиента). - Начинаете вести учет продолжительности действия. - Как только дурация истекает - отнимаете от персонажа (и из тултипа ауры) значение, которое было за этой дурацией закреплено. - Проверяете, есть ли еще какие-то модификаторы из этой категории. - Если нет - снимаете визуализирующую ауру. Это если вкратце. На деле придется учитывать некоторые прочие моменты, вроде досрочного прерывания действия определенной ауры и перерасчета ее действия при определенных обстоятельствах, но общий смысл, полагаю, уловить можно.
Сообщение # 3 написано 19.01.2016 в 14:29
|
Это что за абсурд вообще? Такая "теория" не основана ни на внутриигровых правилах скалирования, ни даже на банальных правилах математики. Вот скриншоты: Скрин1 Скрин2 Скрин3 Скрин4 Скрин5 Версия 3.3.5 |
Даже разбираться не буду, что там на крейзи-сервере происходит. Я Вам, в любом случае, в общих красках описал вариант того, как это можно сделать. Будете ли Вы делать так, или по своему, знания C++ и архитектуры ядра потребуются как ни крути.
Сообщение # 5 написано 19.01.2016 в 17:54
|
Когда наведут на мысль, я даже не представляю где копать, если делать как вы, то как я понимаю у меня на это уйдёт огромное кол-во времени, чтобы каждый спел переделать ( его механику ) На сколько я знаю есть формула, но где она, я не знаю Добавлено (26.01.2016, 16:02)
Сообщение # 8 написано 26.01.2016 в 16:02
|
Создай просто своего "берсерка" с бле... кхм... с нужным тебе % увеличения. укажи ему уровень если нужно и о чудо они будут работать независимо др. от друга!
Только надо будет делать патч в клиент всем. Или его не будет видно (на счет работоспособности не в кусре) Иного решения я не вижу
Сообщение # 9 написано 13.02.2016 в 18:33
|
Тема актуальна, а решение проблемы тут нету...Подскажите где копать, столкнулся с такой же бедой...
EvolutiON-WoW 3.3.5 - Тык
Видео сервера EvolutiON-WoW.Ru Часть 1. Видео сервера EvolutiON-WoW.Ru Часть 2.
Сообщение # 10 написано 18.04.2021 в 11:42
|
Это можно обработать, к примеру, в Unit::HandleStatModifier. Обработка процентов происходит при modifierType равном TOTAL_PCT.
Можно поставить бряку, продебажить, посмотреть вызовы до и после, проанализировать все нужные места для изменений, отталкиваясь от функции, от которой уже можно копать.
Сообщение # 11 написано 27.08.2021 в 20:09
|
| |||
| |||