• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!

Вопросы по скриптингу

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
  • Первое сообщение
  • #1
Прежде чем задавать вопросы, ознакомьтесь с документацией..
1) Читать онлайн
2) Архив с офлайн-версией(chm) во вложении
 

Вложения

  • Vam_tutor.rar
    171,6 KB · Просмотры: 572
Последнее редактирование модератором:

AMARANT

Участник форума
Регистрация
12 Окт 2009
Сообщения
11
Благодарности
0
Баллы
150
По первому вопросу я понял, спасибо. Там все просто оказалось. А вот насчет костра что-то недопонял. Это что ж получается, нужно лезть в 3Д-Макс, чтобы прикрепить анимацию к мешу? Или можно как-то это сделать в спейсере? А еще насчет Event-tag, это все надо прописывать в скриптах или опять-таки в том же спейсере?
 

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
444
Благодарности
264
Баллы
230
Есть один вопрос. НО нужно его утвердить.
Вопрос:
Есть ли в готике такая функция, которая работает всю игру? Т.е. эта ф-ция нужна для того, чтобы через неё можно было бы отследить нужные изменения в любой момент. Это типа как таймер в программировании или цикл какой может есть, который работает всю игру? Мне не хочется связываться с активными и пассивными восприятиями, т.к. в них не нашёл смысла по решению моей проблемы.
Есть одна идея, но... в ней много багов, которые нужно фиксить. Я написал этот пост, потому что хочу спрость можно ли чисто скриптово это реализовать?
Вот старая идея:
Создать NPC в цикле, который всё время телепотируется к ГГ (аналогично вызову монстров через свиток) + нужно уменьшить NPC до точки на земле и скрыть его фокус(это можно сделать) + поставить гильдю нейтральную для всех.
НО: Могут возникнуть проблемы из за фокуса, т.е. если ГГ нечаянно наведёт фокус с оружия на телепортирующегося NPC, может получиться баг(не проверял). И ещё может упасть быстродействие в игре(глюки и задержки).
 

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
444
Благодарности
264
Баллы
230
ukur, за цикл с тиггером могу сказать спасибо. Я думал о том, как бы заставить среагировать тиггер, но что то не туда поплыл...
Но прикол в том, что в хелпе Vam'a одна функция описана так:
void Wld_SendTrigger (string name); - активировать функцию VOB объекта с именем name. (Я не знаю где где прописаны эти функции).***

Просто я раньше не очень хорошо понимал что такое VOB, т.к. не много работал со Spaser'ом. Вот от чего такие ТП к ГГ :)
Но самое главное - это то, что мне не хочется пользоваться вещами, которые придумали другие люди. Вот такой я.

Да.. и ещё... на меня тут одна мысля нашла...
Если ГГ перейдёт в другой zen, то ф-ция работать не будет(т.е. придётся размещать в каждом zen'e тиггер).
 

Feuermagier


Модостроитель
Регистрация
13 Апр 2008
Сообщения
934
Благодарности
136
Баллы
225
у меня вопрос: как реализовать кастование спелла на ГГ во время диалога?
 

Мільтен

Участник форума
Регистрация
27 Июн 2008
Сообщения
862
Благодарности
427
Баллы
265
Приветствую!
Сложилась проблемка: статуэтка каменного стража на растоянии 3 метров начинает падать в качестве, то есть ко-во поликов уменшается и выглядит это некрасиво.
Все что я сделал это:
- открыл файл Addon_LstTemp_StoneGuardian_Large_01.3ds;
- уменьшил статуэтку;
- экспортнул назад;
Макс 2010 плагины последние, текстура готическая. Может кто что подскажет?
 

Magmatic Imperius

Участник форума
Регистрация
21 Апр 2009
Сообщения
85
Благодарности
10
Баллы
160
Вопрос может показаться странным, но все-таки. При изменении существующих диалогов НВ и дополнении их новыми фразами появилась проблема
Новые строки диалога дублируются (имеется ввиду панелька выбора фраз ГГ), причем одна видна, а вместо второй просто пустая строчка. При выборе видимой и невидимой строк срабатывает один и тот же скрипт диалога. Что делать чтобы устранить дубляж и что надо чтобы сделать невидимую строчку видимой?
 

Bragi

Участник форума
Регистрация
5 Окт 2009
Сообщения
59
Благодарности
0
Баллы
155
Приветствую!
Все что я сделал это:
- открыл файл Addon_LstTemp_StoneGuardian_Large_01.3ds;
- уменьшил статуэтку;
- экспортнул назад;
Макс 2010 плагины последние, текстура готическая. Может кто что подскажет?

Может дело и не в этом, но очень часто в 3дс-файлах, импортнутых в макс, не все вершины "спаяны". По крайней мере у меня почти всегда так. Так что приходится перед экспортом пользоваться Weld-ом на все вершины...
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
Jr13San,
Если ГГ перейдёт в другой zen, то ф-ция работать не будет(т.е. придётся размещать в каждом zen'e тиггер).
Разумеется, но по крайней мере связка триггер-скрипт гарантировано будет работать везде, в отличие от жука с ограниченными восприятиями.

Magmatic Imperius,
Чтобы ответить на твой вопрос, нужно увидеть скрипты твоих диалогов.
Это может произойти из-за элементарной невнимательности, либо при тестировании измененных скриптов из сохраненной игры.
 

Мільтен

Участник форума
Регистрация
27 Июн 2008
Сообщения
862
Благодарности
427
Баллы
265
Может дело и не в этом, но очень часто в 3дс-файлах, импортнутых в макс, не все вершины "спаяны". По крайней мере у меня почти всегда так. Так что приходится перед экспортом пользоваться Weld-ом на все вершины...

Отпадает, я проверял, все вертексы соединены. Ладно, если никто не знает ответа, придется придумать что-то другое.:p
 

AMARANT

Участник форума
Регистрация
12 Окт 2009
Сообщения
11
Благодарности
0
Баллы
150
Какой скрипт отвечает за жарку мяса на плите? А также хотелось бы узнать можно ли как-то отловить сидение на скамейках и стульях?
 

Feuermagier


Модостроитель
Регистрация
13 Апр 2008
Сообщения
934
Благодарности
136
Баллы
225
Какой скрипт отвечает за жарку мяса на плите? А также хотелось бы узнать можно ли как-то отловить сидение на скамейках и стульях?
ZS_Cook_Stove.d
AI\Human\TA_Human
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
AMARANT,
А также хотелось бы узнать можно ли как-то отловить сидение на скамейках и стульях?
Ну собственно в этой теме все расписано: Туториал по использованию MOB для производства различных предметов.
Все что там написано, можно применить и к табуреткам. И помоему даже твои ответы есть в той теме :D
 

vmazz

Участник форума
Регистрация
18 Дек 2008
Сообщения
218
Благодарности
1
Баллы
165
2AMARANT - то что написал Feuermagier это расписание жарехи, но не скрипт. Тебе нужно править скрипт модели сковороды. Еще раз говорю - прочитай внимательно эту статью http://mod.worldofgothic.ru/3d/event-tags все что тебе нужно там написано. По вопросу в другой теме (всеравно дается мясо) - тоже самое, читай статью. Макс там и не нужен, подойдет любой текст. редактор. Как вариант UltraEdit очень неплох + для него есть подсветка синтаксиса для всех форматов готик.
 

AMARANT

Участник форума
Регистрация
12 Окт 2009
Сообщения
11
Благодарности
0
Баллы
150
Спасибо всем за ответы. С костром еще попробую разобратся. А вот что касается мяса, которое дается в любом случае, то тут проблема все равно остается. Я тот туториал по диалогам MOBSI прочитал и все это сделал. Все отлично работает, но жареное мясо дается в любом случае, если вы при первой жарке нажимаете конец диалога. Я заметил что это срабатывает только тогда, когда в вашем инвентаре нет ни одного куска жареного мяса. Кроме того, оригинальный скрипт-мод от Xeres'а, на котором построен тот туториал также содержит этот баг. Убирание предмета таким кодом при отлове нажатия конца диалога не работает, вот часть кода:
Код:
func int pc_herd_exit_condition()
{
if(PLAYER_MOBSI_PRODUCTION == MOBSI_HERD)
{
return 1;
};
};

func void pc_herd_exit_info()
{
CreateInvItems(hero,ItMi_Pan,1);
[COLOR="Red"]Npc_RemoveInvItems(hero,ItFoMutton,1);[/COLOR][COLOR="Green"]//эта строка не срабатывает, хотя по идее должна забирать мясо.[/COLOR]
b_endproductiondialog();
};

Из-за этого я думал, что если я поковыряюсь в самом игровом скрипте жарки на плите, то смогу там сделать так, чтобы это мясо вообще не давалось никогда, но пока не разобрался в этом.
 

vmazz

Участник форума
Регистрация
18 Дек 2008
Сообщения
218
Благодарности
1
Баллы
165
Блин, ну я же написал :-\
Мясо дается не в мобси диалоге, а в скрипте модели. А скрипт этот не срабатывает от того что сначала запускается daedalus скрипт, а только потом скрипт модели. Если мясо есть оно отнимается, если его нет - ничего не происходит(daedalus), далее уже выдается мясо (скрипт модели), т.е. если мяса не было вообще в инвентаре, то будет 1 мяса, если было, скажем, 2, то -1(скрипт) +1(модель) - типа скрипт сработал. Логику улавливаеш?
Теперь понятно? :) *flowers*
Кстати в скрипте модели должно быть и убирание сырого мяса из инвентаря, тоже надо-бы поправить. Я не уверен ибо тыщу лет не лазил в сковородку, но по логике... :)
Просто перечитай статью и наконец-таки поправь скрипт сковороды ;)
 

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
444
Благодарности
264
Баллы
230
Не знаю, правильно ли я понимаю твою проблему, но вот в чём пркол:
В туторе http://forum.worldofplayers.ru/showthread.php?t=20496 написано:

- для плиты
useWithItem=string:ItMi_Pan

А это означает, что для готовки на плите нужна сковорода(instance ItMi_Pan(C_Item) - вот она в скриптах).
Вот, наверное, где баг. Попробуй за место этого поставить сырое мясо(ITFOMUTTONRAW). И делай не через блокнот, а через Spacer. Находишь плиту, заходишь в её свойства, находишь строчку useWithItem и ставишь значение ITFOMUTTONRAW.
Не знаю что у тебя там не так, но могу сказать одно - если не получается, то разбивай данную проблему на части и проверяй каждую часть. И при проверке тубе нужно понимать то, что ты читаешь, а не просто - "если написано, то значит так и должно быть...".

Через несколько секунд...
Ах да.. вот нашёл прикол(см. то, что выделено жирным шрифтом):

func void ZS_Cook_Stove()
{
Perception_Set_Normal();
B_ResetAll(self);
AI_SetWalkMode(self,NPC_WALK);
if(Hlp_StrCmp(Npc_GetNearestWP(self),self.wp) == FALSE)
{
AI_GotoWP(self,self.wp);
};
if(Npc_HasItems(self,ItFoMuttonRaw) == 0) //если NPC self, т.е. тот, который стоит у плиты и пытается жарить, имеет ItFoMuttonRaw(сырое мясо) = 0.
{
CreateInvItem(self,ItFoMuttonRaw);//почему бы на халяву не создать у него в инвентаре сырова мяса 1 шт.?, нам не жалко...
};
};

Вот здесь тебе самому нужно придумать как бы вписать и сковородку и мясо в дело. Извини, но у меня нет на это времени, т.к. в данный момент занят. Да и когда сам придумаешь и разберёшься - больше адреналина в крови будет ;)
 

HeDeDe

Участник форума
Регистрация
17 Авг 2009
Сообщения
203
Благодарности
79
Баллы
180
http://forum.worldofplayers.ru/member.php?u=58483Jr13San

А зачем так заморачиваться, если можно просто удалить строчку
*eventTag (1 "DEF_EXCHANGE_ITEM" "ZS_LEFTHAND" "ItFoMutton")
из humans.mds и соответствующие .man анимации?
 

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
444
Благодарности
264
Баллы
230
А зачем так заморачиваться, если можно просто удалить строчку
*eventTag (1 "DEF_EXCHANGE_ITEM" "ZS_LEFTHAND" "ItFoMutton")
из humans.mds и соответствующие .man анимации?

И это тоже надо править...
Промолчу...
 

Je00Ka

Участник форума
Регистрация
16 Авг 2008
Сообщения
65
Благодарности
0
Баллы
160
Доброго времени суток
при запуске мода(собственного) выскакивает ошибка, мол не найден файл gamestart.sgt как от нее избавиться?(по-быстрому)
 
Сверху Снизу