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

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

Расширенный поиск
Старый 22.06.2006, 08:12   #1401
Vam

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

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

2Белиар:
А есть ли в интернете список этих функций и команд, чтобы каждый раз не спрашивать и не искать по скриптам, как например я искал команду присвоения гильдии...  
Полный список всех функций с описанием встроен в Декомпилятор 3.00, при открытом проекте заходим в ClassView, раздел внутренние функции, двойной клик на функции - получаем описание.  :)
Ответить с цитированием
Старый 22.06.2006, 15:49   #1402
Finsernis

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

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

Здравствуйте, уважаемые скриптеры. Я столкнулся с проблемой следующего рода: я создал новое боевое заклинание, но при его кастовании не уменьшается манна. Я думаю, что все дело в новом эффекте из VisualFX.dat. Вот код скрипта эффекта:

AbraxysFX.d:
Код:
instance SPELLFX_My(CFX_BASE_PROTO){      visname_s = "MFX_ArmyOfDarkness_INIT";      emtrjmode_s = "FIXED";      emtrjoriginnode = "ZS_RIGHTHAND";      emtrjtargetnode = "BIP01 FIRE";      emtrjloopmode_s = "NONE";      emtrjeasefunc_s = "LINEAR";      emactioncollstat_s = "COLLIDE CREATE";      emactioncolldyn_s = "COLLIDE CREATEONCE CREATEQUAD";      emfxcollstat_s = "spellFX_My_COLLIDE";      emtrjtargetrange = 20;      emtrjtargetelev = 0;      emtrjdynupdatedelay = 20000;      lightpresetname = "REDAMBIENCE";};instance SPELLFX_My_KEY_OPEN(C_PARTICLEFXEMITKEY){      lightrange = 2;};instance SPELLFX_My_KEY_INIT(C_PARTICLEFXEMITKEY){      visname_s = "MFX_ArmyOfDarkness_INIT";      lightrange = 2;      scaleduration = 0.5;};instance SPELLFX_My_KEY_CAST(C_PARTICLEFXEMITKEY){      visname_s = "MFX_ArmyOfDarkness_INIT";      emtrjmode_s = "TARGET";      emtrjeasevel = 1000;      emcheckcollision = 1;      sfxid = "Dementhor_Talk";      sfxisambient = 1;      lightrange = 100;};instance SPELLFX_My_KEY_COLLIDE(C_PARTICLEFXEMITKEY){      emtrjeasevel = 1e-006;};instance SPELLFX_My_COLLIDE(CFX_BASE_PROTO){      visname_s = "MFX_ArmyOfDarkness_INIT";      visalpha = 1;      emtrjmode_s = "FIXED";      sfxid = "MFX_My_COLLIDE";};
Далее на всякий случай распишу как делал заклинание:
1)      Сначала в скипте constants.d описал константу const int SPL_AbraxysSpell = 65;
2)      Затем в том же скрипте в массиве const string spellFxInstanceNames[100] значение элемента под номером 65 «Light» заменил на «My» и в массиве const string spellFxAniLetters[100] значение элемента под номером 65 «XXX» заменил на «FBT».
3)      В скрипте text.d в массиве const string TXT_SPELLS[100] значение элемента под номером 65 « TXT_SPL_RESERVED_65» заменил на « Заклинание светлого Князя» и описал константу const string NAME_SPL_AbraxysSpell = "Заклинание светлого Князя";
4)      В скрипте Spell_ProcessMana.d добавил следующий код

Код:
if(activeSpell == SPL_AbraxysSpell)      {            return spell_Logic_AbraxysSpell(manaInvested);      };
5)      Создал скрипт Spell_Abraxys.d  со следующим содержанием:

Код:
const int SPL_Cost_AbraxysSpell = 10;const int SPL_Damage_AbraxysSpell = 200;instance Spell_AbraxysSpell(C_Spell_Proto){      time_per_mana = 0;      damage_per_level = SPL_Damage_AbraxysSpell;      targetCollectRange = 1000;};func int Spell_Logic_AbraxysSpell(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_AbraxysSpell)      {            return SPL_SENDCAST;      }      else      {            return SPL_SENDSTOP;      };};func void Spell_Cast_AbraxysSpell(){      if(Npc_GetActiveSpellIsScroll(self))      {            self.attribute[ATR_MANA] -= SPL_Cost_Scroll;      }      else      {            self.attribute[ATR_MANA] -= SPL_Cost_AbraxysSpell;      };      self.aivar[AIV_SelectSpell] += 1;};
6)      В скрипте C_CanNpcCollideWithSpell.d  вставил вот что

Код:
if(spellType == SPL_AbraxysSpell) {      if (C_NpcIsEvil(self))       {            return COLL_APPLYDOUBLEDAMAGE;      }       else      {            return COLL_APPLYDAMAGE;      };                  };
7)      И в заключение в скрипте IT_Runen.d написал вот что:

Код:
const int Value_Ru_AbraxysSpell = 3000;instance ItRu_AbraxysSpell(C_Item){      name = NAME_Rune;      mainflag = ITEM_KAT_RUNE;      flags = 0;      value = Value_Ru_AbraxysSpell;      visual = "ItRu_BreathOfDeath.3ds";      material = MAT_STONE;      spell = SPL_AbraxysSpell;      mag_circle = 0;      wear = WEAR_EFFECT;      effect = "SPELLFX_WEAKGLIMMER_RED";      description = "Красный огонь светлого Князя";      text[0] = NAME_Mag_Circle;      count[0] = mag_circle;      text[1] = NAME_Manakosten;      count[1] = SPL_Cost_AbraxysSpell;      text[2] = NAME_Dam_Magic;      count[2] = SPL_Damage_AbraxysSpell;      text[5] = NAME_Value;      count[5] = value;};
Уважаемые скриптеры, подскажите, пожалуйста, что я сделал не так? Почему при кастовании не уменьшается манна? В остальном заклинание работает нормально, урон наносится, NPC на магию реагируют.

И еще вопрос. Кто-нибудь знает описание классов C_PARTICLEFXEMITKEY и   CFX_BASE – за что отвечает каждое поле.

Заранее благодарен.
Ответить с цитированием
Старый 22.06.2006, 18:21   #1403
Vam

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

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

2Князь Светозар:
Уважаемые скриптеры, подскажите, пожалуйста, что я сделал не так? Почему при кастовании не уменьшается манна?
Сделано всё правильно, но попробуй как у заклинания Sleep строки уменьшения маны из функции Spell_Cast_ххх перенести в функцию Spell_Logic_ххх, а функцию Spell_Cast_ххх скопируй с заклинания Sleep.
Почему так - пока не знаю, может зависит от типа заклинания.  :)
Ответить с цитированием
Старый 22.06.2006, 19:29   #1404
basilio58

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

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

Цитата:
Сообщение от Белиар link=board=gothic&t=1105030050&start=1375#1399 date=06/22/06, в 01:40:22

Это я знаю, но если изменять файл NewWorld.zen (~70мб), мод будет весить очень много *:'(
Зачем изменять? В триггере указываешь существующий в NewWorld Wp и все.

А по поводу лень  искать? Читай тему уроки скриптологии. Но там тоже нет "большой кнопки" ;-)
Ответить с цитированием
Старый 23.06.2006, 01:05   #1405
Finsernis

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

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

2Vam:
Спасибо, помогло!

Мана отнимается, но почему-то вместо 200 урона наносится около 50. Оркам и подобным нехорошим людям вообще минимальный - 5 :( Я думаю, это из-за того, что функция Spell_Cast_XXX не выполняется (иначе мана отнималась бы). А не выполняется она почему то из-за эффекта. Если ставить другой эффект - то все работает нормально. Я думаю, что VisualFX.dat не единственное место, где прописаны визуальные эффекты... К тому же я нигде не нашел описания, например, MFX_ArmyOfDarkness_INIT и иже с ним...  :(*

В принципе, выход есть - можно вручную отнять необходимое число хитпоинтов в скрипте B_MagicHurtNPC.d. Но в чем, собственно, дело все же интересно. ::)
Ответить с цитированием
Старый 23.06.2006, 01:22   #1406
Beliar@Alexey

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

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

Зачем изменять? В триггере указываешь существующий в NewWorld Wp и все.
Что-то я не понял, всё равно, чтобы создать в Хоринисе триггер ChangeLevel, надо изменить NewWorld.zen и добавить его в мод, или я не прав?  :)
Ответить с цитированием
Старый 23.06.2006, 07:02   #1407
marazmus
A.G.F.C.
 
Регистрация: 02.09.2005
Сообщений: 6
marazmus вне форума

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

Существующие в оригинальном зене Хориниса триггеры смены уровня ведут: а) прямиком на драконий остров :) (тот, что в каюте капитана); б) в Рудниковую долину (2 штуки, в разных местах прохода к Миненталю); в) в Яркендар ("телепорт" в храме).
Чтобы сделать триггер смены уровня, который будет загружать ту локацию, которая тебе нужна (к примеру, свою свеженарисованную локацию), придется добавлять новый триггер перехода, или менять свойства "старых". Все это ведет к тому, что в мод придется включать измененный зен (тот, в котором ты поставишь или изменишь триггер). В случае с Хоринисом это очень печально, т.к. добавляет все его 70 с лишним мегабайт веса в мод.

Статья начального уровня по созданию триггера перехода - здесь:
http://mod.worldofgothic.ru/3s_zen/1...igrovoi-uroven.

p.s. По поводу вызова триггера перехода из диалога (скриптом) - Базилио, поделись пожалуйста опытом. Я пробовал делать так на оригинальном зене Хориниса, но там беда в том, что они не поименованы, поэтому как бы нечего и вызывать - отсюда ничего не получилось. В общем, пока получается сделать только так, как в оригинале - только через "физический" вход ГГ в триггер.
Триггеры остальных типов вызываются через скрипты без проблем.
Отправить личное сообщение для Ответить с цитированием
Старый 23.06.2006, 15:37   #1408
Killer-XXX
Строители Миртаны
 
 
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
Killer-XXX вне форума

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

Про переходы:
Можно так же назвать твой новый мир именем старого, например миненталя. А диалогами в скриптах это красиво оформить. Ну это я так, на всякий случай :)
Ответить с цитированием
Старый 23.06.2006, 21:16   #1409
basilio58

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

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

Цитата:
Сообщение от marazmus link=board=gothic&t=1105030050&start=1400#1406 date=06/23/06, в 07:02:25
По поводу вызова триггера перехода из диалога (скриптом) ...
Да я собственно не проверял ;-). Просто в "Кошмаре" переход из первой локации во вторую вызывается не "входом" ГГ в триггер, а "выключателем". Триггер висит над головой ГГ.
Ответить с цитированием
Старый 23.06.2006, 21:51   #1410
DART_VITAL

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

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

Времени мало поэтому спрошу в этой теме. Если есть более подходящая тема посоветуйте. А новую тему из-за пару вопросов открывать думаю не стоит.

1)Я загрузил модель человека с  BIPED  скелетом в МАКС 7. Теперь я хочу заменить эту модель на другую. Но как мне сделать так чтоб настройки скелета перенеслись на мою новую модель.

2)Еще я хочу сделать пальцы человеку замес-то обычного ГОТИЧЕСКОГО кулака.
Мне не нужна к ним анимация. Но такая проблема при анимировании кисти пальцы остаются в тех же координатах в 3D мире. Как сделать так чтоб они следовали за рукой. Я так понял, у каждой кости есть этакий радиус, в котором к ней привязываются вершины (не знаю точно, правильно ли я понял). Вобщем как решить эту проблему.

3)И еще. Где найти модельки других зверюшек. У меня есть только жук, и падальщик.

Разъясните поподробнее, а то я с BIPED  скелетом практически не работал (а точнее вообще не работал).

А так в МАКСЕ шарю не плохо.

А почему закрылась тема 3DS MAX AND GOTIC?????????????
Ответить с цитированием
Старый 23.06.2006, 23:01   #1411
Tolman

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

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

2DART VITAL:

А новую тему из-за пару вопросов открывать думаю не стоит.
Правильно :)

1) не провирял, ну ты просто наложи свою модель на кости и привяжи( а вообще посети этот сайт

2)А нафиг тебе анимация, толькоесли он ими чтомибуть будет делать

3)Качай последнию версию декомпилятора, там можно отковырять модели

А так в МАКСЕ шарю не плохо
Приглашаю в команду, отпиши в приват

А почему закрылась тема 3DS MAX AND GOTIC
Так есть тема вопросы по модостроению( в верху есть ссылка)
Ответить с цитированием
Старый 24.06.2006, 03:28   #1412
Beliar@Alexey

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

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

Существующие в оригинальном зене Хориниса
То, что я не сказал, что хочу триггер перемещения в НОВЫЙ уровень, я понял поздно ночью, когда ложился спать  ;D

Wld_SendTrigger("Триггер") - не работает, ГГ только говорит что-то в этот момент.
А как исп.
Код:
// телепортирует НПС npc в новую локацию waypoint.func void AI_Teleport(C_NPC npc, string waypoint);
?
Если прописать в диалоге например:
AI_Teleport(C_NPC PC_HERO, string START_Gothic2);
Декомпилятор выдает ошибку...
Или функцию надо объявить:
func void AI_Teleport;
А потом прописать, где надо:
AI_Teleport(C_NPC PC_HERO, string START_Gothic2);
?
Ответить с цитированием
Старый 24.06.2006, 09:46   #1413
DEDROIT

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

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

2Белиар:
Я просто приведу пример.
B_StartOtherRoutine(NONE_666_DEDROIT,"TELEPRTTOFAR M");
AI_Teleport(NONE_666_DEDROIT,NW_FARM1_OUT_01);
Это прописываешь в диалоге.
В скрипте НПС пишешь:
func void Rtn_TELEPRTTOFARM_666()
{
     TA_Rake_FP(8,0,22,0,"NW_FARM1_OUT_01");
     TA_Rake_FP(22,0,8,0,"NW_FARM1_OUT_01");
};
Вот так приблизительно должно быть.
Ответить с цитированием
Старый 24.06.2006, 19:12   #1414
basilio58

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

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

Цитата:
Сообщение от DEDROIT link=board=gothic&t=1105030050&start=1400#1412 date=06/24/06, в 09:46:26
2Белиар:
Я просто приведу пример.
B_StartOtherRoutine(NONE_666_DEDROIT,"TELEPRTTOFAR M");
AI_Teleport(NONE_666_DEDROIT,NW_FARM1_OUT_01);
Это прописываешь в диалоге.
В скрипте НПС пишешь:
func void Rtn_TELEPRTTOFARM_666()
{
* * *TA_Rake_FP(8,0,22,0,"NW_FARM1_OUT_01");
* * *TA_Rake_FP(22,0,8,0,"NW_FARM1_OUT_01");
};
Вот так приблизительно должно быть.
Ну да, все вроде правильно.
Только готовься к разнообразным глюкам. При телепорте диалог НЕ завершается, и на ГГ в лучшем случае перестают реагировать. В том числе монстры.
Ответить с цитированием
Старый 24.06.2006, 20:53   #1415
Finsernis

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

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

2basilio58:
При телепорте диалог НЕ завершается
Согласен. Перед строчкой
Код:
AI_Teleport(NONE_666_DEDROIT,NW_FARM1_OUT_01);
нужно бы написать
Код:
AI_StopProcessInfos(self);
Ответить с цитированием
Старый 24.06.2006, 21:12   #1416
DART_VITAL

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

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

Насчет BIPED скелета разобрался. Если у кого с ним тоже проблемы советую посетить сайт inside.hl2.ru

================================================== =========

Народ добрый, пожалуйста, объясните такую вещь.

Хотя мой вопрос покажется довольно странным и у вас возникнет вопрос на х.. это надо, но дело в том, что мне это надо.

Постараюсь более понятно изложить суть:
Меня интересует принцип как персонажи распознают кто из них враг а кто друг по отношению к друг другу. Их же там сотни. И что у каждого персонажа есть переменные к другим  что ли, или как? Вобщем меня интересует только теоретическая суть процесса. Просто хочу узнать, как это реализовано на движке готики.


Добавление от 06/24/06, в 21:13:19
Насчет BIPED скелета разобрался. Если у кого с ним тоже проблемы советую посетить сайт inside.hl2.ru

================================================== =========

Народ добрый, пожалуйста, объясните такую вещь.

Хотя мой вопрос покажется довольно странным и у вас возникнет вопрос на х.. это надо, но дело в том, что мне это надо.

Постараюсь более понятно изложить суть:
Меня интересует принцип как персонажи распознают кто из них враг а кто друг по отношению к друг другу. Их же там сотни. И что у каждого персонажа есть переменные к другим  что ли, или как? Вобщем меня интересует только теоретическая суть процесса. Просто хочу узнать, как это реализовано на движке готики.
Ответить с цитированием
Старый 24.06.2006, 21:55   #1417
Tolman

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

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

2DART VITAL:
У каждого непися прописана гильдия, а есть файл который устанавливает отношения между гильдиями. если ты это имел введу!

ЗЫ: ответь в личку!
Ответить с цитированием
Старый 25.06.2006, 03:12   #1418
Beliar@Alexey

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

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

B_StartOtherRoutine(NONE_666_DEDROIT,"TELEPRTTOFAR M");
AI_Teleport(NONE_666_DEDROIT,NW_FARM1_OUT_01);
Это прописываешь в диалоге.
В скрипте НПС пишешь:
func void Rtn_TELEPRTTOFARM_666()
{
    TA_Rake_FP(8,0,22,0,"NW_FARM1_OUT_01");
    TA_Rake_FP(22,0,8,0,"NW_FARM1_OUT_01");
};
А если я хочу телепортировать ГГ?
У него же нет функции распорядка дня.  
Ответить с цитированием
Старый 25.06.2006, 14:17   #1419
TycoooN
Строители Миртаны
  Аватар для TycoooN
 
 
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
TycoooN вне форума

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

2Белиар:
Тогда просто
Код:
AI_StopProcessInfos(self);AI_Teleport(self,"WP");
AI_Teleport(C_NPC PC_HERO, string START_Gothic2);
Типы переменных указываются только в объявлении функции, а при ее вызове перечисляются только сами переменные, причем их типы должны совпадать с указанными.
Отправить личное сообщение для Ответить с цитированием
Старый 27.06.2006, 01:19   #1420
Beliar@Alexey

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

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

AI_Teleport работает только один раз, не знаю в чём дело...
Сделал так, чтобы функция телепортировала на WP, который находится в триггере перехода на др. уровень... в первый раз проходит, а с другой стороны (в новом уровне) через диалог обратно перемещаться не хочет, хотя написал всё, как и в 1 случае. (Причем если ввести gotto waypoint WP - перемещает обратно) В чем дело?
Ответить с цитированием
Старый 27.06.2006, 11:00   #1421
basilio58

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

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

Цитата:
Сообщение от Белиар link=board=gothic&t=1105030050&start=1400#1419 date=06/27/06, в 01:19:38
... на WP, который находится в триггере перехода на др. уровень... в первый раз проходит, а с другой стороны (в новом уровне) через диалог обратно перемещаться не хочет, хотя написал всё, как и в 1 случае.
Если я тебя правильно понял. Триггер перехода в каждом уровне - д.б. свой.
Ответить с цитированием
Старый 28.06.2006, 01:25   #1422
Beliar@Alexey

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

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

Если я тебя правильно понял. Триггер перехода в каждом уровне - д.б. свой.
Да свой там, свой...

Опишу примерно, что сделал:
Создал в одной локации (допустим в 1.zen) триггер перехода в OldWorld и назвал его GO_OW, там-же разместил WP с названием TO_OW
написал диалог для НПс:
Код:
func void DIA_TEL_tel_addon() {       AI_Output(other,self,"DIA_TEL_tel_15_02"); //Перемести меня в Рудниковую долину      AI_Teleport(PC_HERO, "TO_OW");       Info_ClearChoices(DIA_TEL_tel);      AI_StopProcessInfos(self);};
Переместился в OldWorld (Там я создал триггер перехода обратно, назвал его GO_SAN и поставил на него WP с названием TO_SAN, разместил в мире другого NPc)
Вот его диалог:
Код:
func void DIA_TEL_telOW_san() {       AI_Output(other,self,"DIA_TEL_telOW_15_01"); //Перемести меня обратно...      AI_Teleport(PC_HERO, "TO_SAN");      Info_ClearChoices(DIA_TEL_telOW);      AI_StopProcessInfos(self);};
Не работает, хотя если ввести в игровой консоли gotto waypint TO_SAN
игра перемещает обратно...
Ответить с цитированием
Старый 28.06.2006, 20:20   #1423
basilio58

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

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

Цитата:
Сообщение от Белиар link=board=gothic&t=1105030050&start=1400#1421 date=06/28/06, в 01:25:39
Не работает, хотя если ввести в игровой консоли gotto waypint TO_SAN игра перемещает обратно...
Мдя... глюк, да и только...
Хотя я, наверное, написал бы так:
Код:
func void DIA_TEL_telOW_san() {  * * *AI_Output(other,self,"DIA_TEL_telOW_15_01"); //Перемести меня обратно... * * *AI_StopProcessInfos(self); * * *AI_StopProcessInfos(other); * * *AI_Teleport(hero,"TO_SAN");  * * *};
Хотя особой разницы не вижу :-(
Ответить с цитированием
Старый 20.07.2006, 10:01   #1424
Roomper

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

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

Возникло несколько проблем при написании своего квеста. Так вот, создал я свой мир, прописал в Startup.d и там же его инициализировал (это к сведению). По моей задумки, один NPC должен быть мертвым, а его труп должен валяться около дерева в течение некоторого времени. У того NPC я поставил параметр attribute[ATR_HITPOINTS] = 0. Но когда я прихожу в это место, там просто никого нет! Подскажите, как сделать мертвого NPC, который бы не исчезал. И еще: как сделать предмет, который бы при экипировки сразу же снимался.
Ответить с цитированием
Старый 20.07.2006, 10:38   #1425
Xentar

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

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

Цитата:
Сообщение от Roomper link=board=gothic&t=1105030050&start=1400#1423 date=07/20/06, в 10:01:31
Возникло несколько проблем при написании своего квеста. Так вот, создал я свой мир, прописал в Startup.d и там же его инициализировал (это к сведению). По моей задумки, один NPC должен быть мертвым, а его труп должен валяться около дерева в течение некоторого времени. У того NPC я поставил параметр attribute[ATR_HITPOINTS] = 0. Но когда я прихожу в это место, там просто никого нет! Подскажите, как сделать мертвого NPC, который бы не исчезал. И еще: как сделать предмет, который бы при экипировки сразу же снимался.
Возможно движок подчистил твой труп (а живой он там будет?). В инвентарь надо положить какой-нибудь миссион айтем(я думаю работать будет, хотя может я ошибаюсь).
Ответить с цитированием
Старый 20.07.2006, 17:34   #1426
finch

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

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

2Roomper:
Подскажите, как сделать мертвого NPC, который бы не исчезал.
Долго расписывать сам процесс. Посмотри, например, как разрабы реализовали мертвых послушников (totter novize) в Хоринисе или мертвых рабов в Яркендаре.

И еще: как сделать предмет, который бы при экипировки сразу же снимался.
???
Ответить с цитированием
Старый 21.07.2006, 07:21   #1427
Roomper

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

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

Цитата:
Сообщение от Xentar link=board=gothic&t=1105030050&start=1400#1424 date=07/20/06, в 10:38:03
Возможно движок подчистил твой труп (а живой он там будет?). В инвентарь надо положить какой-нибудь миссион айтем(я думаю работать будет, хотя может я ошибаюсь).
Твой способ все нормально работает. Только вот, не знаешь ли ты, как сделать, чтобы труп не исчезал со временем, не пихая ему в брюхо разного рода квестовых предметов?

Еще вопрос.
Что нужно писать в строке npc в инстанции диалога, чтобы диалог давала определенная группа НПС, скажем, жители одного города?
Ответить с цитированием
Старый 21.07.2006, 09:30   #1428
Xentar

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

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

2Roomper
По поводу первого вопроса: честно говоря не знаю (не занимался этим). Попробуй то, что посоветовал finch(скорее всего где-то должен быть определенный флаг). По поводу второго вопроса: создавай разные диалоги для разных НПС с одним и тем же содержанием (единственное, что я могу посоветовать, хотя можно еще попробавать создать прототип для этих НПС и в указанной строке указать его имя)
Ответить с цитированием
Старый 21.07.2006, 13:44   #1429
Roomper

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

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

2Xentar:
Попробуй то, что посоветовал finch
Разобрался я с оригинальными скриптами и понял, что в них используется тот же алгоритм, какой ты мне и посоветовал. То есть им тоже кладется квестовый предмет, только не в ручную, а через функцию B_KillNpc (сначала с помощью Wld_InsertNpc вставляется живой НПС, а потом убивается функцией B_KillNpc, в теле которой есть строчка reateInvItem(npc,ItMi_OldCoin);)
создать прототип для этих НПС и в указанной строке указать его имя)
Че то я не совсем понял.



Ответить с цитированием
Старый 21.07.2006, 13:51   #1430
Xentar

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

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

Берешь и задаешь основные параметры НПС для прототипа, а для конкретного instance указываешь в скобочках имя прототипа(Посмотри как сделан Коготь Белиара). А в диалоге укажешь npc=имя_прототипа. Только я не уверен что это пройдет с НПС.
Ответить с цитированием
Старый 21.07.2006, 18:24   #1431
basilio58

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

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

Цитата:
Сообщение от Roomper link=board=gothic&t=1105030050&start=1425#1426 date=07/21/06, в 07:21:20
Еще вопрос.
Что нужно писать в строке npc в инстанции диалога, чтобы диалог давала определенная группа НПС, скажем, жители одного города?
Посмотри, как используется SVM (Standart Voice Module)
A именно: разные NPC произносят одни и те же фразы (с учетом № голоса - SVM_11, SVM_13...)
Ответить с цитированием
Старый 22.07.2006, 18:34   #1432
Roomper

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

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

Есть ли какая-нибудь функция, которая  отлавливает игровое время? Ну, например, я хочу написать событие, которое выполнялось бы не сразу после того, как условие станет истинным, а через некоторое время (это мне надо для достижения специального эффекта).
Ответить с цитированием
Старый 22.07.2006, 21:38   #1433
finch

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

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

2Roomper:
Ну, например, я хочу написать событие, которое выполнялось бы не сразу после того, как условие станет истинным, а через некоторое время
Если тебе необходимо выполнение события через день (или несколько дней), юзай Wld_GetDay. Если же через несколько минут (часов), то так просто здесь не выкрутишься. Можно сделать невидимого НПС, который бы постоянно "летал" за ГГ и отсчитывал время. Принцип действия этого НПС я расписывал в этой теме в туторе по созданию амулета регенерации. Если не лень - поищи.
Ответить с цитированием
Старый 24.07.2006, 03:05   #1434
@Urizzel@

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

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

Ответьте пожалуйста! Как сменить текстуры Хориниса? Я открываю в спейсере mesh файл, изменяю, а затем сохраняю. Запускаю игру, а в ней все как было. Может я неправильно делаю? Подскажите пожалуйста...
Ответить с цитированием
Старый 24.07.2006, 03:19   #1435
finch

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

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

2@Urizzel@:
Как сменить текстуры Хориниса?
Следующим образом:
1. Открываешь 3ds файл.
2. Выбираешь compile world, ставишь outdoor и edit mode.
3. Меняешь текстуры, сохраняешь меш.
4. Открываешь файл NewWorld.zen
5. После открытия выбираешь compile world, ставишь outdoor, edit mode НЕ ставишь.
6. Ждешь окончания компиляции, compile light, сохраняешь под тем же именем (NewWorld.zen).
7. Запускаешь игру - текстуры новые. ;)

З.Ы. А вообще такие вопросы надо задавать в этой теме.
Ответить с цитированием
Старый 10.08.2006, 12:48   #1436
finch

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

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

2All:
Кто занимался созданием новых заклинаний? Поделитесь опытом. Я уже весь извелся! =)
Все работает - и анимация, и визуальные эффекты, но, млин, урон совсем не наносится.. Можно, конечно, пойти другим путем, но это будет неправильно. Я уверен, что при верном подходе все должно работать, но, наверное, че-то упускаю из виду..
Короче, может, возьмемся скопом и решим траблу с созданием новых спеллов? ;)
Ответить с цитированием
Старый 10.08.2006, 14:30   #1437
Vam

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

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

2finch:
Все работает - и анимация, и визуальные эффекты, но, млин, урон совсем не наносится..
Можно поподробнее описать тип заклинания и каким образом ты программируешь урон.
Ответить с цитированием
Старый 10.08.2006, 14:34   #1438
Finsernis

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

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

2finch:
Кто занимался созданием новых заклинаний
Я этим занимался и у меня возникли те же самые проблемы, что и у тебя... Я урон вообще в восприятиях прописывал, иначе никак не получалось. :(

Как и что я делал написано здесь.

Кстати, ошибка кажется в функции func void Spell_Cast_MySpell() потому что мана нихрена не отнималась и мне Vam посоветовал отнимать ману в функции func void Spell_Logic_MySpell() Я думаю, что основной акцент нужно сделать на этих функциях.. Почему не работает так, как должно?

возьмемся скопом и решим траблу с созданием новых спеллов
Я за!

З.Ы. У меня к тебе вопрос. Как сделать абсолютно новый визуальный эффект? Распиши механизм, пожалуйста. А то в классах C_PARTICLEFXEMITKEY и CFX_BASE не понятно, какое поле за что отвечает.

2Vam: Не мог бы ты посмотреть тутор по ссылке, что в начале моего поста написана... Может и найдется ошибочка... Я просто уже все оригинальные примеры переюзал - не работает как надо. Кстати, заметил такую особенность - если эффект ставить нормальный (т.е. разработчиками написанный), то заклинание наносит урон как положено. Может все дело в эффекте?

Опять же сказывается незнание классов C_PARTICLEFXEMITKEY и CFX_BASE...
Ответить с цитированием
Старый 10.08.2006, 16:59   #1439
finch

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

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

2Князь:
Я просто уже все оригинальные примеры переюзал - не работает как надо. Кстати, заметил такую особенность - если эффект ставить нормальный (т.е. разработчиками написанный), то заклинание наносит урон как положено. Может все дело в эффекте?
Не думаю. Некоторое время назад я заменил эффект ледяной волны на волну огненную. Т.е. спелл был Ледяная волна, но эффект был огненный (люди горели и т.д.), так вот урон наносился нормальный - такой, который прописываешь в spell_icewave.d

2Vam:
Можно поподробнее описать тип заклинания и каким образом ты программируешь урон.
Беру за основу эффект какого-нить закла, меняю что-нить в визуализации под себя, вешаю все это на SPL_Reserved_xx, создаю файл спелла, прописываю все, что надо в Spell_ProcessMana и B_AssessMagic.. короче, делаю все, как делали сами разрабы.. но результат нулевой. =(

Добавление от 08/10/06, в 17:09:26
2Князь:
З.Ы. У меня к тебе вопрос. Как сделать абсолютно новый визуальный эффект? Распиши механизм, пожалуйста. А то в классах C_PARTICLEFXEMITKEY и CFX_BASE не понятно, какое поле за что отвечает.
Почитай PFX система (Эффекты излучаемых частиц) by Vam
Ответить с цитированием
Старый 10.08.2006, 19:23   #1440
Vam

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

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

2Князь:
2finch:
Ваша ошибка в том, что имя визуальной инстанции заклинания должно соответствовать названию заклинания, т.е. строка в массиве spellFxInstanceNames должна быть одинаковой со строкой Spell_Cast_xxx, в противном случае функция Spell_Cast_xxx экзешником не будет вызвана, т.к. данная функция вызывается в момент "соприкосновения" визуальной инстанции с целью, короче, из названия инстанции берется имя и добавляется к Spell_Cast_, а затем вызывается эта функция. Можете проверить!  ;)
Ответить с цитированием
Страница 36 из 65 « Первая 262930313233343536 3738394041424346 Последняя »


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

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

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

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


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

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

AGFC: Valley of Gothic © 2004-2022

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