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 «» 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/