Перейти к контенту

Редактирование движка X-Ray


Рекомендуемые сообщения

Пару вопросов по движковой структуре SHit.

Hit.h:

SHit (float Power, Fvector &dir, CObject *who, u16 element, Fvector p_in_object_space, float impulse, ALife::EHitType hit_type, float ap = 0.0f, bool AimBullet=false);

Hit.cpp:

SHit::SHit(float aPower, Fvector &adir, CObject *awho, u16 aelement, Fvector ap_in_bone_space, float aimpulse, ALife::EHitType ahit_type, float aAP, bool AimBullet)

Названия аргументов в объявлении не совпадают с названиями в реализации. Я всегда думал, что должно совпадать ?

u16 element - косточка, по которой пришелся хит ? Не могу найти, где перечислены все возможные косточки, подскажите.

 

Класс CEntityCondition как я понимаю используется и для актера и для мобов. А как в этом классе определиться - "кто мы сейчас". Т.е., к примеру в ф-ции этого класса ConditionHit определить, для кого она сработала - для актера или не актера ?

Изменено пользователем AndreySol
Ссылка на комментарий

У меня вопрос по компиляции исходников СДК: делаю все по этому тутору. Когда подключаю package SDK\components\AlexMX\editor.bpl builder вылетает. Вот как подключаю

Потом выбираю SDK\components\AlexMX\editor.bpl Сначала ругалось на отсутствие rtl60.bpl, vcl60.bpl и т.д. Все нужные bpl нашел, и теперь вот вылетает. Из-за чего может вылетать? Или я неправильно подключаю новые package? Заранее спасибо!

  • Полезно 1
Ссылка на комментарий

Тут вот нашел такое в движке - в CEntityCondition::ConditionHit обработка хита:

      float hit_power_org = pHDS->damage();
      float hit_power = hit_power_org;
      hit_power = HitOutfitEffect(hit_power, pHDS->hit_type, pHDS->boneID, pHDS->ap);

далее:

float CEntityCondition::HitOutfitEffect(float hit_power, ALife::EHitType hit_type, s16 element, float AP)
{
....
      pOutfit->Hit(hit_power, hit_type);
....
}

далее в:

CCustomOutfit::Hit(float hit_power, ALife::EHitType hit_type)
{
      hit_power *= m_HitTypeK[hit_type];
      ChangeCondition(-hit_power);
}

Если я ничего не проглядел, то получается, что при получении к примеру телепатического(ну и радиационного до кучи) хита, происходит износ броника ?

Изменено пользователем AndreySol
Ссылка на комментарий

Здравствуйте.
Мне нужно выделить и удалить часть строки заключенную в круглые скобки. Например, строку "abc(def)" разделить на "abc" и "def".
У меня получился следующий код:

  Показать

Всё работает, но подскажите, пожалуйста, может, есть более правильный способ или более простой?

S.T.A.L.K.E.R. CoP Objects (upd 15.11.24)

Ссылка на комментарий

ТЧ 1.0007rc1. Такая вот задачка: при установке\смене броника в слот снимать предмет из другого слота. Сейчас сделал так:

  Показать

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

Изменено пользователем AndreySol
Ссылка на комментарий

[ТЧ 1.0007rc1]

Приветствую.

Думал в теме про C++ задать этот вопрос, но он (имхо) ближе к движку и поэтому здесь. Итак...

Начал разбираться в движке, и возник такой нубский вопрос по типах переменных (и не только по ним):

  Показать

Что это за типы? Чем отличаются от стандарта C++?

 

  Показать

 

Заранее, признателен за ответы.

Ссылка на комментарий
  17.09.2017 в 16:48, DDamian724 сказал:

strafe feature

А причём тут движок ? Это же анимация. Вот нормальная анимация strafe: 

https://yadi.sk/d/3vxsfGnR3My6NV

правда для CoP. Не знаю подойдёт ли для LA.

Ссылка на комментарий
  17.09.2017 в 22:23, Space.Marine сказал:

A gdzie jest silnik? To ta sama animacja. Oto normalna animacja strafeów: 

https://yadi.sk/d/3vxsfGnR3My6NV

prawda dla CoP. Nie wiem, czy nadaje się do LA.

I ported weapon strafe from LA. To my own revision of engine

Ссылка на комментарий

Вопрос по восприятию кода движка.

Необходимо понять условия для воспроизведения звука NPC: 

 

Подсказали, что нужно смотреть условия в исходном коде:
https://www.gameru.net/forum/index.php?s=&showtopic=69272&view=findpost&p=1623127

 

Ок. Вот и он:

  sound_death и sound_anomaly_death (Показать)
  sound_hit (Показать)
  sound_humming (Показать)
  sound_backup (Показать)
  sound_detour и sound_need_backup (Показать)
  sound_friendly_fire (Показать)
  sound_panic_human и sound_panic_monster (Показать)
  sound_tolls (Показать)
  sound_grenade_alarm (Показать)
  sound_friendly_grenade_alarm (Показать)
  sound_running_in_danger и sound_walking_in_danger (Показать)
  sound_kill_wounded (Показать)
  sound_enemy_critically_wounded (Показать)
  sound_enemy_killed_or_wounded (Показать)
  sound_attack_no_allies и sound_attack_allies_single_enemy и sound_attack_allies_several_enemies (Показать)
  sound_search1_no_allies и sound_search1_with_allies (Показать)
  sound_throw_grenade (Показать)
  sound_wounded (Показать)
  sound_enemy_lost_no_allies и sound_enemy_lost_with_allies (Показать)


Не нашел вообще:

sound_attack
sound_search
Изменено пользователем aka_sektor
  • Согласен 1

-

Ссылка на комментарий
  Мысли не программиста (Показать)
Изменено пользователем aka_sektor

-

Ссылка на комментарий

Приветствую.

Собираю исходники ТЧ 1.0007rc1 от xp-dev (ревизии 188 и 201). Всё собирается и запускается.

Но, есть небольшая проблема: в игре при окончании разговора с НПС (кликаю в диалоге "До свидания.") - вылет.

Вылетает только(!) с тем НПС, которые в конце диалога что-нибудь выдают актору. С другими всё в порядке.

Например, в начале игры: Сидор - выдает нож в начале игры; Волк - выдает пистолет, патроны, аптечку; Шустрый - выдает флэшку для Сидора.

Каждый диалог заканчивается таким вылетом:(лог разбил на две части, для удобства восприятия текста)

  Показать
  Показать

Что делал:

  Показать

Буду рад любой инфе по этой теме. У кого-либо было что-то подобное, если да, как "лечили эту болезнь"?

 

И ещё вопрос: так как я сам не-программист, то очень интересует,

как грамотно разбирать такие логи с адресами памяти,

когда нет привычного сообщения в стиле "FATAL ERROR: bla_bla_bla"?

Ссылка на комментарий
  04.10.2017 в 10:11, Shkiper2012 сказал:

xray\xr_3da\xrgame graph_vertex_inline.h, 68

Так что у тебя в этой строке?

 

  Цитата

[03.10.17 21:11:06.998] 001B:522A3260 (0x0018C300 0x2896B6BC 0x2896B748 0x0018C328) xrGame.dll, CVertex<CPhrase *,shared_str,CGraphAbstract<CPhrase *,float,shared_str> >::add_edge, x:\trunk\xray\xr_3da\xrgame\graph_vertex_inline.h, 68
[03.10.17 21:11:06.998] 001B:522A302A (0x280A5C60 0x0018C300 0x24E2AF90 0x52D6A1E0) xrGame.dll, CGraphAbstract<CPhrase *,float,shared_str>::add_edge(), x:\trunk\xray\xr_3da\xrgame\graph_abstract_inline.h, 59
[03.10.17 21:11:06.998] 001B:524C6B9B (0x24E2AF90 0x00000000 0x2896B740 0x0018C318) xrGame.dll, CPhraseDialog::AddPhrase(), x:\trunk\xray\xr_3da\xrgame\phrasedialog.cpp, 271
[03.10.17 21:11:06.998] 001B:522A39FA (0x03BF23D0 0x03D72B18 0x00D183F0 0xFFFFD8F0) xrGame.dll, CPhraseDialog::AddPhrase_script(), x:\trunk\xray\xr_3da\xrgame\phrasedialog.h, 132
Здесь из скрипта вызвали функцию создания скриптового диалога, вернулись в движок. И что-то пошло не так.
...
Здесь ушли в скрипты. В phrasedialog.cpp, 223 можно посмотреть какая скриптовая функция вызвалась. Дальше изучаешь скрипты.
[03.10.17 21:11:06.998] 001B:524C7220 (0x00000000 0x524C6A58 0x0AB71FC0 0x24E2AF90) xrGame.dll, CPhraseDialog::load_shared(), x:\trunk\xray\xr_3da\xrgame\phrasedialog.cpp, 223
[03.10.17 21:11:06.998] 001B:522A2B99 (0x0AB71FC0 0x24E2AF90 0x524C6335 0x0AB71FC0) xrGame.dll, CSharedClass<SPhraseDialogData,shared_str,0>::load_shared(), x:\trunk\xray\xr_3da\xrgame\shared_data.h, 101
[03.10.17 21:11:06.998] 001B:524C6A58 (0x0AB71FC0 0x00000002 0x24BDDC00 0x14B1111C) xrGame.dll, CPhraseDialog::Load(), x:\trunk\xray\xr_3da\xrgame\phrasedialog.cpp, 185
[03.10.17 21:11:06.998] 001B:524C6335 (0x0AB71FC0 0x0C7BCE38 0x1B0DC4DC 0x0C4F6100) xrGame.dll, CPhraseDialogManager::AddAvailableDialog(), x:\trunk\xray\xr_3da\xrgame\phrasedialogmanager.cpp, 110
[03.10.17 21:11:06.998] 001B:524EEF47 (0x0C7BCE38 0x1B0DC4DC 0x24B85EA0 0x0018C6B4) xrGame.dll, CActor::UpdateAvailableDialogs(), x:\trunk\xray\xr_3da\xrgame\actor_communication.cpp, 195
[03.10.17 21:11:06.998] 001B:523D5B6D (0x280AA930 0x523E260F 0x00000006 0x01036400) xrGame.dll, CUITalkWnd::UpdateQuestions(), x:\trunk\xray\xr_3da\xrgame\ui\uitalkwnd.cpp, 130
[03.10.17 21:11:06.998] 001B:523D624F (0x00000006 0x01036400 0x00F70BDE 0x01036240) xrGame.dll, CUITalkWnd::Update(), x:\trunk\xray\xr_3da\xrgame\ui\uitalkwnd.cpp, 229

 

 

А геймдата у тебя кстати от шестого патча?

Изменено пользователем abramcumner
  • Спасибо 1
Ссылка на комментарий

@abramcumner

  04.10.2017 в 13:11, abramcumner сказал:

в этой строке?

В этой строчке '{'

  Показать

 

  04.10.2017 в 13:11, abramcumner сказал:

геймдата

Да от 6-го, но добавлены файлы из папки 'resources' (те, что в репо xp-dev).

Ссылка на комментарий

Shkiper2012 Попробуй удали у непися с которым разговариваешь скриптовые диалоги из его профиля (что-то вроде tm_job и тп) и еще раз проверь. Похоже, что спотыкается при инициализации скриптовых диалогов (а они как раз после основной фазы активируются), да и дело скорее всего в скриптах, а не движке (копай в dialogs.script или task_manager.script).

  • Спасибо 1
Ссылка на комментарий

Начали биться сейвы с чем это может быть связанно? в логе ищут строки в виде Can't open section 'ZJRЄЄЄЄяя' 

и они постоянно меняются, можно ли как то вылечить это?

Ссылка на комментарий

Скорее всего, на мой взгляд, вылет связан с моделями. Смотри у оружия - не менялся ли класс.

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...