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

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

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

45 минут назад, mortan сказал:

тогда почему он не перемещается после в нужный слот?

Что значит в "нужный" ? Нужный кому ? Тебе ? Так движку пофиг, на твои похотелки... Это так, к слову.:az1000106:   Смотри в код, ищи место, где движок принимает решение - куда деть появившийся у актера инвентарный предмет.

Я не работаю с ЗП, по этому могу быть не прав, но даже по названию ф-ции "SendEvent_Item2Slot" как-то не похоже, что тут движок думает - пихать объект в слот или нет. Больше похоже, что эта ф-ция обрабатывает уже принятое решение - положить предмет в слот.

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

@UnLoaded достаточно было не ответить "Я не работаю с ЗП". Или в таком случае не отвечать вовсе. А умничать делая странные выводы и предложения не видя кода перед собой много ума не надо) Тут движок и не думает, ему дают четкую команду - сначала забери итем из контейнера, а потом суй в слот. Только вот не хочет он в слот ничего сувать)
К слову я это уже поправил, только вот хотелось бы вовсе уйти от этих злобных багетов, но пока что не хватает ни рук, ни способностей.

Изменено пользователем mortan
Ссылка на комментарий
3 часа назад, mortan сказал:

На ориг. игру это не шибко сильно влияет

В оригинальной игре для такой выборки есть параметр default_to_ruck =  true/false
Как проставил итему так и будет (прыгать/не прыгать в слот).

  • Согласен 1
  • Смешно 1

☭ Белый Барс ☭

Ссылка на комментарий
7 минут назад, mortan сказал:

а в чем смысл этого ответа?)

 

2 часа назад, UnLoaded сказал:

Смотри в код, ищи место, где движок принимает решение - куда деть появившийся у актера инвентарный предмет.

 

☭ Белый Барс ☭

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

@NOapostoL :dash2:
Серьёзно, если нечего ответить по теме - лучше не писать вообще.  Теперь ещё раз, для самый маленьких и непонятливых)
Вот код который отвечает за перенос в слот итема при открытом инвентаре :
 

Скрытый текст

void CUIActorMenu::SendEvent_Item2Slot(PIItem pItem, u16 recipient, u16 slot_id)
{
    if(pItem->parent_id()!=recipient)
        move_item_from_to            (pItem->parent_id(), recipient, pItem->object_id());
    NET_Packet                        P;
    CGameObject::u_EventGen            (P, GEG_PLAYER_ITEM2SLOT, pItem->object().H_Parent()->ID());
    P.w_u16                            (pItem->object().ID());
    P.w_u16                            (slot_id);
    CGameObject::u_EventSend        (P);
    PlaySnd                            (eItemToSlot);
};

 

и далее начинается ад - вот весь код ниже move_item_from_to работает только если перемещать итем из слота\рюкзака\пояса в слот
Почему? Потому что в момент отправки этого пакета владельцем итема  всё ещё является труп или контейнер. Ведь если я правильно понимаю задумку GSC - то после перемещения в инвентарь актора предмет должен был перемещаться в слот который ему указали.
Вот как это происходит : Короткое видеоподтверждение.
"место, где движок принимает решение - куда деть появившийся у актера инвентарный предмет." - функция CInventory::Take(CGameObject *pObj, bool bNotActivate, bool strict_placement)
выход который я нашёл - дописал функцию так чтобы она напрямую получала слот в который игрок переместил итем и перемещала туда итем. Вот как-то так. Зачем эта стена текста? Я думал что хоть-то сталкивался с этим и знает хорошее решение, потому что то что у меня сейчас - это костыль.

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

@mortan Проблема не в функции "SendEvent_Item2Slot()", а в том как и откуда она вызывается.

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

  • Согласен 1

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

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

@WinCap проблема как раз таки в том что она просто не вызывается) Вернее вызывается только когда предмет перемещается внутри инва актора.

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

@mortan

Ну, вроде все логично: Переместить предмет в слот можно только из инвентаря.

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

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

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

Возник вопрос, что за исходники движков нам слили в 2014: https://www.gameru.net/forum/index.php?s=&showtopic=68763&view=findpost&p=1619801

Если есть что сказать по теме - пишите.

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

@aka_sektor вот ты заморочился.  Это не так и важно. Важно примерно, что есть версия какая то.
 

Скрытый текст


0a679dc1783ft.jpg

 

 

Изменено пользователем Дизель
  • Согласен 2

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий
34 минуты назад, Дизель сказал:

Это не так и важно.

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

 

Ещё как важно.

 

P.S.

Скрытый текст

 

Радикал - зло. Смени картинко-хост. На например, такой: http://itmages.ru/

P.P.S. Картинку с радикала у меня не загрузило.

 

 

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

@aka_sektor , не знаю про ТЧ исходники 1.0006 (там всё мутно).

1.5.10 (на базе 1.5.06) существуют - оригинального 1.5.10 кода нет (наверно).

1.6.02 оригинал не встречал.

В ЗП баги не вылазят. ЧН баг с рендрером пофикшен скриптами.

 

 

Перезалил, а твой хост требует регистрации.

Скрытый текст

984bd2b3914af114b13741ae8666833d1fadf128

 

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

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий
9 минут назад, Дизель сказал:

1.5.10 (на базе 1.5.06)

Что значит "на базе"? Я думал Loxotron когда писал это:

Цитата

patch 1.5.0.6 - clear sky patch 1.5.1.0

Имел ввиду, что под этим названием скрывается вот это.

 

9 минут назад, Дизель сказал:

1.6.02 оригинал не встречал.

А что например это:

Цитата

T-6638(~1.6.02) - декабрь 2009

Я так понимаю, знак тильда, означает "примерно".

Видимо что-то того периода, ведь судя по логу финалки ЗП: 1.6.02 Build 3967 от 14 декабря 2009 года

Понять бы, эти сырцы старее этого билда, или новее. Как бы не оказалось, что там есть баги от старой версии до 14 декабря, или баги от новой после 14 декабря.

 

P.S.

Скрытый текст
9 минут назад, Дизель сказал:

твой хост требует регистрации

Эт с недавних пор, да.

 

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

@aka_sektor с ЗП было следующее. Процесс был в режиме онлайн - трудилось около десятка человек с оригиналом, и как ни странно мы не знаем у кого именно был оригинал на сию секунду окончания версии. К тому же еще, в процессе был патч 1.6.03. - потому исходники потерпели изменение.

Лохотрон больше знает, чем я - потому он заведомо прав. Значит там 1.5.10 - я проверил, так и есть, но вот цифра в Гамеспай всех вводит в ступор.

andreyholkin.gif

rod_cccp.gif

 

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

@aka_sektor я провел расследование и выяснил, кто сливал исходники Лохотрону - http://stalker-wiki.ru/wiki/Сергей_Иванцов

Уверенность 90%

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий
21 минуту назад, Дизель сказал:

там 1.5.10 - я проверил, так и есть

Как проверял то?

 

Неужто соответствуют 1.5.10 Build 3795 от 25 июня 2009 года

 

21 минуту назад, Дизель сказал:

цифра в Гамеспай всех вводит в ступор

Но так никто не говорит, что инфа из последней инстанции. Так, предположение.

 

7 минут назад, Дизель сказал:

провел расследование

Каким образом?

 

 

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

@aka_sektor xrGame.vcproj.MANOWAR.Serguei I. Ivantsov.user

:biggrin:

Сам спалился!

 ЧН запустил с новым двигом и проверил. Я не отвечаю, что там 1.5.10 - может развод.

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий
7 минут назад, Дизель сказал:

ЧН запустил с новым двигом и проверил.

Дык как проверил то? По номеру билда в логе? Если так, то это не о чем не говорит. Они всё также могут быть старее или новее.

 

7 минут назад, Дизель сказал:

Сам спалился

А вариант, что их увели именно с его компа не идёт в расчет? Сомнительно как-то.

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

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

×
×
  • Создать...