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

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

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

MaGoth

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

Вложения

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

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Подскажите, как сделать проверку, что конкретный нпц атакует ГГ, и проверку что этот же нпц попал по ГГ.

Когда непись атакует ГГ, он находится в состоянии ZS_Attack(). В циклической части состояния можно поставить проверку:
((self == непись) && (other == ГГ))

А вот как достоверно проверить нанесение удачного удара, сказать не могу. Укур как-то реализовал фиксацию отравления. Возможно, с помощью циклического триггера.
 

НастасьСанна

Участник форума
Регистрация
6 Дек 2012
Сообщения
350
Благодарности
521
Баллы
325
Кроме восприятия AssessDamage в скриптах есть еще и AssessOthersDamage, т.е. восприятие урона, который получил кто-то другой. В оригинале используется только для монстров (B_MM_AssessOthersDamage), но никто же не запрещает подключить его и для людей.

Так я реализовывала износ брони у ГГ, работало сносно.
Код:
// Восприятие: повреждение другого
//self - кто заметил, other - кто нанес урон, victim - кто получил урон
func void B_AssessOthersDamage()
{
    // если ГГ получил урон от меня
    if ((Hlp_GetInstanceID(self) == Hlp_GetInstanceID(other)) && Npc_IsPlayer(victim))
    {
        if (C_BodyStateContains(victim, BS_PARADE))    //антибаг: шаг назад воспринимается движком как получение урона
        {
            return;
        };
        // тут пишем свои обработчики
    };
};

В ZS_Attack дописываем:
Код:
Npc_PercEnable(self,PERC_ASSESSOTHERSDAMAGE,B_AssessOthersDamage);
 

Bjorn++

Участник форума
Регистрация
28 Июн 2011
Сообщения
1.063
Благодарности
46
Баллы
235
Эм... наверно наитупейший вопрос, но ни как не могу понять... как вставить ГГ в мир?
Поставил на локацию прямоугольную, красную хрень со стрелкой (не знаю как называется), назвал её "START_PC_HERO". А что дальше делать?
 

Test Level

Участник форума
Регистрация
1 Ноя 2011
Сообщения
1.770
Благодарности
557
Баллы
275
Эм... наверно наитупейший вопрос, но ни как не могу понять... как вставить ГГ в мир?
Поставил на локацию прямоугольную, красную хрень со стрелкой (не знаю как называется), назвал её "START_PC_HERO". А что дальше делать?

Прописывай в инишнике стартовую локацию и начинай игру. ГГ будет на созданном тобой Startpoint`е


В свою очередь задам тупой вопрос. Могут ли на двух разных локациях быть waypoint с одинаковыми названиями?
 
Последнее редактирование модератором:

Bjorn++

Участник форума
Регистрация
28 Июн 2011
Сообщения
1.063
Благодарности
46
Баллы
235
Прописывай в инишнике стартовую локацию и начинай игру. ГГ будет на созданном тобой Startpoint`е
Да, я вчера так и сделал, посмотрев для примера ини-шники из других модов. Всё заработало.
Но всё-равно спасибо, что откликнулся ;)
 

Leonion

Участник форума
Регистрация
31 Мар 2008
Сообщения
249
Благодарности
154
Баллы
195
В свою очередь задам тупой вопрос. Могут ли на двух разных локациях быть waypoint с одинаковыми названиями?

Ну, "ТОТ" есть во всех локах.
"Start" тоже в нескольких локах встречается.
 

Bjorn++

Участник форума
Регистрация
28 Июн 2011
Сообщения
1.063
Благодарности
46
Баллы
235
Эх, не знаю как перефразировать свой вопрос, но... постараюсь объяснить.

В общем, есть у кого-нибудь болванка скриптов для Г2?
Т.е., в нём ничего не должно быть (ни каких оригинальных диалогов, нпс и т.д.), кроме важных скриптов (!), благодаря которым работают все необходимые функции.

И да, не предлагайте вручную удалять ненужное. Пробовал. В итоге случайно удалил что-то нужное.. и теперь ошибка за ошибкой идёт при компликтации =(

Буду ждать ответа.
 

Test Level

Участник форума
Регистрация
1 Ноя 2011
Сообщения
1.770
Благодарности
557
Баллы
275
Реально ли спарсить состояние ГГ на конкретный момент и, сообразуясь с этим, вставить в игру противника с аналогичными параметрами (в идеале и экипировкой)?
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Begemot666, тут есть два подхода. Либо ты прописываешь инстанции кучи неписей с разными характеристиками и в нужный момент выбираешь, кого из них вставить. Либо прописываешь одного непися, но при вставке его в мир, переносишь на него текущие характеристики ГГ. Во втором случае придётся предусмотреть восстановление одёжки непися после сохранения-загрузки.
 

Test Level

Участник форума
Регистрация
1 Ноя 2011
Сообщения
1.770
Благодарности
557
Баллы
275
Begemot666, тут есть два подхода. Либо ты прописываешь инстанции кучи неписей с разными характеристиками и в нужный момент выбираешь, кого из них вставить. Либо прописываешь одного непися, но при вставке его в мир, переносишь на него текущие характеристики ГГ. Во втором случае придётся предусмотреть восстановление одёжки непися после сохранения-загрузки.
Можно о втором способе подробнее? Мне надо именно перенести х-ки ГГ на непися.
 

Друид

Участник форума
Регистрация
21 Ноя 2009
Сообщения
1.169
Благодарности
395
Баллы
285
Реально ли спарсить состояние ГГ на конкретный момент и, сообразуясь с этим, вставить в игру противника с аналогичными параметрами (в идеале и экипировкой)?
Делал так в саге, где нужно встретится с двойником. Оружие и доспехи решил тупо перебором (все предметы что есть в игре сравнивались с тем, что у ГГ в руках). А так как был необходим диалог перед битвой двойников, то уже в диалоге сравнил характеристики и подкорректировал. Заодно и оружие - пока противник добежит с похожей аммуницией ГГ может все сменить.
ЗЫ. Но как показала практика - если такие же хар-ки противника, то он слаб как куропатка - бот все-таки.
 

Test Level

Участник форума
Регистрация
1 Ноя 2011
Сообщения
1.770
Благодарности
557
Баллы
275
Делал так в саге, где нужно встретится с двойником. Оружие и доспехи решил тупо перебором (все предметы что есть в игре сравнивались с тем, что у ГГ в руках). А так как был необходим диалог перед битвой двойников, то уже в диалоге сравнил характеристики и подкорректировал. Заодно и оружие - пока противник добежит с похожей аммуницией ГГ может все сменить.
ЗЫ. Но как показала практика - если такие же хар-ки противника, то он слаб как куропатка - бот все-таки.
Я уже об этом подумал тоже и решил вставить перса по мощнее.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Я уже об этом подумал тоже и решил вставить перса по мощнее.

Вопрос по копированию статов ГГ ещё актуален?

Кстати, кто-нибудь в курсе, для чего в классе неписей для хранения имени предусмотрен аж целый массив размерностью 5?
 

Bjorn++

Участник форума
Регистрация
28 Июн 2011
Сообщения
1.063
Благодарности
46
Баллы
235
Пр компиляции выскакивает данная ошибка (смотреть в спойлере).
В чём может быть проблема? А то уже весь Соурсер облазил. Устал.

Ошибка.PNG
 

Beowulf

Участник форума
Регистрация
21 Ноя 2010
Сообщения
1.937
Благодарности
1.450
Баллы
465
В Story_Globals.d не удалял строку var int MILArmor_Equipped; ?
 

Bjorn++

Участник форума
Регистрация
28 Июн 2011
Сообщения
1.063
Благодарности
46
Баллы
235
В Story_Globals.d не удалял строку var int MILArmor_Equipped; ?
Изначально у меня вообще не было файла "Story_Globals.d" в моем проекте. Однако, я его создал, и перекопировал буквально всё с оригинального скрипа - Story_Globals.d .
Как видишь (в спойлере), всё на месте. Однако ошибка всё-равно выскакивает.
В чём ещё может быть проблема?
var.PNG
 

Beowulf

Участник форума
Регистрация
21 Ноя 2010
Сообщения
1.937
Благодарности
1.450
Баллы
465
Изначально у меня вообще не было файла "Story_Globals.d" в моем проекте. Однако, я его создал, и перекопировал буквально всё с оригинального скрипа - Story_Globals.d .
А в gothic.src он на каком месте? в оригинале он на 19-м.
 

Beowulf

Участник форума
Регистрация
21 Ноя 2010
Сообщения
1.937
Благодарности
1.450
Баллы
465
Эм... а как проверить?
1
Лучше так сделай:
1) Сделай резервную копию своего Story_Globals.d
2) Открываешь в ГС свое решение и удаляй оттуда Story_Globals.d (в появившемся окне выбираешь "удалить с диска")
3) Вставляешь заготовленный в п. 1 Story_Globals.d. и при выборе места, где скрипт будет прописан в gothic.src ставишь после Story\XP_Constants.d (нажимаешь на XP_Constants.d и ОК)
 
Сверху Снизу