• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
Кап крита
Borisov99
Сержант
Всем привет! У меня довольно простой вопрос:
Какая строчку(файл вроде unit.cpp) и как её изменить отвечает за кап крита и уклона от агилы?
+в репу cool

Добавлено (13.04.2017, 12:50)
---------------------------------------------
Up

Сообщение # 1 написано 13.04.2017 в 12:50
Funtomas
Рыцарь

Код
// Modify crit from weapon skill and maximized defense skill of same level victim difference
    value += (int32(GetMaxSkillValueForLevel()) - int32(GetMaxSkillValueForLevel())) * 0.04f;

    if (sWorld->getBoolConfig(CONFIG_STATS_LIMITS_ENABLE))
         value = value > sWorld->getFloatConfig(CONFIG_STATS_LIMITS_CRIT) ? sWorld->getFloatConfig(CONFIG_STATS_LIMITS_CRIT) : value;

    value = value < 0.0f ? 0.0f : value;
    SetStatFloatValue(index, value);

SetStatFloatValue(index, value); и будет твоим конечным значением крита, то есть капа крита нет. А если изменишь строку примерно так:
Код
SetStatFloatValue(index, value > 89.0f ? 89.0f : value);
то значение капа крита будет 89%, ну там на твоё усмотрение уже. Это в StatSystem.cpp если что.
Сообщение # 2 отредактировано Funtomas - Четверг, 13.04.2017, 21:44
p620
Маршал
Цитата Funtomas ()
то значение капа крита будет 89%, ну там на твоё усмотрение уже. Это в StatSystem.cpp если что.

Более разумным, однако, было бы обратить внимание на код обработчика (ужасный) парой строк выше и сделать вывод, что ограничения под каждый тип характеристик можно задать в конфигурационном файле мира (worldserver.conf) и не добавлять хардкодных нелепостей, к тому же дублирующих существующий функционал, в сам бинарник.
Цитата Funtomas ()
Код
value > 89.0f ? 89.0f : value

На будущее: лучше использовать шаблонную функцию ::std::min или ::std::max, определенную в заголовке <algorithm>.
Сообщение # 3 отредактировано p620 - Четверг, 13.04.2017, 22:52
Borisov99
Сержант
Funtomas
Цитата Funtomas ()
Funtomas
Нет ты меня не понял, прочитай вопрос)
Цитата p620 ()
p620
Во первых в конфиге просто кап крита, и далеко не всем классам, а только миликам, а во вторых мне нужно чтобы агила не давала крита, тоесть такой параметр как ловкость добавляет бонус крита и уклона, а мне нужно это убрать
Сообщение # 4 написано 14.04.2017 в 03:55
Otaku
Скаут
p620, А разумней переписать формулу и не нужно ни каких капов, ибо кап - это не профессионально
Сообщение # 5 отредактировано Otaku - Пятница, 14.04.2017, 04:27
Funtomas
Рыцарь
Цитата p620 ()
Более разумным, однако, было бы обратить внимание на код обработчика (ужасный) парой строк выше и сделать вывод, что ограничения под каждый тип характеристик можно задать в конфигурационном файле мира (worldserver.conf) и не добавлять хардкодных нелепостей, к тому же дублирующих существующий функционал, в сам бинарник.
Что то не заметил в спешке :D
Цитата p620 ()
На будущее: лучше использовать шаблонную функцию ::std::min или ::std::max, определенную в заголовке <algorithm>.
Так вроде компиль и так поймет как есть, в прочем не буду спорить. Я вот пытаюсь разобраться с причудами изменения в ТС особенно в cmakelists.txt и куда собсна девали это: 
Код
set(scripts_STAT_SRCS 
      ${scripts_STAT_SRCS}
Сообщение # 6 написано 14.04.2017 в 04:52
p620
Маршал
Цитата Borisov99 ()
в конфиге просто кап крита, и далеко не всем классам, а только миликам

В предоставленном сниппете я не вижу таких ограничений.
Цитата Borisov99 ()
а во вторых мне нужно чтобы агила не давала крита, тоесть такой параметр как ловкость добавляет бонус крита и уклона, а мне нужно это убрать

Тогда возможно так и следовало написать в первом сообщении, потому что кап здесь не при чем.
Цитата Otaku ()
А разумней переписать формулу и не нужно ни каких капов, ибо кап - это не профессионально

Формула взята не с потолка. Изменять ее - не следовать близзлайку.
Цитата Funtomas ()
Так вроде компиль и так поймет как есть

Разумеется, разницы в результирующем коде не будет (разве что вес файла незначительно вырастет, вероятно), однако стороннему читателю будет легче поддерживать ::std::min(x, 42), нежели x > 42 ? 42 : x, не говоря уже о том, что в ряде случаев здесь может понадобиться еще и пара скобок, задающая приоритет вычислению этого выражения при условии наличия внешнего контекста.
Сообщение # 7 написано 14.04.2017 в 18:34
Otaku
Скаут
Цитата p620 ()
Формула взята не с потолка. Изменять ее - не следовать близзлайку.

Если он ставит кап, сервер уже не следует близзлайку
Сообщение # 8 написано 15.04.2017 в 04:01
Borisov99
Сержант
Цитата p620 ()
p620Коман
ты поможешь?
Сообщение # 9 написано 15.04.2017 в 05:44
p620
Маршал
Цитата Borisov99 ()
ты поможешь?

На данный момент я, к сожалению, не могу просматривать исходники в комфортной обстановке IDE, так что мог что-то пропустить (в этом случае мне необходимо сообщить о получении нежелательных результатов).
Возможное решение:
StatSystem.cpp, void Player::UpdateAllCritPercentages(void): закомментировать первые четыре значащие строчки тела метода.
Сообщение # 10 отредактировано p620 - Воскресенье, 16.04.2017, 00:10
  • Страница 1 из 1
  • 1
Поиск: