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

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

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

MaGoth

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

Вложения

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

Marvіn

Участник форума
Регистрация
17 Апр 2008
Сообщения
99
Благодарности
9
Баллы
180
Финкрег
Вы уже лучше предоставляйте примеры скриптов, а то с того что написано навряд ли можно найти ошибку и понять в чем дело ::)
 

Финкрег

Участник форума
Регистрация
16 Май 2007
Сообщения
69
Благодарности
0
Баллы
155
Код:
instance kdf_130_makler_Teach_Mana(C_Info)
{
	npc = KDF_130_Makler;
	nr = 3;
	condition = Dia_kdf_130_makler_Teach_Mana_Condition;
	information = kdf_130_makler_Teach_Mana_Info;
	permanent = TRUE;
	description = "Я хочу повысить мои магические способности.";
};

func int Dia_kdf_130_makler_Teach_Mana_condition () 
{ 
 IF(Npc_KnowsInfo(other,DIA_kdf_130_makler_LEHRLING_info)) 
 { 
    return TRUE; 
 }; 
};
Выдает ошибку в условии - DIA_kdf_130_makler_LEHRLING_info, говорит что неправильный тип
Однако DIA_kdf_130_makler_LEHRLING_info у меня прописано.
Вот:
Код:
INSTANCE DIA_kdf_130_makler_LEHRLING (C_Info)
{
  npc    = kdf_130_makler;
  nr     = 2;
  condition = DIA_kdf_130_makler_LEHRLING_condition;
  information = DIA_kdf_130_makler_LEHRLING_info;
  permanent = FALSE;
  important = FALSE;
  description = "Я хочу вступить в Сообщество Инноса";
};
FUNC INT DIA_kdf_130_makler_LEHRLING_condition ()
{
  return TRUE;
};
	
FUNC VOID DIA_kdf_130_makler_LEHRLING_info ()
{
  AI_Output(other,self,"DIA_kdf_130_makler_LEHRLING_15_0"); //
  AI_Output(self,other,"DIA_kdf_130_makler_LEHRLING_15_1"); //  
  AI_Output(other,self,"DIA_kdf_130_makler_LEHRLING_15_2"); //
  AI_Output(self,other,"DIA_kdf_130_makler_LEHRLING_15_3"); //
};
З.Ы.Диалоги пока убрал.
 
Последнее редактирование модератором:

Marvіn

Участник форума
Регистрация
17 Апр 2008
Сообщения
99
Благодарности
9
Баллы
180
место этого:
Код:
IF(Npc_KnowsInfo(other,DIA_kdf_130_makler_LEHRLING_info))

пропишите так
Код:
IF(Npc_KnowsInfo(other,DIA_kdf_130_makler_LEHRLING))
А вот собственно с тутора Vam'a
int Npc_KnowsInfo (c_npc self, int infoInstance); - возвращает TRUE, если НПС self уже получил информацию infoInstance, иначе FALSE.

то есть второй параметр функции Npc_KnowsInfo это Ваш Instance DIA_kdf_130_makler_LEHRLING (C_Info), так вот именно на него и нужно ссылаться!!!

P.S. немного отредактировал, а то неправильно объяснил ::)
 

Финкрег

Участник форума
Регистрация
16 Май 2007
Сообщения
69
Благодарности
0
Баллы
155
2Marvіn: Огромное спасибо! Сработало. То есть, если я правильно понял, абсолютно во всех случаях нужно будет ссылаться именно на Instance?
 

Marvіn

Участник форума
Регистрация
17 Апр 2008
Сообщения
99
Благодарности
9
Баллы
180
Хм...ссылаться нужно именно на название, то есть Instance <название>(C_Info). Каждый случай отдельный и я не стану утверждать что всегда нужно ссылаться на Instance, все зависит от того что хотим получить ;), а в случае с функцией Npc_KnowsInfo то да, сдесь ссылаемся на имя Instance всегда.
 
Последнее редактирование модератором:

MIXIR94

Участник форума
Регистрация
12 Авг 2008
Сообщения
70
Благодарности
0
Баллы
155
Помогите плз ! Я могу вставить НПС но с диалогом проблемы! Выложите кто нибудь Чистую болванку скрипта диалога(чтоб только НПС и разговор вписать осталось ) И скажите где Это все прописать ? Спасибо

Все сделал НПС вставил, компилировал, диалог написал , а Субтитров нет и zSpy пишет AI otpout unit NONE_13000_Gomez_15_01 NOT FOUND! Что делать ?

2MEG@VOLT: А я спейсером компилирую

2MEG@VOLT: КОГДА КОМПИЛИРУЮ СОРСЕРом ОДНИ ОШИБКИ ВЫЛАЗИЮТ А ГДЕ НАДО ПРОПИСЫВАТЬ ФАЙЛ СВОЕГО ДИАЛОГА ?

Что же у мя все скрипты с ошибками ?
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
Опять издевания. :mad: :mad: :mad:
Мар, Магоч, дайте смайл чтоб головой ап стену стучаться...

2MIXIR94: ЧИТАЙ ТУТОРЫ!!! В них все нормально написано.

Пользуйся сурсером версии 3

Спейсер косячит в скриптах. И очень сильно, Зачем, как думаешь, Vam создал сурсер?
И ещё один пост в других темах по поводу этого вопроса - В БАНЮ ОТПРАВЛЮ

2MIXIR94:
Наконец успокоился. И не пиши большими буквами, э
то тоже считается нарушением правил.

Если сурсер у тебя матерится, значит и мод у тебя косячный получится. Исправь все ошибки, и радуйся жизни.
Только правь в сурсере.

2MIXIR94:
Наконец успокоился. И не пиши большими буквами, э
то тоже считается нарушением правил.

Если сурсер у тебя матерится, значит и мод у тебя косячный получится. Исправь все ошибки, и радуйся жизни.
Только правь в сурсере.

Не все, там в оригинальных скриптах около 400 ошибок и 200 вниманий(точно не помню)
Они правятся довольно быстро, около часа.
А вот свои скрипты, тебе надо точно править, потому что спейсер их покусал неправильно.
 
Последнее редактирование:

MIXIR94

Участник форума
Регистрация
12 Авг 2008
Сообщения
70
Благодарности
0
Баллы
155
2MEG@VOLT: А как править, не вручную же ? Что надо нажать чтоб автоматически их исправить ?

а от этого игра не портится ?
И я не умею исправлять

2MEG@VOLT: А не даш исправленные скрипты ?

компилировал, всего 25 ошибок! И все на "Функция должна возвращать значение"и одна на"неожиданный ретурн(Return) "как их исправить, всего 2 вида ошибок ?

Я скачал исправленные скрипты от Акеллы , компилировал их все пошло. Хоть диалог еще не вставлял но НПС вставляется без ошибок. А Not found точно из-за спейсера ?


Да! //МЕГА//

Проблемы с квестами ! Использовал скрипт от DEDROITA и Сорсер находит ошибки! Дайте плз нормальный скрипт квеста или скажите, как сделать квест с убийством на Mirandadialog creatoR
 
Последнее редактирование модератором:

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
2MIXIR94:
:D :D :D
Еслиб было чем править кроме рук, стал бы я писать что примерно час на это убиваю? И еслиб была, то ВАМ давноб запихал эту прогу в свой сурсер...

Такчто самое лучшее что есть в мире для правки чего-либо - это собственные руки.

От этого игра становится только лучше. А исправлять тебе придется научиться... ну если не получается ни как, то зайди сюда http://mod.worldofgothic.ru/.
Там найдёшь.
 

Marvіn

Участник форума
Регистрация
17 Апр 2008
Сообщения
99
Благодарности
9
Баллы
180
MIXIR94
Берем тутор от Vam'a читаем, и когда все станет ясно приступаем править скрипты ;)

Вот сдесь тутор
а вообще MEG@VOLT правильно тебе ссылку дал, то есть на этот сайт ::), при желании сдесь все можно найти!

2MIXIR94:
Хм... а что мешает взять уже готовый игровой квест? Допустим квест торговцев Хориниса Хакона, Джоры. Там по одному квесту и легко можно разобраться, что к чему и как ::)

P.S. Как раз квест Хакона заключается в убийстве воров :)
 

Финкрег

Участник форума
Регистрация
16 Май 2007
Сообщения
69
Благодарности
0
Баллы
155
Дело у меня такое. Я решил написать квестик. Простенький. В г1 спокойно в Story_Globals можно было название квеста прописать. А в Г2а чего-то названий нету. Только скрипты. В каком файле нужно писать на Русском названия квестом, да и записей в дневнике?

У меня возник еще один вопрос. В файле It_melee_weapons описывается только название оружия и его внешний вид, а в каком файле, допустим сделать урон огнем?
 

MIXIR94

Участник форума
Регистрация
12 Авг 2008
Сообщения
70
Благодарности
0
Баллы
155
2Финкрег: В LOG_Constans_YoLu, и в Story_Global естественно
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
2Финкрег:
В файле(ах), где инстанции оружия прописаны, там и пишешь требуемый урон нужный к дамаджу, или в том файле скрипта который ты сам создал...
Прописывая в Damage, тип урона разделять этими || символами.  ;)

Ps Для примера смотри файл инстанции дракона, как там дамадж прописан.
 

marazmus

★★★★★★★★★★★
Основатель
Регистрация
7 Янв 2003
Сообщения
2.117
Благодарности
914
Баллы
385
MIXIR94 написал(а):
2Финкрег: ??????? впервые слышу

Еще один такой пост, и будет показательный бан на две недели. Пожалуйста, давайте не будем флудить на форуме, особенно в теме модостроения, куда флудерастам вообще вход заказан, под угрозой пожизненного бана. Мусора и так много, незачем его размножать.
 
Последнее редактирование модератором:

Финкрег

Участник форума
Регистрация
16 Май 2007
Сообщения
69
Благодарности
0
Баллы
155
2Финкрег:
В файле(ах), где инстанции оружия прописаны, там и пишешь требуемый урон нужный к дамаджу, или в том файле скрипта который ты сам создал...
Прописывая в Damage, тип урона разделять этими || символами. ;)

Ps Для примера смотри файл инстанции дракона, как там дамадж прописан.
У дракона вот так:
damage[DAM_INDEX_FIRE] = 159;
damage[DAM_INDEX_FLY] = 1;
А я тоесть пишу так?:
damage[1]
damage[2
damage[3]
damage[DAM_INDEX_FIRE]
Или вместо номерв писать DAM_INDEX_Mage и от стерл и от оружия? Если так, то прошу подсказать как пишется урон от оружия и стрел, просто я думаю что от магии, от перевода.

2ukur: прошу только подсказать как называется урон от оружия и стрел.
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455

Код:
instance Mythrilklinge02(C_Item)
{
	name = "УРИЗЕЛЬ";
	mainflag = ITEM_KAT_NF;
	flags = ITEM_2HD_SWD | ITEM_MISSION;
	material = MAT_METAL;
	value = 10000;
	damagetype = DAM_FIRE | DAM_MAGIC;
	damage[DAM_INDEX_FIRE] = 30;
	damage[DAM_INDEX_MAGIC] = 120;
	range = 180;
	cond_atr[2] = ATR_STRENGTH;
	cond_value[2] = 30;
	visual = "ItMw_2H_Sword_Sleeper_02.3DS";
	description = name;
	text[0] = "Это меч Уризель.";
	text[1] = "В нем заключена магическая сила.";
	text[2] = NAME_Dam_Magic;
	count[2] = damage[DAM_INDEX_MAGIC];
	text[3] = NAME_Dam_Fire;
	count[3] = damage[DAM_INDEX_FIRE];
	text[4] = NAME_Str_needed;
	count[4] = cond_value[2];
	text[5] = NAME_Value;
	count[5] = value;
};

2ukur: прошу только подсказать как называется урон от оружия и стрел. А в целом все понятно.
DAM_EDGE - рубящее, мечи и топоры.
DAM_BLUNT - дробящее, молоты и булавы.
DAM_POINT - луки и арбалеты, соответственно стрелы и болты.
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
2ukur:
Забыл добавить DAM_FLY - урон от падения, так на всякий  ;)
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
MaGoth написал(а):
2ukur:
Забыл добавить DAM_FLY - урон от падения, так на всякий ;)
Не забыл, в предыдущем примере с дракончиком урон от падения уже был описан. В этот раз спрашивали только урон от оружия. А ентот в основном у мегамонстров, а для оружия только в некоторых модах.

Да и вообще-то DAM_FLY - урон не от падения а от удара, который приводит к падению, т.к. урон от падения DAM_FALL. Есть еще урон от магического барьера DAM_BARRIER, которого в Г2а нет, но тем не менее урон остался.

Вот полный список из constans.d

const int DAM_INVALID = 0;
const int DAM_BARRIER = 1;
const int DAM_BLUNT = 2;
const int DAM_EDGE = 4;
const int DAM_FIRE = 8;
const int DAM_FLY = 16;
const int DAM_MAGIC = 32;
const int DAM_POINT = 64;
const int DAM_FALL = 128;
const int DAM_INDEX_BARRIER = 0;
const int DAM_INDEX_BLUNT = 1;
const int DAM_INDEX_EDGE = 2;
const int DAM_INDEX_FIRE = 3;
const int DAM_INDEX_FLY = 4;
const int DAM_INDEX_MAGIC = 5;
const int DAM_INDEX_POINT = 6;
const int DAM_INDEX_FALL = 7;
const int DAM_INDEX_MAX = 8;
 
Последнее редактирование модератором:

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
2ukur:
DAM_FLY - именно урон от падения, используется големами, троллями и драконами при атаке...  ;)

А эти два типа уронов, именно от барьера.:
DAM_BARRIER - молния барьера урон магический.
DAM_FALL - полет после удара молнией барьера.
Оба нигде в Г2о и Г2а не используются. :)
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
2ukur:
DAM_FLY - именно урон от падения, используется големами, троллями и драконами при атаке... ;)

А эти два типа уронов, именно от барьера.:
DAM_BARRIER - молния барьера урон магический.
DAM_FALL - полет после удара молнией барьера.
Оба нигде в Г2о и Г2а не используются. :)
И снова ты ошибаешься. DAM_FLY урон от удара, DAM_FALL урон от падения.
Доказать легко, попробуй сделать кольцо с защитой от соответствующих повреждений PROT_FLY и PROT_FALL.

Я для эксперимента сделал кольцо с защитой от падения self.protection[PROT_FALL] += 100;
и сбросил ГГ со стены замка во внешнее кольцо Старого Лагеря, так вот с кольцом при нескольких попытках падений жизни оставалось всегда примерно на 100 ед больше. Далее я решил усилить действие защиты и прописал для кольца self.protection[PROT_FALL] += 500; Первый раз ГГ упал с башни Ксардаса без кольца на землю с летальным исходом, т.е. трупняокм. С кольцом же падение вообще не отняло у ГГ ни единицы жизни. Делай выводы!
 
Сверху Снизу