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

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

Вопросы по скриптингу

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
  • Первое сообщение
  • #1
Прежде чем задавать вопросы, ознакомьтесь с документацией..
1) Читать онлайн
2) Архив с офлайн-версией(chm) во вложении
 

Вложения

  • Vam_tutor.rar
    171,6 KB · Просмотры: 560
Последнее редактирование модератором:

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
Точно. Ведь можно просто подставить число и усе будет работать :)

Максимальное количество FAI не больше 50?

const int MAX_FIGHTAI = 50;

В коде...

CONST INT MOVE_MASTERATTACK = 11;

// Отсутствуют константы с 12 по 14.

CONST INT MOVE_TURNTOHIT = 15;

При использовании констант 12, 13 и 14 персонаж просто достает оружие. Эти константы наверное привязаны к какому-то режиму боя.
 

Вложения

  • Безымянный.png
    Безымянный.png
    1,1 MB · Просмотры: 128
Последнее редактирование:

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
Кто-нибудь знает для чего эта константа?

const int MAX_FIGHTAI = 50;

Я думал ограничение FAI стилей, но для спящего используется FAI с номером 57

INSTANCE FA_ENEMY_PREHIT_57 (C_FightAI)
{
move[0] = MOVE_ATTACK;
};

INSTANCE FA_ENEMY_STORMPREHIT_57 (C_FightAI)
{
move[0] = MOVE_ATTACK;
};

INSTANCE FA_MY_W_RUNTO_57 (C_FightAI)
{
move[0] = MOVE_ATTACK;
};

INSTANCE FA_MY_W_STRAFE_57 (C_FightAI)
{
move[0] = MOVE_ATTACK;
};
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.231
Баллы
525
Предполагаю, что таким образом движок получает информацию о количестве ресурсов, выделяемых для обработки боевых тактик (количество проверяемых значений, размерность массива и т.д.) :confused:
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.300
Благодарности
4.633
Баллы
625
количестве ресурсов, выделяемых для обработки боевых тактик
в точку. при инициализации AI файта движок читает количество тактик и циклом от 0 до num-1 определяет их
 

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
Разбираю класс Gil_Values, а именно параметры BLOOD_FLOW и BLOOD_AMOUNT

Насколько я понял BLOOD_FLOW бывает в двух значениях вкл/выкл, т.е. 0 и 1. Отвечает, судя по скриншотам за замедленное кровотечение.

На первом скриншоте BLOOD_FLOW = 1 и кровь (с одинаковым количеством HP) течет медленней и отрывисто. Во-втором случае BLOOD_FLOW = 0 и кровь течет в основном большими кровавыми текстурами буквально на каждом шагу.

А вот Blood_Amount никак не могу раскусить. Какие бы значения не выставлял, особой разницы не наблюдаю.
 

Вложения

  • img14.png
    img14.png
    2,4 MB · Просмотры: 171
  • img15.png
    img15.png
    2,4 MB · Просмотры: 193
Последнее редактирование:

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.231
Баллы
525
Кстати, какой параметр там отвечает за высоту вставки неписей в игровой мир? Обращал внимание, что некоторые неписи вставляются чуть выше, чем нужно, после чего происходит кратковременное падение. Замечал это у девиц в Г1 и полевых хищников в Г2, но специально не присматривался. Скорее всего есть и другие существа с подобной проблемой.
 

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
Замечал это у девиц в Г1 и полевых хищников в Г2,
Я тоже замечал, но вроде бы такого здесь нет.

const int GIL_MAX = 66; // (ehem. 42)

//
// Класс параметров гильдий
//

class C_GilValues
{
var int Water_Depth_Knee [GIL_MAX];
var int Water_Depth_Chest [GIL_MAX];
var int JumpUp_Height [GIL_MAX];
// var int JumpUp_Force [GIL_MAX];
var int Swim_Time [GIL_MAX];
var int Dive_Time [GIL_MAX];
var int Step_Height [GIL_MAX];
var int JumpLow_Height [GIL_MAX];
var int JumpMid_Height [GIL_MAX];
var int Slide_Angle [GIL_MAX];
var int Slide_Angle2 [GIL_MAX];
var int Disable_AutoRoll [GIL_MAX];
var int Surface_Align [GIL_MAX];
var int Climb_Heading_Angle [GIL_MAX];
var int Climb_Horiz_Angle [GIL_MAX];
var int Climb_Ground_Angle [GIL_MAX];
var int Fight_Range_Base [GIL_MAX];
var int Fight_Range_Fist [GIL_MAX];
var int Fight_Range_G [GIL_MAX];
var int Fight_Range_1HS [GIL_MAX];
var int Fight_Range_1HA [GIL_MAX];
var int Fight_Range_2HS [GIL_MAX];
var int Fight_Range_2HA [GIL_MAX];
var int FallDown_Height [GIL_MAX];
var int FallDown_Damage [GIL_MAX];
var int Blood_Disabled [GIL_MAX];
var int Blood_Max_Distance [GIL_MAX];
var int Blood_Amount [GIL_MAX];
var int Blood_Flow [GIL_MAX];
VAR string Blood_Emitter [GIL_MAX];
VAR string Blood_Texture [GIL_MAX];
var int Turn_Speed [GIL_MAX];
};
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.300
Благодарности
4.633
Баллы
625
Кстати, какой параметр там отвечает за высоту вставки неписей в игровой мир? Обращал внимание, что некоторые неписи вставляются чуть выше, чем нужно, после чего происходит кратковременное падение. Замечал это у девиц в Г1 и полевых хищников в Г2, но специально не присматривался. Скорее всего есть и другие существа с подобной проблемой.
bbox же вроде, персонажи по нему центрируются таким образом, чтобы он не выпирал за пределы мира.. ну и по всей видимости у модели тех же жуков кривой центр массы

А вот Blood_Amount никак не могу раскусить. Какие бы значения не выставлял, особой разницы не наблюдаю.
он участвует в вычислении размера пятна.
Код:
// размер пятна от основных зависимостей
float blood = (float)dam_real * m_nBloodAmount / (float)blood_size; 
// сила добавочного скалирования
int scale = blood / 10.0;
//
if(scale > 0)
     // добавочное рандомное скалирование
     blood += rand() % scale;
// создание пятна 
pHuman->AddBlood(pos, vp, blood, m_bBloodFlow, &m_sBloodTexture);
 

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
он участвует в вычислении размера пятна.
Точно. Ошибся. Приписал значение гильдии людей, а тестировал на волках :oops:

Вот брызги крови со значением в 1000000 см.
 

Вложения

  • img16.png
    img16.png
    1,2 MB · Просмотры: 176

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
У класса C_GilValues может быть только одна инстанция?

Еще вопрос по параметру, swim_time. Он вроде бы должен определять время плавания, но установка разных значений ничего не дала.

Возможно, способность плавать больше определяется наличием соответствующей анимации, нежели этим параметром?

То же касается параметра turn_speed. От изменения значения этого параметра, скорость вращения не изменяется.

Параметр blood_Amount определяет размер кровавых пятен не на земле, а на стенах и т.п.
 

Вложения

  • img17.png
    img17.png
    2,1 MB · Просмотры: 157
Последнее редактирование:

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
Зачем нужна константа const int ITM_TEXT_MAX = 6?

Если она даже не вставлена сюда...

class C_Item
{
...
var string text[6];
var int count[6];
...
};

Как я понимаю, с движком она не связана.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.231
Баллы
525
Зачем нужна константа const int ITM_TEXT_MAX = 6?
Движок выделяет место в боксе с описанием предмета для 6 строчек текста. На это место вставляются переменные из инстанции класса C_ITEM. Наверное.
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.300
Благодарности
4.633
Баллы
625
Нифига он не выделяет.. все константно. И бокс описания тут совсем не играет никакой роли - то уже вообще другой класс
Код:
    zSTRING                m_sText[6];
    int                            m_nCount[6];
 
Последнее редактирование:

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
Стало быть она вообще не нужна?
 

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
Может кто знает?

const int DAMAGE_FLY_CM_MAX = 2000; // Максимальное расстояние на которое отбрасывает Npc при нокауте
const int DAMAGE_FLY_CM_MIN = 300; // Минимальное расстояние на которое отбрасывает Npc при нокауте
const int DAMAGE_FLY_CM_PER_POINT = 5; //

Скорее всего учавствует в расчете урона от нокаута. Но на чем основывается расчёт, что за POINT?
 
Последнее редактирование:

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.300
Благодарности
4.633
Баллы
625
а где ты взял такие замечательные коменты к константам?
это кароче ерунда рассчитывает урон от падения.

DAMAGE_FLY_CM_MIN DAMAGE_FLY_CM_MAX минимальный и максимальный урон или высота. он не может быть меньше или больше этого интервала.
DAMAGE_FLY_CM_PER_POINT а это грубо говоря множитель дамага обычный
 
Последнее редактирование:

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
минимальный и максимальный урон
Проверено опытным путем. Это расстояние на которое отбрасывает Npc.

Устанавливал минимально значение в 2800 а максимальное в 3000 и Npc перелетал у меня через пол карты, при этом урон был 105 HP.

После этого установил значения в 10 и 15 и Npc падал буквально у ног тролля.
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.300
Благодарности
4.633
Баллы
625
Впервые слышу чтобы удар тролля был описан на уровне движка. Так у него в инстанции то тип какой?
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.300
Благодарности
4.633
Баллы
625
А , ну я думал там блант тип. Там тоже есть похожий перк вроде как, но без бубнов с лимитами
 
Сверху Снизу