Zagolski 74 Опубликовано 18 Июля 2017 Поделиться Опубликовано 18 Июля 2017 m_eHitTypeBlowout присваевается тип урона в CCustomZone::Load непосредственно из секции самой аномалии в конфигах. 1 Ссылка на комментарий
UnLoaded 313 Опубликовано 18 Июля 2017 Поделиться Опубликовано 18 Июля 2017 11 часов назад, Zagolski сказал: непосредственно из секции самой аномалии в конфигах. Да, точно ! Как-то об этом не подумал. Но, тогда, сразу вопрос в догонку: почему для радиоактивных аномалий сделано по иному - как я уже указал в исходном вопросе, тип хита указан напрямую ? Ссылка на комментарий
Winsor 177 Опубликовано 19 Июля 2017 Поделиться Опубликовано 19 Июля 2017 (изменено) Уважаемые знающие, вопрос про серверные объекты. создаю некий клиентский класс class CGBox:public CInventoryItemObject експортирую в скрипты Скрытый текст void CGBox::script_register(lua_State *L) { module(L) [ class_<CGBox, CGameObject>("CGBox") .def(constructor<>()) ]; } регистрирую в class_registrator.script cs_register(object_factory, "CGBox", "se_gbox.se_gbox", "CL_GBOX_S", "game_box_s") сам серверный скриптовый класс class "se_gbox" (cse_alife_item) Так вот вопросы - 1) почему у меня для итема данного класса (CL_GBOX_S) в упор не хотят вызываться методы on_unregister/on_register/keep_saved_data_anyway/on_spawn ? при этом __init/STATE_Read/STATE_Write вызываются. 2) как в биндере объекта (object_binder) из скриптов "увидеть" переход offline/online? Для этого же объекта почему то из биндера не вызываются методы net_export/net_import. При переходе в офлайн вызывается net_destroy, но он же вызывается и при обычном release() Благодарю! p.s. зачем все это - дабы в момент перехода в оффлайн сохранить данные клиентского скриптового объекта в серверный, при онлайн - обратно. Изменено 19 Июля 2017 пользователем Winsor Ссылка на комментарий
Zagolski 74 Опубликовано 19 Июля 2017 Поделиться Опубликовано 19 Июля 2017 (изменено) OnUnloaded. В ЧН и ЗП радиоактивные зоны урон тоже через m_eHitTypeBlowout наносят. А в ТЧ многое не так как нужно сделано... Winsor. Для ТЧ делаешь? Если для ТЧ, то вешай сразу на движковый класс, который в clsid определен. Изменено 19 Июля 2017 пользователем Zagolski Ссылка на комментарий
Winsor 177 Опубликовано 19 Июля 2017 Поделиться Опубликовано 19 Июля 2017 (изменено) 46 минут назад, Zagolski сказал: то вешай сразу на движковый класс что именно вешать? почему то из скриптового движкового класса не вызываются методы нужные... или я немного не понял Ваш ответ. p.s. так же выяснил что, если класс наследован от CInventoryitemObject и лежит в инвентаре актора - в онлайн он не переводиться (т.е. для него не вызываются движковый метод CSE_ALifeDynamicObject::add_online) Изменено 19 Июля 2017 пользователем Winsor Ссылка на комментарий
Zagolski 74 Опубликовано 19 Июля 2017 Поделиться Опубликовано 19 Июля 2017 (изменено) Не нужно ничего в скриптах регистрировать никаких классов. В движке в clsid_game.h новый класс регистрируй как какой-нибудь O_GBOX, на него в игре свой предмет и цепляй. В ТЧ для большинства так нужно делать. upd. А если скриптовые классы создавать, то да, половина глючить начинает. То в онлайн не переводится, то нет-пакеты не читаются. Но в ЧН/ЗП все с этим корректно. Изменено 19 Июля 2017 пользователем Zagolski Ссылка на комментарий
Winsor 177 Опубликовано 19 Июля 2017 Поделиться Опубликовано 19 Июля 2017 3 минуты назад, Zagolski сказал: Не нужно ничего в скриптах регистрировать никаких классов. В движке в clsid_game.h новый класс регистрируй как какой-нибудь O_GBOX, на него в игре свой предмет и цепляй. В ТЧ для большинства так нужно делать. До определенного момента хватало биндера (object_binder). Но приспичило мне сохранять некие данные в нетпакете класса. save/load работают , но если выбросить такой предмет на землю - то при переходе offline/online методы save/load не вызываются. т.е. задача именно из скриптов увидеть этот переход. Ссылка на комментарий
Zagolski 74 Опубликовано 19 Июля 2017 Поделиться Опубликовано 19 Июля 2017 (изменено) В ЧН/ЗП вызывается can_switch_online для этого дела. А в ТЧ лучше юзать нет-пакет от Артоса, взаимодействовать им напрямую с движковым классом. Я таким вариантом на ТЧ и пользуюсь, потому как тоже встречал проблемы с переходом в онлайн объектов на скриптовых классах. Не работают они корректно на ТЧ. Особо глубоко не разбирался почему, плюнул на них. Изменено 19 Июля 2017 пользователем Zagolski 1 Ссылка на комментарий
Карлан 1 049 Опубликовано 19 Июля 2017 Поделиться Опубликовано 19 Июля 2017 Какая-то полная печаль и уныние. 16 часов назад, UnLoaded сказал: Но, тогда, сразу вопрос в догонку: почему для радиоактивных аномалий сделано по иному - как я уже указал в исходном вопросе, тип хита указан напрямую ? Я год назад об этом сам спрашивал, и сам же потом и отвечал, поиском например можно было и найти, и ты уже даже не второй с такими вопросами. Потому-что у зоны радиации другая механика работы, она не хитует, а накапливает в акторе радиацию, т.е. непосредственно не "бьет" (хотя и проходит все этапы кроме сигнала, поэтому, например, броники от радиации защищают нормально), поэтому она и в хит-коллбеке не отрабатывает, можешь сам посмотреть. Потом уже сам апдейт начинает уменьшать здоровье, статик в игре о опасной радиации берется ведь не от того, какой величины заражение в той зоне, в которой ты находишься, что логически кстати тоже неверно и надо переделывать. @Winsor по первому вопросу текстом не знаю как быстро описать. Только что, Winsor сказал: при переходе offline/online методы save/load не вызываются. т.е. задача именно из скриптов увидеть этот переход. Мое хранилище умеет это делать (различать факт того, когда объект удален, от факта, когда объект просто ушел в оффлайн) , пример использования можешь в m_items.script посмотреть. Подробнее писал тут. 1 час назад, Zagolski сказал: А в ТЧ многое не так как нужно сделано... Перечисли несколько примеров, если не трудно. И вот здесь, что конкретно не так? И мой риторический вопрос, сообщения (очередность) хитов никто не переделывал? Косяк вроде известный, особенно после личного осознания. У меня проблем нет, просто интересно альтернативные варианты посмотреть. И еще, количество потоков никто не сокращал (после упрощения клиент-серверной фиесты)? Какие проблемы были, как решали? 1 Ссылка на комментарий
Zagolski 74 Опубликовано 19 Июля 2017 Поделиться Опубликовано 19 Июля 2017 (изменено) Только что, Карлан сказал: И вот здесь, что конкретно не так? Конкретно тут может и так, после того как ты по полочкам все разложил. Касаемо вообще аномалий, то взять хотя бы частое неразрывание тушек в карусели на ТЧ, когда тело остается крутиться в воздухе. Может кто подскажет, при включении саншафтов на зп-шном рендере R4 на дх11 образуется вот это: Т.е. солнечные лучи сами по себе функционируют корректно, но наделены сверхяркостью в виде чистого белого света, примерно как если смотреть в игре на включенную лампу. На скриншоте показан дверной проем в который светят лучи (слева окно, сверху крыша, скрин снят в помещении). Это движковая трабла скорее всего, потому как шейдеры используются родные зп-шные и без каких-либо модификаций. И да, на дх10 этой проблемы не наблюдается. Изменено 19 Июля 2017 пользователем Zagolski Ссылка на комментарий
Zagolski 74 Опубликовано 19 Июля 2017 Поделиться Опубликовано 19 Июля 2017 (изменено) Только что, Карлан сказал: И еще, количество потоков никто не сокращал (после упрощения клиент-серверной фиесты)? Какие проблемы были, как решали? Тут можно поподробнее? Я у себя всю мультиплеерную шнягу повырезал, вот ищу, что еще можно удалить/упростить ненужного для облегчения. Как раз клиент-сервером сейчас занимаюсь. По-хорошему там бы вообще все переделать, от сервер-клиент отказаться, но это уже отдельный разговор. А ты в Prospectors так и оставил ТЧ-шный вариант сервера или на ЗП переделывал? Изменено 19 Июля 2017 пользователем Zagolski Ссылка на комментарий
Expropriator 2 118 Опубликовано 19 Июля 2017 Поделиться Опубликовано 19 Июля 2017 (изменено) В какую тему обратиться? Интересует правка движка или скрипта, или конфига, что бы можно было включать черно-белое изображение рендера всего и вся (без всяких там спец-эффектов). Может уже существует подобное? А еще меня интересует: почему в меню нет "правильных" настроек насыщенности цветовой гаммы? Изменено 19 Июля 2017 пользователем Дизель Ссылка на комментарий
Winsor 177 Опубликовано 20 Июля 2017 Поделиться Опубликовано 20 Июля 2017 14 часов назад, Дизель сказал: включать черно-белое изображение пост процесс, аналогично работе ПНВ. Где то на просторах интернета даже валялся (вроде на сталкерине) файлик с черно-белым постпроцессом. Ссылка на комментарий
Winsor 177 Опубликовано 20 Июля 2017 Поделиться Опубликовано 20 Июля 2017 21 час назад, Карлан сказал: по первому вопросу текстом не знаю как быстро описать можно не быстро, главное - понять что не так. 21 час назад, Карлан сказал: Мое хранилище умеет это делать (различать факт того, когда объект удален, от факта, когда объект просто ушел в оффлайн) , пример использования можешь в m_items.script посмотреть. посмотрел очень внимательно. не увидел ничего, что относилось бы к проверке такого факта. Есть, конечно write_pstor, но она у Вас движковая - мне ничем не поможет. единственное что хоть как то наводит на мыслб о отличии удаляется объект или переходит в офлайн - это local sobj = sim:object(obj:id()). Хотя по коду движка серверный объект всегда удаляется позже клиентского (ну во всяком случае такая очередность удаления объекта и сообщения GE_DESTROY)... Не смог найти... Ссылка на комментарий
Expropriator 2 118 Опубликовано 20 Июля 2017 Поделиться Опубликовано 20 Июля 2017 (изменено) @Winsor, да я думал про зелёный постпроцесс, что его можно переделать. Но потом, я подумал, а почему так печально в самом движке с гаммой. Вообще то мне надо цвет вывести из под консоли, значениями от и до (либо да или нет), для меню настроек. Изменено 20 Июля 2017 пользователем Дизель Ссылка на комментарий
Expropriator 2 118 Опубликовано 23 Июля 2017 Поделиться Опубликовано 23 Июля 2017 (изменено) Мне нужно скомпилировать mixed xrSE_Factory: 7>..\..\xrServerEntities\xrServer_Objects_ALife.cpp(66) : error C3861: 'StrCmpLogicalW': identifier not found 7>..\..\xrServerEntities\xrServer_Objects_ALife.cpp(79) : error C3861: 'StrCmpLogicalW': identifier not found Корень зла тут: # include <shlwapi.h> C:\Program Files\Microsoft SDKs\Windows\v6.1\Include\Shlwapi.h LWSTDAPI_(int) StrCmpLogicalW(__in LPCWSTR psz1, __in LPCWSTR psz2); Что делать и как побороть? Я нуб еще в таких тонкостях. Что ли надо Microsoft SDKs старее? А причём тут директории 64 бита? Проект 32. Может быть причина, что проект создавался на ХР? Изменено 23 Июля 2017 пользователем Дизель Ссылка на комментарий
Expropriator 2 118 Опубликовано 23 Июля 2017 Поделиться Опубликовано 23 Июля 2017 (изменено) Сменил путь на 32битную Microsoft СДК v5.0: Это пропало: 7>..\..\xrServerEntities\xrServer_Objects_ALife.cpp(66) : error C3861: 'StrCmpLogicalW': identifier not found 7>..\..\xrServerEntities\xrServer_Objects_ALife.cpp(79) : error C3861: 'StrCmpLogicalW': identifier not found Это вылезло: 7>LINK : fatal error LNK1104: cannot open file '..\..\..\..\intermediate\xrServerEntities\pch_script.obj' Причину эту смогу решить - она в косячных путях проекта. Собрал полностью xrAi - были косячные настройки проекта (под ХР). Изменено 23 Июля 2017 пользователем Дизель Ссылка на комментарий
mortan 143 Опубликовано 24 Июля 2017 Поделиться Опубликовано 24 Июля 2017 Кто-нибудь правил такую вот траблу в ЗП - когда лутаешь труп или контейнер то итем не переносится в рюкзак а прыгает в тот слот который прописан в конфиге. Или же если наоборот хочешь засунуть оружее для первого слота во второй то оно само прыгает в первый слот если он свободен. Насколько я понял движок просто не выполняет след. net-packet который идёт сразу после перемещения итема от одного владельца к другому. Ссылка на комментарий
UnLoaded 313 Опубликовано 24 Июля 2017 Поделиться Опубликовано 24 Июля 2017 Только что, mortan сказал: то итем не переносится в рюкзак а прыгает в тот слот который прописан в конфиге Не знаю при чем тут "след. net-packet", но дело в том, что в движке в обработчике появления у актера предмета(обычно что-то со словами "Take") происходит проверка: "а подходит ли появившийся предмет для какого-либо слота?", и если подходит и слот пуст - предмет туда и устанавливается. Траблой это назвать нельзя, т.к. это сознательно сделанная "фишка". Ссылка на комментарий
mortan 143 Опубликовано 24 Июля 2017 Поделиться Опубликовано 24 Июля 2017 @UnLoaded тогда почему он не перемещается после в нужный слот? В функции SendEvent_Item2Slot сначала идёт проверка что если у актора нету итема то выполняется move_item_from_to, и уже после должна выполняется отправка пакета GEG_PLAYER_ITEM2SLOT. Но этого не происходит. Где же тут "фишка" если это самая настоящая недоработка? На ориг. игру это не шибко сильно влияет, но если создать какой-нибудь новый внешний контейнер ( скажем так какой-нибудь рюкзак ), то это вызывает определённые проблемы. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти