Все посты %s в %S - AMK Team
Перейти к контенту

Скриптование


Svoboда

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

Для кнопки кроме того работают колбеки BUTTON_DOWN, WINDOW_LBUTTON_DB_CLICK, STATIC_FOCUS_LOST, STATIC_FOCUS_RECEIVED. Последними как раз и отлавливается потеря/наведение курсора мыши.

Как правильно называются - смотри класс ui_events в lua_help.script. Доступность какого-либо события для конкретного класса элемента окна выясняется опытным путем.

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


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

Не класс, а объект всё-таки...

local inventory_wnd = nil

function on_inv_open()
if not wnd then
inventory_wnd = level.main_input_receiver()
wnd = CUIStatic()
wnd:SetAutoDelete(true)
wnd:SetWndRect(190, 730, 108, 33)
wnd:SetText("Кол-во: ")
wnd:SetFont(GetFontGraffiti22Russian())
wnd:SetTextColor(ca,cr,cg,cb)
end
inventory_wnd:AttachChild(wnd)
end

function on_inv_close()
inventory_wnd:DetachChild(wnd)
end

 

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


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

На закрытие инвентаря не init надо вешать, а функцию с детачем.

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


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

Viнt@rь, задай в конфиге текстового поля параметр complex_mode="1" либо используй метод SetTextComplexMode(boolean).

  • Нравится 1

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


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

Stiingray, неправильно написано условие.

if ren == "renderer_r2" then 

В логе должно быть как минимум то, что файл скрипта невалидный. Используй для проверки синтаксиса script Syntax Checker.

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


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

АuReN, например так:

self:AddCallback("Button_"..id,ui_events.WINDOW_LBUTTON_DB_CLICK, self:get_callback_by_id(id))

function class_name:get_callback_by_id(btn_id)
	return function()
		get_console():execute("load ~~обрабатываем кнопку "..btn_id)
	end
end

 

 

 

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


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

В ЧН/ЗП движковое окно открывается на следующем апдейте после изменения флажка в actor_menu.script. Если приаттачить к худу своё окно не сразу, а чуть погодя, то оно окажется поверх движкового.

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


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

Viнt@rь, в ЧН функция есть и работает.
mumie, пару апдейтов нужно подождать.

-- при открытии инвентаря
-- вызываем из actor_manu.inventory_wnd_opened
function on_inv_open()
	local x = 2
	level.add_call(function() x=x-1 return x==0 end,
		function()
			-- пора аттачить своё окно
			get_hud():AddDialogToRender( wnd )
		end)
end

-- при закрытии инвентаря
-- вызываем из actor_manu.inventory_wnd_closed
function on_inv_close()
	get_hud():RemoveDialogToRender( wnd )
end

 

 

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


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

Старлей, метод section - у клиентских объектов, у серверных - section_name.

Чтобы узнать, какие из этих объектов сталкеры, есть функция IsStalker (object, class_id).

 

 

  • Нравится 3

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


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

Объект открытого окна иногда по каким-то причинам уничтожается уборщиком мусора. В таком случае помогает сохранение ссылки на окно в глобальной переменной. Можно также попробовать сохранить ссылку в виде члена класса и заниливать его при закрытии окна.

  • Нравится 3

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


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

Вертикальная черта относится к классу %p. Она учитывается на предыдущей итерации, но не попадает в захват. 

 

Можно же всё сразу захватить. Вроде побыстрее работает.

for dist,state,sound in string.gfind( s, "%|*(%d+)%|([^%|%@]+)%@?([^%|]+)" ) do
Изменено пользователем Charsi

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


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

Если texture это файл, то его наличие можно проверить так

getFS():exist("$game_textures$", texture..".dds")

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

  • Нравится 1

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


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

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

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


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

Проще всего посмотреть список ключей в исходниках движка.

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


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

, можно округлить в помощью string.format, например, так:

print(string.format("%.2f", math.pi)) --> 3.14
print(string.format("%.3f", math.pi)) --> 3.142
print(string.format("%.4f", math.pi)) --> 3.1416
  • Спасибо 1
  • Согласен 1

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


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

Потому что вместо self:GetCheckButton должно было быть handler:GetCheckButton.

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


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

@UnLoaded, ты открываешь своё скриптовое окно и оно перехватывает управление ввода на себя.

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

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


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

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