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

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

    Ссылка на конкурсную тему - тык

Вопросы по скриптингу

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.371
Благодарности
7.803
Баллы
995
  • Первое сообщение
  • #1
Прежде чем задавать вопросы, ознакомьтесь с документацией..
1) Читать онлайн
2) Архив с офлайн-версией(chm) во вложении
 

Вложения

  • Vam_tutor.rar
    171,6 KB · Просмотры: 514
Последнее редактирование модератором:

MEG@VOLT

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

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
1.935
Благодарности
933
Баллы
275
Daedalus:
    if(self.aivar[AIV_TAPOSITION] == ISINPOS)
    {
        B_DragonKillCounter(self);
        C_BeliarWeapSuckEnergy (self, other) ;

        self.aivar[AIV_TAPOSITION] = NOTINPOS;
    };
 

WoOliN

Участник форума
Регистрация
13 Окт 2012
Сообщения
347
Благодарности
196
Баллы
210
Нормально там все через ZS_Dead работает.
Раз в ZS_Dead корректно и без каких-либо проблем выдается опыт за убийство (не говоря уже о куче функций подсчета конкретных убитых существ),
то и с новой функцией восстановления здоровья при убийстве проблем быть не может.

И не забудь в B_MagicHurtNpc прописать аналогичный кусок кода.
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
1.935
Благодарности
933
Баллы
275
И не забудь в B_MagicHurtNpc прописать аналогичный кусок кода.
Это точно делать не надо.
Пост автоматически объединён:

Нормально там все через ZS_Dead работает.
Мегавольт совершенно справедливо отметил что это лучше сделать внутри цикла состояния. То есть в ZS_Dead_loop
 

WoOliN

Участник форума
Регистрация
13 Окт 2012
Сообщения
347
Благодарности
196
Баллы
210
Это надо, иначе, при убийстве молнией от Когтя не будет никакого восстановления здоровья.

Я написал пример, который у меня работает корректно годами.
Если вы хотите сделать что-то свое, то конечно же делайте.
Просто не нужно писать свои замечания в таком формате, будто мой метод чуть ли не краш игры вызовет)
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
1.935
Благодарности
933
Баллы
275
Просто не нужно писать свои замечания в таком формате, будто мой метод чуть ли не краш игры вызовет)
а где ты это увидел?

при убийстве молнией от Когтя не будет никакого восстановления здоровья.
НПС умирает и переходит в состояние ZS_Dead. почему же в таком случае не будет вызываться функция C_BeliarWeapSuckEnergy из ZS_Dead_loop? :)
 
Последнее редактирование:

WoOliN

Участник форума
Регистрация
13 Окт 2012
Сообщения
347
Благодарности
196
Баллы
210
Ну, сочинять не буду, может из цикла _loop оно и учтется.
Мне помнится, что в ванильной реализации убийство молнией через B_MagicHurtNpc то ли частенько, то ли вообще всегда игнорировало даже счетчики, прописанные внутри ZS_Dead,. Потому и пришлось разрабам прописывать ту же функцию выдачи посмертного опыта еще и в B_MagicHurtNpc.
 

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
1.903
Благодарности
537
Баллы
275
проверил. работает.
Странно. Поглощение работает, но прибавляется всегда лишь 1 НР, даже если у убитого противника НР = 300+.
У тебя расчёт BeliarWeapSuckEnergy проходит корректно?
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.229
Благодарности
6.208
Баллы
1.565
А как иначе? "Проспидранить" Яркендар для теста?
Зачем? создай чебурашку, который тебе будет повышать уровень когтя, как это делает статуя белиара. только не забудь, что RavenIsDead должен быть
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
1.935
Благодарности
933
Баллы
275
KirTheSeeker, у тебя есть формула расчёта. в ней есть множитель BeliarWeapCurrentLvL. значение этой переменной устанавливается при молитве(?) статуи белиара.
Пост автоматически объединён:

Мне помнится, что в ванильной реализации убийство молнией через B_MagicHurtNpc то ли частенько, то ли вообще всегда игнорировало даже счетчики, прописанные внутри ZS_Dead
добавил доп проверки.
 

Вложения

  • C_BeliarWeapSuckEnergy.zip
    884 байт · Просмотры: 8
Последнее редактирование:

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
1.903
Благодарности
537
Баллы
275
Зачем? создай чебурашку, который тебе будет повышать уровень когтя, как это делает статуя белиара. только не забудь, что RavenIsDead должен быть
Это помощник по сюжету имеется в виду? Или кто/что/как?
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.229
Благодарности
6.208
Баллы
1.565
Это помощник по сюжету имеется в виду? Или кто/что/как?
Та нееее)
Создай НПС, с нужными диалогами и функциями. Я так делаю, когда нужно тестировать уже пятую-шестую главу, но при жтом надо новую игру начинать. Создаю болванчика, и с помощью него реализую нужные мне события.
 

D36


Модостроитель
Регистрация
3 Дек 2014
Сообщения
2.128
Благодарности
3.220
Баллы
485
Вот так работает:
Daedalus:
func void ZS_Dead()
{
    var C_Item killerWeapon;
    var int restoreValue;
    if(Hlp_IsValidNpc(other))
    {
        if(Npc_HasReadiedMeleeWeapon(other))
        {
            killerWeapon = Npc_GetReadiedWeapon(other);
            if(C_IsItemMeleeBeliarsWeapon(killerWeapon))
            {
                restoreValue = self.attribute[ATR_HITPOINTS_MAX] * BeliarWeapCurrentLvL / 100;
                if(restoreValue > 0)
                {
                    if(C_NpcIsUndead(self))
                    {
                        Npc_ChangeAttribute(other,ATR_MANA,restoreValue);
                    }
                    else
                    {
                        Npc_ChangeAttribute(other,ATR_HITPOINTS,restoreValue);
                    };
                    Wld_PlayEffect("SPELLFX_SUCKENERGY_BLOODFLY",self,other,0,0,0,FALSE);
                };
            };
        };
    };
    ZS_Dead_Old(); //только для теста из system/autorun, убрать при переносе кода в скрипты
};

Но:
- Коготь должен быть прокачан, можно вручную выставлять через Марвин хелпер set var BeliarWeapCurrentLvL x
- на мелких существах эффект незаметен (+2 здоровья от овцы при максимальном 20 уровне Когтя)
 

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
1.903
Благодарности
537
Баллы
275
Так при ударе молнии не будет эффекта.
Меня устраивает такой вариант, поскольку молнию вообще хочется убрать, либо чтобы она работала как и у Равена - била противников, когда те наносят урон по ГГ.
Пост автоматически объединён:

Вот так работает:
Воистину! Работает как надо.
Благодарю всех!
 
Последнее редактирование:

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
1.903
Благодарности
537
Баллы
275
Приветствую всех вновь.
Подскажите, пожалуйста, возможно ли "родными скриптами игры" сделать функцию или т.п. позволяющую внедрить динамичное изменение только для ГГ Mdl_SetModelFatness (толщина персонажа), в зависимости от "родного" показателя силы (sPerm_STR_KTS = ATR_Training[ATR_STRENGTH] + ATR_PermBonus[ATR_STRENGTH])?
Например от Mdl_SetModelFatness(self,-2) при начальной sPerm_STR_KTS = 10, и до Mdl_SetModelFatness(self,2) при sPerm_STR_KTS = 150?
sPerm_STR_KTSMdl_SetModelFatness
> 1502
> 1351.6
> 1201.2
> 1050.8
> 900.4
> 750
> 60- 0.4
> 45- 0.8
> 30- 1.2
> 15- 1.6
> 1- 2
 
Сверху Снизу