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

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

kor.angar

Участник форума
Регистрация
28 Ноя 2017
Сообщения
294
Благодарности
93
Баллы
200
Я проверил, все работает, Ксардас кинулся когда я одел дубину. Осталось только приделать забор оружия после поражения гг и все.(Хотя может тебе это не надо)
отлично! А как теперь это зациклить? а то при повторном заходе уже нет реакции :)
 

WoOliN

Участник форума
Регистрация
13 Окт 2012
Сообщения
347
Благодарности
196
Баллы
210
permanent = FALSE; изменить на permanent = TRUE;
 

kor.angar

Участник форума
Регистрация
28 Ноя 2017
Сообщения
294
Благодарности
93
Баллы
200
permanent = FALSE; изменить на permanent = TRUE;
теперь Диего пытается вернуть себе свой меч. И снова и снова :)

Но вот с Кор Ангаром возник затык. Диалог появляется и меч он достаёт, а потом просто замирает
Код:
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);
};
IYxndfEhiJ4.jpg





 

Vlad_Torop

Участник форума
Регистрация
2 Май 2014
Сообщения
870
Благодарности
499
Баллы
230
Но вот с Кор Ангаром возник затык. Диалог появляется и меч он достаёт, а потом просто замирает
Попробовал сейчас на своем кор Тестере,возник такой же затык.Проверил его инстанцию,отсутствовала строчка fight_tactic = ...Прописал ее,и тестер напал.Ты в инстанции своего ангара ничего не менял?
 

kor.angar

Участник форума
Регистрация
28 Ноя 2017
Сообщения
294
Благодарности
93
Баллы
200
убирал fight_tactic = как раз на Ангаре и разбирался с навыком владения оружием. вот кстати как оно устанавливается
Npc_SetTalentSkill(self,NPC_TALENT_1H,1); // навык 0,1,2
HitChance [NPC_TALENT_1H] = 100; //Владение Одноручником
Npc_SetTalentSkill(self,NPC_TALENT_2H,2); // навык 0,1,2
HitChance [NPC_TALENT_2H] = 100; //Владение Двуручником

вообщем всё хорошо, что хорошо кончается. разобрались таки мы с этим делом. Теперь криминальные авторитеты не позволят себя дурачить на ровном месте :)

конечно есть ещё над чем подумать, но принципиально с вопросом разобрались. Огромное спасибо!
 
Последнее редактирование:

Kreol Nekr

Участник форума
Регистрация
21 Ноя 2014
Сообщения
229
Благодарности
109
Баллы
190
убирал fight_tactic = как раз на Ангаре и разбирался с навыком владения оружием. вот кстати как оно устанавливается
Npc_SetTalentSkill(self,NPC_TALENT_1H,1); // навык 0,1,2
HitChance [NPC_TALENT_1H] = 100; //Владение Одноручником
Npc_SetTalentSkill(self,NPC_TALENT_2H,2); // навык 0,1,2
HitChance [NPC_TALENT_2H] = 100; //Владение Двуручником

вообщем всё хорошо, что хорошо кончается. разобрались таки мы с этим делом. Теперь криминальные авторитеты не позволяет себя дурачить на ровном месте :)

конечно есть ещё над чем подумать, но принципиально с вопросом разобрались. Огромное спасибо!

Советую, чтобы оружие не появлялось у НПС, добавить строчку
[B_RemoveInvItems(other,self,ItMw_1H_Mace_L_03,1); // Забирает палку во время разговора, сделано, чтобы после диалога, не напал повторно ввиду того, что оружие не экипированно.../spoiler], В таком случае предмет будет удален из инвентаря полностью.
Эта функция используется и в триггерах, при забирании предмета, например при активации телепорта, юнитор исчезает из инвентаря ГГ.

убирал fight_tactic = как раз на Ангаре и разбирался с навыком владения оружием. вот кстати как оно устанавливается
Npc_SetTalentSkill(self,NPC_TALENT_1H,1); // навык 0,1,2
HitChance [NPC_TALENT_1H] = 100; //Владение Одноручником
Npc_SetTalentSkill(self,NPC_TALENT_2H,2); // навык 0,1,2
HitChance [NPC_TALENT_2H] = 100; //Владение Двуручником

вообщем всё хорошо, что хорошо кончается. разобрались таки мы с этим делом. Теперь криминальные авторитеты не позволяет себя дурачить на ровном месте :)

конечно есть ещё над чем подумать, но принципиально с вопросом разобрались. Огромное спасибо!

Озвучка немецкая просто прекрасна, сразу так впомнился 2002 год...
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
Kreol Nekr,
Тебя правила ни хрена не касаеются чтоль ?!
 

kor.angar

Участник форума
Регистрация
28 Ноя 2017
Сообщения
294
Благодарности
93
Баллы
200
Советую, чтобы оружие не появлялось у НПС, добавить строчку
так НПС же должен отобрать оружие, а не забрать. лучшее это враг хорошему. сейчас все натурально:
НПС видит на герое оружие и вступает с ним в поединок. если НПС отдубасил ГГ, то поднимает оружие с земли, а если не отдубасил, то сам значит в пыли:-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

ещё раз всем спасибо, сори если был оффтоп.
 
Последнее редактирование:

Kreol Nekr

Участник форума
Регистрация
21 Ноя 2014
Сообщения
229
Благодарности
109
Баллы
190
так НПС же должен отобрать оружие, а не забрать. лучшее это враг хорошему. сейчас все натурально:
НПС видит на герое оружие и вступает с ним в поединок. если НПС отдубасил ГГ, то поднимает оружие с земли, а если не отдубасил, то сам значит в пыли:-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 в случае, если вас избили, при этом значении допишите туда убирание предмета у ГГ и появление этого предмета у НПС, не надо там расписывать ничего.
if(Npc_IsPlayer(other) && (Hlp_GetInstanceID(self) == Hlp_GetInstanceID(Angar) && (angarisfight == TRUE) && (Npc_HasItem(ITMW_SWord_01)>=1))
{

B_GiveInvItems(other,self,ITMW_SWord_01, 1)

}
Ну и если наоборот, то соответственно все наоборот переверните и вместо Angar допишите Hero
 

Vlad_Torop

Участник форума
Регистрация
2 Май 2014
Сообщения
870
Благодарности
499
Баллы
230
есть конечно вероятность что НПС отдубасит ГГ до того, как ГГ успеет достать оружие и по хорошему надо дописать, что в таком случае НПС обыскивает ГГ пока он без сознания и забирает оружие из инвентаря
Гляди в скрипт ZS_RansackBody.d(Обработчик состояния грабежа предметов с тел НПС).Там это реализовано с Гарвигом и Святым молотом,Родом и его мечом,Френсисом и ключом от хибары Грега.
А вообще,советую обзавестись скриптами с комментариями от Nifariusа(MaGoth здесь оставлял рабочую ссылку ).Кое-что,да станет понятнее.
 
Последнее редактирование:

RPGamer_1993

Участник форума
Регистрация
23 Дек 2016
Сообщения
150
Благодарности
49
Баллы
190
Ребят подскажите пожалуйста как создать одноручное оружие с минимальным радиусом и 0 урона и желательно что бы было невидимым! очень надо)
 

Lorddemonik

★★★★★
Редактор раздела
Регистрация
17 Дек 2011
Сообщения
1.113
Благодарности
581
Баллы
350
Ребят подскажите пожалуйста как создать одноручное оружие с минимальным радиусом и 0 урона и желательно что бы было невидимым! очень надо)
Если мне не изменяет память, у оружия минимальный урон = 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;
};
 

RPGamer_1993

Участник форума
Регистрация
23 Дек 2016
Сообщения
150
Благодарности
49
Баллы
190
Ребят после Декомпеляции Gothic.Dat постоянно вылазят 3 ошибки которые в последствии мешают успешно всё скомпелировать! подскажите пожалуйста как их поправить! или подскажите где я могу найти испраные варианты и вставить их на место тех которые выдают ошибку!заранее спасибо! если скриншотов не достаточно скопирую текст сюда! я просто в этих делах чайник не знаю как лучше сделать!
Desktop 01.16.2018 - 11.41.48.11.png
Desktop 01.16.2018 - 11.42.15.12.png
Desktop 01.16.2018 - 11.42.27.13.png
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.574
Благодарности
4.167
Баллы
915
@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 (закончить цикл).
 
Последнее редактирование:

Vlad_Torop

Участник форума
Регистрация
2 Май 2014
Сообщения
870
Благодарности
499
Баллы
230
я просто в этих делах чайник не знаю как лучше сделать!
Не знаю,ты принципиально сам декомпилишь датник,и пользуешся сорсером 3.15,но я бы посоветовал тебе скачать уже декомпилированные акелловские скрипты с правками.Ссылка в моем посте чуть выше(там же ты можешь скачать и скриптовую болванку с пояснениями).И пользовать сорсер 3.14,судя по твоим скриншотам,он несколько информативнее относительно ошибок.
 

Gor

Участник форума
Регистрация
26 Дек 2009
Сообщения
977
Благодарности
547
Баллы
245

Vlad_Torop

Участник форума
Регистрация
2 Май 2014
Сообщения
870
Благодарности
499
Баллы
230
Возник такой вопрос:
По сюжету ГГ рассказывает НПСу что-то.Диалог заканчивается.НПС должен это что-то осмыслить какое-то время(минуты,секунды,НЕ СУТКИ),и только после этого обратиться к ГГ.Можно ли в инстанции самого диалога выставить границы времени,в которых НПС после предыдущего разговора с ГГ "уйдет в несозанку ненадолго"? Или же надо лезть куда дальше?
Экспериментировал с B_ASSESPLAYER..
Прописывая в нем переменную,которая становится TRUE при встрече с данным НПС,и если ГГ с ним ранее имел разговор о нужной теме.Потом в диалоге выставлял условие для этой переменной.Работает,как-бы сносно.НПС,после разговора отвлекается на свой распорядок,но при виде ГГ сразу обращается к нему.То есть,пауза присутствует,но не контролируемая.
Можно ли самому ее задать,ведь распорядки бывают разные,и не известно,как какой НПС у разных игроков,в разное время суток отреагирует.ВОТ!
 
Последнее редактирование:

Lorddemonik

★★★★★
Редактор раздела
Регистрация
17 Дек 2011
Сообщения
1.113
Благодарности
581
Баллы
350
Возник такой вопрос:
По сюжету ГГ рассказывает НПСу что-то.Диалог заканчивается.НПС должен это что-то осмыслить какое-то время(минуты,секунды,НЕ СУТКИ),и только после этого обратиться к ГГ.Можно ли в инстанции самого диалога выставить границы времени,в которых НПС после предыдущего разговора с ГГ "уйдет в несозанку ненадолго"? Или же надо лезть куда дальше?
Экспериментировал с B_ASSESPLAYER..
Прописывая в нем переменную,которая становится TRUE при встрече с данным НПС,и если ГГ с ним ранее имел разговор о нужной теме.Потом в диалоге выставлял условие для этой переменной.Работает,как-бы сносно.НПС,после разговора отвлекается на свой распорядок,но при виде ГГ сразу обращается к нему.То есть,пауза присутствует,но не контролируемая.
Можно ли самому ее задать,ведь распорядки бывают разные,и не известно,как какой НПС у разных игроков,в разное время суток отреагирует.ВОТ!
Таймера в игре как таково вроде бы нет. Могу предложить повесить циклический триггер, который будучи вызванным из диалога будет каждую секунду прибавлять к переменной +1, а когда она достигнет например 60, отключить его, разрешив дальнейший диалог
 

Vlad_Torop

Участник форума
Регистрация
2 Май 2014
Сообщения
870
Благодарности
499
Баллы
230
Могу предложить повесить циклический триггер,
Я в курсе,спасибо за совет,но циклический триггер у меня присутствует.Спасибо Myxomopу за создание "этой темы"
Мне было интересно,может есть более легкие пути,которые я по неопытности не заметил.
 
Последнее редактирование:

Haart

Участник форума
Регистрация
24 Окт 2011
Сообщения
188
Благодарности
106
Баллы
185
Я в курсе,спасибо за совет,но циклический триггер у меня присутствует.Спасибо Myxomopу за создание "этой темы"
Мне было интересно,может есть более легкие пути,которые я по неопытности не заметил.
Записать время диалога и день диалога, и паузу - прибавить к текущему времени соответственно, в диалоге указать в условии - что-бы было время не меньше нужного. Может непонятно объясняю. Допустим мы поговорили с нпц в первый день, в 12.30. Пауза у нас 30 минут. Сохраняем время+паузу, дату, в переменные, которые потом проверяются в диалоге - достиг ли нпц нужного времени.

Я конечно не очень хорошо помню скрипты дедалуса, но рекурсия там была доступна, если мне память не отшибло, значит можно спокойно вычислить время, если нет изначально такой функции, на счет дней вообще не помню)
 
Сверху Снизу