|
|
29.05.2005, 14:37
|
#402
|
|
Re: Скриптинг в Готике
2Killer-XXX: Вот фрагмент скрипта моего нпс,где гг неотдает меч,нпс нападает на гг,после чего говорит:"Ну *как *тебе *мой *меч?" Делал все при помощи спейсера: __________________________________________________ __________
// гг не отдает меч func void None_666_Diman_bringSword_Yes () { AI_Output( other, self, "None_666_Diman_bringSword_Info_8_06"); //Я так не думаю. AI_Output( self, other, "None_666_Diman_bringSword_Info_8_07"); // Тогда получи!?! AI_StopProcessInfos (self); b_attack(self,other,AR_NONE,1);// NPC атакует гг };
instance None_666_Diman_FightWin(C_Info) { npc * * * * *= *None_666_Diman; nr * * * * * = *50; condition * *= *None_666_Diman_FightWin_Condition; information *= *None_666_Diman_FightWin_Info; important * *= *TRUE; };
func int None_666_Diman_FightWin_Condition() { if(self.aivar[AIV_LastFightAgainstPlayer] == FIGHT_WON) { * return *TRUE; }; };
func *void *None_666_Diman_FightWin_Info() { AI_Output(self,other,"None_666_Diman_FightWin_info _8_00"); *//Ну *как *тебе *мой *меч? * }; __________________________________________________ __________
Все работает :)
|
|
|
30.05.2005, 18:17
|
#404
|
|
|
|
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
|
|
|
|
Re: Скриптинг в Готике
2Bliz@rd: Вероятно у тебя нигже не прописаны переменные: VALUE_VLK_ARMOR_L и VALUE_STT_ARMOR_H. Добавить их. З.Ы. В следующий раз указывай ошибку из компилятора.
|
|
|
02.06.2005, 17:54
|
#406
|
|
Re: Скриптинг в Готике
После того что я привёл выше я после этого ещё распаковал папку Anims(C:\Program Files\Gothic II\Data\ Anims) потом добавил 2 броньки(приведены выше) и запоковал обратно.Потом закомпелировал в спайсере.Ошибок не было.Когда захожу в игру и дохожу до того места где стоит мой NPC с новой бронькой игра не вылетела,но все остальные броньки включая которые я и внёс стали глючить.Они как-бы пропали на половину(как-будто какие-то не доделанные. Кто знает из-за чего это так произошло?
Добавление от 06/02/05, в 18:14:29 Может быть я не правильно вставляю броню в скриптах NPC? вот напрмер // ------ visuals ----- B_SetNpcVisual (self, MALE, "Hum_Head_Bald", Face_N_Mordrag, BodyTex_N, ITAR_MIL_L); Mdl_SetModelFatness (self,0); Mdl_ApplyOverlayMds (self, "Humans_Militia.mds"); нужно только изменить ITAR_MIL_L на TPL_ARMOR_L .Я правильно понял? И ещё хотел уточнить когдя я попробывал всё сделать снова то все брони кроме тех которые я вставил были нормальные.Только та бронька которую я вставил в принципе такая-же ка в Готики1,но без рисунков (какаято однлтоная).В чем ошибка?
|
|
|
03.06.2005, 18:06
|
#410
|
|
Re: Скриптинг в Готике
2Bliz@rd:gmdk-asc_armor.rar нужно скачать с сайта World of Gothic в разделе Editing для Готики 2,которая весит 63 мега?Да нет,он весит 1.5 mb -> Вот. Можно использовать любой скрипт брони,только изменить Itar_Name(где Name твое название) и visual_change(из архива любой *.asc),и бросить в папку Textures\_compiled текстуру этой *.asc,это ты не сделал,поэтому текстура доспеха была расплывчатая(черный,серый цвета).
|
|
|
03.06.2005, 22:27
|
#412
|
|
Re: Скриптинг в Готике
2Bliz@rd:2Bliz@rd:Вот: const int VALUE_TPL_ARMOR_L * *= 1350; INSTANCE Itar_TPL_ARMOR_L(C_Item) { * * name * * * * * * * * * *= *"Легкая броня Тамплиера"; * * mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * flags * * * * * * * * * = * *0; * * protection [PROT_EDGE] *= * 45; * * protection [PROT_BLUNT] = * 45; * * protection [PROT_POINT] = * *5; * * protection [PROT_FIRE] *= * 20; * * protection [PROT_MAGIC] = * *0; * * value * * * * *= VALUE_TPL_ARMOR_L; * * wear * * * * * = WEAR_TORSO; * * visual * * * * = "ItAr_CorAngar.3ds"; * * visual_change *= "Hum_TPLL_ARMOR.asc"; * * visual_skin * *= 0; * * material * * * = MAT_LEATHER; * * description * *= name; * * * * * * * * TEXT[1] * * * *= NAME_Prot_Edge; * * * * * * * * * * * COUNT[1] * * * = protection [PROT_EDGE]; * * TEXT[2] * * * *= NAME_Prot_Point; * * * * * * * COUNT[2] * * * = protection *[PROT_POINT]; * * TEXT[3] * * * *= NAME_Prot_Fire; * * * * * * * * * * COUNT[3] * * * = protection * [PROT_FIRE]; * * TEXT[4] * * * *= NAME_Prot_Magic; * * * * * * * COUNT[4] * * * = protection * [PROT_MAGIC]; * * TEXT[5] * * * *= NAME_Value; * * * * * * * * * * * * * * COUNT[5] * * * = value; };там где // ------ visuals ------B_SetNpcVisual (self, MALE, "Hum_Head_Bald", Face_N_Bartholo, BodyTex_N,Itar_TPL_ARMOR_L); и где Mdl_ApplyOverlayMds прописал (self, "tpll.3ds");Это внешняя анимация нпс надо: Mdl_ApplyOverlayMds * * *(self, "xxx"); xxx-Humans_Arrogance.mds; * *Humans_Mage.mds; * *Humans_Militia.mds; * *Humans_Relaxed.mds; * *Humans_Tired.mds; И ты ещё говорил что нужно скачат (gmdk-asc_armor.rar),а куда нужно вставить броньки?У меня g2mdk-small,После разархивации gmdk-asc_armor.rar бросаю содержимое папки gmdk-asc_armor в папку Gothic II :) Надеюсь теперь все понятно ;)
|
|
|
07.06.2005, 16:30
|
#414
|
|
Re: Скриптинг в Готике
У меня возникло несколько вопросов: 1)Допустим я в своём моде создал новую гильдию(Например Сопротивленцы).Создал диалоги к ним,присоединяюсь доют там новую броню,но как сделать когда заходишь в "B",чтобы она там отображалась?И как сделать,чтобы к Сопртивленцам относились другии гильдии(например нетрально,враждебно)? 2)Где новую гильдию нужно прописывать? 3)Как сделать,чтобы напрмер я создал NPC ,а он ко мне присоединился и ходил со мной?
Добавление от 06/07/05, в 16:50:11 Хочу создать мод,в моде хочу сделать ещё несколько гильдий.Подскажите где и что нужно прописывать,чтобы содать новые гильдии?
|
|
|
07.06.2005, 19:47
|
#415
|
|
Re: Скриптинг в Готике
2Bliz@rd:
2)Где новую гильдию нужно прописывать?
|
Все гильдии делятся на две группы: люди и монстры. Правила оформления гильдий для этих групп разные. Разделителем между ними является константа GIL_SEPERATOR_HUM. 1. Гильдии людей. Создать новую полноценную гильдию людей нельзя, можно только переименовать любую из 16 заданных гильдий людей под свои нужды, причем переименовывать (использовать) гильдии GIL_NONE, GIL_HUMAN и GIL_PUBLIC нельзя, возникнут конфликты в существующей AI. Взаимотношения между гильдиями людей задаются таблицей (файл ..AI\Human\Guilds.d), менять размер таблицы нельзя, задан экзешником. 2. Гильдии монстров. Создать новую гильдию здесь также нельзя (константа GIL_MAX = 66 не может меняться, т.к. является размерностью массивов в классе C_GILVALUES). Можно переименовать существующие или использовать несколько "пустых" гильдий. Взаимоотношения между гильдиями монстров, людей и монстров задаются в файле ..AI\Monster\B_Monster\B_SetMonsterAttitude.d.
Подскажите где и что нужно прописывать,чтобы содать новые гильдии?
|
1. Регистрация в файле .._intern\Constants.d 2. Взаимоотношения - уже указал. 3. Спецпараметры - файл ..\AI\AI_Intern\Species.d 4. Общий совет: если меняем какую либо гильдию (например GIL_OUT) на свою, то ищем по всем скриптам эту константу и смотрим, подходят ли эти условия под вашу гильдию, если да, то переименовываем, если нет, то удаляем старое и дописываем новые условия.
3)Как сделать,чтобы напрмер я создал NPC ,а он ко мне присоединился и ходил со мной?
|
НПС необходимо перевести в состояние ZS_Follow_Player. PS: Все упоминаемые файлы рассмотрены в Уроках скриптологии.
|
|
|
07.06.2005, 21:59
|
#417
|
|
Re: Скриптинг в Готике
2Bliz@rd:
3)Закомпелировал,спайсер выдавал ошибки у NPC связанных Gil_OUT.(Что теперь нужно менять у NPC,звязанных с Gil_OUT на другую гильдию)?
|
После замены Gil_OUT на твою гильдию нигде больше в скриптах не должно встречаться имя Gil_OUT. Обрати внимание на пункт 4 моего предыдущего сообщения. Учти, что теперь Gil_OUT больше нет, НПС присоединяем к другой гильдии или вновь созданной.
И ещё когда зашёл в игру и спомощью марвина вселился в NPC(с новой гильдией) то у него вместо Темплера было написано Lardbewohner.Не знаешь почму,может быть что-то не правильно сделал?
|
Текстовое описание гильдий смотри в файле ..\Story\Text.d в константе TXT_GUILDS нужно поменять название гильдии под твоим номером.
|
|
|
08.06.2005, 13:48
|
#419
|
|
Re: Скриптинг в Готике
2Bliz@rd:
можно добавить свою гильдию используя несколько "пустых" гильдий"(у животных).Как их использовать
|
Аналогично людским гильдиям, например, вместо GIL_Empty_A записываем свою гильдию животных, а дальше всё аналогично (хотя по скриптам искать старое название смысла нет, оно нигде не используется), можно поступить следующим образом: ищем, например имя GIL_MOLERAT (а лучше той гильдии, которая по поведению ближе к вновь создаваемой) и создаем аналогичные куски кода для новой гильдии.
как сделат чтобы гильдия людей(напрмер маги,паладины,наёмники) впускали(в город,в верхнюю часть города,в монастырь),короче относились так же уважительно как напрмер к магу?
|
Об этом я уже сказал, повторю - Взаимотношения между гильдиями людей задаются таблицей (файл ..AI\Human\Guilds.d). Смотри пост №223 стр.9 Уроки скриптологии.
|
|
|
08.06.2005, 15:57
|
#421
|
|
|
|
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
|
|
|
|
Re: Скриптинг в Готике
2Bliz@rd: Слушай, тебя уже один раз отлучили от темы, так ты мало того, что создал бота, так еще и ничуть не изменил манеру поведения: все так же не хочешь ничего делать сам.
Я пытался делать на примере Ларса
|
Значит, плохо пытался. Напиши, что ты делал, и мы скажем, где ошибка, а писать тут никто ничего за тебя не будет.
|
|
|
08.06.2005, 19:15
|
#422
|
|
Re: Скриптинг в Готике
Подскажите пожалуста, делал всё по подсказке из другой темы но ничего не получается, я дал Эстебану ключ от его же сундука, и руководство по сборке супер топора, вот: instance BDT_1083_Addon_Esteban(Npc_Default) instance BDT_1083_Addon_Esteban(Npc_Default) { name[0] = "Эстебан"; guild = GIL_BDT; id = 1083; voice = 7; flags = 0; npcType = NPCTYPE_BL_MAIN; aivar[AIV_StoryBandit_Esteban] = TRUE; aivar[AIV_StoryBandit] = TRUE; aivar[AIV_NewsOverride] = TRUE; B_SetAttributesToChapter(self,3); fight_tactic = FAI_HUMAN_STRONG; EquipItem(self,ItMw_1h_Sld_Axe); B_CreateAmbientInv(self); B_CreateAmbientInv(self,ITKE_Addon_Esteban_01 ); B_CreateAmbientInv(self,ItWr_Addon_AxtAnleitu ng); CreateInvItems(self,ItMi_Addon_Stone_01,5); B_SetNpcVisual(self,MALE,"Hum_Head_Thief",Face_L_ ToughBart_Quentin,BodyTex_L,ItAr_BDT_H); Mdl_SetModelFatness(self,0); Mdl_ApplyOverlayMds(self,"Humans_Arrogance.md s"); B_GiveNpcTalents(self); B_SetFightSkills(self,50); daily_routine = Rtn_Start_1083; };
Явно чёто не так. Заранее спасибо.
|
|
|
08.06.2005, 19:57
|
#423
|
|
Re: Скриптинг в Готике
В папке Dialoge прописал следующее: // ************************************************** ********** // EXIT // ************************************************** ********** INSTANCE DIA_Chic_Kap1_EXIT(C_INFO) { npc = NONE_666_Chic; nr = 999; condition = DIA_Chic_Kap1_EXIT_Condition; information = DIA_Chic_Kap1_EXIT_Info; permanent = TRUE; description = DIALOG_ENDE; }; FUNC INT DIA_Chic_Kap1_EXIT_Condition() { if (Kapitel == 1) { return TRUE; }; }; FUNC VOID DIA_Chic_Kap1_EXIT_Info() { AI_StopProcessInfos (self); };
// ************************************************** ********** // PICK POCKET // ************************************************** **********
INSTANCE DIA_Chic_PICKPOCKET (C_INFO) { npc = NONE_666_Chic; nr = 900; condition = DIA_Chic_PICKPOCKET_Condition; information = DIA_Chic_PICKPOCKET_Info; permanent = TRUE; description = Pickpocket_100; };
FUNC INT DIA_Chic_PICKPOCKET_Condition() { C_Beklauen (95, 350); }; FUNC VOID DIA_Chic_PICKPOCKET_Info() { Info_ClearChoices (DIA_Chic_PICKPOCKET); Info_AddChoice (DIA_Chic_PICKPOCKET, DIALOG_BACK ,DIA_Chic_PICKPOCKET_BACK); Info_AddChoice (DIA_Chic_PICKPOCKET, DIALOG_PICKPOCKET ,DIA_Chic_PICKPOCKET_DoIt); };
func void DIA_Chic_PICKPOCKET_DoIt() { B_Beklauen (); Info_ClearChoices (DIA_Chic_PICKPOCKET); }; func void DIA_Chic_PICKPOCKET_BACK() { Info_ClearChoices (DIA_Chic_PICKPOCKET); };_PICKPOCKET (C_INFO) { npc = NONE_666_Chic; nr = 900; condition = DIA_Chic_PICKPOCKET_Condition; information = DIA_Chic_PICKPOCKET_Info; permanent = TRUE; description = Pickpocket_100; };
FUNC INT DIA_Chic_PICKPOCKET_Condition() { C_Beklauen (95, 350); }; FUNC VOID DIA_Chic_PICKPOCKET_Info() { Info_ClearChoices (DIA_Chic_PICKPOCKET); Info_AddChoice (DIA_Chic_PICKPOCKET, DIALOG_BACK ,DIA_Chic_PICKPOCKET_BACK); Info_AddChoice (DIA_Chic_PICKPOCKET, DIALOG_PICKPOCKET ,DIA_Chic_PICKPOCKET_DoIt); };
func void DIA_Chic_PICKPOCKET_DoIt() { B_Beklauen (); Info_ClearChoices (DIA_Chic_PICKPOCKET); }; func void DIA_Chic_PICKPOCKET_BACK() { Info_ClearChoices (DIA_Chic_PICKPOCKET); };
instance DIA_Chic_Forest (C_INFO) { npc = NONE_666_Chic; nr = 9; condition = DIA_Chic_Forest_Condition; information = DIA_Chic_Forest_Info;
description = "Ты можешь помочь мне дайти до усадьбы Онара? ";
};
func void DIA_Chic_Forest_info () { AI_Output (other, self, "DIA_Chic_RangerHelp_Forest_15_00"); //Ты можешь помочь мне дайти до усадьбы Онара? AI_Output (self, other, "DIA_Chic_RangerHelp_Forest_09_01"); //Хорошо? }; instance DIA_Chic_GoNow (C_INFO) { npc = NONE_666_Chic; nr = 10; condition = DIA_Chic_GoNow_Condition; information = DIA_Chic_GoNow_Info; permanent = TRUE; description = " Okay, пошли. "; }; func void DIA_Chic_GoNow_Onar () { AI_Output (other, self, "DIA_Zaraza_GoNow_Onar_15_00"); // К Onars двор. ChicGuide_ZuOnar = TRUE; Npc_ExchangeRoutine (self, "GUIDE"); DIA_Chic_GoNow_GoingConditions (); };
func void DIA_Chic_GoNow_warte () { Info_ClearChoices (DIA_Zaraza_GoNow); }; Cохранил.Закомпелировал в спайсере,он выдаёт несколько(около 5) ошибок.Что я сделал не правильно?Делал по примеру Ларса(многое мог сделать не правильно).
|
|
|
08.06.2005, 22:01
|
#424
|
|
Re: Скриптинг в Готике
2TSYLin:
делал всё по подсказке из другой темы но ничего не получается
|
Где ты нашел такую функцию B_CreateAmbientInv(self,ITKE_Addon_Esteban_01); с двумя аргументами? Нужно использовать функцию CreateInvItem. Добавление от 06/08/05, в 22:09:46 2Bliz@rd:
Cохранил.Закомпелировал в спайсере,он выдаёт несколько(около 5) ошибок.Что я сделал не правильно?Делал по примеру Ларса(многое мог сделать не правильно).
|
Ищи и исправляй ошибки, что ты хочешь? Думаешь привел кусок кода и в нем все твои ошибки? Да они могут быть в любом месте, если не можешь разобраться с ошибками в Спейсере, используй Декомпилятор, там все ошибки расписаны подробно с указанием номера строки. И на будущее, если хочешь помощи в поиске ошибок, то приводи сообщение об ошибке и кусок кода, на который указывает ошибка. Учись, учись и учись!
|
|
|
08.06.2005, 22:42
|
#425
|
|
|
|
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
|
|
|
|
Re: Скриптинг в Готике
2Bliz@rd: У тебя в файле НПС должна быть прописана функция Она там есть?
|
|
|
09.06.2005, 10:26
|
#426
|
|
Re: Скриптинг в Готике
Вот скрипт моего диалога(поговорить с Грегом):
instance None_999_Leo_AskForSword (C_INFO) { npc = None_668_Leo; condition = None_668_Leo_AskForSword_Condition; information = None_668_Leo_AskForSword_Info; important = TRUE; permanent = FALSE; description = ""; };
FUNC int None_668_Leo_AskForSword_Condition() { if (hero.level >= 0) { return TRUE; }; return FALSE; };
func void None_668_Leo_AskForSword_Info() { AI_Output ( self, other, "None_668_Leo_AskForSword_Info_8_01"); // Эй, ты занят ?
Info_ClearChoices (None_668_Leo_AskForSword); Info_AddChoice (None_668_Leo_AskForSword, "Нет, а что?", None_668_Leo_AskForSword_Yes); Info_AddChoice (None_668_Leo_AskForSword, "Боюсь, что да", None_668_Leo_AskForSword_No); };
Func void None_668_Leo_AskForSword_No () { AI_Output(other,self, "None_668_Leo_AskForSword_Info_8_02"); // Я занят... AI_Output(self,other, "None_668_Leo_AskForSword_Info_8_03"); //(Перебивает)Ну и вали отсюда... AI_StopProcessInfos (self); }; func void None_668_Leo_AskForSword_Yes () { AI_Output(other,self,"None_668_Leo_AskForSword_Inf o_8_04"); // Да,вроде,нет. AI_Output(self,other,"None_668_Leo_AskForSword_Inf o_8_05"); // Тогда принеси мне Нужно чтобы ты поговорил с Грегом.
Log_CreateTopic (GunthersSword,LOG_MISSION); Log_SetTopicStatus (GunthersSword,LOG_SUCCESS); B_LogEntry(GunthersSword, "Лео попросил меня поговорить с Грегом"); AI_StopProcessInfos (self); };
// ************************ EXIT ************************** instance None_668_Leo_AskForSword_Exit (C_INFO) { npc = None_668_Leo; condition = None_668_Leo_AskForSword_Exit_Condition; information = None_668_Leo_AskForSword_Exit_Info; important = 0; permanent = 1; description = "конец"; };
FUNC int None_668_Leo_AskForSword_Exit_Condition() { return 1; };
FUNC VOID None_668_Leo_AskForSword_Exit_Info() { AI_StopProcessInfos ( self ); };
instance None_668_Leo_BringSword (C_INFO) { npc = None_668_Leo; condition = None_668_Leo_bringSword_Condition; information = None_668_Leo_bringSword_Info; important = FALSE; permanent = TRUE;
description = "Я поговорил с ним?"; };
FUNC int None_668_Leo_bringSword_Condition() {
if (Npc_KnowsInfo ( hero, None_668_Leo_AskForSword) &! int_GotSword && Npc_HasItems (other, PlayerTalkedToGreg) >= 1) { return TRUE; }; return FALSE; };
func void None_668_Leo_bringSword_Info()
{ Info_ClearChoices (None_668_Leo_bringSword);
Info_AddChoice (None_668_Leo_bringSword, "Я поговорил, но он просил ничего не говорить тебе", None_999_Leo_bringSword_Yes); Info_AddChoice (None_668_Leo_bringSword, "Он всё рассказал.", None_668_Leo_bringSword_No); };
func void None_668_Leo_bringSword_Yes () { AI_Output( other, self, "None_668_Leo_bringSword_Info_8_06"); //Я так не думаю. AI_Output( self, other, "None_668_Leo_bringSword_Info_8_07"); // Тогда получи!?! AI_StopProcessInfos (self); AI_StartState( self, ZS_Attack, 0, ""); };
func void None_668_Leo_bringSword_No () { AI_Output ( other, self, "None_999_Leo_bringSword_Info_8_08"); // Да я поговорил и он мне всё рассказал. AI_Output ( self, other, "None_999_Leo_bringSword_Info_8_09"); // Великолепно, а это мой подарок тебе - Яблоко.(смеется)
B_LogEntry (GunthersSword, "");
other.exp = other.exp + 100; other.lp = other.lp + 2; b_giveinvitems(other,self, ItFo_Fish,1); b_giveinvitems(self,other,ItFo_Apple,1); AI_StopProcessInfos (self); }; Потом в паке Story_Globals прописал var int PlayerTalkedToGreg;Спайсер выдавал ошибку NONE_668_Leo_AskForSword. Что я сделад н6е правильно? Делал по примеру принести меч.И ещё там где написано B_LogEntry (GunthersSword, "");что нужно написать?
|
|
|
09.06.2005, 11:06
|
#427
|
|
Re: Скриптинг в Готике
2Bliz@rd:
И ещё там где написано B_LogEntry (GunthersSword, "");что нужно написать?
|
Написать нужно текст, который появится в дневнике в теме GunthersSword.
Потом в паке Story_Globals прописал var int PlayerTalkedToGreg;Спайсер выдавал ошибку NONE_668_Leo_AskForSword. Что я сделад н6е правильно?
|
А сам-то текст ошибки какой? Если этот скрипт делал отдельным файлом, то включил ли его в компиляцию? Есть ещё ошибка: Npc_HasItems(other,PlayerTalkedToGreg) - вторым аргументом здесь должна быть ссылка на предмет и функция возвращает кол-во таких предметов у НПС, а у тебя кокой-то var int PlayerTalkedToGreg. ЗЫ: Когда пишешь скрипт нужно понимать назначение каждого слова, иначе ничего толкового не выйдет.
|
|
|
10.06.2005, 09:05
|
#431
|
|
|
|
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
|
|
|
|
Re: Скриптинг в Готике
2Jeene: А простое
Код:
self.name[0] = "Пабло"
во время разговора не работает?
|
|
|
10.06.2005, 13:08
|
#432
|
|
Re: Скриптинг в Готике
Я немного изменил скрипт:
instance None_668_Leo_AskForSword (C_INFO) { npc = None_668_Leo; condition = None_668_Leo_AskForSword_Condition; information = None_668_Leo_AskForSword_Info; important = TRUE; permanent = FALSE; description = ""; };
FUNC int None_668_Leo_AskForSword_Condition() { if (hero.level >= 0) { return TRUE; }; return FALSE; };
func void None_668_Leo_AskForSword_Info() { AI_Output ( self, other, "None_668_Leo_AskForSword_Info_8_01"); // Эй, ты занят ?
Info_ClearChoices (None_668_Leo_AskForSword); Info_AddChoice (None_668_Leo_AskForSword, "Нет, а что?", None_668_Leo_AskForSword_Yes); Info_AddChoice (None_668_Leo_AskForSword, "Боюсь, что да", None_668_Leo_AskForSword_No); };
Func void None_668_Leo_AskForSword_No () { AI_Output(other,self, "None_668_Leo_AskForSword_Info_8_02"); // Я занят... AI_Output(self,other, "None_668_Leo_AskForSword_Info_8_03"); //(Перебивает)Ну и вали отсюда... AI_StopProcessInfos (self); }; func void None_668_Leo_AskForSword_Yes () { AI_Output(other,self,"None_668_Leo_AskForSword_Inf o_8_04"); // Да,вроде,нет. AI_Output(self,other,"None_668_Leo_AskForSword_Inf o_8_05"); // Тогда принеси мне Нужно чтобы ты поговорил с Грегом.
Log_CreateTopic (GunthersSword,LOG_MISSION); Log_SetTopicStatus (GunthersSword,LOG_SUCCESS); B_LogEntry(GunthersSword, "Лео попросил меня поговорить с Грегом"); AI_StopProcessInfos (self); };
// ************************ EXIT ************************** instance None_668_Leo_AskForSword_Exit (C_INFO) { npc = None_668_Leo; condition = None_668_Leo_AskForSword_Exit_Condition; information = None_668_Leo_AskForSword_Exit_Info; important = 0; permanent = 1; description = "конец"; };
FUNC int None_668_Leo_AskForSword_Exit_Condition() { return 1; };
FUNC VOID None_668_Leo_AskForSword_Exit_Info() { AI_StopProcessInfos ( self ); };
instance None_668_Leo_BringSword (C_INFO) { npc = None_668_Leo; condition = None_668_Leo_bringSword_Condition; information = None_668_Leo_bringSword_Info; important = FALSE; permanent = TRUE;
description = "Я поговорил с ним?"; };
FUNC int None_668_Leo_bringSword_Condition() {
if (Npc_KnowsInfo ( hero, None_668_Leo_AskForSword) { return TRUE; }; return FALSE; };
func void None_668_Leo_bringSword_Info()
{ Info_ClearChoices (None_668_Leo_bringSword);
Info_AddChoice (None_668_Leo_bringSword, "Я поговорил, но он просил ничего не говорить тебе", None_668_Leo_bringSword_Yes); Info_AddChoice (None_668_Leo_bringSword, "Он всё рассказал.", None_668_Leo_bringSword_No); };
func void None_668_Leo_bringSword_Yes () { AI_Output( other, self, "None_668_Leo_bringSword_Info_8_06"); //Я так не думаю. AI_Output( self, other, "None_668_Leo_bringSword_Info_8_07"); // Тогда получи!?! AI_StopProcessInfos (self); AI_StartState( self, ZS_Attack, 0, ""); };
func void None_668_Leo_bringSword_No () { AI_Output ( other, self, "None_668_Leo_bringSword_Info_8_08"); // Да я поговорил и он мне всё рассказал. AI_Output ( self, other, "None_668_Leo_bringSword_Info_8_09"); // Великолепно, а это мой подарок тебе - Яблоко.(смеется)
B_LogEntry (GunthersSword, "Поговорить с Грегом");
other.exp = other.exp + 100; other.lp = other.lp + 2; b_giveinvitems(self,other,ItFo_Apple,1); AI_StopProcessInfos (self); }; А в Story_Globals прописал const string GunthersSword = "Поговорить с Грегом"; var int int_GotSword; Закомпелировал.Выдал одну ошибку U:PAR:Missing')'(line 87).С чем связана эта ошибка? И ещё когда захожу в игру и на чинаю говорить с NPC то сразу появляется только выбор (Я занят и Да,вроде,нет).И запись в дневнике появляется.Всё.Разговоров никаких нету.Почему?
|
|
|
10.06.2005, 13:22
|
#433
|
|
Re: Скриптинг в Готике
] 2TycoooN:
А простое self.name[0] = "Пабло" во время разговора не работает?
|
А где его прописывать? В смысле перед какой строчкой?
|
|
|
10.06.2005, 14:12
|
#434
|
|
Re: Скриптинг в Готике
2Bliz@rd:
Закомпелировал.Выдал одну ошибку UAR:Missing')'(line 87).С чем связана эта ошибка?
|
Кол-во открывающих скобок и закрывающих в одном выражении должно быть равно, а у тебя if (Npc_KnowsInfo ( hero, None_668_Leo_AskForSword), две открывающие и одна закрывающая.
И ещё когда захожу в игру и на чинаю говорить с NPC то сразу появляется только выбор (Я занят и Да,вроде,нет).И запись в дневнике появляется.Всё.Разговоров никаких нету.Почему?
|
А как ты хотел, при любой ошибке датник не создается, так что у тебя получилось, неизвестно.
|
|
|
11.06.2005, 09:44
|
#436
|
|
|
|
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
|
|
|
|
Re: Скриптинг в Готике
2Bliz@rd: [q]Выдал одну ошибку U:PAR:Missing')'(line 87)[/q] Ты что, невменяемый? Там английским языком написано
Код:
U:PAR:Пропущено')'(линия 87)
. Неужели это не понятно?!
Потому что надо спейсером получить после апдейта новый OU.bin and Ou.csl,смотри тему Русская дока по Spacer II
|
Потому что надо юзать декомпилятор от Vam'a ;D :lol: 2Jeene:
А где его прописывать? В смысле перед какой строчкой?
|
Ну дык где угодно во время разговора. Как вариант, перед первым
|
|
|
11.06.2005, 10:08
|
#437
|
|
Re: Скриптинг в Готике
2TycoooN:
Ну дык где угодно во время разговора. Как вариант, перед первым AI_Output()
|
Спасибо, все работает!
|
|
|
13.06.2005, 15:31
|
#438
|
|
Re: Скриптинг в Готике
Вот мой скрипт (Убить Вино): instance None_666_Leo_AskForSword (C_INFO) { npc = None_666_Leo; condition = None_666_Leo_AskForSword_Condition; information = None_666_Leo_AskForSword_Info; important = TRUE; permanent = FALSE; description = ""; };
FUNC int None_666_Leo_AskForSword_Condition() { if (hero.level >= 0) { return TRUE; }; return FALSE; };
func void None_666_Leo_AskForSword_Info() { AI_Output ( self, other, "None_666_Leo_AskForSword_Info_8_01"); // Эй, ты занят ?
Info_ClearChoices (None_666_Leo_AskForSword); Info_AddChoice (None_666_Leo_AskForSword, "Нет, а что?", None_666_Leo_AskForSword_Yes); Info_AddChoice (None_666_Leo_AskForSword, "Боюсь, что да", None_666_Leo_AskForSword_No); };
Func void None_666_Leo_AskForSword_No () { AI_Output(other,self, "None_666_Leo_AskForSword_Info_8_02"); // Я занят... AI_Output(self,other, "None_666_Leo_AskForSword_Info_8_03"); //(Перебивает)Ну и вали отсюда... AI_StopProcessInfos (self); }; func void None_666_Leo_AskForSword_Yes () { AI_Output(other,self,"None_666_Leo_AskForSword_Inf o_8_04"); // Да,вроде,нет. AI_Output(self,other,"None_666_Leo_AskForSword_Inf o_8_05"); // Тогда убей 'Вино'.
Log_CreateTopic (TOPIC_KillVino, LOG_MISSION); Log_SetTopicStatus (TOPIC_KillVino, LOG_RUNNING); B_LogEntry(TOPIC_KillVino, "Зараза попросил меня убить 'Вино'); AI_StopProcessInfos (self); };
// ************************ EXIT ************************** instance None_666_Leo_AskForSword_Exit (C_INFO) { npc = None_666_Leo; condition = None_666_Leo_AskForSword_Exit_Condition; information = None_666_Leo_AskForSword_Exit_Info; important = 0; permanent = 1; description = "конец"; };
FUNC int None_666_Leo_AskForSword_Exit_Condition() { return 1; };
FUNC VOID None_666_Leo_AskForSword_Exit_Info() { AI_StopProcessInfos ( self ); }; INSTANCE DIA_Leo_VinoDead (C_INFO) { npc = NONE_666_Leo; nr = 8; condition = DIA_Leo_HoshDead_Condition; information = DIA_Leo_HoshDead_Info; permanent = FALSE; description = "мертв!"; };
FUNC INT DIA_Leo_VinoDead_Condition() { if (Npc_IsDead (Vino)) && (MIS_KillVino == LOG_RUNNING) { return TRUE; }; };
FUNC VOID DIA_Leo_VinoDead_Info() { AI_Output (other,self ,"DIA_Leo_VinoDead_8_06"); //мертв! AI_Output (self ,other,"DIA_Leo_VinoDead_8_07"); //Вероятно, мы имеем, все же, еще шанс. AI_Output (self ,other,"DIA_Leo_VinoDead_8_08"); //Я думаю, это даст нам отсрочку от минимум одной недели. MIS_KillVino = LOG_SUCCESS; }; То что я написал это правильно?И ещё что нужно прописывать в папке Story_Globals касательно моего диалога?
|
|
|
Здесь присутствуют: 8 (пользователей: 0 , гостей: 8)
|
|
Ваши права в разделе
|
|
|
|
Текущее время: 15:14. Часовой пояс GMT +4.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|