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

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

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()". Можно ли как-нибудь переделать функцию для работы без правки движка?

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

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

@Fenrir02, нет. Нужны и другие методы: play_hud_animation, is_actor_sprinting, get_hud_item_state.

Без них ничего работать не будет. Особенно без play_hud_animation, который, собственно, анимацию и проигрывает.

  • Спасибо 1

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

naxac.gif

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

Вопросики вылезли. Последний раз скрипты редактировал лет 8 назад. Помогите кто может.

Делал для ЗП магазинный гранатомёт с отъёмным магазином на основе wpn_rg6. Отключил  tri_state_reload и добавил anm_reload, что бы X-Ray не ругался. Вроде заработало, но по исчерпанию 1-го магазина переставал стрелять, несмотря на перезарядку.

Тогда сделал маленький квадратик в инвентарь, что бы можно было положить в быстрый слот (F1-F4) и на его использование повесил скрипт, который удаляет оружие из игры и тут же выдаёт такое-же только новое. Помогло. Но счастье было не полным.

Не срабатывает очистка магазина. Заполнение неполным количеством зарядов. 

При удалении оружия из активного слота, оно исчезает почти мгновенно. Хотелось бы помедленнее, но попытка запустить анимацию тоже не сработала.

Подскажите, где накосячил?

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

  local n_act_slot  = db.actor:active_slot()
  local sm_act_item = db.actor:item_in_slot(n_act_slot)
-- --> wpn_fn2000_nimble (based on rg6) <=---------------------------------------
  if sm_act_item and ("wpn_fn2000_nimble"==sm_act_item:section()) then	-- Условие срабатывания
     local cur_ammo_mag = sm_act_item:get_ammo_in_magazine() 
           cur_ammo_mag = 4 -- для теста
	 local cond = sm_act_item:condition()
	 local oItem = db.actor:object(sm_act_item:section())

-- db.actor:hide_weapon() -- Прячет и Запрещает доставать оружие(слишком быстро)
-- db.actor:active_item:play_hud_animation(system_ini():"wpn_rg6m_hud","anm_hide",true)
--  ^-- почему не работает ???

	alife():release(alife():object(oItem:id()),true)
	alife():create("wpn_fn2000_nimble", vector(), 0, 0, db.actor:id())
	
sm_act_item = db.actor:item_in_slot(n_act_slot)
	sm_act_item:unload_magazine() -- <- не работает :-( почему?
	db.actor:item_in_slot(n_act_slot):set_ammo_elapsed(7) -- <- тоже не работает.

 

Заранее спасибо.

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

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

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

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

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

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

Войти

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

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

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