|
|
16.07.2007, 11:08
|
#1721
|
|
Re: М: Скриптинг в Готике
Цитата:
Сообщение от Silver Wolf link=board=gothic&t=1105030050&start=3618250#36182 59 date=07/15/07, в 20:51:48
Можно скачать я.п. с интернета или покупать диск надо? Например Basic?
|
Если Вы решили изучать программирование, я бы посоветовал взять какой-нибудь распространенный дистрибутив линукса (например Федору). Там этих языков программирования (вместе с трансляторами), ну просто видимо-невидимо. Причем эти дистрибутивы необязательно покупать (хотя и покупать тоже можно). Можно просто, на совершенно законных основаниях, скопировать, или скачать из интернета. Проавда Готика там не пойдет :( Добавление от 07/16/07, в 10:17:23
Помещение предмета в MOB при помощи скриптов. При помощи функции Mob_CreateItems можно с сундук положить какой-либо предмет (во всяком случае, если вызвать ее в Startup.d). Это прекрасно работает, если у MOBа уникальное имя. Например у сундука в комнате рядом с главным входом в Старый Лагерь. Но по сюжету это предмет должен оказаться в сундуке у Идола Тарана. А имя сундука в его комнате не уникально. Очень много сундуков в СЛ с таким же именем. Можно ли (не редактируя ZEN) как-то исхитриться и поместить туда нужный предмет? Разумеется не при помощи квеста для ГГ :)
|
|
|
16.07.2007, 13:37
|
#1722
|
|
Re: М: Скриптинг в Готике
2Ukur:
так что ваше желание создать какой-либо мод вероятно в ближайшем будущем так и останется желанием...
|
Терпенье и труд с ума сведут ;D Попытаюсь разобраться.
|
|
|
16.07.2007, 15:40
|
#1724
|
|
Re: М: Скриптинг в Готике
Цитата:
Сообщение от MaGoth link=board=gothic&t=1105030050&start=3619475#36194 79 date=07/16/07, в 13:52:20
2kraw:
|
Нет нельзя, только редактирование Зена.
|
Да-а-а-а... Безрадостную перспективу Вы мне нарисовали. Придется переделывать сюжет.
|
|
|
17.07.2007, 18:16
|
#1728
|
|
Re: М: Скриптинг в Готике
А я бы не советовал начинать с дадала. "Неправильный" язык:
1) отсутствуют циклы. Что очень неправильно. 2) смесь событийнооуправляемости с функциональной управляемостью. 3) какая-то неочевидная асинхронность. Наткнулся на нее, когда нужно было в диалоге указывать на WP. А перед этим подбежать к ГГ. Как ни старался, персонаж сначала начинал указывать на WP, потом бежал, потом опускал руку. Как ни пытался, так и не сумел заставить сначала подбежать, а уж потом указать на WP.
Вот который язык прямо-таки предназначен для обучения, так это MODULA-2. Но у нее 2 недостатка:
1) Почти нигде и никем не используется 2) Не объектно-ориентированный
Хотя все, что я сказал - не более, чем мое частное мнение.
|
|
|
17.07.2007, 18:17
|
#1729
|
|
Re: М: Скриптинг в Готике
2Седрик: Про фрипоинты я уже сказал - запарно, но при грамотном применении автозамены вполне реально. Про сам респаун вроде не спрашивал - справку по функциям я тоже изучил внимательнейшим образом. :) Вопрос как раз в "поводе для появления". По логике таким поводом должны являться отсутствие предмета на месте && прошествие N дней. Вот этим я как раз и интересовался - можно ли сделать проверку на наличие предмета в точке, не создавая для него уникального instanceName (вот где можно ДЕЙСТВИТЕЛЬНО ЗАПАРИТЬСЯ). Функция Wld_IsFPAvailable, к сожалению, действует только на расстоянии 20 метров от указанного нпс - именно поэтому я упомянул "невидимого садовника". :)
Добавление от 07/17/07, в 17:21:53 2kraw: Я не имел в виду, что на Дедале стоит учиться программировать. Он слишком узконаправленный, и слишком часто действуют неочевидные особенности восприятия скриптов игрой, наподобие описанной. Речь идет о том, что если хочешь написать скрипт, не обязательно быть гуру в программировании - в игре достаточно образцов, на которых можно разобраться и "с нуля".
Добавление от 07/17/07, в 17:29:30 Еще одна мыслЯ: может, можно привязать запуск скриптовой функции к поднятию персонажем предмета? Тогда можно было бы запускать таймер в момент поднятия и вообще не использовать проверок. Буду крайне признателен за любые ЦУ. :)
|
|
|
20.07.2007, 09:15
|
#1730
|
|
Re: М: Скриптинг в Готике
2kraw:
3) какая-то неочевидная асинхронность. Наткнулся на нее, когда нужно было в диалоге указывать на WP. А перед этим подбежать к ГГ. Как ни старался, персонаж сначала начинал указывать на WP, потом бежал, потом опускал руку. Как ни пытался, так и не сумел заставить сначала подбежать, а уж потом указать на WP.
|
Как я понял эта неприятность связана только с одним фактором - отсутсвием файлов озвучания для конкретного диалога. Ибо если последовательность будет следующей: 1. Подойти к ГГ. 2. Сказать дежурную фразу. 3. Указать на объект. 4. Еще фразу. 5. Прекратить указывать на объект. То при наличии файлов озвучания для п.2 и 4 все выполнится в правильной последовательности. При отсутвии все будет как вы выше описали, в т.ч. будут сразу проигрываться указанные в любом месте анимации, передаваться предметы и вноситься записи в дневник. 2AltMuller: Насчет таймера идея-то неплохая, но в виду отсутвия вменяемых циклов реализовать его для конкретного растения вряд-ли будет возможно. В случае с НПЦ еще реально отталкиваться от ZS_***_LOOP и параметра, показывающего сколько времени НПЦ находиться в этом состоянии.
|
|
|
23.07.2007, 01:43
|
#1732
|
|
Re: М: Скриптинг в Готике
2Mager: Первое что приходит в голову - файл, содержащий instance Bla_bla_bla(Npc_Default) , т.е. объявление перца Bla_bla_bla, внесен в проект после файла, гда неписяй упоминается. Поправьте меня, товарищи гуру, если я чего-то не понимаю, но насколько я уяснил из личного опыта, оный файлик при выборе позиции в проекте надо вставить выше, чем Startup.d, Enter_XZ_World.d, или где там у камрада Mager'a прописан спаун персонажа и все прочее, что с ним связано.
2360: Думаю, я обошелся бы и без циклов, т.к. большая точность в вырастании растений не требуется - достаточно было бы стандартной проверки на кол-во прошедших дней. Жаль, нет для предметов команды, аналогичной Wld_InsertNpcAndRespawn - мир с самого начала сделан статичным, и полностью его, к сожалению, уже не переделаешь.
|
|
|
23.07.2007, 20:24
|
#1734
|
|
Re: М: Скриптинг в Готике
Собственно вот, все поудалял, оставил самый минимум. А ошибка это когда я воткнул Wld_InsertNpc(PC_Nikon,"OC1"); в Startup в func void Startup_Sub_Oldcamp()
instance PC_Nikon(Npc_Default) { name[0] = "Nikon"; npcType = npctype_friend; guild = GIL_GRD; level = 9999; voice = 11; id = 9999; flags = NPC_FLAG_IMMORTAL; Mdl_ApplyOverlayMds(self,"Humans_Militia.mds" ); Mdl_SetVisualBody(self,"hum_body_Naked0",0,1,"Hum _Head_FatBald",19,0,grd_armor_l); attribute[ATR_STRENGTH] = 100; attribute[ATR_DEXTERITY] = 100; attribute[ATR_MANA_MAX] = 350; attribute[ATR_MANA] = 350; attribute[ATR_HITPOINTS_MAX] = 500; attribute[ATR_HITPOINTS] = 500; Npc_SetTalentSkill(self,NPC_TALENT_MAGE,6); Npc_SetTalentSkill(self,NPC_TALENT_1H,1); Npc_SetTalentSkill(self,NPC_TALENT_2H,1) EquipItem(self,Oriks_Axt); fight_tactic = FAI_HUMAN_MASTER; }; func void Rtn_Start_9999() { TA_Position(0,0,12,0,"OCR_CAMPFIRE_A_MOVEMENT 3"); TA_Position(12,0,0,0,"OCR_CAMPFIRE_A_MOVEMENT 3"); };
|
|
|
24.07.2007, 00:08
|
#1737
|
|
Re: М: Скриптинг в Готике
2Mager:
Так на стартап и переходил, так с этим спасибо. Теперь еще 1 вопрос, где собственно лежат все диалоги?
|
Г1: (проект)/Story/Missions/DIA_... Г2,Г2а: (проект)/Story/Dialoge/DIA_... P.S. Удачного моддинга!
|
|
|
24.07.2007, 10:20
|
#1739
|
|
Re: М: Скриптинг в Готике
2Mager:
эм может не сюда, но ГотикСорс все компильнули линканул, а теперь когда дохожу до того места где должен быть перс, гама вылетает в винду и кучу ошибок выдает. Ктонить сталкивался с таким, если да, то как лечилось это?
|
Cпойлер(щелкните, чтобы прочесть):
ИМХО: на мой взгляд, проблема в отоброжении текстур непися, те у тебя может как отсутствовать сама текстура непися, так и отсутствовать текстура какого-нибудь предмета, связанного с неписем. Проверь там все...
|
|
|
24.07.2007, 15:51
|
#1740
|
|
Re: М: Скриптинг в Готике
С вылетом разобрался , недоглядел немнога. Вот гляньте скрипт, диалога не происходит, незнаю почему почему, все компилится и линкуется.
instance DIA_Nikon_EXIT(C_Info) { npc = PC_Nikon; nr = 999; condition = dia_Nikon_exit_condition; information = dia_Nikon_exit_info; permanent = 1; description = DIALOG_ENDE; };
func int dia_Nikon_exit_condition() { return 1; };
func void dia_Nikon_exit_info() { AI_StopProcessInfos(self); };
instance DIA_Nikon_Hello(C_Info) { npc = PC_Nikon; nr = 2; condition = dia_Nikon_hello_condition; information = dia_Nikon_hello_info; permanent = 0; description = "Привет!"; };
func int dia_Nikon_hello_condition() { return 1; };
func void dia_Nikon_hello_info() { AI_Output(hero,self,"DIA_Nikon_Hello_1"); //Привет. AI_Output(self,hero,"DIA_Nikon_Hello_2"); //Здаров. AI_Output(self,hero,"DIA_Nikon_Hello_3"); //Что такой слабак как ты делает здесь?. AI_Output(hero,self,"DIA_Nikon_Hello_4"); //Я осматриваюсь и, думаю, не надрать ли тебе задницу! AI_Output(self,hero,"DIA_Nikon_Hello_5"); //Ха-ха-ха, ну расмешил. Тебе бы шутом быть, имел бы успех. AI_Output(self,hero,"DIA_Nikon_Hello_6"); //Вот держи болотник, покури для вдохновения. B_GiveInvItems(self,hero,ItMiJoint_1,1); }
|
|
|
25.07.2007, 10:59
|
#1741
|
|
Re: М: Скриптинг в Готике
2Mager:
Точно почему сказать не могу, но вижу 2 отличия от моих вариантов:
1) нет в объявлении диалога important = 0; ну или important = 1;
2) я вместо hero в диалогах использую other.
Но, скорее всего дело не в этом. Скорее всего дело в том, что если Вы вставляете в скрипты объявление нового объекта (персонажа, предмета, диалога... в общем - instance), то этот объект появится в игре только в том случае, если Вы начнете новую игру, а не воспользуетесь сохраненной.
Ну и, с Вашего позволения, позволю себе дать Вам совет. не относящийся непосредственно к программированию. За что мы ценим Готику? За ее атмосферу. Поэтому почти все моды (за исключением пародийных, таких как wanderer) стараются эту атмосферу поддержать. И, как мне кажется, было бы неправильным использовать в диалогах американизмы ("надрать задницу", "парни, мы сделали это", "вау"....), жаргонизмы ("Здаров"...) и неологизмы ("покури для вдохновения"....). Оно конечно - "хозяин-барин" и автор мода волен делать то, что ему взблагорассудится. Поэтому воля Ваша, последовать моему совету или нет. Ну представьте, как нелепо звучало бы имя персонажа Готики - "Билл - кровавый ковбой" .
|
|
|
25.07.2007, 14:33
|
#1744
|
|
Re: М: Скриптинг в Готике
Цитата:
Сообщение от Mager link=board=gothic&t=1105030050&start=3638100#36381 23 date=07/25/07, в 11:48:04
2kraw: я тока недавно начал модингом заниматься, поэтому я пытаюсь проверить будет работать или, поэтому диалоги у меня такие, этож не финальная версия мода. То алл: Какой функцией можно проверить одет ли предмет или нет(в часности кольцо).
|
Одето ли кольцо - вряд ли. Имеет кольцо : Npc_HasItems
|
|
|
25.07.2007, 15:12
|
#1746
|
|
Re: М: Скриптинг в Готике
2Mager:
я тока недавно начал модингом заниматься, поэтому я пытаюсь проверить будет работать или, поэтому диалоги у меня такие, этож не финальная версия мода.
|
Я согласен с kraw. Нет ничего более постоянного чем временное... Так что если планируешь делать реальный мод, то делай сразу нормальные диалоги. Если так, балуешься, то оставляй как есть... дело твое...
|
|
|
26.07.2007, 15:01
|
#1749
|
|
Re: М: Скриптинг в Готике
2ВСЕМ СКРИПТЕРАМ: Вопрос наболел давно: Как известно, для того, чтобы перевести мод при помощи Gothic Sourcer 3.14 необходимо исправить ряд ошибок в немецких скриптах, среди которых есть ряд (штук 30), которые качуют из мода в мод. Так вот, вопрос такой: - все из-за того, что немецкие моддеры используют общий оригинал (в котором и лежит ряд типичных ошибок)? - немецкие модеры знают про ошибки? если - да, то почему не правят если - нет, то почему (они про Gothic Sourcer 3.1 же слышала!) - и почему если я вижу в немецких скриптах явный сбой, а эта функция в моде работает?
|
|
|
27.07.2007, 06:51
|
#1750
|
 |
|
 |
|
A.G.F.C.
Регистрация: 04.09.2006
Сообщений: 20
|
|
 |
|
 |
|
Re: М: Скриптинг в Готике
2John White:
Вопрос наболел давно: Как известно, для того, чтобы перевести мод при помощи Gothic Sourcer 3.14 необходимо исправить ряд ошибок в немецких скриптах, среди которых есть ряд (штук 30), которые качуют из мода в мод. Так вот, вопрос такой: - все из-за того, что немецкие моддеры используют общий оригинал (в котором и лежит ряд типичных ошибок)?
|
- да, юзают оригиналы скриптов.
- немецкие модеры знают про ошибки? если - да, то почему не правят
|
- знают, но если и правят, то только для себя.
если - нет, то почему (они про Gothic Sourcer 3.1 же слышала!)
|
- слышали, но не всем он нравится, и не все его используют.
- и почему если я вижу в немецких скриптах явный сбой, а эта функция в моде работает?
|
- потому что в исходниках скриптов она была верно написана. Здесь пара проблем, компиллируют не прогой Вама, декомпиллер сам допускает ошибки при декомпилляции. Хотя последнее крайне редко. Вообщем посадить всех на правильные скрипты бессмысленно, пока Декомпилер не станет нормально, работать и не будут убраны в нем все баги и глюки, только тогда имеет смысл всех призывать к работе со скриптами юзая эту прогу. Опять-же, имхо. *:)
|
|
|
27.07.2007, 09:56
|
#1752
|
|
Re: М: Скриптинг в Готике
2John White:
- и почему если я вижу в немецких скриптах явный сбой, а эта функция в моде работает?
|
В основном этот вопрос относится к возвращаемым значениям функций. Правила проверки всех функций в GS одинаковы. Но в скриптах имеются такие функции, которые вызываются только движком игры и возвращаемое значение анализирует только движок (например по три функции состояний; вход в состояние - возвращает тип void, цикл состояния - возвращает тип int, выход из состояния - возвращает тип void). Понятно, что если возвращаемое значение функции движком не анализируется, то в скриптах можно присвоить любой тип этому значению - ошибки здесь не будет. Но, в скриптах есть функции, которые возвращают строго конкретные типы, и эти типы используются. Компилятор движка не выполняет никаких проверок по типам, отсюда возможны ошибки. Компилятор GS строго проверяет соответствие всех типов и исключает появление многих ошибок.
|
|
|
28.07.2007, 11:23
|
#1754
|
|
Re: М: Скриптинг в Готике
2s@m:
func void INIT_NewMod() { B_InitMonsterAttitudes (); - Знаю для чего B_InitGuildAttitudes(); - Знаю для чего B_InitNpcGlobals (); но это незнаю, для чего оно и почему у меня компилятор ошибку на нём выдаёт?? };
|
Скорее всего потому, что самой ф-ции B_InitNpcGlobals не объявлено в проекте, вам не мешало бы привести полный текст ошибки. На будущее - расшифровку всех ошибок можно посмотреть в файле errors_ru.doc, который заботливо выложен в папке с Sourcer'om %)
|
|
|
28.07.2007, 14:27
|
#1755
|
 |
|
 |
|
A.G.F.C.
Регистрация: 04.09.2006
Сообщений: 20
|
|
 |
|
 |
|
Re: М: Скриптинг в Готике
2s@m: Мега-человек Vam не выкладывал скрипты. :)) Это делал камрад WSA
- данная строка, отвечает за инициализацию всех Нпс, если не ошибась. - ищи ее продолжение в других файла, а также:
2360: Скорее всего потому, что самой ф-ции B_InitNpcGlobals не объявлено в проекте,
|
*ее нужно объявить.
|
|
|
28.07.2007, 21:01
|
#1757
|
|
Re: М: Скриптинг в Готике
2MaGoth:
данная строка, отвечает за инициализацию всех Нпс, если не ошибась.
|
Ага, что-то вроде - загоняеть ссылки на ключевых персонажей в глобальные переменные, чтобы проще работать с ними было. :) 2s@m: А, собственно, зачем вам эта функция, если вы с нуля мод пишете? Можете спокойно её закомментировать. Если же вам действительно необходимо её объявить - создайте новый файл скрипта в корне папки Story и пропишите там что-нибудь вроде: func void B_InitNpcGlobals() { };
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
Опции темы |
Поиск в этой теме |
|
|
Ваши права в разделе
|
|
|
|
Текущее время: 06:09. Часовой пояс GMT +4.
|
|
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|