Новости В Of Ash and Steel начался закрытый плейтест
  • 587
  • 0
Разработчики "Русской Готики" объявили о старте закрытого плейтеста. Если вы оставляли заявку на участие, не забудьте проверить электронную почту или посмотреть свою библиотеку - возможно игра уже...
С Днём России!
  • 3.105
  • 6
Дорогие друзья! Поздравляю вас с Днём России! Этот праздник напоминает нам о богатой истории и культуре нашей страны, о её величии и непоколебимом духе народа! Желаю вам крепкого здоровья...
Новости Анонсирован Atomic Heart II
Новости Анонсирован ремастер Final Fantasy Tactics
  • 1.281
  • 1
Культовая пошаговая тактическая RPG от Square Enix получит второе дыхание. На проходящей выставке State of Play, где анонсируются игры для Play Station, состоялся анонс ремастера Final Fantasy...

В процессе Потенциальная ошибка в условиях регена одного из братьев троллей.

Blackmail01

Гвардеец
Команда форума
Редактор раздела
Участник форума
Регистрация
27 Дек 2019
Сообщения
1.111
Реакции
1.146
Баллы
251
Лучшие ответы
67
#1
Решил посмотреть при каких условиях братья тролли Утрог, Уздог и Уброг восстанавливают себе здоровье.
На скриптах от 18.07.2025 условия выглядят так:
Код:
    if (hlp_getinstanceid(self) == hlp_getinstanceid(troll_rug)) {
        if (troll_rugreg == true) {
            troll_rug.attribute[atr_hitpoints]  += 1000;
            if (troll_rug.attribute[atr_hitpoints]  >= troll_rug.attribute[atr_hitpoints_max] ) {
                troll_rug.attribute[atr_hitpoints]  = troll_rug.attribute[atr_hitpoints_max] ;
                troll_rugreg = false;
            };
        };
        if (troll_rug.attribute[atr_hitpoints]  <= 500) {
            if (troll_rug.attribute[atr_hitpoints]  < troll_trag.attribute[atr_hitpoints] ) {
                tmp_rugcount_01 = troll_trag.attribute[atr_hitpoints]  - troll_rug.attribute[atr_hitpoints] ;
                if (tmp_rugcount_01 > 1500) {
                    troll_rugreg = true;
                };
            };
            if (troll_rug.attribute[atr_hitpoints]  < troll_brog.attribute[atr_hitpoints] ) {
                tmp_rugcount_02 = troll_brog.attribute[atr_hitpoints]  - troll_rug.attribute[atr_hitpoints] ;
                if (tmp_rugcount_02 > 1500) {
                    troll_rugreg = true;
                };
            };
        };
    };
    if (hlp_getinstanceid(self) == hlp_getinstanceid(troll_trag)) {
        if (troll_tragreg == true) {
            troll_trag.attribute[atr_hitpoints]  += 1000;
            if (troll_trag.attribute[atr_hitpoints]  >= troll_trag.attribute[atr_hitpoints_max] ) {
                troll_trag.attribute[atr_hitpoints]  = troll_trag.attribute[atr_hitpoints_max] ;
                troll_tragreg = false;
            };
        };
        if (troll_trag.attribute[atr_hitpoints]  <= 500) {
            if (troll_trag.attribute[atr_hitpoints]  < troll_rug.attribute[atr_hitpoints] ) {
                tmp_tragcount_01 = troll_rug.attribute[atr_hitpoints]  - troll_trag.attribute[atr_hitpoints] ;
                if (tmp_tragcount_01 > 1500) {
                    troll_tragreg = true;
                };
            };
            if (troll_trag.attribute[atr_hitpoints]  < troll_brog.attribute[atr_hitpoints] ) {
                tmp_tragcount_02 = troll_brog.attribute[atr_hitpoints]  - troll_trag.attribute[atr_hitpoints] ;
                if (tmp_tragcount_02 > 1500) {
                    troll_tragreg = true;
                };
            };
        };
    };
    if (hlp_getinstanceid(self) == hlp_getinstanceid(troll_brog)) {
        if (troll_brogreg == true) {
            troll_brog.attribute[atr_hitpoints]  += 1000;
            if (troll_brog.attribute[atr_hitpoints]  >= troll_brog.attribute[atr_hitpoints_max] ) {
                troll_brog.attribute[atr_hitpoints]  = troll_brog.attribute[atr_hitpoints_max] ;
                troll_brogreg = false;
            };
        };
        if (troll_brog.attribute[atr_hitpoints]  <= 500) {
            if (troll_brog.attribute[atr_hitpoints]  < troll_trag.attribute[atr_hitpoints] ) {
                tmp_brogcount_01 = troll_trag.attribute[atr_hitpoints]  - troll_brog.attribute[atr_hitpoints] ;
                if (tmp_brogcount_01 > 1500) {
                    troll_brogreg = true;
                };
            };
            if (troll_rug.attribute[atr_hitpoints]  < troll_rug.attribute[atr_hitpoints] ) {
                tmp_brogcount_02 = troll_rug.attribute[atr_hitpoints]  - troll_brog.attribute[atr_hitpoints] ;
                if (tmp_brogcount_01 > 1500) {
                    troll_brogreg = true;
                };
            };
        };
    };
В последней проверке по логике должно быть if (tmp_brogcount_02 > 1500), а сейчас стоит if (tmp_brogcount_01 > 1500), что не имеет смысла.
 

MonisQ

Наемник
Участник форума
Регистрация
4 Мар 2023
Сообщения
597
Реакции
285
Баллы
103
Лучшие ответы
13
#2
ИИ говорит, что тут ещё пару ошибок:

1. В блоке для troll_brog в условии:

if (troll_rug.attribute[atr_hitpoints] < troll_rug.attribute[atr_hitpoints] )

Это условие всегда ложно, потому что сравнивается одно и то же значение.

Должно быть:

if (troll_brog.attribute[atr_hitpoints] < troll_rug.attribute[atr_hitpoints] )


2. В том же блоке troll_brog, внутри второго условия (которое неправильное) используется переменная tmp_brogcount_01, но затем проверяется условие:

if (tmp_brogcount_01 > 1500)

Однако в предыдущей строке мы присваиваем tmp_brogcount_02:

tmp_brogcount_02 = troll_rug.attribute[atr_hitpoints] - troll_brog.attribute[atr_hitpoints] ;

И потом проверяем tmp_brogcount_01, которая не была изменена в этом условии. Это ошибка.


Вероятно, должно быть:

if (tmp_brogcount_02 > 1500)


3. Также обрати внимание, что в блоке для troll_brog во втором условии (которое сейчас неправильное) используется сравнение с troll_rug, но в коде написано:

if (troll_rug.attribute[atr_hitpoints] < troll_rug.attribute[atr_hitpoints] )

Это явная опечатка, должно быть сравнение troll_brog с troll_rug.


4. Есть ли другие ошибки?

- В первом блоке (для troll_rug) и втором (для troll_trag) код написан правильно (сравнивают текущего тролля с двумя другими).

- Но в третьем блоке (troll_brog) в первом условии сравнивается с troll_trag, а во втором условии должно быть с troll_rug, но там ошибка.
 

Chad

Гвардеец
Пользователь VIP
Участник форума
Регистрация
29 Июл 2020
Сообщения
1.506
Реакции
558
Баллы
191
Лучшие ответы
3
#3
@Blackmail01, я конечно ничерта не понимаю в коде, но не проще ли просто давать реген как на гб х3 тому, у кого хп ниже на 2к чем у его брата типа у одного 7к, у другого 10к и первый до 8к регенит по 400-500 в сек и все типа и баланс и красота и ваще сладко
 
Автор
Автор
Blackmail01

Blackmail01

Гвардеец
Команда форума
Редактор раздела
Участник форума
Регистрация
27 Дек 2019
Сообщения
1.111
Реакции
1.146
Баллы
251
Лучшие ответы
67
#4
@Chad, по условиям прописать вряд ли проще, но и не сильно сложнее того что уже есть.
Всё равно я здесь ничего не решаю. Могу разве что опциональный плагин какой-нибудь запилить. И то не все из них проходят цензуру.
 

MonisQ

Наемник
Участник форума
Регистрация
4 Мар 2023
Сообщения
597
Реакции
285
Баллы
103
Лучшие ответы
13
#5
@Blackmail01, я конечно ничерта не понимаю в коде, но не проще ли просто давать реген как на гб х3 тому, у кого хп ниже на 2к чем у его брата типа у одного 7к, у другого 10к и первый до 8к регенит по 400-500 в сек и все типа и баланс и красота и ваще сладко
Ну я думаю, что в игре это будет выглядить лучше, чем фулл реген как есть сейчас
 

Chad

Гвардеец
Пользователь VIP
Участник форума
Регистрация
29 Июл 2020
Сообщения
1.506
Реакции
558
Баллы
191
Лучшие ответы
3
#6
@MonisQ, собственно, поэтому и написюкал - ну может что бы было прямо ТЯЖЕЛО УХ ДА пусть регенят на 2к хп больше самого нижнего из имеющихся значений типа вот у еденицы 6000 хп, у двойки 9000 хп у тройки 10000 хп и вот ты нанес удар который оставил 6000 хп у еденицы и он регенит до 11000 хп что на 2к больше чем у двойки, это тяжелее, чем то, что я предлагал ранее, существенно - но тем не менее не придется ходить на них после нового данжа что бы перебить смешную механику :'(

и да, без твоего удара переменная не должна работать ато будут регенится бесконечно :P
ну или разорвать дистанцию до 3000 хп для подключения регена или уменьшить овер-реген до 1000 выше прошлого
 
Автор
Автор
Blackmail01

Blackmail01

Гвардеец
Команда форума
Редактор раздела
Участник форума
Регистрация
27 Дек 2019
Сообщения
1.111
Реакции
1.146
Баллы
251
Лучшие ответы
67
#7
@Liker пока ты онлайн, баг или фича?
 

Liker

Демиург
Команда форума
Редактор раздела
Модостроитель
Почётный пользователь
 
Участник форума
Регистрация
21 Фев 2016
Сообщения
26.347
Реакции
22.805
Баллы
1.446
Лучшие ответы
1.054
#8
@Blackmail01, да, видимо ошибка, это очень старый код из в2 еще, ну хорошо что нашли.
 
Сверху Снизу