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

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

Расширенный поиск
Старый 11.01.2007, 13:03   #1601
Roomper

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

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

Закончил перевод статьи “Синтаксис скриптового языка Daedalus”. Местами неточно, но в целом перевод неплохой. Кого заинтересовало, следуйте по ссылке:

-----------------------------------------
Синтаксис скриптового языка Daedalus
Размер: 15,4 Кб
скача
ть



Добавление от 01/11/07, в 12:23:41
У кого проблемы с закачкой файлов с сервера AxFile.com можете прочитать статью
здесь
Ответить с цитированием
Старый 11.01.2007, 14:51   #1602
marazmus
A.G.F.C.
 
Регистрация: 02.09.2005
Сообщений: 6
marazmus вне форума

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

Добавление от 01/11/07, в 12:23:41
У кого проблемы с закачкой файлов с сервера AxFile.com можете прочитать статью
здесь
Млин. Ссылка должна быть БЕЗ www!

П
равильная ссылка на статью-перевод
.
Отправить личное сообщение для Ответить с цитированием
Старый 06.02.2007, 03:05   #1603
NightRAVen88

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

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

Подскажите как здесь исправить ошибку (possible error, function should return value(line 12)):
Код:
func void zs_watchinextremo(){ * * *Perception_Set_Normal(); * * *AI_SetWalkMode(self,NPC_WALK); * * *AI_GotoWP(self,self.wp); * * *AI_AlignToWP(self); * * *AI_PlayAni(self,"T_STAND_2_CLAPHANDS");};func int zs_watchinextremo_loop(){ * * * *};func void zs_watchinextremo_end(){ * * *AI_PlayAni(self,"T_CLAPHANDS_2_STAND"); * * *AI_ContinueRoutine(self);};
Ответить с цитированием
Старый 06.02.2007, 03:20   #1604
B_Wolf

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

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

2NightRAVеn:
Подскажите как здесь исправить ошибку (possible error, function should return value(line 12)):
В нашем моде StrongHand сия функция выглядит так:

func void ZS_WatchInExtremo()
{
     Perception_Set_Normal();
     AI_SetWalkMode(self,NPC_WALK);
     AI_GotoWP(self,self.wp);
     AI_AlignToWP(self);
};

func int zs_WatchInExtremo_Loop()
{
     AI_PlayAni(self,"T_STAND_2_CLAPHANDS");
     return LOOP_END;
};

func void zs_WatchInExtremo_End()
{
     AI_PlayAni(self,"T_CLAPHANDS_2_STAND");
     AI_ContinueRoutine(self);
};

и люди хлопают :)
Ответить с цитированием
Старый 06.02.2007, 14:57   #1605
Xentar

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

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

2NightRAVеn:
Сделай, чтоб функция возвращала значение или скачай чистые скрипты для Г1 от Руссобита с моего сайта ;)
Ответить с цитированием
Старый 07.02.2007, 02:02   #1606
B_Wolf

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

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

2Etlendio:
Сделай, чтоб функция возвращала значение
Ну да, правильный и своевременный ответ :)
2Etlendio:
или скачай чистые скрипты для Г1 от Руссобита с моего сайта
А кто сказал, что разработка ведется на движке Г1, и приведенная функция в "чистых" скриптах без этой же ошибки? :)
NOTE: Функция Perception_Set_Normal(); используется в скриптах Г2а, и скорее всего приведенная функция была изъята из "читых" скриптов Г1 и портирована в проект Г2а.
Ответить с цитированием
Старый 22.02.2007, 18:18   #1607
Wormer

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

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

Ответте, пожалуйста, есть ли способ показать диалог или выполнить другое действие при активации MOBа, не изменяя файл world.zen в Готике 1.
Заранее спасибо.
Ответить с цитированием
Старый 27.02.2007, 16:06   #1608
Artem-modder

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

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

2Всем:
Я знаю что вопрос для вас наитупейший, и страшно ламерский, но мож подскажите тупому начинающему скриптеру как скомпелировать в GS 3.10 необходимые для работы мода файлы.Например:
Я создал свой мир и хочу вставить туда наёмника кое-как написанного мною, но не
знаю как...
По идее после этого должны вылезти Gothic.dat, OU.BIN, и GOTHIC.src, и если я
запакую их вместе с миром в *.mod то он должен начать работать, ведь так?

З.Ы. Подскажите несчастному ламеру, я ведь специализируюсь на спейсере и максе, и
в основном над мирами работаю и нифига не шарю в скриптинге, могу лишь кое-как
написать скрипт неписи...
Но начинать то надо с малого!  

2MaGoth:
Мир скорее как дополнение к Хоринису, точнее оттуда в него будет вести портал...,с ним будет связан сюжет мода...
Я вот думаю сделать чтоб в гавани Хориниса появился чел, который
как бы "отвозил" туда ГГ на лодке, но я не знаю как активировать смену левела с помощью скрипта, да и не умею я диалоги делать...
Ответить с цитированием
Старый 27.02.2007, 17:32   #1609
MaGoth
A.G.F.C.
  Аватар для MaGoth
 
Регистрация: 04.09.2006
Сообщений: 20
MaGoth вне форума

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

2Злой творец:

Как встывлять непесей в мир я тебе уже ответил.
И еще небольшое дополнение по вставке в новый мир непесей.
Тебе нужно прописать мир в скриптах.
А именно:
[spoiler]
1) В файле Startup.d пишем в конце новую функцию:

func void STARTUP_НАЗВАНИЕ_ТВОЕГО_ФАЙЛА_МИРА()
{
Здесь прописываем непесей которые должны грузится в мир изначально, те которые будут вставлятся позже пишем в файлах диалогов соответствующих непесей.
ПРИМЕР:
...
* * *Wld_InsertNpc(DJG_373_Stracha,"TW_CAMPHUNTER_ENTR ANCE_01");
* * *Wld_InsertNpc(DJG_6030_Oxotnic,"TW_CAMPHUNTER_STR EET_05");
* * *Wld_InsertNpc(DJG_6031_Oxotnic,"TW_OXRANAMIDLASA_ 1");
* * *Wld_InsertNpc(DJG_374_Stracha,"TW_CAMPHUNTER_ENTR ANCE_02");
...

};

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

func void INIT__НАЗВАНИЕ_ТВОЕГО_ФАЙЛА_МИРА()
{
* *B_InitMonsterAttitudes();
* *B_InitGuildAttitudes();
* *B_InitNpcGlobals();
};

После этого сограняем внесенные изменения, и компилим скрипты. новые dat и Ou файлы копируем куда нуна и тестим мир. :)))


2) Теперь по тому как попасть в новый мир:

- Для этого нужно использовать триггеры.
- Триггеры создаются в спейсере, и прописываются в скриптах, об этом подробно написано на сайте кaмрада basilio58.

Удачи... ;)
[/spoiler]
Отправить личное сообщение для Ответить с цитированием
Старый 27.02.2007, 19:20   #1610
Artem-modder

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

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

2MaGoth:
Я знаю как вставить непися в мир:), я не знаю как скомпелировать все необходимые для мода скрипты в компиляторе Вама, при создании нового решения пишет цитирую:

"Не удаётся скопировать файл.Указано неправильное или слишком длинное имя файла.
Задайте другое имя."

Наверно я в проге Вама что-то неправильно делаю т.к. незнаком с ней может ты обьяснишь бестолковому правильную последовательность действий при компиляции в Gthic Sourcer 3.10,а? Глядишь и научусь я работать не только с мирами, но и в
вашем "измерении":) что достаточно тяжело...

В спейсере я компилить и не пытаюсь т.к. всё повисает, а через готик-стартер
для мода скрипты не скомпелировать...
Ответить с цитированием
Старый 28.02.2007, 10:16   #1611
Vam

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

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

2Злой творец:
Я знаю как вставить непися в мир, я не знаю как скомпелировать все необходимые для мода скрипты в компиляторе Вама, при создании нового решения пишет цитирую:
"Не удаётся скопировать файл.Указано неправильное или слишком длинное имя файла.
Задайте другое имя."
Сначала внимательно прочитай manual_ru.doc, далее - используй версию 3.11, если хорошо не знаешь программу - не меняй установки по-умолчанию, и никогда не используй в именах файлов и папок русские символы.
Ответить с цитированием
Старый 03.04.2007, 15:43   #1612
DimonKDF

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

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

Подскажите как исправить ошибку: неизвестный идентификатор ELSE
Код:
func void samuel_hi_info(){      AI_Output(other,self,"Samuel_Hi_11_1");      //Sei gegrьЯt, ehrwьrdiger Magier!      hero.guild = GIL_None;      else      {            AI_Output(self,other,"Samuel_Hi_11_2");      //Nicht so schьchtern! Ich bin Samuel, der oberste Waldmagier!            AI_Output(self,other,"Samuel_Hi_11_3");      //Aha, du bist also der Neue... Ich kann dich in die sechs Kreise der Magie einfьhren wenn du ein Magier bist.      };};
Ответить с цитированием
Старый 03.04.2007, 16:53   #1613
MaGoth
A.G.F.C.
  Аватар для MaGoth
 
Регистрация: 04.09.2006
Сообщений: 20
MaGoth вне форума

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

2DimonKDF:

Подскажите как исправить ошибку: неизвестный идентификатор ELSE
Все правильно там и будет ошибка, условие Else не может быть отдельно от блока If, а у тебя он отсутствует..

Пример:
Код:
func void samuel_hi_info(){     If (нужное условие)     {           выполеняется при верном условии     }     else     {           выполеняется при верном условии     };};
Или так:
Код:
func void samuel_hi_info(){     If (нужное условие)     {           выполеняется при верном условии     }     Else If (нужное условие)     {           выполеняется при верном условии     }     Else If (нужное условие)     {           выполеняется при верном условии     }     else     {           выполеняется при верном условии     };};

Данного построения блока условий в приведенной тобой функции нет, отсюда и ошибка..

И еще отпиши:
Что за мод, и откуда?
В какой проге работаешь версию..  ;)
Отправить личное сообщение для Ответить с цитированием
Старый 07.04.2007, 12:00   #1614
John_White

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

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

2ALL:
Прошу укажите мне изменения в датнике от Г1, которые позволяют активировать концерт в Старом Лагере!
(что точно и в каких д-файлах!)
Ответить с цитированием
Старый 07.04.2007, 15:25   #1615
B_Wolf

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

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

2John White:
Прошу укажите мне изменения в датнике от Г1, которые позволяют активировать концерт в Старом Лагере!
2 года назад на самой первой странице темы нашего разрабатываемого мода был описан этот процесс : http://forums.gothic.ag/showthread.php?&s=35&t=1113515834&start=0

кроме описанного там, стоит уделить внимание диалогу рудокопа Гримма...
dia_vlk_580_grim.d
Cпойлер(щелкните, чтобы прочесть):

instance DIA_Grim_INEXTREMO(C_Info)
{
     npc = Vlk_580_Grim;
     nr = 1;
     condition = DIA_Grim_INEXTREMO_Condition;
     information = DIA_Grim_INEXTREMO_Info;
     permanent = 0;
     important = 1;
};


func int DIA_Grim_INEXTREMO_Condition()
{
     if(Kapitel == 2)
     {
           return TRUE;
     };
     return FALSE;

};

func void DIA_Grim_INEXTREMO_Info()
{
     AI_Output(self,other,"DIA_Grim_INEXTREMO_06_0 1");      //Эй, слышал новости?
     AI_Output(self,other,"DIA_Grim_INEXTREMO_06_0 2");      //In Extremo здесь! Они там, на сцене.
     AI_Output(self,other,"DIA_Grim_INEXTREMO_06_0 3");      //Торопись, а то пропустишь все интересное!
     Npc_ExchangeRoutine(self,"InExtremo");
     AI_StopProcessInfos(self);
};


instance DIA_Grim_INEXTREMOAWAY(C_Info)
{
     npc = Vlk_580_Grim;
     nr = 1;
     condition = DIA_Grim_INEXTREMOAWAY_Condition;
     information = DIA_Grim_INEXTREMOAWAY_Info;
     permanent = 0;
     description = "Где In Extremo?";
};


func int DIA_Grim_INEXTREMOAWAY_Condition()
{
     if(Npc_KnowsInfo(hero,DIA_Grim_INEXTREMO) && (Kapitel == 3))
     {
           return TRUE;
     };
     return FALSE;

};

func void DIA_Grim_INEXTREMOAWAY_Info()
{
     AI_Output(hero,self,"DIA_Grim_INEXTREMOAWAY_15_01 ");      //Где In Extremo?
     AI_Output(self,hero,"DIA_Grim_INEXTREMOAWAY_06_02 ");      //Они уехали. Жаль, я уже привык проводить вечера перед сценой.
     AI_StopProcessInfos(self);
};

Ответить с цитированием
Старый 10.04.2007, 12:56   #1616
DimonKDF

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

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

Плиз, скажите как исправить ошибку: неизвестный идентификатор |
Код:
func void b_magicarrow(var C_Npc oth,var C_Npc slf){      var int magiecounter;      var C_Item othweapinhand1;      magiecounter = Hlp_Random(100);      if(Npc_HasReadiedRangedWeapon(other) && (MAGIEZUWEISUNG == FALSE) && Npc_IsPlayer(oth))      {            othweapinhand1 = Npc_GetReadiedWeapon(other);            MAGIEZUWEISUNG = TRUE;      };      if((MAGIEZUWEISUNG == TRUE) && (othweapinhand1.munition == ItRw_Addon_MagicArrow) && (MAGIESCHADEN == FALSE))      {            MAGIESCHADEN = TRUE;            MAGIEZUWEISUNG = FALSE;      };      if((MAGIESCHADEN == TRUE) && (magiecounter <= 35))      {            Wld_PlayEffect("spellFX_Fear",slf,slf,0,0,0,FALSE);            slf.aivar[AIV_MM_REAL_ID] = ID_GOBBO_SKELETON;             || (slf.aivar[AIV_MM_REAL_ID] == ID_SKELETON) || (slf.aivar[AIV_MM_REAL_ID] == ID_ZOMBIE);            if()            {                  slf.attribute[ATR_HITPOINTS] = slf.attribute[ATR_HITPOINTS] - 35;            }            else            {                  slf.attribute[ATR_HITPOINTS] = slf.attribute[ATR_HITPOINTS] - 25;            };            MAGIEZUWEISUNG = FALSE;            MAGIESCHADEN = FALSE;            if(slf.attribute[ATR_HITPOINTS] < 1)            {                  B_GivePlayerXP(slf.level * 10);            };      }      else      {            MAGIEZUWEISUNG = FALSE;      };};
Ответить с цитированием
Старый 10.04.2007, 16:03   #1617
Vam

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

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

2DimonKDF:
Правильно будет так:
if( (slf.aivar[AIV_MM_REAL_ID] == ID_SKELETON) || (slf.aivar[AIV_MM_REAL_ID] == ID_ZOMBIE) )
{
    slf.attribute[ATR_HITPOINTS] = slf.attribute[ATR_HITPOINTS] - 35;
}
Ответить с цитированием
Старый 11.04.2007, 16:58   #1618
DimonKDF

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

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

Соурсер пишет: нельзя преобразовать тип int в instance *
Код:
func void DIA_Addon_Ramon_FirstWarn_Info(){ * * *=>if(Npc_HasItems(other,itwr_anfangsbrief >= 1) && (SCHATTEN == TRUE)) * * *{ * * * * * *AI_Output(self,other,"DIA_Addon_Ramon_FirstWarn_07_00"); * * *//Wie ich sehe, gehцrst du den Schatten an! * * * * * *AI_Output(other,self,"DIA_Addon_Ramon_FirstWarn_15_01"); * * *//(grinst) * * * * * *AI_Output(self,other,"DIA_Addon_Ramon_FirstWarn_07_02"); * * *//Das ist aber immer noch kein Grund, dich einfach so ins Lager zu lassen! Du brauchst Mogambos Erlaubnis. * * * * * *AI_Output(other,self,"DIA_Addon_Ramon_FirstWarn_15_03"); * * *//Ich habe hier ein Schreiben von Dexter.. * * * * * *AI_Output(self,other,"DIA_Addon_Ramon_FirstWarn_07_04"); * * *//Zeig her.. * * * * * *B_GiveInvItems(other,self,itwr_anfangsbrief,1); * * * * * *B_UseFakeScroll(); * * * * * *AI_Output(self,other,"DIA_Addon_Ramon_FirstWarn_15_05"); * * *//Ok, jetzt kann ich dich ins Lager reinlassen! * * * * * *AI_Output(self,other,"DIA_Addon_Ramon_FirstWarn_15_06"); * * *//Willkommen im Lager! Komm aber ja nicht auf die Idee Дrger zu machen! * * * * * *B_GiveInvItems(self,other,itwr_anfangsbrief,1); * * * * * *self.aivar[AIV_PASSGATE] = TRUE; * * * * * *Player_HasTalkedToBanditCamp = TRUE; * * * * * *B_GivePlayerXP(XP_Addon_Hinein); * * * * * *AI_StopProcessInfos(self); * * * * * *AI_Teleport(Carlos,"BL_WAIT_FINN"); * * * * * *B_StartOtherRoutine(Carlos,"START"); * * * * * *B_StartOtherRoutine(Finn,"START"); * * *} * * *else if(Ramon_News == FALSE) * * *{ * * * * * *AI_Output(self,other,"DIA_Addon_Ramon_FirstWarn_07_12"); * * *//Hey, was willst du? Kann mir nicht vorstellen, dass du 'ne Erlaubnis fьr's Lager hast. * * * * * *AI_Output(other,self,"DIA_Addon_Ramon_FirstWarn_jo_15_13"); * * *//Ich wurde von Dexter beauftragt Raven und seine Leute zu helfen! * * * * * *AI_Output(self,other,"DIA_Addon_Ramon_FirstWarn_jo_07_14"); * * *//Ach was? Dann gib' mir ein Beweis! * * * * * *AI_Output(other,self,"DIA_Addon_Ramon_FirstWarn_jo_07_15"); * * *//Ich hatte ein Schreiben von Dexter, aber den hat jetzt Mogambo! * * * * * *AI_Output(self,other,"DIA_Addon_Ramon_FirstWarn_jo_07_16"); * * *//Dann hol' den und verschwende nicht meine Zeit! * * * * * *Ramon_News = TRUE; * * *} * * *else * * *{ * * * * * *AI_Output(self,other,"DIA_Addon_Ramon_FirstWarn_07_19"); * * *//Hey, langsam! Du kommst nicht rein - also verschwinde! * * * * * *AI_StopProcessInfos(self); * * *}; * * *other.aivar[AIV_LastDistToWP] = Npc_GetDistToWP(other,BDT_1071_Checkpoint); * * *self.aivar[AIV_Guardpassage_Status] = GP_FirstWarnGiven;};
Ответить с цитированием
Старый 12.04.2007, 01:59   #1619
B_Wolf

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

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

2DimonKDF:
Соурсер пишет: нельзя преобразовать тип int в instance  
Какая странная запись...
2DimonKDF:
=>if(Npc_HasItems(other,itwr_anfangsbrief >= 1) && (SCHATTEN == TRUE))
такой вариант более приемлим:
if(Npc_HasItems(other,itwr_anfangsbrief) >= 1) && (SCHATTEN == TRUE)
Ответить с цитированием
Старый 28.04.2007, 21:43   #1620
Innos-vs-Beliar

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

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

Хелло. У меня тут проблема. Создал инстанцию где НПС учит ГГ силе и ловкости. Проблема тут только - Когда нажимаю у себя +1 Сила или +1 Ловкость, то всё нормально - всмысле очков не хватает и так далее. А вот если на +5 нажать то у меня улучшается навык, даже если очков не хватает. Плюс жуткий глюк. После такого приёма у меня в инфе где Очки обучения вместо "0" очков опыта где-то "434564644646..." вот столько. Выглядит страшно!

Вот скрипт-инстанция:
Код:
 instance Info_DARLOC_TEACHME(C_Info){ * * *npc = non_5_darloc; * * *nr = 3; * * *condition = Info_darloc_teachme_condition; * * *information = Info_darloc_teachme_info; * * *permanent = 1; * * *description = "Обучи меня.";};func int Info_darloc_teachme_condition(){ * * *if((DARLOC_TEACH == TRUE) && Npc_KnowsInfo(hero,dia_darloc_youcanteachme)) * * *{ * * * * * *return 1; * * *};};var int darloc_merke_str;var int darloc_merke_dex;func void Info_darloc_teachme_info(){ * * *AI_Output(hero,self,"Info_darloc_Teach_15_00"); * * *//Обучи меня. * * *DARLOC_MERKE_STR = hero.attribute[ATR_STRENGTH]; * * *DARLOC_MERKE_DEX = hero.attribute[ATR_DEXTERITY]; * * *Info_ClearChoices(Info_darloc_teachme); * * *Info_AddChoice(Info_darloc_teachme,DIALOG_BACK,Info_darloc_teachme_back); * * *Info_AddChoice(Info_darloc_teachme,B_BuildLearnString(NAME_LearnStrength_5,5 * LPCOST_ATTRIBUTE_STRENGTH,0),Info_Darloc_TeachMe_str_5); * * *Info_AddChoice(Info_darloc_teachme,B_BuildLearnString(NAME_LearnStrength_1,LPCOST_ATTRIBUTE_STRENGTH,0),Info_Darloc_TeachMe_str_1); * * *Info_AddChoice(Info_darloc_teachme,B_BuildLearnString(NAME_LearnDexterity_5,5 * LPCOST_ATTRIBUTE_DEXTERITY,0),Info_Darloc_TeachMe_dex_5); * * *Info_AddChoice(Info_darloc_teachme,B_BuildLearnString(NAME_LearnDexterity_1,LPCOST_ATTRIBUTE_DEXTERITY,0),Info_Darloc_TeachMe_dex_1);};func void Info_darloc_teachme_back(){ * * *if(DARLOC_MERKE_STR < hero.attribute[ATR_STRENGTH]) * * *{ * * * * * *AI_Output(self,hero,"Info_darloc_teachme_BACK_11_00"); * * *//Твои мускулы окрепли! * * *}; * * *if(DARLOC_MERKE_DEX < hero.attribute[ATR_DEXTERITY]) * * *{ * * * * * *AI_Output(self,hero,"Info_darloc_teachme_BACK_11_01"); * * *//Ты стал более проворнее и ловче. * * *}; * * *AI_Output(self,hero,"Info_darloc_teachme_BACK_11_02"); * * *//Заходи еще, тебе нужно окрепнуть. * * *Info_ClearChoices(Info_darloc_teachme);};func void Info_Darloc_TeachMe_STR_1(){ * * *B_BuyAttributePoints (hero, ATR_STRENGTH, LPCOST_ATTRIBUTE_STRENGTH); * * *Info_ClearChoices (Info_Darloc_TeachMe); * * *Info_AddChoice (Info_Darloc_TeachMe, DIALOG_BACK, Info_Darloc_TeachMe_BACK); * * *Info_AddChoice (Info_Darloc_TeachMe, B_BuildLearnString (NAME_LearnStrength_5, 5 * LPCOST_ATTRIBUTE_STRENGTH, 0), Info_Darloc_TeachMe_STR_5); * * *Info_AddChoice (Info_Darloc_TeachMe, B_BuildLearnString (NAME_LearnStrength_1, LPCOST_ATTRIBUTE_STRENGTH, 0), Info_Darloc_TeachMe_STR_1); * * *Info_AddChoice (Info_Darloc_TeachMe, B_BuildLearnString (NAME_LearnDexterity_5, 5 * LPCOST_ATTRIBUTE_DEXTERITY, 0), Info_Darloc_TeachMe_DEX_5); * * *Info_AddChoice (Info_Darloc_TeachMe, B_BuildLearnString (NAME_LearnDexterity_1, LPCOST_ATTRIBUTE_DEXTERITY, 0), Info_Darloc_TeachMe_DEX_1);};func void Info_Darloc_TeachMe_STR_5(){ * * *B_BuyAttributePoints (hero, ATR_STRENGTH, 5 * LPCOST_ATTRIBUTE_STRENGTH); * * *Info_ClearChoices (Info_Darloc_TeachMe); * * *Info_AddChoice (Info_Darloc_TeachMe, DIALOG_BACK, Info_Darloc_TeachMe_BACK); * * *Info_AddChoice (Info_Darloc_TeachMe, B_BuildLearnString (NAME_LearnStrength_5, 5 * LPCOST_ATTRIBUTE_STRENGTH, 0), Info_Darloc_TeachMe_STR_5); * * *Info_AddChoice (Info_Darloc_TeachMe, B_BuildLearnString (NAME_LearnStrength_1, LPCOST_ATTRIBUTE_STRENGTH, 0), Info_Darloc_TeachMe_STR_1); * * *Info_AddChoice (Info_Darloc_TeachMe, B_BuildLearnString (NAME_LearnDexterity_5, 5 * LPCOST_ATTRIBUTE_DEXTERITY, 0), Info_Darloc_TeachMe_DEX_5); * * *Info_AddChoice (Info_Darloc_TeachMe, B_BuildLearnString (NAME_LearnDexterity_1, LPCOST_ATTRIBUTE_DEXTERITY, 0), Info_Darloc_TeachMe_DEX_1);};func void Info_Darloc_TeachMe_DEX_1(){ * * *B_BuyAttributePoints (hero, ATR_DEXTERITY, LPCOST_ATTRIBUTE_DEXTERITY); * * *Info_ClearChoices (Info_Darloc_TeachMe); * * *Info_AddChoice (Info_Darloc_TeachMe, DIALOG_BACK, Info_Darloc_TeachMe_BACK); * * *Info_AddChoice (Info_Darloc_TeachMe, B_BuildLearnString (NAME_LearnStrength_5, 5 * LPCOST_ATTRIBUTE_STRENGTH, 0), Info_Darloc_TeachMe_STR_5); * * *Info_AddChoice (Info_Darloc_TeachMe, B_BuildLearnString (NAME_LearnStrength_1, LPCOST_ATTRIBUTE_STRENGTH, 0), Info_Darloc_TeachMe_STR_1); * * *Info_AddChoice (Info_Darloc_TeachMe, B_BuildLearnString (NAME_LearnDexterity_5, 5 * LPCOST_ATTRIBUTE_DEXTERITY, 0), Info_Darloc_TeachMe_DEX_5); * * *Info_AddChoice (Info_Darloc_TeachMe, B_BuildLearnString (NAME_LearnDexterity_1, LPCOST_ATTRIBUTE_DEXTERITY, 0), Info_Darloc_TeachMe_DEX_1);};func void Info_Darloc_TeachMe_DEX_5(){ * * *B_BuyAttributePoints (hero, ATR_DEXTERITY, 5 * LPCOST_ATTRIBUTE_DEXTERITY); * * *Info_ClearChoices (Info_Darloc_TeachMe); * * *Info_AddChoice (Info_Darloc_TeachMe, DIALOG_BACK, Info_Darloc_TeachMe_BACK); * * *Info_AddChoice (Info_Darloc_TeachMe, B_BuildLearnString (NAME_LearnStrength_5, 5 * LPCOST_ATTRIBUTE_STRENGTH, 0), Info_Darloc_TeachMe_STR_5); * * *Info_AddChoice (Info_Darloc_TeachMe, B_BuildLearnString (NAME_LearnStrength_1, LPCOST_ATTRIBUTE_STRENGTH, 0), Info_Darloc_TeachMe_STR_1); * * *Info_AddChoice (Info_Darloc_TeachMe, B_BuildLearnString (NAME_LearnDexterity_5, 5 * LPCOST_ATTRIBUTE_DEXTERITY, 0), Info_Darloc_TeachMe_DEX_5); * * *Info_AddChoice (Info_Darloc_TeachMe, B_BuildLearnString (NAME_LearnDexterity_1, LPCOST_ATTRIBUTE_DEXTERITY, 0), Info_Darloc_TeachMe_DEX_1);};
Ответить с цитированием
Старый 28.04.2007, 23:33   #1621
marazmus
A.G.F.C.
 
Регистрация: 02.09.2005
Сообщений: 6
marazmus вне форума

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

Похожий глюк был с декомпилятором версии ниже, чем 3.13, для скриптов обучения в Готике 1. Не помню уже, как с Г2а, но если там в цепочке расчета и начисления атрибутов есть оператор ! (логическое НЕ), то скорее всего та же проблема. Глюк не в твоем скрипте, а в функции B_BuyAttributePoints и далее по цепочке.
Отправить личное сообщение для Ответить с цитированием
Старый 29.04.2007, 01:46   #1622
MaGoth
A.G.F.C.
  Аватар для MaGoth
 
Регистрация: 04.09.2006
Сообщений: 20
MaGoth вне форума

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

2marazmus:
Да это так, но есть один момент, как я понял Седрик работает со скриптами Готы 1, Г2 здесь не причем.

2Седрик:
С какой версией декомпиллятора Вама работаешь ?
Если декомпиллятор у тебя ниже версии 3.13, то смотри в Теме "Докомпиллятор скриптов Готики", пост камрада Ukur'a, на последних страничках с исправлением данного бага.  ;)
Отправить личное сообщение для Ответить с цитированием
Старый 29.04.2007, 11:36   #1623
John_White

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

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

Такой-вот вопрос:
Прокомментируте каждую строку в скрипте:
Скрипт НПС:
Код:
instance PAL_299_Sergio(Npc_Default){      name[0] = "Сержио"; - имя      guild = GIL_PAL; - гильдия      id = 299; - номер      voice = 4; -голос      flags = 0;      npcType = npctype_main; - основной класс НПС      B_SetAttributesToChapter (self, 4);      fight_tactic = FAI_HUMAN_STRONG; - тактика боя      EquipItem (self, ItMw_2h_Pal_Sword); - одетое оружие      B_CreateAmbientInv (self);      CreateInvItems (self, ItKe_Innos_MIS, 1); - предмет инвенторя      CreateInvItems (self, ItPo_Health_02, 4); - предмет инвенторя      B_SetNpcVisual (self, MALE, "Hum_Head_Fighter", Face_N_Normal_Erpresser, BodyTex_N, ItAr_PAL_M); - визуальные данные      Mdl_SetModelFatness (self, 0); - полнота      Mdl_ApplyOverlayMds (self, "Humans_Militia.mds"); - модель НПС      B_GiveNpcTalents (self);      B_SetFightSkills (self, 65);      daily_routine = Rtn_Start_299;};
Скрипт оружия:
Код:
instance ItMw_1h_Pal_Sword(C_Item){      name = "Меч паладина"; - название      mainflag = ITEM_KAT_NF;      flags = ITEM_SWD;      material = MAT_METAL; - материал      value = Value_PalSchwert;       damageTotal = Damage_PalSchwert;      damagetype = DAM_EDGE;      range = Range_PalSchwert;      cond_atr[2] = ATR_STRENGTH;      cond_value[2] = Condition_PalSchwert;      visual = "ItMw_030_1h_PAL_Sword_02.3DS"; - модель      description = name; - имя в инвентаре      text[2] = NAME_Damage;      count[2] = damageTotal;      text[3] = NAME_Str_needed;      count[3] = cond_value[2];      text[4] = NAME_OneHanded;      text[5] = NAME_Value;      count[5] = value;};
Ответить с цитированием
Старый 29.04.2007, 13:12   #1624
MaGoth
A.G.F.C.
  Аватар для MaGoth
 
Регистрация: 04.09.2006
Сообщений: 20
MaGoth вне форума

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

2John White:

А тотуры лень прочитать?
Зайди на WOG.ru или унас на сайте команды глянь там данные скрипты расписаны,  и вообще если полез в модостроение, то обзавелся бы для начала ТОТУРОМ Vam'a, почитал бы его а потом спрашивал что не понятно, если вопросы остануться.  ;D
Отправить личное сообщение для Ответить с цитированием
Старый 29.04.2007, 14:27   #1625
John_White

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

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

2MaGoth:
Ты знаешь - спасибо! Помогло решить много вопросов!
Остался только один: можно ли переносить мэши из Г1 в Г2а, например - оружие?
Ответить с цитированием
Старый 29.04.2007, 17:45   #1626
Innos-vs-Beliar

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

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

2MaGoth:
У меня версия 3.13.
2marazmus:
Хмм. Возможно. Надо будет проверить его.
Если сможешь, скажи, что не так в скрипте. У меня Г1. МаГот прав
Вот скрипт B_BuyAttributePoints:
Код:
 func void B_BuyAttributePoints(var C_Npc typ,var int atr,var int AtrPlus){      var int Typ_Atr;      var string AtrPlusSTRING;      var string PrintSTRING;      if(atr == ATR_STRENGTH)      {            Typ_Atr = typ.attribute[ATR_STRENGTH];      }      else if(atr == ATR_DEXTERITY)      {            Typ_Atr = typ.attribute[ATR_DEXTERITY];      }      else if(atr == ATR_MANA_MAX)      {            Typ_Atr = typ.attribute[ATR_MANA_MAX];      };      AtrPlusSTRING = IntToString(AtrPlus);      if(!typ.lp < AtrPlus)      {            if((Typ_Atr + AtrPlus) <= 100)            {                  typ.lp = typ.lp - AtrPlus;                  if(atr == ATR_STRENGTH)                  {                        typ.attribute[ATR_STRENGTH] = typ.attribute[ATR_STRENGTH] + AtrPlus;                        PrintSTRING = ConcatStrings("Сила +",AtrPlusSTRING);                        PrintScreen(PrintSTRING,-1,-1,"FONT_OLD_20_WHITE.TGA",1);                  }                  else if(atr == ATR_DEXTERITY)                  {                        typ.attribute[ATR_DEXTERITY] = typ.attribute[ATR_DEXTERITY] + AtrPlus;                        PrintSTRING = ConcatStrings("Ловкость +",AtrPlusSTRING);                        PrintScreen(PrintSTRING,-1,-1,"FONT_OLD_20_WHITE.TGA",1);                  }                  else if(atr == ATR_MANA_MAX)                  {                        typ.attribute[ATR_MANA_MAX] = typ.attribute[ATR_MANA_MAX] + AtrPlus;                        PrintSTRING = ConcatStrings("Маг. сила +",AtrPlusSTRING);                        PrintScreen(PrintSTRING,-1,-1,"FONT_OLD_20_WHITE.TGA",1);                  };            }            else            {                  PrintScreen("Дальнейшее улучшение невозможно!",-1,-1,"FONT_OLD_20_WHITE.TGA",1);                  B_Say(self,other,"$NOLEARNOVERMAX");            };      }      else      {            PrintScreen("Недостаточно очков обучения!",-1,-1,"FONT_OLD_20_WHITE.TGA",1);            B_Say(self,other,"$NOLEARNNOPOINTS");      };};
Ответить с цитированием
Старый 29.04.2007, 18:09   #1627
John_White

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

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

Мне необходимо перенести мэши из Г1 в Г2а.
Как это сделать?
Если - нельзя, то подскажите альтернативный путь.
Ответить с цитированием
Старый 29.04.2007, 19:18   #1628
marazmus
A.G.F.C.
 
Регистрация: 02.09.2005
Сообщений: 6
marazmus вне форума

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

2Седрик:

Код:
      AtrPlusSTRING = IntToString(AtrPlus);     if(!typ.lp < AtrPlus)
Собака убита и зарыта здесь :) Восклицательный знак нужно вынести за скобки. Ну или просто переписать условие, используя другие операторы ("больше", к примеру).
Отправить личное сообщение для Ответить с цитированием
Старый 01.05.2007, 10:23   #1629
DimonKDF

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

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

Где в скриптах находится Хроманин.
Ответить с цитированием
Старый 01.05.2007, 11:26   #1630
NightRAVen88

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

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

2DimonKDF:
Где в скриптах находится Хроманин.
Gothic\_work\DATA\scripts\_decompiled\Items\Missio nItems_1.d
Ответить с цитированием
Старый 02.05.2007, 00:48   #1631
aleks999

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

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

Помню, тут искали (не Vam ли?) отслеживание времени в игре через скрипты. Интересует ответ на вопрос: можно ли отслеживать время через скрипты и соответственно времени совершать какие-либо действия скриптово?
Ответить с цитированием
Старый 02.05.2007, 10:44   #1632
dixie

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

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

2alexxmmt:
можно ли отслеживать время через скрипты и соответственно времени совершать какие-либо действия скриптово?
Неа :)
Объектам можно поставить график через Wld_SetObjectRoutine - это да.
Например, чтобы ворота были открыты только днём. Но даже это будет слегка глючить после сна недалеко от этого объекта.
Ответить с цитированием
Старый 03.05.2007, 17:56   #1633
aleks999

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

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

2dixie: жаль :(

2ALL:
Не работает скрипт if(!Npc_CanSeeNpc(self,other)). Возможно ли исправить?
Код:
func void ZS_ReactToDamage(){            // разрешить НПС нормальный набор восприятий      Perception_Set_Normal();            // если НПС не видит агрессора            if(!Npc_CanSeeNpc(self,other))            {                        // НПС умирает :) еще бы, со спины...                  AI_StartState(self,ZS_Dead,0,"");                  Wld_PlayEffect("FX_EARTHQUAKE",self,self,0,0,0,FALSE);            };      // НПС смотрит на агрессора      B_LookAtNpc(self,other);      // НПС выбирает оружие для поражения агрессора      B_SelectWeapon(self,other);      // НПС поворачивается к агрессору      B_TurnToNpc(self,other);      // НПС говорит агрессору (SVM фраза "Парень, никогда так больше не делай!")      B_Say (self, other, "$WHATAREYOUDOING");      // очистка счетчика секунд      self.aivar[AIV_StateTime] = 0;};
Ответить с цитированием
Старый 03.05.2007, 19:32   #1634
marazmus
A.G.F.C.
 
Регистрация: 02.09.2005
Сообщений: 6
marazmus вне форума

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

Во избежание проблем с восклицательным знаком в качестве оператора в IF попробуй сделать условие с другими операторами (можно просто скинуть все нужное в блок else). Может, поможет.
Отправить личное сообщение для Ответить с цитированием
Старый 03.05.2007, 19:51   #1635
aleks999

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

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

2marazmus:
так?
Код:
           // если НПС видит агрессора           if(Npc_CanSeeNpc(self,other))           {                       return;           }           else           {                 AI_StartState(self,ZS_Dead,0,"");                 Wld_PlayEffect("FX_EARTHQUAKE",self,self,0,0,0,FALSE);           };
Ответить с цитированием
Старый 03.05.2007, 20:34   #1636
B_Wolf

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

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

2alexxmmt:
Не работает скрипт if(!Npc_CanSeeNpc(self,other)). Возможно ли исправить?
Вы в этом уверены? :)
2alexxmmt:
                // НПС умирает :) еще бы, со спины...
                AI_StartState(self,ZS_Dead,0,"");
                Wld_PlayEffect("FX_EARTHQUAKE",self,self,0,0,0,FAL SE);
Настораживает эта вырезка. Это каким таким образом НПЦ должен помереть? :)
Перевод в состояние AI_StartState(self,ZS_Dead,0,""); не причиняет реальной смерти - это состояние по идее должно наступать ПОСЛЕ смерти :)
А вот чтобы реально грохнуть НПЦ, вернее применить функцию B_KillNpc(self); ну или просто обнулить его жизненную энергию.

Да и к тому же смущает сама реализация идеи: Функция состояния ZS_ по идее должна наступать ПОСЛЕ совершенного действия вызванного восприятим.

ИМХО подобная идея должна быть реализована через функцию восприятия повреждения B_AssessDamage

например вставить куда-нить блок в функцию...


func void B_AssessDamage()
{

          // если НПС не видит агрессора
          if(!Npc_CanSeeNpc(self,other))
          {      
                // НПС умирает :) еще бы, со спины...
                Npc_ChangeAttribute(self,ATR_HITPOINTS,-self.attribute[ATR_HITPOINTS_MAX]);
                Wld_PlayEffect("FX_EARTHQUAKE",other,other,0,0,0,F ALSE);
          };

};

не уверен, но помоему эффект землетрясения лучше повесить на АГРЕССОРА Wld_PlayEffect("FX_EARTHQUAKE",other,other,0,0,0,F ALSE);
, т.к. неизвестно как он будет работать с трупом :)
Ответить с цитированием
Старый 03.05.2007, 20:40   #1637
aleks999

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

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

2Ukur: 2Ukur:
Гм, спасибо. Тогда тебе еще вопрос.
Где отследить или просчитать в скриптах момент попадания оружием по ГГ или НПС ?
Ответить с цитированием
Старый 03.05.2007, 21:44   #1638
B_Wolf

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

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

2alexxmmt:
Где отследить или просчитать в скриптах момент попадания оружием по ГГ или НПС ?
Хых, думаю, что "момент попадания оружием", как легко уловить из смысла относится к тому, что я указал в предыдущем ответе, т.е. к функции восприятия повреждения B_AssessDamage

По ГГ попадание оружия проследить в скриптах еще НИКОМУ (ИМХО) не удавалось, скорее всего это невозможно.

По другим НПЦ, я уже указал функцию: B_AssessDamage(), которая вызывается через восприятие: PERC_ASSESSDAMAGE
где self - атакуемый, other - агрессор.
Ответить с цитированием
Старый 04.05.2007, 12:19   #1639
dixie

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

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

2Ukur:
По ГГ попадание оружия проследить в скриптах еще НИКОМУ (ИМХО) не удавалось, скорее всего это невозможно.
ГЫ :) Ну теоретически можно рассадить по всей поверхности тех же мясных жуков - чтобы они следили за здоровьем ГГ ;)
Ответить с цитированием
Старый 04.05.2007, 16:43   #1640
marazmus
A.G.F.C.
 
Регистрация: 02.09.2005
Сообщений: 6
marazmus вне форума

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

У меня тоже была такая мысля. Жуки - это сила :)

Но есть опасения по несинхронности. Типа как белиарским мечом по орку - молнией его уже убило, ан нет - пару раз мечом махнуть успевает, гад. Так что будут глюки, кажется мне, если на "чужие" восприятия завязываться...
Отправить личное сообщение для Ответить с цитированием
Страница 41 из 65 « Первая 313435363738394041 4243444546474851 Последняя »


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

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

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

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


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

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

AGFC: Valley of Gothic © 2004-2022

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