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

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

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

Вопросы по скриптингу

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
  • Первое сообщение
  • #1
Прежде чем задавать вопросы, ознакомьтесь с документацией..
1) Читать онлайн
2) Архив с офлайн-версией(chm) во вложении
 

Вложения

  • Vam_tutor.rar
    171,6 KB · Просмотры: 578
Последнее редактирование модератором:

Feuermagier


Модостроитель
Регистрация
13 Апр 2008
Сообщения
934
Благодарности
136
Баллы
225
Оки, а можно не эффект черного экрана, а заставку какую нить? Какой функцией это кстати лучше сделать?
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
Feuermagier
Ну к примеру:
Wld_PlayEffect("SLEEP_BLEND",hero,hero,0,0,0,TRUE);
или
Wld_PlayEffect("BLACK_SCREEN",hero,hero,0,0,0,TRUE);

Все эффекты в visualfx.dat, там можешь и своих насоздавать по примеру.
 

CHuKepC

Участник форума
Регистрация
5 Мар 2010
Сообщения
22
Благодарности
0
Баллы
150
Всем привет.Есть один вопрос ,как в Готике можно изменить вид(способ) хождение главного героя.Точнее при включенном Caps Lock.Ну например я хочу сделать так чтобы у меня ГГ при включенном Caps Loke ходил как маг.В марвине находил подобный параметр ,но его изменение действовало только до выхода из игры.Меня интересует как именить этот параметр ,чтобы ГГ использовал данный вид хождения все время.Думаю что надо будет лазить в скриптах.Опыт скритинга есть ,но к сожелению не в Готике.Помогите пожалуйста разобраться если что статьи и туторы какие надо прочту.(Извените если уже обсуждалось просто не имею много свободного времени чтобы искать)
 

Feuermagier


Модостроитель
Регистрация
13 Апр 2008
Сообщения
934
Благодарности
136
Баллы
225
Надо в инстанции нпс ( в нашем случае PC_Hero) изменить Mdl_ApplyOverlayMds (self, "Humans_Relaxed.mds"); изменить"Humans_Relaxed.mds на "Humans_Mage.mds помоему(точно не помню, посмотри как у магов написано) ::) остальное по скриптингу найдешь здесь http://mod.worldofgothic.ru/
 

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.183
Благодарности
2.880
Баллы
420
Так подумал, а собственно как организована игра на лютне в плане анимации, как сделано чтобы лютня в руке размещалась правильно? Чёт порылся и ответа не нашел.


Делаешь в максе анимацию на базе hum_body_naked0.MAX. Затем создёшь предмет для использования (лютня), позиционируешь, привязываешь к нужной части тела и обзываешь как ZS_*. *это как правило или RIGHTHAND или LEFTHAND. При этом рекомендуется соблюдать иерархию слотов hum_body_naked0.asc в привязке к костям.
Экспортируешь и тестишь в игре. Т.е. на ориентацию предмета непосредственно влияет ориентация слота, куда этот предмет вставлен.
 

dranik

Участник форума
Регистрация
20 Мар 2008
Сообщения
586
Благодарности
35
Баллы
210
Всем привет ! Я вот хочу в Аддоне Возвращение изменить эфект маски спящего. Убрать эфект самосгорания (но оставить фиолетовую ауру при надевании). Также хотелось бы добавить в ее свойства кое-что полезное (например защиту от огня и магии или ману пусть добавляет). Вообщем напишите что нужно в коде стереть и что добавить для этого ! :)
 

vmazz

Участник форума
Регистрация
18 Дек 2008
Сообщения
218
Благодарности
1
Баллы
165
Items\IT_Misk.d

функция использования маски - func void equip_itmi_sleeperhelm_mis()

удали в ней строку Npc_ChangeAttribute(self,ATR_HITPOINTS,-self.attribute[ATR_HITPOINTS_MAX]);
это уберет отнимание здоровья у ГГ. Если хочешь добавить что-нибудь полезное, то открой любой предмет(прим. кольцо) и смотри как там это сделано. Следует так-же учесть что если будешь добавлять положительный эффект, то наверно следует его убирать при снятии =) Кароче расписывать все долго бери любое кольцо/амулет и т.д. и смотри как сделано, проще самому смотреть на примерах, чем задавать каждый раз вопрос и ждать ответа. Удачи в освоении скриптологии!

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

В общем вот нужный скрипт маски:
Код:
instance ITMI_HELMSLEEPER_MIS(C_Item)
{
	name = "Маска Спящего";
	mainflag = ITEM_KAT_ARMOR;			// Исправляем
	flags = ITEM_MULTI | ITEM_MISSION;
	value = 50000;
	wear = WEAR_HEAD;
	effect = "SPELLFX_FIRESWORDBLACK";
	visual = "ITAR_SLEEPER_HELM.3ds";
	visual_skin = 0;
	material = MAT_METAL;
	description = name;
	text[0] = "Защита от всего:";
	count[0] = 5;
	text[2] = "В этой маске заключена часть силы Спящего,";
	text[3] = "злого демона, низвергнутого когда-то мной.";
	text[4] = "Излучает сильную темную ауру...";
	text[5] = NAME_Value;
	count[5] = value;
	on_equip = equip_itmi_sleeperhelm_mis;		// Это исправили
	on_unequip = unequip_itmi_sleeperhelm_mis;	// Это добавили
};


func void equip_itmi_sleeperhelm_mis()
{
	if(Npc_IsPlayer(self))
	{
		Wld_PlayEffect("spellFX_INCOVATION_VIOLET",self,self,0,0,0,FALSE); 	// Запускается эффект ауры
		self.protection[PROT_EDGE] += 5;	// Добавляем по 5 к защите от всего
		self.protection[PROT_BLUNT] += 5;
		self.protection[PROT_POINT] += 5;
		self.protection[PROT_FIRE] += 5;
		self.protection[PROT_MAGIC] += 5;
		self.protection[PROT_FLY] += 5;
		self.protection[PROT_BARRIER] += 5;
	};
};

func void unequip_itmi_sleeperhelm_mis()
{
	if(Npc_IsPlayer(self))
	{
		self.protection[PROT_EDGE] -= 5;	// Убираем защиту
		self.protection[PROT_BLUNT] -= 5;
		self.protection[PROT_POINT] -= 5;
		self.protection[PROT_FIRE] -= 5;
		self.protection[PROT_MAGIC] -= 5;
		self.protection[PROT_FLY] -= 5;
		self.protection[PROT_BARRIER] -= 5;
	};
};
 

dranik

Участник форума
Регистрация
20 Мар 2008
Сообщения
586
Благодарности
35
Баллы
210
vmazz,
Все ясно ! Вообщем я GothicVdfs использовал и расспаковал Готик.дат и Оу.бин. Изменил скрипт на твой, закомпилировал, а теперь как эти файлы обратно в игру всунуть ?
И если тебе не жалко времени, сможешь выслать мне эти два файла (уже с исправленым скриптом маски и ошибки при комапиляции). У тебя видно рука уже набита хорошо. Прошу очень сильно ;-)
 

insanee

Участник форума
Регистрация
21 Мар 2010
Сообщения
1
Благодарности
0
Баллы
145
Такой вот вопрос: если создавать локацию в 3ds maxe можно её делать editable poly или только в editable mesh нужно?
 

Wallerstein

Участник форума
Регистрация
26 Апр 2009
Сообщения
965
Благодарности
24
Баллы
195
При моделировании самой локации - лучше в editable poly, а при текстурировании переводи в editable mesh, ибо он позволяет текстурить некоторые места, разбивая полигоны на треугольники:)
 

_ZEN_

Участник форума
Регистрация
9 Фев 2010
Сообщения
45
Благодарности
3
Баллы
170
Пожалуйста, подскажите, как создать небольшой, минуты на две, вступительный ролик для своего мода, например, как в Глобал моде? Именно файл с расширением .bik по основным сюжетным линиям игры.
 

vmazz

Участник форума
Регистрация
18 Дек 2008
Сообщения
218
Благодарности
1
Баллы
165
Погугли, это так сказать косвенно относится к готическому модостроению, и туторов по созданию видео в сети много. Для перевода видео в bik есть специальный конвертер.
 

Boletim da morte

Участник форума
Регистрация
22 Мар 2010
Сообщения
53
Благодарности
1
Баллы
155
Люди добрые, помогите кто чем сможет, вот в этом скрипте
Код:
func string f_scroll_gettypeoftrophy_and_setnumberoftrophy()
{
	if((F_SCROLL_TYPEOFTROPHY >= 0) && (F_SCROLL_TYPEOFTROPHY <= 25))
	{
		return "Teeth";
	};
	if((F_SCROLL_TYPEOFTROPHY >= 26) && (F_SCROLL_TYPEOFTROPHY <= 50))
	{
		return "Claws";
	};
	if((F_SCROLL_TYPEOFTROPHY >= 51) && (F_SCROLL_TYPEOFTROPHY <= 60))
	{
		return "Wings";
	};
	if((F_SCROLL_TYPEOFTROPHY >= 61) && (F_SCROLL_TYPEOFTROPHY <= 65))
	{
		return "Bloodfly Sting";
	};
	if((F_SCROLL_TYPEOFTROPHY >= 66) && (F_SCROLL_TYPEOFTROPHY <= 70))
	{
		return "Wolfskin";
	};
	if((F_SCROLL_TYPEOFTROPHY >= 71) && (F_SCROLL_TYPEOFTROPHY <= 75))
	{
		return "Skin of an Orc Dog";
	};
	if((F_SCROLL_TYPEOFTROPHY >= 81) && (F_SCROLL_TYPEOFTROPHY <= 85))
	{
		return "Boarskin";
	};
	if((F_SCROLL_TYPEOFTROPHY >= 86) && (F_SCROLL_TYPEOFTROPHY <= 89))
	{
		return "Lurker's Skin";
	};
	if((F_SCROLL_TYPEOFTROPHY >= 90) && (F_SCROLL_TYPEOFTROPHY <= 94))
	{
		return "Armor Plate of Spider";
	};
	if((F_SCROLL_TYPEOFTROPHY >= 95) && (F_SCROLL_TYPEOFTROPHY <= 98))
	{
		return "Armor Plate";
	};
	if((F_SCROLL_TYPEOFTROPHY >= 99) && (F_SCROLL_TYPEOFTROPHY <= 102))
	{
		return "Mandibles of a Crawler";
	};
	if((F_SCROLL_TYPEOFTROPHY >= 103) && (F_SCROLL_TYPEOFTROPHY <= 107))
	{
		return "Lurker's Claws";
	};
	if((F_SCROLL_TYPEOFTROPHY >= 108) && (F_SCROLL_TYPEOFTROPHY <= 112))
	{
		return "Tongue of Fire";
	};
	if((F_SCROLL_TYPEOFTROPHY >= 113) && (F_SCROLL_TYPEOFTROPHY <= 115))
	{
		return "Skin of a Shadowbeast";
	};
	if((F_SCROLL_TYPEOFTROPHY >= 116) && (F_SCROLL_TYPEOFTROPHY <= 118))
	{
		return "Horn of a Shadowbeast";
	};
	if((F_SCROLL_TYPEOFTROPHY >= 119) && (F_SCROLL_TYPEOFTROPHY <= 121))
	{
		return "Skin of a Swampshark";
	};
	if((F_SCROLL_TYPEOFTROPHY >= 122) && (F_SCROLL_TYPEOFTROPHY <= 124))
	{
		return "Teeth of a Swampshark";
	};
	if((F_SCROLL_TYPEOFTROPHY >= 125) && (F_SCROLL_TYPEOFTROPHY <= 127))
	{
		return "Troll Tusk";
	};
	if((F_SCROLL_TYPEOFTROPHY >= 128) && (F_SCROLL_TYPEOFTROPHY <= 130))
	{
		return "Troll Skin";
	};
	if((F_SCROLL_TYPEOFTROPHY >= 131) && (F_SCROLL_TYPEOFTROPHY <= 133))
	{
		return "Panther skin";
	};
};
Спэйсер находит ошибку и показывает на против каждой строчки где стоит return
Вот ошибка
необрабатываемое выражение: EXP_STRING
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.906
Благодарности
6.781
Баллы
1.625
А ГотикСурсером нельзя воспользоваться? обязательно надо спейером?
 

Boletim da morte

Участник форума
Регистрация
22 Мар 2010
Сообщения
53
Благодарности
1
Баллы
155
Ну и он туже самую ошибку выдает, мне бы хотелось ее исправить.
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.906
Благодарности
6.781
Баллы
1.625
прикрепи весь файл скрипта, погляжу.
И совет - некомпиль спакером - он еще больше ошибок наделает.
 

Миха

Участник форума
Регистрация
14 Июл 2009
Сообщения
255
Благодарности
1
Баллы
175
2 MEG@VOLT:
Просто сам мод видать еще собирали во времена Спейсера. А при попытке перекомпилировать Соурсером и вышла такая беда
 

Boletim da morte

Участник форума
Регистрация
22 Мар 2010
Сообщения
53
Благодарности
1
Баллы
155
Спасибо за совет, вот файл со скриптом
 

Вложения

  • scroll_level.zip
    4,9 KB · Просмотры: 129

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
Boletim da morte
на сколько мне известно, return может возвращать только численные значения и при этом сама функция должна быть func int, или func float
Если тебе все же нужно получать string (строковые) значения, то создай string переменную и присваивай ей нужные строки, а затем используй где угодно, например:

var string my_string;

if((F_SCROLL_TYPEOFTROPHY >= 131) && (F_SCROLL_TYPEOFTROPHY <= 133))
{
my_string = "Panther skin";
};
 

Друид

Участник форума
Регистрация
21 Ноя 2009
Сообщения
1.172
Благодарности
398
Баллы
285
Нужно чтобы в поединке в случае победы ГГ - непись оставался жив.
А в случае проигрыша, ГГ погибал.

с помощью self.aivar[AIV_DropDeadAndKill]
выходит либо мгновенная смерть обоих, либо оба живы.
self.aivar[AIV_DropDeadAndKill] = false;
hero.aivar[AIV_DropDeadAndKill] = true;
так тоже не помогает. :mad:

Как тут быть?
 
Сверху Снизу