[AGFC: Valley of Gothic] М: Скриптинг в Готике

Страница 62 из 65 « Первая 12525556575859606162 636465
Поиск в этой теме:

Расширенный поиск
Старый 26.05.2011, 17:25   #2441
JohaNBlack

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2KnightDron: Тут все правильно. Чем ты компилировал? И мод создавал через GothicVDFS?
Ответить с цитированием
Старый 26.05.2011, 18:19   #2442
KnightDron

AGFC
Гость
 
Сообщений: n/a

По умолчанию 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 при создании мода не использовал
Ответить с цитированием
Старый 27.05.2011, 17:39   #2443
JohaNBlack

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2KnightDron: Попробуй изменить в Story_Globals параметры T_MAX, T_MEGA,T_HIGH,T_MED,T_LOW  на те значения, что ты прописал в B_GetLearnCostAttribute.
Ответить с цитированием
Старый 15.07.2011, 18:26   #2444
SkaIneT666

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

Товарищи готоманы. Есть такая проблемма. В Готике 1 компилировал скрипты и встувил в игру. Все работает НО в игра перестала реагировать на воду!!! Тоесть Гг по воде ХОДИТ а не плавает. Вода стала как простая земля. В чем может быть дело?
Ответить с цитированием
Старый 15.07.2011, 22:17   #2445
Halzcedon

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2SkaIneT666:
Посмотри в спайсере свойства текстур воды, мб у тебя материал изменился.
Cпойлер(щелкните, чтобы прочесть):

ЗЫ: Скорее всего это один из вариантов, тк других я не знаю
ЗЫ2: Открывать спайсером надо модель мира ( Open Mesh )
Ответить с цитированием
Старый 16.08.2011, 10:33   #2446
ElderGamer
A.G.F.C.
  Аватар для ElderGamer
 
Регистрация: 18.02.2008
Сообщений: 0
ElderGamer вне форума

По умолчанию Re: М: Скриптинг в Готике

Г1. При недостаточном уровне силы или ловкости для экипировки предмета выводится сообщение, как для непися:

Я (0) не хватает 26 ед. силы!

вместо

Для использования этого предмета вам не хватает 26 ед. силы!

Аналогичная ситуация для рун. В каком скрипте искать ошибку?

Отправить личное сообщение для Ответить с цитированием
Старый 16.08.2011, 16:38   #2447
FAR

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2ElderGamer:
Я (0) не хватает
Вот тут пацан писал про это и выложил исправленные версии саундпатчей, где это дело изменил как надо.
Ответить с цитированием
Старый 16.08.2011, 21:57   #2448
ElderGamer
A.G.F.C.
  Аватар для ElderGamer
 
Регистрация: 18.02.2008
Сообщений: 0
ElderGamer вне форума

По умолчанию Re: М: Скриптинг в Готике

Дело в том, что я уже внёс в скрипты пакета GOTHIC.DAT кучу правок из твоих запасов. Жалко всё это просто взять и выбросить. *;D Я пытаюсь сравнивать то, что у меня есть со скриптами от снежковской версии, в которой эти надписи отображаются правильно. Даже побовал всю папку _INTERN со скриптами функций перенести к себе. Кое-что изменилось, но не помогло окончательно. Такое впечатление, что не срабатывает условие

If (dIsPlayer)

и выводится сообщение для непися, а не для героя. Можно, конечно, перетасовать части этого сообщения так, чтобы для непися выводилось такое же сообщение, как для героя, но это неправильно. Может, кто подскажет, в каком месте копнуть поглубже. :)



Добавление от 08/16/11, в 22:17:56
Да, и ещё до кучи вопросец. Можно ли скриптами подправить непереведённую фразу "ENDE" в пустом боксе диалога с орками?  Если можно, то в каком скрипте?
Отправить личное сообщение для Ответить с цитированием
Старый 16.08.2011, 23:48   #2449
B_Wolf

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2ElderGamer:
Да, и ещё до кучи вопросец. Можно ли скриптами подправить непереведённую фразу "ENDE" в пустом боксе диалога с орками?  Если можно, то в каком скрипте?
ENDE выдает движок, когда у НПЦ отсутствует заскриптованый файл диалога "Закончить". Каждому НПЦ с ENDE нужно прописать диалог "Закончить", сделать этом можно по подобию любого другого НПЦ, у которого отображается этот диалог.
Ответить с цитированием
Старый 19.08.2011, 10:55   #2450
ElderGamer
A.G.F.C.
  Аватар для ElderGamer
 
Регистрация: 18.02.2008
Сообщений: 0
ElderGamer вне форума

По умолчанию 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. Движок, оказывается, нормально проглатывает пустые скрипты.  :)
Отправить личное сообщение для Ответить с цитированием
Старый 19.08.2011, 12:10   #2451
Dimus

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2ElderGamer:
Кстати, косяк с двумя строками "Закончить" вроде бы был у одного из стражников, охраняющих вход в дом рудных баронов.
Ответить с цитированием
Старый 19.08.2011, 20:08   #2452
ElderGamer
A.G.F.C.
  Аватар для ElderGamer
 
Регистрация: 18.02.2008
Сообщений: 0
ElderGamer вне форума

По умолчанию Re: М: Скриптинг в Готике

Да, верно, причём наблюдается это у обоих стражников. У одного из них (ID 218) проблема решилась удалением инстанса окончания диалога из скрипта DIA_GRD_218_GARDIST.d. У другого (ID 245) пришлось изменить идентификатор голоса, что лишило его амбиентных опций диалога и второй строки "ЗАКОНЧИТЬ". Мера эта вынужденная. Из трёх вариантов амбиентных диалогов, доступных стражникам, два не подходят ему по содержанию и голосу, а третий используется у первого из стражников.
Отправить личное сообщение для Ответить с цитированием
Старый 20.08.2011, 13:41   #2453
FAR

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2ElderGamer:
ЕМНИП у стражника справа от входа в СШ тоже два Закончить.
Ответить с цитированием
Старый 20.08.2011, 22:41   #2454
ElderGamer
A.G.F.C.
  Аватар для ElderGamer
 
Регистрация: 18.02.2008
Сообщений: 0
ElderGamer вне форума

По умолчанию Re: М: Скриптинг в Готике

2Fritz:
Ага, выяснил его ID, исправлю.

Вопрос к знатокам. Можно ли в Г1 с помощью какой-либо функции контролировать окончание анимации обследования сундука? В некоторых случаях, например, во время поиска юнитора в разрушенном монастыре, условие инстанса срабатывает, когда нужный предмет попадает в инвентарь ГГ, не дожидаясь, когда он, ГГ, встанет.




Добавление от 08/20/11, в 23:01:16
И ещё вопрос. В квесте по поиску юнитора под кругом камней в компании Мильтена предусмотрена возможность нецелевого расходования свитка "Смерть нежити". Квест стопорится до той поры, пока в инвентаре ГГ не появится свиток или руна "Смерть нежити". Причём, в случае с руной не важно, может ли ГГ её использовать. Существует ли способ достать эти свиток или руну в третьей главе? Я пробежался по торговцам и в продаже такого товара вроде бы не нашёл. Может, в сундуках или инвентаре неписей поискать?*Или нужно добавлять свиток правкой скриптов? 8-)
Отправить личное сообщение для Ответить с цитированием
Старый 21.08.2011, 00:25   #2455
B_Wolf

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2ElderGamer:
Вопрос к знатокам. Можно ли в Г1 с помощью какой-либо функции контролировать окончание анимации обследования сундука? В некоторых случаях, например, во время поиска юнитора в разрушенном монастыре, условие инстанса срабатывает, когда нужный предмет попадает в инвентарь ГГ, не дожидаясь, когда он, ГГ, встанет.
Можно поставить в условие диалога Горна

if(!C_BodyStateContains(hero,BS_MOBINTERACT_INTERR UPT))
Ответить с цитированием
Старый 22.08.2011, 11:54   #2456
ElderGamer
A.G.F.C.
  Аватар для ElderGamer
 
Регистрация: 18.02.2008
Сообщений: 0
ElderGamer вне форума

По умолчанию Re: М: Скриптинг в Готике

2Мухомор:

Почему-то не работает. :( Я поставил такое условие (оно получше будет, чем оригинал, но всё-равно имеет недостатки):

if(Npc_KnowsInfo(hero,Info_Gorn_RUINJOIN) && Npc_HasItems(hero,Focus_4) && ((Npc_GetDistToPlayer(self) < 250) || (Npc_GetDistToWP(hero,"OW_PATH_TEMPELRUIN06") < 400)))
Отправить личное сообщение для Ответить с цитированием
Старый 24.08.2011, 22:27   #2457
ElderGamer
A.G.F.C.
  Аватар для ElderGamer
 
Регистрация: 18.02.2008
Сообщений: 0
ElderGamer вне форума

По умолчанию Re: М: Скриптинг в Готике

Ещё вопрос. Некоторые ошибки нельзя устранить без введения дополнительных условий *и новых переменных "местного значения". Не могут ли здесь вылезти подводные камни в виде ограничений движка на количество условий и переменных?
Отправить личное сообщение для Ответить с цитированием
Старый 24.08.2011, 23:36   #2458
redleha

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

нет, таких камней нет.
Ответить с цитированием
Старый 25.08.2011, 23:10   #2459
ElderGamer
A.G.F.C.
  Аватар для ElderGamer
 
Регистрация: 18.02.2008
Сообщений: 0
ElderGamer вне форума

По умолчанию 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, 07:09   #2460
redleha

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

попробуй AI_GotoWP(self,hero.wp) или AI_GotoWP(self,Npc_GetNearestWP(hero)) или заставь самого ГГ подойти, а не Кор-Галома
Ответить с цитированием
Старый 26.08.2011, 11:10   #2461
ElderGamer
A.G.F.C.
  Аватар для ElderGamer
 
Регистрация: 18.02.2008
Сообщений: 0
ElderGamer вне форума

По умолчанию Re: М: Скриптинг в Готике

Ага! AI_GotoWP(self,Npc_GetNearestWP(hero)) работает. И для Галома, и для ГГ. Но как заставить их посмотреть друг на друга? При попытке ввести функцию B_LookAtNpc, GothicSourcer выдаёт ошибку. Видимо, эта функция появилась только в Г2(?).
Отправить личное сообщение для Ответить с цитированием
Старый 26.08.2011, 12:00   #2462
Halzcedon

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2ElderGamer:
Может поможет  * * *B_WhirlAround(self,hero); к примеру как Идол Люкор посмотрел на ГГ перед словами"это ты во всём виноват..."
Ответить с цитированием
Старый 26.08.2011, 16:29   #2463
Dimus

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2ElderGamer:
А как насчёт функций AI_TurnToNPC(self,other); и C_LookAtNpc(self,other); ?
Ответить с цитированием
Старый 26.08.2011, 20:36   #2464
ElderGamer
A.G.F.C.
  Аватар для ElderGamer
 
Регистрация: 18.02.2008
Сообщений: 0
ElderGamer вне форума

По умолчанию 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, 22:35   #2465
FAR

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2ElderGamer:
после уничтожения логова королевы ползунов? Ведь им там, по логике, больше нечего делать. С Гор На Драком и сопровождающим его стражем всё просто. Достаточно изменить им распорядок дня в нужный момент. Тем более, что такой вариант уже предусмотрен в скриптах на более позднем этапе (в 4 главе). А как быть со стражами СШ?
А надо это? Вполне можно допустить, что небольшая часть ползунов осталась, а стражи ждут, дабы рвать им челюсти, к тому же скоро обвал. ИМХО в шахте надо только доработать блокировку решётки намертво. И дорогу, упирающуюся в скалу не мешало бы убрать (это дорога из ролика в начале игры, где тащат руду из долины).
С Гор На Драком и сопровождающим его стражем всё просто.
А они даже после обвала странствуют к СШ?
Ответить с цитированием
Старый 27.08.2011, 16:35   #2466
ElderGamer
A.G.F.C.
  Аватар для ElderGamer
 
Регистрация: 18.02.2008
Сообщений: 0
ElderGamer вне форума

По умолчанию Re: М: Скриптинг в Готике

2Fritz:
А надо это?
Ну, я рассуждаю так. Стражи в шахте СЛ добывали слюну ползунов для Кор Галома. Кор Галому слюна нужна была для изготовления особых напитков маны. Особые напитки маны нужны были для проведения Великой Церемонии вызова Спящего. Если даже предположить, что в Старой Шахте остались ещё ползуны, то после Церемонии (конец 2 главы) их "запчасти" уже не нужны Кор Галому, а стражам нечего делать в СШ.

А они даже после обвала странствуют к СШ?
Нет, их распорядок дня меняется при переходе из третьей в четвёртую главу. Но всю третью главу, даже когда Галом уже сваливает из Братства, они продолжают навещать СШ.

Отправить личное сообщение для Ответить с цитированием
Старый 27.08.2011, 18:30   #2467
FAR

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2ElderGamer:
слюну
Челюсти. Слюну уже Галом из них мутил. А договорённость между СЛ и БЛ по нахождению стражей в СШ вроде как и не расторгнута. Но так то ты правильно рассуждаешь, по логике то.
из третьей в четвёртую главу.
Так просто сделать смену распорядка не после 3-й, а после 2-й главы. А где они находятся после смены расписания? Если где то в одном месте торчат, то и стражей из СШ к ним в компанию можно присоединить. Только диалоги же придётся менять?
Ответить с цитированием
Старый 27.08.2011, 22:14   #2468
ElderGamer
A.G.F.C.
  Аватар для ElderGamer
 
Регистрация: 18.02.2008
Сообщений: 0
ElderGamer вне форума

По умолчанию Re: М: Скриптинг в Готике

2Fritz:
Так просто сделать смену распорядка не после 3-й, а после 2-й главы. А где они находятся после смены расписания?
Уже сделано. После смены расписания они просто стоят и болтают целыми сутками у лаборатории Галома. Болтают - в смысле, обмениваются дежурными фразами из стандартного набора.

Если где то в одном месте торчат, то и стражей из СШ к ним в компанию можно присоединить. Только диалоги же придётся менять?
Судя по тому, что в игре существуют два Галома, два Горна и два Ксардаса, просто так вывести стражей из шахты не выйдет. Видимо, нужно создавать их двойников с уникальными ID и вставлять их в мир в определённый момент времени, вырезав оригиналы из локации "Старая шахта". А вот как это правильно сделать, я пока не знаю. Кстати, достаточно "вывести" только троих именных стражей, безымянные всё-равно все на одно лицо. :)
Отправить личное сообщение для Ответить с цитированием
Старый 28.08.2011, 04:22   #2469
MaGoth
A.G.F.C.
  Аватар для MaGoth
 
Регистрация: 04.09.2006
Сообщений: 20
MaGoth вне форума

По умолчанию Re: М: Скриптинг в Готике

2ElderGamer: Если будешь вводить новых непесей с уникальными ID, то старых отправляй по новому расписанию на вейпоинт "ТОТ", так будет правильно. Правда, сам вей еще глянь как он пишется в Г1, я по Г2 ориентируюсь и возможно будут отличия, но по логике в Г1 все также должно быть... *::)
Отправить личное сообщение для Ответить с цитированием
Старый 28.08.2011, 17:06   #2470
ElderGamer
A.G.F.C.
  Аватар для ElderGamer
 
Регистрация: 18.02.2008
Сообщений: 0
ElderGamer вне форума

По умолчанию 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, 21:32   #2471
Dimus

AGFC
Гость
 
Сообщений: n/a

По умолчанию 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, 22:11   #2472
ElderGamer
A.G.F.C.
  Аватар для ElderGamer
 
Регистрация: 18.02.2008
Сообщений: 0
ElderGamer вне форума

По умолчанию Re: М: Скриптинг в Готике

2Dimus:
Кор Калом удаляется в скрипте Story\CHAPTERS\B_Story_GotoOrcGraveyard.d:
Ага, спасибо! А вставляются неписи, как следует из этого же скрипта, в любой момент времени командой (например)

Wld_InsertNpc(Tpl_1463_Templer,"OW_PATH_198_ORCGRA VEYARD8");

Так?
Отправить личное сообщение для Ответить с цитированием
Старый 29.08.2011, 11:39   #2473
Dimus

AGFC
Гость
 
Сообщений: n/a

По умолчанию 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, 13:08   #2474
ElderGamer
A.G.F.C.
  Аватар для ElderGamer
 
Регистрация: 18.02.2008
Сообщений: 0
ElderGamer вне форума

По умолчанию Re: М: Скриптинг в Готике

2Dimus:

Спасибо! Обязательно воспользуюсь.

Такой вопрос. Как можно узнать вейпоинт конкретного места, например хижины в Болотном Лагере, чтобы направить непися туда спать?
Отправить личное сообщение для Ответить с цитированием
Старый 29.08.2011, 14:41   #2475
B_Wolf

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2ElderGamer:
В игре включить MARVIN и в консоли (F2) набрать
toggle waynet - в игре будет отображена маршрутная сетка
toggle freepoints - в игре будут отображены свободные точки
Остальные команды здесь

или загрузить ZEN мира в Spacer и смотреть в нем.
Ответить с цитированием
Старый 30.08.2011, 12:20   #2476
MaGoth
A.G.F.C.
  Аватар для MaGoth
 
Регистрация: 04.09.2006
Сообщений: 20
MaGoth вне форума

По умолчанию Re: М: Скриптинг в Готике

2Dimus:
Дело в том, что в отличие от G2 в G1 ещё нет моргов (вейпоинт "ТОТ")
Это как нет?! Недалеко от БЛ в одной из пещер слева или справа (в зависимости из лагеря или в лагерь идем) от главной тропы как-раз расположен подобный морг, если мне память не изменяет... *::)

2ElderGamer:
А как это сделано в Г2?
В Г2, на один мир одна инстанция непеся, т.е. для каждого мира пишется своя инстанция, плюс к имени инстанции добавляется префикс в виде имени мира.

Например:
KDF_666_Xsardas_NW (Инстанция Ксара для Хориниса)
KDF_666_Xsardas_OW (Инстанция Ксара для Миненталя)
и т.д...
Отправить личное сообщение для Ответить с цитированием
Старый 30.08.2011, 16:29   #2477
ElderGamer
A.G.F.C.
  Аватар для ElderGamer
 
Регистрация: 18.02.2008
Сообщений: 0
ElderGamer вне форума

По умолчанию Re: М: Скриптинг в Готике

2Мухомор:
В игре включить MARVIN и в консоли (F2) набрать
toggle waynet - в игре будет отображена маршрутная сетка
Спасибо! В режиме Марвина смотреть довольно удобно. :)

2Dimus:
B_KillNPC()
К сожалению, пока не получается ни убить непися в локации СШ в зависимости от события в "большом мире", ни изменить ему расписание. Если непись находится на поверхности, функции работают. Если в шахте - не работают. *:(
Отправить личное сообщение для Ответить с цитированием
Старый 30.08.2011, 19:15   #2478
MaGoth
A.G.F.C.
  Аватар для MaGoth
 
Регистрация: 04.09.2006
Сообщений: 20
MaGoth вне форума

По умолчанию Re: М: Скриптинг в Готике

2ElderGamer:
B_KillNPC()
...
Если в шахте - не работают.
Если Нпс был на поверхности, то у него вроде одна инстанция, и если я правильно помню, то шахты в Г1 это отдельный мир, следовательно, прописывать инстанцию Нпс находящегося на поверхности в эту функцию для шахты не имеет смысла. В шахте у него уже другая инстанция будет.
Не уверен, но так должно быть, в Готе 1 давно не копался. В общем, ищи инстанцию нужного непеся для шахты и ее прописывай в эту функцию, тогда работать должно. Имхо *::)
Отправить личное сообщение для Ответить с цитированием
Старый 30.08.2011, 20:14   #2479
Dimus

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2ElderGamer:
Небольшая подсказка:
Cпойлер(щелкните, чтобы прочесть):
Инстанции находящихся в шахте Старого лагеря стражей Братства Спящего вы можете найти в скрипте Story\Startup.d, функция startup_oldmine(). А убить их можно в скрипте Story\CHAPTERS\B_Kapitelwechsel.d, функция B_Kapitelwechsel(var int neues_Kapitel).
Ответить с цитированием
Старый 30.08.2011, 21:14   #2480
ElderGamer
A.G.F.C.
  Аватар для ElderGamer
 
Регистрация: 18.02.2008
Сообщений: 0
ElderGamer вне форума

По умолчанию 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) подобные выкрутасы работают безупречно.
Отправить личное сообщение для Ответить с цитированием
Страница 62 из 65 « Первая 12525556575859606162 636465


Здесь присутствуют: 2 (пользователей: 0 , гостей: 2)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе

Смайлы Вкл.
[IMG] код Вкл.
HTML код Вкл.


Текущее время: 14:19. Часовой пояс GMT +4.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot

AGFC: Valley of Gothic © 2004-2022

Яндекс.Метрика