|
|
10.04.2006, 12:04
|
#1361
|
|
Re: Скриптинг в Готике
Прошу прощения за невежество, Но опять проблемы со вставкой NPC В Готику 1.
Делаю так: 1) В спасере создал 2 новых вайпойнта. Расположил их между озером, в которое падает ГГ при начале игры и рядом расположенным забором. 2) соединил их между собой и с ближайшим вайпойнтом 3) сохранил zen-файл 4) Написал d-файл, в котором описал персонаж. Задал ему распорядок. Просто стоять на одном из новых вэйпойнтов. 5) В startup.d вставил Wld_InsertNPC, появление на этом вэйпойнте. В разделе sub_surface. 6) скомпилил спасером 7) запускаю (конечно все титры на немецком, но пока это не страшно) 8) Поговорил с Диего, поворачиваюсь налево - персонажа нет. 9) Делаю в консоли insrt - появляется.
Примечание - названия вэйпойнтов - большими буквами, zen-файл сохранился (смотрел по дате модификации). При последующем открытии zen-файла эти WP присутствуют.
Что я упустил? Как добиться того, чтобы NPC появлялся сам? Смотрел скрипты для Диего (PC_Thief), тот вообще должен появиться в СЛ. Смотрел скрипты для Рори (он недалеко от этого места стоит на страже), вреде бы все так же сделано как у меня.
Где же грабли? Что я недописал?
PS: Есть ли руссифицированные исходники, наподобие немецкоязычных, что в GMDK?
|
|
|
10.04.2006, 19:01
|
#1363
|
|
Re: Скриптинг в Готике
Цитата:
Сообщение от DEDROIT link=board=gothic&t=1105030050&start=1350#1361 date=04/10/06, в 15:14:55
2kraw: Насчёт твой проблемы,то у меня было тоже самое..Ты когда создавал веппоинт,то перед этим нажимал на веппоинт из оригинальной Готы?
|
Насколько помню - да. Там, вроде бы, перед тем как создавать объект, полезно нажать на такой же имеющийся, чтобы сразу создать такой же. Поэтому сначала кликнул на имеющийся, потом сделал свой. Во всяком случае мои вэйпойнты соединены с остальными. На досуге попробую разместить персонажа на оригинальном вэйпойнте.
|
|
|
11.04.2006, 11:19
|
#1366
|
|
Re: Скриптинг в Готике
Проверил.
1) если ставить NPC на старый вэйпойнт, то он благополучно появляется и начинает действовать по расписанию.
2) А вот в новыми вэйпойнтами получилась следующая замечательная штука.
В GDMK для Готики1 Миненталь разрезан на несколько zen-файлов. Отдельно Для каждого из лагерей и отдельно - surface. Вот в последнем я и ставил вэйпойнт. После чего запускал мод с опцией "брать сначала с физического диска" (благодаря чему и ожил новый NPC и я "наслаждался" немецкими титрами). А вот в самой Готике содержится единый zen-файл world.zen (или что-то вроде этого - сейчас у меня нет под руками).
Похоже на то, что мир берется именно из этого zen'а, а не из GMDK-шных. Попытался я это дело обойти - распаковал тот zen и стал работать с ним spacer'ом. В процессе работы появляются отдельные глюки - не всегда удается сфокусироваться на нужном вэйпойнте, но самое главное - при попытке сохранить, spacer просто виснет. При этом сохраняет только 198 байтов. И при нормальном сохранении и при быстром сохранении в tmp.
Видимо тут есть какая-то хитрость. Или эти отдельные zen можно как-то объединить в один, или заставить Готику (точнее - создаваемый мод) работать именно с ними. При этом у меня нет желания (по крайней мере на данном этапе) создавать мир с нуля, а хочется модифицировать уже имеющийся и модифицировать существующий сюжет.
Может кто подскажет?....
PS: старыми сейвами не пользовался, начинал игру заново.
PPS: Стартовал собственный ini, в котором указал kraw.mod (в котором пока ничего нет) и gothic.vdf
PPPS: А где-нибудь имена zen указываются?
Добавление от 04/11/06, в 10:39:12 Аксиома Кана. Если ничто другое не помогает, прочтите, наконец, инструкцию!
Просто в ini-файле мне следует указать zen-файлы. Видимо в этом все дело. Когда доберусь до своего ini, буду разбираться.
|
|
|
11.04.2006, 14:58
|
#1368
|
|
Re: Скриптинг в Готике
Цитата:
Сообщение от DEDROIT link=board=gothic&t=1105030050&start=1350#1366 date=04/11/06, в 13:25:46
........ 1)распаковывал(из worlds.VDF)World.zen 2)Делал в нём изменения. 3)Сохранял и ложил в папку World ............
|
Проблема в том, что spacer не хочет у меня его сохранять. Виснет. (повторюсь, что речь идет о Г1) Поэтому, похоже, придется брать zen'ы из исходников GMDK
|
|
|
11.04.2006, 20:29
|
#1370
|
|
Re: Скриптинг в Готике
Цитата:
Сообщение от DEDROIT link=board=gothic&t=1105030050&start=1350#1368 date=04/11/06, в 14:03:22
2kraw: А ты распакованный зен откуда открываешь??Если не из папки World,то виснуть он и будет,конечно это может быть глюки самого спайсера.
|
Из world. Правда спасер запускаю из модстартера, а не напрямую.
|
|
|
19.04.2006, 11:35
|
#1372
|
|
Re: Скриптинг в Готике
Со спасером и world.zen разобрался - обновил до версии 1.50 и понял, что world.zen сохраняется очень долго.
Есть несколько вопросов по скриптингу и окло него:
1) при изменении в скриптах и zen надо после перекомпиляции начинать игру заново. При таких условиях трудно отлаживать/тестировать мод. Как кто выходит из этого положения?
2) Как кто озвучивает персонажей? Своим скрипучим голосом озвучивать не хочу (особенно женские персонажи). Единственная идея - вырезать фрази из фонограм фильмов и пр. А как другие разработчики-любители выходят из этого положения?
3) Проиграть скрипт без возможности вмешательства игрока. Пока придумал как это можно сделать при помощи диалога. Но, возможно, есть более изящние способы? Увидел в "Учебнике по скриптологии" от Vam функцию IA_PlayCatscene (или что-то в этом роде). Но в Готике 1 не нашел следов ее применения. Что такое cutscene? Это не то, что я ищу? (хотя, возможно, надо поискать информацию по триггерам, м. б. там решение....)
4) Начальное состояние героя. Нужно, чтобы он появился не стоящим по колено в воде, а лежащим лицом вниз. При помощи чего это сделать? (Тем более, что Диего в этот момент рядом не будет, он появится немного позднее)
|
|
|
19.04.2006, 11:49
|
#1373
|
|
Re: Скриптинг в Готике
Цитата:
Сообщение от kraw link=board=gothic&t=1105030050&start=1350#1371 date=04/19/06, в 10:35:35
Есть несколько вопросов по скриптингу и окло него:
|
1) при изменении в скриптах и zen надо после перекомпиляции начинать игру заново. При таких условиях трудно отлаживать/тестировать мод. Как кто выходит из этого положения?
|
|
Есть такой непись Story Helper (SH)посмотри скрипт, я добавляю нужные переменные или предметы в этот скрипт. Тогда например, "Глава 2":... добавляешь то, что нужно по сюжету для проверки твоего скрипта, и нет необходимости начинать игру заново ;-)
|
|
|
08.05.2006, 19:33
|
#1377
|
|
Re: Скриптинг в Готике
2Johnny666Cage:
Оружие в аддоне например групируется, когда его много одинакового в одну клетку, а кирки или броня нет. Где это прописать?
|
В инстанции предмета за это отвечает переменная flags, конкретное значение бита ITEM_MULTI, т.е. предмет у которого записано flags = ITEM_MULTI; будет складироваться (занимать одну клетку в инвентаре).
|
|
|
10.05.2006, 10:17
|
#1379
|
|
Re: Скриптинг в Готике
Одно наблюдение и несколько вопросов:
Делаю я, значит, начальную сцену, которая должна произойти до появления Диего. Поставил триггер-скрипт на появление ГГ в точке старта. Нормально перехватывает управление, скрипт работает и т. д. При этом скрипте к точке подходит Велая (запускается диалог, но без фраз, а только с действиями), замечает ГГ и убегает. Поскольку идет диалог ГГ за ней погнаться не может и нарушить сюжет. А там и Диего его своим диалогом перехватит. Но захотелось мне обезопасить сюжет еще больше. Тут бы пригодилась функция телепортирования. Нормально отрабатывает. Но после этого Диего начинает глючить (хотя казалось бы, ему-то чего глючить?). Мало того, что он запутывается в двух вэйпойнтов (с одного на другой, соседний, проходит попытки эдак с пятой), но еще не хочет стартовать диалог. Ну то есть соответствующая функция "condition" этого диалога просто не стартует. Убрал телепортирование - стало все работать.
Теперь практические вопросы - может кто знает ответ на них?
1) По сюжету ГГ должен находиться в "отключке" после удара Бладвина. Как бы инициировать это состояние? Максимум, что удалось сделать, это вставить в триггер-скрипт вызов:
AI_PlayAniBS (pc_hero, "T_STAND_2_VICTIM_SLE", BS_LIE);
Но это не совсем то. Во-первых совершенно не нужные "звездочки" (поскольку это анимация засыпания под воздействием магии), во-вторых - мне не нужен процесс - мне нужен только результат - ГГ лежит.
2) когда срабатывает начало диалога, лежащий ГГ "вскакивает как ужаленный". А вот тут нужен процесс медленного подьема. Все-таки после нокаута.
Найти как реализуется "побитие ГГ", но не до смерти (помните, падает, полежит немного, потом медленно поднимается) мне не удалось. Может кто подскажет?
И еще один, на этот раз теоретический, вопрос:
3) Что такое CutScene и с чем ее едят?
|
|
|
10.05.2006, 11:01
|
#1380
|
|
Re: Скриптинг в Готике
2kraw:
А вот тут нужен процесс медленного подьема.
|
Я уже не помню, но по моему так: func void TraTaTa () { var C_Npc her; her = Hlp_GetNpc (PC_Hero); // ссылка на героя AI_StopPointAt (her); AI_PlayAni (her, "T_STAND_2_SLEEPGROUND");// ложится на землю };
Перед тем как начнется диалог с Диего( например в Condition, перед тем как функция вернет значение) попробуй написать AI_PlayAni (hero, "T_SLEEPGROUND_2_STAND"); // встает с земли
Тут бы пригодилась функция телепортирования. Нормально отрабатывает. Но после этого Диего начинает глючить (хотя казалось бы, ему-то чего глючить?). Мало того, что он запутывается в двух вэйпойнтов (с одного на другой, соседний, проходит попытки эдак с пятой), но еще не хочет стартовать диалог.
|
О, я помню намучился с этим багом прошлым летом... В общем когда диалог не завершен, а непись телепортирован, визуально диалог завершается, но флаг диалога не снят. Получается, что ГГ находится в состоянии диалога, поэтому с ним никто не разговаривает и вообще не реагирует на него. Попробуй побегать среди монстров с таким багом - никто внимания не обратит. У меня по крайней мере так было. Так что перед телепоротом лучше закончить диалог. Удачи! ;)
|
|
|
11.05.2006, 18:52
|
#1382
|
|
|
|
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
|
|
|
|
Re: Скриптинг в Готике
2kraw:
Еще вопрос: где можно увидеть названия анимационных сцен (может там найдется "упасть как подкошенный")? Простым контекстным поиском ничего найти не удалось.
|
Посмотри здесь. http://wiki.worldofgothic.de/ Сам быстро просмотрел, не нашел. Но вроде когда то я видел такую страничку с анимациями и описанием, и она была на немецком.
|
|
|
14.06.2006, 14:08
|
#1384
|
|
|
|
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
|
|
|
|
Re: М: Скриптинг в Готике
2Гораций Пинаптитькис: Я думаю, что если это НЕ невозможно, то будет очень трудно реализуемо. Ибо у нас нет постоянных глобальных функций, в которых бы можно было делать проверки, и даже нет функций проверки на близость к персонажам, а только к WP. В общем мой ответ: навряд ли можно реализовать, но возможно я ошибаюсь?
|
|
|
14.06.2006, 16:48
|
#1385
|
|
|
|
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
|
|
|
|
Re: М: Скриптинг в Готике
2Killer-XXX:
Ибо у нас нет постоянных глобальных функций, в которых бы можно было делать проверки
|
Можно ввести такую функцию через триггер, который вызывает сам себя. Правда, это может сказаться на быстродействии :)
и даже нет функций проверки на близость к персонажам, а только к WP.
|
А вот это неправда, у каждого НПС есть поле wp, например hero.wp - место, где сейчас находится ГГ. Вот насчет того, как сделать саму подсветку - хз :)
|
|
|
14.06.2006, 17:52
|
#1386
|
|
|
|
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
|
|
|
|
Re: М: Скриптинг в Готике
2TycoooN: Про hero.wp понятно, а теперь расскажи через свойство wp кого ты будешь проверять орк это или нет, и расстояние до него?
|
|
|
14.06.2006, 19:21
|
#1387
|
|
Re: М: Скриптинг в Готике
>Ибо у нас нет постоянных глобальных функций, в которых бы можно было делать проверки
есть способ, в Страннике. я повесил жука-шпиона. он ни на кого не реагирует, бессмертен, невидим. его поведение следующее, если он дальше ГГ на N см, он телепортирует сам себя на ближайший к ГГ Wp. в цикле его состояния я прописал все проверки, что мне нужны, к примеру появление на морде ГГ синяков, если его побьют. или периодическое убавление жизни у ГГ, если он заболел гриппом и т.д. для перстраховки, в функциях реакции NPC на ГГ я поставил проверку на смерть или слишком дальнее расстояние жука от ГГ. ежели жук все-же сдох или далеко, его вновь вставлют около ГГ на ближайший WP
|
|
|
15.06.2006, 22:56
|
#1388
|
|
Re: М: Скриптинг в Готике
2_Странник_:
есть способ, в Страннике. я повесил жука-шпиона. он ни на кого не реагирует, бессмертен, невидим. его поведение следующее, если он дальше ГГ на N см, он телепортирует сам себя на ближайший к ГГ Wp.
|
Ну, вообще-то первыми до этого додумались создатели мода Mana Reload. =) В принципе, при помощи этого способа можно реализовать "подсветку" меча, имхо. Жаль сейчас нету времени поэксперементировать... Может, на выходных попробую! ;)
|
|
|
16.06.2006, 05:22
|
#1389
|
|
Re: М: Скриптинг в Готике
Sorry за ламерский вопрос, но как к NPc приделать шкуру зомби, вместо обычной текстуры тела?
Я делал так: замнял B_SetNpcVisual(self,MALE,"Hum_Head_Pony",Face_N_Zo mbieMud,BodyTex_N,ITAR_Prisoner); на Mdl_SetVisualBody(self,"Zom_Body",3,1,"Hum_Head_Po ny",Face_N_ZombieMud,1,NO_ARMOR);
Но в итоге у этого NPc не работает часть диалогов (я писал об этом раньше)...
|
|
|
16.06.2006, 13:07
|
#1391
|
|
|
|
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
|
|
|
|
Re: М: Скриптинг в Готике
Хм, подумал насчет проверки расстояния с орками. Родилась идея, проверку вешать не через ГГ, а через орков, т.е. в каждого орка, каким нибудь образом вписывать проверку через self.wp и hero.wp, по идее должно получиться, только теперь вопрос, в какую функцию это все вешать :)
П.С. Можно вопользоваться идей TycoooN'a: дописать во все состояния орков функцию, а в нее уже проверку тулить.
|
|
|
17.06.2006, 04:09
|
#1393
|
|
Re: М: Скриптинг в Готике
Sorry за ламерский вопрос, но как к NPc приделать шкуру зомби, вместо обычной текстуры тела?
Я делал так: замнял B_SetNpcVisual(self,MALE,"Hum_Head_Pony",Face_N_Zo mbieMud,BodyTex_N,ITAR_Prisoner); на Mdl_SetVisualBody(self,"Zom_Body",3,1,"Hum_Head_Po ny",Face_N_ZombieMud,1,NO_ARMOR);
Но в итоге у этого NPc не работает часть диалогов (я писал об этом раньше)...
|
К нему добавлю ещё один тупой вопрос: Wld_PlayEffect("SLOW_TIME",self,self,0,0,0,FALSE); Как этот эффект сделать постоянным?
|
|
|
17.06.2006, 12:23
|
#1394
|
|
|
|
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
|
|
|
|
Re: М: Скриптинг в Готике
2Белиар: А он разве у тебя сейчас отключается? По идее при вызове в такой функции он у тебя постоянный.
П.С. И зачем тебе делать Готика 2: Похождение Укурка? :D
|
|
|
18.06.2006, 04:03
|
#1396
|
|
Re: М: Скриптинг в Готике
А он разве у тебя сейчас отключается? По идее при вызове в такой функции он у тебя постоянный.
П.С. И зачем тебе делать Готика 2: Похождение Укурка?
|
Этоту строку я выдрал из эффекта при съедании болотника, не может он быть постоянным... А надо это, чтобы ввести в игру болезни и потом лечиться от них, например лихорадку...
|
|
|
21.06.2006, 02:12
|
#1397
|
|
Re: М: Скриптинг в Готике
Есть ли команда, чтобы во время диалога с НПс, тот переместил ГГ в др. локацию? также ответьте пожалуйста на предыдущие вопросы:
Sorry за ламерский вопрос, но как к NPc приделать шкуру зомби, вместо обычной текстуры тела?
Я делал так: замнял B_SetNpcVisual(self,MALE,"Hum_Head_Pony",Face_N_Zo mbieMud,BodyTex_N,ITAR_Prisoner); на Mdl_SetVisualBody(self,"Zom_Body",3,1,"Hum_Head_Po ny",Face_N_ZombieMud,1,NO_ARMOR);
Но в итоге у этого NPc не работает часть диалогов (я писал об этом раньше)...
К нему добавлю ещё один тупой вопрос: Wld_PlayEffect("SLOW_TIME",self,self,0,0,0,FALSE); Как этот эффект сделать постоянным?
|
|
|
|
21.06.2006, 14:13
|
#1398
|
|
|
|
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
|
|
|
|
Re: М: Скриптинг в Готике
2Белиар:
Есть ли команда, чтобы во время диалога с НПс, тот переместил ГГ в др. локацию?
|
Код:
// телепортирует НПС npc в новую локацию waypoint.func void AI_Teleport(C_NPC npc, string waypoint);
Добавление от 06/21/06, в 13:33:29
З.Ы. Если имелся в виду другой "мир", то тут нужно использовать триггер. Как именно - это уже к знатокам Спейсера :)
|
|
|
21.06.2006, 20:19
|
#1399
|
|
Re: М: Скриптинг в Готике
Цитата:
Сообщение от Белиар link=board=gothic&t=1105030050&start=1375#1396 date=06/21/06, в 01:12:48
Есть ли команда, чтобы во время диалога с НПс, тот переместил ГГ в др. локацию?
|
Создаешь триггер ChangeLevel, а в диалоге используй функцию Wld_SendTrigger("YOUR_TRIGGER");//- активировать функцию VOB объекта с именем name.
|
|
|
22.06.2006, 02:40
|
#1400
|
|
Re: М: Скриптинг в Готике
Создаешь триггер ChangeLevel, а в диалоге используй функцию Wld_SendTrigger("YOUR_TRIGGER");//- активировать функцию VOB объекта с именем name.
|
Это я знаю, но если изменять файл NewWorld.zen (~70мб), мод будет весить очень много :'( Добавление от 06/22/06, в 02:00:22
// телепортирует НПС npc в новую локацию waypoint. func void AI_Teleport(C_NPC npc, string waypoint);
|
А есть ли в интернете список этих функций и команд, чтобы каждый раз не спрашивать и не искать по скриптам, как например я искал команду присвоения гильдии... ::)
|
|
|
Здесь присутствуют: 3 (пользователей: 0 , гостей: 3)
|
|
Опции темы |
Поиск в этой теме |
|
|
Ваши права в разделе
|
|
|
|
Текущее время: 15:32. Часовой пояс GMT +4.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|