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

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

МЭй би, пост прибьют, конеш, но попробую...

 

 

Есть скрипт, под ЗП, не мой, для спавна динамических аномалий. Реально динамических, по рандомным координатам.

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

Моих же познаний в скриптоковырянии на подобную доработку не хватает. А это - последний, такскаать, штрих в мою сборку...

Дык, можа, кто сподобится помочь?

Заодно посоветует, как аномалии спавнить с начала игры, а не после выброса.

Если кто-то возьмётся, дальнейшее общение - через ЛС, плиз...

 

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

Вот только, как это реализовать, я чего-то сообразить не могу...

 

 

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

Шаман - СисАдмин

Всяко-разно: для ЧН

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

@naxac, То есть, собираем в таблицу список укрытий, вида

{cover_name,cover_pos}

А потом перебором по этой таблице сравниваем позицию спавна с расстоянием до укрытия?

Шаман - СисАдмин

Всяко-разно: для ЧН

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

@Romz, куда лучше, сделать рестрикторы на локации (или использовать существующие), записать их в специальную секцию где-нибудь в конфиге, после чего, при спавне каждой аномалии проверять, находится ли позиция внутри этого рестриктора if restrictor_obj:inside(spawn_pos) then, если да, то генерим новую и так пока не попадем на валидное место.

А добавление новых шелтеров сведется к дополнению списка в конфиге, вместо ковыряний луа-таблиц каждый раз.

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

 

 

сделать рестрикторы на локации

Хм...А по примеру АМК-мода никак на ЗП не сделать?

Со списочком запретных для аномалий зон...anoms.ltx. Координаты без вертексов и радиус запретной зоны. 

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

 

 

Romz, куда лучше, сделать рестрикторы на локации
Это ты щас кому сказал?.. :blink:

Ещё циклом, да перебором, я смогу, наверное, сделать... Может быть... Наверное...

А это вот всё для меня лес тёмный... Я, вообще, хотел ЗП перепройти, только оригинал мало-мало надоел, а существующие сборки-моды не понравились... Вот и решил модиков накидать... Второй месяц пошёл...

 

Со списочком запретных для аномалий зон...anoms.ltx.
Есть в ЗП surge_manager.ltx, дык в нём перечислены все укрытия, поимённо. Но без координат. Его нельзя как-то применить? Только чтоб попроще...

Шаман - СисАдмин

Всяко-разно: для ЧН

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

@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 и обновив луа.

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

Я не понимаю других языков кроме Lua.
Но ты спрашивал про потоки и приостановку, а в lua сделать подобное можно только с помощью coroutine.

Как не крути, а lua однопоточен.

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

@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  Теперь погода перенесена на биндер актера и апдейтится оттуда. Потоковый скрипт убран.

Изменено пользователем -StalkMen-
Ссылка на комментарий
Подскажите, плиз, ошибка:
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 ?

Ссылка на комментарий
@UnLoaded, в AttachChild, когда у дочернего окна уже есть parent. Т.е., оно уже приаттачено к чему-нибудь. Изменено пользователем naxac

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

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


 

 

Кто-нибудь сталкивался с Луа потоками, приостановкой потоков и тп.?

Сталкивались, если говорить о корутинах, то на скриптах кроме ЧСВ нифига выиграть нельзя, так как однопоточность. Я не вижу необходимости ими пользоваться ни в релизе, ни в дебаге.

 

 

 

Там суть в создании новых Lua_State'ов, которые движок каждый апдейт пинает (resume), но только если они ещё не завершены.

Я не понял что тебе надо, давай доходчиво, аналог wait на исходниках?

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

@Карлан,

Уже ничего не надо :)

Ответ на мой вопрос -

 

 

аналог Sleep (в луа это wait )

Просто интересно, пользовался ли кто таким. (Это не связано coroutine)

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

Знает кто-нибудь способ, как из скрипта определить, что моб сможет дойти с одной локации на другую, что они связаны?

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

Камрады, обращаюсь с проблемой...В ОП-2  2.09+2  + правки Каравана "Антихардкор" столкнулся с таким вылетом 

 

Текст вылета:


Expression : fatal error

Function : CScriptEngine::lua_error
File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
Line : 73
Description :
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 сама проблема возникает при обыске трупов, сейфов, рюкзаков....
На чистом моде  такой проблемы нет, но правки устраивают, хотелось бы  решить эту  проблему.  
 

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

@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
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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