[AGFC: Valley of Gothic] М: Скриптинг в Готике

Страница 20 из 65 « Первая 101314151617181920 2122232425262730 Последняя »
Поиск в этой теме:

Расширенный поиск
Старый 18.08.2005, 21:13   #761
DEDROIT

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

По умолчанию Re: Скриптинг в Готике

2Vam:
Я попробывал перенести файл IT_Amulette,в котором находится амулет превращения в орка,в \Story\NPC.Закомпилировал без ошибок!Но когда я прописал этот амулет у непися,то декомпилятор выдаёт ошибку,та что я прописал амулет,хотя прописал всё правильно!Попробывал не прописывать у главного героя,зашёл в игру,с помощью
insert попытался вызвать амулет,а он мне нет такого.Может быть я не туда перенёс?
Ответить с цитированием
Старый 18.08.2005, 22:11   #762
Finsernis

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

По умолчанию Re: Скриптинг в Готике

Уф... Исправил я свою ошибку, вернее не исправил, а сделал то же самое, только сначала. Все работает... Вот только я так и не разобрался где я был неправ.
Просьба всем, если кто-нибудь найдет ошибку в посте # 757 объясните мне.

Заранее благодарен.
Ответить с цитированием
Старый 18.08.2005, 23:44   #763
TycoooN
Строители Миртаны
  Аватар для TycoooN
 
 
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
TycoooN вне форума

По умолчанию Re: Скриптинг в Готике

2DEDROIT:
Может быть я не туда перенёс?
Может :P

Вообще, если ты хочешь получить ответ, приведи сюда сами скрипты (или их части), напиши конкретнее что ты делал, приведи тексты ошибок zSpy.
А так твой пост просто флудом попахивает.
Отправить личное сообщение для Ответить с цитированием
Старый 19.08.2005, 12:12   #764
DEDROIT

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

По умолчанию Re: Скриптинг в Готике

2TycoooN:
Вот превоначальный скрипт амулета превращение в орка:
instance ItAm_Amulet_of_Lunatics(C_Item)
{
* * name = NAME_Amulett;
* * mainflag = ITEM_KAT_MAGIC;
* * flags = ITEM_AMULET;
* * value = 0;
* * visual = "ItAm_Hp_01.3ds";
* * visual_skin = 0;
* * material = MAT_METAL;
* * on_equip = Equip_ItAm_Amulet_of_Lunatics;
* * on_unequip = UnEquip_ItAm_Amulet_of_Lunatics;
* * wear = WEAR_EFFECT;
* * effect = "SPELLFX_ITEMGLIMMER";
* * description = "Амулет сумасшедших";
* * inv_zbias = INVCAM_ENTF_AMULETTE_STANDARD;
};

func void Equip_ItAm_Amulet_of_Lunatics()
{
* * Npc_SetTrueGuild (self, *GIL_ORC);
* * self.guild = *GIL_ORC;
* * Mdl_SetVisual(self,"Orc.mds");
* * Mdl_SetVisualBody(self,"Orc_BodyShaman",DEFAULT,DE FAULT,"Orc_HeadShaman",DEFAULT,DEFAULT,-1);
};

func void UnEquip_ItAm_Amulet_of_Lunatics()
{
* * Npc_SetTrueGuild (self, *GIL_NONE);
* * self.guild = *GIL_NONE;
* * Mdl_SetVisual (self, "HUMANS.MDS");
* * Mdl_SetVisualBody (self, "hum_body_Naked0", 9, 0, "Hum_Head_Pony", Face_N_Player, 0, NO_ARMOR);
};
Я засунул его в IT_Amulette!Компилирую.Без ошибок.Потом вхожу в игру одеваю его,но видно почему-то
только орочья голова!
Потом я изменил вот эту часть
func void Equip_ItAm_Amulet_of_Lunatics()
{
* * Npc_SetTrueGuild (self, *GIL_ORC);
* * self.guild = *GIL_ORC;
* * Mdl_SetVisual (self, "Zombie.mds");
* * Mdl_SetVisualBody (self, "Zom_Body", 0, 0, "Zom_Head", 1, DEFAULT, -1);

};
на эту(в принципе только добавил B_SetVisuals_OrcShaman();):
func void Equip_ItAm_Amulet_of_Lunatics()
{
* * Npc_SetTrueGuild (self, *GIL_ZOMBIE);
* * B_SetVisuals_OrcShaman();
* * self.guild = *GIL_ZOMBIE;
* * Mdl_SetVisual(self,"Orc.mds");
* * Mdl_SetVisualBody(self,"Orc_BodyShaman",DEFAULT,DE FAULT,"Orc_HeadShaman",DEFAULT,DEFAULT,-1);
};
Но у меня компиляция выдавала ошибку:
00:01 Fatal:-1 U: PAR:ITEMS/IT_AMULETTE.D:Unknown indetifier:B_SETVISUALS_ORCSHAMAN(line 474)...<zParser.cpp,#599>
Потом Vam кое-что псоветовал(написано выше):
И я перенёс файл IT_Amulette(в котором находится амулет превращения в орка) в папку NPC.
Закомпилировал.Без ошибок.Захожу в игру с помощью марвина пытался вызвать амулет,а он мне нет такого!
Потом я попробывал прописать амулет в файле PC_HERO.Прописал(CreateInvItems(self,ItAm_Amulet_o f_Lunatics,1);):
Но компилятор выдаёт ошибку:
00:15 Fatal:-1 U: PAR:STORY/NPC/PC_HERO.D:Unknown indetifier:ITAM_AMULET_OF_LUNATICS...<zParser.cpp, #599>
Как мне её исправить,если я не туда перенёс то куда надо?Проблема в этом амулете,то что при одевание видно только
голова,а нужно было чтобы видно было всё!Как это сделать?
Ответить с цитированием
Старый 19.08.2005, 15:37   #765
TycoooN
Строители Миртаны
  Аватар для TycoooN
 
 
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
TycoooN вне форума

По умолчанию Re: Скриптинг в Готике

2DEDROIT:
А у тебя файл точно компилируется? Он в GOTHIC.SRC прописан? ::)
Отправить личное сообщение для Ответить с цитированием
Старый 19.08.2005, 15:43   #766
DEDROIT

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

По умолчанию Re: Скриптинг в Готике

2TycoooN:
Нет не прописан!А его нужно прописывать,если нужно то как?А то просто когда я другие итемки вставлял я их не прописывал в GOTHIC.SRC и в игре всё работало!Если
файл IT_Amulette прописан в GOTHIC.SRC,то зачем мне нужно прописывать мой амулет? Сейчас кое-что изменил в файле
GOTHIC.SRC,изменил следующее,раньше в GOTHIC.SRC
было прописано Items\IT_Amulette.d,а так как я пренёс этот файл в папку NPC,тоя изменил на это Story\NPC\IT_Amulette.d
Попытался закомпилировать выдаёт ошибку
00:01 Fatal:-1 U: PAR:STORY/NPC/IT_AMYLETTE.D.D:Unknown indetifier:B_SETVISUALS_ORCSHAMAN(line 471)...<zParser.cpp,#599>
Как её исправить?
Ответить с цитированием
Старый 19.08.2005, 16:12   #767
TycoooN
Строители Миртаны
  Аватар для TycoooN
 
 
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
TycoooN вне форума

По умолчанию Re: Скриптинг в Готике

2DEDROIT:
Сейчас кое-что изменил в файле
GOTHIC.SRC,изменил следующее,раньше в GOTHIC.SRC
было прописано Items\IT_Amulette.d,а так как я пренёс этот файл в папку NPC,тоя изменил на это Story\NPC\IT_Amulette.d
Именно это я и имел в виду.

00:01 Fatal:-1 U: PAR:STORY/NPC/IT_AMYLETTE.D.D:Unknown indetifier:B_SETVISUALS_ORCSHAMAN(line 471)...<zParser.cpp,#599>
Все равно у тебя получается так, что функция B_SETVISUALS_ORCSHAMAN() компилируется позже амулета.
Отправить личное сообщение для Ответить с цитированием
Старый 19.08.2005, 16:23   #768
DEDROIT

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

По умолчанию Re: Скриптинг в Готике

2TycoooN:
Но как сделать,чтобы всё работало!Заранее благодарен!
Ответить с цитированием
Старый 19.08.2005, 16:59   #769
TycoooN
Строители Миртаны
  Аватар для TycoooN
 
 
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
TycoooN вне форума

По умолчанию Re: Скриптинг в Готике

2DEDROIT:
Но как сделать,чтобы всё работало!Заранее благодарен!
Я бы на твоем месте вообще не стал зать эту функцию, а просто вместо ее вызова прописал бы ее содержимое:

Код:
   Mdl_SetVisual(self,"Orc.mds");   Mdl_SetVisualBody(self,"Orc_BodyShaman",DEFAULT,DEFAULT,"Orc_HeadShaman",DEFAULT,DEFAULT,-1);
Отправить личное сообщение для Ответить с цитированием
Старый 19.08.2005, 17:39   #770
DEDROIT

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

По умолчанию Re: Скриптинг в Готике

2TycoooN:
Так если я только пропишу эту функцию и одену амулет будет видна только голова орка,
а мне нужно чтобы был виден весь орк.Вот я и не знаю как сделать?
Ответить с цитированием
Старый 19.08.2005, 19:12   #771
Vam

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

По умолчанию Re: Скриптинг в Готике

2DEDROIT:
Потом Vam кое-что псоветовал(написано выше):
И я перенёс файл IT_Amulette(в котором находится амулет превращения в орка) в папку NPC.
Закомпилировал.Без ошибок.Захожу в игру с помощью марвина пытался вызвать амулет,а он мне нет такого!
Я тебе советовал совсем другое, внимательнее надо читать: функцию, на которую ругается компилятор т.е. B_SETVISUALS_ORCSHAMAN() из файла MST_OrcShaman.d нужно перенести в файл с амулетом, записав выше этой строки instance ItAm_Amulet_of_Lunatics(C_Item). Сам файл амулета никуда переносить не надо.
Ответить с цитированием
Старый 19.08.2005, 20:25   #772
DEDROIT

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

По умолчанию Re: Скриптинг в Готике

2Vam:
В файл IT_Amulette.d я прописал следующее:
B_SetVisuals_OrcShaman();
ItAm_Amulet_of_Lunatics(C_Item)
{
name = NAME_Amulett;
mainflag = ITEM_KAT_MAGIC;
flags = ITEM_AMULET;
value = 0;
visual = "ItAm_Hp_01.3ds";
visual_skin = 0;
material = MAT_METAL;
on_equip = Equip_ItAm_Amulet_of_Lunatics;
on_unequip = UnEquip_ItAm_Amulet_of_Lunatics;
wear = WEAR_EFFECT;
effect = "SPELLFX_ITEMGLIMMER";
description = "Амулет сумасшедших";
inv_zbias = INVCAM_ENTF_AMULETTE_STANDARD;
};
func void Equip_ItAm_Amulet_of_Lunatics()
{
Npc_SetTrueGuild (self, GIL_ORC);
B_SetVisuals_OrcShaman();
self.guild = GIL_ORC;
Mdl_SetVisual(self,"Orc.mds");
Mdl_SetVisualBody(self,"Orc_BodyShaman",DEFAULT,DE FAULT,"Orc_HeadShaman",DEFAULT,DEFAULT,-1);
};
func void UnEquip_ItAm_Amulet_of_Lunatics()
{
Npc_SetTrueGuild (self, GIL_NONE);
self.guild = GIL_NONE;
Mdl_SetVisual (self, "HUMANS.MDS");
Mdl_SetVisualBody (self, "hum_body_Naked0", 9, 0, "Hum_Head_Pony", Face_N_Player, 0, NO_ARMOR);
};
Компилятор выдаёт
00:01 Fatal:-1 U: PAR:ITEMS/IT_AMULETTE.D:Syntax error:B_SETVISUALS_ORCSHAMAN(line 451)...<zParser.cpp,#599>
А как её исправить?
Ответить с цитированием
Старый 19.08.2005, 21:04   #773
TSYLin

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

По умолчанию Re: Скриптинг в Готике

Прошу помощи (надеюсь ещё не надоел)

в срипте IT_Scrolls.d написал следующие:

...
const int Value_Sc_TrfGiantRat = 50;
...

...
instance ItSc_TrfGiantRat(C_Item)
{
     name = NAME_Spruchrolle;
     mainflag = ITEM_KAT_RUNE;
     flags = ITEM_MULTI;
     value = Value_Sc_TrfGiantRat;
     visual = "ItSc_TrfGiantRat.3DS";
     material = MAT_LEATHER;
     spell = SPL_TrfGiantRat;
     cond_atr[2] = ATR_MANA_MAX;
     cond_value[2] = SPL_Cost_Scroll;
     wear = WEAR_EFFECT;
     effect = "SPELLFX_WEAKGLIMMER";
     description = NAME_SPL_TrfGiantRat;
     text[0] = NAME_MageScroll;
     text[1] = NAME_Mana_needed;
     count[1] = SPL_Cost_Scroll;
     text[5] = NAME_Value;
     count[5] = value;
};
...

Но выдаётся ошибка unknown identifier SPL_TrfGiantRat

В каких файлах я что не прописал?

Заранее огромное спасибо

(почти всё сделал, 1 ошибка осталась)
Ответить с цитированием
Старый 19.08.2005, 22:18   #774
TycoooN
Строители Миртаны
  Аватар для TycoooN
 
 
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
TycoooN вне форума

По умолчанию Re: Скриптинг в Готике

2DEDROIT:
B_SetVisuals_OrcShaman();
И зачем? Ты вообще понимаешь, что делаешь?
Ты перенес вызов функции, а надо было - саму функцию.


2TSYLin:
Но выдаётся ошибка unknown identifier SPL_TrfGiantRat
Ну а что такое это твое SPL_TrfGiantRat?
Отправить личное сообщение для Ответить с цитированием
Старый 20.08.2005, 02:01   #775
Killer-XXX
Строители Миртаны
 
 
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
Killer-XXX вне форума

По умолчанию Re: Скриптинг в Готике

2TSYLin:
Это ты не перенес сам скрипт трансформации.
Ты поиском по файлам поищи, все поймешь.
Ответить с цитированием
Старый 20.08.2005, 14:52   #776
VasyaRV

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

По умолчанию Re: Скриптинг в Готике

Привет, народ!
У меня накопилась парочка вопросов по скриптам и вот я решил к вам обратиться.

1. Насчет компиляции.
Я пока компилирую Spacer'om все отлично и без ошибок.
Я попытался скомпилировать программой Vam'a, делал все как положено, в отдельную папку, запускал через ярлык.

Но компиляция не получается и zSpy постоянно выдает сообщения типа "Possible function should return value"
, а в конце и вовсе пишет, что насобирал 50 ошибок.
Я пытался в ручную править скирпты , вставлял "return TRUE;", но по мне это нереально столько скриптов исправить, неужели вы все так делали? Может у кого-то есть готовые?


С компиляцией декомпилированного тоже не получается.
Может это из-за того, что сначала я положил GotrhicSourcer в папку с готикой?
Но вот с декомпиляцией проблем нет.

2. Насчет диалогов. Диалоги я вставлять вроде как научился, но я до сих пор не понял как сделать субтитры.
Я так думаю, что они идут после // в скрипте.
(OU я обновлял через SPACER)

Все это по первой Готике.(пиратская английская)
Ответить с цитированием
Старый 20.08.2005, 15:26   #777
Killer-XXX
Строители Миртаны
 
 
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
Killer-XXX вне форума

По умолчанию Re: Скриптинг в Готике

2VasyaRV:
Делай через прогу от Vam'a.
Читай тему 'Декомпилятор скриптов', читай readme к проге. Все понятно.

З.Ы.
Все это по первой Готике.(пиратская английская)
Это где ж ты такую урвал? Неужели сейчас нет нормальной русской? Ну или на крайняк лоХализованной Руссобитом.
Ответить с цитированием
Старый 20.08.2005, 15:54   #778
Finsernis

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

По умолчанию Re: Скриптинг в Готике

А у меня вот какой вопрос: Я вставляю в свой мир монстра, например, волка. Запускаю игру, подхожу к тому месту где сидит мой монстр. Все нормально, кроме того, что монстр ни в какую не хочет на меня нападать. Я его уже и бил и пинал - сидит себе и на меня смотрит.

Монстра я сначала вставлял на вейпиоинт - рядом куча фрипоинтов, потом вставил на фдин из фрипоинтов. В общем ничего у меня не получается.

Вопрос: От названия фрипоинта звисит действие, которое будет выполняться монстром?
Скрипты я использовал Акелловские. В других мирах монстры ведут себя нормально.
Ответить с цитированием
Старый 20.08.2005, 18:55   #779
TSYLin

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

По умолчанию Re: Скриптинг в Готике

Я наверное уже запарил, ну уж извените, что я иногда туг на голову.

Дело вот в чём.

instance DIA_DUSTY_goback(C_Info)
{
* * *npc = sek_6009_dusty;
* * *nr = 999;
* * *condition = dia_dusty_goback_condition;
* * *information = dia_dusty_goback_info;
* * *permanent = FALSE;
* * *important = TRUE;
};


func int dia_dusty_goback_condition()
{
* * *if((Kapitel == 3) && ((hero.guild == GIL_SEK) || (hero.guild == GIL_GUR) || (hero.guild == GIL_TPL)))
* * *{
* * * * * *return TRUE;
* * *};
* * *return FALSE;
};

func void dia_dusty_goback_info()
{
* * *AI_Output(self,other,"DIA_Dusty_goback_13_08"); * * *//Пожалусто, помоги мне попасть в лагерь.
* * *Log_CreateTopic(TOPIC_dusty_goback,LOG_MISSION);
* * *Log_SetTopicStatus(TOPIC_dusty_goback,LOG_Running );
* * *B_LogEntry(TOPIC_dusty_goback,"Дасти хочет, что бы я помог ему попасть в лагерь.");
* * *Info_ClearChoices (dia_dusty_goback);
* * *Info_AddChoice (dia_dusty_goback, "Да, я помогу тебе", dia_dusty_goback_Yes);
* * *Info_AddChoice (dia_dusty_goback, "нет!", dia_dusty_goback_No);
);

func void dia_dusty_goback_Yes
{
* * *AI_Output(other,self,"DIA_Dusty_goback_13_11"); * * *//Да,я помогу тебе. Собирайся.
* * *AI_Output(self,other,"DIA_Dusty_goback_13_12"); * * *//Спасибо тебе, я уже в дороге.
* * *B_LogEntry(TOPIC_dusty_goback,"Ну чтож, я согласен.");
* * *AI_StopProcessInfos(self);
* * *Npc_ExchangeRoutine(self,"FollowShip");
* * *self.aivar[AIV_PARTYMEMBER] = TRUE;
);

func void dia_dusty_goback_No
{
* * *AI_Output(other,self,"DIA_Dusty_goback_13_09"); * * *//Нет
* * *AI_Output(self,other,"DIA_Dusty_goback_13_10"); * * *//Ты об этом сильно пожалеешь, умри же!
* * *TOPIC_dusty_goback = LOG_FAILED;
* * *AI_StopProcessInfos(self);
* * *Npc_ExchangeRoutine(self,"Ship");
* * *B_Attack(self,other,AR_NONE,1);
);

Но компилятор выдаёт unknown identifier ); (на последней строке)

Что делать?


Добавление от 08/20/05, в 19:15:16
Но компилятор выдаёт unknown identifier ); (на последней строке)
Ой, на строке после
   Info_AddChoice (dia_dusty_goback, "нет!", dia_dusty_goback_No);

ибыло написано
unknown identifier : )
Ответить с цитированием
Старый 20.08.2005, 19:54   #780
TycoooN
Строители Миртаны
  Аватар для TycoooN
 
 
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
TycoooN вне форума

По умолчанию Re: Скриптинг в Готике

2TSYLin:
func void dia_dusty_goback_No
Попробуй писать
Код:
func void dia_dusty_goback_No()
;D

2Finsternis:
Скорее всего ты в своем мире не вызвал функции, отвечающие за отношения НПС между собой. Так что показывай свой startup.d ::)
Отправить личное сообщение для Ответить с цитированием
Старый 20.08.2005, 20:35   #781
TSYLin

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

По умолчанию Re: Скриптинг в Готике

2TycoooN:
Исправил и эту ошибку и другую, вот переделанный скрипт, однако ошибка таже.

instance DIA_DUSTY_goback(C_Info)
{
     npc = sek_6009_dusty;
     nr = 999;
     condition = dia_dusty_goback_condition;
     information = dia_dusty_goback_info;
     permanent = FALSE;
     important = TRUE;
};


func int dia_dusty_goback_condition()
{
     if((Kapitel == 5) && ((hero.guild == GIL_SEK) || (hero.guild == GIL_GUR) || (hero.guild == GIL_TPL)))
     {
           return TRUE;
     };
     return FALSE;
};

func void dia_dusty_goback_info()
{
     AI_Output(self,other,"DIA_Dusty_goback_13_00" );      //Наконец-то ты здесь, я ждал тебя.
     AI_Output(other,self,"DIA_Dusty_goback_13_01" );      //Что случилось?
     AI_Output(self,other,"DIA_Dusty_goback_13_02" );      //Тут в городе прошёл слух, что драконы мертвы, так же один из бывших воров Нового лагеря рассказал мне,
     AI_Output(self,other,"DIA_Dusty_goback_15_03" );      //что наш болотный лагерь был поглащён Адоносом. Но остались еще люди ранее проживавшие там, после подения барьера обосновавшиеся, где-то не по-далеку.
     AI_Output(self,other,"DIA_Dusty_goback_13_04" );      //До моих ушей, так же дошло, что за главного у них - Идол Нетбек. Это мой друг. Ещё до барьера мы были друзьями, и жили рядом, в Отивисе, но город взбунтовался,
     AI_Output(self,other,"DIA_Dusty_goback_13_05" );      //Ратбар II сжег его до тла, всех виновных и не виновных он заставил добывать руду, а вскоре и был создан барьер.
     AI_Output(other,self,"DIA_Dusty_goback_13_06" );      //Ну а от меня ты чего хочешь?
     AI_Output(self,other,"DIA_Dusty_goback_13_07" );      //Город мне опастылил, гуру того и гляди набросятся на тебя, а эти жители ничем не отличются от волков, однако у Нетбека глуш, благодать.
     AI_Output(self,other,"DIA_Dusty_goback_13_08" );      //Пожалусто, помоги мне попасть к нему, я отплачу тебе.
     Log_CreateTopic(TOPIC_dusty_goback,LOG_MISSIO N);
     Log_SetTopicStatus(TOPIC_dusty_goback,LOG_Running );
     B_LogEntry(TOPIC_dusty_goback,"Дасти хочет, что бы я помог ему попасть в Лесной лагерь.");
     Info_ClearChoices(dia_dusty_goback);
     Info_AddChoice(dia_dusty_goback,"Да, я помогу тебе",dia_dusty_goback_Yes);
     Info_AddChoice(dia_dusty_goback,"Да как ты смеешь попрекать Гуру!",dia_dusty_goback_No);
);

func void dia_dusty_goback_Yes()
{
     AI_Output(other,self,"DIA_Dusty_goback_13_11" );      //Да,я помогу тебе. Собирайся.
     AI_Output(self,other,"DIA_Dusty_goback_13_12" );      //Спасибо тебе, я уже в дороге.
     B_LogEntry(TOPIC_dusty_goback,"Ну чтож, я согласен.");
     AI_StopProcessInfos(self);
     Npc_ExchangeRoutine(self,"FollowShip");
     self.aivar[AIV_PARTYMEMBER] = TRUE;
);

func void dia_dusty_goback_No()
{
     AI_Output(other,self,"DIA_Dusty_goback_13_09" );      //Да как ты смеешь попрекать Гуру!
     AI_Output(self,other,"DIA_Dusty_goback_13_10" );      //Ты об этом сильно пожалеешь, умри же!
     TOPIC_dusty_goback = LOG_FAILED;
     AI_StopProcessInfos(self);
     Npc_ExchangeRoutine(self,"Ship");
     B_Attack(self,other,AR_NONE,1);
);

Ответить с цитированием
Старый 20.08.2005, 20:49   #782
Killer-XXX
Строители Миртаны
 
 
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
Killer-XXX вне форума

По умолчанию Re: Скриптинг в Готике

2TSYLin:
Все просто до нельзя. :)
Я выделю кусок кода, все поймешь сам. :)

Info_AddChoice(dia_dusty_goback,"Да, я помогу тебе",dia_dusty_goback_Yes);
Info_AddChoice(dia_dusty_goback,"Да как ты смеешь попрекать Гуру!",dia_dusty_goback_No);
);
Понял, нет? Скобка не круглая,а фигурная нужна. И ниже такая же ошибка.
Удачи.
Ответить с цитированием
Старый 20.08.2005, 20:57   #783
TSYLin

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

По умолчанию Re: Скриптинг в Готике

2Killer-XXX:
Спасибо, сегодня уже второй раз убеждаюсь что очки нужны, спасибо.
Ответить с цитированием
Старый 20.08.2005, 23:44   #784
Finsernis

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

По умолчанию Re: Скриптинг в Готике

2TycoooN:
Так что показывай свой startup.d

Нет, как раз в startup.d я все правильно прописал. Я 6 часов ломал голову, что же было не так и вот наткнулся на такой глюк: Нельзя телепортировать непися из диалога, т.е. когда с кем нибудь разговариваешь нельзя телепортировать себя или собеседника не окончив диалог. Тогда получается эффект "невидимости", меня никто не видит, со мной никто не говорит, на меня никто не нападает. Блин, эта ошибка стоила мне 6 потерянных часов времени! :(

Скорее всего ты в своем мире не вызвал функции, отвечающие за отношения НПС между собой. *

А любой нпс должен давать сдачи, если на него нападают.

Вот код неправильного скрипта:
func void DIA_Seb_mod_Isp_Redi_Info()
{
AI_Output (other, self, "Seb_mod_Isp_Redi_01_00");//текст
AI_Output (self, other, "Seb_mod_Isp_Redi_01_01");//текст
AI_StopProcessInfos (self);
AI_Teleport (NoNe_30040_Vilfild, "LEICHENTELE"); //так можно
B_StartOtherRoutine (NoNe_30040_Vilfild, "Ispitanie"); // и так можно

AI_Teleport (pc_hero, "LEICHENTELE"); // а вот так нельзя

};

Также нельзя писать вот что:
func void DIA_Vilfild_mod_Help_Info()
{
AI_Output (self, other, "DIA_Vilfild_mod_Help_01_00");//текст

AI_Teleport (NoNe_30040_Vilfild, "LEICHENTELE_02");
B_StartOtherRoutine (NoNe_30040_Vilfild, "Ispitaniend");

AI_StopProcessInfos (self);
};


Спасибо за отзыв! ;)
Ответить с цитированием
Старый 21.08.2005, 11:37   #785
SATANIZMat

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

По умолчанию Re: Скриптинг в Готике

2Finsternis:
Хотелось бы высказаться..

А любой нпс должен давать сдачи, если на него нападают.
Не дерётся Рокфелер сколько его не бей и Ксардас. =)
Если дать Ксардасу в Бубен один раз, он скажет типа больше не надо.. Второй раз кастует сон. Если npctype_friend подратсья очень трудно. =)
Ответить с цитированием
Старый 21.08.2005, 22:21   #786
Finsernis

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

По умолчанию Re: Скриптинг в Готике

2SATANIZMatik:
Хотелось бы высказаться..

Во-первых, я не имел в виду прямо-таки ВСЕХ неписей.

Во-вторых, Рокфеллер - это просто болванка, так же не будет драться никакой непись если в скрипте его инстанции написано вот что:
aivar[AIV_NoFightParker] = TRUE;

Ксардас не дерется потому что в его скрипте написано вот что:
aivar[AIV_MagicUser] = MAGIC_ALWAYS;

Т.е. всегда пользоваться магией, а так как он npcType = NPCTYPE_FRIEND; то он усыпляет.

В-третьих, не надо впадать в крайности и понимать все буквально.

З.Ы. А звери и другие НПС всегда реагируют на атаку. Так велел Иннос!

З.З.Ы. 2Модераторам:
Если нафлудил - прошу прощения, просто не люблю необоснованных высказываний в свой адрес.
Ответить с цитированием
Старый 22.08.2005, 19:37   #787
Bog-Dan

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

По умолчанию Re: Скриптинг в Готике

Я тут запоролся на одной фишке...у меня проблемы с AiVar...
1. я пишу 2-раза аивар но чтото нето..
пример:
это в первом...выше диалоге
func int Dia_Evin_ok_condition ()
{
  var C_Npc Edvin;
  Edvin = Hlp_GetNpc(TPL_9129_Edvin);
  if(Edvin.aivar[AIV_WASDEFEATEDBYSC] == 1)
  {
  return TRUE;
  };
};

это во втором:

func int Dia_Evin_suka_go_condition()
{
  var C_Npc Edvin_1;
  Edvin_1 = Hlp_GetNpc(TPL_9129_Edvin);
  if(Edvin_1.aivar[AIV_WASDEFEATEDBYSC] == 1)
    {
          return 1;
    };
};
и почему то идет не подряд а сразу второй в чем проблема??
Ответить с цитированием
Старый 22.08.2005, 23:50   #788
Finsernis

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

По умолчанию Re: Скриптинг в Готике

2Bog-Dan:
Если ты хочешь, чтобы один диалог следовал за другим, то вместо
func int Dia_Evin_suka_go_condition()
{
 var C_Npc Edvin_1;
 Edvin_1 = Hlp_GetNpc(TPL_9129_Edvin);
 if(Edvin_1.aivar[AIV_WASDEFEATEDBYSC] == 1)
   {
         return 1;
   };
};


напиши вот что:
func int Dia_Evin_suka_go_condition()
{
 var C_Npc Edvin_1;
 Edvin_1 = Hlp_GetNpc(TPL_9129_Edvin);
 if ((Edvin_1.aivar[AIV_WASDEFEATEDBYSC] == 1) && Npc_KnowsInfo (other, XXX ))
   {
         return 1;
   };
};

где XXX - это имя инстанции предыдущего диалога. Т.е. новый диалог станет доступным только если состоялся предыдущий дилог.
Если не получится, то попробуй убрать Edvin_1.aivar[AIV_WASDEFEATEDBYSC] == 1.
И вообще, если тебе не трудно, объясни пожалуйста, что такое Edvin_1.aivar[AIV_WASDEFEATEDBYSC] == 1.

Это только один из множества вариантов. Можно также объявить переменную, присвоить ей значение TRUE если состоялся нужный диалог, а в функции func int ХХХ_condition() проверить значение переменной. Если она истинна, то соответственно выполнится диалог.
Ответить с цитированием
Старый 23.08.2005, 11:22   #789
Bog-Dan

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

По умолчанию Re: Скриптинг в Готике

2Finsternis:
Да спасиб...но все работает но че то я зыюыл про эту npc_knowsinfo
..
Edvin_1.aivar[AIV_WASDEFEATEDBYSC] == 1
это я запихнул в условие для того чтобы...после боя если я его выиграю то буднет этот диалог...;)!
Ответить с цитированием
Старый 23.08.2005, 12:55   #790
TSYLin

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

По умолчанию Re: Скриптинг в Готике

Скачал наковальню marazmus'а, но оказалась она глюченная, если изучить удну ветвь наковальни, она не отабражается, если 2 меню то отображается ранее изученная, а новая нет, что делать, просто скрипт большой засорять не хочется.
Ответить с цитированием
Старый 23.08.2005, 15:14   #791
Finsernis

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

По умолчанию Re: Скриптинг в Готике

2TSYLin:
Кинь скрипт на Яндекс, посмотрим...
Ответить с цитированием
Старый 23.08.2005, 20:30   #792
TSYLin

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

По умолчанию Re: Скриптинг в Готике

2Finsternis:
Выложил на ДиккурикАГ(ящик Готов) и на Модификейшн(где первая версия Глобального мода)

Обьясняю причину

Ну например переменная PLAYER_TALENT_SMITH[61] = TRUE (выковать лук) (мы изучили навык у боспера, и стало PLAYER_TALENT_SMITH[61] = TRUE), но меню не отабразится, до тех пор как мы выучим изготавливать шпаги, при том после обучения шпаги будут отабражатся все выученные виды оружия, кроме шпаг, но почему?
Ответить с цитированием
Старый 23.08.2005, 22:27   #793
dixie

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

По умолчанию Re: Скриптинг в Готике

2Finsternis:
Сорри за оффтоп, и назойливость, но не мог бы ты научить меня создавать заклинания? Мне нужны 2 заклинания телепортации.
Конкретно по телепортации:
1. Выбираешь свободный номер заклинания в Constants.d. Например 99.
const int SPL_TeleportOWCoastBase = 99;
2. там же, чуть ниже в массиве spellFxInstanceNames прописываешь этому номеру нужный визуальный эффект из VisualFX. Т.е. вместо "Light" в 99 позиции пишешь "Teleport".
3. ещё в одном массиве прямо под ним spellFxAniLetters - пишешь в той же 99 позиции "HEA". Это анимация человека, как я понимаю. Т.е. подъем рук вверх.
4. в Text.d в массиве TXT_SPELLS в той же 99 позиции пишешь, например "Телепорт в лесной лагерь"
5. в Spell_ProcessMana.d вставляешь
[pre]
 if (activeSpell == SPL_TeleportOWCoastBase) {
   return Spell_Logic_TeleportOWCoastBase (manaInvested);
 };
[/pre]
6. В Spell_Teleport_Alle.d, где прописаны все телепорты:
[pre]
func int Spell_Logic_TeleportOWCoastBase(var int manaInvested)
{
 if (Npc_GetActiveSpellIsScroll (self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll)) {
   return SPL_SENDCAST;
 }
 else if (self.attribute[ATR_MANA] >= SPL_Cost_Teleport) {
   return SPL_SENDCAST;
 };
 return SPL_NEXTLEVEL;
};

func void Spell_Cast_TeleportOWCoastBase () {
 B_PrintTeleportTooFarAway (OldWorld_Zen);
 if (Npc_GetActiveSpellIsScroll (self)) {
   self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_Scroll;
 } else {
   self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_Teleport;
 };
 AI_Teleport (self, "WP_COAST_FOREST_59"); // точка назначения
 AI_PlayAni (self, "T_HEASHOOT_2_STAND");
};
[/pre]
7. и там же в функцию Spell_Cast_Teleport():
[pre]
 if (Npc_GetActiveSpell (self) == SPL_TeleportOWCoastBase) {
   Spell_Cast_TeleportOWCoastBase ();
 };
[/pre]
8. Создаешь руну:
[pre]
const int Value_Ru_TeleportOWCoastBase = 500;

instance ItRu_TeleportOWCoastBase(C_Item)
{
 name = NAME_Rune;
 mainflag = ITEM_KAT_RUNE;
 flags = 0;
 value = Value_Ru_TeleportOWCoastBase;
 visual = "ItRu_Water16.3DS";
 material = MAT_STONE;
 spell = SPL_TeleportOWCoastBase;
 wear = WEAR_EFFECT;
 effect = "SPELLFX_WEAKGLIMMER";
 description = "Телепорт в лесной лагерь";
 text[1] = NAME_Manakosten;
 count[1] = SPL_Cost_Teleport;
 text[5] = NAME_Value;
 count[5] = value;
};
[/pre]
По поводу visual. Либо бери картинку от любой другой руны, либо неиспользованные руны воды/Белиара. В последнем случае надо править текстуру.
Вот и все ;)
Ответить с цитированием
Старый 23.08.2005, 23:29   #794
WindWW

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

По умолчанию Re: Скриптинг в Готике

Цитата:
Сообщение от TSYLin link=board=gothic&t=1105030050&start=775#791 date=08/23/05, в 20:30:58
2Finsternis:
Выложил на ДиккурикАГ(ящик Готов) и на Модификейшн(где первая версия Глобального мода)

Обьясняю причину

Ну например переменная PLAYER_TALENT_SMITH[61] = TRUE (выковать лук) (мы изучили навык у боспера, и стало PLAYER_TALENT_SMITH[61] = TRUE), но меню не отабразится, до тех пор как мы выучим изготавливать шпаги, при том после обучения шпаги будут отабражатся все выученные виды оружия, кроме шпаг, но почему?
Проверьте размерность массива PLAYER_TALENT_SMITH.
В файле Constants.d этот массив описан следующим образом:


const int MAX_WEAPONS = 13;
var int player_talent_smith[MAX_WEAPONS];


Индекс начинается с нуля, поэтому номер умения в данном
случае не должен быть больше 12.
В вашем скрипте есть значение PLAYER_TALENT_SMITH[77],
значит MAX_WEAPONS должен быть не менее 78.
Если это не так, то возможны любые чудеса.
P.S. Это касается всех массивов.
Ответить с цитированием
Старый 23.08.2005, 23:57   #795
Finsernis

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

По умолчанию Re: Скриптинг в Готике

2dixie:
Огромнейшее тебе спасибо, все получилось. Я знал как описать кастование и логику, а про массивы не знал. Теперь понятно, почему у меня не получалось.
Ответить с цитированием
Старый 24.08.2005, 01:43   #796
Bog-Dan

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

По умолчанию Re: Скриптинг в Готике

2Всем Скриптерам:
Как заставить НПС - чтобы он когда встал в указаный Waypoint то сразу же пил эллексир??Готика1
Какой скрипт отвечает за это? :/?
Ответить с цитированием
Старый 24.08.2005, 09:36   #797
marazmus
A.G.F.C.
 
Регистрация: 02.09.2005
Сообщений: 6
marazmus вне форума

По умолчанию Re: Скриптинг в Готике

Проверьте размерность массива PLAYER_TALENT_SMITH.
В файле Constants.d этот массив описан следующим образом:
Люди, дайте мыло свое, кому надо.
Я отправлю вам исходники моих скриптов - конкретно, измененные файлы, их немного, чтобы вам не заниматься декомпиляцией.
Там все прописано.
Но не исключено, что могут быть баги. Сейчас времени нет тестировать.


Добавление от 08/24/05, в 09:56:46
Люди, дайте мыло свое, кому надо.
Я отправлю вам исходники моих скриптов - конкретно, измененные файлы, их немного, чтобы вам не заниматься декомпиляцией.
Там все прописано.
Но не исключено, что могут быть баги. Сейчас времени нет тестировать.
Не надо мыла.
Вот прямая ссылка на архив с исходниками.
Там все скрипты, которые я исправлял, с комментариями.
http://marazmus.worldofgothic.ru/mar...th_scripts.zip
Забирайте, кому надо.
Отправить личное сообщение для Ответить с цитированием
Старый 24.08.2005, 10:16   #798
dixie

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

По умолчанию Re: Скриптинг в Готике

2Finsternis:
Огромнейшее тебе спасибо, все получилось. Я знал как описать кастование и логику, а про массивы не знал. Теперь понятно, почему у меня не получалось.
Еще про массивы прикол такой. Название VisualFX (т.е. строчка в spellFxInstanceNames) используется для поиска имени функции Spell_Cast_XXX.
Т.е. если вместо телепорта там написать "Light", то вызываться  и кастоваться будет Spell_Cast_Light - Свет ;) Поэтому для любых своих спеллов (ну кроме телепорта, лечения) надо делать эффект в VisualFX.
Ответить с цитированием
Старый 24.08.2005, 13:08   #799
Vendiga

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

По умолчанию Re: Скриптинг в Готике

Так я всё-таки не пойму :( - можно новые спецы создавать в готе или нет? И к рунам их прикреплять. Или за это всё-такии экзешник отвечает?
Ответить с цитированием
Старый 24.08.2005, 13:37   #800
TycoooN
Строители Миртаны
  Аватар для TycoooN
 
 
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
TycoooN вне форума

По умолчанию Re: Скриптинг в Готике

2Bog-Dan:
Как заставить НПС - чтобы он когда встал в указаный Waypoint то сразу же пил эллексир??Готика1
Какой скрипт отвечает за это? :/?
Выпить эликсир -
Код:
AI_UseItem(self,xxx);
Отправить личное сообщение для Ответить с цитированием
Страница 20 из 65 « Первая 101314151617181920 2122232425262730 Последняя »


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

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

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

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


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

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

AGFC: Valley of Gothic © 2004-2020

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