Случайная подборка модов
Old Episodes. Episode 2. War of Zone.
3.1
STCoP Weapon Pack 3.3
4.4
На распутье
3.5
Смерти Вопреки. В Паутине лжи
4.1
Смерти Вопреки. Послушник
3.4
История Конвона. Часть первая
3.1
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
  • Страница 1 из 1
  • 1
Модератор форума: FanG, Аdmin, FantomICW, Overfirst  
[CoP] Показываем здоровье ГГ в процентах
Российская Федерация  Akella-96
Пятница, 16.08.2013, 20:34 | Сообщение # 1
Статус:
Отмычка:
Сообщений: 155
Награды: 0
Регистрация: 17.01.2012

Всем добра. В данном уроке я покажу вам способ вывода на экран процентное состояние здоровья ГГ. Нам не понадобится куча текстур, используемых в качестве custom_static и не потребуется писать громадные скрипты на обработку этих статиков. Мы просто создадим новый файл в папке gamedata\scripts\ и назовем его, например, percent_health.script. В него мы добавим следующий код :
Код

function show_health_percent()
      local a
      local h
      a = db.actor
      h = a.health* 100
      local hud = get_hud()
      local StatCS=hud:GetCustomStatic("actor_health")
      if StatCS == nil then
    hud:AddCustomStatic("actor_health",true)
    StatCS=hud:GetCustomStatic("actor_health")
      end
      local StatText = ""
      StatText = StatText.. string.format("%1.0f\\n",h)
      if StatCS ~= nil then StatCS:wnd():TextControl():SetText(StatText) end
      if db.actor:is_talking() then
           hud:RemoveCustomStatic("actor_health")
      elseif Info("inv_is_open") then
           hud:RemoveCustomStatic("actor_health")
      end
      if not db.actor:alive() then
           hud:RemoveCustomStatic("actor_health")
      end
end


Теперь разберем все по полкам :
Код

show_health_percent – название вашей функции
    local a – объявляем переменную «а»
    local h – объявляем переменную «h»
    a = db.actor – задаем значение переменной «а» (в данном случае «а» равняется «db.actor», то есть ГГ
    h = a.health* 100 - задаем значение переменной «h» (здесь «h» равняется значению health*100, то бишь, состояние здоровья ГГ, умноженное на 100 (если не умножать, здоровье будет показываться форматом 1, 0.9 и т.п.)
local hud = get_hud() – задаем значение переменной hud

       

    if StatCS == nil then – (грубый «перевод») если худ StatCS пуст (отсутствует), то
    hud:AddCustomStatic("actor_health",true) – создаем custom_static с названием «actor_heatlh»
    StatCS=hud:GetCustomStatic("actor_health") – приравниваем StatCS к созданному статику
      end – конец проверки (не функции)

      local StatText = "" – объявляем переменную StatText
      StatText = StatText.. string.format("%1.0f\\n",h) – приравниваем созданную переменную к прописанному формату показа значения ранее объявленной переменной «h»
Подробно о формате показа :
%1.0f – указываем, сколько цифр будет выводиться после запятой (нам не нужны дробные значения, поэтому мы ставим 1.0)

Это условия для отображения нашего статика
      if db.actor:is_talking() then – если ГГ разговаривает, то
           hud:RemoveCustomStatic("actor_health") – удаляем статик
      elseif Info("inv_is_open") then – если инвентарь ГГ открыт, то
           hud:RemoveCustomStatic("actor_health") – удаляем статик
      end
      if not db.actor:alive() then – если ГГ мертв, то
           hud:RemoveCustomStatic("actor_health") – удаляем статик
      end


Дополнительно по проверке открытого инвентаря :
Чтобы игра проверяла открытие инвентаря, нужно в файл actor_menu.script, (возьмите из распакованной игры) в функции «function inventory_wnd_opened()» перед «end» вставить вот этот код:
Код

db.actor:give_info_portion("inv_is_open")


И в функции «function inventory_wnd_closed()» (тоже перед «end») добавить :
Код

db.actor:disable_info_portion("inv_is_open")


Теперь нам надо поставить нашу функцию на вызов. Для этого в файле gamedata\scripts\bind_stalker.script, в функции «function actor_binder:update(delta)», после «object_binder.update(self, delta)», добавляем :
Код

percent_health.show_health_percent()


На этом со скриптами покончено. Теперь перейдем к конфигу. Открываем файл gamedata\configs\ui\ui_custom_msgs.xml, в конец, но перед «</header>» добавляем:
Код

           <actor_health x="24" y="47" width="36" height="24" complex_mode="1">
            <text font="graffiti22"  r="255" g="255" b="255" a="255" align="l"/>
           </actor_health>


Здесь прописаны координаты расположения статика на экране, шрифт отображаемого текста и его цвет. В данном куске кода поставлены координаты левого верхнего угла (у меня измененный ХУД), вы можете указать свои. На этом все.
Статья от Akella-96©

Добавлено (16.08.2013, 00:15)
---------------------------------------------
Таким же способом, можно вывести в процентах любое значение параметров ГГ, например, чтобы вывести выносливость, нужно h = a.health* 100 поменять на h = a.power* 100
В общем, можно поэкспериментировать с этой функцией.

Добавлено (16.08.2013, 20:34)
---------------------------------------------
Вот список остальных операторов параметров ГГ :
Код

1. db.actor.bleeding - степень кровотечения
2. db.actor.radiation - уровень облученности
3. db.actor.radiation - сытость   
Сообщение отредактировал Akella-96 - Пятница, 16.08.2013, 20:36
  Злобная реклама
Пятница, 16.08.2013, 20:34
Статус:
Сообщений: 666
Регистрация: 17.01.2012
Ирландия  Nick_Freedom
Суббота, 17.08.2013, 00:38 | Сообщение # 2
Созидатель
Статус:
Бывалый:
Сообщений: 607
Награды: 1
Регистрация: 24.05.2013

Полезная статья. smile Если не сложно, можно скриншот? wink
  Злобная реклама
Суббота, 17.08.2013, 00:38
Статус:
Сообщений: 666
Регистрация: 24.05.2013
Российская Федерация  PorShen
Суббота, 17.08.2013, 01:35 | Сообщение # 3
Статус:
Отмычка:
Сообщений: 155
Награды: 2
Регистрация: 30.12.2011

  Злобная реклама
Суббота, 17.08.2013, 01:35
Статус:
Сообщений: 666
Регистрация: 30.12.2011
Япония  hi_flyer
Суббота, 17.08.2013, 17:33 | Сообщение # 4
Oblivion Lost Remake
Статус:
Опытный:
Сообщений: 1918
Награды: 11
Регистрация: 11.03.2012

Вот для ТЧ кому нужно:

Код

function show_health_percent()  
       local a  
       local h  
       a = db.actor  
       h = a.health* 100  
       local hud = get_hud()  
       local StatCS=hud:GetCustomStatic("actor_health")  
       if StatCS == nil then  
     hud:AddCustomStatic("actor_health",true)  
     StatCS=hud:GetCustomStatic("actor_health")  
       end  
       local StatText = ""  
       StatText = StatText.. string.format("%1.0f\\n",h)  
       if StatCS ~= nil then StatCS:wnd():SetText(StatText) end  
end  
  Злобная реклама
Суббота, 17.08.2013, 17:33
Статус:
Сообщений: 666
Регистрация: 11.03.2012
Российская Федерация  alanbrose
Четверг, 05.10.2017, 00:39 | Сообщение # 5
Статус:
Отмычка:
Сообщений: 113
Награды: 4
Регистрация: 28.08.2015

Akella-96, а можно в процентах указать состояние оружия?
  Злобная реклама
Четверг, 05.10.2017, 00:39
Статус:
Сообщений: 666
Регистрация: 28.08.2015
  • Страница 1 из 1
  • 1
Поиск: