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

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

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

Лебедев

Участник форума
Регистрация
3 Сен 2005
Сообщения
595
Благодарности
77
Баллы
225
Сажите, за что у вас отвечает строчка aivar[AIV_PARTYMEMBER] = TRUE Что это значит?

У меня ведь в моде есть напарники и волкодав. А без aivar[AIV_PARTYMEMBER] = TRUE готика не умеет определять, NPC входит в группу ГГ или нет и нужно ли очки опыта за убийство монстров и т.д. начислять ГГ.
 

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
Целое, целочисленный тип данных (англ. Integer), в информатике — один из простейших и самых распространённых типов данных в языках программирования. Служит для представления целых чисел. - Основу сначала изучи, после меня носом просьба тыкать.

Мне сказали "скриптовой функции типа int" а раз скриптовая функция возвращающая TRUE или FALSE (1 или 0) = значит мы имеем число.

Ну так реализуй и после скажешь, у тебя будет работать или нет?

У меня работает, если тупо открыть дверь и идёт диалог. Если закрытая дверь через triggerTarget не работает, работает conditionFunc (но дверь после этого перестаёт работать, а компилятор не даёт возвращать состояние "Примечание: Скриптовая функция возвращающая TRUE или FALSE (1 или 0).")

Согласно немецкому форуму forum.worldofplayers.de и evt_monastery_secretlibrary_s1.d - мне нужно знать переменную, чтобы ей возвращать значение 1 или 0.

А теперь снова возвращаемся, кто описал какую переменную использует движок когда работает с запертыми дверями? (От меня игра требует, укажи переменную которую использует движок игры. А она у меня есть? Кто-то за 15 лет её описал?)

Если conditionFunc оставлять пустой, то движок автоматически использует переменную которой присваивает значение 1 или 0. Чтобы реализовать разговор с закрытыми дверями и чтобы после двери работали, мне нужно название переменной которую использует по умолчанию движок игры при работе с любыми закрытыми дверями.

Вот и ясно, почему у тебя скриптёров нету (сам толком не понимаешь всего и других поучаешь)

Вот когда у меня будет 10-15 скриптёров, тогда и будет всё делаться не заранее.

Когда (точнее, не "когда", а "если", а значит "никогда") у тебя будет 10-15 "скриптёров", тогда они, наконец, сделают за тебя твою работу и реализуют открывание-закрывание дверей. Поскольку ты придумываешь причины "почему этого нельзя реализовать", вместо того, чтобы просто сделать. Ты ждешь, что кто-то за тебя тут все напишет? Напрасно ждешь. Здесь у всех хватает своих задач.

Если не можешь реализовать открытие и закрытие дверей, значит вноси изменения в сценарий. Или твой "сценарист" таков же, каков из тебя "программист"? Ну тогда не морочь людям голову. Займись чем-нибудь попроще.

PS: Что же до "изучения основ", то я их начал изучать в 1978 году. А в 1982 году у меня уже были внедрения. Причем в очень серьезное производство.
 

Лебедев

Участник форума
Регистрация
3 Сен 2005
Сообщения
595
Благодарности
77
Баллы
225
Начинаю сомневаться в своей адекватности. Или в твоей. :eek:


Делаешь так:
Код:
var int HeroTriedTheDoor;

func int MySuperDoor_ConditionFunc()
     if(диалог не состоялся)
     {
          HeroTriedTheDoor = TRUE;  // Значение переменной проверяется в условии диалога.
          return FALSE;
     };
     return TRUE;
};

ead77cbbbd0e5534e62a749804d678b5.jpg


Вот моя дверь и как движок отделяет её от других дверей этого же типа?

http://www.gothic-library.com/index/ocmobswitch/0-498 строчка conditionFunc мы не видим в описании, что нужно указывать определённую переменную для возврата ей значения 1 или 0.

У Вас func int MySuperDoor_ConditionFunc() - имеется наименование переменной = где-то в описании что-то пропустили.

Т.е. мне нужно в vobname внести название и это название после использовать для наименование переменной ConditionFunc, так?

P.S. Читая уроки получаю куски информации, которые между собой не связаны (так не один хороший учебник по языкам программирования не написан)
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
У Вас func int MySuperDoor_ConditionFunc() - имеется наименование переменной = где-то в описании что-то пропустили.

Т.е. мне нужно в vobname внести название и это название после использовать для наименование переменной ConditionFunc, так?
Я так терпение прокачаю до стописотого уровня. *thumbs up*

Пример приведён ИСКЛЮЧИТЕЛЬНО для демонстрации идеи. Поскольку телепатией я не владею, мне не ведомо, как ты назовёшь у себя в моде функции и переменные. Если у тебя в свойствах двери прописано "REM", то функция в скриптах должна быть:
func int REM()
или
func int Rem()
или
func int rem()
 

Лебедев

Участник форума
Регистрация
3 Сен 2005
Сообщения
595
Благодарности
77
Баллы
225
Начинаю сомневаться в своей адекватности. Или в твоей. :eek:


Делаешь так:
Код:
var int HeroTriedTheDoor;

func int MySuperDoor_ConditionFunc()
     if(диалог не состоялся)
     {
          HeroTriedTheDoor = TRUE;  // Значение переменной проверяется в условии диалога.
          return FALSE;
     };
     return TRUE;
};

Снова садимся с чего вчера начинали:

REM должна передавать, было ли действие с дверями

Если было действие, должна идти проверка Wld_IsTime (какое сейчас время) т.к. у меня 2 NPC (не 1 дибил стоящий за дверями 365 дней в году без сна)
Если оба выше условия совпали, то передвигаем нужный NPC
AI_GotoWP(нужный NPC,"WOROTO08");
Npc_ExchangeRoutine(нужный NPC,"GOBL");

мы передвигаем NPC подходящего по времени к точке возле дверей и меняем ему распорядок дня (стоять возле двери)

Далее проверяем в диалоге, было ли действия с дверями и был ли активирован нужный квест:
Если совпадают оба условия = диалог 2
Если совпадает условие (действие с дверями) = диалог 1

Теперь как в REM прописать условие? (от чего оно будет зависеть)

У меня один вариант: из скриптов обращаться к движку с вопросом "были ли действие с дверью" и как такое прописать?

onStateFunc служит только для 2 вариантов открыта или закрыта дверь.
А тут нужна проверка, есть ли ключ у ГГ, но реакции на такое нету

func int REM_ConditionFunc()
{
if(Npc_HasItems(hero,ItKe_Min_01) >= 1)
{
return TRUE;
};
return FALSE;
};

если прописать в useWithItem предмет, при наличии которого будет получена реакция - то мы можем получить только 1 вариант: есть предмет = есть реакция, нет предмета = нет реакции.

У меня нужно чисто получить значение = было ли обращение к дверям.

(Человеческий пример = нужно получить значение было ли обращение к ручке двери, её пытались повернуть или нет)

Движок получает информацию было ли обращение к ручке двери, но на уровень скриптов эта информация не попадает. Вчера мною спрашивалось, как этот факт можно обойти.

Теперь Георгию нужно переписать диалоги т.к. они были задуманы на разговор через закрытую дверь. Сейчас работает, если игрок открывает дверь и ему на встречу выбегает стражник и начинает диалог.
 
Последнее редактирование:

BlackWolf

Участник форума
Регистрация
9 Авг 2016
Сообщения
14
Благодарности
5
Баллы
160
У меня ведь в моде есть напарники и волкодав. А без aivar[AIV_PARTYMEMBER] = TRUE готика не умеет определять, NPC входит в группу ГГ или нет и нужно ли очки опыта за убийство монстров и т.д. начислять ГГ.
А все правильно! У Лареса же точно такой же...
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Теперь как в REM прописать условие? (от чего оно будет зависеть)

У меня один вариант: из скриптов обращаться к движку с вопросом "были ли действие с дверью" и как такое прописать?
О каком действии речь? Ты имеешь в виду выполнение некой анимации, мол, ГГ подошёл к двери и протянул руку к ручке? Какие-либо манипуляции около двери происходят только если она открывается отмычками. При открывании двери, запертой на ключ, дополнительная возня не предусмотрена.

Кондишн-функция вызывается в момент, когда ГГ подходит к двери, берёт её в фокус, а игрок нажимает ЛКМ. Если функция вернула 1, взаимодействие с дверью разрешено, но это не означает, что оно произойдёт. Далее, если дверь заперта, следуют проверки на наличие ключа и/или отмычки в инвентаре ГГ. Их производит движок. Разумеется, инстанция ключа и/или код для отмычки должны быть прописаны свойствах двери. В Г2 также следует проверка на наличие навыка взлома в случае, если дверь открывается отмычками.

Кстати. Дверь может быть закрыта одновременно на ключ и иметь код для открытия отмычкой. Если в коде для отмычки встречается неправильный символ (не "L" и не "R"), то открыть её отмычкой будет невозможно, но это можно попытаться использовать для имитации взаимодействия с дверью. :confused:
 

Лебедев

Участник форума
Регистрация
3 Сен 2005
Сообщения
595
Благодарности
77
Баллы
225
О каком действии речь? Ты имеешь в виду выполнение некой анимации, мол, ГГ подошёл к двери и протянул руку к ручке? Какие-либо манипуляции около двери происходят только если она открывается отмычками. При открывании двери, запертой на ключ, дополнительная возня не предусмотрена.

Кондишн-функция вызывается в момент, когда ГГ подходит к двери, берёт её в фокус, а игрок нажимает ЛКМ. Если функция вернула 1, взаимодействие с дверью разрешено, но это не означает, что оно произойдёт. Далее, если дверь заперта, следуют проверки на наличие ключа и/или отмычки в инвентаре ГГ. Их производит движок. Разумеется, инстанция ключа и/или код для отмычки должны быть прописаны свойствах двери. В Г2 также следует проверка на наличие навыка взлома в случае, если дверь открывается отмычками.

Кстати. Дверь может быть закрыта одновременно на ключ и иметь код для открытия отмычкой. Если в коде для отмычки встречается неправильный символ (не "L" и не "R"), то открыть её отмычкой будет невозможно, но это можно попытаться использовать для имитации взаимодействия с дверью. :confused:

Если функция вернула 1, взаимодействие с дверью разрешено - Хорошо.
Теперь вопрос, куда и в какую переменную по-умолчанию функция conditionFunc вернула 1 или 0? (чтобы уже по-умолчанию использовать функцию conditionFunc)

Мне нужно знать её название, чтобы на неё завязать проверку (было действие с дверью) и далее у меня будет активироваться вся последовательность действий.

P.S. conditionFunc (название функции) не прописано ни на одной из оригинальных карт - conditionFunc (без названия функции) использует по-умолчанию.

Если ставится своя функция, вместо по-умолчанию conditionFunc нужно повторять всё, что делает движок т.е. Если функция вернула 1, взаимодействие с дверью разрешено, но это не означает, что оно произойдёт. Далее, если дверь заперта, следуют проверки на наличие ключа и/или отмычки в инвентаре ГГ. Все действия выше указанные теперь должна произвести новая функция пользователя.

PS: Что же до "изучения основ", то я их начал изучать в 1978 году. А в 1982 году у меня уже были внедрения. Причем в очень серьезное производство.

1. Предоставь доказательства, что у тебя были какие-то наработки или достижения.
2. Предоставь код (скрипты) как NPC у тебя открывают двери.

В оригинальных скриптах об открывании дверей нет и слова (т.к. первое где должно было быть указано это в ZS_RunToWP.d т.к. при встрече с дверями NPC их открывают).

Т.к. движок "закрывает" все двери на загруженной локации, а на деле переводит все двери в исходное состояние.

У Нас гений разобравший и собравший движок Готики 2 появился.
 
Последнее редактирование:

Ax7is

Участник форума
Регистрация
29 Окт 2014
Сообщения
101
Благодарности
15
Баллы
185
Кто знает, есть ли где-нибудь инструкция по объединению модов?)
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
Кто знает, есть ли где-нибудь инструкция по объединению модов?)
она довольно проста:
разбери штук 5-6 разновидных модов, посмотри чем отличаются, как реализованы и.... собери новый из всех 5-6...
ГлобалМод именно так и собирался.
 

hell9999

Участник форума
Регистрация
12 Апр 2008
Сообщения
2.049
Благодарности
1.169
Баллы
340
1. Предоставь доказательства, что у тебя были какие-то наработки или достижения.
2. Предоставь код (скрипты) как NPC у тебя открывают двери.
Господин Лебедев, прошу прощения, что вмешиваюсь в чужую беседу, но...Вам не кажется, что Вы слишком наглеете? Здесь никто никому ничего не должен. И в ультимативной форме что-то требовать - это моветон. Вы приходите сюда за ответами на свои вопросы - будьте вежливы и предупредительны. Ибо это Вам нужно получить ответы на вопросы, а не нам. Но учитывая Ваш подход к делу и постоянные наезды на тех, кто хоть как-то пытается Вам помочь (не готовым кодом, а именно попытками пробудить Ваш собственный интеллект), я думаю Вы скоро будете вопрошать в пустоту.
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
вмешиваюсь в чужую беседу
Смиритесь и пропускайте мимо ушей опусы господина Лебедева, зато от других уважаемых камрадов с 80 уровнем терпения можно почерпнуть много полезной информации *thumbs up*
А вообще чтобы не засирать эту ветку хорошо бы создать отдельную "Вопросы Лебедева по модостроению" для самых терпеливых :D
 

DoomDreams

Участник форума
Регистрация
16 Янв 2011
Сообщения
21
Благодарности
0
Баллы
150
Уважаемые модостроители, не подскажете ли, что нужно сделать, чтобы удалить световые эффекты при взятии заклинания и руны "копье спящего" в возвращении 1.1 и ребалансах. Уж очень сильно они мешают при игре с DX11, а еще и ФПС сажают. Заранее спасибо.
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
Уважаемые модостроители, не подскажете ли, что нужно сделать, чтобы удалить световые эффекты при взятии заклинания и руны "копье спящего" в возвращении 1.1 и ребалансах. Уж очень сильно они мешают при игре с DX11, а еще и ФПС сажают. Заранее спасибо.
Я ждал этого вопроса.
Вот например обычная руна из ночь ворона:
Код:
instance ItRu_Thunderstorm(C_Item)
{
   name = NAME_Rune;
   mainflag = ITEM_KAT_RUNE;
   flags = 0;
   value = Value_Ru_Thunderstorm;
   visual = "ItRu_Water05.3DS";
   material = MAT_STONE;
   spell = SPL_Thunderstorm;
   mag_circle = 3;
   wear = WEAR_EFFECT;
   effect = "SPELLFX_WEAKGLIMMER_BLUE";
   description = NAME_SPL_Thunderstorm;
   text[0] = NAME_Mag_Circle;
   count[0] = mag_circle;
   text[1] = NAME_Manakosten;
   count[1] = SPL_Cost_Thunderstorm;
   text[2] = NAME_Damage;
   count[2] = SPL_DAMAGE_Thunderstorm;
   text[5] = NAME_Value;
   count[5] = value;
};
удали строку
effect = "SPELLFX_WEAKGLIMMER_BLUE";
И тогда будет без эффекта
 

DoomDreams

Участник форума
Регистрация
16 Янв 2011
Сообщения
21
Благодарности
0
Баллы
150
удали строку
effect = "SPELLFX_WEAKGLIMMER_BLUE";
И тогда будет без эффекта
Эту строчку в файлах скриптов мода удалить надо? С помощью какой программы, да и возможно ли создание мини патча?
 

MEG@VOLT

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

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Теперь вопрос, куда и в какую переменную по-умолчанию функция conditionFunc вернула 1 или 0? (чтобы уже по-умолчанию использовать функцию conditionFunc)

Мне нужно знать её название, чтобы на неё завязать проверку (было действие с дверью) и далее у меня будет активироваться вся последовательность действий.
Это точно не троллинг? Ты не прикалываешься? Как можно на полном серьёзе задавать такие вопросы?

Функция типа int сама по себе принимает какое-то значение и её можно использовать в условиях наравне с переменной:
if(переменная == TRUE) или if(функция == TRUE)

Поскольку твоя функция прописана в скриптах, ты можешь использовать её в необходимых тебе целях, просто проверив её значение в условии.

Никакой "conditionFunc по-умолчанию" не существует. Если в свойствах объекта ничего не прописано, то движок в скриптах ничего не ищет. Если прописано допустимое название функции, то движок будет искать ИМЕННО её и ТОЛЬКО её.
 

Kreol Nekr

Участник форума
Регистрация
21 Ноя 2014
Сообщения
229
Благодарности
109
Баллы
190
Не знаю, поможете, нет. В общем столкнулся с такой проблемой:
Захотел сделать в готику индикатор времени. Написал функцию для него, Поставил триггер в Хоринисе назвал его B_TIME, прописал в инициализацию мира, и закольцевал с обоих сторон. Но почему то индикатор времени на экране после загрузки появляется лишь на 2 секунды потом исчезает. Подскажите, может быть что то я не так сделал. Функцию на перебор времени брал отсюда, только вот с какой страницы не запомнил.
 

Вложения

  • у.png
    у.png
    34,3 KB · Просмотры: 106
Сверху Снизу