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

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

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

 
 

Stalkerin. Там есть много хороших статей касательно данной темы.
Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения.

 

Справочное руководство по языку Lua 5.1
https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ru
Справочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены.

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

 

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

 

Вопросы которые будут удалятся, следовательно их задавать не нужно:
-- Где находится та или иная функция?
Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;
-- Как сделать что-то/то-то?
С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;
-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.
-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.
Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов?
В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос.

И последнее: очень рекомендовано к прочтению Правила форума
 


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий

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

 

 

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

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

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

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

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

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

 

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

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

 

 

Изменено пользователем 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
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

×
×
  • Создать...