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

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

 

 

Обновил подборку модулей...

Правки других авторов, проскальзывавшие в этой или других темах в разное время, взяты в полной мере

Луа-расширения используются ?

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

 

 

Правки других авторов, проскальзывавшие в этой или других темах в разное время, взяты в полной мере.

 

Не исправлена проблема с комментариями в custom_data. Взял исправления не проверив и сейчас опять получил этой же граблей по лбу.

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

@dsh, вот точно помню, что исправлял! Аккурат тогда, когда прочёл сообщение об этой ошибке.

Видимо, исправление «потерялось» во время интеграции правок от naxac.

Спасибо, что сообщил, обновил выложенные сборки.

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

Возможно кому то понадобиться.

--[[---------------------------------------------------------------------------
		Различные утилиты.
Для С.Т.А.Л.К.Е.Р. Тень Чернобыля.
(с) НаноБот									19.11.2016
--]]---------------------------------------------------------------------------

--------------------------Вывод текста на экран.-------------------------------
local x_text, y_text, time_update, hud
local hud_text, outtext_count, outtext_num
local hud_textxy, outtextxy_count, outtextxy_num
local color, height_font, type_font
--- создать текстовый вывод: x, y - координата начала вывода
function	create_hud_outtext(...)
	local args 		= {...}
	x_text			= args[1] or 0
	y_text			= args[2] or 0
	color			= args[3] or {255, 225, 215, 0}	-- золотистый ц.
	height_font		= args[4] or 20
	type_font		= args[5] or GetFontLetterica16Russian()
	align_text		= args[6] or CGameFont.alLeft
	y_text			= y_text - height_font
	hud				= get_hud()
	time_update		= 0
	outtext_count	= 0
	hud_text		= {}
	outtextxy_count	= 0
	hud_textxy		= {}
end
--- удалить тестовый вывод: is_del - надо ли удалять
function	destroy_hud_outtext(is_del)
	if is_del then
		if hud_text then
			for i = 1, outtext_count do
				hud:RemoveDialogToRender(hud_text[i])
			end
			hud_text		= nil
			outtext_count	= nil
			outtext_num		= nil
		end
		if hud_textxy then
			for i = 1, outtextxy_count do
				hud:RemoveDialogToRender(hud_textxy[i])
			end
			hud_textxy		= nil
			outtextxy_count	= nil
			outtextxy_num	= nil
		end
		x_text			= nil
		y_text			= nil
		hud				= nil
		time_update		= nil
		color			= nil
		height_font		= nil
		type_font		= nil
	end
end
--- вывести текст на экран: out - надо ли выводить, txt - текст, ... - параметры
function	hud_outtext(out, txt, ...)
	if out and hud_text then
		if time_update ~= time_global() then	-- new update
			outtext_num = 0
			time_update = time_global()
		end
		outtext_num = outtext_num + 1
		if outtext_num > outtext_count then	-- new outtext
			outtext_count = outtext_num
			hud_text[outtext_num] = CUIStatic()
			hud_text[outtext_num]:Init(x_text, outtext_num*height_font+y_text, 1, 1)
			hud_text[outtext_num]:SetFont(type_font)
			hud_text[outtext_num]:SetTextAlign(align_text)
			hud_text[outtext_num]:SetTextColor(color[1], color[2], color[3], color[4])
			hud:AddDialogToRender(hud_text[outtext_num])
		end
		hud_text[outtext_num]:SetText(string.format(txt, ...))
	end
end
--- вывести текст на экран в нужную координату: out - надо ли выводить, x, y - координаты, txt - текст, ... - параметры
function	hud_outtext_xy(out, x, y, txt, ...)
	if out and hud_textxy then
		if time_update ~= time_global() then	-- new update
			outtextxy_num = 0
			time_update = time_global()
		end
		outtextxy_num = outtextxy_num + 1
		if outtextxy_num > outtextxy_count then	-- new outtext
			outtextxy_count = outtextxy_num
			hud_textxy[outtextxy_num] = CUIStatic()
			hud_textxy[outtextxy_num]:Init(x, y, 1, 1)
			hud_textxy[outtextxy_num]:SetFont(type_font)
			hud_textxy[outtextxy_num]:SetTextAlign(align_text)
			hud_textxy[outtextxy_num]:SetTextColor(color[1], color[2], color[3], color[4])
			hud:AddDialogToRender(hud_textxy[outtextxy_num])
		else
			hud_textxy[outtextxy_num]:SetTextX(x)
			hud_textxy[outtextxy_num]:SetTextY(y)
		end
		hud_textxy[outtextxy_num]:SetText(string.format(txt, ...))
	end
end
-------------------------------------------------------------------------------
 

 

 

Делал по мотивам билда 1098, выводится отладочный текст на экран.

Типа так.

_unb.hud_outtext(out, "mYawVelocity: %.6f, dt: %.3f", self.mYawVelocity, dt)

Перед использованием надо создать текстовой вывод, а потом, так же, надо не забывать удалять вывод, если уровень делает destroy.

Изменено пользователем НаноБот
  • Полезно 3

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

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

Скриптовый модуль из мода "Новое Время".
Кроме давно известных и банальных вещей содержит скриптовую систему заменяющую стандартный story_id. Подробнее в файле. Никаких адаптаций и подключений не требует. Для функцианирования некоторых плюшек могут понадобится: расширения LUA открывающие пространства имен io,  os(копирование файлов), X-Ray extensions(спавн со story_id). (Для аналога story_id дополнительные правки не нужны).
Ссылка.
Использовать везде с указанием автора.

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

@Graff46, мнения расходятся.
Лично я пользуюсь модулем, выложенным в этом посте - это последняя версия, опубликованная Артосом, для неё форумчанами также были сделаны исправления ряда найденных ошибок.
Если не ошибаюсь, данный модуль также получил некоторое развитие в каком-то из модов, одним из авторов которого является @naxac, но какие там были сделаны добавки, общие или частные, нужно спрашивать у него.
С другой стороны, насколько мне известно, автор данной темы @Zander_driver по некоторым причинам пользуется более старой версией модуля.
ИМХО, стоит начать с m_netpk, а уж если что-то не устроит - переходить на иное.

Изменено пользователем Kirgudu
Ссылка на комментарий
@Graff46,соглашусь. m_netpk работает. Я использовал и m_net_utils и еще какой-то скрипт от xstream. В принципе все работают. Сейчас использую m_netpk. Единственное, если ты иногда захочешь в custom data писать данные не в формате ini, то m_netpk на это не рассчитан. Но в этом случае я бы посоветовал пересмотреть свои желания.
Ссылка на комментарий

@Kirgudu, Я пытался работать с m_netpk, но что то не заладилось, работаю с xrs_utils.script. А вообще в многих модулях для работы требуется отдельный LTX  файл, в котором записаны классы объектов. Я нашел способ изменить class_registrator.script и читать классы из него, и если моддер добавляет свои объекты\классы, то нет необходимости возиться еще с LTX. Вот и хочу узнать на какой скрипт лучше свою фитчу навесить...

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

@Graff46, m_netpk всё-таки наиболее современный, в нём самим Артосом было исправлено много ошибок и сделано много доработок по сравнению с m_net_utils. Повторюсь, если уж начинать, то с него. ИМХО, конечно.
Скрипт xStream не щупал, про его плюсы и минусы ничего сказать не могу.

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

@dsh, так это всё тогда совместно обсуждалось и разрабатывалось. Согласен, не исключено что xStream была своего рода первопроходцем. Не в курсе деталей, но по истории форума при желании проследить, думаю, можно.

Кстати,

если ты иногда захочешь в custom data писать данные не в формате ini

что имеешь в виду? Запись/чтение голой строки "as is", без внутреннего парсинга с попутной потерей неканонических данных? Если есть необходимость, такой форсированный режим добавить не сложно.

Изменено пользователем Kirgudu
Ссылка на комментарий
такой форсированный режим добавить не сложно

 

Я не говорю, что сложно. Просто человеку, который только собирается использовать m_netpk, лучше об этом знать заранее, а то захочет прочитать custom data, в которой данные не в формате ini, и будет голову ломать, чего же ему :getString() возвращает пустую строку.

Изменено пользователем dsh
Ссылка на комментарий

@Graff46, в совершенно любом. К примеру, в соляночных (в старой солянке) контейнерах артефактов все данные хранятся одной строкой. Просто строкой, секции артефактов через запятую.

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

@Graff46, а вот это как раз и есть формат ini, который m_netpk понимает и парсит для тебя в таблицу при чтении нет-пакета.


Update:

Хотел было по-быстрому добавить в m_netpk поддержку произвольной строки, но, заглянув в скрипт, понял, что это не обязательно.
В конфиге m_netpk.ltx есть такой параметр:

disable_convert_custom_data   = false ;--/ отключить конвертирование 'custom_data' из строки в таблицу (и обратно)

Если поставить здесь true - кастом дата всегда будет представлена только в виде строки. И если уж конкретный скриптёр знает, зачем писать туда данные не в формате ini, ему не составит труда оперировать строками в том числе и для канонических данных.

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

@Kirgudu, это не то. Когда я писал, то имел ввиду, что для некоторых случаев может понадобиться доступ к сырой строке. Ну вот как в моем примере, все в ini, а для контейнеров используется свой формат. Эта же опция переключает поведение глобально. По хорошему, там бы добавить методы :getStringRaw() и :setStringRaw() или что-то вроде того.

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

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

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

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

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

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

Войти

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

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

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

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