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

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

Подскажите, есть такая функция:

Скрытый текст

	local item_in_slot_9 = db.actor:item_in_slot(9)
	if item_in_slot_9 then
		local t = item_in_slot_9:condition()
		item_in_slot_9:set_condition(t - 0.0001)
		if item_in_slot_9:condition() <0.01 then
			alife():release(alife():object(item_in_slot_9:id()))
		end
	end

 

Если повесить её на апдейт, то предмет в соответствующем слоте со временем будет изменять состояние. Проверил, всё работает, только после загрузки сейва состояние сбрасывается.

Как сохранить состояние этого предмета после загрузки?

Заранее благодарю!

Важнейшая задача цивилизации - научить человека мыслить.

Ссылка на комментарий
4 часа назад, Fenrir02 сказал:

Как сохранить состояние этого предмета после загрузки?

А что за предмет у тебя ?

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

@AndreySol, Фонарик ( 9 слот ).

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

Важнейшая задача цивилизации - научить человека мыслить.

Ссылка на комментарий
22 минуты назад, Fenrir02 сказал:

Фонарик

Могу ошибаться, но судя по исходникам, изначально для фонарика не предусмотрено сохранение изменения состояния(condition). Если я не ошибаюсь, то вариантов в общем не много:

- искать уже правленый\самому править движок;

- попробовать вариант одновременной установки состояния клиенту через :set_condition и на серверной части через нет-пакет.

Ссылка на комментарий
58 минут назад, AndreySol сказал:

для фонарика не предусмотрено сохранение изменения состояния

А какие предметы сохраняют состояние?

Важнейшая задача цивилизации - научить человека мыслить.

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

@Fenrir02, как вариант - можно фонарику написать биндер и сохранять состояние через него (методы save/load), а на нет-спавне каждый раз устанавливать сохраненное состояние. Либо сделать похожее, добавив фонарику скриптовый серверный класс и сохранять через него (методы STATE_Read/STATE_Write).

  • Спасибо 1

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

naxac.gif

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

Вот и я тут с вопросами... Возможно ли задать предмету (в частности оружию) состояние, заспавнивая его из инвентаря (путём use_object)?

Здесь могла быть ваша реклама.

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

Странный вопрос. Если используешь что-то в инвентаре, то предмет этот уже имеется и спавнить его не нужно. Разве что при использовании одного должно заспавниться что-то другое - тогда примерно так:

function my_spawn()
	-- спавн в инвентаре
	local item = alife():create(section, vector(), 0, 0, db.actor:id())
	-- или спавн где-то снаружи
	-- local item = alife():create(section, position, level_vertex_id, game_vertex_id)
	if item ~= nil then
		level.client_spawn_manager():add(item.id, 0, function (id, obj) obj:set_condition(condition) end)
	end
end

Понятно, что значения section, condition и др. надо где-то задать. Ну а саму функцию следует вызвать из коллбэка на использование.

  • Полезно 1
Ссылка на комментарий
48 минут назад, Kirgudu сказал:

Странный вопрос

С коллбеками и спауном всё понятно. Интересовало то, как задать итему состояние (нанести хит или указать кондишн) - собственно, сам код, как это сделать любым доступным способом. Вроде того, как мы задаём некоторые пар-тры НПС, не прибегая к all.spawn. Теперь всё ясно, спасибо.

Здесь могла быть ваша реклама.

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

Здрасьте.

 

Солянка, трансмутатор, кнопки прокрутки инвентаря: можно ли продублировать нажатие кнопки в интерфейсе прокруткой колеса мыши, и как обозначить такое событие в ui_events?

 

[scripts\amkII_transmutator.script]
    --    Прикрепляем кнопку управления СкроллБаром 'налево'.

    self:AddCallback("oButtonPrevLeft", ui_events.
BUTTON_CLICKED, self.PreviewScrollLeft, self)

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

Решил создать скриптовый диалог на переменных, а не на ХМL (раньше так не делал):

Скрытый текст

function snow_end ()
	function click()
		uiDia:GetHolder():start_stop_menu(uiDia, true) 
	end

	local uiDia = CUIScriptWnd()
	local stat = CUIStatic()
	stat:Init(0,0,1024,768) 
	stat:InitTexture("mod_nv\\to_sun")
	stat:Show(true) 
	stat:SetStretchTexture(true)
	
	local botton = CUI3tButton()
	botton:Init(500,200,200,50) 
	botton:InitTexture("ui_button_main01")

	uiDia:Register(stat)
	uiDia:Register(botton, "button_ok")
	uiDia:AddCallback("button_ok", ui_events.BUTTON_CLICKED, click, uiDia)
	
	level.start_stop_menu(uiDia, true) 
end

 

Запускается, появляется курсор, но нет текстур, экран прозрачный (без ничего)...

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

Register не добавлять элемент в окно, а только регистрирует окно как цель для сообщений.

Как минимум нужно еще делать :AttachChild

Изменено пользователем lordmuzer
  • Полезно 1
Ссылка на комментарий

@lordmuzer, С кнопкой беда - не реагирует на нажатие...

Именно сама кнопка, она должна менять текстуры при наведении и нажатии,  в моем случае при наведении меняет, а при нажатии - нет...

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

То есть статик диалог уже появился?

По кнопке, у описания  

ui_button_main01

 есть все нужные текстуры _e, _t, _d, _h ?

Еще можно попробовать поменять Init для кнопки на такой

:Init("ui_button_main01", 500,200,200,50) 

 

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

Пробуй через 

:Init("ui_button_main01", 500,200,200,50) 

Вот у меня вот так вот точно работает:

    dlg = CUI3tButton()
    dlg:SetAutoDelete(true)
    dlg:SetWindowName("btn_trunk")
    dlg:SetTextST("ui_st_open_trunk")
    dlg:Enable(self.has_trunk)
    dlg:Init("ui_button_ordinary", frame_x + 5, frame_y + 40, 117, 29)
    self:AttachChild(dlg)

 

Ссылка на комментарий
1 час назад, Graff46 сказал:

С кнопкой беда - не реагирует на нажатие...

Это у которой каллбэком функция click? Так в ней переменная класса не определена, равна нил, вот каллбэк и виснет.

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

naxac.gif

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

Имеется такая функция:

Скрытый текст

local sprint = false
local last_active_item_id = 0
function actor_binder:hud_sprint_animation()
	local active_item = self.object:active_item()
	if active_item and last_active_item_id ~= active_item:id() then
		last_active_item_id = active_item:id()
		sprint = false
	end
	if active_item and (active_item:is_knife() or active_item:is_missile()) then
		if (active_item:get_hud_item_state() == 0 and active_item:is_knife()) or (active_item:get_hud_item_state() == 2 and active_item:is_missile()) then
			if self.object:is_actor_sprinting() then
				if not sprint then
					active_item:play_hud_animation(system_ini():r_string(active_item:section().."_hud", "anim_idle_sprint"), true)
					sprint = true
				end
			elseif sprint then
				active_item:play_hud_animation(system_ini():r_string(active_item:section().."_hud", "anim_idle"), true)
				sprint = false
			end
		elseif sprint then
			sprint = false
		end
	end
end

 

Она должна включать анимации спринта для ножа, бинокля, гранат, болта. Но без правок движка в скриптах нет такого метода "is_knife()" или "is_missile()". Можно ли как-нибудь переделать функцию для работы без правки движка?

Важнейшая задача цивилизации - научить человека мыслить.

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

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

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