|
|
26.05.2011, 19:19
|
#2442
|
|
Re: М: Скриптинг в Готике
Цитата:
Сообщение от JohaNBlack link=board=gothic&t=1105030050&goto=6312988 date=05/26/11, в 17:25:04
2KnightDron: Тут все правильно. Чем ты компилировал? И мод создавал через GothicVDFS?
|
Нет создание и редактирование мода делалось в GothicSourcer V3.14. Компиляция делалась в нем же. После компиляции автоматически заменил в папке с игрой Gothic.dat и Ou.bin. GothicVDFS при создании мода не использовал
|
|
|
15.07.2011, 23:17
|
#2445
|
|
Re: М: Скриптинг в Готике
2SkaIneT666: Посмотри в спайсере свойства текстур воды, мб у тебя материал изменился.
Cпойлер(щелкните, чтобы прочесть):
ЗЫ: Скорее всего это один из вариантов, тк других я не знаю ЗЫ2: Открывать спайсером надо модель мира ( Open Mesh )
|
|
|
16.08.2011, 17:38
|
#2447
|
|
Re: М: Скриптинг в Готике
2ElderGamer:
Вот тут пацан писал про это и выложил исправленные версии саундпатчей, где это дело изменил как надо.
|
|
|
16.08.2011, 22:57
|
#2448
|
|
|
|
|
A.G.F.C.
Регистрация: 18.02.2008
Сообщений: 0
|
|
|
|
|
|
Re: М: Скриптинг в Готике
Дело в том, что я уже внёс в скрипты пакета GOTHIC.DAT кучу правок из твоих запасов. Жалко всё это просто взять и выбросить. *;D Я пытаюсь сравнивать то, что у меня есть со скриптами от снежковской версии, в которой эти надписи отображаются правильно. Даже побовал всю папку _INTERN со скриптами функций перенести к себе. Кое-что изменилось, но не помогло окончательно. Такое впечатление, что не срабатывает условие
If (dIsPlayer)
и выводится сообщение для непися, а не для героя. Можно, конечно, перетасовать части этого сообщения так, чтобы для непися выводилось такое же сообщение, как для героя, но это неправильно. Может, кто подскажет, в каком месте копнуть поглубже. :)
Добавление от 08/16/11, в 22:17:56 Да, и ещё до кучи вопросец. Можно ли скриптами подправить непереведённую фразу "ENDE" в пустом боксе диалога с орками? Если можно, то в каком скрипте?
|
|
|
17.08.2011, 00:48
|
#2449
|
|
Re: М: Скриптинг в Готике
2ElderGamer:
Да, и ещё до кучи вопросец. Можно ли скриптами подправить непереведённую фразу "ENDE" в пустом боксе диалога с орками? Если можно, то в каком скрипте?
|
ENDE выдает движок, когда у НПЦ отсутствует заскриптованый файл диалога "Закончить". Каждому НПЦ с ENDE нужно прописать диалог "Закончить", сделать этом можно по подобию любого другого НПЦ, у которого отображается этот диалог.
|
|
|
19.08.2011, 11:55
|
#2450
|
|
|
|
|
A.G.F.C.
Регистрация: 18.02.2008
Сообщений: 0
|
|
|
|
|
|
Re: М: Скриптинг в Готике
2Мухомор:
Каждому НПЦ с ENDE нужно прописать диалог "Закончить"
|
Если можно, чутка по-подробнее. Значит ли это, что ВСЕХ орков нужно создать, как NPC, задав каждому из них уникальный ID и вставив их в мир с этим ID? Добавление от 08/18/11, в 21:44:13
Ещё вопрос. Наёмник Орик из Нового Лагеря имеет в окне диалога две строки "ЗАКОНЧИТЬ". Насколько я понял, происходит это потому, что Орик числится амбиентным неписем и ему назначен амбиентный скрипт диалога B_AssignAmbientInfos_Sld_8.d. Но кроме этого, для Орика создан скрипт в папке квестов DIA_Sld_701_Orik.d. Как исправить подобную ситуацию? Может быть, перевести Орика в разряд главных персонажей и перетащить диалоги из амбиентного скрипта в скрипт миссии? Добавление от 08/19/11, в 11:15:17
Проблема решилась простой очисткой скрипта DIA_Sld_701_Orik.d. Движок, оказывается, нормально проглатывает пустые скрипты. :)
|
|
|
20.08.2011, 23:41
|
#2454
|
|
|
|
|
A.G.F.C.
Регистрация: 18.02.2008
Сообщений: 0
|
|
|
|
|
|
Re: М: Скриптинг в Готике
2Fritz: Ага, выяснил его ID, исправлю.
Вопрос к знатокам. Можно ли в Г1 с помощью какой-либо функции контролировать окончание анимации обследования сундука? В некоторых случаях, например, во время поиска юнитора в разрушенном монастыре, условие инстанса срабатывает, когда нужный предмет попадает в инвентарь ГГ, не дожидаясь, когда он, ГГ, встанет.
Добавление от 08/20/11, в 23:01:16 И ещё вопрос. В квесте по поиску юнитора под кругом камней в компании Мильтена предусмотрена возможность нецелевого расходования свитка "Смерть нежити". Квест стопорится до той поры, пока в инвентаре ГГ не появится свиток или руна "Смерть нежити". Причём, в случае с руной не важно, может ли ГГ её использовать. Существует ли способ достать эти свиток или руну в третьей главе? Я пробежался по торговцам и в продаже такого товара вроде бы не нашёл. Может, в сундуках или инвентаре неписей поискать?*Или нужно добавлять свиток правкой скриптов? 8-)
|
|
|
21.08.2011, 01:25
|
#2455
|
|
Re: М: Скриптинг в Готике
2ElderGamer:
Вопрос к знатокам. Можно ли в Г1 с помощью какой-либо функции контролировать окончание анимации обследования сундука? В некоторых случаях, например, во время поиска юнитора в разрушенном монастыре, условие инстанса срабатывает, когда нужный предмет попадает в инвентарь ГГ, не дожидаясь, когда он, ГГ, встанет.
|
Можно поставить в условие диалога Горна if(!C_BodyStateContains(hero,BS_MOBINTERACT_INTERR UPT))
|
|
|
26.08.2011, 00:10
|
#2459
|
|
|
|
|
A.G.F.C.
Регистрация: 18.02.2008
Сообщений: 0
|
|
|
|
|
|
Re: М: Скриптинг в Готике
Кор Галом в храме Спящего не отрабатывает содержание скрипта:
Cпойлер(щелкните, чтобы прочесть):
instance GUR_1212_MadCorKalom_Talk2SC(C_Info) { * * *npc = GUR_1212_MadCorKalom; * * *condition = GUR_1212_MadCorKalom_Talk2SC_Condition; * * *information = GUR_1212_MadCorKalom_Talk2SC_Info; * * *important = 1; * * *permanent = 0; };
func int GUR_1212_MadCorKalom_Talk2SC_Condition() { * *return TRUE; };
func void GUR_1212_MadCorKalom_Talk2SC_Info() { * * *AI_SetWalkMode(self,NPC_WALK); * * *AI_GotoNpc(self,hero); * * * * * *AI_Output(self,hero,"GUR_1212_MadCorKalom_Talk2SC _10_01"); * * *//Наконец-то мы снова встретились! * * *AI_Output(self,hero,"GUR_1212_MadCorKalom_Talk2SC _10_02"); * * *//Мой господин сообщил мне о твоем прибытии! * * *AI_Output(self,hero,"GUR_1212_MadCorKalom_Talk2SC _10_03"); * * *//Он чувствует, что ты рядом. * * *AI_Output(hero,self,"GUR_1212_MadCorKalom_Talk2SC _15_04"); * * *//Скоро я буду ближе к нему, ближе, чем ему хотелось бы! * * *AI_Output(self,hero,"GUR_1212_MadCorKalom_Talk2SC _10_05"); * * *//Мы не позволим тебе расстроить наши планы. * * *AI_Output(self,hero,"GUR_1212_MadCorKalom_Talk2SC _10_06"); * * *//Мир вот-вот станет свидетелем пробуждения Избавителя, и никто не в силах остановить его. * * *AI_Output(self,hero,"GUR_1212_MadCorKalom_Talk2SC _10_07"); * * *//Всех неверных ждет расплата за их грехи. * * *AI_Output(self,hero,"GUR_1212_MadCorKalom_Talk2SC _10_08"); * * *//И тебе уготована честь стать первым из них. * * *AI_Output(self,hero,"GUR_1212_MadCorKalom_Talk2SC _10_09"); * * *//ППРРРОООООООООООБББУУУУУУДДИСЬ, СССППППППЯЯЯЯЯЯЯЯЯЯЯЩЩЩИИИИИИЙЙЙЙ!!!!!!!!! * * *AI_StopProcessInfos(self); * * *Npc_SetAttitude(self,ATT_HOSTILE); * * *Npc_SetTempAttitude(self,ATT_HOSTILE); * * *AI_Wait(self,2); * * *Npc_SetTarget(self,hero); * * *AI_StartState(self,ZS_Attack,0,""); };
Он должен подойти к ГГ, но этого не происходит. Диалог начинается при большом расстоянии между ГГ и Кор Галомом, вследствие чего голоса почти не слышны, а субтитры отсутствуют. Если ввести контроль расстояния, то можно добиться нормальной громкости голосов, но для появления субтитров нужно подойти к Кор Галому слишком близко. Можно ли заставить Кор Галома подходить к ГГ, как это и предусмотрено скриптом?
|
|
|
26.08.2011, 21:36
|
#2464
|
|
|
|
|
A.G.F.C.
Регистрация: 18.02.2008
Сообщений: 0
|
|
|
|
|
|
Re: М: Скриптинг в Готике
B_WhirlAround(self,hero); работает. Спасибо за подсказку! Но пришлось городить огород:
Cпойлер(щелкните, чтобы прочесть):
func void GUR_1212_MadCorKalom_Talk2SC_Info() { AI_SetWalkMode(self,NPC_WALK); /*AI_GotoNpc(self,hero);*/ AI_GotoWP(self,Npc_GetNearestWP(hero)); B_WhirlAround(self,hero); AI_GotoWP(hero,Npc_GetNearestWP(hero)); B_WhirlAround(hero,self); AI_Wait(hero,4); B_WhirlAround(hero,self); AI_Wait(hero,3); B_WhirlAround(hero,self); AI_Wait(hero,2); B_WhirlAround(hero,self); AI_Wait(hero,1); B_WhirlAround(hero,self); AI_Wait(hero,1); B_WhirlAround(hero,self); AI_Wait(hero,1); B_WhirlAround(hero,self); AI_Output(self,hero,"GUR_1212_MadCorKalom_Talk2SC _10_01"); //Наконец-то мы снова встретились! ...
Несколько функций B_WhirlAround(hero,self);, назначенных герою, заставляют его отслеживать перемещающегося Галома. Результат более-менее нормальный, хотя в отдельных случаях Галом может останавливаться очень близко от ГГ. И всё из-за того, что не работает функция AI_GotoNpc(self,hero); Странно, ведь она нормально работает у бессмертных шаманов в том же храме Спящего. :censored: 2Dimus:
А как насчёт функций AI_TurnToNPC(self,other); и C_LookAtNpc(self,other); ?
|
Можно попробовать. :) Ещё вопрос. Какие действия нужно предпринять для выведения стражей из шахты СЛ после уничтожения логова королевы ползунов? Ведь им там, по логике, больше нечего делать. С Гор На Драком и сопровождающим его стражем всё просто. Достаточно изменить им распорядок дня в нужный момент. Тем более, что такой вариант уже предусмотрен в скриптах на более позднем этапе (в 4 главе). А как быть со стражами СШ?
|
|
|
26.08.2011, 23:35
|
#2465
|
|
Re: М: Скриптинг в Готике
2ElderGamer:
после уничтожения логова королевы ползунов? Ведь им там, по логике, больше нечего делать. С Гор На Драком и сопровождающим его стражем всё просто. Достаточно изменить им распорядок дня в нужный момент. Тем более, что такой вариант уже предусмотрен в скриптах на более позднем этапе (в 4 главе). А как быть со стражами СШ?
|
А надо это? Вполне можно допустить, что небольшая часть ползунов осталась, а стражи ждут, дабы рвать им челюсти, к тому же скоро обвал. ИМХО в шахте надо только доработать блокировку решётки намертво. И дорогу, упирающуюся в скалу не мешало бы убрать (это дорога из ролика в начале игры, где тащат руду из долины).
С Гор На Драком и сопровождающим его стражем всё просто.
|
А они даже после обвала странствуют к СШ?
|
|
|
27.08.2011, 17:35
|
#2466
|
|
|
|
|
A.G.F.C.
Регистрация: 18.02.2008
Сообщений: 0
|
|
|
|
|
|
Re: М: Скриптинг в Готике
2Fritz:
Ну, я рассуждаю так. Стражи в шахте СЛ добывали слюну ползунов для Кор Галома. Кор Галому слюна нужна была для изготовления особых напитков маны. Особые напитки маны нужны были для проведения Великой Церемонии вызова Спящего. Если даже предположить, что в Старой Шахте остались ещё ползуны, то после Церемонии (конец 2 главы) их "запчасти" уже не нужны Кор Галому, а стражам нечего делать в СШ.
А они даже после обвала странствуют к СШ?
|
Нет, их распорядок дня меняется при переходе из третьей в четвёртую главу. Но всю третью главу, даже когда Галом уже сваливает из Братства, они продолжают навещать СШ.
|
|
|
27.08.2011, 19:30
|
#2467
|
|
Re: М: Скриптинг в Готике
2ElderGamer:
Челюсти. Слюну уже Галом из них мутил. А договорённость между СЛ и БЛ по нахождению стражей в СШ вроде как и не расторгнута. Но так то ты правильно рассуждаешь, по логике то.
из третьей в четвёртую главу.
|
Так просто сделать смену распорядка не после 3-й, а после 2-й главы. А где они находятся после смены расписания? Если где то в одном месте торчат, то и стражей из СШ к ним в компанию можно присоединить. Только диалоги же придётся менять?
|
|
|
27.08.2011, 23:14
|
#2468
|
|
|
|
|
A.G.F.C.
Регистрация: 18.02.2008
Сообщений: 0
|
|
|
|
|
|
Re: М: Скриптинг в Готике
2Fritz:
Так просто сделать смену распорядка не после 3-й, а после 2-й главы. А где они находятся после смены расписания?
|
Уже сделано. После смены расписания они просто стоят и болтают целыми сутками у лаборатории Галома. Болтают - в смысле, обмениваются дежурными фразами из стандартного набора.
Если где то в одном месте торчат, то и стражей из СШ к ним в компанию можно присоединить. Только диалоги же придётся менять?
|
Судя по тому, что в игре существуют два Галома, два Горна и два Ксардаса, просто так вывести стражей из шахты не выйдет. Видимо, нужно создавать их двойников с уникальными ID и вставлять их в мир в определённый момент времени, вырезав оригиналы из локации "Старая шахта". А вот как это правильно сделать, я пока не знаю. Кстати, достаточно "вывести" только троих именных стражей, безымянные всё-равно все на одно лицо. :)
|
|
|
28.08.2011, 18:06
|
#2470
|
|
|
|
|
A.G.F.C.
Регистрация: 18.02.2008
Сообщений: 0
|
|
|
|
|
|
Re: М: Скриптинг в Готике
2MaGoth:
Правда, сам вей еще глянь как он пишется в Г1
|
А где это можно глянуть? В скрипте Галома есть распорядок: func void Rtn_Flee_1201() { * * *TA_Stay(0,0,12,0,""); * * *TA_Stay(12,0,24,0,""); }; Это оно? Я правда не нашёл, как Галом удаляется из мира, в каком скрипте и в каком месте.
я по Г2 ориентируюсь и возможно будут отличия
|
А как это сделано в Г2? Там ведь куча неписей путешествует между локациями. Там тоже набор двойников, или это один и тот-же непись переводится из локации в локацию?
|
|
|
28.08.2011, 22:32
|
#2471
|
|
Re: М: Скриптинг в Готике
2MaGoth:Дело в том, что в отличие от G2 в G1 ещё нет моргов (вейпоинт "ТОТ") и для удаления непися из игры используется отсылка на несуществующий вейпойнт (например, "" у Кор Калома или "NOWHERE" у группы InExtremo). Впрочем, отсылка непися на "TOT" сделает то же самое дело. 2ElderGamer:
Я правда не нашёл, как Галом удаляется из мира, в каком скрипте и в каком месте.
|
Кор Калом удаляется в скрипте Story\CHAPTERS\B_Story_GotoOrcGraveyard.d:
Код:
* * *Kalom = Hlp_GetNpc(GUR_1201_CorKalom); * * *Npc_ExchangeRoutine(Kalom,"FLEE");
Там тоже набор двойников, или это один и тот-же непись переводится из локации в локацию?
|
В G2 используется набор двойников с разными инстанциями. То же самое было и в G1, например: - Горн в основном мире (PC_Fighter) и в Свободной Шахте (PC_FighterFM); - Ксардас у себя в башне (KDF_404_Xardas) и в храме Спящего (KDF_406_OTXardas); - Кор Калом в Болотном лагере (GUR_1201_CorKalom) и в храме Спящего (GUR_1212_MadCorKalom).
|
|
|
28.08.2011, 23:11
|
#2472
|
|
|
|
|
A.G.F.C.
Регистрация: 18.02.2008
Сообщений: 0
|
|
|
|
|
|
Re: М: Скриптинг в Готике
2Dimus:
Кор Калом удаляется в скрипте Story\CHAPTERS\B_Story_GotoOrcGraveyard.d:
|
Ага, спасибо! А вставляются неписи, как следует из этого же скрипта, в любой момент времени командой (например) Wld_InsertNpc(Tpl_1463_Templer,"OW_PATH_198_ORCGRA VEYARD8"); Так?
|
|
|
29.08.2011, 12:39
|
#2473
|
|
Re: М: Скриптинг в Готике
2ElderGamer:В принципе, да. Вот часть наработок по правке ошибок:
Cпойлер(щелкните, чтобы прочесть):
1. Можно нормально торговать с Силасом (раньше торговля срабатывала только один раз). Исправления в скрипте Story\MISSIONS\DIA_ORG_841_Silas.d: instance DIA_Silas_Trade(C_Info) { * * *npc = ORG_841_Silas; * * *nr = 1; * * *condition = DIA_Silas_Trade_Condition; * * *information = DIA_Silas_Trade_Info; * * *permanent = 1; * * *description = "Я хочу пить."; * * *trade = 1; };
2. Восстановлен голос у одного из скребков в Лощине (до этого у него был голос 02). Исправлен скрипт Story\B\Info_SFB_5_Pre.d: func void Info_SFB_5_Pre_Info() { * * *AI_Output(self,other,"Info_SFB_5_EinerVonEuchWerd en_05_00"); * * *//Привет! };
func void Info_SFB_5_EinerVonEuchWerden_Info() { * * *AI_Output(other,self,"Info_SFB_5_EinerVonEuchWerd en_15_00"); * * *//Что если я хочу присоединиться к вам? * * *AI_Output(self,other,"Info_SFB_5_EinerVonEuchWerd en_05_01"); * * *//Присоединиться к нам? И кем ты хочешь быть - водоносом? * * *AI_Output(other,self,"Info_SFB_5_EinerVonEuchWerd en_15_02"); * * *//Нет, рудокопом. * * *AI_Output(self,other,"Info_SFB_5_EinerVonEuchWerd en_05_03"); * * *//Послушай, что я скажу тебе: никто ДОБРОВОЛЬНО не становится рудокопом. * * *AI_Output(self,other,"Info_SFB_5_EinerVonEuchWerd en_05_04"); * * *//Конечно, если ты настаиваешь... Иди и поговори со Суини - уверен, у него найдется для тебя старая кирка. };
func void Info_SFB_5_WichtigePersonen_Info() { * * *AI_Output(other,self,"Info_SFB_5_WichtigePersonen _15_00"); * * *//Кого здесь можно считать важным человеком? * * *AI_Output(self,other,"Info_SFB_5_WichtigePersonen _05_01"); * * *//Важным? Меня, конечно. * * *AI_Output(self,other,"Info_SFB_5_WichtigePersonen _05_02"); * * *//Я думаю, ты хотел спросить, кто здесь главный. * * *AI_Output(self,other,"Info_SFB_5_WichtigePersonen _05_03"); * * *//Я думаю, тебе стоит поговорить с наемниками или с ворами. Магов Воды ты даже не увидишь. * * *AI_Output(self,other,"Info_SFB_5_WichtigePersonen _05_04"); * * *//Суини - большая задница, но считает себя большой шишкой. На самом деле он просто раскладывает кирки и делает то, что ему прикажет Окил. };
func void Info_SFB_5_DasLager_Info() { * * *AI_Output(other,self,"Info_SFB_5_DasLager_15_00") ; * * *//Что хорошего в этом Лагере? * * *AI_Output(self,other,"Info_SFB_5_DasLager_05_01") ; * * *//Это зависит от человека. Одним не достанется ничего, кроме работы, другие получат чертову уйму удовольствия. };
func void Info_SFB_5_DieLage_Info() { * * *AI_Output(other,self,"Info_SFB_5_DieLage_15_00"); * * *//Как здесь живется? * * *AI_Output(self,other,"Info_SFB_5_DieLage_05_01"); * * *//Отлично! * * *AI_Output(self,other,"Info_SFB_5_DieLage_05_02"); * * *//Именно потому, что нам так нравится здесь, мы изо всех сил пытаемся отсюда выбраться. * * *AI_Output(self,other,"Info_SFB_5_DieLage_05_03"); * * *//Как, ты думаешь, называется это место? Это тюрьма, а в тюрьме жить никому не нравится. };
3. Пришедшие вместе с идолом Люкором на орочье кладбище стражи убиваются в скриптах игры (раньше это делали орки). Для этого был изменён скрипт Story\Startup.d: func void startup_orcgraveyard() { * * *Wld_InsertNpc(OrcScoutGYD,"GRYD_006"); * * *Wld_InsertNpc(OrcScoutGYD,"GRYD_015"); * * *Wld_InsertNpc(TPL_1445_Templer,"GRYD_016"); * * *Wld_InsertNpc(OrcScoutGYD,"GRYD_019B"); * * *Wld_InsertNpc(OrcScoutGYD,"GRYD_019D"); * * *Wld_InsertNpc(OrcScoutGYD,"GRYD_020B"); * * *Wld_InsertNpc(TPL_1446_Templer,"GRYD_020"); * * *Wld_InsertNpc(GUR_1211_BaalLukor,"GRYD_025"); * * *Wld_InsertNpc(TPL_1443_Templer,"GRYD_025"); * * *Wld_InsertNpc(TPL_1444_Templer,"GRYD_025"); * * *Wld_InsertNpc(OrcScoutGYD,"GRYD_048"); * * *Wld_InsertNpc(OrcScoutGYD,"GRYD_048"); * * *Wld_InsertNpc(OrcScoutGYD,"GRYD_043"); * * *Wld_InsertNpc(OrcScoutGYD,"GRYD_031"); * * *Wld_InsertNpc(OrcScoutGYD,"GRYD_032"); * * *Wld_InsertNpc(OrcScoutGYD,"GRYD_037"); * * *Wld_InsertNpc(OrcScoutGYD,"GRYD_040"); * * *Wld_InsertNpc(OrcScoutGYD,"GRYD_047"); * * *Wld_InsertNpc(OrcScoutGYD,"GRYD_047"); * * *Wld_InsertNpc(OrcScoutGYD,"GRYD_061"); * * *Wld_InsertNpc(OrcScoutGYD,"GRYD_062"); * * *Wld_InsertNpc(OrcScoutGYD,"GRYD_058"); * * *Wld_InsertNpc(OrcScoutGYD,"GRYD_068"); * * *Wld_InsertNpc(OrcWarrior2,"GRYD_055"); * * *B_KillNPC(TPL_1443_Templer); * * *B_KillNPC(TPL_1444_Templer); * * *B_KillNPC(TPL_1445_Templer); * * *B_KillNPC(TPL_1446_Templer); };
4. Вставлены в мир шантажист и его помощник (взято из Golden Mod, требуется начать новую игру). Изменен скрипт Story\Startup.d: func void Startup_Sub_Surface() { <...> * * *Wld_InsertNpc(Org_874_Raeuber,"LOCATION_11_08"); * * *Wld_InsertNpc(ORG_888_Erpresser,"WP_BANDIT_ERPRES SER"); * * *Wld_InsertNpc(ORG_889_CoErpresser,"WP_BANDIT_COER PRESSER"); * * *Wld_InsertNpc(Non_1500_Gilbert,"LOCATION_01_07"); <...> };
А также скрипты Story\NPC\ORG_888_Erpresser.d: instance ORG_888_Erpresser(Npc_Default) { * * *name[0] = "Шантажист"; * * *npcType = npctype_main; * * *guild = GIL_ORG; * * *level = 15; * * *voice = 13; * * *id = 888; * * *attribute[ATR_STRENGTH] = 86; * * *attribute[ATR_DEXTERITY] = 60; * * *attribute[ATR_MANA_MAX] = 0; * * *attribute[ATR_MANA] = 0; * * *attribute[ATR_HITPOINTS_MAX] = 270; * * *attribute[ATR_HITPOINTS] = 270; * * *Mdl_SetVisual(self,"HUMANS.MDS"); * * *Mdl_ApplyOverlayMds(self,"Humans_Relaxed.mds"); * * *Mdl_SetVisualBody(self,"hum_body_Naked0",0,1,"Hum _Head_Fatbald",35,2,org_armor_h); * * *B_Scale(self); * * *Mdl_SetModelFatness(self,0); * * *fight_tactic = FAI_HUMAN_MASTER; * * *Npc_SetTalentSkill(self,NPC_TALENT_BOW,1); * * *Npc_SetTalentSkill(self,NPC_TALENT_1H,2); * * *CreateInvItems(self,ItKeLockpick,3); * * *CreateInvItems(self,ItMiNugget,20); * * *CreateInvItems(self,ItFoRice,8); * * *CreateInvItems(self,ItFoBooze,3); * * *CreateInvItems(self,ItLsTorch,2); * * *CreateInvItems(self,ItFo_Potion_Health_01,3); * * *CreateInvItem(self,ItMi_Stuff_Plate_01); * * *CreateInvItem(self,ItMi_Stuff_Cup_01); * * *CreateInvItem(self,ItFoMutton); * * *CreateInvItem(self,ItFoLoaf); * * *CreateInvItem(self,ItAt_Claws_01); * * *EquipItem(self,ItMw_1H_Mace_War_02); * * *EquipItem(self,ItRw_Bow_Long_01); * * *CreateInvItems(self,ItAmArrow,20); * * *start_aistate = ZS_Erpresser; * * *daily_routine = rtn_start_888; };
func void rtn_start_888() { * * *TA_StandAround(13,0,14,0,"WP_BANDIT_ERPRESSER"); * * *TA_StandAround(14,0,13,0,"WP_BANDIT_ERPRESSER"); };
func void rtn_qd_888() { * * *TA_StandAround(13,0,14,0,"WP_BANDIT_1_D"); * * *TA_StandAround(14,0,13,0,"WP_BANDIT_1_D"); };
и Story\NPC\ORG_889_CoErpresser.d: instance ORG_889_CoErpresser(Npc_Default) { * * *name[0] = "Помощник шантажиста"; * * *npcType = npctype_ambient; * * *guild = GIL_ORG; * * *level = 11; * * *voice = 7; * * *id = 889; * * *attribute[ATR_STRENGTH] = 60; * * *attribute[ATR_DEXTERITY] = 30; * * *attribute[ATR_MANA_MAX] = 0; * * *attribute[ATR_MANA] = 0; * * *attribute[ATR_HITPOINTS_MAX] = 227; * * *attribute[ATR_HITPOINTS] = 227; * * *Mdl_SetVisual(self,"HUMANS.MDS"); * * *Mdl_ApplyOverlayMds(self,"Humans_Relaxed.mds"); * * *Mdl_SetVisualBody(self,"hum_body_Naked0",0,2,"Hum _Head_Pony",8,1,org_armor_m); * * *B_Scale(self); * * *Mdl_SetModelFatness(self,0); * * *fight_tactic = FAI_HUMAN_Strong; * * *Npc_SetTalentSkill(self,NPC_TALENT_BOW,2); * * *Npc_SetTalentSkill(self,NPC_TALENT_2H,1); * * *Npc_SetTalentSkill(self,NPC_TALENT_1H,1); * * *CreateInvItems(self,ItKeLockpick,1); * * *CreateInvItems(self,ItMiNugget,12); * * *CreateInvItems(self,ItFoRice,7); * * *CreateInvItems(self,ItFoBooze,5); * * *CreateInvItems(self,ItLsTorch,1); * * *CreateInvItems(self,ItFo_Potion_Health_01,2); * * *CreateInvItem(self,ItMi_Stuff_Barbknife_01); * * *CreateInvItem(self,ItFoLoaf); * * *CreateInvItem(self,ItAt_Teeth_01); * * *EquipItem(self,ItMw_1H_Mace_War_01); * * *EquipItem(self,ItRw_Bow_Long_01); * * *CreateInvItems(self,ItAmArrow,20); * * *daily_routine = rtn_start_889; };
func void rtn_start_889() { * * *TA_StandAround(13,0,14,0,"WP_BANDIT_COERPRESSER") ; * * *TA_StandAround(14,0,13,0,"WP_BANDIT_COERPRESSER") ; };
func void rtn_qd_889() { * * *TA_StandAround(13,0,14,0,"WP_BANDIT_2_D"); * * *TA_StandAround(14,0,13,0,"WP_BANDIT_2_D"); };
ВСТАВКА НЕ РАБОТАЕТ, Т.К. В МИРЕ WORLD.ZEN ДЛЯ НИХ НЕТ СЛЕДУЮЩИХ WAYPOINTS: WP_BANDIT_ERPRESSER, WP_BANDIT_1_D, WP_BANDIT_COERPRESSER, WP_BANDIT_2_D. Проверить вэйпойнт, на котором они стоят в моде TLVH: OW_PATH_067?
5. Герой теперь платит шантажисту 10 кусков руды, а не 3 куска. Вдобавок в случае отказа платить помощник шантажиста тоже атакует героя (взято из Golden Mod). Исправлен скрипт Story\MISSIONS\DIA_ORG_888_Erpresser.d: func void Info_Erpresser_Choice_AufsMaul() { * * *var C_Npc coerpresser; * * *AI_Output(other,self,"Info_Erpresser_Choice_AufsM aul_15_01"); * * *//Ну, почему бы тебе не подойти сюда и не забрать свою руду? * * *AI_Output(self,other,"Info_Erpresser_Choice_AufsM aul_13_02"); * * *//Спасибо, парень. Выручил. * * *self.aivar[AIV_HAS_ERPRESSED] = 2; * * *Info_ClearChoices(Info_Erpresser); * * *AI_StopProcessInfos(self); * * *Npc_SetTarget(self,other); * * *coerpresser = Hlp_GetNpc(ORG_889_CoErpresser); * * *Npc_SetTarget(coerpresser,other); * * *AI_StartState(coerpresser,ZS_Attack,1,""); * * *AI_StartState(self,ZS_Attack,1,""); };
func void Info_Erpresser_Choice_Zahlen() { * * *var C_Npc coerpresser; * * *if(Npc_HasItems(other,ItMiNugget) >= 10) * * *{ * * * * * *AI_Output(other,self,"Info_Erpresser_Choice_Zahle n_15_01"); * * *//Вот, 10 кусков. * * * * * *AI_Output(self,other,"Info_Erpresser_Choice_Zahle n_13_02"); * * *//Вот досада. * * * * * *B_GiveInvItems(other,self,ItMiNugget,10); * * * * * *self.aivar[AIV_HAS_ERPRESSED] = 1; * * * * * *Info_ClearChoices(Info_Erpresser); * * * * * *AI_StopProcessInfos(self); * * *} * * *else * * *{ * * * * * *AI_Output(other,self,"Info_Erpresser_Choice_Zahle n_15_03"); * * *//У-мм... Кажется, у меня сейчас нет 10 кусков... * * * * * *AI_Output(self,other,"Info_Erpresser_Choice_Zahle n_13_04"); * * *//Какая жалость... * * * * * *self.aivar[AIV_HAS_ERPRESSED] = 2; * * * * * *Info_ClearChoices(Info_Erpresser); * * * * * *AI_StopProcessInfos(self); * * * * * *Npc_SetTarget(self,other); * * * * * *coerpresser = Hlp_GetNpc(ORG_889_CoErpresser); * * * * * *Npc_SetTarget(coerpresser,other); * * * * * *AI_StopProcessInfos(self); * * * * * *AI_StartState(coerpresser,ZS_Attack,1,""); * * * * * *AI_StartState(self,ZS_Attack,1,""); * * *}; };
6. Можно поговорить с помощником шантажиста (взято из Golden Mod, требуется начать новую игру). Добавлен скрипт Story\MISSIONS\DIA_ORG_889_CoErpresser.d: instance INFO_COERPRESSER_EXIT(C_Info) { * * *npc = ORG_889_CoErpresser; * * *nr = 999; * * *condition = info_coerpresser_exit_condition; * * *information = info_coerpresser_exit_info; * * *important = 1; * * *permanent = 1; };
func int info_coerpresser_exit_condition() { * * *if(Npc_IsInState(self,ZS_Talk)) * * *{ * * * * * *return 1; * * *}; };
func void info_coerpresser_exit_info() { * * *AI_Output(other,self,"Info_CoErpresser_Exit_Info_ 15_00"); * * *//Постой! * * *AI_Output(self,other,"Info_CoErpresser_Exit_Info_ 05_00"); * * *//Если ты заплатил, то можешь пройти. * * *AI_StopProcessInfos(self); };
7. Исправлен сброс силы после 100 в 0 при обучении у Горацио (взято из Golden Mod). Исправлен скрипт Story\MISSIONS\DIA_BAU_901_Horatio.d: func void DIA_Horatio_HelpSTR_LEARN_NOW() { * * *if(other.attribute[ATR_STRENGTH] <= (100 - 5)) * * *{ * * * * * *other.attribute[ATR_STRENGTH] = other.attribute[ATR_STRENGTH] + 5; * * * * * *PrintScreen("Сила +5",-1,-1,"FONT_OLD_20_WHITE.TGA",2); * * *} * * *else if(other.attribute[ATR_STRENGTH] < 100) * * *{ * * * * * *other.attribute[ATR_STRENGTH] = 100; * * * * * *PrintScreen("Сила: 100",-1,-1,"FONT_OLD_20_WHITE.TGA",2); * * *} * * *else * * *{ * * * * * *PrintScreen("Я уже слишком силен",-1,-1,"FONT_OLD_20_WHITE.TGA",2); * * *}; * * *AI_Output(self,other,"DIA_Horatio_HelpSTR_LEARN_N OW_09_00"); * * *//Если ты хочешь иметь сильный удар, ты должен знать, как это делается. Это первое, чему учат кузнеца. * * *AI_Output(self,other,"DIA_Horatio_HelpSTR_LEARN_N OW_09_01"); * * *//Учись вкладывать в удар всю руку, от плеча до запястья. * * *AI_Output(self,other,"DIA_Horatio_HelpSTR_LEARN_N OW_09_02"); * * *//Чем лучше у тебя это получается, тем сильнее удар. Я думаю, ты освоишь это довольно быстро. };
8. При повышении маны у мага Огня Торреза стали те же диалоги, что и у других магов и гуру. Исправлен скрипт Story\MISSIONS\DIA_KDF_405_Torrez.d: func void KDF_405_Torrez_MANA_Info() { * * *AI_Output(other,self,"KDF_405_Torrez_MANA_Info_15 _01"); * * *//Я хотел бы увеличить свою магическую силу. * * *AI_Output(self,other,"KDF_405_Torrez_MANA_Info_04 _02"); * * *//Я могу помочь тебе увеличить силу. Как использовать ее - твое дело. * * *Info_ClearChoices(KDF_405_Torrez_MANA); * * *Info_AddChoice(KDF_405_Torrez_MANA,DIALOG_BACK,KD F_405_Torrez_MANA_BACK); * * *Info_AddChoice(KDF_405_Torrez_MANA,B_BuildLearnSt ring(NAME_LearnMana_5,5 * LPCOST_ATTRIBUTE_MANA,0),KDF_405_Torrez_MANA_MAN_5 ); * * *Info_AddChoice(KDF_405_Torrez_MANA,B_BuildLearnSt ring(NAME_LearnMana_1,LPCOST_ATTRIBUTE_MANA,0),KDF _405_Torrez_MANA_MAN_1); };
func void KDF_405_Torrez_MANA_MAN_1() { * * *B_BuyAttributePoints(other,ATR_MANA_MAX,1); * * *Info_ClearChoices(KDF_405_Torrez_MANA); * * *Info_AddChoice(KDF_405_Torrez_MANA,DIALOG_BACK,KD F_405_Torrez_MANA_BACK); * * *Info_AddChoice(KDF_405_Torrez_MANA,B_BuildLearnSt ring(NAME_LearnMana_5,5 * LPCOST_ATTRIBUTE_MANA,0),KDF_405_Torrez_MANA_MAN_5 ); * * *Info_AddChoice(KDF_405_Torrez_MANA,B_BuildLearnSt ring(NAME_LearnMana_1,LPCOST_ATTRIBUTE_MANA,0),KDF _405_Torrez_MANA_MAN_1); };
func void KDF_405_Torrez_MANA_MAN_5() { * * *B_BuyAttributePoints(other,ATR_MANA_MAX,5); * * *Info_ClearChoices(KDF_405_Torrez_MANA); * * *Info_AddChoice(KDF_405_Torrez_MANA,DIALOG_BACK,KD F_405_Torrez_MANA_BACK); * * *Info_AddChoice(KDF_405_Torrez_MANA,B_BuildLearnSt ring(NAME_LearnMana_5,5 * LPCOST_ATTRIBUTE_MANA,0),KDF_405_Torrez_MANA_MAN_5 ); * * *Info_AddChoice(KDF_405_Torrez_MANA,B_BuildLearnSt ring(NAME_LearnMana_1,LPCOST_ATTRIBUTE_MANA,0),KDF _405_Torrez_MANA_MAN_1); };
8. Исправлены ошибки, приводящие к невозможности вступления в маги Огня (взято из Golden Mod). Это находится в скрипте Story\MISSIONS\DIA_KDF_402_Corristo.d: func int Info_Corristo_Intruder_Condition() { * * *if(Npc_IsInState(self,ZS_Talk) && !(Npc_KnowsInfo(hero,GRD_200_Thorus_WANNABEMAGE) || Npc_KnowsInfo(hero,DIA_Milten_GotoCorristo) || (CorKalom_BringMCQBalls == LOG_SUCCESS))) * * *{ * * * * * *return 1; * * *}; };
func int KDF_402_Corristo_WANNBEKDF_Condition() { * * *if(((CorKalom_BringMCQBalls == LOG_SUCCESS) || Npc_KnowsInfo(hero,DIA_Milten_GotoCorristo) || Npc_KnowsInfo(hero,GRD_200_Thorus_WANNABEMAGE)) && (Npc_GetTrueGuild(hero) == GIL_STT)) * * *{ * * * * * *return TRUE; * * *}; };
func void KDF_402_Corristo_ROBE_Info() { * * *Snd_Play("MFX_Heal_Cast"); * * *CreateInvItem(hero,kdf_armor_l); * * *CreateInvItem(self,ItAmArrow); * * *B_GiveInvItems(self,hero,ItAmArrow,1); * * *Npc_RemoveInvItem(hero,ItAmArrow); * * *AI_Output(self,other,"KDF_402_Corristo_ROBE_Info_ 14_01"); * * *//Произнеся слова клятвы, ты связал свою жизнь с Огнем. * * *AI_Output(self,other,"KDF_402_Corristo_ROBE_Info_ 14_02"); * * *//Носи это одеяние в знак нерушимости связи. * * *AI_StopProcessInfos(self); * * *AI_EquipBestArmor(hero); * * *AI_UnequipWeapons(hero); * * *Npc_SetTrueGuild(hero,GIL_KDF); * * *hero.guild = GIL_KDF; * * *Mdl_ApplyOverlayMds(hero,"Humans_Mage.mds"); * * *Mdl_RemoveOverlayMds(hero,"Humans_Relaxed.mds"); * * *hero.attribute[ATR_HITPOINTS] = hero.attribute[ATR_HITPOINTS_MAX]; * * *B_LogEntry(GE_BecomeFiremage,"Я прошел проверку и принес клятву Огню. С этого момента я ношу красное облачение магов круга Огня!"); * * *Log_CreateTopic(GE_TeacherOC,LOG_NOTE); * * *B_LogEntry(GE_TeacherOC,"Корристо может посвятить меня в новые круги магии, а также помочь с тренировкой маны. Его можно найти в доме магов Огня."); };
9. Бладвин теперь вымогает руду только у нейтралов (GIL_None). Скрипт Story\MISSIONS\DIA_GRD_233_Bloodwyn.d: func int Info_Bloodwyn_Hello_Condition() { * * *if((Kapitel < 2) && (Npc_GetTrueGuild(other) == GIL_None)) * * *{ * * * * * *return 1; * * *}; }; То же самое нужно сделать в скрипте Шакала (Story\MISSIONS\DIA_GRD_201_Jackal.d). Хотя я считаю, что условие Kapitel < 2 здесь явно лишнее.
10. Торуса больше нельзя подкупить, если герой уже получил разрешение на встречу с Гомезом. Скрипт Story\MISSIONS\DIA_GRD_200_Thorus.d: func int Info_Thorus_Give1000Ore_Condition() { * * *if(Npc_KnowsInfo(hero,Info_Thorus_BribeGuard) && (Diego_GomezAudience == FALSE)) * * *{ * * * * * *return 1; * * *}; };
11. Ю'Берион экипирован именным посохом света (Stab_des_Lichts) - НУЖНО НАЧАТЬ НОВУЮ ИГРУ. Скрипт Story\NPC\GUR_1200_YBerion.d: instance GUR_1200_YBerion(Npc_Default) { * * *name[0] = "Ю'Берион"; * * *npcType = npctype_main; * * *guild = GIL_GUR; * * *level = 30; * * *flags = NPC_FLAG_IMMORTAL; * * *voice = 12; * * *id = 1200; * * *attribute[ATR_STRENGTH] = 60; * * *attribute[ATR_DEXTERITY] = 45; * * *attribute[ATR_MANA_MAX] = 50; * * *attribute[ATR_MANA] = 50; * * *attribute[ATR_HITPOINTS_MAX] = 400; * * *attribute[ATR_HITPOINTS] = 400; * * *Mdl_SetVisual(self,"HUMANS.MDS"); * * *Mdl_ApplyOverlayMds(self,"Humans_Mage.mds"); * * *Mdl_SetVisualBody(self,"hum_body_Naked0",1,1,"Hum _Head_Bald",83,0,gur_armor_h); * * *B_Scale(self); * * *Mdl_SetModelFatness(self,0); * * *fight_tactic = FAI_HUMAN_MAGE; * * *Npc_SetTalentSkill(self,NPC_TALENT_MAGE,6); * * *EquipItem(self,Stab_des_Lichts); * * *CreateInvItem(self,ItArRunePyrokinesis); * * *daily_routine = Rtn_start_1200; };
12. Разблокирована для использования частица ледяного голема (работает аналогично руне "Ледяная стрела"). Скрипт Items\Animaltrophy.d: instance ItAt_IceGolem_02(C_Item) { * * *name = "Частица ледяного голема"; * * *mainflag = ITEM_KAT_RUNE; * * *flags = 0; * * *spell = SPL_THUNDERBOLT; * * *value = Value_Eistueck; * * *visual = "ItAt_IceGolem_01.3DS"; * * *material = MAT_STONE; * * *description = name; * * *text[0] = "Это частица побежденного"; * * *text[1] = "ледяного голема."; * * *text[4] = NAME_Value; * * *count[4] = Value_Eistueck; }; В нём убраны 2 строки, требующие для использования предмета наличие у ГГ 500 маны: * * *cond_atr[2] = ATR_MANA_MAX; * * *cond_value[2] = 500;
13. Логическая ошибка в скрипте Story\Missions\DIA_Org_826_Mordrag.d - после того, как герой по заданию Торуса выгнал Мордрага из Старого лагеря, не пропадает возможность пойти вместе с ним в Новый лагерь. В результате если предложить Мордрагу прогуляться вместе до Нового лагеря, у него начинают одновременно работать две противоположных модели поведения: вести за собой героя и убегать от героя, т.к. до этого был побит им. Поэтому предлагаю добавить дополнительное условие в функции: func int Org_826_Mordrag_GotoNewcamp_Condition() { * * if(Npc_KnowsInfo(hero,Org_826_Mordrag_JoinNewcamp) && (MordragKO_HauAb == FALSE)) * * { * * * * * return 1; * * }; };
14. Исправлен баг, из-за которого в случае убийства крутильщиков болотника нельзя завершить квест "Монополия на болотник" (Story\Missions\DIA_GUR_1201_CorKalom.d). IMHO наилучшее решение найдено в моде TLVH: func void Info_Kalom_Success_Info() { * * *var C_Npc Killian; * * *var C_Npc Renyu; * * *var C_Npc Jacko; * * *Killian = Hlp_GetNpc(Org_861_Killian); * * *Renyu = Hlp_GetNpc(Org_860_Renyu); * * *Jacko = Hlp_GetNpc(Org_862_Jacko); * * *AI_Output(other,self,"Mis_1_Psi_Kalom_Success_18_ 00"); * * *//По поводу болотника в Новом Лагере... * * *AI_Output(self,other,"Mis_1_Psi_Kalom_Success_10_ 01"); * * *//Да? * * *if((Npc_IsDead(Jacko) && Npc_IsDead(Renyu) && Npc_IsDead(Killian)) || (Stooges_Fled == TRUE)) * * *{ * * * * * *AI_Output(other,self,"Mis_1_Psi_Kalom_Success_18_ 04"); * * *//Вопрос решен. * * * * * *AI_Output(self,other,"Mis_1_Psi_Kalom_Success_10_ 05"); * * *//Ты удивляешь меня. Я недооценивал твои способности. * * * * * *Kalom_DrugMonopol = LOG_SUCCESS; * * * * * *B_LogEntry(CH1_DrugMonopol,"Я проинформировал Кор Галома, что про конкурентов из Нового Лагеря он может забыть. Он снова был очень 'дружелюбен'."); * * * * * *Log_SetTopicStatus(CH1_DrugMonopol,LOG_SUCCESS); * * * * * *B_GiveXP(XP_DrugMonopol); * * *} * * *else * * *{ * * * * * *AI_Output(other,self,"Mis_1_Psi_Kalom_Success_18_ 02"); * * *//Я не нашел этих людей. * * * * * *AI_Output(self,other,"Mis_1_Psi_Kalom_Success_10_ 03"); * * *//Ничего другого я от тебя и не ожидал. * * *}; };
Пожелания: 1. Если не удастся разобраться с триггером, закрывающим вход в "затопленную" шахту СЛ, то можно убить всех находящихся там стражей с помощью функции B_KillNPC() по аналогии со стражами на орочьем кладбище. 2. Ликвидировать эксплойт, позволяющий бесконечно выпрашивать воду у рисового лорда (ограничить выдачу воды не более 2 раз в день). Неудачная попытка исправления была в Golden Mod.
|
|
|
29.08.2011, 15:41
|
#2475
|
|
Re: М: Скриптинг в Готике
2ElderGamer: В игре включить MARVIN и в консоли (F2) набрать toggle waynet - в игре будет отображена маршрутная сетка toggle freepoints - в игре будут отображены свободные точки Остальные команды здесьили загрузить ZEN мира в Spacer и смотреть в нем.
|
|
|
30.08.2011, 13:20
|
#2476
|
|
|
|
|
A.G.F.C.
Регистрация: 04.09.2006
Сообщений: 20
|
|
|
|
|
|
Re: М: Скриптинг в Готике
2Dimus:
Дело в том, что в отличие от G2 в G1 ещё нет моргов (вейпоинт "ТОТ")
|
Это как нет?! Недалеко от БЛ в одной из пещер слева или справа (в зависимости из лагеря или в лагерь идем) от главной тропы как-раз расположен подобный морг, если мне память не изменяет... *::) 2ElderGamer:
В Г2, на один мир одна инстанция непеся, т.е. для каждого мира пишется своя инстанция, плюс к имени инстанции добавляется префикс в виде имени мира. Например:KDF_666_Xsardas_NW (Инстанция Ксара для Хориниса) KDF_666_Xsardas_OW (Инстанция Ксара для Миненталя) и т.д...
|
|
|
30.08.2011, 17:29
|
#2477
|
|
|
|
|
A.G.F.C.
Регистрация: 18.02.2008
Сообщений: 0
|
|
|
|
|
|
Re: М: Скриптинг в Готике
2Мухомор:
В игре включить MARVIN и в консоли (F2) набрать toggle waynet - в игре будет отображена маршрутная сетка
|
Спасибо! В режиме Марвина смотреть довольно удобно. :) 2Dimus:
К сожалению, пока не получается ни убить непися в локации СШ в зависимости от события в "большом мире", ни изменить ему расписание. Если непись находится на поверхности, функции работают. Если в шахте - не работают. *:(
|
|
|
30.08.2011, 20:15
|
#2478
|
|
|
|
|
A.G.F.C.
Регистрация: 04.09.2006
Сообщений: 20
|
|
|
|
|
|
Re: М: Скриптинг в Готике
2ElderGamer:
B_KillNPC() ... Если в шахте - не работают.
|
Если Нпс был на поверхности, то у него вроде одна инстанция, и если я правильно помню, то шахты в Г1 это отдельный мир, следовательно, прописывать инстанцию Нпс находящегося на поверхности в эту функцию для шахты не имеет смысла. В шахте у него уже другая инстанция будет. Не уверен, но так должно быть, в Готе 1 давно не копался. В общем, ищи инстанцию нужного непеся для шахты и ее прописывай в эту функцию, тогда работать должно. Имхо *::)
|
|
|
30.08.2011, 21:14
|
#2479
|
|
Re: М: Скриптинг в Готике
2ElderGamer:Небольшая подсказка:
Cпойлер(щелкните, чтобы прочесть):
Инстанции находящихся в шахте Старого лагеря стражей Братства Спящего вы можете найти в скрипте Story\Startup.d, функция startup_oldmine(). А убить их можно в скрипте Story\CHAPTERS\B_Kapitelwechsel.d, функция B_Kapitelwechsel(var int neues_Kapitel).
|
|
|
30.08.2011, 22:14
|
#2480
|
|
|
|
|
A.G.F.C.
Регистрация: 18.02.2008
Сообщений: 0
|
|
|
|
|
|
Re: М: Скриптинг в Готике
2MaGoth: 2Dimus:Я пытался сделать так:
Cпойлер(щелкните, чтобы прочесть):
Для опытов взял стража, который стоит на верхнем уровне СШ. Он ещё может обучить вырезать челюсти ползунов. В скрипте этого непися TPL_1438_Templer.d прописал распорядок:
func void Rtn_goaway_1438() { * * *TA_Stay(0,0,12,0,"NOWHERE"); * * *TA_Stay(12,0,24,0,"NOWHERE"); };
В раздел третьей главы скрипта B_Kapitelwechsel.d пробовал прописывать следующие строки:
B_ExchangeRoutine(TPL_1438_Templer,"goaway");
или
var C_Npc Templer_OM_01; Templer_OM_01 = Hlp_GetNpc(TPL_1438_Templer); Npc_ExchangeRoutine(Templer_OM_01,"goaway");
или
B_KillNpc(TPL_1438_Templer);
Загружаю сейв перед Великой Церемонией, смотрю мультик, перехожу в третью главу. Результат один и тот же - страж, как стоял на своём месте, так и стоит. Распорядок непися (клавиша "J" в режиме Марвина) не изменился. Для телохранителя Галома (TPL_1406_Templer) подобные выкрутасы работают безупречно.
|
|
|
Здесь присутствуют: 2 (пользователей: 0 , гостей: 2)
|
|
Опции темы |
Поиск в этой теме |
|
|
Ваши права в разделе
|
|
|
|
Текущее время: 19:47. Часовой пояс GMT +4.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|