Gość Diegtiariow Opublikowano 9 Września 2023 Zgłoś Udostępnij Opublikowano 9 Września 2023 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/ Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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.