mortan 144 Опубликовано 28 Октября 2017 Поделиться Опубликовано 28 Октября 2017 @AndreySol не совсем понял что ты хочешь, тебе нужно для всех итемов с нужной тебе секцией узнать координаты их ячеек? Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/131/#findComment-1129738
jargon 4 Опубликовано 28 Октября 2017 Поделиться Опубликовано 28 Октября 2017 13 минут назад, drksnc сказал: Никто не знает как в ЧН/ЗП в сетевой игре включить возможность использования камер cam_2 и cam_3? Файл 1: ...\xrGame\actor_mp_client.cpp Строка проверки юзания камер актером на клиенте №39 Код: void CActorMP::cam_Set (EActorCameras style) { #ifndef DEBUG if (style != eacFirstEye) return; #endif CCameraBase* old_cam = cam_Active(); cam_active = style; old_cam->OnDeactivate(); cam_Active()->OnActivate(old_cam); } Файл 2: ...\xrGame\actor_mp_client.h Строка обобщения функции проверки №37: Код: virtual void cam_Set (EActorCameras style); Твоё действие: Выпилить этот код с этих двух файлов к чертовой бабушке. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/131/#findComment-1129741
drksnc 14 Опубликовано 28 Октября 2017 Поделиться Опубликовано 28 Октября 2017 9 минут назад, jargon сказал: Твоё действие: Выпилить этот код с этих двух файлов к чертовой бабушке. А разве простое удаление условия не поможет? Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/131/#findComment-1129744
jargon 4 Опубликовано 28 Октября 2017 Поделиться Опубликовано 28 Октября 2017 1 минуту назад, drksnc сказал: А разве простое удаление условия не поможет? По мне проще просто удалить проверку, дабы код не занимал место. Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/131/#findComment-1129746
AndreySol 215 Опубликовано 28 Октября 2017 Поделиться Опубликовано 28 Октября 2017 Только что, mortan сказал: тебе нужно для всех итемов с нужной тебе секцией узнать координаты их ячеек? Мне надо при активном(открытом) окне инвентаря предмет переместить из рюкзака в слот. Вариант использования CInventory::Slot(PIItem pIItem, bool bNotActivate) не подходит, т.к. при использовании этой ф-ции предмет-то в слот перемещается, да вот только отображения этого действия нет - чтоб увидеть результат, надо закрыть окно инв. и снова открыть. Я ранее добавлял ф-цию снятия предмета из слота в рюкзак: bool CUIInventoryWnd::RemToBag(PIItem pItem) { if (GetInventory()->CanPutInRuck(pItem)) { CUIDragDropListEx* old_owner = GetSlotList(pItem->GetSlot()); CUICellItem* itm = old_owner->ItemsCount() ? old_owner->GetItemIdx(0) : NULL; CUIDragDropListEx* new_owner = m_pUIBagList; bool result = GetInventory()->Ruck(pItem); VERIFY(result); CUICellItem* i = old_owner->RemoveItem(itm, false); <- здесь происходит перемещение ячейки с предметом от одного new_owner->SetItem(i); <- владельца другому SendEvent_Item2Ruck(pItem); return true; } return false; } В случае перемещения предмета из слота все просто - в слоте всегда одна ячейка, получить ее не сложно и все работает нормально. А вот как для рюкзака получить нужную ячейку для нужного предмета ? Как сам предмет получить я вроде знаю: PIItem pItem = pActor->inventory().GetItemFromInventory("ля-ля-ля"); а вот с ячейкой затык. Смотрел реализацию CUIDragDropListEx, там нашел только получение ячейки по индексу: CUICellItem* CUIDragDropListEx::GetItemIdx(u32 idx) { R_ASSERT(idx<ItemsCount()); WINDOW_LIST_it it = m_container->GetChildWndList().begin(); std::advance (it, idx); return smart_cast<CUICellItem*>(*it); } Но как индекс узнать ? Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/131/#findComment-1129761
Charsi 441 Опубликовано 28 Октября 2017 Поделиться Опубликовано 28 Октября 2017 @AndreySol, никаких индексов не надо узнавать. Для переноса предмета в слот уже есть CScriptGameObject::MoveToSlot, который экспортирован как "move_to_slot". На случай открытого окна инвентаря после вызова inventory_owner->inventory().Slot(inventory_item, bNotActivate); нужно вызвать переинициализацию открытого окна, например так: CUIGameSP* pGameSP = smart_cast<CUIGameSP*>(HUD().GetUI()->UIGame()); if (pGameSP) pGameSP->ReInitShownUI(); Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/131/#findComment-1129904
mortan 144 Опубликовано 28 Октября 2017 Поделиться Опубликовано 28 Октября 2017 @AndreySol ещё раз, это ТЧ или ЗП? Если ЗП то там сложностей быть не должно Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/131/#findComment-1129910
AndreySol 215 Опубликовано 28 Октября 2017 Поделиться Опубликовано 28 Октября 2017 2 часа назад, Charsi сказал: Для переноса предмета в слот уже есть CScriptGameObject::MoveToSlot, который экспортирован как "move_to_slot". pGameSP->ReInitShownUI(); 2 часа назад, mortan сказал: ещё раз, это ТЧ или ЗП? 1.0007rc1. У меня CScriptGameObject::MoveToSlot равно как и "move_to_slot" - отсутствуют. CUIGameSP::ReInitShownUI() -> CUIInventoryWnd::InitInventory_delayed(){m_b_need_reinit = true;} - просмотрел UIInventoryWnd.cpp, UIInventoryWnd2.cpp и UIInventoryWnd3.cpp, нигде не увидел чтоб проверялся этот m_b_need_reinit и что-то выполнялось в зависимости от его значения. Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/131/#findComment-1130007
Charsi 441 Опубликовано 28 Октября 2017 Поделиться Опубликовано 28 Октября 2017 Если отсутствуют - смотри на xp-dev.com Есть m_b_need_reinit в UIInventoryWnd.cpp void CUIInventoryWnd::Update() { if(m_b_need_reinit) InitInventory (); Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/131/#findComment-1130031
AndreySol 215 Опубликовано 29 Октября 2017 Поделиться Опубликовано 29 Октября 2017 7 часов назад, Charsi сказал: Если отсутствуют - смотри на xp-dev.com Тут бы подсказочку, куда конкретно там смотреть, а то пока не очень понятно... 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/131/#findComment-1130054
Mocherator 0 Опубликовано 30 Октября 2017 Поделиться Опубликовано 30 Октября 2017 Здравствуйте, мастеры движкового дела! Есть тут те, кто ковыряет движок Call of Chernobyl? Заранее извините, если тема СоС тут под запретом 4 Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/131/#findComment-1130518
drksnc 14 Опубликовано 31 Октября 2017 Поделиться Опубликовано 31 Октября 2017 (изменено) Ещё один вопрос по поводу мультиплеера. Чистое Небо 1.5.10. Экспериментирую с ai в мультиплеере. Подключил alife и смог заспавнить монстров. Есть несколько проблем, но самая актуальная - клиент валится на синхронизации, последовательность методов такая Скрытый текст 0023:049F15A6 xrGame.dll, CQuadTree<moving_object>::insert() + 22 byte(s), c:\xray-dev\cs\engine\xrgame\quadtree_inline.h, line 90 + 18 byte(s) 0023:049F0D6B xrGame.dll, moving_object::moving_object() + 283 byte(s), c:\xray-dev\cs\engine\xrgame\moving_object.cpp, line 27 0023:048C7381 xrGame.dll, CCustomMonster::net_Spawn() + 1185 byte(s), c:\xray-dev\cs\engine\xrgame\custommonster.cpp, line 763 + 26 byte(s) 0023:0484CF56 xrGame.dll, CAI_Stalker::net_Spawn() + 150 byte(s), c:\xray-dev\cs\engine\xrgame\ai\stalker\ai_stalker.cpp, line 352 + 45 byte(s) 0023:049C7798 xrGame.dll, CLevel::g_sv_Spawn() + 88 byte(s), c:\xray-dev\cs\engine\xrgame\level_network_spawn.cpp, line 108 + 16 byte(s) 0023:049C75A9 xrGame.dll, CLevel::cl_Process_Spawn() + 169 byte(s), c:\xray-dev\cs\engine\xrgame\level_network_spawn.cpp, line 40 0023:049B4EF2 xrGame.dll, CLevel::ProcessGameEvents() + 290 byte(s), c:\xray-dev\cs\engine\xrgame\level.cpp, line 465 0023:049B4723 xrGame.dll, CLevel::OnFrame() + 467 byte(s), c:\xray-dev\cs\engine\xrgame\level.cpp, line 603 0023:008D539A xrEngine.exe, CInput::OnFrame() + 154 byte(s), c:\xray-dev\cs\engine\xrengine\xr_input.cpp, line 470 0023:00885400 xrEngine.exe, CRegistrator<pureAppStart>::Process() + 80 byte(s), c:\xray-dev\cs\engine\xrengine\pure.h, line 77 0023:008A69AF xrEngine.exe, CRenderDevice::FrameMove() + 399 byte(s), c:\xray-dev\cs\engine\xrengine\device.cpp, line 474 0023:008A6C07 xrEngine.exe, CRenderDevice::on_idle() + 183 byte(s), c:\xray-dev\cs\engine\xrengine\device.cpp, line 267 0023:008A6B3A xrEngine.exe, CRenderDevice::message_loop() + 90 byte(s), c:\xray-dev\cs\engine\xrengine\device.cpp, line 379 0023:008A6A88 xrEngine.exe, CRenderDevice::Run() + 168 byte(s), c:\xray-dev\cs\engine\xrengine\device.cpp, line 423 0023:008DC31A xrEngine.exe, Startup() + 378 byte(s), c:\xray-dev\cs\engine\xrengine\x_ray.cpp, line 335 0023:008DBD88 xrEngine.exe, WinMain_impl() + 1048 byte(s), c:\xray-dev\cs\engine\xrengine\x_ray.cpp, line 496 0023:008DB8F6 xrEngine.exe, WinMain() + 54 byte(s), c:\xray-dev\cs\engine\xrengine\x_ray.cpp, line 521 0023:008A3E39 xrEngine.exe, __tmainCRTStartup() + 293 byte(s), f:\dd\vctools\crt\crtw32\dllstuff\crtexe.c, line 618 + 14 byte(s) 0023:763162C4 KERNEL32.DLL, BaseThreadInitThunk() + 36 byte(s) 0023:77CC0F79 ntdll.dll, RtlSubscribeWnfStateChangeNotification() + 1081 byte(s) 0023:77CC0F44 ntdll.dll, RtlSubscribeWnfStateChangeNotification() + 1028 byte(s) Сразу оговорюсь что я не очень силен в программировании, поэтому может не вижу очевидных вещей. Подскажите куда копать. Изменено 31 Октября 2017 пользователем drksnc Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/131/#findComment-1131166
ComradE_AleX 5 Опубликовано 1 Ноября 2017 Поделиться Опубликовано 1 Ноября 2017 Объясните, как изменить(перенести с другой версии мода сталкер) прицел, какие файлы за это отвечают, и что чем править? Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/131/#findComment-1131282
Shkiper2012 35 Опубликовано 1 Ноября 2017 Поделиться Опубликовано 1 Ноября 2017 [ТЧ 1.0007rc1 (xp-dev.com)] Методы для CInventoryItem: set_inventory_item_flags(flags16) и get_inventory_item_flags() Если, есть те, кто разобрался как ими пользоваться. Подскажите, пожалуйста (с примерами, если не трудно). В движке из репо на xp-dev.com -- при обыске трупа или открытия ящика -- не работает выпадающий список действий (при нажатии правой клавиши мыши) на предмет. Может, кто-нибудь поправил это? Если да - как исправить? Адаптация мода "AtmosFear" для мода "Боевая Подготовка" v.2.0.2. Адаптация мода "Магазинное питание" для мода "Боевая Подготовка" v.2.0.2. Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/131/#findComment-1131306
dsh 3 824 Опубликовано 1 Ноября 2017 Поделиться Опубликовано 1 Ноября 2017 5 hours ago, Shkiper2012 said: Методы для CInventoryItem: set_inventory_item_flags(flags16) и get_inventory_item_flags() Вот так вот, например function set_item_ungroupable( item ) local f = item:get_inventory_item_flags() f:set( global_flags.FIUngroupable, true ) item:set_inventory_item_flags( f ) end В xp-dev нет этих флагов в global_flags, т.ч. можешь просто число там указывать, которому соотв. нужный тебе флаг. 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/131/#findComment-1131425
Shkiper2012 35 Опубликовано 2 Ноября 2017 Поделиться Опубликовано 2 Ноября 2017 @dsh Наспавнил 5 бутылок водки в инвентарь гг. Беру одну бутылку и пытаюсь установить ей флаг "не-группируемости" или "не-торгуемости". Но, никакого результата (либо я его не вижу). Что делал: Скрытый текст -- dbg_logf - это тот же log1, только для дебага. -- Ставим флаг. -- function set_item_ungroupable( item ) if not item then return end dbg_logf("* set_item_ungroupable -- 0 -- sect: "..tostring( item:section() ).." id: "..tostring( item:id() )) local f = item:get_inventory_item_flags() dbg_logf("* set_item_ungroupable -- 1 -- ") f:set( 16384, true ) -- const FIUngroupable = 16384; -- f:set( 8192, true ) -- const FIAlwaysUntradable = 8192; dbg_logf("* set_item_ungroupable -- 2 -- ") item:set_inventory_item_flags( f ) dbg_logf("* set_item_ungroupable -- 3 -- ") end -- Поиск предмета по секции в инвентаре. -- function search_item_in_inv( section ) for i=0, db.actor:object_count()-1 do local obj = db.actor:object(i) if obj:section() == section then dbg_logf("* search_item_in_inv >>> sect: "..tostring(section).." >>> id: "..tonumber(obj:id())) -- return obj:id() -- предмет найден return obj -- предмет найден end end return nil end local sec = "vodka" local act = db.actor if act then local obj = search_item_in_inv(sec) if obj then dbg_logf("* set_item_ungroupable -- start -- ") set_item_ungroupable(obj) dbg_logf("* set_item_ungroupable -- finish -- ") end end Лог: Скрытый текст [02.11.17 01:08:15.656] ~~Start TESTING script! [02.11.17 01:08:15.657] ~ -------------------------------------------------------- [02.11.17 01:08:15.658] * search_item_in_inv >>> sect: vodka >>> id: 16905 [02.11.17 01:08:15.658] * set_item_ungroupable -- start -- [02.11.17 01:08:15.658] * set_item_ungroupable -- 0 -- sect: vodka id: 16905 [02.11.17 01:08:15.658] * set_item_ungroupable -- 1 -- [02.11.17 01:08:15.658] * set_item_ungroupable -- 2 -- [02.11.17 01:08:15.658] * set_item_ungroupable -- 3 -- [02.11.17 01:08:15.658] * set_item_ungroupable -- finish -- [02.11.17 01:08:15.658] ~ -------------------------------------------------------- [02.11.17 01:08:15.658] ~~Finish TESTING script! Ожидания: Скрытый текст Бутылка с флагом "должна" отделится от группы остальныих или, при торговле "должна быть": закрашена красным и не доступна, при соответствующем флаге, конечно. Но, этого не происходит. Что я делаю не так? Адаптация мода "AtmosFear" для мода "Боевая Подготовка" v.2.0.2. Адаптация мода "Магазинное питание" для мода "Боевая Подготовка" v.2.0.2. Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/131/#findComment-1131726
dsh 3 824 Опубликовано 2 Ноября 2017 Поделиться Опубликовано 2 Ноября 2017 @Shkiper2012 в xp-dev флаг неторгуемости не обрабатывается, а флаг негруппируемости обрабатывается только после вызова соотв. коллбека и сбрасывается после его обработки, т.е. служит только для возврата результата из коллбека. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/131/#findComment-1131737
Shkiper2012 35 Опубликовано 2 Ноября 2017 Поделиться Опубликовано 2 Ноября 2017 @dsh Вывод: прямо из скрипта нельзя настроить группирование/торгуемость (другие флаги не проверял) (в xp-dev движке, на данный момент, для отдельно-взятого предмета). Так? Или есть другие варианты? Раньше я игрался с "кондишен" предмета для этих целей, либо использовал X-Ray extensions с их "set_inventory_item_int16". А тут такой облом. Адаптация мода "AtmosFear" для мода "Боевая Подготовка" v.2.0.2. Адаптация мода "Магазинное питание" для мода "Боевая Подготовка" v.2.0.2. Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/131/#findComment-1131741
dsh 3 824 Опубликовано 2 Ноября 2017 Поделиться Опубликовано 2 Ноября 2017 @Shkiper2012 если не внести свои изменения в xp-dev, то на торгуемость влиять нельзя. На группируемость - можно. Нужно подключить обработчик для коллбэка "on_group_items", в который передаются два предмета, и в нем этим предметам выставлять флаг негруппируемости, если нужно. Коллбэк вызывается для выяснения, можно-ли сгруппировать эти два предмета. Если же вносить свои изменения, то см. для примера https://github.com/dsh2dsh/OGSR-Engine/commit/eff43a33936c6fdffbf58c70f06a4b7f68df1801 https://github.com/dsh2dsh/OGSR-Engine/commit/22069d0d62a04ea075497540cf98ecdeef3eddf5 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/131/#findComment-1131853
ComradE_AleX 5 Опубликовано 2 Ноября 2017 Поделиться Опубликовано 2 Ноября 2017 Ребят, помогите нубу, есть скрипт - награда за помощь от НПС, тоесть лечу непись, получаю от него предмет из списка. Как правильно прописать число к каждому предмету, чтобы получить их несколько за раз(типа ammo_9x18_fmj = 3 \n но в скрипте надо как то по другому число писать) Вот начало скрипта, список local nagrad = { level_1 = { "af_vyvert", "af_blood", "wpn_bm16", "antirad", Ссылка на комментарий https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/131/#findComment-1131862
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти