Случайная подборка модов
Ночь перед Рождеством
3.3
Зачистка
4.0
Камень Преткновения. Пролог
4.1
Dream Reader - The Leper Area
4.0
DMX MOD 1.3.5
3.7
Autumn Aurora 2
4.1
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
  • Страница 1 из 1
  • 1
Модератор форума: FanG, Аdmin, FantomICW, Overfirst  
Форум » S.T.A.L.K.E.R. Модификации » Помощь в моддинге » Скрипты, конфиги, логика, движок » Создание полоски здоровья, меняющей цвет
Создание полоски здоровья, меняющей цвет
  Nikitos817
Пятница, 27.05.2011, 19:31 | Сообщение # 1
Статус:
:
Сообщений:
Регистрация:

Для этого нам понадобятся стандартные файлы:
config/ui/maingame.xml
config/ui/ui_custom_msgs.xml
scripts/bind_stalker.script

1. Создаём файл new_hud_health.script в папке gamedata/scripts и пишем в него:
Код
local hud_name = "hud_health"

-- записываем переменную
function save_variable(variable_name, value)
xr_logic.pstor_store(db.actor, variable_name, value)
end

-- загружаем переменную
function load_variable(variable_name, value_if_not_found)
return xr_logic.pstor_retrieve(db.actor, variable_name, value_if_not_found)
end

-- удаляем переменную
function del_variable(variable_name)
if db.storage[db.actor:id()].pstor[variable_name] then
db.storage[db.actor:id()].pstor[variable_name] = nil
end
end

-- координаты(параметры) x, y, width, height
local pbg = {x=0,y=0,w=0,h=0} --/ bg
local plv = {x=0,y=0,w=0,h=0} --/ lv

local skl_w = -1 --/ текущая длина шкалы
local wide = false --/ текущий режим экрана

local color = 0
local change_color = false
local change_wpn = false
local hud_show = false

function update(bShow)
local hud = get_hud()
local cs_bg = hud:GetCustomStatic("hud_health_bg")
local cs_lv = hud:GetCustomStatic("hud_health_lv")

if (load_variable("opt_hp",true) == false or bShow == false) then
if cs_bg then hud:RemoveCustomStatic("hud_health_bg") end
if cs_lv then hud:RemoveCustomStatic("hud_health_lv") end
return
save_variable("opt_hp",false)
end

local hp = db.actor.health

if (hp == nil or hp == 0) then
if hud_show == false then --/ рамку можно не стирать при смене оружия
if cs_bg then hud:RemoveCustomStatic("hud_health_bg") end
end
if cs_lv then hud:RemoveCustomStatic("hud_health_lv") end
return
end

-- проверка смены режима экрана
if wide ~= db.wide then
wide = db.wide
if cs_bg then hud:RemoveCustomStatic("hud_health_bg") end
if cs_lv then hud:RemoveCustomStatic("hud_health_lv") end
cs_bg, cs_lv = nil, nil
end

local cur_hud = "hud_health_bg"
if cs_bg == nil then
hud:AddCustomStatic(cur_hud, true)
cs_bg = hud:GetCustomStatic(cur_hud)
local wnd = cs_bg:wnd()
if wnd then
pbg = read_params(cur_hud)
wnd:SetWndPos(pbg.x,pbg.y)
wnd:SetWidth (pbg.w)
wnd:SetHeight(pbg.h)
wnd:SetAutoDelete(true)
end
end

cur_hud = "hud_health_lv"
if cs_lv == nil then
hud:AddCustomStatic(cur_hud, true)
cs_lv = hud:GetCustomStatic(cur_hud)
local wnd = cs_lv:wnd()
if wnd ~= nil then
plv = read_params(cur_hud)
wnd:SetWndPos(pbg.x+plv.x,pbg.y+plv.y)
wnd:SetWidth (skl_w)
wnd:SetHeight(plv.h)
wnd:SetAutoDelete(true)
change_color = true --/ смена цвета
end
end

if cs_lv ~= nil then
local hp_w = math.floor(hp * plv.w)
if hp_w ~= skl_w then
if hp_w < 1 then
skl_w = -1
else
skl_w = hp_w
end
end
local texture_c = get_texture(hp)
local wnd = cs_lv:wnd()
wnd:SetWidth(skl_w) --/ Set Level Condition
wnd:InitTexture(texture_c) --/ Set ColorTexture
wnd:SetText(string.format(math.floor(hp*100+0.0001)).."%")
end

end

function read_params(cur_hud)
local ltx = ini_file("scripts\\new_hud_health.ltx")
local section = cur_hud
if wide then section = section.."_wide" end
if ltx and ltx:section_exist(section) then
local p = {x=0,y=0,w=0,h=0}
local result, idx, value, i
for i=0, ltx:line_count(section)-1 do
result, idx, value = ltx:r_line(section, i, "", "")
if idx == "x" then
p.x = tonumber(value)
elseif idx == "y" then
p.y = tonumber(value)
elseif idx == "width" then
p.w = tonumber(value)
elseif idx == "height" then
p.h = tonumber(value)
end
end
return p
end
end

function get_texture(hp)
local textures = {
[0] = "ui_mg_progress_efficiency_full", --/ зеленая
[1] = "ui_hud_shk_car", --/ оранжевая
[2] = "ui_hud_shk_health" --/ красная
}
local clr = 0 --/ current color
if hp > 0.7 then clr = 0
elseif hp > 0.3 then clr = 1
elseif hp < 0.3 then clr = 2
end
if color ~= clr then
color = clr
change_color = true
else
change_color = false
end
return textures[color]
end

2. Создаём файл new_hud_health.ltx в папке gamedata/config/scripts и пишем в него:

[hud_health_bg]
x = 860
y = 660
width = 155
height = 34

[hud_health_lv]
x = 33
y = 5
width = 110
height = 10

[hud_health_bg_wide]
x = 900
y = 660
width = 123
height = 34

[hud_health_lv_wide]
x = 24
y = 5
width = 84
height = 10

3. В файле ui_custom_msgs.xml прописываем:

<hud_health_bg x="0" y="0" width="1" height="1" stretch="1" complex_mode="1">
<texture>ui_hud_shkala_health</texture>
</hud_health_bg>
<hud_health_lv x="0" y="0" stretch="1" complex_mode="1">
<texture><!-- заглушка --></texture>
<text x="85" y="0" font="arial_14" r="255" g="255" b="255" a="255" ttl="8" complex_mode="1"/>
</hud_health_lv>

4. Открываем файл maingame.xml

находим строчки:
<static_health ....>
.....
</static_health>

и

<progress_bar_health ...>
....
</progress_bar_health>

выделяем и заменяем на следущее:

<static_health x="860" y="660" width="155" height="34">
<texture></texture>
<auto_static x="5" y="10" width="19" height="18">
<texture></texture>
</auto_static>
</static_health>
<progress_bar_health x="33" y="5" width="110" height="10" horz="1" min="0" max="100" pos="0">
<progress>
<texture></texture>
</progress>
</progress_bar_health>

5. Открываем файл bind_stalker.script и пишем после:

.....
level_tasks.add_lchanger_location()

self.bCheckStart = false
end

следущее:
new_hud_health.update()

после этой строчки должно стоять end, проверьте

Автор неизвестен
  Злобная реклама
Пятница, 27.05.2011, 19:31
Статус:
Сообщений: 666
Регистрация:
Украина  Stalker0497
Пятница, 27.05.2011, 20:09 | Сообщение # 2
Статус:
Отмычка:
Сообщений: 119
Награды: 4
Регистрация: 24.12.2010

Нужная вещь
  Злобная реклама
Пятница, 27.05.2011, 20:09
Статус:
Сообщений: 666
Регистрация: 24.12.2010
Российская Федерация  Jakoro
Суббота, 18.06.2011, 15:56 | Сообщение # 3
Статус:
Отмычка:
Сообщений: 154
Награды: 0
Регистрация: 27.05.2011

красиво жаль на зп не работает
Сообщение отредактировал Jakoro - Суббота, 18.06.2011, 15:57
  Злобная реклама
Суббота, 18.06.2011, 15:56
Статус:
Сообщений: 666
Регистрация: 27.05.2011
Украина  kaizer96
Суббота, 18.06.2011, 17:04 | Сообщение # 4
Статус:
Неопытный:
Сообщений: 575
Награды: 2
Регистрация: 25.12.2010

http://www.amk-team.ru/forum/index.php?showtopic=6458
смотрите 3 пост, там указан и автор и тд. и тп.
  Злобная реклама
Суббота, 18.06.2011, 17:04
Статус:
Сообщений: 666
Регистрация: 25.12.2010
Российская Федерация  Tris
Суббота, 25.06.2011, 12:20 | Сообщение # 5
Dead Forgetting Zone
Статус:
Бывалый:
Сообщений: 914
Награды: 3
Регистрация: 12.06.2011

Nikitos817, А на ЗП нельзя адаптировать?
  Злобная реклама
Суббота, 25.06.2011, 12:20
Статус:
Сообщений: 666
Регистрация: 12.06.2011
Российская Федерация  123new
Четверг, 30.06.2011, 17:22 | Сообщение # 6
Статус:
Отмычка:
Сообщений: 102
Награды: 0
Регистрация: 30.06.2011

Ребята, Спасибо за скрипт. очень удобный. есть вопросик по нему:
Как выставить длинну ширину и высоту свою для этого скрипта? а то на моём экране полоска еле видная)
Длина устраивает а ширина вот ...
  Злобная реклама
Четверг, 30.06.2011, 17:22
Статус:
Сообщений: 666
Регистрация: 30.06.2011
Российская Федерация  VIRUS96
Воскресенье, 03.07.2011, 11:56 | Сообщение # 7
Статус:
Опытный:
Сообщений: 1887
Награды: 2
Регистрация: 15.11.2010

123new, вот тут
Code
2. Создаём файл new_hud_health.ltx в папке gamedata/config/scripts и пишем в него:

[hud_health_bg]
x = 860
y = 660
width = 155
height = 34

[hud_health_lv]
x = 33
y = 5
width = 110
height = 10

[hud_health_bg_wide]
x = 900
y = 660
width = 123
height = 34

[hud_health_lv_wide]
x = 24
y = 5
width = 84
height = 10


width значит длина, height значит ширина, меняй значения ширины.
  Злобная реклама
Воскресенье, 03.07.2011, 11:56
Статус:
Сообщений: 666
Регистрация: 15.11.2010
Российская Федерация  123new
Воскресенье, 03.07.2011, 16:23 | Сообщение # 8
Статус:
Отмычка:
Сообщений: 102
Награды: 0
Регистрация: 30.06.2011

VIRUS96, благодарю
  Злобная реклама
Воскресенье, 03.07.2011, 16:23
Статус:
Сообщений: 666
Регистрация: 30.06.2011
Беларусь  Dik_lu
Суббота, 23.06.2012, 12:45 | Сообщение # 9
Статус:
Отмычка:
Сообщений: 131
Награды: 0
Регистрация: 22.06.2012

Прикольно мне понравилось!!! biggrin
  Злобная реклама
Суббота, 23.06.2012, 12:45
Статус:
Сообщений: 666
Регистрация: 22.06.2012
Литва  Mefistorus
Пятница, 31.08.2012, 18:38 | Сообщение # 10
Статус:
Отмычка:
Сообщений: 103
Награды: 1
Регистрация: 14.06.2012

А под широкоформатный как будет? А то не пашет smile
  Злобная реклама
Пятница, 31.08.2012, 18:38
Статус:
Сообщений: 666
Регистрация: 14.06.2012
Форум » S.T.A.L.K.E.R. Модификации » Помощь в моддинге » Скрипты, конфиги, логика, движок » Создание полоски здоровья, меняющей цвет
  • Страница 1 из 1
  • 1
Поиск: