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

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

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
Еще немного подключил мозг.
Видимо, верным решением будет:

Daedalus:
const int VALUE_ITEM_MagicRegen_03 = 1000;


value = VALUE_ITEM_MagicRegen_03;
count[5] = VALUE_ITEM_MagicRegen_03;
бинго)))
 

Lucidante

Участник форума
Регистрация
27 Авг 2020
Сообщения
15
Благодарности
4
Баллы
100
Еще такой вопрос.
А как так получается, что при декомпиляции играбельного GOTHIC.dat и сразу же при его компиляции (без изменений в файлах) - появляется гора ошибок, и соответственно компиляция завершается провалом.

P.S. Разобрался, что криво работает сама декомпиляция.
Подскажите, где найти корректные декомпилированные исходники Г1?
В поиске нашел только от Г2 акелла.
 
Последнее редактирование:

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
В Г1 добавляю кольца регенерации маны.
Сам код выглядит таким образом:
Откуда уверенность, что это будет работать? ;)
Думаю, этого недостаточно. И работает оно не так, как ты это себе представляешь.
 

Lucidante

Участник форума
Регистрация
27 Авг 2020
Сообщения
15
Благодарности
4
Баллы
100
Откуда уверенность, что это будет работать? ;)
Думаю, этого недостаточно. И работает оно не так, как ты это себе представляешь.
Уже убедился. Очень странно работает всё это. Брал инфу из топика https://worldofplayers.ru/threads/36475/.
Но, как понял это для Г2а больше.

Столкнулся с тем, что конкретно переменная [ATR_REGENERATEMANA] не хочет работать сама по себе.
Еще убедился, что её значение — секунды, за которые будет восстановлено 1 мана.
Но сам атрибут [ATR_REGENERATEMANA] начинает у меня работать, почемут-то.., только после присвоения [ATR_REGENERATEHP] этому же предмету, т.е. в таком виде:
Daedalus:
func void Equip_ITMI_MagicRegen_03 ()
{
    self.attribute[ATR_REGENERATEHP] = 5;
    self.attribute[ATR_REGENERATEMANA] = 5;
};

При этом, каждые 5 сек восстанавливается по 1 хп и мп.

Пришел только к выводу, для [ATR_REGENERATEHP] поставить большое значение 99999. Тогда получается, что ХП образно не восстанавливает, но МП продолжает восстанавливать.

Но столкнулся с другой проблемой, при

Daedalus:
func void UnEquip_ITMI_MagicRegen_03()
{
    self.attribute[ATR_REGENERATEHP] = X(условно);
    self.attribute[ATR_REGENERATEMANA] = 0;
};

[ATR_REGENERATEMANA] = 0 —при снятии, полностью восстанавливает ману, без возможности её потратить, что логично. И пока не могу найти выход.

Например, еще пробовал:
для PC_HERO прописывал attribute[ATR_REGENERATEMANA] = 999999;
Для шмотки регена:
Daedalus:
func void Equip_ITMI_MagicRegen_03 ()
{
    self.attribute[ATR_REGENERATEHP] = X;
    self.attribute[ATR_REGENERATEMANA] -= 999998;
};
 
func void UnEquip_ITMI_MagicRegen_03()
{
    self.attribute[ATR_REGENERATEHP] = X;
    self.attribute[ATR_REGENERATEMANA] += 999998;
};

Казалось бы, логика рабочая, но на практике нет. При надевании идет восстановление МП, как положено, но при снятии блочится. При повторном одевании, больше не идет реген.
Прошу помощи, что почитать, или что я пропустил. Или вообще тут другая логика работы? Жду замечаний)
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.128
Благодарности
5.624
Баллы
910
Казалось бы, логика рабочая, но на практике нет. При надевании идет восстановление МП, как положено, но при снятии блочится. При повторном одевании, больше не идет реген.
Прошу помощи, что почитать, или что я пропустил. Или вообще тут другая логика работы? Жду замечаний)

Разработчики Готики до конца не реализовали регенерацию маны или здоровья.
Без каких-либо расширителей движка, лучше всего реализовать это через циклическую функцию. Что это такое, можно почитать тут
Она потребует изменение игрового мира, но позволит делать многое.
Если сделаешь такую штуку, то код будет достаточно простым.
Daedalus:
//объявляем глобальную переменную для установка факта надетого кольца
var int RegenHPMP;

func void Equip_ITMI_MagicRegen_03 ()
{
    //устанавливает факт того, что кольцо надето
    RegenHPMP = TRUE;
};

 
func void UnEquip_ITMI_MagicRegen_03()
{
    //устанавливает факт того, что кольцо снято
    RegenHPMP = FALSE;
};

//напишем простую функцию для регенерации жизней и маны
func void RegenerationGame()
{
    //если кольцо надето на герое
    if (RegenHPMP == TRUE)
    {
        //если герой не мертв
        if (hero.attribute[ATR_HITPOINTS] > 0)
        {
            //если у героя текущее здоровье меньше максимального
            if (hero.attribute[ATR_HITPOINTS] < hero.attribute[ATR_HITPOINTS_MAX])
            {
                 //восстановить 1 здоровье герою Hero
                 hero.attribute[ATR_HITPOINTS] += 1;
            };
      
            //если у героя текущей маны меньше максимального
            if (hero.attribute[ATR_MANA] < hero.attribute[ATR_MANA_MAX])
            {
                 //восстановить 1 ману герою Hero
                 hero.attribute[ATR_MANA] += 1;
            };
        };
    };
};
Потом эту же функцию просто вызываешь в функции циклического триггера B_CYCLE_FUNCTION
Daedalus:
func void B_CYCLE_FUNCTION()
{
    if (hero.attribute[ATR_HITPOINTS_MAX] == 0) //Проверка, загружен ли ГГ в мир игры. Если игра еще не загрузила ГГ в игру, значение максимальной жизни ГГ будет равно 0 и вызов триггера будет происходить до выполнения своих нужных функций. Это проверка необходима, т.к. если ГГ еще не загружен в игру и функция начнет полную отработку, возможен вылет из игры.
    {
        Wld_SendTrigger("CYCLE_TRIGGER"); //Вызов триггера c именем CYCLE_TRIGGER для зацикливания всей функции.
        return; //Выход из функции.
    };

    //Если ГГ уже загружен в игру, дальше идет полная отработка цикла, куда можно вставлять множество своих нужных функций...
    //Вызываем каждую секунду нашу функцию для регенерации
    RegenerationGame();

    Wld_SendTrigger("CYCLE_TRIGGER"); //Вызов триггера c именем CYCLE_TRIGGER для зацикливания всей функции.
};
Естественно я опустил много деталей, таких как Герой превратился в животное, герой переселился в кого-то, помер, с помощью контроля, игра находится в паузе от нажатого ESC (показывается меню игры) и пр. На базовое понятие можно понять.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Но сам атрибут [ATR_REGENERATEMANA] начинает у меня работать, почемут-то.., только после присвоения [ATR_REGENERATEHP]
Вот это для меня - новость. Я полагал, что для начала работы этой недоделанной системы нужно антивировать у ГГ навык NPC_TALENT_REGENERATE. Может, он автоматом активировался при изменении атрибутов ATR_REGENERATEMANA и ATR_REGENERATEHP?
 

Lucidante

Участник форума
Регистрация
27 Авг 2020
Сообщения
15
Благодарности
4
Баллы
100
Вот это для меня - новость. Я полагал, что для начала работы этой недоделанной системы нужно антивировать у ГГ навык NPC_TALENT_REGENERATE. Может, он автоматом активировался при изменении атрибутов ATR_REGENERATEMANA и ATR_REGENERATEHP?
Не уверен. По крайне мере в PC_HERO его нет:
Daedalus:
instance PC_Hero(Npc_Default)
{
    name[0] = "Я";
    npcType = npctype_main;
    guild = GIL_None;
    level = 0;
    voice = 15;
    id = 0;
    exp = 0;
    exp_next = 500;
    lp = 0;
    attribute[ATR_STRENGTH] = 10;
    attribute[ATR_DEXTERITY] = 10;
    attribute[ATR_MANA_MAX] = 100;
    attribute[ATR_MANA] = 2;
    attribute[ATR_REGENERATEMANA] = 999999;
    attribute[ATR_HITPOINTS_MAX] = 100;
    attribute[ATR_HITPOINTS] = 10;
    attribute[ATR_REGENERATEHP] = 0;
    Mdl_SetVisual(self,"HUMANS.MDS");
    Mdl_SetVisualBody(self,"hum_body_Naked0",4,1,"Hum_Head_Pony",9,0,-1);
    CreateInvItem(self,ItWr_Fire_Letter_01);
    CreateInvItem(self,ITEM_MagicRegen_03);
    CreateInvItem(self,ITEM_MagicRegen_02);
    CreateInvItem(self,ITEM_MagicRegen_01);
 

KILLER450

Участник форума
Регистрация
30 Окт 2020
Сообщения
23
Благодарности
0
Баллы
60
Извините не нашел подходящую тему пишу сюда. Помогите почему не работает GoMan первый раз запустил работало а потом что-то грузит и все и нечего не происходит, не знаете как пофиксить?
Пост автоматически объединён:

А самое лучшее другую прогу посоветуйте если есть. За ранее спасибо.
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Еще такой вопрос.
А как так получается, что при декомпиляции играбельного GOTHIC.dat и сразу же при его компиляции (без изменений в файлах) - появляется гора ошибок, и соответственно компиляция завершается провалом.

P.S. Разобрался, что криво работает сама декомпиляция.
Подскажите, где найти корректные декомпилированные исходники Г1?
В поиске нашел только от Г2 акелла.
Нет, просто компиляция движком готы пропускает в скрипт много ошибок, а готик сорсер - нет, так что декомпилятор тут непричом.
 

KILLER450

Участник форума
Регистрация
30 Окт 2020
Сообщения
23
Благодарности
0
Баллы
60
Пж подскажите я короче достал через VDFS текстурки сменил их закинул в игру снова через эту прогу ну почему то не работает. В чем проблема?
 

ElderGamer


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

А вообще, кокой ответ ты хочешь получить? Ты проделал ряд действий. Ошибка могла появиться на любой стадии. Возможно, не одна. Но ты не описываешь свои действия. Как те, кого ты спрашиваешь, могут догадаться, что ты там не так сделал? :)
 

KILLER450

Участник форума
Регистрация
30 Окт 2020
Сообщения
23
Благодарности
0
Баллы
60
Спасибо ну оказалось там все просто нужно когда закидываешь текстурки в игру через VDFS то нужно максимальный год выбирать и будет работать.
 

MEG@VOLT

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

Myxomop

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

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
Myxomop, это не в твою сторону камень был)) Про шрифты я знаю, что у тебя именно так сделано.
 

Mercy

Участник форума
Регистрация
16 Янв 2020
Сообщения
25
Благодарности
0
Баллы
60
Как в коде поменять экспу у мобов? Просто уровень менять или в коде константы еще есть?
1620751241728.png
 

ElderGamer


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

WoOliN

Участник форума
Регистрация
13 Окт 2012
Сообщения
347
Благодарности
196
Баллы
210
Mercy, в файле ZS_Dead.d есть функция подсчёта опыта за убийство противника.
В ней работает константа XP_PER_VICTORY. По умолчанию она равна 10.
Если её увеличить, например до 11, то за убийство противника дадут 110% опыта. Дальше сам разберёшься.
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.128
Благодарности
5.624
Баллы
910
Подскажите названия порталов в таверне Корагона и Кардифа
Задолбался, окрасил все материалы порталов в другой цвет, чтобы вычислить их, так эти падлы не окрашиваются...
Другие все окрасились без проблем...
Также не понял прикола P:_ALCHEMIST и P:ALCHEMIST_ - это типо перед и зад?
P:_ALCHEMIST - не окрасился, зато P:ALCHEMIST_ окрасился в другой цвет
1620999247367.png

нужно, чтобы в моде пофиксить восприятия в этих местах.

upd. нашел...
hafenkneipe - Кардиф
stadtkneipe - Корагон с двух входов
 
Последнее редактирование:
Сверху Снизу