Уважаемые гости и новички, приветствуем Вас на нашем форуме
Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».
Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
Удачи!
Друзья, доброго времени суток!
Стартовал новый литературный конкурс от "Ордена Хранителей" - "Пираты Миртанского моря". Каждый может принять в нём участие и снискать славу и уважение, а в случае занятия призового места ещё и получить награду. Дерзайте
Дорогие друзья, год подходит к концу, и пришло время подвести его итоги и наградить достойных
Не ленитесь, голосуйте в этой теме за тех форумчан, которые по вашему мнению больше всех проявили себя в этом году
По желанию, аргументировать свой выбор можете в теме обсуждения голосования.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Я проверил, все работает, Ксардас кинулся когда я одел дубину. Осталось только приделать забор оружия после поражения гг и все.(Хотя может тебе это не надо)
теперь Диего пытается вернуть себе свой меч. И снова и снова
Но вот с Кор Ангаром возник затык. Диалог появляется и меч он достаёт, а потом просто замирает
Код:
instance DIA_AngarDJG_ItMw(C_Info)
{
npc = DJG_705_Angar;
nr = 1 ; //важность,т.е в где будет стоять строка в начале в конце в середине.
condition = DIA_AngarDJG_ItMw_Condition;
information = DIA_AngarDJG_ItMw_Info;
permanent = TRUE;
important = TRUE; //если false то диалог начинаете вы,если TRUE нпс начинает разговор с вами!
};
func int DIA_AngarDJG_ItMw_Condition()
{
var C_Item EquipWeap;
EquipWeap = Npc_GetEquippedMeleeWeapon(hero);
if (Hlp_IsItem(EquipWeap,ItMw_Roter_Wind) == TRUE)
{
return TRUE;
};
};
func void DIA_AngarDJG_ItMw_Info()
{
AI_Output(self,other,"DIA_Addon_Xardas_Hello_14_00"); // У тебя мое оружие, отдавай
AI_StopProcessInfos(self);
B_Attack(self,other,AR_NONE,1);
};
Попробовал сейчас на своем кор Тестере,возник такой же затык.Проверил его инстанцию,отсутствовала строчка fight_tactic = ...Прописал ее,и тестер напал.Ты в инстанции своего ангара ничего не менял?
Советую, чтобы оружие не появлялось у НПС, добавить строчку
[B_RemoveInvItems(other,self,ItMw_1H_Mace_L_03,1); // Забирает палку во время разговора, сделано, чтобы после диалога, не напал повторно ввиду того, что оружие не экипированно.../spoiler], В таком случае предмет будет удален из инвентаря полностью.
Эта функция используется и в триггерах, при забирании предмета, например при активации телепорта, юнитор исчезает из инвентаря ГГ.
так НПС же должен отобрать оружие, а не забрать. лучшее это враг хорошему. сейчас все натурально:
НПС видит на герое оружие и вступает с ним в поединок. если НПС отдубасил ГГ, то поднимает оружие с земли, а если не отдубасил, то сам значит в пыли:-D значит в следующий раз отдубасит.
Код:
instance DIA_AngarDJG_ItMw(C_Info)
{
npc = DJG_705_Angar;
nr = 1 ; //важность,т.е в где будет стоять строка в начале в конце в середине.
condition = DIA_AngarDJG_ItMw_Condition;
information = DIA_AngarDJG_ItMw_Info;
permanent = TRUE;
important = TRUE; //если false то диалог начинаете вы,если TRUE нпс начинает разговор с вами!
};
func int DIA_AngarDJG_ItMw_Condition()
{
var C_Item EquipWeap;
EquipWeap = Npc_GetEquippedMeleeWeapon(hero);
if (Hlp_IsItem(EquipWeap,ItMw_Roter_Wind) == TRUE) // проверка на экипированное оружие
{
return TRUE;
};
};
func void DIA_AngarDJG_ItMw_Info()
{
B_Say_Overlay(self,other,"$DIRTYTHIEF"); // мотивационная фраза ах ты грязный воришка
AI_StopProcessInfos(self);
B_Attack(self,other,AR_NONE,1);
};
есть конечно вероятность что НПС отдубасит ГГ до того, как ГГ успеет достать оружие и по хорошему надо дописать, что в таком случае НПС обыскивает ГГ пока он без сознания и забирает оружие из инвентаря
lorddemonik1 написал(а):
З.ы.ы можно сделать отбор оружия после поражения в бою, но тогда придется тонну написать, какой персонаж какое оружие при обыске/победе над гг, должен забрать
так НПС же должен отобрать оружие, а не забрать. лучшее это враг хорошему. сейчас все натурально:
НПС видит на герое оружие и вступает с ним в поединок. если НПС отдубасил ГГ, то поднимает оружие с земли, а если не отдубасил, то сам значит в пыли:-D значит в следующий раз отдубасит.
Код:
instance DIA_AngarDJG_ItMw(C_Info)
{
npc = DJG_705_Angar;
nr = 1 ; //важность,т.е в где будет стоять строка в начале в конце в середине.
condition = DIA_AngarDJG_ItMw_Condition;
information = DIA_AngarDJG_ItMw_Info;
permanent = TRUE;
important = TRUE; //если false то диалог начинаете вы,если TRUE нпс начинает разговор с вами!
};
func int DIA_AngarDJG_ItMw_Condition()
{
var C_Item EquipWeap;
EquipWeap = Npc_GetEquippedMeleeWeapon(hero);
if (Hlp_IsItem(EquipWeap,ItMw_Roter_Wind) == TRUE) // проверка на экипированное оружие
{
return TRUE;
};
};
func void DIA_AngarDJG_ItMw_Info()
{
B_Say_Overlay(self,other,"$DIRTYTHIEF"); // мотивационная фраза ах ты грязный воришка
AI_StopProcessInfos(self);
B_Attack(self,other,AR_NONE,1);
};
есть конечно вероятность что НПС отдубасит ГГ до того, как ГГ успеет достать оружие и по хорошему надо дописать, что в таком случае НПС обыскивает ГГ пока он без сознания и забирает оружие из инвентаря
но это уже следующий этап. нельзя же прям за раз сделать всё идеально :-D
За то, что НПС побит или не побит отвечает файл ZS_Unconscious, Если хотите, чтобы НПС забирал у вас оружие, после того как побил, то обьявите там переменную, которая будет принимать значение TRUE в случае, если вас избили, при этом значении допишите туда убирание предмета у ГГ и появление этого предмета у НПС, не надо там расписывать ничего.
есть конечно вероятность что НПС отдубасит ГГ до того, как ГГ успеет достать оружие и по хорошему надо дописать, что в таком случае НПС обыскивает ГГ пока он без сознания и забирает оружие из инвентаря
Гляди в скрипт ZS_RansackBody.d(Обработчик состояния грабежа предметов с тел НПС).Там это реализовано с Гарвигом и Святым молотом,Родом и его мечом,Френсисом и ключом от хибары Грега.
А вообще,советую обзавестись скриптами с комментариями от Nifariusа(MaGoth здесь оставлял рабочую ссылку ).Кое-что,да станет понятнее.
Если мне не изменяет память, у оружия минимальный урон = 5 (Берется отсюда const int NPC_MINIMAL_DAMAGE = 5), поэтому урон всегда будет наносится (Кроме случаев иммунитета, или если поставишь NPC_MINIMAL_DAMAGE = 0)
А в остальном, думаю такое сойдет:
instance ItMw_1hh(C_Item)
{
name = "Кинжал";
mainflag = ITEM_KAT_NF;
flags = ITEM_SWD;
range = 0;
};
Ребят после Декомпеляции Gothic.Dat постоянно вылазят 3 ошибки которые в последствии мешают успешно всё скомпелировать! подскажите пожалуйста как их поправить! или подскажите где я могу найти испраные варианты и вставить их на место тех которые выдают ошибку!заранее спасибо! если скриншотов не достаточно скопирую текст сюда! я просто в этих делах чайник не знаю как лучше сделать!
@RPGamer:
1. Ищи, где в функции пропущен оператор return, возвращающий значение константы COLL_APPLYDOUBLEDAMAGE.
2. Смотри правильный фрагмент кода из G2 MDK:
Код:
FUNC INT DIA_Dar_Kameradenschwein_Condition()
{
if (Dar_LostAgainstCipher == TRUE)
{
self.aivar[AIV_LastFightComment] == FALSE; //geht NUR bei ECHTER Important-Info!
return TRUE;
};
};
3. Для тебя существует разница между присваиванием (=) и сравнением значений на равенство (==)?
Ещё после декомпиляции тебе придётся исправлять кучу мест, где PB забыли вставить операторы return, возвращающие значение у функций, например, в обработчиках ZS состояний циклическая часть ZS_xxx_Loop() всегда должна возвращать значение LOOP_CONTINUE (продолжить цикл) или LOOP_END (закончить цикл).
Не знаю,ты принципиально сам декомпилишь датник,и пользуешся сорсером 3.15,но я бы посоветовал тебе скачать уже декомпилированные акелловские скрипты с правками.Ссылка в моем посте чуть выше(там же ты можешь скачать и скриптовую болванку с пояснениями).И пользовать сорсер 3.14,судя по твоим скриншотам,он несколько информативнее относительно ошибок.
Возник такой вопрос:
По сюжету ГГ рассказывает НПСу что-то.Диалог заканчивается.НПС должен это что-то осмыслить какое-то время(минуты,секунды,НЕ СУТКИ),и только после этого обратиться к ГГ.Можно ли в инстанции самого диалога выставить границы времени,в которых НПС после предыдущего разговора с ГГ "уйдет в несозанку ненадолго"? Или же надо лезть куда дальше?
Экспериментировал с B_ASSESPLAYER..
Прописывая в нем переменную,которая становится TRUE при встрече с данным НПС,и если ГГ с ним ранее имел разговор о нужной теме.Потом в диалоге выставлял условие для этой переменной.Работает,как-бы сносно.НПС,после разговора отвлекается на свой распорядок,но при виде ГГ сразу обращается к нему.То есть,пауза присутствует,но не контролируемая.
Можно ли самому ее задать,ведь распорядки бывают разные,и не известно,как какой НПС у разных игроков,в разное время суток отреагирует.ВОТ!
Возник такой вопрос:
По сюжету ГГ рассказывает НПСу что-то.Диалог заканчивается.НПС должен это что-то осмыслить какое-то время(минуты,секунды,НЕ СУТКИ),и только после этого обратиться к ГГ.Можно ли в инстанции самого диалога выставить границы времени,в которых НПС после предыдущего разговора с ГГ "уйдет в несозанку ненадолго"? Или же надо лезть куда дальше?
Экспериментировал с B_ASSESPLAYER..
Прописывая в нем переменную,которая становится TRUE при встрече с данным НПС,и если ГГ с ним ранее имел разговор о нужной теме.Потом в диалоге выставлял условие для этой переменной.Работает,как-бы сносно.НПС,после разговора отвлекается на свой распорядок,но при виде ГГ сразу обращается к нему.То есть,пауза присутствует,но не контролируемая.
Можно ли самому ее задать,ведь распорядки бывают разные,и не известно,как какой НПС у разных игроков,в разное время суток отреагирует.ВОТ!
Таймера в игре как таково вроде бы нет. Могу предложить повесить циклический триггер, который будучи вызванным из диалога будет каждую секунду прибавлять к переменной +1, а когда она достигнет например 60, отключить его, разрешив дальнейший диалог
Я в курсе,спасибо за совет,но циклический триггер у меня присутствует.Спасибо Myxomopу за создание "этой темы"
Мне было интересно,может есть более легкие пути,которые я по неопытности не заметил.
Я в курсе,спасибо за совет,но циклический триггер у меня присутствует.Спасибо Myxomopу за создание "этой темы"
Мне было интересно,может есть более легкие пути,которые я по неопытности не заметил.
Записать время диалога и день диалога, и паузу - прибавить к текущему времени соответственно, в диалоге указать в условии - что-бы было время не меньше нужного. Может непонятно объясняю. Допустим мы поговорили с нпц в первый день, в 12.30. Пауза у нас 30 минут. Сохраняем время+паузу, дату, в переменные, которые потом проверяются в диалоге - достиг ли нпц нужного времени.
Я конечно не очень хорошо помню скрипты дедалуса, но рекурсия там была доступна, если мне память не отшибло, значит можно спокойно вычислить время, если нет изначально такой функции, на счет дней вообще не помню)
На данном сайте используются файлы cookie, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.