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

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, доброго времени суток!
    Стартовал новый литературный конкурс от "Ордена Хранителей" - "Пираты Миртанского моря".
    Каждый может принять в нём участие и снискать славу и уважение, а в случае занятия призового места ещё и получить награду. Дерзайте
  • Дорогие друзья, год подходит к концу, и пришло время подвести его итоги и наградить достойных

    Не ленитесь, голосуйте в этой теме за тех форумчан, которые по вашему мнению больше всех проявили себя в этом году
    По желанию, аргументировать свой выбор можете в теме обсуждения голосования.

Не стесняюсь спросить....

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Кстате, уже на г2ексте запилил пока что просто перемещение воба к ГГ(пока что только мгновенное, но не сложно исправить) Так что думаю выйдет=)
 

dranik

Участник форума
Регистрация
20 Мар 2008
Сообщения
586
Благодарности
35
Баллы
210
Ребят, я тут от нечего делать, решил подбить мод "Путь Некроманта" (это мод на Ребаланс.уни) под себя... Разархивировал Nekr.mod, сделал пару изменений в соурсере и закомпилировал (0 ошибок,0 вниминия) ! потом файлы Gothic.dat & Ou.bin моего проекта, я заменил вместо твоих (те что разархивировал VDFS' ом) Вообщем в итоге я создал мод Nekr2.mod. Но как я не старался, запускается, только ребаланс.уни а мод Некр2 не хочет ? Почему оригинальный мод Nekr.mod, он запускает на базе ребаланса, а мой не хочет ?
 

ДораФеникс

Участник форума
Регистрация
29 Янв 2011
Сообщения
53
Благодарности
0
Баллы
155
А ты ini файл прописал для твоего мод файла? Если нет то проблема в этом, а если да то напиши более подробно ошибки и что ты сделал.
 

ДораФеникс

Участник форума
Регистрация
29 Янв 2011
Сообщения
53
Благодарности
0
Баллы
155
Возник вопрос, в каком скрипте прописывать принадлежность портала "P:" к NPC и к гильдиям? Или там другой подход, что бы на героя возмущались когда он заходит в чужой дом?
P.S И ещё вопрос, для портала ghostoccluder, который снимает напряжение с территории, можно использовать любой материал, только ему надо дать это название?
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
ДораФеникс,
void Wld_AssignRoomToGuild (string s0, int guild); - размещает гильдию guild на пространстве s0.
void Wld_AssignRoomToNpc (string s0, c_npc roomowner); - размещает НПС roomowner на пространстве s0.

Пример из Story\Startup.d
Wld_AssignRoomToGuild("ki2",GIL_NONE);
 

xterm

Участник форума
Регистрация
25 Июн 2009
Сообщения
5.178
Благодарности
16
Баллы
400
dranik
уже отписал в лс. косяк в ини-файле, 100%.
 

nikola4it

Участник форума
Регистрация
25 Авг 2011
Сообщения
4
Благодарности
0
Баллы
145
Есть вопрос: В готике 2НВ при загрузке игры (новой или сохраненной) Все НПС без исключения (будь то мастера оружия (60-100%) или профи (30-59%)) дерутся как новички (0-29%)!!! И из-за этого я не могу модостроировать!
Что Делать??? :'(
З.Ы. Если ранее писали дайте ссылку! Заранее спасибо!:)
 

Feuermagier


Модостроитель
Регистрация
13 Апр 2008
Сообщения
934
Благодарности
136
Баллы
225
Есть вопрос: В готике 2НВ при загрузке игры (новой или сохраненной) Все НПС без исключения (будь то мастера оружия (60-100%) или профи (30-59%)) дерутся как новички (0-29%)!!! И из-за этого я не могу модостроировать!
Что Делать???
З.Ы. Если ранее писали дайте ссылку! Заранее спасибо!

Это такой тонкий стеб с бота?
Если да - шутка удалась:D
Если нет - то как это может мешать "модостроировать"?
До первого сейв - лоада все нпс будут так драться, однако моддингом это заниматься не мешает
 

nikola4it

Участник форума
Регистрация
25 Авг 2011
Сообщения
4
Благодарности
0
Баллы
145
Feuermagier, это во всех версиях г2?
просто я б начал и в г1, там этого нет. но у меня нету декомпилированных скриптов г1, без оригинальной истории. я хочу сделать типо WoW (из фильма) в начале грандиозный файт.
 

Мільтен

Участник форума
Регистрация
27 Июн 2008
Сообщения
862
Благодарности
427
Баллы
265
Я скопирую посты номер 1127 и 1129 в Ворд, распечатаю, повешу в рамку над кроватью. Каждое утро буду вставать, читать и поднимать себе настроение:D

Сорри за оффтоп.*flowers*
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
nikola4it,
Story\B_Story\B_AddFightSkill.d
Добавь красненьское и будет тебе счастье :))

Код:
func void B_AddFightSkill(var C_Npc slf,var int talent,var int percent)
{
	if(talent == NPC_TALENT_1H)
	{
		slf.HitChance[NPC_TALENT_1H] = slf.HitChance[NPC_TALENT_1H] + percent;
		if(slf.HitChance[NPC_TALENT_1H] >= 0)
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_1H,0);
			[COLOR="Red"]Mdl_RemoveOverlayMds(self,"humans_1hST1.MDS");
			Mdl_RemoveOverlayMds(self,"humans_1hST2.MDS");[/COLOR]
		};
		if(slf.HitChance[NPC_TALENT_1H] >= 30)
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_1H,1);
			[COLOR="red"]Mdl_ApplyOverlayMds(self,"humans_1hST1.mds");[/COLOR]
		};
		if(slf.HitChance[NPC_TALENT_1H] >= 60)
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_1H,2);
			[COLOR="red"]Mdl_ApplyOverlayMds(self,"humans_1hST2.mds");[/COLOR]
		};
	};
	if(talent == NPC_TALENT_2H)
	{
		slf.HitChance[NPC_TALENT_2H] = slf.HitChance[NPC_TALENT_2H] + percent;
		if(slf.HitChance[NPC_TALENT_2H] >= 0)
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_2H,0);
			[COLOR="red"]Mdl_RemoveOverlayMds(self,"humans_2hST1.MDS");
			Mdl_RemoveOverlayMds(self,"humans_2hST2.MDS");[/COLOR]
		};
		if(slf.HitChance[NPC_TALENT_2H] >= 30)
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_2H,1);
			[COLOR="red"]Mdl_ApplyOverlayMds(self,"humans_2hST1.mds");[/COLOR]
		};
		if(slf.HitChance[NPC_TALENT_2H] >= 60)
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_2H,2);
			[COLOR="red"]Mdl_ApplyOverlayMds(self,"humans_2hST2.mds");[/COLOR]
		};
	};
	if(talent == NPC_TALENT_BOW)
	{
		slf.HitChance[NPC_TALENT_BOW] = slf.HitChance[NPC_TALENT_BOW] + percent;
		if(slf.HitChance[NPC_TALENT_BOW] >= 0)
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_BOW,0);
			[COLOR="red"]Mdl_RemoveOverlayMds(self,"humans_bowT1.MDS");
			Mdl_RemoveOverlayMds(self,"humans_bowT2.MDS");[/COLOR]
		};
		if(slf.HitChance[NPC_TALENT_BOW] >= 30)
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_BOW,1);
			[COLOR="red"]Mdl_ApplyOverlayMds(self,"humans_bowT1.mds");[/COLOR]
		};
		if(slf.HitChance[NPC_TALENT_BOW] >= 60)
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_BOW,2);
			[COLOR="red"]Mdl_ApplyOverlayMds(self,"humans_bowT2.mds");[/COLOR]
		};
	};
	if(talent == NPC_TALENT_CROSSBOW)
	{
		slf.HitChance[NPC_TALENT_CROSSBOW] = slf.HitChance[NPC_TALENT_CROSSBOW] + percent;
		if(slf.HitChance[NPC_TALENT_CROSSBOW] >= 0)
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_CROSSBOW,0);
			[COLOR="red"]Mdl_RemoveOverlayMds(self,"humans_cbowT1.MDS");
			Mdl_RemoveOverlayMds(self,"humans_cbowT2.MDS");[/COLOR]
		};
		if(slf.HitChance[NPC_TALENT_CROSSBOW] >= 30)
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_CROSSBOW,1);
			[COLOR="red"]Mdl_ApplyOverlayMds(self,"humans_cbowT1.mds");[/COLOR]
		};
		if(slf.HitChance[NPC_TALENT_CROSSBOW] >= 60)
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_CROSSBOW,2);
			[COLOR="red"]Mdl_ApplyOverlayMds(self,"humans_cbowT2.mds");[/COLOR]
		};
	};
};
 

nikola4it

Участник форума
Регистрация
25 Авг 2011
Сообщения
4
Благодарности
0
Баллы
145
Myxomop, спасибо, будем пробовать!
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.577
Благодарности
4.171
Баллы
915
У меня вызывают подозрение следующие условия (выделено жирным шрифтом):
Код:
	if(talent == NPC_TALENT_1H)
	{
		slf.HitChance[NPC_TALENT_1H] = slf.HitChance[NPC_TALENT_1H] + percent;
		[B]if(slf.HitChance[NPC_TALENT_1H] >= 0)[/B]
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_1H,0);
<...>
	if(talent == NPC_TALENT_2H)
	{
		slf.HitChance[NPC_TALENT_2H] = slf.HitChance[NPC_TALENT_2H] + percent;
		[B]if(slf.HitChance[NPC_TALENT_[COLOR="Red"]1H[/COLOR]] >= 0)[/B]
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_2H,0); 
<...>
	if(talent == NPC_TALENT_BOW)
	{
		slf.HitChance[NPC_TALENT_BOW] = slf.HitChance[NPC_TALENT_BOW] + percent;
		[B]if(slf.HitChance[NPC_TALENT_BOW] >= 0)[/B]
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_BOW,0);
<...>
	if(talent == NPC_TALENT_CROSSBOW)
	{
		slf.HitChance[NPC_TALENT_CROSSBOW] = slf.HitChance[NPC_TALENT_CROSSBOW] + percent;
		[B]if(slf.HitChance[NPC_TALENT_CROSSBOW] >= 0)[/B]
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_CROSSBOW,0);
1. Условие "навык владения оружием >= 0" может включать в себя условия "навык владения оружием >= 30" и "навык владения оружием >= 60". Поэтому предлагаю изменить условие на "навык владения оружием < 30":
Код:
[B]if(slf.HitChance[NPC_TALENT_1H] [COLOR="Green"]< 30[/COLOR])
[/B]<...>
[B]if(slf.HitChance[NPC_TALENT_2H] [COLOR="Green"]< 30[/COLOR])[/B]
<...>
[B]if(slf.HitChance[NPC_TALENT_BOW] [COLOR="Green"]< 30[/COLOR])[/B]
<...>
[B]if(slf.HitChance[NPC_TALENT_CROSSBOW] [COLOR="Green"]< 30[/COLOR])[/B]
2. Почему для навыка владения двуручным оружием используется условие с шансом попадания одноручным оружием (выделено красным цветом)? Это чертовски похоже на баг!

P.S.: Не исключено, что сбои в тактике сражений у неписей могут происходить именно из-за этих условий. Поэтому можно попробовать обойтись без дополнительного назначения анимаций (новичок/боец/мастер и новичок/стрелок/мастер).
 

redleha


Модостроитель
Регистрация
26 Фев 2008
Сообщения
735
Благодарности
666
Баллы
245
Dimus,
if(slf.HitChance[NPC_TALENT_1H] >= 0)
{
Npc_SetTalentSkill(slf,NPC_TALENT_2H,0);
ты прав, это косяк, но некритичный. А вот накладывать насильно оверлей - это нормальный вполне вариант.
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
Dimus,
Действительно баг скрипта, но только в условии двуручника, но в одноручнике, луке и арбалете также в начале игры не присваивается заданный уровень, так что оверлей реально рабочее исправление вначале игры.

Теперь по поводу условий.
Проверка условий идет по скрипту сверху вниз, так-что оригинальный вариант верный, если значение прокачки будет ниже условного, скрипт дальше просто не пойдет и остановится на предыдущей ступени.

В твоем случае, к примеру если даже уровень раскачки атрибута будет скажем 10ед умения, т.е. начальный, все равно будет присвоен уровень мастера, т.к. скрипт идет сверху вниз...

10 < 30 - TRUE
10 < 60 - TRUE!
10 < 90 - TRUE!!!
Sad_but_true :D
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.577
Благодарности
4.171
Баллы
915
10 < 30 - TRUE
10 < 60 - TRUE!
10 < 90 - TRUE!!!

Разве? По моему, если у ГГ начальный HitChance = 10%, то должно быть так:
10 < 30 - TRUE, TalentSkill = 0
10 >= 30 - FALSE
10 >= 60 - FALSE

Хотя в переработанном скрипте Story\B_Story\B_AddFightSkill.d этой лажи не должно быть по определению:
Код:
func void B_AddFightSkill(var C_Npc slf,var int talent,var int percent)
{
	if(talent == NPC_TALENT_1H)
	{
		slf.HitChance[NPC_TALENT_1H] = slf.HitChance[NPC_TALENT_1H] + percent;
		if(slf.HitChance[NPC_TALENT_1H] >= 60)
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_1H,2);
		}
		else if(slf.HitChance[NPC_TALENT_1H] >= 30)
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_1H,1);
		}
		else
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_1H,0);
		};
	};
	if(talent == NPC_TALENT_2H)
	{
		slf.HitChance[NPC_TALENT_2H] = slf.HitChance[NPC_TALENT_2H] + percent;
		if(slf.HitChance[NPC_TALENT_2H] >= 60)
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_2H,2);
		}
		else if(slf.HitChance[NPC_TALENT_2H] >= 30)
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_2H,1);
		}
		else
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_2H,0);
		};
	};
	if(talent == NPC_TALENT_BOW)
	{
		slf.HitChance[NPC_TALENT_BOW] = slf.HitChance[NPC_TALENT_BOW] + percent;
		if(slf.HitChance[NPC_TALENT_BOW] >= 60)
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_BOW,2);
		}
		else if(slf.HitChance[NPC_TALENT_BOW] >= 30)
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_BOW,1);
		}
		else
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_BOW,0);
		};
	};
	if(talent == NPC_TALENT_CROSSBOW)
	{
		slf.HitChance[NPC_TALENT_CROSSBOW] = slf.HitChance[NPC_TALENT_CROSSBOW] + percent;
		if(slf.HitChance[NPC_TALENT_CROSSBOW] >= 60)
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_CROSSBOW,2);
		}
		else if(slf.HitChance[NPC_TALENT_CROSSBOW] >= 30)
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_CROSSBOW,1);
		}
		else
		{
			Npc_SetTalentSkill(slf,NPC_TALENT_CROSSBOW,0);
		};
	};
};
10 >= 60 - FALSE, 10 >= 30 - FALSE, TalentSkill = 0
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
Dimus,
Разве? По моему, если у ГГ начальный HitChance = 10%, то должно быть так:
10 < 30 - TRUE, TalentSkill = 0
10 >= 30 - FALSE
10 >= 60 - FALSE
Ну ты сразу так не расписывал, вот я и предположил, что ты везде хочешь поставить "<" вместо ">=" . И зачем собственно дальнейшие извращения, если оригинальный вариант (не считая одного бага) верный? Чтобы просто отличалось?

ЗЫ. И без наложения оверлея для НПЦ до сейв\лоада не будет работать верная анимация, я уже проверял пару лет назад.
 

redleha


Модостроитель
Регистрация
26 Фев 2008
Сообщения
735
Благодарности
666
Баллы
245
А ещё, можно насильно накладывать оверлей в скрипте самого непися. Желательно последней строкой. Но это много добавлений.
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.577
Благодарности
4.171
Баллы
915
Myxomop написал(а):
И зачем собственно дальнейшие извращения, если оригинальный вариант (не считая одного бага) верный? Чтобы просто отличалось?
Потому что код оригинального варианта работает неэффективно - при шансе попадания >= 60 значение TalentSkill задаётся трижды (0, 1, 2).

redleha написал(а):
А ещё, можно насильно накладывать оверлей в скрипте самого непися. Желательно последней строкой. Но это много добавлений.
Вот именно. Так что предложенный Myxomopом вариант с наложением оверлея в функции B_AddFightSkill() выглядит более предпочтительно.
 

Beowulf

Участник форума
Регистрация
21 Ноя 2010
Сообщения
1.954
Благодарности
1.488
Баллы
465
Доброго дня суток:)
Пробовал через NotePad ++ вставить вобы из старого зена в новый. Действовал согласно тутору, но когда я открывал новый зен (после редактирования в нотпаде), то спейсер зависал. Потом снова открыл нотпад и убрал все изменения. Новый Зен стал открываться, но таки один веипоинт (из старого) остался.
Из-за чего может не даваться перетаскивание вобов из старого зена в новый таким способом?
Делал все по тутору https://worldofplayers.ru/node/554
 
Сверху Снизу