• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
Иконка ресурса

[Плагин Union] Равномерный шанс - Плагин сломан, не качайте

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
MEG@VOLT, я потом починю это говно, откати пока ресурс до версии от вторника, если можно. С указанием, что только для модов без кастомного урона :)
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
Gratt, Откатить не могу. Могу только восстановить, и то не факт что файлы восстановятся))
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
Не восстановились))
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
MEG@VOLT, попробуй. Ликер видимо не часто плагины на публику пишет, вот у него и сгорела жопа что оказывается готика модами потаскана до безобразия
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.129
Благодарности
5.626
Баллы
910
MEG@VOLT, я потом починю это говно, откати пока ресурс до версии от вторника, если можно. С указанием, что только для модов без кастомного урона :)
Дело не в кастомном уроне. Первая версия туда не лезет.
Ошибка в том, что заметилось, что в модах могут делать что-то, когда у ГГ владение 100%, например мод гильдии, когда ставилось 100 для крит удара, в гильдиях в режиме снк всё время увеличивалось стоимость прокачки до след. бонуса.
Ну это только 1 мод, в других может другое вылезти.
 

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
1.647
Благодарности
2.446
Баллы
380
MEG@VOLT, все версии сломаны, не надо никакую выкладывать. В каждом версии был свой баг, потому что свой метод "внедрения". Ни 1 не сработал до конца.

Gratt, вообще не в модах дело. Просто ни 1 мой метод не сработал. Оно не работает даже в оригинале как надо.
Мучаться не буду. Ты знаешь как это сделать правильно, заменив zRand
 
Последнее редактирование:

Lorddemonik

★★★★★
Редактор раздела
Регистрация
17 Дек 2011
Сообщения
1.113
Благодарности
581
Баллы
350
LikerGothic, так откатись. Ты же выше кидал скриншот кода рабочего
 

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
1.647
Благодарности
2.446
Баллы
380
Lorddemonik, ни 1 версия кода не рабочая, дело не в рандоме, а во внедрении его. Там функция очень неудобная куда надо рандом вставлять.
 

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.082
Благодарности
1.901
Баллы
320
Пока Ликёр сачкует, предложу свою реализацию:
  1. Если талант меньше 1 - то промах (другие пункты не выполняются)
  2. Если талант больше 99 - то крит (другие пункты не выполняются)
  3. Если карма игрока меньше нуля, то шанс линейно уменьшается (при -100 кармы уже гарантированный промах)
  4. Если карма игрока больше нуля, то шанс линейно возрастает (при 100 кармы гарантированный крит)
  5. После удара к карме добавляется значение таланта игрока
  6. Если удар получился критический, то из кармы, к тому же, вычитается 100
  7. При загрузке сейва карма сбрасывается до нуля
Плагин должен робить и для Г1. Должна быть совместмость с модами, где функция урона не заменена полностью.
Эта версия выводит логи в консоль.
Код:
karma   talent  chance  crit
0       30      30.000  1
-70     30      9.000   0
-40     30      18.000  0
-10     30      27.000  0
20      30      44.000  0
50      30      65.000  1
-20     30      24.000  0
10      30      37.000  0
40      30      58.000  0
70      30      79.000  1
0       30      30.000  1
-70     30      9.000   0
-40     30      18.000  0
-10     30      27.000  0
20      30      44.000  1
-50     30      15.000  1
-120    30      -6.000  0
-90     30      3.000   0
-60     30      12.000  0
-30     30      21.000  1

karma   talent  chance  crit
-100    30      0.000   0
-70     30      9.000   0
-40     30      18.000  1
-110    30      -3.000  0
-80     30      6.000   1
-150    30      -15.000 0
-120    30      -6.000  0
-90     30      3.000   0
-60     30      12.000  0
-30     30      21.000  0
0       30      30.000  1
-70     30      9.000   0
-40     30      18.000  0
-10     30      27.000  0
20      30      44.000  1
-50     30      15.000  0
-20     30      24.000  0
10      30      37.000  0
40      30      58.000  1
-30     30      21.000  0

karma   talent  chance  crit
0       30      30.000  0
30      30      51.000  0
60      30      72.000  0
90      30      93.000  1
20      30      44.000  0
50      30      65.000  1
-20     30      24.000  0
10      30      37.000  1
-60     30      12.000  0
-30     30      21.000  1
-100    30      0.000   0
-70     30      9.000   0
-40     30      18.000  0
-10     30      27.000  0
20      30      44.000  0
50      30      65.000  1
-20     30      24.000  0
10      30      37.000  1
-60     30      12.000  0
-30     30      21.000  1

karma   talent  chance  crit
-100    30      0.000   0
-70     30      9.000   0
-40     30      18.000  0
-10     30      27.000  1
-80     30      6.000   1
-150    30      -15.000 0
-120    30      -6.000  0
-90     30      3.000   0
-60     30      12.000  0
-30     30      21.000  0
0       30      30.000  0
30      30      51.000  0
60      30      72.000  1
-10     30      27.000  1
-80     30      6.000   0
-50     30      15.000  0
-20     30      24.000  0
10      30      37.000  0
40      30      58.000  0
70      30      79.000  1

karma   talent  chance  crit
0       30      30.000  0
30      30      51.000  1
-40     30      18.000  0
-10     30      27.000  0
20      30      44.000  0
50      30      65.000  1
-20     30      24.000  1
-90     30      3.000   0
-60     30      12.000  0
-30     30      21.000  0
0       30      30.000  0
30      30      51.000  0
60      30      72.000  0
90      30      93.000  1
20      30      44.000  1
 

Вложения

  • zFairCritSequence.vdf
    30,2 KB · Просмотры: 17

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
Slavemaster, Карма? Т.е. мне сходить к настрадамусу чакры почистить? ))
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.082
Благодарности
1.901
Баллы
320

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
1.647
Благодарности
2.446
Баллы
380
Slavemaster, сделай еще вывод шанса в консоль: (отношение кол-во критов к общему числу ударов) * 100
Я немного бомбанул что за 4 патча не смог сделать в обход (чтобы в функцию не лезть).
Так что... Теперь плагин на тебе :)

Еще бы на гитхабе посмотреть реализацию, чтобы понимать до конца как работает.
 
Последнее редактирование:

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.082
Благодарности
1.901
Баллы
320
сделай еще вывод шанса в консоль: (отношение кол-во критов к общему числу ударов) * 100
Если карма не растёт неограниченно, то с общей статистикой всё ок. Карма - это база, можно лишь функцию реального шанса менять: шанс(карма. талант). Сделал вывод.
Еще бы на гитхабе посмотреть реализацию, чтобы понимать до конца как работает.
Я тебе всю суть уже в дискорде выложил. А логика тут:

C++:
bool GetIsCrit(int hitchance)
{
    if (hitchance <= 0)
        return false;

    if (hitchance >= 100)
        return true;

    float chance = static_cast<float>(hitchance) / 100.0f;

    if (karma < 0)
        chance += chance * static_cast<float>(karma) / 100.0f;
    else
        chance += (1.0f - chance) * static_cast<float>(karma) / 100.0f;

    const bool isCrit = rand() / static_cast<float>(RAND_MAX) < chance;
    crits += static_cast<int>(isCrit);
    total += 1;

    static int counter = 0;
    counter += 1;

    if (counter % 20 == 1)
    {
        cmd << endl;
        cmd << "karma\ttalent\tchance\tcrit\tcrits\ttotal\tavg" << endl;
    }

    cmd << karma << "\t" << hitchance << "\t" << chance * 100.0f << "\t" << isCrit << "\t" << crits << "\t" << total << "\t" << (static_cast<float>(crits) / static_cast<float>(total) * 100.0f) << endl;

    karma += hitchance;

    if (isCrit)
        karma -= 100;

    return isCrit;
}
 
Сверху Снизу