[AGFC: Valley of Gothic] М: Уроки скриптологии

Страница 7 из 8 1234567 8
Поиск в этой теме:

Расширенный поиск
Старый 12.09.2005, 08:32   #241
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: Уроки скриптологии

2Vendiga:
Ой, а почему уроки прекратились? Что уже нечему учть?
Учить ещё есть чему, а вот времени на это уже нет. Все силы "брошены" на новую версию декомпилятора.
Да, большинству из вас уже не нужна учеба, сами кого захотите научите.  ;)
Ответить с цитированием
Старый 12.09.2005, 15:48   #242
Vendiga

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: Уроки скриптологии

2Vam:
Да, большинству из вас уже не нужна учеба, сами кого захотите научите.
Да, многому.... основному ::) Но вот дальше бурить самые потаённые глубины скриптов... Здесь либо без пол-литра, либо без Vam'a не обойдёшься :D
Ответить с цитированием
Старый 02.10.2005, 14:55   #243
eLong

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: Уроки скриптологии

Просттите, я просмотрел, или здесь нет описания AI?
Ответить с цитированием
Старый 03.10.2005, 10:47   #244
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: Уроки скриптологии

2eLong:
Просттите, я просмотрел, или здесь нет описания AI?
Вся AI Готики 2 полностью рассмотрена начиная с 4 страницы (пост 79).
Ответить с цитированием
Старый 04.11.2005, 17:37   #245
Stel1

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: Уроки скриптологии

После декомпиляции gothic.dat декомпилятором Vama скрипты выглядят не наглядно, там трудно что либо разобрать, [] квадратик заменяет начало новой строки. А можно их привести в более наглядный вид? Ну типа как немецкие?

И ещё одно при компиляции появляются ошибки допущеные разработчиками. Так вот кто нибуть может показать как их правильно исправить или выложить файлы с уже исправлеными скриптами

Добавление от 11/04/05, в 16:57:58
После декомпиляции gothic.dat декомпилятором Vama скрипты выглядят не наглядно, там трудно что либо разобрать, [] квадратик заменяет начало новой строки. А можно их привести в более наглядный вид? Ну типа как немецкие?

И ещё одно при компиляции появляются ошибки допущеные разработчиками. Так вот кто нибуть может показать как их правильно исправить или выложить файлы с уже исправлеными скриптами
Ответить с цитированием
Старый 04.11.2005, 21:03   #246
basilio58

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: Уроки скриптологии

[quote=Stel1 link=board=gothic&t=1098161614&start=225#244 date=11/04/05, в 16:37:58]

Добавление от 11/04/05, в 16:57:58
После декомпиляции gothic.dat декомпилятором Vama скрипты выглядят не наглядно, там трудно что либо разобрать, [] квадратик заменяет начало новой строки. А можно их привести в более наглядный вид? Ну типа как немецкие?
Странно...

instance BDT_1096_ADDON_LENNAR_ANEWFACE(C_Info)
{
* * *npc = BDT_1096_Addon_Lennar;
* * *condition = bdt_1096_addon_lennar_anewface_condition;
* * *information = bdt_1096_addon_lennar_anewface_info;
* * *important = TRUE;
* * *permanent = FALSE;
};

func int bdt_1096_addon_lennar_anewface_condition()
{
* * *return TRUE;
};
********


Это не наглядно? Хм...
И какие еще []?
Пользуйся UltraEdit и настрой его (значки всякие лишние, типа начала строки...)!
Ответить с цитированием
Старый 04.11.2005, 22:07   #247
Stel1

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: Уроки скриптологии

Я понял это блокнот так галимо открывает в word нормально

А второй Почему мой созданный меч не пашет в русских скриптах пишет "Unknow indintifired (или что-то так) ScHasMyWeapon.d *"ItMw_MySword"". А в немецкой пашет. Я компелирую спейсером т.к. декомпилятор вама выдаёт ошибки програмистов.

Ответить с цитированием
Старый 06.11.2005, 01:18   #248
basilio58

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: Уроки скриптологии

Цитата:
Сообщение от Stel1 link=board=gothic&t=1098161614&start=225#246 date=11/04/05, в 21:07:28
Я понял это блокнот так галимо открывает в word нормально

А второй Почему мой созданный меч не пашет в русских скриптах пишет "Unknow indintifired (или что-то так) ScHasMyWeapon.d *"ItMw_MySword"". А в немецкой пашет. Я компилирую спейсером т.к. декомпилятор вама выдаёт ошибки програмистов.
Ну так спейсер и не обращает внимания на твои ошибки  :D,
а декомпилятор, обращает.
Пиши скрипты без ошибок  ;)
Ответить с цитированием
Старый 06.11.2005, 14:07   #249
Stel1

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: Уроки скриптологии

Так я правильно написал точно тоже что я написал пашет на немецких скриптах. Я уже копировал с немецких свои части кода. И добовлял к русским всё равно ерунда получается
Ответить с цитированием
Старый 06.11.2005, 16:23   #250
DimaD

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: Уроки скриптологии

Может прекратите замусоривать ветку?
Ответить с цитированием
Старый 09.12.2005, 03:07   #251
Mitrich

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: Уроки скриптологии

Читаю тут на досуге сведенные TycoooN`ом "Уроки скриптологии", выложенные в таверне, и сходу вижу такую запись:
Тема первая: Типы переменных.
В скриптах используется всего несколько типов переменных:
VOID - "пустой" тип
INT - целое число
FLOAT - число с плавающей точкой
STRING - строка текста
CLASS - структура с внутренними типами и функциями
PROTOTYPE - обычно инициализация класса, но возможно и другое использование
INSTANCE - пока сказать нечего.
вот, кажется, и все типы.
И думается мне "а что же подумают новички, типа меня, об загадочном INSTANCE? еще ведь легендами какими обсадят и пустят черти какими слухами в народ". Может, с учетом накопленного опыта, продумать, как подредактировать имеющиеся пробелы? Для порядку, такскать, поскольку в сведенном виде (спасибо TycoooN) сей документ (спасибо Vam) особенно эффективен и полезен.

Добавление от 12/09/05, в 02:27:48
подскажите как сделать собственную книгу или письмо в Г2, вернее мне скрипт для этого нужен.
Items\IT_Written.d
Содержимое этого файла ОЧЕНЬ тебе поможет.
И вот таких вопросов-ответов масса, насколько я помню. По ним бы FAQ сделать было бы полезно.

Извиняюсь за оффтоп, но он по делу.
Ответить с цитированием
Старый 23.01.2006, 18:11   #252
TycoooN
Строители Миртаны
  Аватар для TycoooN
 
 
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
TycoooN вне форума

По умолчанию Re: Уроки скриптологии

Господа, прекращаем обсуждение. Ветка для уроков, а не для вопросов. Вопросы - в соответствующих темах.
Отправить личное сообщение для Ответить с цитированием
Старый 28.04.2006, 11:50   #253
Antolflash

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: Уроки скриптологии

А теперь главный вопрос! Где это хранится??? в какой папке, и с помощью чего открыть????
Ответить с цитированием
Старый 28.04.2006, 17:56   #254
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: Уроки скриптологии

2Antolflash:
А теперь главный вопрос! Где это хранится??? в какой папке, и с помощью чего открыть????
Папка со скриптами любой Готики - ..\_work\data\scripts\Content - сюжетные скрипты,
..\_work\data\scripts\System - системные скрипты.
Любые *.d файлы открываются и редактируются любым текстовым редактором.

Если же эти папки отсутствуют и есть только папка ..\_work\data\scripts\_compiled, то скрипты нужно сначала получить, запустив Декомпилятор скриптов Готики, но это уже другая тема... (см. здесь)
Ответить с цитированием
Старый 19.05.2006, 18:41   #255
fokon

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Уроки скриптологии

Вопрос по названиям предметов в скриптах.
Поле "name" отвечает за отображаемое название предмета на земле, поле "description" - за отображение названия предмета в инвентаре.

А вот какое поле отвечает за ОПИСАНИЕ предмета в инвентаре? Например: ЯБЛОКО. МЯГКОЕ И СОЧНОЕ

Пример скрипта ниже
instance ItMW_Addon_Knife01(C_Item)
{
     name = "Складной нож";
     mainflag = ITEM_KAT_NF;
     flags = ITEM_SWD;
     material = MAT_METAL;
     value = Value_Wolfsmesser;
     damageTotal = Damage_Wolfsmesser;
     damagetype = DAM_EDGE;
     range = Range_Wolfsmesser;
     on_equip = Equip_1H_03;
     on_unequip = UnEquip_1H_03;
     cond_atr[2] = ATR_STRENGTH;
     cond_value[2] = Condition_Wolfsmesser;
     visual = "ItMw_012_1h_Knife_02.3DS";
     description = "Маленький нож. Хорошо прятать в сапог";
     text[2] = NAME_Damage;
     count[2] = damageTotal;
     text[3] = NAME_Str_needed;
     count[3] = cond_value[2];
     text[4] = NAME_ADDON_BONUS_1H;
     count[4] = Waffenbonus_03;
     text[5] = NAME_Value;
     count[5] = value;
};
Распишите плз за что отвечает каждая строка?
Ответить с цитированием
Старый 20.05.2006, 09:20   #256
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Уроки скриптологии

2fokon:
Распишите плз за что отвечает каждая строка?
Похоже ты не очень хорошо читал Уроки скриптологии, в них рассмотрено множество описаний предметов, но повторить не сложно:


instance ItMW_Addon_Knife01(C_Item)
{
* * // название предмета в фокусе
* * name = "Складной нож";
* * // флаг категории предмета - оружие блжнего радиуса поражения
* * mainflag = ITEM_KAT_NF;
* * // другие флаги - тип оружия - меч
* * flags = ITEM_SWD;
* * // материал предмета - металлический
* * material = MAT_METAL;
* * // стоимость предмета в "рублях"
* * value = Value_Wolfsmesser;
* * // суммарное повреждение, наносимое оружием
* * damageTotal = Damage_Wolfsmesser;
* * // тип наносимого повреждения - повреждение острым оружием
* * damagetype = DAM_EDGE;
* * // радиус поражения оружия ближнего боя
* * range = Range_Wolfsmesser;
* * // функция, вызываемая при экипировке
* * on_equip = Equip_1H_03;
* * // функция, вызываемая, когда предмет снимается и убирается в инвентарь
* * on_unequip = UnEquip_1H_03;
* * // для применения предмета требуется сила
* * cond_atr[2] = ATR_STRENGTH;
* * // значение силы для применения предмета
* * cond_value[2] = Condition_Wolfsmesser;
* * // имя файла изображения предмета
* * visual = "ItMw_012_1h_Knife_02.3DS";
* * // название предмета в инвентаре
* * description = "Маленький нож. Хорошо прятать в сапог";
* * // далее text[] и count[] соответственно строки описания предмета в инвентаре и значения этих характеристик, индекс массивов - номер строки записи, при пропущенном индексе выводится пустая строка
* * // третья строка - "Повреждение: значение повреждения"
* * text[2] = NAME_Damage;
* * count[2] = damageTotal;
* * // четвертая строка - "Необходимо силы: значение силы"
* * text[3] = NAME_Str_needed;
* * count[3] = cond_value[2];
* * // пятая строка - "Бонус к одноручному умению - значение бонуса"
* * text[4] = NAME_ADDON_BONUS_1H;
* * count[4] = Waffenbonus_03;
* * // шестая строка - "Ценность: значение стоимости"
* * text[5] = NAME_Value;
* * count[5] = value;
};


...вот и всё, для других предметов аналогично.
Ответить с цитированием
Старый 30.05.2006, 22:49   #257
Jozef_Neri

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Уроки скриптологии

Есть проблема: требуется "подружить" людей и монстров.
Имеется монстр, вокруг него - горстка людей.
На монстра нападают другие монстры, люди, ГГ.
Требуется, чтобы люди вокруг монстрика защищали его, а не бросались его атаковать при первом же ударе.
Как реализовать?

Функция B_SetGuildAttitude(любой человек, friendly, монстр) не подходит.
Ответить с цитированием
Старый 30.05.2006, 23:23   #258
marazmus
A.G.F.C.
 
Регистрация: 02.09.2005
Сообщений: 6
marazmus вне форума

По умолчанию Re: М: Уроки скриптологии

Поставь "защищаемому" монстру такую же гильдию, что и у людей, которые его защищают. В случае нападения на монстра люди будут атаковать напавшего, так как это будет нападение на "своего".
Отправить личное сообщение для Ответить с цитированием
Старый 31.05.2006, 19:56   #259
Jozef_Neri

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Уроки скриптологии

Цитата:
Сообщение от marazmus link=board=gothic&t=1098161614&start=250#257 date=05/30/06, в 23:23:20
Поставь "защищаемому" монстру такую же гильдию, что и у людей, которые его защищают. В случае нападения на монстра люди будут атаковать напавшего, так как это будет нападение на "своего".
Речь идёт о Г1...
Пробовал. У монстра остаётся 1 хитпойнт, после чего он успешно "восстаёт из мёртвых".
Смутно понимаю, что нужно править zs_unconscious.d, и zs_dead.d, но как определить именно конкретного монстра?
Ответить с цитированием
Старый 31.05.2006, 20:22   #260
marazmus
A.G.F.C.
 
Регистрация: 02.09.2005
Сообщений: 6
marazmus вне форума

По умолчанию Re: М: Уроки скриптологии

По поводу Г1 - не спец, извини. Под Г1 ничего не скриптил. Но файл GUILDS.D, определяющий отношения между гильдиями, там тоже есть.

Если остается 1 хитпойнт - значит, ты прописал ему гильдию, которая "дружественна" или "нейтральна" ГГ. В этом случае, победив персонажа, ты его не убиваешь, а только отправляешь в "нокдаун".
Я тоже склоняюсь к тому, что нужно копать zs_unconcious.d, если неохота возиться с гильдиями. А монстру просто прописать ID, и по нему определять в zs_unconcious.d факт "побеждения". Потом переводить побежденного монстра в состояние zs_dead.

p.s. А "защитники" нападают на тебя? Решил эту задачу?
p.p.s. Может, перенесем обсуждение в тему "Скриптинг в Готике"? Там это будет более уместно. Может, модераторы "откусят" наш кусок обсуждения и перекинут в эту тему?
Отправить личное сообщение для Ответить с цитированием
Старый 11.07.2006, 17:46   #261
Soullesser

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Уроки скриптологии

Подскажите плз где можно скачать ворлд мейкер для Готики..
Ответить с цитированием
Старый 11.07.2006, 18:57   #262
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Уроки скриптологии

2Soullesser:
Подскажите плз где можно скачать ворлд мейкер для Готики..
Тебе надо сюда. Там есть практически всё, что нужно для модостроения.
А вопросы по модостроению задаются здесь.
Ответить с цитированием
Старый 31.07.2006, 12:00   #263
aleks999

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Уроки скриптологии

Несколько вопросиков.
Подскажите, пожалуйста, как узнать, что ГГ ударил NPC сдади?
Как сделать так, чтобы NPC реагировали на увиденные ими трупы других NPC ?
Ответить с цитированием
Старый 31.07.2006, 14:01   #264
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Уроки скриптологии

2-AlexX-:
как узнать, что ГГ ударил NPC сдади?
Это сделать нельзя, движок не определяет с какой стороны НПС насесен удар, и в скриптах это никак не отражается. Хотя можно попробовать внести в функцию реакции на повреждение B_AssessDamage анализ, видит ли жертва агрессора, используя функцию движка Npc_CanSeeNpc.

Как сделать так, чтобы NPC реагировали на увиденные ими трупы других NPC ?
Это сделать можно. Есть восприятие - PERC_ASSESSBODY (восприятие НПС мертвого тела). Обработчик этого восприятия реализован только для монстров, если у монстра стоит флаг пожирать падаль и рядом есть труп, то движок выдает реакцию на восприятие и включается обработчик его B_MM_AssessBody, в котором монстр бежит к трупу и "кушает" его. Необходимо написать обработчик этого восприятия для людей и активировать это восприятие.
Ответить с цитированием
Старый 01.08.2006, 19:16   #265
black_magician

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Уроки скриптологии

Люди, помогите разобраться с функцией, а то я совсем запутался.
Я хочу что бы при прочтении книги “ItWr_Book_Mis” появился предмет “ItMw_2H_Blessed_02” на вэйпоинте под названием “NW_Farm3” (к примеру), но при этом только один раз, а не при каждом прочтении книги.
Ответить с цитированием
Старый 01.08.2006, 22:10   #266
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Уроки скриптологии

2Тёмный маг:
Я хочу что бы при прочтении книги “ItWr_Book_Mis” появился предмет “ItMw_2H_Blessed_02” на вэйпоинте под названием “NW_Farm3” (к примеру), но при этом только один раз, а не при каждом прочтении книги.
Поставь просто флаг, т.е. заводим глобальную переменную, при чтении смотрим, если она = FALSE, то ставим предмет и присваиваем ей значение TRUE. Это всё...  ::)
Ответить с цитированием
Старый 16.08.2006, 18:21   #267
Pui-LeGuDaa

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Уроки скриптологии

Не могли бы вы, добрые люди, помочь чуток? Я вот вроде отпечатывал всё нормально, но компилятор упорно материться...

Info_ClearChoices (dia_vlk_432_moe);
* * *Info_AddChoice (dia_vlk_432_moe, "А не пошел бы ты к такой то бабушке?", dia_vlk_432_moe_1);
* *Info_AddChoice (dia_vlk_432_moe, "Хорошо, я согласен", dia_vlk_432_moe_2);
};

func void dia_vlk_432_moe_1 ()
{
* * *AI_Output (other, self, "dia_vlk_432_moe_1_02_01"); // А не пошел бы ты к такой то бабушке
* * *AI_Output (self, other, "dia_vlk_432_moe_1_01_01"); // Парень, ты, наверное, меня не понял. Ну это не беда, я тебе сейчас всё объясню.
* * *B_Attack(self,other,AR_NONE,1);
* * *AI_StopProcessInfos(self);
};

func void dia_vlk_432_moe_2 ()
{
* * *AI_Output(other,self,"dia_vlk_432_moe_2_02_01"); // Хорошо, я согласен
* * *AI_Output(self,other,"dia_vlk_432_moe_2_01_01"); // Ты все правильно сделал. Не забудь наведывать ко мне каждый день. * * *B_GiveInvItems(other,self,ItMi_Gold, 20);
* * *B_LogEntry (TOPIC_BlackHawks, "Теперь я каждый день должен платить Мо по 20 золотых");
* * *AI_StopProcessInfos(self);
};

На выделенную жирным строчку компилятор упорно матерится, что там не тот тип... *Не поможете, а? *::)
Ответить с цитированием
Старый 16.08.2006, 21:20   #268
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Уроки скриптологии

2Pui-LeGuDaa:
На выделенную жирным строчку компилятор упорно матерится, что там не тот тип...  Не поможете, а?
Приведи полное сообщение компилятора, может ты со строкой ошибся, здесь похоже всё нормально. Какой компилятор используешь?
Ответить с цитированием
Старый 17.08.2006, 00:02   #269
Pui-LeGuDaa

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Уроки скриптологии

Компилятор версия 2.40... С 3.00 я так до конца и не разобрался. Я немного неправильно сформулировал свой вопрос. Компилятор матерится не именно на эту строчку, а на dia_vlk_432_moe_2... Да и я говорил: пишет, что не тот тип... Я читал твой тутор по скриптам, упакованный Тайкуном... На всякий пожарный перепробовал поставить не инт, а войд и тп... Неудивительно, ничто не помогло.
Скажите мне плиз тег на спойлер, я бы спойлер сделал со скриптом.
Ответить с цитированием
Старый 17.08.2006, 17:32   #270
basilio58

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Уроки скриптологии

Цитата:
Сообщение от Pui-LeGuDaa link=board=gothic&t=1098161614&start=250#268 date=08/17/06, в 00:02:24
Скажите мне плиз тег на спойлер, я бы спойлер сделал со скриптом.
Тег на спойлер:[Spoiler]
...Spoiler TEXT */Spoiler соответственно - "Spoiler" в квадратных скобках
[/Spoiler]
Ответить с цитированием
Старый 17.08.2006, 17:46   #271
Pui-LeGuDaa

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Уроки скриптологии

Вот значит весь скрипт. Осторожно, больше двухсот строк, точнее почти 300.
[spoiler]instance dia_vlk_432_moe (C_Info)
{
* * *npc = vlk_432_moe;
* * *nr = 1;
* * *condition = dia_vlk_432_moe_condition;
* * *information = dia_vlk_432_moe_info;
* * *permanent = false;
* * *important = true;
};

func int dia_vlk_432_moe_condition ()
{
* * *return TRUE;
};

func void dia_vlk_432_moe_info ()
{
* * *AI_Output (self, other, "dia_vlk_432_moe_01_01"); // Íå òîðîïèñ&#252 ; äðóæîê, ðàçãîâî&#240 ; åñòü.
* * *AI_Output (other, self, "dia_vlk_432_moe_02_01"); // ×òî òåáå íóæíî?
* * *AI_Output (self, other, "dia_vlk_432_moe_01_02"); // Òû ïðèøåë íà íàùó òåððèòîð&# 232;þ è çäåñü äåéñòâó&#254 ; äðóãèå çàêîíû, íåæåëè â îñòàëüíû&# 245; ÷àñòÿõ ãîðîäà.
* * *AI_Output (self, other, "dia_vlk_432_moe_01_03"); // Åñëè òû õî÷åøü ñïîêîéí&#238 ; æèòü è ãóëÿòü ãäå õî÷åøü, òî çà ýòî íóæíî íàì çàïëàòèò&# 252;.
* * *AI_Output (other, self, "dia_vlk_432_moe_02_02"); // À êòî âû òàêèå, ÷òîáû ÿ âàì ïëàòèë?
* * *AI_Output (self, other, "dia_vlk_432_moe_01_04"); // Ìû? Òû ðàçâå íå ñëûøàë î áàíäå "×åðíûå ßñòðåáû"?
* * *AI_Output (other, self, "dia_vlk_432_moe_01_03"); // Íåò, íå ñëûøàë.
* * *AI_Output (self, other, "dia_vlk_432_moe_01_05"); // Íó, òåïåðü çíà÷èò óñëûøàë.
* * *AI_Output (self, other, "dia_vlk_432_moe_01_06"); // Â îáùåì, òû äîëæåí áóäåøü ïëàòèòü íàì êàæäûé äåíü ïî 20 ìîíåò. ß äóìàþ, äëÿ òåáÿ ýòî íå ñîñòàâè&#242 ; òðóäà.
* * *Info_ClearChoices (dia_vlk_432_moe);
* * *Log_CreateTopic (TOPIC_BlackHawks, LOG_MISSION);
* *Log_SetTopicStatus (TOPIC_BlackHawks, LOG_RUNNING);
* *B_LogEntry (TOPIC_BlackHawks, " ïîðòó ÿ âñòðåòè&#235 ; Ìî, ÷ëåíà áàíäû ×åðíûõ ßñòðåáî&#226 ;. Îí âûìîãàå ó ìåíÿ äåíüãè.");
* * *Info_ClearChoices (dia_vlk_432_moe);
* * *Info_AddChoice (dia_vlk_432_moe, "À íå ïîøåë áû òû ê òàêîé-òî áàáóøêå?", dia_vlk_432_moe_1);
* *Info_AddChoice (dia_vlk_432_moe, "Õîðîøî, ÿ ñîãëàñåí." , dia_vlk_432_moe_2);
};

func void dia_vlk_432_moe_1 ()
{
* * *AI_Output (other, self, "dia_vlk_432_moe_1_02_01"); // À íå ïîøåë áû òû ê òàêîé-òî áàáóøêå?
* * *AI_Output (self, other, "dia_vlk_432_moe_1_01_01"); // Ïàðåíü, òû, íàâåðíî&#229 ;, ìåíÿ íå ïîíÿë. Íó, ýòî íå áåäà, ñåé÷àñ ÿ òåáå âñ¸ îáúÿñíþ.
* * *B_Attack(self,other,AR_NONE,1);
* * *AI_StopProcessInfos(self);
};

func void dia_vlk_432_moe_2 ()
{
* * *AI_Output(other,self,"dia_vlk_432_moe_2_02_01"); // Õîðîøî, ÿ ñîãëàñå&#237 ;.
* * *AI_Output(self,other,"dia_vlk_432_moe_2_01_01"); // Òû âñå ïðàâèëüí&# 238; ñäåëàë. Íå çàáóäü íàâåäûâà&# 242;üñÿ êî ìíå êàæäûé äåíü.
* * *B_GiveInvItems(other,self,ItMi_Gold, 20);
* * *B_LogEntry (TOPIC_BlackHawks, "Òåïåðü ÿ äîëæåí êàæäûé äåíü ïëàòèòü Ìî 20 çîëîòûõ.");
* * *AI_StopProcessInfos(self);
};

instance dia_vlk_432_moe_afterfight_loose (C_Info)
{
* * *npc = vlk_432_moe;
* * *nr = 2;
* * *condition = dia_vlk_432_moe_afterfight_loose_condition;
* * *information = dia_vlk_432_moe_afterfight_loose_info;
* * *permanent = false;
* * *important = true;
};

func int dia_vlk_432_moe_afterfight_loose_condition ()
{
* * *if((self.aivar[AIV_LastFightAgainstPlayer] == FIGHT_LOST) && Npc_IsInState(self,ZS_Talk))
* * *{
* * * * * *return TRUE;
* * *};
};

func void dia_vlk_432_moe_afterfight_loose_info ()
{
* * *AI_Output(self,other,"dia_vlk_432_moe_faterfight_ loose_02_01"); // À òû óïåðòûé ïàðåíü. È ÿ çàìàðàë ñâîé ñþðòóê, ïîýòîìó òû áóäåøü ïëàòèòü íå 20, à 40 çîëîòûõ.
* * *AI_Output(self,other,"dia_vlk_432_moe_faterfight_ loose_02_02"); // ß äóìàþ ýòî íàó÷èò òåáÿ óâàæàòü ñòàðøèõ. Òû ìåíÿ ïîíÿë?
* * *AI_Output(other,self,"dia_vlk_432_moe_faterfight_ loose_01_01"); // Äà, ÿ âñå ïîíÿë.
* * *B_LogEntry(TOPIC_BlackHawks, "Òåïåðü ÿ äîëæåí êàæäûé äåíü ïëàòèòü Ìî 40 çîëîòûõ.");
* * *AI_StopProcessInfos(self);
};

instance dia_vlk_432_moe_afterfight_win (C_Info)
{
* * *npc = vlk_432_moe;
* * *nr = 2;
* * *condition = dia_vlk_432_moe_afterfight_win_condition;
* * *information = dia_vlk_432_moe_afterfight_win_info;
* * *permanent = false;
* * *important = true;
};

func int dia_vlk_432_moe_afterfight_win_condition ()
{
* * *if((self.aivar[AIV_LastFightAgainstPlayer] != FIGHT_LOST) && Npc_IsInState(self,ZS_Talk))
* * *{
* * * * * *return TRUE;
* * *};
};

func void dia_vlk_432_moe_afterfight_win_info ()
{
* * *AI_Output(self,other,"dia_vlk_432_moe_faterfight_ win_02_01"); // Ïàðåíü, ó òåáÿ áîëüøèå íåïðèÿòí&# 238;ñòè! ß òàê ýòî äåëî íå îñòàâëþ.
* * *B_LogEntry(TOPIC_BlackHawks, "ß ïîáåäèë Ìî, îí îáåùàë ìíå óñòðîèò&#252 ; íåïðèÿòí&# 238;ñòè.");
* * *AI_StopProcessInfos(self);
};

* * *
instance dia_vlk_432_moe_pay (C_Info)
{
* * *npc = vlk_432_moe;
* * *nr = 3;
* * *condition = dia_vlk_432_moe_pay_condition;
* * *information = dia_vlk_432_moe_pay_info;
* * *permanent = true;
* * *important = true;
};

func int dia_vlk_432_moe_pay_condition ()
{
* * *If(Npc_KnowsInfo(other, dia_vlk_432_moe_2))
* * *{
* * *return TRUE;
* * *};
};

func void dia_vlk_432_moe_pay_info ()
{
* * *AI_Output ( self, other, "dia_vlk_432_moe_pay_01_01"); // Òû, íàâåðíî&#229 ;, ïðèí¸ñ äåíüãè?
* * *Info_Addchoice (dia_vlk_432_moe_pay, "Äà, âîò îíè.", dia_vlk_432_moe_pay_yes);
* * *Info_Addchoice (dia_vlk_432_moe_pay, "Òû íè÷åãî íå ïîëó÷èøü!" , dia_vlk_432_moe_pay_no);
};

func void dia_vlk_432_moe_pay_info_yes ()
{
* * *AI_Output ( other, self, "dia_vlk_432_moe_pay_yes_02_01"); // Äà, âîò îíè.
* * *if(B_GiveInvItems(other,self,ItMi_Gold,20))
* * *{
* * * * * *AI_Output(self,other,"DIA_vlk_432_moe_pay_yes_01_ 01"); * * *//Íó õîðîøî, ìîæåøü èäòè.
* * * * * *AI_StopProcessInfos(self);
* * *}
* * *else if(Npc_HasItems(hero,ItMi_Gold) <20)
* * *{
* * * * * *AI_Output(self,other,"DIA_vlk_432_moe_pay_yes_01_ 01"); * * *// &#199;&#228;&#229;&#241;&#252; &#237;&#229; &#226;&#241;&#184;! &#210;&#251; &#240;&#229;&#248;&#232;&#235; &#239;&#229;&#240;&#229;&#245;&#232;&#242;&#240;&# 232;&#242;&#252; &#236;&#229;&#237;&#255;!
* * * * * *B_Attack(self,other,AR_NONE,1);
* * *};
};
* * *
instance dia_vlk_432_moe_pay40 (C_Info)
{
* * *npc = vlk_432_moe;
* * *nr = 4;
* * *condition = dia_vlk_432_moe_pay40_condition;
* * *information = dia_vlk_432_moe_pay40_info;
* * *permanent = true;
* * *important = true;
};

func int dia_vlk_432_moe_pay40_condition ()
* * *{
* * *If (Npc_KnowsInfo(other, dia_vlk_432_moe_afterfight_loose))
* * *{
* * *return TRUE;
* * *};
};

func void dia_vlk_432_moe_pay40_info ()
{
* * *AI_Output ( self, other, "dia_vlk_432_moe_pay40_01_01"); // &#210;&#251;, &#237;&#224;&#226;&#229;&#240;&#237;&#238;&#229 ;, &#239;&#240;&#232;&#237;&#184;&#241; &#228;&#229;&#237;&#252;&#227;&#232;?
* * *Info_Addchoice (dia_vlk_432_moe_pay40, "&#196;&#224;, &#226;&#238;&#242; &#238;&#237;&#232;.", dia_vlk_432_moe_pay40_yes);
* * *Info_Addchoice (dia_vlk_432_moe_pay40, "&#210;&#251; &#237;&#232;&#247;&#229;&#227;&#238; &#237;&#229; &#239;&#238;&#235;&#243;&#247;&#232;&#248;&#252;!" , dia_vlk_432_moe_pay40_no);
};

func void dia_vlk_432_moe_pay40_info_yes ()
{
* * *AI_Output ( other, self, "dia_vlk_432_moe_pay40_yes_02_01"); // &#196;&#224;, &#226;&#238;&#242; &#238;&#237;&#232;.
* * *if(B_GiveInvItems(other,self,ItMi_Gold,40))
* * *{
* * * * * *AI_Output(self,other,"DIA_vlk_432_moe_pay40_yes_0 1_01"); * * *//&#205;&#243; &#245;&#238;&#240;&#238;&#248;&#238;, &#236;&#238;&#230;&#229;&#248;&#252; &#232;&#228;&#242;&#232;.
* * * * * *AI_StopProcessInfos(self);
* * * * * *
* * *}
* * *else if(Npc_HasItems(hero,ItMi_Gold) >40)
* * *{
* * * * * *AI_Output(self,other,"DIA_vlk_432_moe_pay40_yes_0 1_01"); * * *// &#199;&#228;&#229;&#241;&#252; &#237;&#229; &#226;&#241;&#184;! &#210;&#251; &#240;&#229;&#248;&#232;&#235; &#239;&#229;&#240;&#229;&#245;&#232;&#242;&#240;&# 232;&#242;&#252; &#236;&#229;&#237;&#255;!
* * * * * *B_Attack(self,other,AR_NONE,1);
* * * * * *AI_StopProcessInfos(self);
* * *};
};

instance dia_moe_ment (C_Info)
{
* * *npc = vlk_432_moe;
* * *nr = 5;
* * *condition = dia_moe_ment_condition;
* * *information = dia_moe_ment_info;
* * *permanent = true;
* * *important = true;
};

func int dia_moe_ment_condition ()
{
* * *If(other.guild == GIL_MIL)
* * *{
* * *return TRUE;
* * *};
};

func void dia_moe_ment_info ()
{
* * *AI_Output ( self, other, "dia_moe_ment_01_01"); // &#221;&#233;, &#239;&#224;&#240;&#237;&#232;! &#194;&#238;&#242; &#253;&#242;&#238;&#242; &#242;&#232;&#239;, &#239;&#240;&#238; &#234;&#238;&#242;&#238;&#240;&#238;&#227;&#238 ; &#255; &#226;&#224;&#236; &#227;&#238;&#226;&#238;&#240;&#232;&#235;!
* * *AI_Output ( other, self, "dia_moe_ment_02_01"); // &#210;&#229;&#225;&#229; &#239;&#238;&#234;&#224;&#231;&#224;&#235;&#238;&# 241;&#252; &#236;&#224;&#235;&#238; &#239;&#240;&#238;&#248;&#235;&#238;&#227;&#238 ; &#240;&#224;&#231;&#227;&#238;&#226;&#238;&#240;&# 224;?
* * *AI_Output ( self, other, "dia_moe_ment_01_02"); // &#209;&#229;&#233;&#247;&#224;&#241; &#255; &#242;&#229;&#225;&#229; &#231;&#224;&#228;&#224;&#236;, &#236;&#229;&#237;&#242;&#238;&#226;&#241;&#234;&# 224;&#255; &#241;&#234;&#238;&#242;&#232;&#237;&#224;!
* * *B_LogEntry(TOPIC_BlackHawks, "&#194;&#241;&#255; &#225;&#224;&#237;&#228;&#224; &#215;&#229;&#240;&#237;&#251;&#245; &#223;&#241;&#242;&#240;&#229;&#225;&#238;&#226 ; &#245;&#238;&#247;&#229;&#242; &#236;&#229;&#237;&#255; &#243;&#225;&#232;&#242;&#252;. &#223; &#228;&#238;&#235;&#230;&#229;&#237; &#239;&#238;&#227;&#238;&#226;&#238;&#240;&#232;&# 242;&#252; &#239;&#238; &#253;&#242;&#238;&#236;&#243; &#239;&#238;&#226;&#238;&#228;&#243; &#241; &#203;&#238;&#240;&#228;&#238;&#236; &#192;&#237;&#228;&#240;&#229;.");
* * *B_Attack(self,other,AR_NONE,1);
* * *AI_StopProcessInfos(self);
};

instance dia_moe_join (C_Info)
{
* * *npc = vlk_432_moe;
* * *nr = 6;
* * *condition = dia_moe_join_condition;
* * *information = dia_moe_join_info;
* * *permanent = false;
* * *important = true;
};

func int dia_moe_join_condition ()
{
* * *If(other.guild != GIL_MIL) && (other.guild != GIL_PAL)
* * *{
* * * * * *return TRUE;
* * *};
};

func void dia_moe_join_info ()
{
* * *AI_Output ( self, other, "dia_moe_join_01_01"); // &#221;&#233;, &#239;&#224;&#240;&#229;&#237;&#252;!
* * *AI_Output ( other, self, "dia_moe_join_02_01"); // &#215;&#242;&#238;? &#206;&#239;&#255;&#242;&#252; &#231;&#224; &#241;&#242;&#224;&#240;&#238;&#229;?
* * *AI_Output ( self, other, "dia_moe_join_01_02"); // &#205;&#229;&#242;. &#211; &#236;&#229;&#237;&#255; &#229;&#241;&#242;&#252; &#234; &#242;&#229;&#225;&#229; &#228;&#229;&#235;&#238;.
* * *AI_Output ( * * *other, self, "dia_moe_join_02_02"); // &#202;&#224;&#234;&#238;&#229; &#229;&#249;&#229; &#228;&#229;&#235;&#238;?
* * *AI_Output ( self, other, "dia_moe_join_01_03"); // &#210;&#238;&#225;&#238;&#233; &#231;&#224;&#232;&#237;&#242;&#229;&#240;&#229;&# 241;&#238;&#226;&#224;&#235;&#241;&#255; &#237;&#224;&#248; &#225;&#238;&#241;&#241;, &#206;&#241;&#234;&#224;&#240;. &#206;&#237; &#245;&#238;&#242;&#229;&#235; &#225;&#251; &#226;&#241;&#242;&#240;&#229;&#242;&#232;&#242;&# 252;&#241;&#255; &#241; &#242;&#238;&#225;&#238;&#233;.
* * *AI_Output ( other, self, "dia_moe_join_02_03"); // &#215;&#242;&#238;&#225;&#251; &#236;&#229;&#237;&#255; &#239;&#240;&#232;&#234;&#238;&#237;&#247;&#232;&# 242;&#252;?
* * *AI_Output ( self, other, "dia_moe_join_01_04"); // &#205;&#229;&#242;, &#247;&#242;&#238;&#225;&#251; &#239;&#238;&#227;&#238;&#226;&#238;&#240;&#232;&# 242;&#252;. &#207;&#240;&#232;&#245;&#238;&#228;&#232; &#226; &#239;&#238;&#235;&#237;&#238;&#247;&#252; &#226; &#242;&#224;&#226;&#229;&#240;&#237;&#243; &#202;&#224;&#240;&#228;&#232;&#244;&#224;, &#238;&#237; &#225;&#243;&#228;&#229;&#242; &#230;&#228;&#224;&#242;&#252; &#242;&#229;&#225;&#255;.
* * *B_LogEntry(TOPIC_BlackHawks, "&#204;&#229;&#237;&#255; &#245;&#238;&#247;&#229;&#242; &#226;&#232;&#228;&#229;&#242;&#252; &#227;&#235;&#224;&#226;&#224;&#240;&#252; &#225;&#224;&#237;&#228;&#251;. &#204;&#237;&#229; &#237;&#243;&#230;&#237;&#238; &#239;&#240;&#232;&#233;&#242;&#232;&#226; &#242;&#224;&#226;&#229;&#240;&#237;&#243; &#202;&#224;&#240;&#228;&#232;&#244;&#224; &#226; &#239;&#238;&#235;&#237;&#238;&#247;&#252;.");
* * *AI_StopProcessInfos(self);
};

instance dia_moe_enter (C_Info)
{
* * *npc = vlk_432_moe;
* * *nr = 7;
* * *condition = dia_moe_enter_condition;
* * *information = dia_moe_enter_info;
* * *permanent = true;
* * *important = true;
};

func int dia_moe_enter_condition ()
{
* * *if(Wld_IsTime(0,0,2,0))
* * *{
* * * * * *return TRUE;
* * *};
};

func void dia_moe_enter_info ()
{
* * *AI_Output ( self, other, "dia_moe_enter_01_01"); // &#215;&#242;&#238; &#242;&#229;&#225;&#229; &#231;&#228;&#229;&#241;&#252; &#237;&#243;&#230;&#237;&#238;?
* * *AI_Output ( other, self, "dia_moe_enter_02_01"); // &#213;&#238;&#247;&#243; &#239;&#238;&#241;&#232;&#228;&#229;&#242;&#252 ; &#226; &#242;&#224;&#226;&#229;&#240;&#237;&#229;.
* * *AI_Output ( other, self, "dia_moe_enter_01_02"); // &#207;&#240;&#232;&#245;&#238;&#228;&#232; &#239;&#238;&#231;&#230;&#229;, &#242;&#224;&#226;&#229;&#240;&#237;&#224; &#243;&#230;&#229; &#239;&#229;&#240;&#229;&#239;&#238;&#235;&#237;&# 229;&#237;&#224;.
* * *AI_StopProcessInfos(self);
};

instance dia_moe_enterjoin (C_Info)
{ * * *
* * *npc = vlk_432_moe;
* * *nr = 8;
* * *condition = dia_moe_enterjoin_condition;
* * *information = dia_moe_enterjoin_info;
* * *important = true;
* * *permanent = false;
};

func int dia_moe_enterjoin_condition ()
{
* * *If(Npc_KnowsInfo(other, dia_moe_join))
* * *{
* * * * * *return true;
* * *};
};

func void dia_moe_enterjoin_info ()
{
* * *AI_Output ( self, other, "dia_moe_enterjoin_01_01"); // &#209;&#242;&#238;&#233;. &#215;&#242;&#238; &#242;&#229;&#225;&#229; &#231;&#228;&#229;&#241;&#252; &#237;&#243;&#230;&#237;&#238;?
* * *AI_Output ( other, self, "dia_moe_enterjoin_02_01"); // &#204;&#229;&#237;&#255; &#230;&#228;&#229;&#242; &#226;&#224;&#248; &#225;&#238;&#241;&#241;.
* * *AI_Output ( self, other, "dia_moe_enterjoin_01_02"); // &#207;&#240;&#238;&#245;&#238;&#228;&#232;.
* * *AI_StopProcessInfos(self);
};
[/spoiler]

Да что ж ты будешь делать. Текст из ноутпада не делаеться по-русски
Ответить с цитированием
Старый 17.08.2006, 21:54   #272
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Уроки скриптологии

Почему у тебя в этой функции
func int dia_vlk_432_moe_pay_condition ()
{
* * If(Npc_KnowsInfo(other, dia_vlk_432_moe_2))
* * {
* * return TRUE;
* * };
};

выделенное слово совпадает с именем функции, здесь вместо него должно стоять имя инстанции диалога.
Ответить с цитированием
Старый 18.08.2006, 01:44   #273
Pui-LeGuDaa

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Уроки скриптологии

2Vam: Извини тугодумающего нуба, но у меня ведь инстанция разделяется на две ветки. В одной ГГ посылает Мо, в другой говорит, что заплатит. Инстанцию я прописывал только в начале диалога до разветвления... А мне нужно, чтобы при условии посылания Мо, ГГ платил 40, а при условии того, что платит сразу, платит 40 монет.
Ответить с цитированием
Старый 18.08.2006, 09:21   #274
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Уроки скриптологии

2Pui-LeGuDaa:
но у меня ведь инстанция разделяется на две ветки.
Инстанция ни на что разделяться не может, это диалог может идти разными путями.
А мне нужно, чтобы при условии посылания Мо, ГГ платил 40, а при условии того, что платит сразу, платит 40 монет.
Я не знаю по логике, что тебе нужно и как ты строишь диалог, но могу сказать одно, что у функции
// возвращает TRUE, если НПС npc уже получил информацию instanceInfo, иначе FALSE.
func int Npc_KnowsInfo(C_NPC npc, int instanceInfo);

вторым аргументом должна быть прописана инстанция диалога (какая не знаю, у тебя их много, всё зависит от логики диалога), а у тебя прописано имя функции, вот тебе и ошибка - несоответствие типов (нельзя преобразовать func к int).
Ответить с цитированием
Старый 18.08.2006, 10:44   #275
feanaro_set

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Уроки скриптологии

2All
Извиняюсь за ламерский вопрос.
Прописываю текст скрипта:
FUNC VOID EVT_MOD_01 ()
{
Wld_InsertNpc (SCAVENGER,"WP_01");
};

сохраняю файл как EventMOD.d в папке Events. затем в спейсере(1.5) жму world - reparse scriptfiles. появляется ошибка: ... unknown identifier:SCAVENGER
иногда даже начинает грузить, но тогда вообще выскакивает Access Violation.
как новичок, надеюсь на вашу мудрость. =)
Ответить с цитированием
Старый 18.08.2006, 11:58   #276
Wirtus

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Уроки скриптологии

Объясните пожалуйста суть проблемы. Вобщем, декомпилировал я файл gothic.dat. Подкорректировал тексты в скриптах *d, затем сохранил, нажал Compile. Вроде бы после этого скрипты скопилировались в dat файл. Заменил им оригинальный файл, но ничего не происходит. что мне делать? Если можно, то объясните поподробнее. Это единственный сайт, где я надеюсь на хорошую помощь)


Добавление от 08/18/06, в 12:00:33
В игре как были тексты изначально, так и остались. Что характерно, с menu.dat у меня всё полкчилось, а вот с самым глаdysv? что-то не так.
Gothic.dat и Ou.bin расфасовал по отдельным папкам.
Ответить с цитированием
Старый 18.08.2006, 21:39   #277
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Уроки скриптологии

Товарищи, с вопросами прошу переехать в соответствующие темы:
1. Вопросы по модостроению - все вопросы по модостроению за исключением скриптинга.
2. Скриптинг в Готике - понятно для каких вопросов.
3. Декомпилятор скриптов Готики - все вопросы по программе GothicSourcer и работе с ним.

Эта тема, как написано в аннотации, предназначена для уроков, здесь можно предлагать свои решения каких-либо проблем связанных со скриптингом.

Отвечаю здесь Wirtus'у: последний раз.
Заменил им оригинальный файл, но ничего не происходит. что мне делать? Если можно, то объясните поподробнее.
Если gothic.dat и ou.bin файлы GothicSourcer'ом были созданы и правильно вставлены тобой в игру, то необходимо:
- начинать игру заново, чтобы увидеть изменения
- удалить файл vdfs.dmp (насчет этого не уверен, но не помешает).
Ответить с цитированием
Старый 01.09.2006, 14:57   #278
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Уроки скриптологии

Статью по созданию динамических моделей можно прочитать здесь.
Ответить с цитированием
Старый 07.09.2006, 22:05   #279
Ork_Warrior

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Уроки скриптологии

Извините может я лезу не в ту тему но можно ли изменит походку героя в 1 готике ну например как у гуру или у стражника?
Ответить с цитированием
Старый 08.09.2006, 01:31   #280
B_Wolf

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Уроки скриптологии

2Ork Warrior:
Извините может я лезу не в ту тему но можно ли изменит походку героя в 1 готике ну например как у гуру или у стражника?
void Mdl_ApplyOverlayMds (c_npc n0, string s1); - запустить файл анимации s1 с расширением mds для НПС n0.
Пример Походка со сложенными руками (Гуру, Маги огня, Маги воды, Послушники и пр...): Mdl_ApplyOverlayMds(self,"Humans_Mage.mds");
Пример Военная походка (Стражник, Наемник и пр.): Mdl_ApplyOverlayMds(self,"Humans_Militia.mds");
Пример Расслабленная походка (Воры, Призраки и пр): Mdl_ApplyOverlayMds(self,"Humans_Relaxed.mds");
Пример Сутулая походка (Шахтеры, Крестьяне и пр): Mdl_ApplyOverlayMds(self,"Humans_Tired.mds");
Пример Благородная походка (Рудные бароны): Mdl_ApplyOverlayMds(self,"Humans_Arrogance.mds");

P.S. Советую почитать данную тему с 1 страницы.
Ответить с цитированием
Страница 7 из 8 1234567 8


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе

Смайлы Вкл.
[IMG] код Вкл.
HTML код Вкл.


Текущее время: 20:45. Часовой пояс GMT +4.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot

AGFC: Valley of Gothic © 2004-2022

Яндекс.Метрика