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

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

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

GeneralLee

Участник форума
Регистрация
28 Мар 2013
Сообщения
110
Благодарности
0
Баллы
180
Код:
func void STARTUP_ORCTEMPEL()
{
	CurrentLevel = ORCTEMPEL_ZEN;
	Wld_InsertNpc(BAU_93021_DEATHGALLOM,"TPL_390");
};

func void INIT_SUB_ORCTEMPEL()
{
};

func void INIT_ORCTEMPEL()
{
	B_InitMonsterAttitudes();
	B_InitGuildAttitudes();
	B_InitNpcGlobals();
	INIT_SUB_ORCTEMPEL();
};

не помогает ) нпс не появляется...

Теперь ГотикСоурсер вылетел при компиляции проекта и не хочет его грузить.
Всё? приплыли? создавать проект с нуля ив ручную добавлять уже сделанные скрипты?))
Висит на стадии "Создается список переменных".

Проблему с соурсером решил)) ";" в списке переменных пропустил - исправил в ручную и все вернулось в рабочее состояние.
Разобрался почему стартам не работал. Выше приведенный скрипт работает нормально. 2 ошибки Мильтен указал правильно,а третья - расписание у нпс было не правильное.
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
unknown111,
думаю нужно спросить автора GHRF, насколько я понял это Мухомор...
Я шрифты напрямую не редактировал, а генерировал с помощью font2tga. Для успешного редактирования шрифтов Готики нужно хорошо уметь работать со слоями и альфа-каналами.

ElderGamer,
Попробуй скомпилить текстуру ГоМаном. Заодно и в размере файла сэкономишь, поскольку движок создаёт полный набор карт, а для шрифтов это излишество, достаточно самой большой карты.
Спасибо за подсказку насчет MIP карт - выложил новую версию оптимизированных шрифтов *Friendship*
Для компиляции шрифтов движком игры без лишних карт ложил шрифты в каталог work\data\Textures\FONTS\NOMIP
 

GeneralLee

Участник форума
Регистрация
28 Мар 2013
Сообщения
110
Благодарности
0
Баллы
180
Где-то видел сообщение о том, что можно прописать вещи какой-то флаг и их можно одевать бесконечно, ограничить скриптом только.

У меня есть идея разрешить носить 8 колец для идентификации гильдий, такие как кольцо братства воды, торговой гильдии, хранителей и тп.

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

Еще я не смотрел в скриптах, но придется ли потом переписывать стандартные скрипты или то, что предмет будет одет (кольцо воды с новым флагом) достаточно и не важно, что его переделал?
Уверен, что нет, но лучше спросить у "мастеров" )

Ну и крайняя наглость:
В Глобал Моде, как сообщает один достоверный источник, все ключи подписаны.
Можно как-то получить список ключей с их дескрипциями?)
Собирать велосипеды не очень то люблю...
хотяб в формате ид, дискрипция, ид, дискрипция...
 

hell9999

Участник форума
Регистрация
12 Апр 2008
Сообщения
2.049
Благодарности
1.169
Баллы
340
Где-то видел сообщение о том, что можно прописать вещи какой-то флаг и их можно одевать бесконечно, ограничить скриптом только.

mainflag = ITEM_KAT_MAGIC;

Ну и крайняя наглость:
В Глобал Моде, как сообщает один достоверный источник, все ключи подписаны.
Можно как-то получить список ключей с их дескрипциями?)
Собирать велосипеды не очень то люблю...
хотяб в формате ид, дискрипция, ид, дискрипция...
Что мешает декомпилировать собсно скрипты глобала и самому глянуть?
 

GeneralLee

Участник форума
Регистрация
28 Мар 2013
Сообщения
110
Благодарности
0
Баллы
180
Что мешает декомпилировать собсно скрипты глобала и самому глянуть?
Алгоритм в более чем 5 действий) проще на форуме спросить исходный скрипт и заниматься своими делами)
 

hell9999

Участник форума
Регистрация
12 Апр 2008
Сообщения
2.049
Благодарности
1.169
Баллы
340
Алгоритм в более чем 5 действий) проще на форуме спросить исходный скрипт и заниматься своими делами)

Уж не знаю, кто Вам информацию давал о всех подписанных ключах в ГМ. Специально сейчас сравнивал файлы IT_Addon_Keys.d и IT_Keys.d Глобала и Г2. Никакой разницы. Абсолютно.
Или может быть Вы имели в виду что-то иное?
 

GeneralLee

Участник форума
Регистрация
28 Мар 2013
Сообщения
110
Благодарности
0
Баллы
180
Да нет... спс за внимание.. наверно вы подписывали именно ключи из глобал мода, а не стандартные.
Информация поступала в припрыжку от радости, а в подробности не вдавался идея показалась хорошей)

По своему подпишу тогда)
 

Shevchenko

Участник форума
Регистрация
26 Ноя 2010
Сообщения
391
Благодарности
0
Баллы
180
В общем, у меня появился вопрос: я хочу сделать посох, но я не знаю, как сделать так, чтобы при ударе цель било молнией (ну как у когтя белиара). Прошу помощи!
 

redleha


Модостроитель
Регистрация
26 Фев 2008
Сообщения
735
Благодарности
665
Баллы
245
Shevchenko, если делаешь, то всё равно лезешь в скрипты. Берёшь задаёшь поиск "Коготь Белиара" - находишь имя инстанции этого меча. копируешь и ищешь уже его по всему проекту. смотришь, сравниваешь, делаешь по аналогии.
 

Shevchenko

Участник форума
Регистрация
26 Ноя 2010
Сообщения
391
Благодарности
0
Баллы
180
Так я так и делаю, но почему-то вме равно нисего не работает. Я вот и спросил
 

Ilot

Участник форума
Регистрация
17 Сен 2010
Сообщения
798
Благодарности
297
Баллы
245
Так я так и делаю, но почему-то вме равно ничего не работает. Я вот и спросил
Shevchenko, правильно думаешь. С Когтем там все не так просто. Есть такая константа BeliarDamageChance. Она имеет дефольное значение 0. И если посмотреть скрипт:
Код:
var int RavenBlitz;

func void B_BeliarsWeaponSpecialDamage(var C_Npc oth,var C_Npc slf)
{
	var int RavenRandy;
	var int DamageRandy;
	if(Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Raven))
	{
		Wld_PlayEffect("spellFX_BELIARSRAGE_COLLIDE",slf,slf,0,0,0,FALSE);
		if(RavenBlitz <= 0)
		{
			Wld_PlayEffect("spellFX_BELIARSRAGE",oth,oth,0,0,0,FALSE);
			B_MagicHurtNpc(slf,oth,50);
			RavenBlitz += 1;
		}
		else if(RavenBlitz >= 3)
		{
			RavenRandy = Hlp_Random(3);
			if(RavenRandy <= 50)
			{
				RavenBlitz = 0;
			};
		}
		else
		{
			RavenBlitz += 1;
		};
	}
	else if(Hlp_GetInstanceID(oth) == Hlp_GetInstanceID(hero))
	{
		DamageRandy = Hlp_Random(100);
		if(C_ScHasReadiedBeliarsWeapon() && (DamageRandy <= BeliarDamageChance))
		{
			if(slf.aivar[AIV_MM_REAL_ID] == ID_DRAGON_UNDEAD)
			{
				Wld_PlayEffect("spellFX_BELIARSRAGE",oth,oth,0,0,0,FALSE);
				B_MagicHurtNpc(slf,oth,100);
			}
			else if(slf.flags != NPC_FLAG_IMMORTAL)
			{
				Wld_PlayEffect("spellFX_BELIARSRAGE",slf,slf,0,0,0,FALSE);
				B_MagicHurtNpc(oth,slf,100);
			};
			Wld_PlayEffect("spellFX_BELIARSRAGE_COLLIDE",hero,hero,0,0,0,FALSE);
		};
		if(C_ScHasReadiedBeliarsWeapon() && (DamageRandy <= 50))
		{
			Wld_PlayEffect("spellFX_BELIARSRAGE_COLLIDE",hero,hero,0,0,0,FALSE);
		};
	};
};
Можно заметить, что урона наноситься не будет, поэтому присвой этой переменной определенное значение. А поменять меч на посох просто. Добавь строчку с визуалом в инстанцию любого когтя.
Код:
instance ItMw_BeliarWeapon_2H_01(BeliarWeaponPrototype_2H)
{
	value = Value_BeliarW_2H_01;
[COLOR="Red"]	visual = "ItMw_BeliarWeapon_2H.3DS";[/COLOR]//здесь ставь свой визуал
	damageTotal = Damage_BeliarW_2H_01;
	count[5] = value;
	count[3] = damageTotal;
	count[4] = BeliarDamageChance_01;
};
 

Shevchenko

Участник форума
Регистрация
26 Ноя 2010
Сообщения
391
Благодарности
0
Баллы
180
Благодарю за помощь, вопрос исчерпан, все работает, однако вместо удара молнии у меня появляются пузыри. Поэтому созрел еще один вопрос, как сделать новую анимацию, как удар молнии, только другую?
 

GeneralLee

Участник форума
Регистрация
28 Мар 2013
Сообщения
110
Благодарности
0
Баллы
180
Кстати по поводу "отлова" наступления дождя:
Кто-то мне советовал проверять дождик идет или нет после сна...
Так вот - это не корректный способ.
Во первых - дождь начинается совсем не в момент когда ты просыпаешься.
Я вклинил проверку в сон и заметил следующие факты:
1) Дождь теперь вообще не начинается после сна.
2) Если дождь начался - ложимся на кровать, спим - скрипт ловит "дождь есть", но после сна дождь тут же заканчивается.

Самый лучший вариант - раз в 3 секунды циклическим триггером проверять идет ли дождь.
Багов этого способа пока не выявил.

Возник такой вопрос:
Скрипт магического сна с моими коррективами (добавил вызов моей функции, которая при использовании свитка на определенного нпс правит нужные переменные и выводит на экран сообщение "усыпили/разбудили"):
Код:
func int B_StopMagicSleep()
{
	Npc_PercDisable(self,PERC_ASSESSDAMAGE);
	B_Say_Overlay(self,other,"$WHATWASSTHAT");
	AI_PlayAni(self,"T_VICTIM_SLE_2_STAND");
	GuardSleep(other, FALSE);
	return TRUE;
};

func void B_AssessMagicSleepTalk()
{
	B_Say(self,other,"$YOUDISTURBEDMYSLUMBER");
	AI_StartState(self,ZS_ObservePlayer,1,"");
           GuardSleep(self, FALSE);
};

func void ZS_MagicSleep()
{
	Npc_PercEnable(self,PERC_ASSESSDAMAGE,B_StopMagicSleep);
	Npc_PercEnable(self,PERC_ASSESSMAGIC,B_AssessMagic);
	Npc_PercEnable(self,PERC_ASSESSTALK,B_AssessMagicSleepTalk);
	self.aivar[AIV_Guardpassage_Status] = GP_NONE;
	Npc_SetRefuseTalk(self,0);
	Npc_SetTempAttitude(self,Npc_GetPermAttitude(self,hero));
	B_StopLookAt(self);
	AI_StopPointAt(self);
	if(!Npc_HasBodyFlag(self,BS_FLAG_INTERRUPTABLE))
	{
		AI_Standup(self);
	}
	else
	{
		AI_StandupQuick(self);
	};
	AI_PlayAniBS(self,"T_STAND_2_VICTIM_SLE",BS_LIE);
	GuardSleep(other, TRUE);
};

func int ZS_MagicSleep_Loop()
{
	if(Npc_GetStateTime(self) > SPL_TIME_Sleep)
	{
		Npc_ClearAIQueue(self);
		B_StopMagicSleep();
		return LOOP_END;
	};

В итоге все работает правильно:
усыпляем жертву - получаем все что нужно и сообщение "усыпили"
Если дождаться, когда проснется на экране появится "проснулся!" и все необходимое выполняется.
Тоже самое если разбудить разговором.

Но вот если мы разбудим нпс ударом по голове...
то надписи "проснулся!" не появляется, а нпс будет стоять и ничего не делать пока с ним не поговоришь. (если длительность сна закончилась - он просто "просыпается" и функция отрабатывает.)

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

Решили проблему так:

в
ZS_MagicSleep
добавили - Npc_PercDisable(other,PERC_ASSESSDAMAGE);
отключили восприятие урона.

В пробуждении дописали:
Npc_PercEnable(other,PERC_ASSESSDAMAGE,B_AssessDamage);
Включение восприятия урона.
Разумеется с условием "только для бессмертных".
 

Мільтен

Участник форума
Регистрация
27 Июн 2008
Сообщения
862
Благодарности
427
Баллы
265
AW: Не стесняюсь спросить....

У меня есть модель нового зверя и анимация его передвижения(большего мне не надо).
Как впихнуть его в игру? Может кто расписать мдс-файл, который подхватывал бы только модель зверя и аниму его движения?
 

GeneralLee

Участник форума
Регистрация
28 Мар 2013
Сообщения
110
Благодарности
0
Баллы
180
Реально ли убрать дождь сквозь крышу?)
Сделал, чтобы нпс прятались от дождя) но дождь и там, где они прячутся)) не очень логично.
 

hell9999

Участник форума
Регистрация
12 Апр 2008
Сообщения
2.049
Благодарности
1.169
Баллы
340
Реально ли убрать дождь сквозь крышу?)
Сделал, чтобы нпс прятались от дождя) но дождь и там, где они прячутся)) не очень логично.

Непроницаемость для дождя задана только для мешей локации. Вобы проницаемы.
 

Shevchenko

Участник форума
Регистрация
26 Ноя 2010
Сообщения
391
Благодарности
0
Баллы
180
А у меня снова проблемы с Когтем Белиара, раньше анимация проигровалась, но не та, а теперь она исчезла! Помогите пожалуйста, буду весьма благодарен.
 

Yelawolf

★★★★★★★★★
Супермодератор
Регистрация
27 Дек 2011
Сообщения
1.415
Благодарности
471
Баллы
355
Товарищи! С чем связана ошибка неизвестного идентификатора..?.
У меня при компиляции вдруг появилась это дурацкая ошибка, которая уже изрядна потрепала мне нервы.
Буду благодарен, если поможите ее решить.
Под спойлером собственно сам скрипт, красным выделено то место, где выдает ошибку.
Код:
instance DIA_Vatras_AUGEGEHEILT(C_Info)
{
	npc = VLK_439_Vatras;
	nr = 33;
	condition = DIA_Vatras_AUGEGEHEILT_Condition;
	information = DIA_Vatras_AUGEGEHEILT_Info;
	important = TRUE;
};


func int DIA_Vatras_AUGEGEHEILT_Condition()
{
	if((Kapitel == 3) && (RitualInnosEyeRuns == LOG_Running) && (Npc_RefuseTalk(self) == FALSE))
	{
		return TRUE;
	};
};

func void DIA_Vatras_AUGEGEHEILT_Info()
{
	AI_Output(self,other,"DIA_Vatras_AUGEGEHEILT_05_00");	//Это прекрасно. Нам удалось расстроить план врага и вылечить глаз.
	AI_Output(self,other,"DIA_Vatras_AUGEGEHEILT_05_01");	//Как с ним обращаться объяснит тебе Пирокар.
	if((JOINWATERRING == TRUE) && (YARKENDаRTROUBLE == FALSE) && (RavenIsDead == TRUE) && (AWORCINVASIONSTART == FALSE))
	{
		AI_Output(self,other,"DIA_Vatras_AUGEGEHEILT_05_03");	//И еще кое-что...Поскольку ты состоишь в нашем тайном обществе Кольца Воды, у меня есть к тебе одно очень важное поручение.
		AI_Output(self,other,"DIA_Vatras_AUGEGEHEILT_05_04");	//Мы давно не получали никаких вестей от нашей экспедиции в Яркендаре. Меня очень сильно тревожит этот факт!
		AI_Output(self,other,"DIA_Vatras_AUGEGEHEILT_05_05");	//Ты должен, как можно скорее, попасть туда и узнать, что там произошло. Это дело не терпит отлагательств!
		AI_Output(self,other,"DIA_Vatras_AUGEGEHEILT_05_06");	//Но прежде чем отправиться туда, обязательно поговори с Пирокаром. Теперь все...
		Log_CreateTopic(TOPIC_ADW_NEWSVATRAS,LOG_MISSION);
		Log_SetTopicStatus(TOPIC_ADW_NEWSVATRAS,LOG_Running);
		Log_AddEntry(TOPIC_ADW_NEWSVATRAS,"Ватрас давно не получал никаких известий от Магов Воды в Яркендаре. Он просит меня отправиться туда и выяснить, что случилось.");
		[COLOR="Red"][B]YARKENDаRTROUBLE = TRUE;[/B][/COLOR]
	};
	AI_Output(self,other,"DIA_Vatras_AUGEGEHEILT_05_02");	//Я надеюсь, я вновь увижу тебя, когда ты выполнишь свое задание. Удачи!
	B_LogEntry(TOPIC_INNOSEYE,"Глаз излечен. Пирокар даст его мне и объяснит, как с ним обращаться.");
	AI_StopProcessInfos(self);
	Vatras_MORE = FALSE;
	RitualInnosEyeRuns = LOG_SUCCESS;
	MIS_RitualInnosEyeRepair = LOG_SUCCESS;
	B_StartOtherRoutine(Pyrokar,"RitualInnosEyeRepair");
	B_StartOtherRoutine(Xardas,"RitualInnosEyeRepair");
	B_StartOtherRoutine(VLK_455_Buerger,"START");
	B_StartOtherRoutine(VLK_454_Buerger,"START");
	B_StartOtherRoutine(VLK_428_Buergerin,"START");
	B_StartOtherRoutine(VLK_450_Buerger,"START");
	B_StartOtherRoutine(VLK_426_Buergerin,"START");
};
 

hell9999

Участник форума
Регистрация
12 Апр 2008
Сообщения
2.049
Благодарности
1.169
Баллы
340
YARKENDаRTROUBLE в constants.d зарегестрирован?
 

Trazege

Участник форума
Регистрация
20 Фев 2008
Сообщения
1.760
Благодарности
1.394
Баллы
340
Товарищи! С чем связана ошибка неизвестного идентификатора..?.
У меня при компиляции вдруг появилась это дурацкая ошибка, которая уже изрядна потрепала мне нервы.
Буду благодарен, если поможите ее решить.
Под спойлером собственно сам скрипт, красным выделено то место, где выдает ошибку.
Код:
instance DIA_Vatras_AUGEGEHEILT(C_Info)
{
	npc = VLK_439_Vatras;
	nr = 33;
	condition = DIA_Vatras_AUGEGEHEILT_Condition;
	information = DIA_Vatras_AUGEGEHEILT_Info;
	important = TRUE;
};


func int DIA_Vatras_AUGEGEHEILT_Condition()
{
	if((Kapitel == 3) && (RitualInnosEyeRuns == LOG_Running) && (Npc_RefuseTalk(self) == FALSE))
	{
		return TRUE;
	};
};

func void DIA_Vatras_AUGEGEHEILT_Info()
{
	AI_Output(self,other,"DIA_Vatras_AUGEGEHEILT_05_00");	//Это прекрасно. Нам удалось расстроить план врага и вылечить глаз.
	AI_Output(self,other,"DIA_Vatras_AUGEGEHEILT_05_01");	//Как с ним обращаться объяснит тебе Пирокар.
	if((JOINWATERRING == TRUE) && (YARKENDаRTROUBLE == FALSE) && (RavenIsDead == TRUE) && (AWORCINVASIONSTART == FALSE))
	{
		AI_Output(self,other,"DIA_Vatras_AUGEGEHEILT_05_03");	//И еще кое-что...Поскольку ты состоишь в нашем тайном обществе Кольца Воды, у меня есть к тебе одно очень важное поручение.
		AI_Output(self,other,"DIA_Vatras_AUGEGEHEILT_05_04");	//Мы давно не получали никаких вестей от нашей экспедиции в Яркендаре. Меня очень сильно тревожит этот факт!
		AI_Output(self,other,"DIA_Vatras_AUGEGEHEILT_05_05");	//Ты должен, как можно скорее, попасть туда и узнать, что там произошло. Это дело не терпит отлагательств!
		AI_Output(self,other,"DIA_Vatras_AUGEGEHEILT_05_06");	//Но прежде чем отправиться туда, обязательно поговори с Пирокаром. Теперь все...
		Log_CreateTopic(TOPIC_ADW_NEWSVATRAS,LOG_MISSION);
		Log_SetTopicStatus(TOPIC_ADW_NEWSVATRAS,LOG_Running);
		Log_AddEntry(TOPIC_ADW_NEWSVATRAS,"Ватрас давно не получал никаких известий от Магов Воды в Яркендаре. Он просит меня отправиться туда и выяснить, что случилось.");
		[COLOR="Red"][B]YARKENDаRTROUBLE = TRUE;[/B][/COLOR]
	};
	AI_Output(self,other,"DIA_Vatras_AUGEGEHEILT_05_02");	//Я надеюсь, я вновь увижу тебя, когда ты выполнишь свое задание. Удачи!
	B_LogEntry(TOPIC_INNOSEYE,"Глаз излечен. Пирокар даст его мне и объяснит, как с ним обращаться.");
	AI_StopProcessInfos(self);
	Vatras_MORE = FALSE;
	RitualInnosEyeRuns = LOG_SUCCESS;
	MIS_RitualInnosEyeRepair = LOG_SUCCESS;
	B_StartOtherRoutine(Pyrokar,"RitualInnosEyeRepair");
	B_StartOtherRoutine(Xardas,"RitualInnosEyeRepair");
	B_StartOtherRoutine(VLK_455_Buerger,"START");
	B_StartOtherRoutine(VLK_454_Buerger,"START");
	B_StartOtherRoutine(VLK_428_Buergerin,"START");
	B_StartOtherRoutine(VLK_450_Buerger,"START");
	B_StartOtherRoutine(VLK_426_Buergerin,"START");
};

Переменная не прописана либо как локальная, либо как глобальная. Если что пиши в личку на модострое - помогу чем смогу.;)
 
Сверху Снизу