Уважаемые гости и новички, приветствуем Вас на нашем форуме
Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».
Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Feuermagier,
перешел от соурсера к VS 2010? по какой причине? дай угадаю. он ищет строки в поиске по капсу, даже если стоит флаг "не учитывать регистр", это очень раздражает...
перешел от соурсера к VS 2010? по какой причине? дай угадаю. он ищет строки в поиске по капсу, даже если стоит флаг "не учитывать регистр", это очень раздражает...
К скрипту жареного мяса приделан вызов анимации - работает, результат на скрине. Кстати - в этом состоянии игрок заморожен, даже в меню нельзя выйти...
Мм, я вродибы ясно выразился, "Перевести в состояние ZS_xx" зачем мне анимация? Анимация - остается анимацией в люом случае, а вот состояние это уже совсем другое пальто...
Чтобы получить ид инстанции, предмет/нпс/и тд, должны быть проинициализированны в мире/инвертаре нпс, тк инстнция создается в момент вызова InitByScript(и аналогичным функциями двига) а до тех пор, пока предмет не вставлен в мир, интанция равна -1
неужели нет способа сохранения объекта в переменную, и выдача его впоследствии герою (когда нужно будет)?
и еще: этот скрипт не работает на статуэтке Эдды, наверное из-за того, что статуэтки у нее нету...
Но, при первом обращении к Пабло, инфа показывает, что у него нет ключа. Второе обращение к нему показывает что ключ уже появился. Перезагружал игру несколько раз, всегда так.
По крайней мере мне он показался менее ошибочным. Я использую его и по сей день.
Просто подставлять в функцию Hlp_GetInstanceID() инстанцию не очень корректно из за разницы типов. От сюда начинаются ошибки. А точнее с предметов с мульти-флагами и др. Как дальше уйдёшь в эту скриптовую систему - увидишь.
А что бы добавить, чтобы получилось то, что нужно?
Попробуй добавить вещь в инвентарь, потом получи ссылку на неё + запиши в переменную, удали вещь из инвентаря. Всё займёт доли секунд.
Причём всё это прописывать лучше в StartUp функции.
Также вещь можно вставить заранее в инвентарь, т.е. на этапе проектирования содержимого инвентаря персонажей.
Как пример, вот:
Код:
var int ItmID;//глобальная переменная.
func void Startup_OldCamp()
{
CreateInvItem(hero,ItWr_Diary0);//создаём вещь в инвентаре ГГ
Npc_GetInvItem(hero,ItWr_Diary0);//создаём глобальную ссылку на вещь
ItmID = Hlp_GetInstanceID(item);//получаем нужный ID и записываем в переменную
//Где ItWr_Diary0 - нужная нам инстанция
Npc_RemoveInvItem(hero,ItWr_Diary0);//удаляем вещь из инвентаря ГГ
};
Обрати внимание на загружаемую локацию. У меня установлена "OldCamp.zen", от сюда и такое название "Startup_OldCamp".
Попробуй разобраться в этом.
и еще: этот скрипт не работает на статуэтке Эдды, наверное из-за того, что статуэтки у нее нету...
На сколько помню, статуэтка должна быть у ГГ. Если говорить про оригинальные скрипты.
Но, при первом обращении к Пабло, инфа показывает, что у него нет ключа. Второе обращение к нему показывает что ключ уже появился. Перезагружал игру несколько раз, всегда так.
Изучай скрипт и то, при каких условиях появляется этот ключ. Разбивай проблему на части и тестируй каждую часть, пока не поймёшь в чём дело. Это как совет.
спс за совет. кстати сегодня нашел еще 1 способ...
в папке System проги GothicSourcer есть файл RedefinedFunc.dsc, туда вписываем функцию:
int# M_instance_to_int(int#);
далее в самих скриптах делаем функцию:
func int M_instance_to_int(var int instanceItem)
{
return instanceItem;
};
протестил - работает!! даже с головой Блудвина, она уж точно не должна быть заранее загружена, я не был в ярике еще.... и статуэтка эдды, и др. предметы - норм работает....
Сохранение инстанции в переменной int:
var int pickpocketitem
pickpocketitem = M_instance_to_int ( ItKe_Valentino );
maggi1221, про другой способ, который ты предлагаешь могу сказать лишь то, что при декомпиляции твоих скриптов могут возникнуть проблемы с этими статически присвоенными id.
Эти проблемы возникают в случае отсутствия информации в RedefinedFunc.dsc и RedefinedLocalVariable.dsc. Т.е. для переводчиков модов это будет не очень приятно.
Если только это рассматривать как вариант защиты данных, которые всё равно можно будет прочитать и сделать читаемыми и работоспособными.
Движёк и так полу-статический-полу-динамический! А ты хочешь увеличивать эту статическую составляющую в скриптах.
Выбор метода за тобой, я лично не советую использовать эту статику.
Jr13San,
Этот метод я узнал просматривая код функции B_GiveInvItems.
А она часто используется...
меня тогда еще заинтересовало почему в эту функцию передается instance вместо int - и при этом не возникает ошибок...
Другие методы использовать не хочу, так как придется писать оч. много однообразного кода...
maggi1221, Имхо, способ нормальный, это я тебе гооврю на основе того, что знаю некоторые "вкусности" двига, то что ты делаешь, аналогично на С++ выглядит так:
Код:
zCParser* par = zCParser::GetParser();
int inst = 0;
inst = par->GetIndex("Имя инстанции");
Так что страшного ничего в этом нету=)
А по поводу, всяких там переводчиков/локализаторов, ИМХО тебе должно быть всеравно, какие там у них траблы будут, главное чтобы у тебя все было ок
Хм, у меня есть идея, я занимаюсь расширением функционала двига готы(в основном добавление внутренних функций) и мне понадобится в скором времени тестер всего этого добра, елси желание?
Эти проблемы возникают в случае отсутствия информации в RedefinedFunc.dsc и RedefinedLocalVariable.dsc. Т.е. для переводчиков модов это будет не очень приятно.
Какие еще проблемы, это ограничение скриптового двига. И потом, кого вобщее волнуют проблемы переводчиков, или должны волновать? Если он ничего не понимает в скриптах то пусть ищет скриптолога который в этом понимает. Иначе, куда он лезет?!
Движёк и так полу-статический-полу-динамический! А ты хочешь увеличивать эту статическую составляющую в скриптах.
Выбор метода за тобой, я лично не советую использовать эту статику.
if (Hlp_GetInstanceID(self) == Hlp_GetInstanceID(MIL_319_Pablo))
{
B_Addon_GivePotion2(self);
};
При разговоре с пабло на экран выводится текст "B_Addon_GivePotion2", что означает что код пошел по нужной нам ветке, но строчка с диалогом не появляется!
у Пабло строчка диалога не появляется... этот код скопирован 1 в 1 с кодом выхода из диалога (пункт "Закончить") и все равно не добавляется....
Проблема решена: нужно было начать новую игру. надоело каждый раз играть заного...
Есть ли утилита для добавления в файлы сохранения переменных или диалогов? просто не хочется играть заного...
maggi1221, А смысл в этих утилитах?
Ведь мир игры инициализируется всего один раз при его загрузке и/или переходе на новую локацию, потом все данные читаются из сейвов, так работает двиг Готы - 1,2, к сожалению.
Хотелось бы конечно видеть все это как в том же Обливионе, вснес изменения, скомпилил, и продолжил игру, а тут пол двига переписать надо для этого...
На данном сайте используются файлы cookie, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.