Dennis_Chikin 3 658 Опубликовано 29 Мая 2011 Интересно, а из всего многообразия есть что-нибудь, чем можно пнуть живого актора ? Не труп, а живого ? Монстры - швыряют с легкостью, аномалии засасывают, неписи с дороги двигают... А скриптом ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 30 Мая 2011 Сколько и куда надо этого импульса, чтобы было хоть чуть-чуть заметно ? У меня ощущение, что на живого ГГ это не действует. Только собственно хит. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 7 Января 2012 Наверное сюда вопрос: правильно ли я понимаю, что npc:critically_wounded() возращает не false/nil примерно на время, когда проигрывается анимация ранения ? Что она вообще такое на самом деле ? а npc:wounded() - это когда хиты непися ушли за некое пороговое значение (и кстати вот здесь примерно он должен лечь совсем ?) Как оно связано с конфигами ? 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 15 Апреля 2015 (изменено) Внезапный такой вопрос: от чего зависит (и где вызывается) :load() для монстров ? Ибо внезапно обнаружил, что сэйв у меня для них отрабатывает, и что-то туда пишет, а вот load почему-то отрабатывает только для торговца. Собственно монстры - reinit() и сразу net_spawn(). Upd: эффект явно связан с se_monster, и вдумчивой ревизией я, наверное, и проблему найду. Но сама суть эффекта пока что загадочна. Изменено 16 Апреля 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 16 Апреля 2015 2 Карлан: вообще-то вопрос скорее в тему с++. Если сохранять/читать фиксированными блоками, причем в один файл - будет практически мгновенно. Построчно/побайтно - медленно и печально. Традиционно медленными являются сами вызовы/служебные операции, действия с 1000 файлов - это очень медленно. С 10000 - невменяемо. Операция с 1 байтом - не сильно быстрее операции с 100kb. Вообще, то, что мы видим как "загрузку игры" - это чтение много разных файлов (сравни с re-load на той же локации), а все остальное (вот этот самый re-load) - вычисления и всяческие многократные рекурсивные переборы разной ереси. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 16 Апреля 2015 (изменено) Вопрос весьма расплывчат. Даже непонятно, относится ли он к работе с файлами, или к организации данных. Как бы в идеале, чтобы все было быстро, у тебя должен быть организован непрерывный блок, скажем, полученный через malloc() (ну или массив таки блоков), который ты пишешь/читаешь через read() или pread() / write(), а потом накладываешь структуру, и разбираешь все в один проход. При этом, да, размер сэйва тебя волновать не должен от слова совсем - ты вряд-ли в данном случае выйдешь за ту границу, где он начнет реально влиять. И, да, взятую память ни кому никогда больше не отдавать. Это я тебе как человек, писавший/правивший всякие ata* и прочие burncd с raid'ами рекомендую. И забить на "совместимость" с 49.5битным процессором неведомого производителя, работающим на троичной логике, со старшим байтом в середине слова. Но, разумеется, тебе сейчас именно xmlы генерить/парсить и насоветуют, как "идеологически правильный" подход. Изменено 16 Апреля 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 17 Апреля 2015 (изменено) Нет, ну если уж трогать непосредственно движок, то почему бы и не потрогать код сохранения/загрузки ? Весь вопрос в том, что именно мы хотим сохранять, и как оно выглядит внутри игры. Сохранению контекста объектов и нетпакетам - отказать. Сделать плоскую таблицу, иметь ее в виду как последовательный кусок памяти, и тупо писать/читать поблочно. Вот прямо в новосозданный сэйв. Ничего лучшего не придумали. Скорость будет выше, чем у копирования средствами системы. Изменено 17 Апреля 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 17 Апреля 2015 Очередной забавный вопрос: se_monster:on_death() / se_stalker:on_death() при каких-то условиях вообще вызываются, или это кто-то просто для красоты добавил ? Так, я вообще не понял этого юмора... При net_destroy()/net_spawn(), то есть, при переходе offline/online, у монстров load() тоже не вызывается. Init() -> reload() -> reinit() -> netspawn(). По крайней мере в солянке. Это значит, что все, например, сохраненное в pstor - того... А в оригинале-то оно работает ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 23 Ноября 2015 (изменено) Винда, однако. Кроме того, а оно вообще разве позволяет гулять за пределы FS root ? Изменено 23 Ноября 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 31 Июля 2016 Еле нашел, об чем речь. Беда в том, что колбэк на сохранение дергается тогда, когда есть сохранение. Если объект ушел в офлайн - ни каких колбэков уже нет. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 24 Января 2017 (изменено) На сколько неправильно я понимаю, что именно npc:set_path_type( game_object.patrol_path ) означает "игнорировать рестрикторы" и, возможно, игнорировать что-то еще ? Такое, что не позволяет построить путь в случае npc:set_path_type( game_object.level_path ) ? Изменено 24 Января 2017 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 24 Января 2017 Под "такое" понималось "что-то еще". Черт его знает, что там может быть. Например, game_graph():accessible( gvid, false ) - это я просто написал, что первое в голову пришло. Под "построить путь" - это именно последовательность level vertex, позволяющих попасть в искомый. С обходом аномалий именно сейчас и бьюсь. Тут move_manager в общем-то не при чем. Предполагается, что между точками ни каких аномалий нет, и быть не может. Динамические аномалии появились в амк, и там же появилась, но была недоделана, схема их обхода. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 24 Января 2017 npc:set_path_type( game_object.patrol_path ) npc:set_dest_level_vertex_id( lvid ) - работает npc:set_path_type( game_object.level_path ) npc:set_dest_level_vertex_id( lvid ) - расстояние 50 метров до точки - работает - расстояние 200+ метров - то работает, то не работает. Не работает, например, в случае, если на пути, по которому идем в случае npc:set_path_type( game_object.patrol_path ) - есть аномалия. Но как я заметил, именно аномалии может и не быть, но все равно не работает. Как-то так. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 25 Января 2017 Стоят на месте. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 17 Февраля 2017 Что-то я забыл: у актора callback.hit не работает ? Совсем-совсем ? И как тогда ? Есть же подсветка, с какой стооны ему прилетает, или оно целиком внутрях движка ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 5 Февраля 2018 Наверное, сюда: function my_func() ... level.set_weather_fx( ... ) -- висим, и через некоторое время вылет без лога либо CCustomMotion::Length() ... end level.add_call( my_func, another_func ) Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 5 Февраля 2018 Однократного вызова достаточно. Зачем он в апдейте - например, проверять, выполнено ли некое условие, и именно тогда - вызвать, в остальное время - делать что-то еще. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 658 Опубликовано 12 Апреля 2018 вот полный код: function update() local v = upd_t[upd_i] if v then local st = v.st if st.active_section then issue_event( v.object, st[st.active_scheme], "update", delta ) else upd_t[upd_i] = false -- удаляем из списка на апдейт end upd_i = upd_i + 1 elseif v == false then -- удаляем из списка на апдейт table_remove( idx_t, upd_i ) table_remove( upd_t, upd_i ) upd_n = upd_n - 1 else upd_end = true end return false end Если через issue_event() каким-то образом доходит до level.set_weather_fx( ... ) - вот на ней и виснем. Если это же самое вызывать не через level.add_call( update, dummy_action ), а, например, из апдейта актора, либо конкретно if условие then ... level.set_weather_fx( ... ) ... end вынести в тот же апдейт актора - все замечательно работает. То есть, делаем вывод, что все-таки связка level.add_call( ... ) + level.set_weather_fx( ... ). Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение