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

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

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

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
Но её срок действия 1 час. Изначально имеем стрелу ItRw_Addon_MagicArrow1, через час она становится ItRw_Arrow (очень сложно понять).
Если я сейчас правильно помню, то при использовании магических стрел они расходуются и идут в счетчик функции, как только значение текущего числа маг., стрел обнуляется двиг/или функция которая отслеживает это переводит работу арбалета/лука с магических стрел на обычные..
Т.е. в твоем случае есть два решения:
1. Переписать функцию Ammoution-как-то там, под себя..
2. Создать собственный итем стрел(инстанцию), и использовать ее с исключением в этой функции..
Наверное так, не проверял...

И уже интересно как через весь город протянуть триггер, до корабля паладинов? (чтобы глобальный триггер не наложился на триггер перехода на другую локацию в корабле паладинов)
А написать свои триггерные функции проблема и вызывать их из конкретного триггера или события в игре ?!

Зы, Примеры для всех твоих вопросов есть в игре(в обеих частях), просто надо быть чуток внимательнее и смотреть где, что и как сделано.. ;)
 

Лебедев

Участник форума
Регистрация
3 Сен 2005
Сообщения
595
Благодарности
77
Баллы
225
Если я сейчас правильно помню, то при использовании магических стрел они расходуются и идут в счетчик функции, как только значение текущего числа маг., стрел обнуляется двиг/или функция которая отслеживает это переводит работу арбалета/лука с магических стрел на обычные..
Т.е. в твоем случае есть два решения:
1. Переписать функцию Ammoution-как-то там, под себя..
2. Создать собственный итем стрел(инстанцию), и использовать ее с исключением в этой функции..
Наверное так, не проверял...

Код:
func void equip_bestarrow(var C_Item bow)
{
   if(Npc_HasItems(hero,itrw_poisonarrow03) >= 1)
   {
     bow.munition = itrw_poisonarrow03;
     bow.inv_animate = 3;
   }
   else if(Npc_HasItems(hero,itrw_poisonarrow02) >= 1)
   {
     bow.munition = itrw_poisonarrow02;
     bow.inv_animate = 2;
   }
   else if(Npc_HasItems(hero,itrw_poisonarrow01) >= 1)
   {
     bow.munition = itrw_poisonarrow01;
     bow.inv_animate = 1;
   }
   else
   {
     bow.munition = ItRw_Arrow;
     bow.inv_animate = 0;
   };
};

Если не ошибаюсь на этот вариант сейчас ссылка была?


А написать свои триггерные функции проблема и вызывать их из конкретного триггера или события в игре ?!

Зы, Примеры для всех твоих вопросов есть в игре(в обеих частях), просто надо быть чуток внимательнее и смотреть где, что и как сделано.. ;)

Триггеры мною ни разу не использовались, вот по этому мне и нужна пошаговая инструкция (чтобы без экспериментов и так вес стрел при активном луке не могу добавить т.к. число стрел у ГГ в инвентаре игнорируется и выводится число всех стрел по всем мирам и из-за этого пришлось отказаться от идеи веса у стрел и болтов)

Т.к. даже если через глобальный триггер выводить вес стрел и болтов, то будет один глюк - постоянно на экране будет выводится вес ГГ (без перерыва). А вывести данные в параметры игрока клавиша "B" не могу т.к. не пойму как указывается движку "вывести определённую переменную".

MEG@VOLTПользуйся уже тегами код!
 
Последнее редактирование модератором:

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
Если не ошибаюсь на этот вариант сейчас ссылка была?
Нет, это откуда вообще?
Глянул сейчас в скриптах, похоже что их смена происходит на уровне движка, а не в скриптах..

Триггеры мною ни разу не использовались, вот по этому мне и нужна пошаговая инструкция
Укур-Мухоморыч, ранее писал такую: https://worldofplayers.ru/threads/31401/
Спешл для дико кипящих чайников модостроя, но ни что не мешает ее немного изменять под себя..
 

Лебедев

Участник форума
Регистрация
3 Сен 2005
Сообщения
595
Благодарности
77
Баллы
225
Нет, это откуда вообще?
Глянул сейчас в скриптах, похоже что их смена происходит на уровне движка, а не в скриптах..

Это вариант выбора лучшей амуниции на основе функции которая вызывается через одевание лука и его снятие.

Укур-Мухоморыч, ранее писал такую: https://worldofplayers.ru/threads/31401/
Спешл для дико кипящих чайников модостроя, но ни что не мешает ее немного изменять под себя..


Вот почему мною и спросилось, может у кого-то сохранились изображения с указанной темы.

"Далее раскрываем: zCTriggerBase (abstract) -> zCTrigger и выделяем oCTriggerScript как на скриншоте ниже:

без изображения сложновато будет понять


На данном скриншоте основные параметры обведены рамкой либо подчеркнуты, но в любом случае и остальные параметры лучше выставить также.

И снова ссылка на изображение которого нет.

Итого полноценно понять урок не возможно.
 

MaGoth

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

В оригинале есть только это:
Код:
func void B_CreateAmmo(var C_Npc slf)
{
    var C_Item rangedWeapon;
    if(Npc_IsInFightMode(slf,FMODE_FAR))
    {
        rangedWeapon = Npc_GetReadiedWeapon(slf);
    }
    else if(Npc_HasEquippedRangedWeapon(slf))
    {
        rangedWeapon = Npc_GetEquippedRangedWeapon(slf);
    }
    else
    {
        return;
    };
    if(rangedWeapon.munition == ItRw_Arrow)
    {
        if(Npc_HasItems(slf,ItRw_Arrow) < 10)
        {
            CreateInvItems(slf,ItRw_Arrow,10);
        };
    }
    else if(rangedWeapon.munition == ItRw_Bolt)
    {
        if(Npc_HasItems(slf,ItRw_Bolt) < 10)
        {
            CreateInvItems(slf,ItRw_Bolt,10);
        };
    };
};


А так же это что касается магического стрелкового..
Код:
instance ItRw_Arrow(C_Item)
{
    name = "Стрела";
    mainflag = ITEM_KAT_MUN;
    flags = ITEM_BOW | ITEM_MULTI;
    value = Value_Pfeil;
    visual = "ItRw_Arrow.3ds";
    material = MAT_WOOD;
    description = name;
    text[5] = NAME_Value;
    count[5] = value;
};

instance ItRw_Addon_MagicArrow(C_Item)
{
    name = "Магическая стрела";
    mainflag = ITEM_KAT_MUN;
    flags = ITEM_BOW | ITEM_MULTI;
    wear = WEAR_EFFECT;
    effect = "SPELLFX_ARROW";
    value = Value_Pfeil;
    visual = "ItRw_Arrow.3ds";
    material = MAT_WOOD;
    description = name;
    text[5] = NAME_Value;
    count[5] = value;
};

instance ItRw_Addon_FireArrow(C_Item)
{
    name = "Огненная стрела";
    mainflag = ITEM_KAT_MUN;
    flags = ITEM_BOW | ITEM_MULTI;
    wear = WEAR_EFFECT;
    effect = "SPELLFX_FIREARROW";
    value = Value_Pfeil;
    visual = "ItRw_Arrow.3ds";
    material = MAT_WOOD;
    description = name;
    text[5] = NAME_Value;
    count[5] = value;
};

instance ItRw_Addon_MagicBow(C_Item)
{
    name = "Магический лук";
    mainflag = ITEM_KAT_FF;
    flags = ITEM_BOW;
    material = MAT_WOOD;
    value = Value_MagicBow;
    damageTotal = Damage_MagicBow;
    damagetype = DAM_MAGIC;
    munition = ItRw_Addon_MagicArrow;
    wear = WEAR_EFFECT;
    effect = "SPELLFX_BOW";
    cond_atr[2] = ATR_DEXTERITY;
    cond_value[2] = Condition_MagicBow;
    visual = "ItRw_Bow_H_04.mms";
    description = name;
    text[2] = NAME_Damage;
    count[2] = damageTotal;
    text[3] = NAME_Dex_needed;
    count[3] = cond_value[2];
    text[5] = NAME_Value;
    count[5] = value;
};

instance ItRw_Addon_FireBow(C_Item)
{
    name = "Огненный лук";
    mainflag = ITEM_KAT_FF;
    flags = ITEM_BOW;
    material = MAT_WOOD;
    value = Value_FireBow;
    damageTotal = Damage_FireBow;
    damagetype = DAM_MAGIC;
    munition = ItRw_Addon_FireArrow;
    wear = WEAR_EFFECT;
    effect = "SPELLFX_FIREBOW";
    cond_atr[2] = ATR_DEXTERITY;
    cond_value[2] = Condition_FireBow;
    visual = "ItRw_Bow_H_04.mms";
    description = name;
    text[2] = NAME_Damage;
    count[2] = damageTotal;
    text[3] = NAME_Dex_needed;
    count[3] = cond_value[2];
    text[5] = NAME_Value;
    count[5] = value;
};
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Это вариант выбора лучшей амуниции на основе функции которая вызывается через одевание лука и его снятие.

А не происходит ли сброс параметра munition лука после сохранения-загрузки?

После изготовления стрелы, её специальные способности через час перестают работать и она становится обычной стрелой.

Не вижу способа нормально реализовать такой подход. Да, с помощью специальной переменной и циклического триггера можно организовать таймер, после обнуления которого один итем (магическая стрела) из инвентаря ГГ удалится, а другой итем (обычная стрела) туда добавится. Но это только в том случае, если магическая стрела будет находиться в инвентаре ГГ. А как быть, если пытливый ум игрока заставит ГГ выбросить магическую стрелу на землю или переложить её в сундук? А что, если на момент обнуления таймера ГГ будет держать стрелу и лук в руках? Также неясно, как отреагирует движок, если на момент удаления стрелы из инвентаря инвентарь будет открыт и стрела будет в фокусе.
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
А можно вкратце, буквально 2-3 словами, объяснить что нужно тов. Лебедеву? Ибо читать много, и мне лень, а если объясните могу с большой вероятностью подказать чо как сделать чтоб работало, ибо в целом как понял - ничего сложного тут не надо делать.
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
Повесить состояние отравления на атакованного НПЦ можно аналогично когтю белиара. Через восприятие атаки отследить тип стрелы и повесить аивар отравления с количеством яда, который будет отниматься вместе с ХП атакованного НПЦ через функцию восприятия ГГ рядом с НПЦ.. Ну вообщем так у меня реализовано *Friendship*
 

Phantom95

Участник форума
Регистрация
31 Июл 2014
Сообщения
2.227
Благодарности
1.910
Баллы
370
Как реализовать добычу руды в г1? Точнее можно ли всему классу моба прописать скрипт на рандомное выпадение руды и ограниченное кол-во ударов по жиле?
 

Лебедев

Участник форума
Регистрация
3 Сен 2005
Сообщения
595
Благодарности
77
Баллы
225
А можно вкратце, буквально 2-3 словами, объяснить что нужно тов. Лебедеву? Ибо читать много, и мне лень, а если объясните могу с большой вероятностью подказать чо как сделать чтоб работало, ибо в целом как понял - ничего сложного тут не надо делать.

вот немного их текста квеста:

Боспер: - К стреле? Первый раз вижу, чтобы так приманку использовали. Готово, забирай стрелу, только чехол с неё не снимай, на воздухе запах быстро выветривается.(ГГ получает стрелу-приманку)

ГГ: - Спасибо! (конец диалога)

Теперь ГГ должен как можно быстрее добраться до пляжа с пиратами иначе запах приманки выветрится и это приведёт к провалу (1 час). ГГ прицеливается из лука, стрелой-приманкой в ближайшего пирата и стреляет. Даже если он не попал, то всё равно из моря на берег входят несколько огненных ящеров и убивают всех пиратов.

Нужно реализация стрелы которая ровно через 60 минут станет обычной т.е. ItRw_Addon_MagicArrow1 имеем, через час она становится ItRw_Arrow (но, она должна стать ItRw_Arrow в любом случае через 60 минут, имеет ГГ её, положил в сундук, выкинул на землю и т.д.) (в готике всё реализовано через диалоги, а в случаи когда касается предмета, предмет не может через определённое время изменяться)

Повесить состояние отравления на атакованного НПЦ можно аналогично когтю белиара. Через восприятие атаки отследить тип стрелы и повесить аивар отравления с количеством яда, который будет отниматься вместе с ХП атакованного НПЦ через функцию восприятия ГГ рядом с НПЦ.. Ну вообщем так у меня реализовано *Friendship*

Немного не в тему.

UPD: всё ещё ожидаю как прописать проверку по всем сундукам в игровом мире на поиск определённого предмета и как прописать проверку по лежащим предметам в игровом мире на поиск определённого предмета. (Такого мною в скриптах не встречалось (у немцев, поляков и русских)) (IKARUS и т.д. не предлагать т.к. это перехват данных на которые разрешения немцы не давали = подсудное дело по Закону РФ "Об авторском праве и смежных правах*")
 
Последнее редактирование:

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
вот немного их текста квеста:

Боспер: - К стреле? Первый раз вижу, чтобы так приманку использовали. Готово, забирай стрелу, только чехол с неё не снимай, на воздухе запах быстро выветривается.(ГГ получает стрелу-приманку)

ГГ: - Спасибо! (конец диалога)

Теперь ГГ должен как можно быстрее добраться до пляжа с пиратами иначе запах приманки выветрится и это приведёт к провалу (1 час). ГГ прицеливается из лука, стрелой-приманкой в ближайшего пирата и стреляет. Даже если он не попал, то всё равно из моря на берег входят несколько огненных ящеров и убивают всех пиратов.

Нужно реализация стрелы которая ровно через 60 минут станет обычной т.е. ItRw_Addon_MagicArrow1 имеем, через час она становится ItRw_Arrow (но, она должна стать ItRw_Arrow в любом случае через 60 минут, имеет ГГ её, положил в сундук, выкинул на землю и т.д.) (в готике всё реализовано через диалоги, а в случаи когда касается предмета, предмет не может через определённое время изменяться)



Немного не в тему.

UPD: всё ещё ожидаю как прописать проверку по всем сундукам в игровом мире на поиск определённого предмета и как прописать проверку по лежащим предметам в игровом мире на поиск определённого предмета. (Такого мною в скриптах не встречалось (у немцев, поляков и русских)) (IKARUS и т.д. не предлагать т.к. это перехват данных на которые разрешения немцы не давали = подсудное дело по Закону РФ "Об авторском праве и смежных правах*")
Не хочешь юзать Икарусы и тд, забудь о своей идеи. А так, можно только проверять в инвентаре ли она в циклическом тригере.

added.
И да, Gothic Sourcer тоже не юзай, ибо немцы не делали его, он сделан из исходников готики.
 

Лебедев

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

added.
И да, Gothic Sourcer тоже не юзай, ибо немцы не делали его, он сделан из исходников готики.

Перехват данных в оперативной памяти, этот момент может послужить уголовным делом. А Gothic Sourcer это фанатов творчество. Спасибо. Текст квеста передан на переписывание.
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
Немного не в тему.
Это голова у тебя думает "немного не в тему", ибо тебе описали полностью рабочее решение, + как я уже упоминал выше, возьми мод Яктиль и глянь как там сделано..

(IKARUS и т.д. не предлагать т.к. это перехват данных на которые разрешения немцы не давали = подсудное дело по Закону РФ "Об авторском праве и смежных правах*")
Прежде чем что-то говорить о правах, надо знать и понимать как работает наше право, ну и немецкое конечно.. ::)
По остальному добавить нечего, один ахтунг..*sorry*
 

Лебедев

Участник форума
Регистрация
3 Сен 2005
Сообщения
595
Благодарности
77
Баллы
225
Сделано как описано в теме: https://worldofplayers.ru/threads/31401/
Но не ясно, работает ли описанное. Т.к. ничего на экран не выводится.
Множество ссылок на изображения, а их нет.
Прошу пожалуйста, участник форума Myxomop будь ласка, восстанови изображения.
Часы из твоего примера нужны, чтобы квесты на время легче было выполнять. Взглянуть игроку легче в нижнюю часть экрана "на таймер", чем каждый раз вызывать квесты и смотреть время. Из-за этого таймер и нужен на главном экране игры Gothic 2 Ночь Ворона.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Текст квеста передан на переписывание.

Упрощение работы со стрелой произойдёт, если убрать превращение магической стрелы в обычную (одной инстанции предмета в другую). Создаёшь инстанцию просроченной стрелы и даёшь её по ходу квеста. На время работы таймера подменяешь параметры класса C_Item var string name и var string text[6]. По истечении таймера возвращаешь исходные значения этих параметров. Таким образом магическая стрела превращается в просроченную магическую стрелу без замены инстанции.
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Перехват данных в оперативной памяти, этот момент может послужить уголовным делом. А Gothic Sourcer это фанатов творчество. Спасибо. Текст квеста передан на переписывание.
Причем тут перехват? Без Икарусов все сундуки не просканировать. Верней сундуки то можно, предварительно написав список ВСЕХ сундуков в мире, а вот сам мир уже никак.
 

Лебедев

Участник форума
Регистрация
3 Сен 2005
Сообщения
595
Благодарности
77
Баллы
225
Причем тут перехват? Без Икарусов все сундуки не просканировать. Верней сундуки то можно, предварительно написав список ВСЕХ сундуков в мире, а вот сам мир уже никак.

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

Упрощение работы со стрелой произойдёт, если убрать превращение магической стрелы в обычную (одной инстанции предмета в другую). Создаёшь инстанцию просроченной стрелы и даёшь её по ходу квеста. На время работы таймера подменяешь параметры класса C_Item var string name и var string text[6]. По истечении таймера возвращаешь исходные значения этих параметров. Таким образом магическая стрела превращается в просроченную магическую стрелу без замены инстанции.

Теперь главное осталось понять, как это "реализовать" подменить параметры. Тут игра, а не разработка вируса ведётся. Или вовсе сделать стрелу постоянную (раз временная, очень проблемная).
 

cool_er

Участник форума
Регистрация
23 Мар 2015
Сообщения
118
Благодарности
42
Баллы
190
Тут игра, а не разработка вируса ведётся.
Настоятельно прошу вас удалить ваш антивирус, ОС, драйвера, т.к. все они сканируют память и являются вирусами. А если серьёзно, то лучше выкидывай Винду и устанавливай линукс с бесплатными программами(использование нелегально полученного ПО тоже легально наказуемо).
 
Сверху Снизу