Romz 142 Опубликовано 27 Августа 2015 Поделиться Опубликовано 27 Августа 2015 (изменено) МЭй би, пост прибьют, конеш, но попробую... Есть скрипт, под ЗП, не мой, для спавна динамических аномалий. Реально динамических, по рандомным координатам. У него есть небольшой недостаток - аномалии спавнятся везде, даже в укрытиях. Автор скрипта обещал сие поправить, но пропал... Моих же познаний в скриптоковырянии на подобную доработку не хватает. А это - последний, такскаать, штрих в мою сборку... Дык, можа, кто сподобится помочь? Заодно посоветует, как аномалии спавнить с начала игры, а не после выброса. Если кто-то возьмётся, дальнейшее общение - через ЛС, плиз... Теоретически, нужно собрать список укрытий на локе, взять их координаты, и при спавне аномалии, проверить, чтобы она не спавнилась на расстоянии ближе определённого от центра укрытия. Вот только, как это реализовать, я чего-то сообразить не могу... Изменено 27 Августа 2015 пользователем Romz Шаман - СисАдмин Всяко-разно: для ЧН Ссылка на комментарий
naxac 2 447 Опубликовано 28 Августа 2015 Поделиться Опубликовано 28 Августа 2015 @Romz, if spawn_position:distance_to(cover_position) > distance_value then -- spawn end 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
-StalkMen- 159 Опубликовано 28 Августа 2015 Поделиться Опубликовано 28 Августа 2015 Кто-нибудь сталкивался с Луа потоками, приостановкой потоков и тп.? Ссылка на комментарий
Romz 142 Опубликовано 28 Августа 2015 Поделиться Опубликовано 28 Августа 2015 @naxac, То есть, собираем в таблицу список укрытий, вида {cover_name,cover_pos} А потом перебором по этой таблице сравниваем позицию спавна с расстоянием до укрытия? Шаман - СисАдмин Всяко-разно: для ЧН Ссылка на комментарий
RayTwitty 502 Опубликовано 28 Августа 2015 Поделиться Опубликовано 28 Августа 2015 @Romz, куда лучше, сделать рестрикторы на локации (или использовать существующие), записать их в специальную секцию где-нибудь в конфиге, после чего, при спавне каждой аномалии проверять, находится ли позиция внутри этого рестриктора if restrictor_obj:inside(spawn_pos) then, если да, то генерим новую и так пока не попадем на валидное место. А добавление новых шелтеров сведется к дополнению списка в конфиге, вместо ковыряний луа-таблиц каждый раз. Ссылка на комментарий
_Val_ 2 225 Опубликовано 28 Августа 2015 Поделиться Опубликовано 28 Августа 2015 сделать рестрикторы на локации Хм...А по примеру АМК-мода никак на ЗП не сделать? Со списочком запретных для аномалий зон...anoms.ltx. Координаты без вертексов и радиус запретной зоны. Ссылка на комментарий
Romz 142 Опубликовано 28 Августа 2015 Поделиться Опубликовано 28 Августа 2015 Romz, куда лучше, сделать рестрикторы на локацииЭто ты щас кому сказал?.. Ещё циклом, да перебором, я смогу, наверное, сделать... Может быть... Наверное... А это вот всё для меня лес тёмный... Я, вообще, хотел ЗП перепройти, только оригинал мало-мало надоел, а существующие сборки-моды не понравились... Вот и решил модиков накидать... Второй месяц пошёл... Со списочком запретных для аномалий зон...anoms.ltx.Есть в ЗП surge_manager.ltx, дык в нём перечислены все укрытия, поимённо. Но без координат. Его нельзя как-то применить? Только чтоб попроще... Шаман - СисАдмин Всяко-разно: для ЧН Ссылка на комментарий
Nazgool 250 Опубликовано 28 Августа 2015 Поделиться Опубликовано 28 Августа 2015 @-StalkMen-, http://www.amk-team.ru/forum/index.php?showtopic=7450&page=16#entry622983 2 Ссылка на комментарий
-StalkMen- 159 Опубликовано 28 Августа 2015 Поделиться Опубликовано 28 Августа 2015 @Nazgool, Тепло, но я не совсем про это. if( l_tpIniFile->section_exist( type_name() ) ) if (l_tpIniFile->r_string(type_name(),"script")) ai().script_engine().add_script_process(ScriptEngine::eScriptProcessorGame,xr_new<CScriptProcess>("game",l_tpIniFile->r_string(type_name(),"script"))); else ai().script_engine().add_script_process(ScriptEngine::eScriptProcessorGame,xr_new<CScriptProcess>("game","")); А про это... Вроде как это сломано, но я починил, выпилив JIT и обновив луа. Ссылка на комментарий
Nazgool 250 Опубликовано 28 Августа 2015 Поделиться Опубликовано 28 Августа 2015 Я не понимаю других языков кроме Lua.Но ты спрашивал про потоки и приостановку, а в lua сделать подобное можно только с помощью coroutine. Как не крути, а lua однопоточен. Ссылка на комментарий
-StalkMen- 159 Опубликовано 28 Августа 2015 Поделиться Опубликовано 28 Августа 2015 (изменено) @Nazgool, Там суть в создании новых Lua_State'ов, которые движок каждый апдейт пинает (resume), но только если они ещё не завершены. Я собственно искал аналог Sleep (в луа это wait ) , чтоб приостановить луашный поток. Те можно изобразить что-то вроде такого function main() local m_surge_manager = surge_manager.get_surge_manager() m_surge_manager:initialize() while true do m_surge_manager:update() wait(10000) end end Причём таймер работает как надо, раньше времени поток не продолжится.Вроде в ТЧ или ЧН ПЫС использовали это [single] script = ;level_weathers Теперь погода перенесена на биндер актера и апдейтится оттуда. Потоковый скрипт убран. Изменено 28 Августа 2015 пользователем -StalkMen- Ссылка на комментарий
Nazgool 250 Опубликовано 28 Августа 2015 Поделиться Опубликовано 28 Августа 2015 Понял про что ты. Ну тогда coroutine это не то, что тебе нужно Ссылка на комментарий
UnLoaded 313 Опубликовано 29 Августа 2015 Поделиться Опубликовано 29 Августа 2015 Подскажите, плиз, ошибка: Expression : assertion failed Function : CUIWindow::SetParent File : E:\stalker\sources\trunk\xr_3da\xrGame\ui\UIWindow.cpp Line : 634 Description : !(m_pParentWnd && m_pParentWnd->IsChild(this)) в каком из методов может возникать - в DetachChild или в AttachChild ? Ссылка на комментарий
naxac 2 447 Опубликовано 29 Августа 2015 Поделиться Опубликовано 29 Августа 2015 (изменено) @UnLoaded, в AttachChild, когда у дочернего окна уже есть parent. Т.е., оно уже приаттачено к чему-нибудь. Изменено 29 Августа 2015 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
UnLoaded 313 Опубликовано 29 Августа 2015 Поделиться Опубликовано 29 Августа 2015 в AttachChild, когда у дочернего окна уже есть parent. Странно... У меня вылет происходит там, где вызывается DetachChild. Ссылка на комментарий
Карлан 1 049 Опубликовано 29 Августа 2015 Поделиться Опубликовано 29 Августа 2015 @UnLoaded, правильно у тебя все происходит, дело в сборщике мусора, надо сохранять ссылку на парента. Вылет может происходить и там и там, зависит от действий, но каков вопрос - таков ответ. Кто-нибудь сталкивался с Луа потоками, приостановкой потоков и тп.? Сталкивались, если говорить о корутинах, то на скриптах кроме ЧСВ нифига выиграть нельзя, так как однопоточность. Я не вижу необходимости ими пользоваться ни в релизе, ни в дебаге. Там суть в создании новых Lua_State'ов, которые движок каждый апдейт пинает (resume), но только если они ещё не завершены. Я не понял что тебе надо, давай доходчиво, аналог wait на исходниках? Ссылка на комментарий
-StalkMen- 159 Опубликовано 29 Августа 2015 Поделиться Опубликовано 29 Августа 2015 @Карлан, Уже ничего не надо Ответ на мой вопрос - аналог Sleep (в луа это wait ) Просто интересно, пользовался ли кто таким. (Это не связано coroutine) Ссылка на комментарий
dsh 3 824 Опубликовано 29 Августа 2015 Поделиться Опубликовано 29 Августа 2015 Знает кто-нибудь способ, как из скрипта определить, что моб сможет дойти с одной локации на другую, что они связаны? dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Maxwel 21 Опубликовано 30 Августа 2015 Поделиться Опубликовано 30 Августа 2015 Камрады, обращаюсь с проблемой...В ОП-2 2.09+2 + правки Каравана "Антихардкор" столкнулся с таким вылетом Текст вылета: Expression : fatal errorFunction : CScriptEngine::lua_errorFile : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cppLine : 73Description :Arguments : LUA error: d:\s.t.a.l.k.e.r\gamedata\scripts\hotkeys.script:210: attempt to index upvalue 'carbody_addons' (a nil value) Сам проблемный скрипт - http://rghost.ru/8Q9W9jmWN Вот ссылка на сами правки https://yadi.sk/d/YdiB9TT2hnX3rИграю на широкоформатнике, разрешение 1600*1200 сама проблема возникает при обыске трупов, сейфов, рюкзаков....На чистом моде такой проблемы нет, но правки устраивают, хотелось бы решить эту проблему. Ссылка на комментарий
Nazgool 250 Опубликовано 30 Августа 2015 Поделиться Опубликовано 30 Августа 2015 @Maxwel, Исправь пока в 209-й строке elseif info_id == "ui_car_body_hide" and used_box then на elseif carbody_addons and info_id == "ui_car_body_hide" and used_box then И посмотри что будет 250 метров качать как-то не хочется, поэтому что за инфопорции, где и когда выдаются, и вообще систему не знаю. 1 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти