|
|
05.09.2005, 20:29
|
#881
|
 |
|
 |
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
 |
|
 |
|
Re: Скриптинг в Готике
2Finsternis:
1) Можно ли вносить изменения в файл где описана функция ZS_MM_ALLscheduler(), например вставить свою функцию.
|
Можно.
2) Как в массив Aivar добавить новый индекс, например, AIV_MM_FirstUPGrade, т.е. чтобы у каждого монстра появилось свойство Self.Aivar[AIV_MM_FirstUPGrade], и соответственно его можно было изменять, например вот так: if (Self.Aivar[AIV_MM_FirstUPGrade] == False) { // функции и команды ... Self.Aivar[AIV_MM_FirstUPGrade] = True; };
|
Прописать AIV_MM_FirstUPGrade в
Код:
AI\AI_Intern\AI_Constants.d
|
|
|
06.09.2005, 12:24
|
#882
|
|
Re: Скриптинг в Готике
2Finsternis:
2) Как в массив Aivar добавить новый индекс, например, AIV_MM_FirstUPGrade
|
Можно использовать любой свободный индекс, например, с 89 по 99
|
|
|
06.09.2005, 17:47
|
#883
|
|
Re: Скриптинг в Готике
2Vam: 2TycoooN: Огромное спасибо! Теперь я, наверно, все же сделаю то, что задумал!
2Vam: Прошу прощения, я тупанул: Не NPC_ID_UP.aivar[ATT_HITPOINTS_MAX] +=100; а NPC_ID_UP.attribute[ATR_HITPOINTS_MAX] +=100;
Вот, что бывает когда паскаль, си и фокс в голове перемешиваются:( и еще скриптов под рукой нет! Впредь обещаю больше глупых вопросов не задавать!
Но в скриптах я вроде все верно написал, потому что при компиляции ошибок не возникало. а у неписей действительно добавлялась жизнь! Но вот с переполнением с стека я так и не разобрался! Что могло вызвать данную ошибку? Может быть...
Ладно, не буду гадать, а запущу Готику в режиме отладки, да посмотрю, что приводит к возникновению данной ошибки!
Огромное спасибо за помощь!
|
|
|
07.09.2005, 02:46
|
#885
|
 |
|
 |
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
 |
|
 |
|
Re: Скриптинг в Готике
2Отец Левонтий: B_AssignAmbientInfos\B_AssignAmbientInfos_BAU_*.d Смотри эти файлы и всю папку просмотри. :)
|
|
|
09.09.2005, 01:14
|
#888
|
|
Re: Скриптинг в Готике
2TSYLin:
Как сджелать так, что бы НПС после диалога нападал на ГГ я знаю, но как сделать что бы НПС после драки протыкал пузо, не знаю, обьясните как.
|
Сделать непися заклятым врагом ГГ... Попробуй так. Npc_SetTempAttitude(self,ATT_HOSTILE); Npc_SetAttitude(self,ATT_HOSTILE);
|
|
|
09.09.2005, 19:46
|
#890
|
 |
|
 |
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
 |
|
 |
|
Re: Скриптинг в Готике
2TSYLin: Ну так поковыряйся в скриптах Диккурика. Если в кратце на вещь ф-ю вешаешь, в ней будет опред анимация, вызов спального диалога (SleepAbit чтоли), ну и рандом инсерта монстра поблизости от ГГ.
|
|
|
10.09.2005, 23:35
|
#896
|
|
Re: Скриптинг в Готике
Цитата:
Сообщение от Шаман link=board=gothic&t=1105030050&start=875#893 date=09/10/05, в 09:03:51
2TSYLin: 2Finsternis: Подскажите, где посмотреть инфу. Задача у меня такая: играю в новый немецкий мод. Хочу через файлы открыть и перевести содержимое книги ГГ.
|
Привет! Вообще, самое простое для поисков чего угодно в скриптах - в UltraEdit есть такая ф-ия: "найти в файлах", указываешь каталог, где искать, тип файла .d и текст. И найдешь все скрипты, где встречается искомое выражение ;D
|
|
|
11.09.2005, 01:57
|
#897
|
|
Re: Скриптинг в Готике
2Vam: Я все таки нашел причину переполнения стека – 4 безобидных условия, стоящих в моей функции: if (slf.HitChance[NPC_TALENT_1H] < 100) { B_AddFightSkill(slf, NPC_TALENT_1H, 5) }; if (slf.HitChance[NPC_TALENT_2H] < 100) { B_AddFightSkill(slf, NPC_TALENT_2H, 5) }; if (slf.HitChance[NPC_TALENT_BOW] < 100) { B_AddFightSkill(slf, NPC_TALENT_BOW, 5) }; if (slf.HitChance[NPC_TALENT_CROSSBOW] < 100) { B_AddFightSkill(slf, NPC_TALENT_CROSSBOW, 5) };
Вот так то! Оказывается B_AddFightSkill – тяжелая функция.
|
|
|
11.09.2005, 20:13
|
#898
|
 |
|
 |
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
 |
|
 |
|
Re: Скриптинг в Готике
2Finsternis:
B_AddFightSkill(slf, NPC_TALENT_CROSSBOW, 5)
|
А где точка с запятой на конце? ::)
|
|
|
12.09.2005, 18:55
|
#899
|
|
Re: Скриптинг в Готике
2TycoooN: а ты все к моей орфографии неравнодушен! Забыл поставить! Я не копировал код из самого скрипта, а писал ручками, вот и забыл поставить, темболее это синтаксическая ошибка, которую тут же найдет компилятор... и к переполнению стека она ни коим образом не приведет! ::)
А вот почему переполнение стека я так и не понял, наверное и не пойму :( Обидно...
2TycoooN: Я не хотел надерзить, не пойми меня неправильно, я очень признателен тебе за то, что ты откликнулся на мой зов о помощи, но орфографические ошибки, которые я допускаю при написании постов не влияют на мои скрипты, т.к. их превосходно находит компилятор. В общем не обижайся! :)
|
|
|
14.09.2005, 06:51
|
#901
|
|
Re: Скриптинг в Готике
2TSYLin:
Как сделать, что бы при диалоге текстура лица ГГ изменилась?
|
В своем моде я делал татуировки изменяя значения функции: Mdl_SetVisualBody(self,"hum_body_Naked0",HERO_BODY ART,1,HERO_HAIR_STRING,FACE,0,-1); HERO_BODYART - Численная переменная (int), номер текстуры тела. FACE - Чесленная переменная (int), номер текстуры фейса :) HERO_HAIR_STRING - строковая переменная (string) например: "Hum_Head_Pony", отвечающая за модель головы.
|
|
|
14.09.2005, 18:31
|
#902
|
|
Re: Скриптинг в Готике
2TSYLin:
В каком файле заложены отношения гильдии к доспехам.
|
Кажется в B_PlayerIsFakeGuild.d . Кажется так он пишется. :-/ (или C_PlayerIsFakeGuild.d , в общем, что то в этом роде...) Но я не уверен, что это именно тот файл, по крайней мере я в нем мало что понял, но с другой стороны он часто используется в обработчиках восприятий. И в нем еще описаны фразы, которые неписи говорят, если ГГ не в доспехах своей гильдии. В общем поюзай его, авось что и получится. :D Добавление от 09/14/05, в 17:32:50
О-о-о-о-о! Я уже Герой 3го уровня! ;D
|
|
|
15.09.2005, 18:28
|
#904
|
|
Re: Скриптинг в Готике
2TSYLin:
Спасибо, тот файл я нашёл, но например как сделать так что бы бандиты не дрались, когда одеваешь легкие доспехи наёма(к примеру).
|
За это отвечает функция B_PlayerIsFakeBandit , ну или что-то в этом роде. В восприятиях она часто используется. Есть 2 варианта: 1) Подправить данную функцию 2) Подправить функции восприятия Первый гораздо проще. Вот только я не знаю, как называется скрипт, в котором данная функция описана, но по идее скрипты называются так же как и функции. В общем поюзай, что-то должно получиться!
|
|
|
17.09.2005, 00:43
|
#907
|
|
Re: Скриптинг в Готике
2Отец Левонтий:
А можно ли заклинание превращения в волка, например, заменить на превращение в тролля, таким образом не создавая нового заклинания?
|
Можно, и достаточно легко. Для этого: 1) Открой скрипт AI\Magic\Spells\Spell_Transform.d и найди в нем следующую функцию func int Spell_Logic_TrfSheep(var int manaInvested) { if ((Npc_GetActiveSpellIsScroll (self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll)) || (self.attribute[ATR_MANA] >= SPL_Cost_TrfSheep)) { self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_TrfSheep; Npc_SetActiveSpellInfo (self, SHEEP); return SPL_SENDCAST; } else { return SPL_SENDSTOP; }; };2) Замени строку Npc_SetActiveSpellInfo (self, SHEEP); на строку Npc_SetActiveSpellInfo (self, Troll_Black); Впринципе уже будет работать, но для полного эффекта 3) в скрипте Story\Text.d найди следующие строки: "Овца", в описании массива const string TXT_SPELLS[100] замени на "Черный тролль"const string NAME_SPL_TrfSheep = "Превращение в овцу"; замени на const string NAME_SPL_TrfSheep = "Превращение в Черного тролля";Ну и естественно не забудь изменить Name в инстанции своего заклинания. Удачи! ;) З.Ы. Я тестил на Элитном орке! ::)
|
|
|
17.09.2005, 13:52
|
#909
|
|
Re: Скриптинг в Готике
2ХуулРех:
Подскажите,где находится файл отвечающий за распределение LP(например 1-30,1lp;30-60,2lp; и т.д.).
|
В скриптах: 1) B_GetLearnCostAttribute.d - функция получения стоимости обучения ГГ аттрибутам (мана, сила, ловкость) 2) B_GetLearnCostTalent.d - Функция получения стоимости обучения навыкам и талантам
|
|
|
18.09.2005, 01:58
|
#912
|
|
Re: Скриптинг в Готике
2Finsternis:
Мне кто-то говорил, что однотипные заклинания мождо создавать. По крайней мере, два заклинания телепорта у меня получились! Значит, может быть, и превращение получится!
|
Поясняю ;) Телепортов - сколько душе угодно. Вызовов зверушек - тоже. Превращение - только замена существующего. Боевое - однотипное с существующими - т.е. типа еще одной огненной стрелы, уникальное или массового действия - очень сложно. Телекинез - невозможно ;D
|
|
|
18.09.2005, 17:13
|
#913
|
|
Re: Скриптинг в Готике
2Finsternis: 2dixie: Я тоже пробовал эту тему юзить, тока кроме того, что 2dixie: пишет, ничего добавить не могу.
уникальное или массового действия - очень сложно
|
Выходит не невозможно?? Я как-тоо прописывал один закл во всех датниках каких надо с координатами, позициями и харками, но увы... ничего не вышло :( Может соберём усилия да раскопаем эту неизведанную часть скриптов. Если надо сделать эфект, я думаю за моделлерами не заржавеет ::)
|
|
|
18.09.2005, 19:46
|
#915
|
|
Re: Скриптинг в Готике
2Vendiga:
Может соберём усилия да раскопаем эту неизведанную часть скриптов.
|
Я не против! Идея замечательная. ;)
|
|
|
18.09.2005, 21:42
|
#916
|
|
Re: Скриптинг в Готике
2Finsternis:
Я не против! Идея замечательная.
|
Вот только с чего начать? :)
|
|
|
18.09.2005, 23:45
|
#917
|
|
Re: Скриптинг в Готике
2Finsternis:
Я не против! Идея замечательная
|
2Отец Левонтий:
Вот только с чего начать?
|
Похоже на флуд. Не злоупотребляйте.
|
|
|
19.09.2005, 19:40
|
#918
|
|
Re: Скриптинг в Готике
Обьясните пожалуйста, что означаю перфиксы "B_" и "C_" в названиях функций, и какое между ними различие. Сколько я ни занимаюсь скриптингом, я этого так и не понял. Ведь название функции ни на что не влияет (Ну кроме может ZS_XXX и функций, используемых экзешником). Заранее спасибо! 2FreeSergey:
Похоже на флуд. Не злоупотребляйте.
|
Пардон...
|
|
|
20.09.2005, 09:12
|
#919
|
 |
|
 |
|
A.G.F.C.
Регистрация: 02.09.2005
Сообщений: 6
|
|
 |
|
 |
|
Re: Скриптинг в Готике
Могу ошибиться, но разработчики, мне кажется, сделали это больше для себя. C_функции в содержимом просто производят сравнение каких-либо условий, без "активных" действий. B_функции, кроме возврата TRUE/FALSE, еще внутри себя производят какие-то "манипуляции" с объектами, к примеру, неписей, типа AI_StartState(self,ZS_ReactToWeapon,0,"") и т.п.
|
|
|
20.09.2005, 10:49
|
#920
|
|
Re: Скриптинг в Готике
2marazmus:
B_функции, кроме возврата TRUE/FALSE
|
не совсем так. Проанализировав несколько подобных функций можно сделать вывод, что: 1. C - функции типа "int", то есть возвращающие значение, которые также могут содержать действия Например: func int C_Addon_Knows_Schnaps() { if ((условия)) { return TRUE; } else { return FALSE; }; };
2. B - функции типа "void", которые никаких значений не возвращают, а содержат в себе только какие-то определенные действия: func void B_Addon_PiratesGoHome() { Skip.aivar[AIV_PARTYMEMBER] = FALSE; ... AlligatorJack.aivar[AIV_PARTYMEMBER] = FALSE; ... B_StartOtherRoutine (BenchPirate, "START"); };
3. Evt - функции типа "void", значений не возвращают. Отделены от "B" функций потому что они вызываются из ZEN-файла, то есть игрового мира. Наиболее частое приминение - вызов из скрипт-триггера, например: func void evt_open_door_library_s1() { if (EVT_OPEN_DOOR_LIBRARY_S1_OneTime == FALSE) { Snd_Play ("DEM_Die"); Wld_InsertNpc (Skeleton, "FP_ROAM_NW_KDF_LIBRARY_19"); ... Wld_InsertNpc (DemonLord, "FP_ROAM_NW_KDF_LIBRARY_20"); EVT_OPEN_DOOR_LIBRARY_S1_OneTime = TRUE; }; };
4. G - функции типа "void". Я пока не разобрался, почему они отделены, но явно видны следующие отличия - в скобках идет объявление переменных, основное назначение в скриптах Готики - вывод звуков и текста на экран: func void G_CanNotCast(var int bIsPlayer,var int nCircleNeeded,var int nCirclePossessed) { var string strMessage; ... strDifference = IntToString (nDifference); ... if (bIsPlayer) { Print (strMessage); }; };
Хотя это все очень условно :) Вот, например, есть G-функция, которая по идее должна быть С-функцией: func int G_CanSteal() { return TRUE; };
|
|
|
Здесь присутствуют: 3 (пользователей: 0 , гостей: 3)
|
|
Опции темы |
Поиск в этой теме |
|
|
Ваши права в разделе
|
|
|
|
Текущее время: 04:36. Часовой пояс GMT +4.
|
|
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|