• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
Нерф спелов
rkild511
Сержант
Суть проблемы, есть любой спел ( созданный близами или мной, не важно ( хотя я не создавал ) ) который добавляет +10% ко всем характеристикам, если взять 2 таких спела, то они будут увеличивать все характеристики на 100%, так вот, как сделать чтобы он не перемножал, а складывал значения? Тоже самое и с берсерками, если повесить 2 берсерка ( например 1000 и 190 ) то получится не 1190 а 190000, что приведет к очень плохим последствиям

Искал много где, возможно есть такая тема на форуме ( но по запросам: "спелы перемножаются, а не прибавляются ", " заклинания умножаются а не складываются"  ничего не нашел ).
Сообщение # 1 написано 18.01.2016 в 20:34
Narko94
Рыцарь
я так понимаю это на 2.4.3, возможно ошибаюсь.
Была у меня такая проблема, нужно копать исходники на бафы, ауры. Точно где, уже не помню.
Похожей темы я не нашёл, исправлял сам.
[blizz]Судить меня дано лишь богу, другим я укажу дорогу
[/blizz]
Сообщение # 2 написано 19.01.2016 в 14:14
p620
Маршал
Цитата rkild511 ()
который добавляет +10% ко всем характеристикам, если взять 2 таких спела, то они будут увеличивать все характеристики на 100%

Это что за абсурд вообще? Такая "теория" не основана ни на внутриигровых правилах скалирования, ни даже на банальных правилах математики.

Боюсь, что из базы можно лишь не допустить их одновременного наложения. Такой функционал, который описываете Вы, существует лишь у стакающихся аур. И стакаться могут только эффекты от одних и тех же заклинаний, а не от разных.
С другой стороны, Вы можете создать сценарий в ядре, специфическую обертку для положительных эффектов (всех или некоторых), и свое заклинание, которое будет отражать модификацию характеристики, которая реально произошла в результате работы вышеупомянутого сценария. Примерно такая логика:
- Накладывается положительный эффект, изменяющий интересующую Вас характеристику.
- Смотрите значение и продолжительность действия. Сохраняете эти значения, сам эффект не накладываете/снимаете (в зависимости от того, на каком уровне будет вестись обработка).
- Если это первый эффект из категории - накладываете визуализирующую ауру.
- Применяете значение для персонажа и отображаете значение на тултипе ауры (здесь потребуется уточнить, конечно, информацию, не уверен, что такое взаимодействие возможно без правки клиента).
- Начинаете вести учет продолжительности действия.
- Как только дурация истекает - отнимаете от персонажа (и из тултипа ауры) значение, которое было за этой дурацией закреплено.
- Проверяете, есть ли еще какие-то модификаторы из этой категории.
- Если нет - снимаете визуализирующую ауру.
Это если вкратце. На деле придется учитывать некоторые прочие моменты, вроде досрочного прерывания действия определенной ауры и перерасчета ее действия при определенных обстоятельствах, но общий смысл, полагаю, уловить можно.
Сообщение # 3 написано 19.01.2016 в 14:29
rkild511
Сержант
Цитата p620 ()
Это что за абсурд вообще? Такая "теория" не основана ни на внутриигровых правилах скалирования, ни даже на банальных правилах математики.
Как бы смешно не звучало, но это так и есть, вот смотрите пример скриншотов ( мне подсказали, что нужно копатся в сорцах, и там менять какую то формулу, но где именно копать, и что именно менять мне не сказали )
Вот скриншоты:
Скрин1
Скрин2
Скрин3
Скрин4
Скрин5

Версия 3.3.5
Сообщение # 4 отредактировано rkild511 - Вторник, 19.01.2016, 16:07
p620
Маршал
Даже разбираться не буду, что там на крейзи-сервере происходит. Я Вам, в любом случае, в общих красках описал вариант того, как это можно сделать. Будете ли Вы делать так, или по своему, знания C++ и архитектуры ядра потребуются как ни крути.
Сообщение # 5 написано 19.01.2016 в 17:54
rkild511
Сержант
Up, тема актуальна, вопрос не закрыт
Сообщение # 6 написано 20.01.2016 в 23:06
p620
Маршал
Цитата rkild511 ()
Up, тема актуальна, вопрос не закрыт

А когда именно, прошу прощения, вопрос будет закрыт? Когда сделают за Вас?
Сообщение # 7 написано 21.01.2016 в 00:02
rkild511
Сержант
Цитата p620 ()
А когда именно, прошу прощения, вопрос будет закрыт? Когда сделают за Вас?

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

Добавлено (26.01.2016, 16:02)
---------------------------------------------
Up, переделал вопрос:
Gри наложении на чара 2 и более аур увеличивающих один и тот же параметр, их числа не суммируются а перемножаются, вот именно эту проблему надо решить

Сообщение # 8 написано 26.01.2016 в 16:02
M@Z@
Рыцарь
Создай просто своего "берсерка" с бле... кхм... с нужным тебе % увеличения. укажи ему уровень если нужно и о чудо они будут работать независимо др. от друга!
Только надо будет делать патч в клиент всем. Или его не будет видно (на счет работоспособности не в кусре)

Иного решения я не вижу
Сообщение # 9 написано 13.02.2016 в 18:33
M1sTerY
Database Developer
Тема актуальна, а решение проблемы тут нету...Подскажите где копать, столкнулся с такой же бедой...
Сообщение # 10 написано 18.04.2021 в 11:42
Ranege
Чемпион
Это можно обработать, к примеру, в Unit::HandleStatModifier. Обработка процентов происходит при modifierType равном TOTAL_PCT.

Можно поставить бряку, продебажить, посмотреть вызовы до и после, проанализировать все нужные места для изменений, отталкиваясь от функции, от которой уже можно копать.
Сообщение # 11 написано 27.08.2021 в 20:09
Andkhl
Скаут
спс
Сообщение # 12 написано 20.01.2023 в 21:36
  • Страница 1 из 1
  • 1
Поиск: