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

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

Расширенный поиск
Старый 13.08.2005, 18:02   #721
SATANIZMat

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

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

2dixie:
Ну я б не сказал  Вот, например, вчера реализовал такой прикол - получение экспы за выбрасывание предмета в определенной комнате замка
Типа выбрась каку? ЧТо за скрипт и где прописан?
Ответить с цитированием
Старый 13.08.2005, 18:09   #722
dixie

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

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

2SATANIZMatik:
Типа выбрась каку? ЧТо за скрипт и где прописан?
В последней версии мода - сегодня положил ;) А реализация достаточно сложная - в комнате или рядом сидит невидимый мясной жук размером 1/100 нормального и ждет пока ГГ выкинет предмет ;)
Тут когда-то описывали амулет регенерации маны - примерно по этому же принципу.
Ответить с цитированием
Старый 13.08.2005, 18:34   #723
SATANIZMat

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

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

2dixie:
Не совсем понимаю причём тут жук? =) Надо чтоб на него упало? =)
Типа раздавил жук +1000 exp. =)
Ответить с цитированием
Старый 13.08.2005, 20:49   #724
dixie

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

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

2SATANIZMatik:
Не совсем понимаю причём тут жук? =) Надо чтоб на него упало? =)
Типа раздавил жук +1000 exp. =)
А как ещё отловить выбрасывание предмета? Никаких функций для этого нету. У меня все на этих жуках ;) У каждого бревна невидимый жук сидит - пилишь бревно - а он тебе стрелы в инвентарь подкладывает ;) Уха точно так же варится. Одним словом, одомашненные полезные мясные баги - призраки ;)

Добавление от 08/13/05, в 21:09:31
И ещё, кстати - не знаю в какую тему поместить :)
Пробовал сделать в первой готике вид от первого лица. Естно, нифига не получается, потому, как, камера дергается при старте и остановке. Получилось не так, как в ShakeyCam - вроде меньше дергается, но иногда видна голова ГГ.
Вот camera.dat на пробу - може кто продолжит эксперименты ;)
http://home.tula.net/dixie/CAMERA.DAT
Ответить с цитированием
Старый 13.08.2005, 21:39   #725
TSYLin

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

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

Прошу прощения, вот небольшой кусочек скрипта, который я сделал, что не так?


instance DIA_fortuno_GREET(C_Info)
{
* * *npc = sek_6006_fortuno;
* * *nr = 665;
* * *condition = DIA_fortuno_GREET_Condition;
* * *information = DIA_fortuno_GREET_Info;
* * *permanent = FALSE;
* * *important = TRUE;
};


func int DIA_fortuno_GREET_Condition()
{
* * *if(Npc_IsInState(self,ZS_Talk) && (self.aivar[AIV_TalkedToPlayer] == FALSE))
* * *{
* * * * * *return TRUE;
* * *};
* * *return FALSE;
};

func void DIA_fortuno_GREET_Info()
{
* * *AI_Output(self,other,"DIA_fortuno_GREET_14_00"); * * *//Я Фортуно, помнишь, я раздавал болотник.
* * *AI_Output(self,other,"DIA_fortuno_GREET_14_01"); * * *//Тебе нужны эссенции исцеления или магия Спящего? Тогда ты у нужного человека.
* * *Log_CreateTopic(TOPIC_SekteTrader,LOG_NOTE);
* * *B_LogEntry(TOPIC_SekteTrader,"Фортуно продает траву, магию Спящего, и напитки в лагере Сектантов.");
};

var int fortuno_einmal;

instance DIA_fortuno_WAREZ(C_Info)
{
* * *npc = sek_6006_fortuno;
* * *nr = 666;
* * *condition = DIA_fortuno_WAREZ_Condition;
* * *information = DIA_fortuno_WAREZ_Info;
* * *permanent = TRUE;
* * *trade = TRUE;
* * *description = "Покажи мне свои товары";
};


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

func void DIA_fortuno_WAREZ_Info()
{
* * *B_GiveTradeInv(self);
* * *AI_Output(other,self,"DIA_fortuno_WAREZ_15_00"); * * *//Покажи мне твои товары.
* * *if(fortuno_einmal == FALSE)
* * *{
* * * * * *AI_Output(self,other,"DIA_Zuris_GREET_14_02"); * * *//Буквально только что я получил новые свитки. Сам Идол Тион, доверил их мне для распространению и продаже по городу.
* * * * * *fortuno_einmal = TRUE;
* * *};
};

Файл в котором написано товары я создал, но zSpy говорит что
STORY\DIALOGE\DIA_SEK_6006_FORTUNO.D: Redefined identifier : FORTUNO_EINMAL

Заранее благодарен.
Ответить с цитированием
Старый 13.08.2005, 21:59   #726
SATANIZMat

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

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

2TSYLin:
Я изучаю немецкий.
FORTUNO_EINMAL
Значит: Фортуно один. =) Попробуй везде сменить имя npc.
Ответить с цитированием
Старый 13.08.2005, 22:31   #727
TSYLin

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

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

2SATANIZMatik:
прости не совсем понял, что где именно изменить, спасибо.
Ответить с цитированием
Старый 13.08.2005, 22:47   #728
Finsernis

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

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

2TSYLin:
STORY\DIALOGE\DIA_SEK_6006_FORTUNO.D: Redefined identifier : FORTUNO_EINMAL


Я точно не уверен, но по-моему у тебя переменная *FORTUNO_EINMAL описанна несколько раз. Обычно все переменные описываются в файле Story\Globals.d.
Попробуй убрать var int fortuno_einmal из твоего скрипта. Мож что-нибудь да и получится.;)

2SATANIZMatik:
Значит: Фортуно один. =) Попробуй везде сменить имя npc.

Имя непися тут совсем не причем и сменять его не надо. ;)
Ответить с цитированием
Старый 13.08.2005, 23:20   #729
DEDROIT

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

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

2TSYLin:
Дей ствительно имя непися здесь ни причём ты своего непися можешь назвать как хочешь.От этого ничего не зависет.Я согласен с Finsternis,что нужно везде убрать *var int fortuno_einmal !
Попробуй сделать по примеру торговли Боспера:

instance DIA_Bosper_Trade(C_Info)
{
     npc = VLK_413_Bosper;
     nr = 700;
     condition = DIA_Bosper_Trade_Condition;
     information = DIA_Bosper_Trade_Info;
     permanent = TRUE;
     description = "Покажи мне свои товары.";
};


func int DIA_Bosper_Trade_Condition()
{
     if(MIS_Bosper_WolfFurs != LOG_Running)
     {
           DIA_Bosper_Trade.trade = TRUE;
     };
     return TRUE;
};

func void DIA_Bosper_Trade_Info()
{
     var int McBolzenAmount;
     var int McArrowAmount;
     AI_Output(other,self,"DIA_Bosper_Trade_15_00" );      //Покажи мне свои товары.
     if(DIA_Bosper_Trade.trade == TRUE)
     {
           B_GiveTradeInv(self);
           Npc_RemoveInvItems(self,ItRw_Bolt,Npc_HasItems(se lf,ItRw_Bolt));
           McBolzenAmount = Kapitel * 50;
           CreateInvItems(self,ItRw_Bolt,McBolzenAmount) ;
           Npc_RemoveInvItems(self,ItRw_Arrow,Npc_HasItems(s elf,ItRw_Arrow));
           McArrowAmount = Kapitel * 50;
           CreateInvItems(self,ItRw_Arrow,McArrowAmount) ;
     }
     else
     {
           AI_Output(self,other,"DIA_Bosper_Trade_11_01" );      //Ты здесь не для того, чтобы разглядывать мои товары, ты должен принести мне шкуры!
           AI_Output(self,other,"DIA_Bosper_Trade_11_02" );      //Так что берись за дело!
     };
};
Только вместо
func int DIA_Bosper_Trade_Condition()
{
     if(MIS_Bosper_WolfFurs != LOG_Running)
     {
           DIA_Bosper_Trade.trade = TRUE;
     };
     return TRUE;
};
поставь
func int DIA_Bosper_Trade_Condition()
{
return TRUE;
};
Вот это вообще убери
var int McBolzenAmount;
var int McArrowAmount;
Короче отредактируй диалог под свои нужды?

Добавление от 08/13/05, в 23:35:56
Первая часть вроде правильна,а во второй попробуй это
Попробуй такой диалог
instance DIA_fortuno_Trade(C_Info)
{
    npc = sek_6006_fortuno;
    nr = 700;
    condition = DIA_fortuno_Trade_Condition;
    information = DIA_fortuno_Trade_Info;
    permanent = TRUE;
    description = "Покажи мне свои товары.";
};


func int DIA_fortuno_Trade_Condition()
{
return TRUE;
};
func void DIA_fortuno_Trade_Info()
{
AI_Output(other,self,"DIA_fortunor_Trade_15_00");      //Покажи мне свои товары.
B_GiveTradeInv(self);
Точно не знаю правильно или нет,но попробуй!Потом скажи получилось или нет!
Ответить с цитированием
Старый 13.08.2005, 23:54   #730
Finsernis

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

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

2TSYLin:
Да, теперь я сто пудово уверен, что твоя ошибка заключается в повторном декларировании переменной FORTUNO_EINMAL. Просто удали ее описание в своем скрипте.

Если, вдруг, компилятор скажет вот так
STORY\DIALOGE\DIA_SEK_6006_FORTUNO.D: Unknown identifier  : FORTUNO_EINMAL
значит твоя переменная используется до описания или совсем не описана, тогда придется ее искать по всем файлам.
Но можно поступить хитрее - если она используется только в твоем скрипте переименуй ее и опиши в файле Story\Story_Globals.d

Должно, по идее, заработать.
Ответить с цитированием
Старый 14.08.2005, 12:54   #731
TSYLin

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

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

2DEDROIT: 2Finsternis:
Спасибо ребята, ох я и намучился с этим скриптом, но ошибок по нему больше не выдаёт, Секта близка к выздоровлению, и уже скоро начнётся обьединение с ТМ.

Добавление от 08/14/05, в 13:14:10
Помогите, что-то я совсем запутался, пишу что сделал.
1)Я хотел внести второго Фортуно в NPCGlobals, (из мода Секта)
2) Я внёс его под имя Fortuno_nw
а снизу подпиал то же самое что Fortuno_nw = SEK_6006_Fortuno_NW
3) Визде изменил SEK_6006_Fortuno на SEK_6006_Fortuno_NW
а именно:
в gothic.src
 папка NPC
 папка Dialoge
 Dia_SEK_6006_Fortuno_NW  В нём я болтающую НПС заменил на SEK_6006_Fortuno_NW

Но zSpy Выдаёт что именно в строке НПС ошибка
undeclared name
Помогите
Ответить с цитированием
Старый 14.08.2005, 15:05   #732
DEDROIT

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

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

2TSYLin:
1)Покожи скрипт SEK_6006_Fortuno_NW!
2)Если ты прописывал в NPC_Globals.d то там тоже нужно изменить на SEK_6006_Fortuno_NW
3)Так же нужно изменить и Startup.d,вот допустим у тебя было
Wld_InsertNpc * * * * * *(SEK_6006_Fortuno , ** * * * * *"NW_FARM1_OUT_01");
нужно изменить на это
Wld_InsertNpc * * * * * *(SEK_6006_Fortuno_NW, ** * * * * *"NW_FARM1_OUT_01");
Попробуй потом дай ответ!
И ещё ты как-то не удачно выбрал Fortuno_NW может лучше заменить на Fortuno1
Попробуй может чё получится!
Если так не получится то ты покажи скрипт и ошибку которая выдаёт програма!
И ещё у меня к тебе вопрос если ты хотел внести второго Фортуно,то зачем чёто изменять.Создал просто второй скрипт(незабудь изменить ID).Прописал где надо.Закомпелировал.И всё,вот тебе и второй фортуно!
Ответить с цитированием
Старый 14.08.2005, 17:06   #733
Finsernis

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

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

2TSYLin:
Попробуй создать скрипт:

instance SEK_30000_FORTUNO_NW(Npc_Default)
{
* * *id = 30000; \\ ID ЛЮБОГО непися, будь он в Минентале, Яркендаре, Хоринисе должно быть УНИКАЛЬНЫМ
* * *name[0] = "Фортуно";
* * *guild = GIL_None; \\ если у тебя не описана гильдия послушников в файле Guilds.d то лучше, пусть он будет без гильдии
* * *voice = 13;
* * *flags = 0;
* * *npcType = NPCTYPE_AMBIENT;
* * *B_SetAttributesToChapter (self, 1);
* * *aivar[AIV_IGNORE_Murder] = TRUE;
* * *aivar[AIV_IGNORE_Theft] = TRUE;
* * *aivar[AIV_IGNORE_Sheepkiller] = TRUE;
* * *fight_tactic = FAI_HUMAN_COWARD;
* * *EquipItem (self, ItMw_1h_Sld_Axe);
* * *B_CreateAmbientInv (self);
* * *B_SetNpcVisual (self, MALE, "Hum_Head_Bald", 8, 10, itar_nov_h);
* * *Mdl_SetModelFatness (self, 0);
* * *Mdl_ApplyOverlayMds (self, "Humans_Relaxed.mds");
* * *B_GiveNpcTalents (self);
* * *B_SetFightSkills (self, 20);
* * *daily_routine = rtn_start_30000;
};


func void rtn_start_30000 ()
{
* * *TA_Stand_Eating (5, 0, 11, 0, "NW_FARM3_OUT_06");
* * *TA_Smoke_Joint (11, 0, 24, 0, "NW_FARM3_OUT_06");
* * *TA_Pray_Sleeper (24, 0, 5, 0, "NW_FARM3_OUT_06");
};

В файле Story\Npc_Globals в начале файла напиши
var C_Npc FORTUNO_NW;

Далее найди в этом же файле функцию func void B_InitNpcGlobals() и после строк

if (Kapitel == 0)
* * *{
* * * * * *Kapitel = 1;
* * *};

напиши вот что:

FORTUNO_NW = Hlp_GetNpc (SEK_30000_FORTUNO_NW);

Далее в файле Story\Startup.d в функции
func void STARTUP_NewWorld_Part_GreatPeasant_01()

напиши вот что:
Wld_InsertNpc (SEK_30000_FORTUNO_NW, "FARM3");


Теперь самое ответственное: Файл DIA_sek_6006_fortuno.d переименуй в
DIA_ SEK_30000_FORTUNO_NW.d
и везде замени
npc = sek_6006_fortuno;
на
npc = SEK_30000_FORTUNO_NW;

Заключительный штрих – впиши в файл Gothic.scr строчки
DIA_ SEK_30000_FORTUNO_NW.d
SEK_30000_FORTUNO_NW.d


Если не получится то ты выдай кусок скрипта, где компилятор ругается и ошибку ZSpy.

Ответить с цитированием
Старый 14.08.2005, 19:42   #734
TSYLin

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

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

2Finsternis:
Всё, спасибо, разобрался на все 100%
Ответить с цитированием
Старый 14.08.2005, 23:22   #735
Finsernis

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

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

2TSYLin:
Всегда обращайся, поможем чем сможем!!! ;D

2ВСЕМ:
Кто знает, скажите пожалуйста: в каком файле описывается смена дня и ночи в Готе?

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

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

2Finsternis:
Кто знает, скажите пожалуйста: в каком файле описывается смена дня и ночи в Готе?
Это описано в движке, просто при наступлении определенного времени меняется освещение и прочее ::)
Отправить личное сообщение для Ответить с цитированием
Старый 15.08.2005, 10:09   #737
dixie

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

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

2Finsternis:
Не мог бы ты поделиться своим опытом в плане "Невидимых мясных жуков"
Очень мне понравилась такая фишка.
Очень просто ;) Создаем зверушку - бессмертного мясного жука-призрака размером 0.01 от обычного. Заметить его невозможно, можно только услышать его шуршание вблизи места, где он сидит :)
[pre]
prototype Mst_Default_HelperBug(C_Npc) {
     name[0] = "";
     guild = GIL_MEATBUG;
     flags = NPC_FLAG_IMMORTAL | NPC_FLAG_GHOST;
     level = 1;
     noFocus = 1;
     bodyStateInterruptableOverride = 1;
     attribute[ATR_STRENGTH] = 1;
     attribute[ATR_DEXTERITY] = 1;
     attribute[ATR_HITPOINTS_MAX] = 10;
     attribute[ATR_HITPOINTS] = 10;
     attribute[ATR_MANA_MAX] = 0;
     attribute[ATR_MANA] = 0;
     protection[PROT_BLUNT] = 0;
     protection[PROT_EDGE] = 0;
     protection[PROT_POINT] = 0;
     protection[PROT_FIRE] = 0;
     protection[PROT_FLY] = 0;
     protection[PROT_MAGIC] = 0;
     damagetype = DAM_EDGE;
     senses = SENSE_SMELL;
     senses_range = 0;
     aivar[AIV_MM_FollowInWater] = FALSE;
     start_aistate = ZS_MM_AllScheduler;
     aivar[AIV_MM_WuselStart] = OnlyRoutine;
     damage [DAM_INDEX_EDGE] = 0;
};

func void B_SetVisuals_HelperBug() {
     Mdl_SetVisual (self, "Meatbug.mds");
     Mdl_SetVisualBody (self, "Mbg_Body", DEFAULT, DEFAULT, "", DEFAULT, DEFAULT, -1);
     Mdl_SetModelScale (self, 0.01, 0.01, 0.01);
};

instance HelperBugBaumsaege(Mst_Default_HelperBug) {
     B_SetVisuals_HelperBug ();
     aivar[AIV_MM_REAL_ID] = ID_MEATBUG_BAUMSAEGE;
};
[/pre]

В ZS_MM_AllScheduler прописываем в самом начале:
[pre]
if ((self.guild == GIL_MEATBUG))
       {
           if (self.aivar[AIV_MM_REAL_ID] == ID_MEATBUG_BAUMSAEGE)
           {
                 AI_StartState (self, ZS_MM_Rtn_Baumsaege, 1, "");
                 return;
           }

[/pre]

Создаем ZS_MM_Rtn_Baumsaege.d и в нем пишем эту самую операцию:
[pre]
func void ZS_MM_Rtn_Baumsaege()
{
     Perception_Set_Helper_Rtn ();
     B_MM_DeSynchronize ();
     if (Hlp_StrCmp (Npc_GetNearestWP (self), self.wp) == FALSE)
     {
           AI_GotoWP (self, self.wp);
     };
};

var int SayOneTimeBaumsaege;

func int ZS_MM_Rtn_Baumsaege_Loop()
{
     if (Npc_GetStateTime(self) >= 5)
     {
           Npc_SetStateTime (self, 0);
           if (Npc_GetBodyState (hero) == BS_MOBINTERACT_INTERRUPT)
           {
                   var string DetMob;
                   DetMob = Npc_GetDetectedMob(hero);

                   if (Hlp_StrCmp (DetMob, "BAUMSAEGE"))
                 {
                       if (KnowHowToMakeArrows == TRUE)
                       {
                             B_GiveInvItems(self, hero, ItRw_Arrow, 1);
                       }
                       else
                       if (SayOneTimeBaumsaege == FALSE)
                       {
                               AI_PrintScreen ("Интересно - а что бы я мог так напилить?",
                                 -1, YPOS_ItemGiven, FONT_ScreenSmall, 2);
                               SayOneTimeBaumsaege = TRUE;
                       };
                 };
           };
     };
     return LOOP_CONTINUE;
};

func void ZS_MM_Rtn_Baumsaege_End()
{
};
[/pre]

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

Perception_Set_Helper_Rtn () здесь на всякий случай отрубает багу "органы чувств". Т.е.
[pre]
     Npc_PercDisable (self, PERC_ASSESSMAGIC);
     Npc_PercDisable (self, PERC_ASSESSDAMAGE);
       и.т.п.
[/pre]

Осталось только вставить наших багов рядом с бревнами:
[pre]
     Wld_InsertNpc (HelperBugBaumsaege, "NW_CITY_MERCHANT_SHOP01_FRONT_01");
     Wld_InsertNpc (HelperBugBaumsaege, "NW_CITY_POOR_SAW");
     Wld_InsertNpc (HelperBugBaumsaege, "NW_TAVERNE_03");
     Wld_InsertNpc (HelperBugBaumsaege, "NW_CITY_HABOUR_08");
     Wld_InsertNpc (HelperBugBaumsaege, "NW_CASTLEMINE_TROLL_04_C");
     Wld_InsertNpc (HelperBugBaumsaege, "NW_CASTLEMINE_TOWER__MOBSI");
     Wld_InsertNpc (HelperBugBaumsaege, "NW_BIGFARM_KITCHEN_OUT_01");
     Wld_InsertNpc (HelperBugBaumsaege, "NW_FARM3_STABLE_OUT_01");
     Wld_InsertNpc (HelperBugBaumsaege, "NW_FARM4_TILL");
[/pre]

Теперь при первой попытке попилить любое бревно в Хоринисе вылезет фраза "И чтобы я мог так напилить"?
После разговора с тем, кто учить пилить стрелы ставим KnowHowToMakeArrows в TRUE и теперь можно просто оставить ГГ пилить у ближайшего бревна, а самому пойти в магазин за пивом ;) Скорость невелика - за время похода он напилит 300-400 стрел.
И еще - если жук больше не нужен, можно его самоубить ;) Но делать это надо только в _End() функции. Если убить бага в _Loop(), то игра трапнется. Т.е., например:
[pre]
func int ZS_MM_Rtn_DropItem_Loop()
{
    if (Npc_GetStateTime(self) >= 2)
    {
         Npc_SetStateTime (self, 0);
         if (HeroHasAnItem)
         {
              if (Npc_HasItems (hero, ItKe_OC_Store) == 0)
              {
                   var c_npc own;
                   // кому пренадлежит комната, в которой ГГ?
                   own = Npc_GetPortalOwner(hero);
                   HeroHasAnItem = FALSE;
                   if (Hlp_IsValidNpc(own))
                   {
                        if (Hlp_GetInstanceID (own) == Hlp_GetInstanceID (Engor))
                        {
                             B_GivePlayerXP(XP_Ambient * 2);
                             if ((MIS_CassiaGoldCup == LOG_Running) ||
                               (MIS_CassiaGoldCup == LOG_Success))
                             {
                                  B_LogEntry (Topic_CassiaGoldCup,
                                    "Я подбросил ключ в комнату Энгора.");
                             };
                             // баг сделал дело, прекращаем цикл
                             return LOOP_END;
                        };
                   };
               };
         } else if (Npc_HasItems (hero, ItKe_OC_Store) >= 1)
         {
              HeroHasAnItem = TRUE;
         };
    };
    return LOOP_CONTINUE;
};


func void ZS_MM_Rtn_DropItem_End()
{
    self.flags = NPC_FLAG_GHOST;  // сбросим флаг бессмертия
    Npc_ChangeAttribute (self, ATR_HITPOINTS, -self.attribute[ATR_HITPOINTS_MAX]);
};
[/pre]
Ответить с цитированием
Старый 15.08.2005, 18:48   #738
Finsernis

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

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

2dixie:
Огромнейшее спасибо, посмотрим что получится...
Ответить с цитированием
Старый 16.08.2005, 14:19   #739
Otec_Levontiy

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

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

У меня такой вопрос. Я хочу сделать так, чтобы если ГГ попадает в триггер, то он превращается в падальщика. Триггер я поставил, написал функцию, если ГГ в триггере, то
Npc_SetActiveSpellInfo(self, Scavenger);// это я взял из скриптов свитков превращений
Но в игре у меня ГГ не превращается в падальщика :(
Что я сделал не так?
Ответить с цитированием
Старый 16.08.2005, 19:04   #740
dixie

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

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

2Отец Левонтий:
Я хочу сделать так, чтобы если ГГ попадает в триггер, то он превращается в падальщика.
Это не превращение - это установка инфы - в кого превращаться. Превращение жестко зашито в коде (и даже привязано к номерам заклинаний - т.е. нового заклинания не сделаешь). Превратиться можно только через кастование заклинания.
Ответить с цитированием
Старый 16.08.2005, 23:18   #741
Otec_Levontiy

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

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

Превращение жестко зашито в коде
В каком коде?
Превратиться можно только через кастование заклинания.
Значит мне остается только мечтать о моей идее?
Ответить с цитированием
Старый 16.08.2005, 23:26   #742
Finsernis

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

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

2Отец Левонтий:
У меня возникла та же проблема, только я хотел превратить ГГ в орка. В принципе я нашел выход из ситуации - я изменил гильдию, анимацию и визуализацию - почти все работает, только вот у орка почему-то видна только голова и часть левой руки, что не так, я не понял. :(

Кто сможет, подскажите пожалуйста.

Вот код скрипта "превращения":

*Npc_SetTrueGuild (self, *GIL_ORC);
*self.guild = *GIL_ORC;
*Mdl_SetVisual (self, "Orc.mds");
*Mdl_SetVisualBody (self, "Orc_BodyElite", DEFAULT, DEFAULT, "Orc_HeadWarrior", DEFAULT, DEFAULT, -1);

Я так подозреваю, что дело в меш модели ГГ - она не совпадает с моделью орка, поэтому все протекает немного коряво. :-/

Заранее спасибо за помощь. ;)
Ответить с цитированием
Старый 17.08.2005, 00:04   #743
dixie

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

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

2Отец Левонтий:
В каком коде?
В самой готике.
Значит мне остается только мечтать о моей идее?
Можешь попробовать как-ньть заклинание кастануть. Но, наверно, тоже не получится.
Ответить с цитированием
Старый 17.08.2005, 18:59   #744
BVPROGS

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

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

Господа!!! Кто нибудь знает как телепортировать NPC к главному герою где бы он не находился. Именно телепортировать а не использовать функцию например.
Wld_SpawnNpcRange(self,BVPROGS_777_IVAN,1,500);-> это фукция просто создаёт непися.
А вот эта по идее должна его телепортировать
AI_Teleport(BVPROGS_777_IVAN,pc_hero.wp);
Но почему то не телепортирует. Как командой узнать на каком месте находиться ГГ и телепортировать туда непися. :(
Ответить с цитированием
Старый 17.08.2005, 19:54   #745
Killer-XXX
Строители Миртаны
 
 
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
Killer-XXX вне форума

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

2BVPROGS:
Попробуй так:
AI_Teleport(BVPROGS_777_IVAN,hero.wp);
или
AI_Teleport(BVPROGS_777_IVAN,Npc_GetNearestWP(hero));
Ответить с цитированием
Старый 17.08.2005, 21:35   #746
BVPROGS

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

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

2Killer-XXX Огромное преогромное спасибо всё помогло непись телепортируется как надо.
Я уже думал, что моей мечте не суждено сбыться. Я уже несколько месяцев бьюсь над этой проблемой попутно делая что нибудь другое. То забрасываю то опять пытаюсь его телепортировать. И сюда я написал уже от отчаяния думал наврядли помогут, но мне помогли. СПАСИБО!!! СПАСИБО!!!
Ответить с цитированием
Старый 17.08.2005, 23:01   #747
Finsernis

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

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

Люди, столкнулся с такой вот проблемой!
Мне нужно сделать, чтобы ГГ упал, пролежал на земле некоторое время и потом встал, и чтоб при этом свет тух как в Кораблекрушении.
Я сначала хотел сделать по примеру кораблекрушения, но не нашел того что мне нужно.
Кто знает скажите пожалуйста.
Заранее очень благодарен.
Ответить с цитированием
Старый 18.08.2005, 10:03   #748
DEDROIT

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

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

2Finsternis:
Помнишь ты задавал вопрос связанный с орком!Так вот после этого я вспомнил мод бумшак
как же там то получилось неписю присвоить визуалицию орка!Я искал,но не нашёл где там находится файл PC_HERO.d.Я попытался сам присвоить визуалициб орка воина
изменил визуалицию нашего непися на это
Mdl_SetVisual(self,"Orc.mds");
     Mdl_SetVisualBody(self,"Orc_BodyWarrior",DEFAULT, DEFAULT,"Orc_HeadWarrior",DEFAULT,DEFAULT,-1);
Захожу в игру и я играю за орка и всё там налезает1
Так что попробуй вместо
Mdl_SetVisual (self, "Orc.mds");
Mdl_SetVisualBody (self, "Orc_BodyElite", DEFAULT, DEFAULT, "Orc_HeadWarrior", DEFAULT, DEFAULT, -1);
поставить это
Mdl_SetVisual(self,"Orc.mds");
     Mdl_SetVisualBody(self,"Orc_BodyWarrior",DEFAULT, DEFAULT,"Orc_HeadWarrior",DEFAULT,DEFAULT,-1);
Потому что может быть действительно элитного орка визуалиция не налезает,а вот орка воина нализает на все 100%!Так что попробуй!Удачи


Ответить с цитированием
Старый 18.08.2005, 11:06   #749
SATANIZMat

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

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

2DEDROIT:
Подожди, но в моде ведь можно поиграть и за элитника!
Как натянуть шкуру элитника тогда?
Ответить с цитированием
Старый 18.08.2005, 14:51   #750
DEDROIT

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

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

2SATANIZMatik:
Сейчас попробую и шкуру элитнека нацепить!Вечером дм ответ!

Добавление от 08/18/05, в 15:10:09
2SATANIZMatik:
C элитным орком тоже всё работает!Проверял!если не веришь то зайди в Gothic II\_work\Data\Scripts\Content\Story\NPC
в файл PC_Hero.d.И там измени вместо
Mdl_SetVisual(self,"HUMANS.MDS");
     Mdl_SetVisualBody(self,"hum_body_Naked0",9,0,"Hum _Head_Pony",Face_N_Player,0,NO_ARMOR);
на это
Mdl_SetVisual(self,"Orc.mds");
Mdl_SetVisualBody(self,"Orc_BodyElite",DEFAULT,DEF AULT,"Orc_HeadWarrior",DEFAULT,DEFAULT,-1);
Потом откомпилируй!Зайди в игру заного и смотри!

Добавление от 08/18/05, в 15:11:43
2Finsternis:
Не мог бы ты выложить весь скрипт,а не только код!
Ответить с цитированием
Старый 18.08.2005, 15:23   #751
Finsernis

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

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

2DEDROIT:

Да вот он весь скрипт:
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_ZOMBIE);
     self.guild =  GIL_ZOMBIE;
     Mdl_SetVisual (self, "Zombie.mds");
     Mdl_SetVisualBody (self, "Zom_Body", 0, 0, "Zom_Head", 1, 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);
};


Это только начало моей идеи, коли получится...
Ответить с цитированием
Старый 18.08.2005, 16:12   #752
DEDROIT

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

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

2Finsternis:
Ты же вроде хотел вставить элитного орка,а сейчас почему зомби!
Я попробывал вставить и элитного орка и шамана короче всех,но видны только одни головы!А если изменять в файле PC_HERO.d то всё нормально!Поидее нужно добавить для элитного орка B_SetVisuals_OrcElite();Чтобы было видно все части тела.Но почему то когдая это вставляю компилятор выдаёт ошибку!Попробуй может у тебя получится.Удачи.

Ответить с цитированием
Старый 18.08.2005, 16:27   #753
Vam

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

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

2DEDROIT:
Но почему то когдая это вставляю компилятор выдаёт ошибку!
Насчет ошибки поподробней можно.
Ответить с цитированием
Старый 18.08.2005, 16:48   #754
DEDROIT

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

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

2Vam:
Вот скрипт который я вставляю
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,D EFAULT,"Orc_HeadShaman",DEFAULT,DEFAULT,-1);
* * *B_SetVisuals_OrcShaman();
};
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:Unknown indetifier:B_SETVISUALS_ORCSHAMAN(line 474)...<zParser.cpp,#599>
Ответить с цитированием
Старый 18.08.2005, 17:02   #755
TSYLin

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

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

подскажите пожалуста что делать.

скрипт

func void B_PlayerFindItem(var int itm,var int amount)
{
     var string concatText;
     var string itemname;
     if(Npc_IsPlayer(self))
     {
           CreateInvItems(self,itm,amount);
           itemname = item.name;
           if(itm == ItMi_Gold)
           {
                 concatText = ConcatStrings(IntToString(amount),PRINT_GoldErhalt en);
                 Print(concatText);
                 Snd_Play("Geldbeutel");
           }
           else if(amount == 1)
           {
                 concatText = ConcatStrings(itemname,PRINT_Addon_erhalten);
                 Print(concatText);
           }
           else
           {
                 concatText = ConcatStrings(IntToString(amount),PRINT_ItemsErhal ten);
                 concatText = ConcatStrings(concatText," (");
                 concatText = ConcatStrings(concatText,itemname);
                 concatText = ConcatStrings(concatText,")");
                 Print(concatText);
           };
     };
};


компилятор пишет что Redefined identifier B_PlayerFindItem

Заранее спасибо.
Ответить с цитированием
Старый 18.08.2005, 17:07   #756
SATANIZMat

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

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

2DEDROIT:
Выложи 474 строчку своего файла. Ошибка в этой строке...
Попробуй
func void B_SetVisuals_OrcShaman()

Ответить с цитированием
Старый 18.08.2005, 17:07   #757
Vam

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

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

2DEDROIT:
А вот ошибка
00:01 Fatal:-1 U: PAR:ITEMS/IT_AMULETTE.D:Unknown indetifier:B_SETVISUALS_ORCSHAMAN(line 474)...<zParser.cpp,#599>
Всё дело в том, что твой скрипт находится в папке Items, которая компилится раньше, чем папка Story\NPC, где находится эта функция, нужно эту функцию перетащить в свой файл (один из способов)

Добавление от 08/18/05, в 17:11:35
2TSYLin:
компилятор пишет что Redefined identifier B_PlayerFindItem
Имя B_PlayerFindItem в твоих скриптах объявлено более одного раза, поищи и удали ненунжное, или замени на другое.
Ответить с цитированием
Старый 18.08.2005, 19:09   #758
Finsernis

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

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

Я столкнулся с новой проблемой.
Вот функции инициализации мира:

func void STARTUP_CASTLEOFVALKIRIES()
{
* * *Wld_InsertNpc (Guard_Brige_L, "D_BRCKE_L");
* * *Wld_InsertNpc (PC_Hero, "D_SP_01");
* * *Wld_InsertNpc (Guard_Brige_r, "D_BRCKE_R");
};


func void INIT_CASTLEOFVALKIRIES()
{
* * *B_InitMonsterAttitudes ();
* * *B_InitGuildAttitudes ();
* * *B_InitNpcGlobals ();
};

До того, как я вставил неписей Guard_Brige_L и Guard_Brige_r все работало замечательно – по крайней мере мир грузился. Теперь, когда я вставил стражей моста при начале новой игры комп виснет, приходится перегружать. Что не так, я не знаю, при компиляции ошибок нет.
Вот функции рутины моих стражей моста:

func void Rtn_Start_30000()
{
* * *TA_Guard_Passage (8, 0, 23, 0, "D_BRCKE_L");
* * *TA_Guard_Passage (23, 0, 8, 0, "D_BRCKE_L");
}; *

func void Rtn_Start_30001()
{
* * *TA_Guard_Passage (8, 0, 23, 0, "D_BRCKE_R");
* * *TA_Guard_Passage (23, 0, 8, 0, "D_BRCKE_R");
};


Рядом с вейпоинтом D_BRCKE_R поставил фрипоинт Guarding_Bridg_R, а рядом с D_BRCKE_L поставил Guarding_Bridg_L.

2DEDROIT:
Ты же вроде хотел вставить элитного орка,а сейчас почему зомби!

Просто я начинал с орка - не получилось, потом проверил на зомби - получилось, и я, видать, сохранился случайно.
Ответить с цитированием
Старый 18.08.2005, 20:36   #759
TSYLin

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

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

Ещё один вопрос, скопировал из Тёмного мага следущий скрипт


var int bad_ritual;

prototype DEFAULT_DARKMAGE(C_Npc)
{
* * *attribute[ATR_STRENGTH] = 10;
* * *aivar[REAL_STRENGTH] = 10;
* * *attribute[ATR_DEXTERITY] = 10;
* * *aivar[REAL_DEXTERITY] = 10;
* * *attribute[ATR_MANA_MAX] = 10;
* * *aivar[REAL_MANA_MAX] = 10;
* * *attribute[ATR_MANA] = 10;
* * *attribute[ATR_HITPOINTS_MAX] = 40;
* * *attribute[ATR_HITPOINTS] = 40;
* * *HitChance[NPC_TALENT_1H] = 0;
* * *HitChance[NPC_TALENT_2H] = 0;
* * *HitChance[NPC_TALENT_BOW] = 0;
* * *HitChance[NPC_TALENT_CROSSBOW] = 0;
* * *protection[PROT_EDGE] = 0;
* * *protection[PROT_BLUNT] = 0;
* * *protection[PROT_POINT] = 0;
* * *protection[PROT_FIRE] = 0;
* * *protection[PROT_MAGIC] = 0;
* * *damagetype = DAM_BLUNT;
* * *senses = SENSE_HEAR | SENSE_SEE;
* * *senses_range = PERC_DIST_ACTIVE_MAX;
* * *aivar[AIV_MM_FollowTime] = NPC_TIME_FOLLOW;
* * *aivar[AIV_FightDistCancel] = FIGHT_DIST_CANCEL;
* * *bodyStateInterruptableOverride = FALSE;
* * *guild = GIL_BAD;
* * *npcType = NPCTYPE_FRIEND;
* * *level = 50;
* * *voice = 4;
* * *flags = NPC_FLAG_IMMORTAL;
* * *B_SetAttributesToChapter(self,6);
* * *B_SetNpcVisual(self,MALE,"Hum_Head_Bald",Face_N_X ardas,BodyTex_N,ITAR_Xardas);
* * *Mdl_ApplyOverlayMds(self,"Humans_Mage.mds");
* * *Mdl_SetModelFatness(self,0);
* * *B_SetFightSkills(self,30);
* * *CreateInvItems(self,ItPo_Health_03,10);
* * *senses = SENSE_SEE | SENSE_SMELL;
* * *senses_range = 2000;
* * *fight_tactic = FAI_HUMAN_MASTER;
* * *aivar[AIV_IgnoresArmor] = TRUE;
* * *B_GiveNpcTalents(self);
* * *aivar[AIV_MagicUser] = MAGIC_ALWAYS;
* * *aivar[AIV_EnemyOverride] = TRUE;
};

instance BAD_9006_KRIEG(DEFAULT_DARKMAGE)
{
* * *name[0] = "Хранитель войны";
* * *id = 9006;
* * *daily_routine = rtn_start_9006;
};

instance BAD_9007_PEST(DEFAULT_DARKMAGE)
{
* * *name[0] = "Хранитель чумы";
* * *id = 9007;
* * *daily_routine = rtn_start_9007;
};

instance BAD_9008_HUNGER(DEFAULT_DARKMAGE)
{
* * *name[0] = "Хранитель голода";
* * *id = 9008;
* * *daily_routine = rtn_start_9008;
};

instance BAD_9009_TOD(DEFAULT_DARKMAGE)
{
* * *name[0] = "Хранитель смерти";
* * *id = 9009;
* * *daily_routine = rtn_start_9009;
};


func void rtn_start_9006()
{
* * *ta_hueter(0,0,12,0,"OC_RAMP_16");
* * *ta_hueter(12,0,0,0,"OC_RAMP_16");
};

func void rtn_nw_9006()
{
* * *ta_hueter(0,0,12,0,"NW_LITTLESTONEHENDGE");
* * *ta_hueter(12,0,0,0,"NW_LITTLESTONEHENDGE");
};

func void rtn_tot_9006()
{
* * *ta_hueter(0,0,12,0,"TOT");
* * *ta_hueter(12,0,0,0,"TOT");
};

func void rtn_start_9007()
{
* * *ta_hueter(0,0,12,0,"NW_CITY_KANAL_06");
* * *ta_hueter(12,0,0,0,"NW_CITY_KANAL_06");
};

func void rtn_ritual_9007()
{
* * *ta_hueter(0,0,12,0,"NW_LITTLESTONEHENDGE_02");
* * *ta_hueter(12,0,0,0,"NW_LITTLESTONEHENDGE_02");
};

func void rtn_start_9008()
{
* * *ta_hueter(0,0,12,0,"NW_FARM2_PATH_02");
* * *ta_hueter(12,0,0,0,"NW_FARM2_PATH_02");
};

func void rtn_ritual_9008()
{
* * *ta_hueter(0,0,12,0,"NW_LITTLESTONEHENDGE");
* * *ta_hueter(12,0,0,0,"NW_LITTLESTONEHENDGE");
};

func void rtn_start_9009()
{
* * *ta_hueter(0,0,12,0,"ADW_MINE_MC_01");
* * *ta_hueter(12,0,0,0,"ADW_MINE_MC_01");
};

func void rtn_nw_9009()
{
* * *ta_hueter(0,0,12,0,"NW_LITTLESTONEHENDGE_01");
* * *ta_hueter(12,0,0,0,"NW_LITTLESTONEHENDGE_01");
};

func void rtn_tot_9009()
{
* * *ta_hueter(0,0,12,0,"TOT");
* * *ta_hueter(12,0,0,0,"TOT");
};

func void zs_bad_routine()
{
* * *Perception_Set_Normal();
* * *AI_SetWalkMode(self,NPC_WALK);
* * *if(Npc_GetDistToWP(self,self.wp) > 1000)
* * *{
* * * * * *if(Npc_GetDistToNpc(self,hero) < 10000)
* * * * * *{
* * * * * * * * *AI_PlayAni(self,"T_RUN_2_MAG");
* * * * * * * * *AI_PlayAni(self,"T_MAG_2_MAGRUN");
* * * * * * * * *AI_PlayAni(self,"T_MAGRUN_2_HEASHOOT");
* * * * * * * * *Wld_PlayEffect("spellFX_Teleport",self,self,0,0,0 ,FALSE);
* * * * * *};
* * * * * *AI_Teleport(self,self.wp);
* * *};
* * *AI_GotoWP(self,self.wp);
* * *AI_AlignToWP(self);
};

func int zs_bad_routine_loop()
{
* * *var int randomMove;
* * *if(KENNT_STEINKREIS)
* * *{
* * * * * *if((((self.id == 9006) && Npc_KnowsInfo(hero,bad_krieg_speak)) || ((self.id == 9009) && Npc_KnowsInfo(hero,bad_tod_speak))) && (CurrentLevel != NEWWORLD_ZEN) && (Npc_GetDistToWP(self,"TOT") > 1000) && (self.aivar[AIV_INVINCIBLE] == FALSE))
* * * * * *{
* * * * * * * * *Npc_ExchangeRoutine(self,"Tot");
* * * * * * * * *return LOOP_END;
* * * * * *};
* * * * * *if((((self.id == 9006) && Npc_KnowsInfo(hero,bad_krieg_speak)) || ((self.id == 9009) && Npc_KnowsInfo(hero,bad_tod_speak))) && (CurrentLevel != NEWWORLD_ZEN) && (Npc_GetDistToWP(self,"TOT") <= 1000))
* * * * * *{
* * * * * * * * *self.flags = 0;
* * * * * * * * *Npc_ChangeAttribute(self,ATR_HITPOINTS,-self.attribute[ATR_HITPOINTS_MAX]);
* * * * * * * * *return LOOP_END;
* * * * * *};
* * * * * *if((self.id == 9007) && Npc_KnowsInfo(hero,bad_pest_speak) && (Npc_GetDistToWP(self,"NW_LITTLESTONEHENDGE_02") > 1000) && (self.aivar[AIV_INVINCIBLE] == FALSE))
* * * * * *{
* * * * * * * * *Npc_ExchangeRoutine(self,"Ritual");
* * * * * * * * *return LOOP_END;
* * * * * *};
* * * * * *if((self.id == 9008) && Npc_KnowsInfo(hero,bad_hunger_speak) && (Npc_GetDistToWP(self,"NW_LITTLESTONEHENDGE") > 1000) && (self.aivar[AIV_INVINCIBLE] == FALSE))
* * * * * *{
* * * * * * * * *Npc_ExchangeRoutine(self,"Ritual");
* * * * * * * * *return LOOP_END;
* * * * * *};
* * *};
* * *if((BAD_RITUAL == 1) && (self.id == 9006))
* * *{
* * * * * *Wld_PlayEffect("FX_EarthQuake",self,self,0,0,0,FA LSE);
* * * * * *AI_PlayAni(self,"T_PRACTICEMAGIC5");
* * * * * *Wld_PlayEffect("spellFX_INCOVATION_VIOLET",self,s elf,0,0,0,FALSE);
* * * * * *BAD_RITUAL = 2;
* * * * * *return LOOP_CONTINUE;
* * *};
* * *if((BAD_RITUAL == 2) && (self.id == 9007))
* * *{
* * * * * *AI_PlayAni(self,"T_PRACTICEMAGIC5");
* * * * * *Wld_PlayEffect("spellFX_INCOVATION_VIOLET",self,s elf,0,0,0,FALSE);
* * * * * *BAD_RITUAL = 3;
* * * * * *return LOOP_CONTINUE;
* * *};
* * *if((BAD_RITUAL == 3) && (self.id == 9008))
* * *{
* * * * * *AI_PlayAni(self,"T_PRACTICEMAGIC5");
* * * * * *Wld_PlayEffect("spellFX_INCOVATION_VIOLET",self,s elf,0,0,0,FALSE);
* * * * * *BAD_RITUAL = 4;
* * * * * *return LOOP_CONTINUE;
* * *};
* * *if((BAD_RITUAL == 4) && (self.id == 9009))
* * *{
* * * * * *Wld_PlayEffect("FX_EarthQuake",self,self,0,0,0,FA LSE);
* * * * * *AI_PlayAni(self,"T_PRACTICEMAGIC5");
* * * * * *Wld_PlayEffect("spellFX_INCOVATION_VIOLET",self,s elf,0,0,0,FALSE);
* * * * * *BAD_RITUAL = 5;
* * * * * *return LOOP_CONTINUE;
* * *};
* * *if(Npc_GetStateTime(self) > 5)
* * *{
* * * * * *randomMove = Hlp_Random(6);
* * * * * *if(randomMove == 0)
* * * * * *{
* * * * * * * * *AI_PlayAni(self,"R_LEGSHAKE");
* * * * * *};
* * * * * *if(randomMove == 1)
* * * * * *{
* * * * * * * * *AI_PlayAni(self,"R_SCRATCHLSHOULDER");
* * * * * *};
* * * * * *if(randomMove == 2)
* * * * * *{
* * * * * * * * *AI_PlayAni(self,"R_SCRATCHEGG");
* * * * * *};
* * * * * *if(randomMove == 3)
* * * * * *{
* * * * * * * * *AI_PlayAni(self,"R_SCRATCHHEAD");
* * * * * *};
* * * * * *if(randomMove == 4)
* * * * * *{
* * * * * * * * *AI_PlayAni(self,"R_SCRATCHRSHOULDER");
* * * * * *};
* * * * * *if(randomMove == 5)
* * * * * *{
* * * * * * * * *AI_PlayAni(self,"T_PRACTICEMAGIC");
* * * * * *};
* * * * * *Npc_SetStateTime(self,0);
* * *};
* * *return LOOP_CONTINUE;
};

func void zs_bas_routine_end()
{
};


zSpy пишет что unknown identifier ta_hueter

ожет быть надо где-нибудь что-нибудь прописать?

2Vam:
Большое спасибо
Ответить с цитированием
Старый 18.08.2005, 20:48   #760
Vam

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

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

2TSYLin:
ожет быть надо где-нибудь что-нибудь прописать?
Ты забыл взять из файла ..\AI\Human\TA.d функцию ta_hueter и переписать к себе.
Ответить с цитированием
Страница 19 из 65 « Первая 91213141516171819 2021222324252629 Последняя »


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

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

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

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


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

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

AGFC: Valley of Gothic © 2004-2020

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