• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!

Не стесняюсь спросить....

Defman

Участник форума
Регистрация
26 Май 2013
Сообщения
3.165
Благодарности
245
Баллы
300
И возможно ли что-то сделать, чтобы эта надпись появлялась именно тогда, когда я нахожусь не в нужной локации?
Могу ошибиться(да простит меня Ilot),но вроде бы это делается на триггерах.Посмотри карту в спакере,наверняка есть такое место.
 

Beowulf

Участник форума
Регистрация
21 Ноя 2010
Сообщения
1.942
Благодарности
1.470
Баллы
465
Могу ошибиться(да простит меня Ilot),но вроде бы это делается на триггерах.Посмотри карту в спакере,наверняка есть такое место.
Не спакер, а спейсер.
То, что там триггеров и в помине нет, с уверенностью могу сказать - за надпись "Слишком далеко" отвечает функция B_PrintTeleportTooFarAway, и она должна работать по идее как надо
(В Constants.d прописал
Код:
const int NEWWORLD_ZEN = 1;
const int OldWorld_Zen = 2;
const int DRAGONISLAND_ZEN = 3;
const int ADDONWORLD_ZEN = 4;
const int WORLD_ZEN = 5;
const int SECRETLIBRARY_ZEN = 6;
)
*Тут в чем-то другом дело:oops:
 

Defman

Участник форума
Регистрация
26 Май 2013
Сообщения
3.165
Благодарности
245
Баллы
300
Не спакер, а спейсер.
То, что там триггеров и в помине нет, с уверенностью могу сказать - за надпись "Слишком далеко" отвечает функция B_PrintTeleportTooFarAway, и она должна работать по идее как надо
(В Constants.d прописал
const int NEWWORLD_ZEN = 1;
const int OldWorld_Zen = 2;
const int DRAGONISLAND_ZEN = 3;
const int ADDONWORLD_ZEN = 4;
const int WORLD_ZEN = 5;
const int SECRETLIBRARY_ZEN = 6;
)
*Тут в чем-то другом дело:oops:
На счет спейсера - мы с Мега его так называем,спакер :D
Я никогда не делал телепортационные свитки,так что все мои догадки закончились.Попробуй сделать именно руну телепортации и проверь,будет появляться ошибка или нет.Иначе жди тех,кто в этой части разбирается :)
Кстати,почитай комментарии к уроку,там один человек написал важные критерии к заклинанию.
 

НастасьСанна

Участник форума
Регистрация
6 Дек 2012
Сообщения
350
Благодарности
521
Баллы
325
Beowulf, судя по всему, не хватает строчки
CurrentWorld = SECRETLIBRARY_ZEN;
Прописываем в Startup.d в функцию INIT_SECRETLIBRARY(). Или в B_Enter_SECRETLIBRARY(), если таковая имеется.
 

HeDeDe

Участник форума
Регистрация
17 Авг 2009
Сообщения
203
Благодарности
79
Баллы
180
Появился вопрос. Точнее назрел. Или, может быть, даже вскипел.
Существуют ли утилиты для построения outputunits (ou.bin)? Спейсер делает это _слишком_ медленно, а соурсер не работает с икарусом (можно, конечно, вести две ветви скриптов, но по мне, это трата времени). А остальные, найденные мной, утилиты не работают с кириллицей (вылетают).
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
Скорее всего нет, чем да.
 

redleha


Модостроитель
Регистрация
26 Фев 2008
Сообщения
735
Благодарности
665
Баллы
245
HeDeDe
А у меня спейсер нормально всё делает, не знаю, с чего это у тебя он так напрягается...
 

Test Level

Участник форума
Регистрация
1 Ноя 2011
Сообщения
1.770
Благодарности
557
Баллы
275
Подскажите, как в Rebalance 2.1 реализована такая вещь, как то, что монстры разбегаются от прокачанного ГГ?

Написал вставленному ранее NPC диалог торговли по уроку: http://port-of-rpg.com/sozdanie-npc-torgovca/
Получилось следующее:


Код:
instance KDF_23454_livius_TRADE(C_Info)
{
npc = KDF_23454_livius;
nr = 2;
condition = KDF_23454_livius_trade_condition;
information = KDF_23454_livius_trade_info;
permanent = TRUE;
trade = TRUE;
description = "Покажи мне свои товары!";
};
func int KDF_23454_livius_trade_condition()
{
return TRUE;
};
func void KDF_23454_livius_trade_info()
{
B_GiveTradeInv(self);
AI_Output(other,self,"KDF_23454_livius_trade_15_01"); //Покажи мне свои товары!
};


Вроде бы все нормально, но у меня отсутствует выход из диалогов. Что надо дописать, чтоб исправить сиё безобразие?
 

Ilot

Участник форума
Регистрация
17 Сен 2010
Сообщения
798
Благодарности
297
Баллы
245
Подскажите, как в Rebalance 2.1 реализована такая вещь, как то, что монстры разбегаются от прокачанного ГГ?
Как это реализованно в Ребалансе без понятия, но!
Внимательно изучай исходники AI:
// жертва убегает от агрессора
AI_StartState(self,ZS_MM_Flee,0,"");
 

Praetor

Участник форума
Регистрация
27 Июн 2011
Сообщения
148
Благодарности
1
Баллы
165
у меня такой вопрос - как сделать, чтобы персонаж по расписанию менял имя и доспех? допустим, с 8 до 22 он - честный Вася, а с 22 до 8 - бандит Билли?
ps Такое было в возвращении - там Гиллиан менял имя на незнакомец и доспех на кольчугу убийц
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
у меня такой вопрос - как сделать, чтобы персонаж по расписанию менял имя и доспех? допустим, с 8 до 22 он - честный Вася, а с 22 до 8 - бандит Билли?
ps Такое было в возвращении - там Гиллиан менял имя на незнакомец и доспех на кольчугу убийц
даж не знаю что и сказать.....

тутор вама
распорядок дня
одевание предметов

если не понятен мой ответ - тогда точно только тутор вама не нужно это.
 

Praetor

Участник форума
Регистрация
27 Июн 2011
Сообщения
148
Благодарности
1
Баллы
165
с доспехом уже разобрался.
я просто думал, что в спейсере имя также можно привязать к расписанию. Но спасибо - буду искать.
 

retej

Участник форума
Регистрация
27 Июн 2011
Сообщения
127
Благодарности
55
Баллы
175
Можно ли в Г2 установить такую же формулу урона, как в Г1? Я имею в виду, чтобы ГГ не наносил минимальный урон, если не пробивает защиту, ну и минимальный урон врагов =1.
 

Ilot

Участник форума
Регистрация
17 Сен 2010
Сообщения
798
Благодарности
297
Баллы
245
Возможно заблуждаюсь, но в Г2 так и есть. Это только монстры обязательно наносят урон 5 ед. если не пробивают защиту.
 

retej

Участник форума
Регистрация
27 Июн 2011
Сообщения
127
Благодарности
55
Баллы
175
Магией - да, а оружием все снимают друг у друга минимум 5.
 

redleha


Модостроитель
Регистрация
26 Фев 2008
Сообщения
735
Благодарности
665
Баллы
245
Механизм расчёта повреждений зашит в движке, и ничем кроме сторонних пакетов этого не сделать нормально. Увеличить - можно, а вот уменьшить - нет.
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.574
Благодарности
4.168
Баллы
915
@ Praetor:
И при этом новое имя Гиллиана не заменялось старым после загрузки сэйва? Когда-то здесь я уже видел обсуждение подобного вопроса (в спойлере - диалог на эту тему):
:)clone:)
А вот интересная идейка появилась. Всегда в RPG смущала легкость нахождения какого-то персонажа, т.е. тебе говорят найти того-то или поговорить с тем-то. Ты просто идешь и говоришь с ним. Может, возможно как-то убирать имена у персонажей, пока они не назовутся? Насколько я помню, в Готике большинство персонажей представляются. Чисто теоретически это может добавить интереса в игру?


Dimus:
Подобное изменение имени персонажа пытались реализовать "Камрады" в моде "Странник: В тылу врага", например:
Пиздохуев -> Влагалевский-Членищев, Добрый зомби-мутант -> Павлов, Дедок -> Мюллер,
но после загрузки сохранённой игры персонаж получал своё изначальное имя. Не знаю, удастся ли решить эту проблему команде "Mighty Dwarf".


Saturas:
А можно круче, допустим нпс назвал свое имя, и оно начинает светится над бошкой у него, так думаю норм.


:)clone:)
Ну да, в первой готе, такая фишка с Тарроком была, сначала он просто обзывается как раб орк (или чет в этом духе), а потом, когда представляется, над ним Таррок светится, только потом он все равно меняется на раб орк, наверно баг.


Myxomop:
Это не баг, это разработчики забыли о таком поведении движка.

Чтобы имя после загрузки игры не менялось, нужно создать глобальную переменную, которую после того, как НПЦ назвал свое имя, делать TRUE. Пример с Ур-Шаком.

Объявляем переменную
var int UrShak_Name;

После того как Ур-Шак назвал свое имя, делаем
UrShak_Name = TRUE;

в файле startup.d ищем функцию инициализации мира при загрузке игры и в ней пишем следующее.

func void init_world()
{
....

if(UrShak_Name == TRUE)
{
ORC_2200_Shaman.name = "Ур-Шак";
};

....
}
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
@ Praetor:
И при этом новое имя Гиллиана не заменялось старым после загрузки сэйва?

Если такой непись-хамелеон реализован с помощью двух неписей, то проблема возвращения изначального, прописанного в инстанции непися имени после загрузки сохранения не актуальна.
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
Элдер, это единственно верный и правильный способ реализации... В этом случае никаких косяков не будет, а с прописями в инициале мира, будут лаги и косяки, так или иначе при сейв/лоаде..
Ибо некоторые функции в эхешнике глючат...
 

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
Если этот персонаж сюжетно нагружен, то обязательно возникнет путаница в диалогах (персонаж диалога, условия и т. п.)
 
Сверху Снизу