|
|
19.08.2005, 00:44
|
#763
|
|
|
|
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
|
|
|
|
Re: Скриптинг в Готике
2DEDROIT:
Может быть я не туда перенёс?
|
Может :P Вообще, если ты хочешь получить ответ, приведи сюда сами скрипты (или их части), напиши конкретнее что ты делал, приведи тексты ошибок zSpy. А так твой пост просто флудом попахивает.
|
|
|
19.08.2005, 13:12
|
#764
|
|
Re: Скриптинг в Готике
2TycoooN: Вот превоначальный скрипт амулета превращение в орка: instance ItAm_Amulet_of_Lunatics(C_Item) { * * name = NAME_Amulett; * * mainflag = ITEM_KAT_MAGIC; * * flags = ITEM_AMULET; * * value = 0; * * visual = "ItAm_Hp_01.3ds"; * * visual_skin = 0; * * material = MAT_METAL; * * on_equip = Equip_ItAm_Amulet_of_Lunatics; * * on_unequip = UnEquip_ItAm_Amulet_of_Lunatics; * * wear = WEAR_EFFECT; * * effect = "SPELLFX_ITEMGLIMMER"; * * description = "Амулет сумасшедших"; * * inv_zbias = INVCAM_ENTF_AMULETTE_STANDARD; };
func void Equip_ItAm_Amulet_of_Lunatics() { * * Npc_SetTrueGuild (self, *GIL_ORC); * * self.guild = *GIL_ORC; * * Mdl_SetVisual(self,"Orc.mds"); * * Mdl_SetVisualBody(self,"Orc_BodyShaman",DEFAULT,DE FAULT,"Orc_HeadShaman",DEFAULT,DEFAULT,-1); };
func void UnEquip_ItAm_Amulet_of_Lunatics() { * * Npc_SetTrueGuild (self, *GIL_NONE); * * self.guild = *GIL_NONE; * * Mdl_SetVisual (self, "HUMANS.MDS"); * * Mdl_SetVisualBody (self, "hum_body_Naked0", 9, 0, "Hum_Head_Pony", Face_N_Player, 0, NO_ARMOR); }; Я засунул его в IT_Amulette!Компилирую.Без ошибок.Потом вхожу в игру одеваю его,но видно почему-то только орочья голова! Потом я изменил вот эту часть func void Equip_ItAm_Amulet_of_Lunatics() { * * Npc_SetTrueGuild (self, *GIL_ORC); * * self.guild = *GIL_ORC; * * Mdl_SetVisual (self, "Zombie.mds"); * * Mdl_SetVisualBody (self, "Zom_Body", 0, 0, "Zom_Head", 1, DEFAULT, -1);
}; на эту(в принципе только добавил B_SetVisuals_OrcShaman();): func void Equip_ItAm_Amulet_of_Lunatics() { * * Npc_SetTrueGuild (self, *GIL_ZOMBIE); * * B_SetVisuals_OrcShaman(); * * self.guild = *GIL_ZOMBIE; * * Mdl_SetVisual(self,"Orc.mds"); * * Mdl_SetVisualBody(self,"Orc_BodyShaman",DEFAULT,DE FAULT,"Orc_HeadShaman",DEFAULT,DEFAULT,-1); }; Но у меня компиляция выдавала ошибку: 00:01 Fatal:-1 U: PAR:ITEMS/IT_AMULETTE.D:Unknown indetifier:B_SETVISUALS_ORCSHAMAN(line 474)...<zParser.cpp,#599> Потом Vam кое-что псоветовал(написано выше): И я перенёс файл IT_Amulette(в котором находится амулет превращения в орка) в папку NPC. Закомпилировал.Без ошибок.Захожу в игру с помощью марвина пытался вызвать амулет,а он мне нет такого! Потом я попробывал прописать амулет в файле PC_HERO.Прописал(CreateInvItems(self,ItAm_Amulet_o f_Lunatics,1);): Но компилятор выдаёт ошибку: 00:15 Fatal:-1 U: PAR:STORY/NPC/PC_HERO.D:Unknown indetifier:ITAM_AMULET_OF_LUNATICS...<zParser.cpp, #599> Как мне её исправить,если я не туда перенёс то куда надо?Проблема в этом амулете,то что при одевание видно только голова,а нужно было чтобы видно было всё!Как это сделать?
|
|
|
19.08.2005, 17:12
|
#767
|
|
|
|
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
|
|
|
|
Re: Скриптинг в Готике
2DEDROIT:
Сейчас кое-что изменил в файле GOTHIC.SRC,изменил следующее,раньше в GOTHIC.SRC было прописано Items\IT_Amulette.d,а так как я пренёс этот файл в папку NPC,тоя изменил на это Story\NPC\IT_Amulette.d
|
Именно это я и имел в виду.
00:01 Fatal:-1 U: PAR:STORY/NPC/IT_AMYLETTE.D.D:Unknown indetifier:B_SETVISUALS_ORCSHAMAN(line 471)...<zParser.cpp,#599>
|
Все равно у тебя получается так, что функция B_SETVISUALS_ORCSHAMAN() компилируется позже амулета.
|
|
|
19.08.2005, 17:59
|
#769
|
|
|
|
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
|
|
|
|
Re: Скриптинг в Готике
2DEDROIT:
Но как сделать,чтобы всё работало!Заранее благодарен!
|
Я бы на твоем месте вообще не стал зать эту функцию, а просто вместо ее вызова прописал бы ее содержимое:
Код:
Mdl_SetVisual(self,"Orc.mds"); Mdl_SetVisualBody(self,"Orc_BodyShaman",DEFAULT,DEFAULT,"Orc_HeadShaman",DEFAULT,DEFAULT,-1);
|
|
|
19.08.2005, 20:12
|
#771
|
|
Re: Скриптинг в Готике
2DEDROIT:
Потом Vam кое-что псоветовал(написано выше): И я перенёс файл IT_Amulette(в котором находится амулет превращения в орка) в папку NPC. Закомпилировал.Без ошибок.Захожу в игру с помощью марвина пытался вызвать амулет,а он мне нет такого!
|
Я тебе советовал совсем другое, внимательнее надо читать: функцию, на которую ругается компилятор т.е. B_SETVISUALS_ORCSHAMAN() из файла MST_OrcShaman.d нужно перенести в файл с амулетом, записав выше этой строки instance ItAm_Amulet_of_Lunatics(C_Item). Сам файл амулета никуда переносить не надо.
|
|
|
19.08.2005, 21:25
|
#772
|
|
Re: Скриптинг в Готике
2Vam: В файл IT_Amulette.d я прописал следующее: B_SetVisuals_OrcShaman(); ItAm_Amulet_of_Lunatics(C_Item) { name = NAME_Amulett; mainflag = ITEM_KAT_MAGIC; flags = ITEM_AMULET; value = 0; visual = "ItAm_Hp_01.3ds"; visual_skin = 0; material = MAT_METAL; on_equip = Equip_ItAm_Amulet_of_Lunatics; on_unequip = UnEquip_ItAm_Amulet_of_Lunatics; wear = WEAR_EFFECT; effect = "SPELLFX_ITEMGLIMMER"; description = "Амулет сумасшедших"; inv_zbias = INVCAM_ENTF_AMULETTE_STANDARD; }; func void Equip_ItAm_Amulet_of_Lunatics() { Npc_SetTrueGuild (self, GIL_ORC); B_SetVisuals_OrcShaman(); self.guild = GIL_ORC; Mdl_SetVisual(self,"Orc.mds"); Mdl_SetVisualBody(self,"Orc_BodyShaman",DEFAULT,DE FAULT,"Orc_HeadShaman",DEFAULT,DEFAULT,-1); }; func void UnEquip_ItAm_Amulet_of_Lunatics() { Npc_SetTrueGuild (self, GIL_NONE); self.guild = GIL_NONE; Mdl_SetVisual (self, "HUMANS.MDS"); Mdl_SetVisualBody (self, "hum_body_Naked0", 9, 0, "Hum_Head_Pony", Face_N_Player, 0, NO_ARMOR); }; Компилятор выдаёт 00:01 Fatal:-1 U: PAR:ITEMS/IT_AMULETTE.D:Syntax error:B_SETVISUALS_ORCSHAMAN(line 451)...<zParser.cpp,#599> А как её исправить?
|
|
|
19.08.2005, 23:18
|
#774
|
|
|
|
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
|
|
|
|
Re: Скриптинг в Готике
2DEDROIT:
B_SetVisuals_OrcShaman();
|
И зачем? Ты вообще понимаешь, что делаешь? Ты перенес вызов функции, а надо было - саму функцию. 2TSYLin:
Но выдаётся ошибка unknown identifier SPL_TrfGiantRat
|
Ну а что такое это твое SPL_TrfGiantRat?
|
|
|
20.08.2005, 03:01
|
#775
|
|
|
|
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
|
|
|
|
Re: Скриптинг в Готике
2TSYLin: Это ты не перенес сам скрипт трансформации. Ты поиском по файлам поищи, все поймешь.
|
|
|
20.08.2005, 15:52
|
#776
|
|
Re: Скриптинг в Готике
Привет, народ! У меня накопилась парочка вопросов по скриптам и вот я решил к вам обратиться.
1. Насчет компиляции. Я пока компилирую Spacer'om все отлично и без ошибок. Я попытался скомпилировать программой Vam'a, делал все как положено, в отдельную папку, запускал через ярлык.
Но компиляция не получается и zSpy постоянно выдает сообщения типа "Possible function should return value" , а в конце и вовсе пишет, что насобирал 50 ошибок. Я пытался в ручную править скирпты , вставлял "return TRUE;", но по мне это нереально столько скриптов исправить, неужели вы все так делали? Может у кого-то есть готовые?
С компиляцией декомпилированного тоже не получается. Может это из-за того, что сначала я положил GotrhicSourcer в папку с готикой? Но вот с декомпиляцией проблем нет.
2. Насчет диалогов. Диалоги я вставлять вроде как научился, но я до сих пор не понял как сделать субтитры. Я так думаю, что они идут после // в скрипте. (OU я обновлял через SPACER)
Все это по первой Готике.(пиратская английская)
|
|
|
20.08.2005, 16:26
|
#777
|
|
|
|
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
|
|
|
|
Re: Скриптинг в Готике
2VasyaRV: Делай через прогу от Vam'a. Читай тему 'Декомпилятор скриптов', читай readme к проге. Все понятно. З.Ы.
Все это по первой Готике.(пиратская английская)
|
Это где ж ты такую урвал? Неужели сейчас нет нормальной русской? Ну или на крайняк лоХализованной Руссобитом.
|
|
|
20.08.2005, 19:55
|
#779
|
|
Re: Скриптинг в Готике
Я наверное уже запарил, ну уж извените, что я иногда туг на голову. Дело вот в чём. instance DIA_DUSTY_goback(C_Info) { * * *npc = sek_6009_dusty; * * *nr = 999; * * *condition = dia_dusty_goback_condition; * * *information = dia_dusty_goback_info; * * *permanent = FALSE; * * *important = TRUE; }; func int dia_dusty_goback_condition() { * * *if((Kapitel == 3) && ((hero.guild == GIL_SEK) || (hero.guild == GIL_GUR) || (hero.guild == GIL_TPL))) * * *{ * * * * * *return TRUE; * * *}; * * *return FALSE; }; func void dia_dusty_goback_info() { * * *AI_Output(self,other,"DIA_Dusty_goback_13_08"); * * *//Пожалусто, помоги мне попасть в лагерь. * * *Log_CreateTopic(TOPIC_dusty_goback,LOG_MISSION); * * *Log_SetTopicStatus(TOPIC_dusty_goback,LOG_Running ); * * *B_LogEntry(TOPIC_dusty_goback,"Дасти хочет, что бы я помог ему попасть в лагерь."); * * *Info_ClearChoices (dia_dusty_goback); * * *Info_AddChoice (dia_dusty_goback, "Да, я помогу тебе", dia_dusty_goback_Yes); * * *Info_AddChoice (dia_dusty_goback, "нет!", dia_dusty_goback_No); ); func void dia_dusty_goback_Yes { * * *AI_Output(other,self,"DIA_Dusty_goback_13_11"); * * *//Да,я помогу тебе. Собирайся. * * *AI_Output(self,other,"DIA_Dusty_goback_13_12"); * * *//Спасибо тебе, я уже в дороге. * * *B_LogEntry(TOPIC_dusty_goback,"Ну чтож, я согласен."); * * *AI_StopProcessInfos(self); * * *Npc_ExchangeRoutine(self,"FollowShip"); * * *self.aivar[AIV_PARTYMEMBER] = TRUE; ); func void dia_dusty_goback_No { * * *AI_Output(other,self,"DIA_Dusty_goback_13_09"); * * *//Нет * * *AI_Output(self,other,"DIA_Dusty_goback_13_10"); * * *//Ты об этом сильно пожалеешь, умри же! * * *TOPIC_dusty_goback = LOG_FAILED; * * *AI_StopProcessInfos(self); * * *Npc_ExchangeRoutine(self,"Ship"); * * *B_Attack(self,other,AR_NONE,1); ); Но компилятор выдаёт unknown identifier ); (на последней строке) Что делать? Добавление от 08/20/05, в 19:15:16
Но компилятор выдаёт unknown identifier ); (на последней строке)
|
Ой, на строке после Info_AddChoice (dia_dusty_goback, "нет!", dia_dusty_goback_No); ибыло написано unknown identifier : )
|
|
|
20.08.2005, 20:54
|
#780
|
|
|
|
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
|
|
|
|
Re: Скриптинг в Готике
2TSYLin:
func void dia_dusty_goback_No
|
Попробуй писать
Код:
func void dia_dusty_goback_No()
;D 2Finsternis: Скорее всего ты в своем мире не вызвал функции, отвечающие за отношения НПС между собой. Так что показывай свой startup.d ::)
|
|
|
20.08.2005, 21:35
|
#781
|
|
Re: Скриптинг в Готике
2TycoooN: Исправил и эту ошибку и другую, вот переделанный скрипт, однако ошибка таже.
instance DIA_DUSTY_goback(C_Info) { npc = sek_6009_dusty; nr = 999; condition = dia_dusty_goback_condition; information = dia_dusty_goback_info; permanent = FALSE; important = TRUE; };
func int dia_dusty_goback_condition() { if((Kapitel == 5) && ((hero.guild == GIL_SEK) || (hero.guild == GIL_GUR) || (hero.guild == GIL_TPL))) { return TRUE; }; return FALSE; };
func void dia_dusty_goback_info() { AI_Output(self,other,"DIA_Dusty_goback_13_00" ); //Наконец-то ты здесь, я ждал тебя. AI_Output(other,self,"DIA_Dusty_goback_13_01" ); //Что случилось? AI_Output(self,other,"DIA_Dusty_goback_13_02" ); //Тут в городе прошёл слух, что драконы мертвы, так же один из бывших воров Нового лагеря рассказал мне, AI_Output(self,other,"DIA_Dusty_goback_15_03" ); //что наш болотный лагерь был поглащён Адоносом. Но остались еще люди ранее проживавшие там, после подения барьера обосновавшиеся, где-то не по-далеку. AI_Output(self,other,"DIA_Dusty_goback_13_04" ); //До моих ушей, так же дошло, что за главного у них - Идол Нетбек. Это мой друг. Ещё до барьера мы были друзьями, и жили рядом, в Отивисе, но город взбунтовался, AI_Output(self,other,"DIA_Dusty_goback_13_05" ); //Ратбар II сжег его до тла, всех виновных и не виновных он заставил добывать руду, а вскоре и был создан барьер. AI_Output(other,self,"DIA_Dusty_goback_13_06" ); //Ну а от меня ты чего хочешь? AI_Output(self,other,"DIA_Dusty_goback_13_07" ); //Город мне опастылил, гуру того и гляди набросятся на тебя, а эти жители ничем не отличются от волков, однако у Нетбека глуш, благодать. AI_Output(self,other,"DIA_Dusty_goback_13_08" ); //Пожалусто, помоги мне попасть к нему, я отплачу тебе. Log_CreateTopic(TOPIC_dusty_goback,LOG_MISSIO N); Log_SetTopicStatus(TOPIC_dusty_goback,LOG_Running ); B_LogEntry(TOPIC_dusty_goback,"Дасти хочет, что бы я помог ему попасть в Лесной лагерь."); Info_ClearChoices(dia_dusty_goback); Info_AddChoice(dia_dusty_goback,"Да, я помогу тебе",dia_dusty_goback_Yes); Info_AddChoice(dia_dusty_goback,"Да как ты смеешь попрекать Гуру!",dia_dusty_goback_No); );
func void dia_dusty_goback_Yes() { AI_Output(other,self,"DIA_Dusty_goback_13_11" ); //Да,я помогу тебе. Собирайся. AI_Output(self,other,"DIA_Dusty_goback_13_12" ); //Спасибо тебе, я уже в дороге. B_LogEntry(TOPIC_dusty_goback,"Ну чтож, я согласен."); AI_StopProcessInfos(self); Npc_ExchangeRoutine(self,"FollowShip"); self.aivar[AIV_PARTYMEMBER] = TRUE; );
func void dia_dusty_goback_No() { AI_Output(other,self,"DIA_Dusty_goback_13_09" ); //Да как ты смеешь попрекать Гуру! AI_Output(self,other,"DIA_Dusty_goback_13_10" ); //Ты об этом сильно пожалеешь, умри же! TOPIC_dusty_goback = LOG_FAILED; AI_StopProcessInfos(self); Npc_ExchangeRoutine(self,"Ship"); B_Attack(self,other,AR_NONE,1); );
|
|
|
20.08.2005, 21:49
|
#782
|
|
|
|
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
|
|
|
|
Re: Скриптинг в Готике
2TSYLin: Все просто до нельзя. :) Я выделю кусок кода, все поймешь сам. :)
Info_AddChoice(dia_dusty_goback,"Да, я помогу тебе",dia_dusty_goback_Yes); Info_AddChoice(dia_dusty_goback,"Да как ты смеешь попрекать Гуру!",dia_dusty_goback_No); ); Понял, нет? Скобка не круглая,а фигурная нужна. И ниже такая же ошибка. Удачи.
|
|
|
21.08.2005, 00:44
|
#784
|
|
Re: Скриптинг в Готике
2TycoooN: Так что показывай свой startup.d Нет, как раз в startup.d я все правильно прописал. Я 6 часов ломал голову, что же было не так и вот наткнулся на такой глюк: Нельзя телепортировать непися из диалога, т.е. когда с кем нибудь разговариваешь нельзя телепортировать себя или собеседника не окончив диалог. Тогда получается эффект "невидимости", меня никто не видит, со мной никто не говорит, на меня никто не нападает. Блин, эта ошибка стоила мне 6 потерянных часов времени! :(
Скорее всего ты в своем мире не вызвал функции, отвечающие за отношения НПС между собой. * А любой нпс должен давать сдачи, если на него нападают.
Вот код неправильного скрипта: func void DIA_Seb_mod_Isp_Redi_Info() { AI_Output (other, self, "Seb_mod_Isp_Redi_01_00");//текст AI_Output (self, other, "Seb_mod_Isp_Redi_01_01");//текст AI_StopProcessInfos (self); AI_Teleport (NoNe_30040_Vilfild, "LEICHENTELE"); //так можно B_StartOtherRoutine (NoNe_30040_Vilfild, "Ispitanie"); // и так можно AI_Teleport (pc_hero, "LEICHENTELE"); // а вот так нельзя };
Также нельзя писать вот что: func void DIA_Vilfild_mod_Help_Info() { AI_Output (self, other, "DIA_Vilfild_mod_Help_01_00");//текст AI_Teleport (NoNe_30040_Vilfild, "LEICHENTELE_02"); B_StartOtherRoutine (NoNe_30040_Vilfild, "Ispitaniend"); AI_StopProcessInfos (self); };
Спасибо за отзыв! ;)
|
|
|
21.08.2005, 12:37
|
#785
|
|
Re: Скриптинг в Готике
2Finsternis: Хотелось бы высказаться..
А любой нпс должен давать сдачи, если на него нападают.
|
Не дерётся Рокфелер сколько его не бей и Ксардас. =) Если дать Ксардасу в Бубен один раз, он скажет типа больше не надо.. Второй раз кастует сон. Если npctype_friend подратсья очень трудно. =)
|
|
|
23.08.2005, 00:50
|
#788
|
|
Re: Скриптинг в Готике
2Bog-Dan: Если ты хочешь, чтобы один диалог следовал за другим, то вместо func int Dia_Evin_suka_go_condition() { var C_Npc Edvin_1; Edvin_1 = Hlp_GetNpc(TPL_9129_Edvin); if(Edvin_1.aivar[AIV_WASDEFEATEDBYSC] == 1) { return 1; }; };
напиши вот что: func int Dia_Evin_suka_go_condition() { var C_Npc Edvin_1; Edvin_1 = Hlp_GetNpc(TPL_9129_Edvin); if ((Edvin_1.aivar[AIV_WASDEFEATEDBYSC] == 1) && Npc_KnowsInfo (other, XXX )) { return 1; }; }; где XXX - это имя инстанции предыдущего диалога. Т.е. новый диалог станет доступным только если состоялся предыдущий дилог. Если не получится, то попробуй убрать Edvin_1.aivar[AIV_WASDEFEATEDBYSC] == 1. И вообще, если тебе не трудно, объясни пожалуйста, что такое Edvin_1.aivar[AIV_WASDEFEATEDBYSC] == 1.
Это только один из множества вариантов. Можно также объявить переменную, присвоить ей значение TRUE если состоялся нужный диалог, а в функции func int ХХХ_condition() проверить значение переменной. Если она истинна, то соответственно выполнится диалог.
|
|
|
23.08.2005, 23:27
|
#793
|
|
Re: Скриптинг в Готике
2Finsternis:
Сорри за оффтоп, и назойливость, но не мог бы ты научить меня создавать заклинания? Мне нужны 2 заклинания телепортации.
|
Конкретно по телепортации: 1. Выбираешь свободный номер заклинания в Constants.d. Например 99. const int SPL_TeleportOWCoastBase = 99;2. там же, чуть ниже в массиве spellFxInstanceNames прописываешь этому номеру нужный визуальный эффект из VisualFX. Т.е. вместо "Light" в 99 позиции пишешь "Teleport". 3. ещё в одном массиве прямо под ним spellFxAniLetters - пишешь в той же 99 позиции "HEA". Это анимация человека, как я понимаю. Т.е. подъем рук вверх. 4. в Text.d в массиве TXT_SPELLS в той же 99 позиции пишешь, например "Телепорт в лесной лагерь" 5. в Spell_ProcessMana.d вставляешь [pre] if (activeSpell == SPL_TeleportOWCoastBase) { return Spell_Logic_TeleportOWCoastBase (manaInvested); };
[/pre] 6. В Spell_Teleport_Alle.d, где прописаны все телепорты: [pre] func int Spell_Logic_TeleportOWCoastBase(var int manaInvested) { if (Npc_GetActiveSpellIsScroll (self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll)) { return SPL_SENDCAST; } else if (self.attribute[ATR_MANA] >= SPL_Cost_Teleport) { return SPL_SENDCAST; }; return SPL_NEXTLEVEL; };
func void Spell_Cast_TeleportOWCoastBase () { B_PrintTeleportTooFarAway (OldWorld_Zen); if (Npc_GetActiveSpellIsScroll (self)) { self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_Scroll; } else { self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_Teleport; }; AI_Teleport (self, "WP_COAST_FOREST_59"); // точка назначения AI_PlayAni (self, "T_HEASHOOT_2_STAND"); };
[/pre] 7. и там же в функцию Spell_Cast_Teleport(): [pre] if (Npc_GetActiveSpell (self) == SPL_TeleportOWCoastBase) { Spell_Cast_TeleportOWCoastBase (); };
[/pre] 8. Создаешь руну: [pre] const int Value_Ru_TeleportOWCoastBase = 500;
instance ItRu_TeleportOWCoastBase(C_Item) { name = NAME_Rune; mainflag = ITEM_KAT_RUNE; flags = 0; value = Value_Ru_TeleportOWCoastBase; visual = "ItRu_Water16.3DS"; material = MAT_STONE; spell = SPL_TeleportOWCoastBase; wear = WEAR_EFFECT; effect = "SPELLFX_WEAKGLIMMER"; description = "Телепорт в лесной лагерь"; text[1] = NAME_Manakosten; count[1] = SPL_Cost_Teleport; text[5] = NAME_Value; count[5] = value; };
[/pre] По поводу visual. Либо бери картинку от любой другой руны, либо неиспользованные руны воды/Белиара. В последнем случае надо править текстуру. Вот и все ;)
|
|
|
24.08.2005, 00:29
|
#794
|
|
Re: Скриптинг в Готике
Цитата:
Сообщение от TSYLin link=board=gothic&t=1105030050&start=775#791 date=08/23/05, в 20:30:58
2Finsternis: Выложил на ДиккурикАГ(ящик Готов) и на Модификейшн(где первая версия Глобального мода)
|
Ну например переменная PLAYER_TALENT_SMITH[61] = TRUE (выковать лук) (мы изучили навык у боспера, и стало PLAYER_TALENT_SMITH[61] = TRUE), но меню не отабразится, до тех пор как мы выучим изготавливать шпаги, при том после обучения шпаги будут отабражатся все выученные виды оружия, кроме шпаг, но почему?
|
Проверьте размерность массива PLAYER_TALENT_SMITH. В файле Constants.d этот массив описан следующим образом: const int MAX_WEAPONS = 13; var int player_talent_smith[MAX_WEAPONS];
Индекс начинается с нуля, поэтому номер умения в данном случае не должен быть больше 12. В вашем скрипте есть значение PLAYER_TALENT_SMITH[77], значит MAX_WEAPONS должен быть не менее 78. Если это не так, то возможны любые чудеса. P.S. Это касается всех массивов.
|
|
|
24.08.2005, 10:36
|
#797
|
|
|
|
|
A.G.F.C.
Регистрация: 02.09.2005
Сообщений: 6
|
|
|
|
|
|
Re: Скриптинг в Готике
Проверьте размерность массива PLAYER_TALENT_SMITH. В файле Constants.d этот массив описан следующим образом:
|
Люди, дайте мыло свое, кому надо. Я отправлю вам исходники моих скриптов - конкретно, измененные файлы, их немного, чтобы вам не заниматься декомпиляцией. Там все прописано. Но не исключено, что могут быть баги. Сейчас времени нет тестировать. Добавление от 08/24/05, в 09:56:46
Люди, дайте мыло свое, кому надо. Я отправлю вам исходники моих скриптов - конкретно, измененные файлы, их немного, чтобы вам не заниматься декомпиляцией. Там все прописано. Но не исключено, что могут быть баги. Сейчас времени нет тестировать.
|
Не надо мыла. Вот прямая ссылка на архив с исходниками. Там все скрипты, которые я исправлял, с комментариями. http://marazmus.worldofgothic.ru/mar...th_scripts.zipЗабирайте, кому надо.
|
|
|
24.08.2005, 11:16
|
#798
|
|
Re: Скриптинг в Готике
2Finsternis:
Огромнейшее тебе спасибо, все получилось. Я знал как описать кастование и логику, а про массивы не знал. Теперь понятно, почему у меня не получалось.
|
Еще про массивы прикол такой. Название VisualFX (т.е. строчка в spellFxInstanceNames) используется для поиска имени функции Spell_Cast_XXX. Т.е. если вместо телепорта там написать "Light", то вызываться и кастоваться будет Spell_Cast_Light - Свет ;) Поэтому для любых своих спеллов (ну кроме телепорта, лечения) надо делать эффект в VisualFX.
|
|
|
24.08.2005, 14:37
|
#800
|
|
|
|
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
|
|
|
|
Re: Скриптинг в Готике
2Bog-Dan:
Как заставить НПС - чтобы он когда встал в указаный Waypoint то сразу же пил эллексир??Готика1 Какой скрипт отвечает за это? :/?
|
Выпить эликсир -
Код:
AI_UseItem(self,xxx);
|
|
|
Здесь присутствуют: 16 (пользователей: 0 , гостей: 16)
|
|
Опции темы |
Поиск в этой теме |
|
|
Ваши права в разделе
|
|
|
|
Текущее время: 00:48. Часовой пояс GMT +4.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|