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

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, доброго времени суток!
    Стартовал новый литературный конкурс от "Ордена Хранителей" - "Пираты Миртанского моря".
    Каждый может принять в нём участие и снискать славу и уважение, а в случае занятия призового места ещё и получить награду. Дерзайте
  • Дорогие друзья, год подходит к концу, и пришло время подвести его итоги и наградить достойных

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

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

MaGoth

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

Вложения

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

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
Есть вопросы по дверям:

1. Можно ли сделать так, чтобы персонаж открывал незапертую дверь в процессе выполнения расписания?

2. Можно ли из скриптов (из диалога) управлять "запертостью" двери. Т. е. в диалоге сделать так, чтобы дверь стала запертой?

3. Есть ли какое-то руководство по дверям?
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
kraw, 1-й, не уверен что выполнимо, ибо при запуске расписания и при условии что нпс выходит из видимости обзора Гг двиг телепортирует НПС куда нужно, удастся ли обойти это непонятно...

2-й, не интересовался дверьми, но если попробовать прикрутить им возможность взаимодействия с ними Непесям, т.е. наделать анимаций и прочее, то мож и в полне прокатит, при условии что Непесь будет всегда в поле видимости Гг...

3-й, не видал такого.. ::)
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Есть вопросы по дверям:

1. Можно ли сделать так, чтобы персонаж открывал незапертую дверь в процессе выполнения расписания?

2. Можно ли из скриптов (из диалога) управлять "запертостью" двери. Т. е. в диалоге сделать так, чтобы дверь стала запертой?

3. Есть ли какое-то руководство по дверям?
1. Тут все просто, делаем реплейс функции(г2екст), которая собсно и удаляет нпс из мира, когда нпс выпадает из поля зрения гг
2. Тоже г2екст, у мну для этого выведенно несколько функций:
Mob_SetLocked(string mobname,int locked); где locked состояние замка, 1 закрыт/0 открыт/-1 невозможно открыть
Mob_SetPickLockStr(string mobname,string str); где str комбинация замка
string mobname = имя двери/сундука и прочих объектов дочерних oCMobLockable
3. думаю нету.
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
Saturas, В его проекте не используется Г2Ехт, да и он там особо не нужен, имхо.
 

Dimmell

Участник форума
Регистрация
23 Ноя 2008
Сообщения
2.899
Благодарности
111
Баллы
285
1. Тут все просто, делаем реплейс функции(г2екст), которая собсно и удаляет нпс из мира, когда нпс выпадает из поля зрения гг
Тоже самое можно сделать или через B_AssessPlayer() или через циклический триггер повесив на восприятия (или расстояние). Есть только одно но: очень многие игроки играют на запредельной дальности прорисовки, и как следствие - НПС отрисовывается, стоит как пень, по мере приближения к нему двиг начинает отрабатывать дальность восприятий - и на глазах ГГ этот НПС просто испарится.
kraw написал(а):
2. Можно ли из скриптов (из диалога) управлять "запертостью" двери. Т. е. в диалоге сделать так, чтобы дверь стала запертой?
Можно пойти простым игровым путем: есть дверь, у ГГ есть ключ от нее, во время диалога собеседник просто "настоятельно-вежливо" просит отдать ему этот ключ. Ключ изъять из инвентаря не проблема.
Как это аккуратно и красиво вписать - надо смотреть по сюжету.
Или если дверь уже была открыта - можно попробовать поставить "заглушку" через мувер.
 

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
Г2екст в проекте не используется.

Идея такая, чтобы сделать у помещений двери. Но если просто сделать двери, то персонажи в пределах видимости не могут через них пройти. Если бы они при этом проходили...

Другая идея, нужно, чтобы после определенного монолога некая дверь была в какие-то моменты заперта, т. е. гг не должен иметь возможности через нее проходить в определенные часы игровых суток.
 

hell9999

Участник форума
Регистрация
12 Апр 2008
Сообщения
2.049
Благодарности
1.170
Баллы
340
Как вариант делать дверь не мобси а обычным вобом с привязанным мувером. Таким образом можно запирать двери в нужные моменты через триггер скрипт. Проблема в том, что скорее всего постоянно гонять триггер открывая/закрывая дверь не получится, хотя... если поставить проверку в триггерскрипте на гг, если не выполнены условия, то при приближении гг дверь не открывается, а если не гг, то дверь при приближении нпс открывается и за ним закрывается...
 

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
А вот это мысль...
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
hell9999,
Придумываешь лишние сложности :) На обычную дверь также как и на лебедку из Г1 можно поставить условие через скриптовую функцию conditionFunc, при которой ГГ не сможет ее использовать в определенное время.
 

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
А можно сделать "привратника", некого персонажа, который будет, например, в толще скалы. И у него будет некая функция расписания, по которой он будет открывать и закрывать дверь (двигать мувер).
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
kraw, для этих целей всегда пользовался невидимый митбаг, у мня он где-то вычещенный был, без саунд фх-сов и прочего, полностью невидивый в игре. Найду в архивах скину, пользуй... ;)
 

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
Я невидимого "митбага" использовал в НМ вместо триггера.

Хотя, похоже, для данного случая я ломлюсь в открытую дверь. У дверей же будут стоять по охраннику. Может удастся заставить их открывать и закрывать двери.

А в другом случае (там нужно будет не закрывать/открывать, а делать запертой/отпертой), придется немного помудрить.
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
kraw, для этих целей всегда пользовался невидимый митбаг, у мня он где-то вычещенный был, без саунд фх-сов и прочего, полностью невидивый в игре. Найду в архивах скину, пользуй... ;)
Полностью невидимым в игре, без икара/екста не сделать,даже флаг NoFocus ничего не изменит, всеравно иногда будет срыватся в таргет=/
 

aaa82

Участник форума
Регистрация
16 Окт 2011
Сообщения
64
Благодарности
0
Баллы
155
как с другим персом переодеться?
его одёжду я забрал, а в том что я одет его не могу одеть

вобщем нашёл кучу функций которыми можно пользоваться
но они как-то работать не очень хотят применительно к неписям, отличным от меня
 

Dimmell

Участник форума
Регистрация
23 Ноя 2008
Сообщения
2.899
Благодарности
111
Баллы
285
вобщем нашёл кучу функций которыми можно пользоваться
но они как-то работать не очень хотят применительно к неписям, отличным от меня
Скрипт диалога Лареса посмотреть религия не позволяет? Или не помнишь что он по сюжету переодевается в броню кольца?
 

aaa82

Участник форума
Регистрация
16 Окт 2011
Сообщения
64
Благодарности
0
Баллы
155
моя религия - лень, и она мне действительно много чего не позволяет делать :)
да и так приходится много чего смотреть, иногда бы хоть халявки хапнуть :D

автоматическое определение в то что я одет как-то не задалось
придётся, например, как у Лареса, кода побольше, но ничего страшного
 

Dimmell

Участник форума
Регистрация
23 Ноя 2008
Сообщения
2.899
Благодарности
111
Баллы
285
aaa82,
автоматическое определение в то что я одет как-то не задалось
В чем сложности?
Получаешь ссылку на инстанцию
c_item Npc_GetEquippedArmor (c_npc n0); - возвращает доспехи, которыми экипирован НПС n0.
и эти доспехи одеваешь на напарника.
В туторе VAMa все разжевано довольно подробно.
 

aaa82

Участник форума
Регистрация
16 Окт 2011
Сообщения
64
Благодарности
0
Баллы
155
это я видел, а потом функция одевания

func void AI_EquipArmor(var C_NPC npc, var int instanceItem);

с_item как-то не очень подходит

а вот если кучу предметов сразу передают, как сделать чтобы надписи не лепились?

пс: как мне телепортироваться к дракону нежити из OldWorld?
как будем прощаться с товарищем вобщем :D
 

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
462
Благодарности
287
Баллы
230
B_GiveInvItems() - функция передачи предметов.
Попробуй разобраться каким образом она работает и найди нужные места для исправления.
Обрати внимание на выделенный фрагмент:
Код:
AI_PrintScreen(concatText,-1,[B]YPOS_GoldGiven[/B],FONT_ScreenSmall,2);
Также посмотри на константы:
Код:
const int YPOS_GoldGiven = 34;
const int YPOS_GoldTaken = 34;
const int YPOS_ItemGiven = 37;
const int YPOS_ItemTaken = 40;
Как раз из за совпадений координат по оси y происходят наложения.
Точно не помню, но могу предположить, что наложения текста происходят из за того, что одновременно и получаются вещи и отдаются.
Поэтому этот вопрос: "на подумать". Я думаю он не такой сложный.

с_item как-то не очень подходит
Да нет, как раз подходит. Нужно было лишь преобразовать типы через функцию Hlp_GetInstanceID(). На входе подставляешь у неё тип c_item, а на выходе получаешь int.

как мне телепортироваться к дракону нежити из OldWorld?
Нужно сначала загрузить уровень, а потом уже в Init или StartUp этого загруженного уровня прописать:
AI_Teleport(hero,"WP");
где "WP" - это точка или waypoint рядом с тем, к кому хочешь телепортировать ГГ.

Проще всех открыть тот же самый zen с драконом и поставить в нужное место "STARTUP" Vob.

Смешные какие-то у тебя вопросы или ты ради прикола тут расспрашиваешь всех?
 

aaa82

Участник форума
Регистрация
16 Окт 2011
Сообщения
64
Благодарности
0
Баллы
155
закончил мод почти
надо вот концовку приплести
(ну там ещё текст поправить чтобы не накладывался по возможности)

оригинальная с отплытием не нравится, да там ещё бегать за рычаги дёргать на ирдорате
 
Сверху Снизу