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

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


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

@HellRatz, попробуйте сами тогда - берёте IDA и пройдитесь поиском - не думаю что текстовые функции будет сложно найти

Да ладно вам. Тут и hex'oм занопить можно. Тем более, строку нужную вы знаете.
  • Спасибо 1
  • Согласен 1
  • Полезно 2
Ссылка на комментарий

@Kondr48, эээ, разве не слот который прописан в конфиге итема? А вообще глянь где эта ф-ия используется, я чего-то давно не открывал сорцы и не помню уже что она делает.

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

Ну судя по всему нет, потому что slot_id возвращает другая функция. А эта вызывается при перемещении в слот\рюкзак и т. п., потому мне и не понятно. Мб слот в котором предмет в данный момент находится. Но хотелось бы знать точно.

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

@Kondr48, не нет а да - это реально базовый слот из конфига, потому что вот он :

​u16 BaseSlot ()  const {return m_ItemCurrPlace.base_slot_id;}

а вот как раз "текущий" слот итема:

u16 CurrSlot ()  const {return m_ItemCurrPlace.slot_id;} 

ну и само место ( рюкзак\пояс\всё остальное):

u16 CurrPlace ()  const {return m_ItemCurrPlace.type;}

Или вот ещё выжимка кода из Inventory.cpp:

if(pIItem->CurrPlace()==eItemPlaceUndefined)
{
if( !pIItem->RuckDefault() )
{
if( CanPutInSlot(pIItem, pIItem->BaseSlot()) )
{
result = Slot(pIItem->BaseSlot(), pIItem, bNotActivate,strict_placement); VERIFY(result);
}else
if (CanPutInBelt(pIItem))
{
result = Belt(pIItem,strict_placement); VERIFY(result);
}else
{
result = Ruck(pIItem,strict_placement); VERIFY(result);
}
}else
{
result = Ruck(pIItem,strict_placement); VERIFY(result);
}
}

это вот так работает подбор с земли или с трупа

 

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

Еще есть баг что итем с трупа перемещается не в тот слот который ты его тянешь а в тот который прописан в конфиге - это связано с тем что запрос на перенос итема в слот не выполняется - вместо него выполняется "подбор" предмета с земли) Если решите делать систему с рюкзаками или разгрузами то придётся править этот баг)
P.S. я по-моему уже писал про него? :huh:

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

Привет. Кто-нибудь работал с мультиплеером в ЧН-ЗП? Не могу разобраться как добавить rpoints для своего режима. Я так понимаю, что даже не обязательно редактировать исходники ЛевелЭдитора, надо лишь в секции объекта в spawn.part указать нужный game_type

 

 

[object_3]
        clsid                            = 6
        co_flags                         = 3
        game_type                        = 24 //вот это вот
        name                             = ah_cta_green_0001
        position                         = 11.912968, 1.000000, -10.582791
        rotation                         = -0.000000, -0.209984, -0.000000
        rp_profile                       =
        rp_type                          = 0
        scale                            = 1.000000, 1.000000, 1.000000
        team_id                          = 1
        type                             = 0
        version                          = 23 

 

 

Но я понятия не имею какой game_type присваивается моему режиму и где это можно посмотреть.

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

@drksnc, А что если поставить какой нибудь объект соответствующий твоему режиму и посмотреть какой game_type у него, а потом вставить это значение в нужный тебе объект.

Изменено пользователем nikita_nz1986

nikita_nz1986.gif
9JX0t72.jpg
XqgE6.png

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

Всё таки пришлось дописывать свой режим в исходниках Эдитора. Если кому-то нужно будет добавить только rpoint'ы, то нужно всего лишь добавить чекбокс для своего режима в xrEProps по аналогии со стандартными, там буквально 4 файла. Сам level_editor трогать не надо.

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

Никто не делал фикс вылета звука на ТЧ? Ну чтобы как с текстурами было, путь до отсутствующего звука в лог, а вместо звука какая-нибудь пустышка типа no_sound грузилась. Если кто делал, поделитесь, или если кто сделает, думаю многим будет полезно  :)

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

 

krop, ну собственно проверить-то не проблема, можете например сюда запостить, если есть возможность \ желание, ну или мне в ЛС, я проверю.

 

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

xrSound\SoundRender_Source_loader.cpp


 

void CSoundRender_Source::load(LPCSTR name)
{
 string_path   fn,N;
 strcpy    (N,name);
 strlwr    (N);
 if(strext(N))  *strext(N) = 0;

 fname    = N;

 strconcat   (sizeof(fn),fn,N,".ogg");
 if(!FS.exist("$level$",fn)) FS.update_path (fn,"$game_sounds$",fn);

 if (!FS.exist(fn))

 {
   Msg("! Can't find sound '%s.ogg'",N);
   FS.update_path (fn,"$game_sounds$","$no_sound.ogg");
 }

   LoadWave   (fn);
   SoundRender->cache.cat_create (CAT, dwBytesTotal);
}

 


 

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

xrSound\SoundRender_Source_loader.cpp

Так же делал. :)

Изменено пользователем HellRatz
Добавлено  HellRatz,

Нарушение пункта 2.6, рецидив, сутки РО.
Правила цитирования

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

Кто-нибудь знает, alSourcePlay(source) да и вообще другие методы от openal32 работают в Сталкере? Или надо юзать надстройки XRAY? Просто вроде всё по документации делаю, но не получается. Вот и думаю - у меня руки кривые или оно так и должно быть.

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

Можно сделать так как я сделал в видео? Чтобы переход между локациями был без подтверждения и плавный, а также чтоб перс пару шагов сделал после того, как пришел на новую локацию (типо кат сцена). Это создало бы ощущение, что он тока пришел.

 

Изменено пользователем Kirgudu
Добавлено Kirgudu,

Видео прячем под спойлер.

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

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

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

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

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

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

Войти

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

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

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