Skocz do zawartości

Pokazujemy zdrowie GG w procentach [CoP]


Gość Diegtiariow

Rekomendowane odpowiedzi

Gość Diegtiariow

NAZWA: Pokazujemy zdrowie GG w procentach [CoP]
AUTOR: Akella-96©

 

CO TRZEBA ZROBIĆ:

Spoiler

Nie będziemy potrzebować mnóstwa tekstur do użycia jako custom_static i nie będziemy musieli pisać ogromnych skryptów do obsługi tych statystyk.

Po prostu utworzymy nowy plik w folderze gamedata\scripts i nazwiemy go na przykład percent_health.script. Dodamy do niego następujący kod:

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 db.actor:has_info("inv_is_open") then
           hud:RemoveCustomStatic("actor_health")
      end
      if not db.actor:alive() then
           hud:RemoveCustomStatic("actor_health")
      end
end

A teraz przeanalizujmy to wszystko:

show_health_percent – nazwa funkcji
    local a – deklarujemy zmienną «а»
    local h – deklarujemy zmienną «h»
    a = db.actor – ustawiamy wartość zmiennej «а» (w tym przypadku «а» równa się «db.actor», tzn. GG
    h = a.health* 100 - ustawiamy wartość zmiennej «h» (tutaj «h» równa się wartości health*100, czyli stan zdrowia GG pomnożony przez 100 (jeśli nie pomnożymy, to zdrowie będzie wyświetlane w formacie 1, 0.9, itp.)
local hud = get_hud() – ustawiamy wartość zmienną hud

       

    if StatCS == nil then – (z grubsza «tłumaczenie») jeśli hud StatCS jest pusty (nie ma go), to
    hud:AddCustomStatic("actor_health",true) – tworzymy custom_static z nazwą «actor_health»
    StatCS=hud:GetCustomStatic("actor_health") – porównujemy StatCS do stworzonej statystyki
      end – koniec sprawdzania (nie funkcji)

      local StatText = "" – deklarujemy zmienną StatText
      StatText = StatText.. string.format("%1.0f\\n",h) – porównujemy stworzoną zmienną do zadanego formatu wyświetlania wartości wcześniej zadeklarowanej zmiennej «h»
Szczegółowiej o formacie wyświetlania:
%1.0f – wskazujemy, ile cyfr będzie wyświetlanych po przecinku (nie są nam potrzebne drobne wartości, dlatego stawiamy 1.0)

To warunki do wyświetlenia naszej statystyki
      if db.actor:is_talking() then – jeśli GG rozmawia, to
           hud:RemoveCustomStatic("actor_health") – usuwamy statystykę
      elseif Info("inv_is_open") then – jeśli inwentarz GG jest otwarty, to
           hud:RemoveCustomStatic("actor_health") – usuwamy statystykę
      end
      if not db.actor:alive() then – jeśli GG jest martwy, to
           hud:RemoveCustomStatic("actor_health") – usuwamy statystykę
      end

Dodatkowo w celu sprawdzenia otwartego inwentarza:
Aby gra sprawdzała otwarcie ekwipunku trzeba do pliku actor_menu.script (weź go z rozpakowanej gry) w funkcji «function inventory_wnd_opened()» przed «end» wstawić ten kod:

db.actor:give_info_portion("inv_is_open")

Oraz w funkcji «function inventory_wnd_closed()» (także przed «end») dodać:

db.actor:disable_info_portion("inv_is_open")

Teraz musimy wywołać naszą funkcję.

W tym celu, w pliku gamedata\scripts\bind_stalker.script, w funkcji «function actor_binder:update(delta)», po «object_binder.update(self, delta)» dodajemy:

percent_health.show_health_percent()

Na tym koniec ze skryptami. Przejdźmy teraz do konfigu.

Otwieramy plik gamedata\configs\ui\ui_custom_msgs.xml i na końcu, ale przed «</header>» dodajemy:

   <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>

Zostały tutaj zapisane współrzędne położenia statystyki na ekranie, czcionka wyświetlanego tekstu i jego kolor. W tym fragmencie kodu ustawione są współrzędne lewego górnego rogu (zmodyfikowany HUD), ty możesz podać własne. I to wszystko.

Takim sposobem, można wyświetlić w procentach dowolną wartość parametrów GG, np. aby wyświetlić energię/wytrzymałość, trzeba h = a.health* 100 zmienić na h = a.power* 100.
Ogólnie, można poeksperymentować z tą funkcją.

Oto lista pozostałych operatorów parametrów GG:

1. db.actor.bleeding - stopień krwawienia
2. db.actor.radiation - poziom radiacji

 

ŹRÓDŁO:

https://ap-pro.ru/forums/topic/1586-cop-pokazyvaem-zdorove-gg-v-procentah/

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Korzystając z tej strony, zgadzasz się na nasze Warunki użytkowania.