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

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, доброго времени суток! Спешите принять участие в оценке работ на конкурсе "Таинственные миры" 2024!
    Ждем именно вас!

    Ссылка на конкурсную тему - тык
    Ссылка на тему с работами участников- тык

Атрибуты в коде игры Г2 НВ

Mercy

Участник форума
Регистрация
16 Янв 2020
Сообщения
25
Благодарности
0
Баллы
60
Нашел в коде вот такой атрибут: ATR_REGENERATEMANA
Поставил значение 5, но не понимаю как работает. В [pc.hero.d] менял значения ATR_REGENERATEMANA, все равно реген одинаковый.
Планировал сделать пассивный реген маны через equip какого-нибудь амулета/кольца. Распишите подробно принцип работы ATR_REGENERATEMANA, пожалуйста
 

D36


Модостроитель
Регистрация
3 Дек 2014
Сообщения
2.125
Благодарности
3.218
Баллы
485
ATR_REGENERATEMANA равный 60 - регенарация маны со скоростью 1 единица в 60 секунд. При прокачке это значение понижается. Прокачка ниже 1 отключит регенерацию. Также нужен Npc_SetTalentSkill. То же самое с регенерацией здоровья. Как-то так:
Daedalus:
if(attrib == ATR_REGENERATEMANA)
{
    if(oth.attribute[ATR_REGENERATEMANA] == 0)
    {
        oth.attribute[ATR_REGENERATEMANA] = 60;
        Npc_SetTalentSkill(oth,NPC_TALENT_REGENERATE,1);
        PrintScreen(PRINT_LearnRegenerateMana,-1,-1,FONT_Screen,2);
    }
    else if(oth.attribute[ATR_REGENERATEMANA] > 1)
    {
        oth.attribute[ATR_REGENERATEMANA] -= points;
        PrintScreen(PRINT_UpgradeRegenerateMana,-1,-1,FONT_Screen,2);
    }
    else
    {
        PrintScreen(PRINT_NoLearnOverMAX,-1,-1,FONT_Screen,2);
    };
};


Прокачка через помощника по персонажу реализована в неофициальном обновлении Г2НВ:
B_GetLearnCostAttribute.d
B_RaiseAttribute.d
CharacterHelper.d
 
Последнее редактирование:

Mercy

Участник форума
Регистрация
16 Янв 2020
Сообщения
25
Благодарности
0
Баллы
60
ATR_REGENERATEMANA равный 60 - регенарация маны со скоростью 1 единица в 60 секунд. При прокачке это значение понижается. Прокачка ниже 1 отключит регенерацию. Также нужен Npc_SetTalentSkill. То же самое с регенерацией здоровья. Как-то так:
Daedalus:
if(attrib == ATR_REGENERATEMANA)
{
    if(oth.attribute[ATR_REGENERATEMANA] == 0)
    {
        oth.attribute[ATR_REGENERATEMANA] = 60;
        Npc_SetTalentSkill(oth,NPC_TALENT_REGENERATE,1);
        PrintScreen(PRINT_LearnRegenerateMana,-1,-1,FONT_Screen,2);
    }
    else if(oth.attribute[ATR_REGENERATEMANA] > 1)
    {
        oth.attribute[ATR_REGENERATEMANA] -= points;
        PrintScreen(PRINT_UpgradeRegenerateMana,-1,-1,FONT_Screen,2);
    }
    else
    {
        PrintScreen(PRINT_NoLearnOverMAX,-1,-1,FONT_Screen,2);
    };
};


Прокачка через помощника по персонажу реализована в неофициальном обновлении Г2НВ:
B_GetLearnCostAttribute.d
B_RaiseAttribute.d
CharacterHelper.d

"При прокачке значение понижается" - это значит что за 60 сек будет больше маны восстанавливаться? Я немного запутался
Пост автоматически объединён:

ATR_REGENERATEMANA равный 60 - регенарация маны со скоростью 1 единица в 60 секунд. При прокачке это значение понижается. Прокачка ниже 1 отключит регенерацию. Также нужен Npc_SetTalentSkill. То же самое с регенерацией здоровья. Как-то так:
Daedalus:
if(attrib == ATR_REGENERATEMANA)
{
    if(oth.attribute[ATR_REGENERATEMANA] == 0)
    {
        oth.attribute[ATR_REGENERATEMANA] = 60;
        Npc_SetTalentSkill(oth,NPC_TALENT_REGENERATE,1);
        PrintScreen(PRINT_LearnRegenerateMana,-1,-1,FONT_Screen,2);
    }
    else if(oth.attribute[ATR_REGENERATEMANA] > 1)
    {
        oth.attribute[ATR_REGENERATEMANA] -= points;
        PrintScreen(PRINT_UpgradeRegenerateMana,-1,-1,FONT_Screen,2);
    }
    else
    {
        PrintScreen(PRINT_NoLearnOverMAX,-1,-1,FONT_Screen,2);
    };
};


Прокачка через помощника по персонажу реализована в неофициальном обновлении Г2НВ:
B_GetLearnCostAttribute.d
B_RaiseAttribute.d
CharacterHelper.d
Если
[ATR_REGENERATEMANA] = 1, то 1 мана в секунду?
 
Последнее редактирование:

D36


Модостроитель
Регистрация
3 Дек 2014
Сообщения
2.125
Благодарности
3.218
Баллы
485
А можно свое значение поставить в 60 секунд? Условно 10 единиц маны в 60 секунд
Нет, всегда по одной единице в X секунд.

Если
[ATR_REGENERATEMANA] = 1, то 1 мана в секунду?
Да.

"При прокачке значение понижается" - это значит что за 60 сек будет больше маны восстанавливаться? Я немного запутался
При самом первом изучении навыка устанавливается талант Npc_SetTalentSkill (можно будет выводить в окно статов ГГ) и значение атрибута ATR_REGENERATEMANA (1 единица в X секунд - в моем примере это 60, может быть сколько тебе нужно, но не меньше 1). Если в дальнейшем навык прокачивается, то ATR_REGENERATEMANA понижается (1 единица в 50 секунд, 1 единица в 40 секунд, 1 единица в 30 секунд и тд). Стоимость обучения устанавливаешь сам в B_GetLearnCostAttribute, в зависимости от текущего значения или хоть по 10 очков за секунду.

Для кольца/амулета должно быть просто вкл/выкл без прокачки. Пример с 1 единицей здоровья в 1 секунду ([ATR_REGENERATEHP] = 1):
При экипировке:
Daedalus:
self.attribute[ATR_REGENERATEHP] = 1;


При снятии:
Daedalus:
self.attribute[ATR_REGENERATEHP] = 0;
 
Последнее редактирование:
Сверху Снизу