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

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

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

Trazege

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

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
1.928
Благодарности
558
Баллы
275
Ребята, пора осваивать Юню, где пишется внешка за 5 минут которая снимает именно то нужно оттуда откуда требуется. Ванильный функционал слишком мал и работает скажем прямо иногда довольно странно.
Если бы только это было также просто как написать это сообщение <_< .
 

Czudak

Участник форума
Регистрация
29 Июн 2019
Сообщения
182
Благодарности
96
Баллы
175
ElderGamer проблема в том, что все эти команды не будут работать с оружием, которое находится в руках ГГ. Npc_GetReadiedWeapon получит нужное оружие, но с ним ничего нельзя будет сделать, пока оно не окажется на поясе или за спиной. Можно попробовать сначала сделать это принудительно командой AI_RemoveWeapon(hero).
Brilliant. It worked. Not they way I wanted, but shag it, much better than nothing. Thanks for the assistance!
Пост автоматически объединён:

Ребята, пора осваивать Юню, где пишется внешка за 5 минут которая снимает именно то нужно оттуда откуда требуется. Ванильный функционал слишком мал и работает скажем прямо иногда довольно странно.
Feel free to create something like that, brother. I will totally put it to good, creative use once you do! Thanks, I knew you would do that for me! *heart*
 

ElderGamer


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

Вот, например, я сейчас занимаюсь "корованом", который курсирует из пункта А в пункт Б.
Convoy_01.jpg

Участники конвоя следуют за лидером, выполняя функцию AI_GotoNpc. Как следствие, неписи выстраиваются в одну линию, двигаясь довольно близко друг от друга. Смотрится не особенно красиво. Лучше бы, если бы ведомые неписи образовывали некое подобие толпы, двигаясь вдоль основной траектории с небольшим смещением вправо и влево. Пока не придумал, как такое можно реализовать. Может ли в этом помочь Юня? :)
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
небольшим смещением вправо и влево.

Gothic.ini
INI:
[CONVOY]
GotoNpcOffset = 200
; ... определяет, на сколько может быть смещен
; ведомый нпс относительно ведущего. Значение
; указывается в сантиметрах. По умолчанию - 200

StaticRandom = 0
; ... определяет, будет ли нпс всегда соблюдать один
; и тот же интервал относительно ведущего. 1 - да, 0 - нет.
; По умолчанию - 0

C++:
  static int s_GotoNpcOffset = 200;
  static int s_StaticRandom  = False;

  int GetSignedRandom( const int& range ) {
    return (rand() % range) - range / 2;
  }

  HOOK Hook_oCNpc_EV_GotoVob PATCH( &oCNpc::EV_GotoVob, &oCNpc::EV_GotoVob_Union );

  zVEC3 CreatePositionOffset( const zVEC3& from, const zVEC3& to ) {
    static zVEC3 axisY = zVEC3( 0.0f, 1.0f, 0.0f );
    int rndOffset      = GetSignedRandom( s_GotoNpcOffset );
    zVEC3 direction    = to - from;
    zMAT4 rotation     = Alg_Rotation3D( axisY, 90.0f );
    zVEC3 rightVector  = (rotation * direction).Normalize() * (float)rndOffset;
    return rightVector;
  }

  int oCNpc::EV_GotoVob_Union( oCMsgMovement* csg ) {
    if( csg->targetVob == player )
      return THISCALL( Hook_oCNpc_EV_GotoVob )(csg);
   
    StandUp( True, True );

    if( !csg->IsInUse() ) {
      if( s_StaticRandom )
        srand( (int)this );
     
      zVEC3 rightVector = CreatePositionOffset( GetPositionWorld(), csg->targetPos );
      csg->targetPos += rightVector;

      RbtInit( csg->targetPos, Null );
      rbt.standIfTargetReached = True;
      rbt.exactPosition        = False;
      rbt.maxTargetDist        = 10000;
      csg->SetInUse( True );
    }

    csg->targetMode = True;
    return (EV_RobustTrace( csg ));
  }

  void Game_Init() {
    s_GotoNpcOffset = zoptions->ReadInt( "Convoy", "GotoNpcOffset", s_GotoNpcOffset );
    s_StaticRandom  = zoptions->ReadInt( "Convoy", "StaticRandom",  s_StaticRandom );
  }
 

Вложения

  • zConvoy.zip
    9 KB · Просмотры: 7

Trazege

Участник форума
Регистрация
20 Фев 2008
Сообщения
1.760
Благодарности
1.394
Баллы
340
*ecstatic* Вопрос к знатокам Union - подскажите пжлст, как можно получить координаты для вывода вьюшки на экран (x,y) по текущему местоположению нпс в мире. То есть чтобы вьюшка распологалась точно в точке кости Bip01? Бьюсь уже какой день, не могу вкурить.
 

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.083
Благодарности
1.901
Баллы
320
*ecstatic* Вопрос к знатокам Union - подскажите пжлст, как можно получить координаты для вывода вьюшки на экран (x,y) по текущему местоположению нпс в мире. То есть чтобы вьюшка распологалась точно в точке кости Bip01? Бьюсь уже какой день, не могу вкурить.
Получение мировых координат узла модели:
C++:
zVEC3 bip01Pos = player->GetTrafoModelNodeToWorld("BIP01").GetTranslation();
Преобразование мировых координат к виртуальным координатам вьюшки:
C++:
zVEC3 WorldToView(const zVEC3& worldPos, zCView* view)
{
    zCCamera* cam = ogame->GetCamera();
    zVEC3 result = cam->trafoView * worldPos;
    
    int x, y;
    cam->Project(&result, x, y);
    
    if (view)
    {
        x = view->anx(x);
        y = view->any(y);
    }

    result[0] = static_cast<float>(x);
    result[1] = static_cast<float>(y);
    return result;
}
 

Lorddemonik

★★★★★
Редактор раздела
Регистрация
17 Дек 2011
Сообщения
1.113
Благодарности
581
Баллы
350
Есть возможность в оригинальных скриптах натянуть pfx эффект на конкретную часть модели? К примеру у того же магического лука только тетеву или подобное. Как вариант натянуть эффект только на конкретную текстуру модельки?
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
только если ковырять двиг, юня в помощь..
 

Lorddemonik

★★★★★
Редактор раздела
Регистрация
17 Дек 2011
Сообщения
1.113
Благодарности
581
Баллы
350
Необязательно, Вань. Это можно сделать и без юни. Правда кривовато немного будет.
Если оно будет выполнять свою роль, то я попробую. Да чего уж там, любые варианты подойдут
 

4YBAK

Участник форума
Регистрация
27 Окт 2009
Сообщения
155
Благодарности
81
Баллы
300
Возможно, покажется немного странным, мол, зачем, почему и нафига, но интересует такой вопрос - есть юзабельные мобси в игре, которые проигрывают свою анимацию только когда их используют - кальян, дверь, точильный круг и т.д.
А возможно ли активировать анимацию каким-то иным способом? Читом, или чем-то иным, без взаимодействия с ним персонажа?
 

Beowulf

Участник форума
Регистрация
21 Ноя 2010
Сообщения
1.942
Благодарности
1.470
Баллы
465
4YBAK, вряд ли, эти объекты все-таки под это и заточены, чтобы они работали, когда персонаж с ними взаимодействует.
З.Ы. Невидимый нпс не прокатит тут? ;)
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.131
Благодарности
5.627
Баллы
910
В консоле марвина play ani название анимации.
Анимации с мобси прописываются в humans.mds
play ani S_LAB_S1
и персонаж будет стоят на месте выполнять анимацию алхим стола.

Чтоб конечно было все ок, надо писать скрипт для запуска проигрывания всей анимации, там со вставкой предмета в ZS_ слот руки и прочее.
 

Lorddemonik

★★★★★
Редактор раздела
Регистрация
17 Дек 2011
Сообщения
1.113
Благодарности
581
Баллы
350
Как сверхкостыль вариант можно через AI_UseMob(self,"LAB",5); делать подобное. Правда единственное НО должен быть перед лицом объект. Спавнить перед лицом сам невидимый мобси или как-то так
 

Trazege

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

А зачем?
 

4YBAK

Участник форума
Регистрация
27 Окт 2009
Сообщения
155
Благодарности
81
Баллы
300

Устраиваю мозговой штурм для создания машинимы. Освоил создание простых анимационных вобов, аля паруса, но вот как бы сделать Так, чтобы анимация запускалась в нужный отрезок времени - для меня пока загадка. Думал сделать через мобси, только без задействования персонажа в кадре. Бео посоветовал использовать невидимку, и, возможно, придëтся именно таким костылëм и сработать.
 

MaGoth

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

Trazege

Участник форума
Регистрация
20 Фев 2008
Сообщения
1.760
Благодарности
1.394
Баллы
340
Коллеги, кто в курсе - какая функция в движке отвечает за повороты гг влево/вправо путем манипуляции мышой? То есть ведем мышь влево - гг поворачивает влево и наоборот. Хотелось бы понять - каким образом можно отключить обработку этих движений хотя бы в состоянии BS_STAND, ибо сама модель начинает ужасно дергаться. Ну или хотя бы показать направление. куда смотреть. Курил код движка и если с кнопками все ясно, то с мышой хз. :eek:
 
Сверху Снизу