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

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, доброго времени суток!
    Стартовал новый литературный конкурс от "Ордена Хранителей" - "Пираты Миртанского моря".
    Каждый может принять в нём участие и снискать славу и уважение, а в случае занятия призового места ещё и получить награду. Дерзайте
  • Дорогие друзья, год подходит к концу, и пришло время подвести его итоги и наградить достойных

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

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

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
1.663
Благодарности
2.496
Баллы
380
Trazege, а чем спавнятся спецэффекты на поинты? какая функция?
Все разобрался, туда добавились горящие глаза от скелетов тоже...
 
Последнее редактирование:

Trazege

Участник форума
Регистрация
20 Фев 2008
Сообщения
1.760
Благодарности
1.394
Баллы
340
Trazege, а чем спавнятся спецэффекты на поинты? какая функция?
Все разобрался, туда добавились горящие глаза от скелетов тоже...
Со всех нпс убери спец эффекты. Вообще конечно полный бред делать нулевую точку в игровой области
 

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
1.663
Благодарности
2.496
Баллы
380
Со всех нпс убери спец эффекты. Вообще конечно полный бред делать нулевую точку в игровой области
Ну на будущее передам Дриму, чтобы не делал коодинаты больше таким образом.
 

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.183
Благодарности
2.880
Баллы
420
Вообще конечно полный бред делать нулевую точку в игровой области
это обусловлено тем, что моделирование игрового мира начато в городе. И 0-0-0 лежит в нем. Все остальные куски вне города будут также иметь координату в мировой системе 0-0-0, чтобы скрипт потом правильно сшил все куски в единый мирок без смещений.

Вы можете сюда добавить хоть Яркендар с долиной. Только координаты всех их кусков надо аккуратно трансформировать в ноль. И все вобы сместить. Возможно, через макрос какой-нибудь можно формулу пересчета придумать, чтобы пройтись по всем кускам.
 

Trazege

Участник форума
Регистрация
20 Фев 2008
Сообщения
1.760
Благодарности
1.394
Баллы
340
Кто нибудь помнит как компилировать модели, чтобы на них лод не работал?
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.410
Благодарности
3.241
Баллы
525

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.183
Благодарности
2.880
Баллы
420
Папки не помогут. Трюк работает только для Готики1. Во второй части лод отключается глобально. Это если речь про динамику.
 

hell9999

Участник форума
Регистрация
12 Апр 2008
Сообщения
2.049
Благодарности
1.170
Баллы
340
Кто нибудь помнит как компилировать модели, чтобы на них лод не работал?
Создать в соответствующей директории игры папку nolod и класть нужные модели туда. Затем компилить спейсером или игрой. К слову, со статикой asc файлов вполне себе работает данный способ. С динамикой да, не канает.
 

Trazege

Участник форума
Регистрация
20 Фев 2008
Сообщения
1.760
Благодарности
1.394
Баллы
340
Создать в соответствующей директории игры папку nolod и класть нужные модели туда. Затем компилить спейсером или игрой. К слову, со статикой asc файлов вполне себе работает данный способ. С динамикой да, не канает.

То есть с доспехами проканает? Это очень хорошо. А то многополигональные модели доспехов лод превращает в мусор.
 

redleha


Модостроитель
Регистрация
26 Фев 2008
Сообщения
735
Благодарности
666
Баллы
245
Создать в соответствующей директории игры папку nolod и класть нужные модели туда. Затем компилить спейсером или игрой. К слову, со статикой asc файлов вполне себе работает данный способ. С динамикой да, не канает.
Компилить надо исключительно Спейсером, насколько я помню.
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
Кто нибудь помнит как компилировать модели, чтобы на них лод не работал?
компиль в ГЕ с разным уровнем вложенности лода(настраивается все через его иниш-ки), а потом через ГС конверть в Г2 и никаких проблем не будет..

Компилить надо исключительно Спейсером, насколько я помню.
это актуально только в случае если требуется настройка материалов брони, для отлета стрел, болтов и прочего..
 

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.183
Благодарности
2.880
Баллы
420
Освежу методику. Можете в закладки куда-нибудь запихнуть:
Например, мне нужно скомпилировать тело HUM_BODY_NAKED0.ASC, чтобы потом в обычной игре LOD на него не распространялся.

Создаю текстовый файл в той же папке - ANIMS - HUM_BODY_NAKED0-params.INI.
В нем пишу:
[PROGMESH]
LODStrength=0
LODStartDistance2=0
LODDynCollapseSpeed=0
LODMinVerts=0

Запускаю игру под движком GE, вызываю тело, забираю результат в папке ANIMS/_compiled. На это тело потом в обычной Готике 1 LOD не действует.
Например, в своих видео ремастера, где скачет девка, она так и скомпилирована. Без этого LOD ее обжирает.

В Готике 2 LOD не действует на модель главного героя, но жрет NPC. Выключается только глобально через СП.
 

Ласковый Мороз

Участник форума
Регистрация
21 Апр 2010
Сообщения
91
Благодарности
3
Баллы
155
Привет, форумчанины. Хотел узнать что тут можно сделать


instance ItAr_Armor(C_Item)
{
name = "Доспехи";
mainflag = ITEM_KAT_ARMOR;
flags = 0;
protection[PROT_EDGE] = 50;
protection[PROT_BLUNT] = 50;
protection[PROT_POINT] = 50;
protection[PROT_FIRE] = 20;
protection[PROT_MAGIC] = 5;
value = value_itar_sld_h;
wear = WEAR_TORSO;
visual = "ItAr_Sld_H.3ds";
visual_change = "Armor.asc";
visual_skin = 0;
material = MAT_METAL;
description = name;
text[0] = "Отскок стрел: ";
count[0] = materialn;
text[1] = NAME_Prot_Edge;
count[1] = protection[PROT_EDGE];
text[2] = NAME_Prot_Point;
count[2] = protection[PROT_POINT];
text[3] = NAME_Prot_Fire;
count[3] = protection[PROT_FIRE];
text[4] = NAME_Prot_Magic;
count[4] = protection[PROT_MAGIC];

};


хотел бы сделать чтоб через count[0] = materialn; можно было смотреть есть отскок от стрел или нет, поскольку material показывает значение цифровое константы. Как я понял функции засовывать незя в инстансы итемов только через онюз но он не будет работать как надо, а функцию для проверки и возвращения эквипа похоже писать в любом случае надо? Значит никак нельзя только текстом?


func void materialn()
{
if(material == 2)
{
materialn = "Да";
};
else if
{
materialn = "Нет";
};
};

Ну чтоб типо такого грубо говоря)
 

D36


Модостроитель
Регистрация
3 Дек 2014
Сообщения
2.224
Благодарности
3.456
Баллы
485
materialn = "Да";
materialn = "Нет";
count принимает только значения типа int и не работает со string.
PHP:
class C_Item
{
    var int id;
    var string name;
    var string nameID;
    var int hp;
    var int hp_max;
    var int mainflag;
    var int flags;
    var int weight;
    var int value;
    var int damagetype;
    var int damageTotal;
    var int damage[DAM_INDEX_MAX];
    var int wear;
    var int protection[PROT_INDEX_MAX];
    var int nutrition;
    var int cond_atr[3];
    var int cond_value[3];
    var int change_atr[3];
    var int change_value[3];
    var func magic;
    var func on_equip;
    var func on_unequip;
    var func on_state[4];
    var func owner;
    var int ownerGuild;
    var int disguiseGuild;
    var string visual;
    var string visual_change;
    var string effect;
    var int visual_skin;
    var string scemeName;
    var int material;
    var int munition;
    var int spell;
    var int range;
    var int mag_circle;
    var string description;
    var string text[6];
    var int count[6];
    var int inv_zbias;
    var int inv_rotx;
    var int inv_roty;
    var int inv_rotz;
    var int inv_animate;
};
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.410
Благодарности
3.241
Баллы
525
text[0] = "Отскок стрел: ";
Напиши
Daedalus:
text[0] = "Отражает стрелы.";
там, где это нужно.

Кстати, как это логически согласуется с этим:
Daedalus:
protection[PROT_POINT] = 50;
 

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
1.663
Благодарности
2.496
Баллы
380
Кто знает, где меняется продолжительность светового дня в готике? (Время рассвета/заката?) В В2 сдвинули на 2 часа и игроки давно просят вернуть, а никто не знает.
 
Последнее редактирование:

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.176
Благодарности
5.697
Баллы
910
Никогда бы не подумал, что в В2 сдвинуто время, сколько играл, такого не замечал. Я думаю, что где-то в скриптах сдвинуто время. Ну или связка триггер+функция сдвигает время. В моде Монастырь так сделано, чтобы на одном острове всегда ночь была. А Тразег разве не хочет сознаваться, где он сдвинул?:D
 

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
1.663
Благодарности
2.496
Баллы
380
N1kX, не помнит.
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.176
Благодарности
5.697
Баллы
910
Чем проявляется этот сдвиг на 2 часа? В игре ж все равно время идет от 0-24.
А в скриптах ничего похожего нету?
Посмотрел мельком через тотал. Нашел функцию
Daedalus:
func void b_movetimeahead() {
    if(wld_istime(0, 0, 0, 30)) {
        wld_settime(1, 0);
    }
    else if(wld_istime(0, 30, 1, 0)) {
        wld_settime(1, 30);
    }
    else if(wld_istime(1, 0, 1, 30)) {
        wld_settime(2, 0);
    }
    else if(wld_istime(1, 30, 2, 0)) {
        wld_settime(2, 30);
    }
    else if(wld_istime(2, 0, 2, 30)) {
        wld_settime(3, 0);
    }
    else if(wld_istime(2, 30, 3, 0)) {
        wld_settime(3, 30);
    }
    else if(wld_istime(3, 0, 3, 30)) {
        wld_settime(4, 0);
    }
    else if(wld_istime(3, 30, 4, 0)) {
        wld_settime(4, 30);
    }
    else if(wld_istime(4, 0, 4, 30)) {
        wld_settime(5, 0);
    }
    else if(wld_istime(4, 30, 5, 0)) {
        wld_settime(5, 30);
    }
    else if(wld_istime(5, 0, 5, 30)) {
        wld_settime(6, 0);
    }
    else if(wld_istime(5, 30, 6, 0)) {
        wld_settime(6, 30);
    }
    else if(wld_istime(6, 0, 6, 30)) {
        wld_settime(7, 0);
    }
    else if(wld_istime(6, 30, 7, 0)) {
        wld_settime(7, 30);
    }
    else if(wld_istime(7, 0, 7, 30)) {
        wld_settime(8, 0);
    }
    else if(wld_istime(7, 30, 8, 0)) {
        wld_settime(8, 30);
    }
    else if(wld_istime(8, 0, 8, 30)) {
        wld_settime(9, 0);
    }
    else if(wld_istime(8, 30, 9, 0)) {
        wld_settime(9, 30);
    }
    else if(wld_istime(9, 0, 9, 30)) {
        wld_settime(10, 0);
    }
    else if(wld_istime(9, 30, 10, 0)) {
        wld_settime(10, 30);
    }
    else if(wld_istime(10, 0, 10, 30)) {
        wld_settime(11, 0);
    }
    else if(wld_istime(10, 30, 11, 0)) {
        wld_settime(11, 30);
    }
    else if(wld_istime(11, 0, 11, 30)) {
        wld_settime(12, 0);
    }
    else if(wld_istime(11, 30, 12, 0)) {
        wld_settime(12, 30);
    }
    else if(wld_istime(12, 0, 12, 30)) {
        wld_settime(13, 0);
    }
    else if(wld_istime(12, 30, 13, 0)) {
        wld_settime(13, 30);
    }
    else if(wld_istime(13, 0, 13, 30)) {
        wld_settime(14, 0);
    }
    else if(wld_istime(13, 30, 14, 0)) {
        wld_settime(14, 30);
    }
    else if(wld_istime(14, 0, 14, 30)) {
        wld_settime(15, 0);
    }
    else if(wld_istime(14, 0, 15, 0)) {
        wld_settime(15, 30);
    }
    else if(wld_istime(15, 0, 15, 30)) {
        wld_settime(16, 0);
    }
    else if(wld_istime(15, 30, 16, 0)) {
        wld_settime(16, 30);
    }
    else if(wld_istime(16, 0, 16, 30)) {
        wld_settime(17, 0);
    }
    else if(wld_istime(16, 30, 17, 0)) {
        wld_settime(17, 30);
    }
    else if(wld_istime(17, 0, 17, 30)) {
        wld_settime(18, 0);
    }
    else if(wld_istime(17, 30, 18, 0)) {
        wld_settime(18, 30);
    }
    else if(wld_istime(18, 0, 18, 30)) {
        wld_settime(19, 0);
    }
    else if(wld_istime(18, 30, 19, 0)) {
        wld_settime(19, 30);
    }
    else if(wld_istime(19, 0, 19, 30)) {
        wld_settime(20, 0);
    }
    else if(wld_istime(19, 30, 20, 0)) {
        wld_settime(20, 30);
    }
    else if(wld_istime(20, 0, 20, 30)) {
        wld_settime(21, 0);
    }
    else if(wld_istime(20, 30, 21, 0)) {
        wld_settime(21, 30);
    }
    else if(wld_istime(21, 0, 21, 30)) {
        wld_settime(22, 0);
    }
    else if(wld_istime(21, 30, 22, 0)) {
        wld_settime(22, 30);
    }
    else if(wld_istime(22, 0, 22, 30)) {
        wld_settime(23, 0);
    }
    else if(wld_istime(22, 30, 23, 0)) {
        wld_settime(23, 30);
    }
    else if(wld_istime(23, 0, 23, 30)) {
        wld_settime(0, 0);
    }
    else if(wld_istime(23, 30, 0, 0)) {
        wld_settime(0, 30);
    };
};
Может это оно. Большего не смог рассмотреть из-за отсутствия скриптов.
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.176
Благодарности
5.697
Баллы
910
Хочу спросить. Здесь нет ошибки в условии? Я понимаю, что конструкция if ( условие) { действие };
Daedalus:
func int b5_9000_mage_ring_info_condition()
{
    if(Npc_HasItems(other,itmi_beliarring) > 0)
    && (hero.guild == GIL_BAD)
    {
        return TRUE;
    };
};
Хотя правильней будет в общих скобках условие
Daedalus:
func int b5_9000_mage_ring_info_condition()
{
    if((Npc_HasItems(other,itmi_beliarring) > 0)
    && (hero.guild == GIL_BAD))
    {
        return TRUE;
    };
};
Только вот в игре, что так, что сяк, диалог происходит.
 
Сверху Снизу