Случайная подборка модов
ReBorn 2.50 «Артефакты смерти»
3.5
Oblivion Lost 3.0
3.0
Золотой обоз. Часть первая
3.5
Апокалипсис
4.0
Новый Арсенал 5.0
3.6
Сталкер "Диана"
2.0
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
  • Страница 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
Поиск: