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

[SoC] Ковыряемся в файлах


Halford

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

(изменено)

После end идет попытка обращения к глобальной переменной wpn_pri, которой видимо не нашлось. Из-за этого второй операнд конкатенации равен строке "nil value".Переменные wpn_pri, объявленные в ветках сравнения, - локальные и не будут видны после end.Всё логично.Что тебе здесь не нравится?

 

Для цикла там только пример приведён.Каждая ветка ветвления - это отдельный chunk,что и доказано твоим примером.:)

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

Поделиться этим сообщением


Ссылка на сообщение
(изменено)
Z.I.R.D., в actor_binder:on_item_drop (obj),проверяешь если obj:section()=="секция использованного предмета",то стартуешь таймер на 0.1 секунду с параметром id использованного предмета.По окончании работы таймера проверяешь, есть ли объект alife():object(id).Если его нет,спавнишь что нужно в инвентарь. Изменено пользователем Charsi

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

_Sniper_, в файле system.ltx найди секцию

[main_ingame_indicators_thresholds]
radiation                = 0.1,0.25,0.4,0.55,0.7
wounds                    = 0.01,0.2,0.4,0.6,0.8
jammed                    = 0.5,0.6,0.7,0.8,0.9
starvation                = 0.5,0.6,0.7,0.8,0.9
fatigue                    = 0.3,0.6,0.7,0.8,0.9

В ней заданы пороги смены цвета соответствующих индикаторов.Напиши так:

wounds                    = 0.01,0.01,0.01,0.01,0.01001

При уровне кровотечения менее 0.01 значок не отрисовывается.При уровне более 0.01001 будет нарисован красный значок.

Переход от 0.01 к 0.01001 почти моментальный и смена цветов на глаз неуловима.

на HUD соответствующую иконку
В колбэке на использование предмета проверяешь,если предмет - аптечка,то рисуешь кастомстатик с иконкой аптечки.Посмотри как это работает в медицинской резинке Vergas'a.

 

Подкрашивать уже ничего не надо :)

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

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

MELoman, в alife.ltx в секции [alife] есть параметр

autosave_interval            = 01:05:00

Только непонятно,эти 65 минут от какого момента отсчитываются:от времени последнего автосейва или от времени старта последней загрузки.

В оригинале ТЧ автосохранение только при входе на локацию.
Это, наверно, потому, что никто по 65 минут на одной локации не бегает :) Изменено пользователем Charsi

Поделиться этим сообщением


Ссылка на сообщение
_Призрак_,посмотри amk_anoms.script. В нём таблица anti_spawn_zones, которая заполняется при распарсивании файла config\scripts\amk\anoms\anoms.ltx. В каждой строчке четыре числа - это координаты центра и радиус свободной от аномалий области.

Поделиться этим сообщением


Ссылка на сообщение
stunder,сделать слот с поддержкой перетаскивания и двойного клика наверно нельзя. По крайней мере, я не видел, чтобы где-то такое было. Однако есть возможность прикрепить к окну инвентаря интерактивные графические элементы и повесить на их использование свои скрипты. Получается грубая эмуляция слота,но это всё же лучше чем ничего.

Поделиться этим сообщением


Ссылка на сообщение
speczadanie,сделать кнопку лишь невидимой мало,надо чтоб она ещё и не нажималась. Для этого можно убрать кнопку за край экрана или уменьшить размер кнопки YYY до 0х0.В коллбек нажатия на кнопку XXX допиши
YYY:SetWndPos(1024,768) или YYY:SetWndSize(0,0)

При открытии окна в другой раз её размер прочитается из xml файла и она окажется на своём месте.Если надо заблокировать её навсегда, то делай как max_max_08 - через инфопорцию.

Поделиться этим сообщением


Ссылка на сообщение

strong, как приземлить машинку...

Пропиши в секции машинки биндер.Вот пример для "Нивы"

[veh_niva_g]
class        = SCRPTCAR
cform           = skeleton
visual        = physics\vehicles\niva\veh_niva_u_01.ogf
script_binding          = bind_physic_object.init

При выходе машинки в онлайн нанесем ей небольшой удар. В файле bind_physic_object.script в функции generic_physics_binder:net_spawn(data) напиши

    if self.object:section()=="veh_niva_g" then
        local h = hit()
        h.power = 0
        h.impulse = 0.0001
        h.draftsman = self.object
        h.direction = vector():set(0,0,0)
        h.type = hit.strike
        self.object:hit(h)
    end

Теперь при появлении в игре машина падает на землю.Параметр h.impulse маленький и кондиция машины почти не страдает.

Поделиться этим сообщением


Ссылка на сообщение
Куфзук, левелченджер сам определит, что ГГ внутри него, сохранит игру и загрузит ГГ на другой локации. Во время сохранения выполнится функция actor_binder:save(packet), в ней и нужно сохранять имя текущей локации - level.name(). При загрузке в actor_binder:net_spawn(data) сравнивай имя текущего уровня и того, что сохраняли.

Поделиться этим сообщением


Ссылка на сообщение
Хантер,из-за ошибки в движке вещи,спавнящиеся в тайник,находящийся в онлайне, могут пропасть,если не перевести тайник в офлайн.Обошли это так:вещи спавнятся в инвентарь ГГ,а потом переносятся в тайник.Если среди них будут патроны,то схема ammo_on_belt удалит полученные в инвентарь патроны и заменит их на фейковые.Т.к. патронов настоящих в инвентаре уже не будет,то и переносить в тайник будет нечего.Чтобы это пофиксить достаточно блокировать подмену патронов на фейки при получении наводки на тайник и разблокировать после окончания переноса вещей.Можно этот баг обойти иначе.В Народной Солянке вещи спавнятся в тайник,он переводится в офлайн и потом в онлайн.

Поделиться этим сообщением


Ссылка на сообщение
что бы худ не перекрывал биорадар

В апдейте отслеживаешь одевание\переодевание брони.Если броник сменился,то выключаем биорадар.На следующем апдейте его статик переинициализируется и приклеится поверх динамического худа.

Поделиться этим сообщением


Ссылка на сообщение

DrDen, вылет из-за отсутствия функции AddTextDigit.

function AddTextDigit(str, dig)
    if (dig > 9) then
        str = str .. dig
    else
        str = str .. "0" .. dig
    end
    return str    
end

Добавь её в свой файл главного меню.

Поделиться этим сообщением


Ссылка на сообщение

AutoGnom, метод Update для объектов на классах, унаследованных от CUIScriptWnd, вызывается автоматически и куда-то ещё его вызов прописывать не нужно.

Метод Init задает положение и размер для окна на виртуальном экране с разрешением 1024 на 768. Поэтому, чтобы окно было растянуто на весь экран, пишут

self:Init(0, 0, 1024, 768)

вне зависимости от текущего разрешения.

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

IGOR™,pda_art_mod не используется. В НС от 3.09.10 работает трансмутатор из AMKII. Он должен запускаться при использовании, а не при выкидывании предмета. Перенеси строку 

amkII_transmutator.amkUseTransmutator(obj)
из amk.script в bind_stalker.script в функцию function actor_binder:on_use_object(obj) Изменено пользователем Charsi
  • Нравится 2

Поделиться этим сообщением


Ссылка на сообщение

Нет, это просто числовой идентификатор для пост-процесса, позволяющий принудительно его остановить вот так:

level.remove_pp_effector(2006)

Поделиться этим сообщением


Ссылка на сообщение

@Карлан, можно сохранить какой-нибудь файл на диск и посмотреть время его изменения.

	-- user.ltx
	get_console():execute("cfg_save")
	local f = getFS()
	local flist = f:file_list_open_ex("$app_data_root$",FS.FS_ListFiles,"user.ltx")
	local file = flist:GetAt(0)
	local res = file:Modif()
	get_console():execute(res:gsub(":","."):gsub("%s","_")) -->Thu_Oct_17_00.30.52_2013_
	local res = file:ModifDigitOnly()
	get_console():execute(res:gsub(":","."):gsub("%s","_")) -->17.10.2013_00.30
	
	-- log
	get_console():execute("flush")
	local f = getFS()
	local flist = f:file_list_open_ex("$logs$",FS.FS_ListFiles,"*.log")
	flist:Sort(FS.FS_sort_by_modif_down)
	local file = flist:GetAt(0)
	local res = file:Modif()
	get_console():execute(res:gsub(":","."):gsub("%s","_")) -->Thu_Oct_17_00.30.52_2013_
	local res = file:ModifDigitOnly()
	get_console():execute(res:gsub(":","."):gsub("%s","_")) -->17.10.2013_00.30 

 

 

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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

AMK-Team.ru

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