Jump to content
  • Chmurka
  • Boróweczka
  • Jabłuszko
  • Limonka
  • Czekoladka
  • Węgielek

Recommended Posts

Na prośbę jednego z użytkowników poniżej umieszczam rozpiskę i przykłady zastosowania tekstu w hint i hud.

 

 

HudText

 

Tekst, który jest wyświetlany bezpośrednio na ekranie gracza. Tekst, który nie jest ani w menu, ani w żadnym z okienek dialogowych.

To jest właśnie tzw HudText. 

Istnieją co najmniej dwa sposoby wyświetlania takiego tekstu. Skupimy się na funkcji ShowHudText
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!, która zawsze idzie w parze z funkcją SetHudTextParams
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!, lub SetHudTextParamsEx
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!.

Różnica między tymi dwiema polega na tym, że w pierwszej z nich określamy jeden zestaw kolorów, a w drugiej dwa. 

Nie będę się w to zagłębiał, bo przyznam szczerze że z drugiej funkcji nie korzystałem bodajże nigdy, więc nie czuję się w tym obszarze ekspertem.

 

W kodzie wygląda to tak, że najpierw należy określić parametry tekstu, a potem można go wyświetlić. Używając wcześniej wspomnianej funkcji SetHudTextParams możemy określić położenie na osiach X i Y, czas wyświetlania tekstu, kolor wraz z alfą i efekt (fade in/out z czasem zanikania).

 

Śmiało mogę powiedzieć, że odpowiednie ustawienie tekstu nierzadko wymaga nakładu pracy. Mamy do czynienia z różnymi rozdzielczościami ekranów graczy, i tylko środek pozostanie środkiem.

 

Dla przykładu - mnie interesuje tekst, który docelowo ma zostać wyświetlony w górnym lewym rogu ekranu. Nie ma mieć żadnego efektu, ma być zielony i w lekko przezroczysty.

SetHudTextParams(0.01, 0.20, 0.2, 0, 255, 0, 140); 
ShowHudText(client, -1, "ŁADUNKI : %i", ilosc_min_gracza[client]);

Po ustaleniu parametrów, funkcją ShowHudText wyświetlamy tekst klientowi, na kanale -1 = kanale poprzednio używanym, bądź najprawopodobniej randomowym przy pierwszym użyciu.

Trzecim argumentem jest właśnie tekst - może to być wcześniej Format
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!owany string, może to być tekst w cudzysłowie. Argumenty wypisujemy po przecinku w odpowiedniej kolejności, dokładnie jak w przypadku np funkcji PrintToChat
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!.

 

Przykład zastosowania kodu w timerze, którzy wyświetla tekst zawierający zabójstwa gracza w różnych kolorach, zależnie od ich ilości. Przy śmierci gracza resetujemy te wartości.

 

Spoiler

#include <sourcemod>

int zabojstwa[MAXPLAYERS+1];
Handle timer_handler[MAXPLAYERS+1]; 

public Plugin myinfo =
{
        name = "",
        author = "",
        description = "",
        version = "",
        url = ""
};

public OnPluginStart()
{
		HookEvent("player_death", SmiercGracza);
		HookEvent("player_spawn", OdrodzenieGracza);	
}
public Action HudTextTimer(Handle:timer, any:client)
{
	if(IsPlayerAlive(client))
	{
		if (zabojstwa[client] <= 1)
		{
			SetHudTextParams(0.01, 0.20, 0.2, 0, 255, 0, 140);
			ShowHudText(client, -1, "Zabójstwa : %i", zabojstwa[client]);
		}
		else if (zabojstwa[client] == 2)
		{
			SetHudTextParams(0.01, 0.20, 0.2, 204, 255, 0, 140);
			ShowHudText(client, -1, "Zabójstwa : %i", zabojstwa[client]);		
		}
		else if (zabojstwa[client] == 3)
		{
			SetHudTextParams(0.01, 0.20, 0.2, 255, 215, 0, 140);
			ShowHudText(client, -1, "Zabójstwa : %i", zabojstwa[client]);		
		}
		else if (zabojstwa[client] > 3)
		{
			SetHudTextParams(0.01, 0.20, 0.2, 255, 0, 0, 140);
			ShowHudText(client, -1, "Zabójstwa : %i", zabojstwa[client]);		
		}
	}
	else
		return Plugin_Stop;
		
	return Plugin_Continue;
}
public Action SmiercGracza(Event event, char[] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(GetEventInt(event, "userid"));
	int killer = GetClientOfUserId(GetEventInt(event, "attacker"));
	
	if(!IsValidClient(killer))
		return Plugin_Continue;

	if(!IsValidClient(client) || !IsPlayerAlive(killer))
		return Plugin_Continue;

	if(GetClientTeam(client) == GetClientTeam(killer))
		return Plugin_Continue;

	zabojstwa[killer] ++;
	ClearTimer(timer_handler[client]);
	return Plugin_Continue;
}
public Action OdrodzenieGracza(Event event, char[] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(GetEventInt(event, "userid"));
	
	if(!IsValidClient(client))
		return Plugin_Continue;

	timer_handler[client] = CreateTimer(0.1, HudTextTimer, client, TIMER_REPEAT);
	zabojstwa[client] = 0;
	return Plugin_Continue;
}

stock void ClearTimer(Handle timer)
{
	if (timer != INVALID_HANDLE)
	{
		KillTimer(timer);
		timer = INVALID_HANDLE;
	} 
}
public bool IsValidClient(int client)
{
	if(client >= 1 && client <= MaxClients && IsClientInGame(client))
		return true;

	return false;
}

 

 

 

Hint text

 

Tekst, który jest wyświetlany w okienku z informacją np przy rozbrajaniu bomby.

W tej sytuacji sprawa wygląda nieco inaczej, bo mimo używania tylko jednej funkcji
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! możemy kolorować bądź zmieniać wielkość liter używając HTML.

 

Przykład użycia znajdziemy m.in w codmodzie
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!. 

Cytat

        PrintHintText(client, "<font color='#FFF'>[Klasa: <b>%s</b>]\n[Exp: <b>%i</b> | Lv: <b>%i</b>]\n[Item: <b>%s</b> [<b>%i%%</b>]]\n[Killstreak: <b>%i</b>]\n[Monety: <b>%i</b>]</font>", nazwy_klas[klasa_gracza[client]], doswiadczenie_gracza[client], poziom_gracza[client], citem, wytrzymalosc_itemu_gracza[client], killstreak[client], monety[client]);


Wygląda groźnie? To złudzenie. Pierwszym argumentem jest index klienta, któremu wyświetlamy tekst. Jeśli chcemy wyświetlić go wszystkim, użyjemy funkcji PrintHintTextToAll
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!. W tym wypadku nie umieszczamy żadnego ID. Treść zostanie wyświetlona wszystkim.

Wracając - po indexie klienta umieszczamy stringa - albo formatowanego tak jak w przypadku HudTextu, albo w cudzysłowie. Możemy również używać \n, czyli skoku linijkę w dół. 

Co tu dużo mówić, zwyczajny tekst - z tym że formatowanie polega na używaniu HTML, a argumenty wciskane są tak jak w przypadku PrintToChat, i implementowane po cudzysłowie w odpowiedniej kolejności.

Nic trudnego, spróbujcie sami 🙂

 

 

Co do HudText'u - bardzo pomocnym może okazać się plugin naszego kolegi z forum, @Master

Dzięki temu pluginowi w dość prosty sposób jesteśmy w stanie określić położenie i kolor HUD tekstu, który chcemy wyświetlić. Bardzo polecam to rozwiązanie.

 

W razie pytań piszcie, bo trzasnąłem to dość na szybko i jestem delikatnie zmęczony, ale chciałem dotrzymać słowa i chyba mi się udało 😛

  • Lubię to! 4
  • Kocham to! 3

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

Nasza historia

Na początku byliśmy małą grupą internetowych znajomych, którzy stwierdzili, że potrzebne jest solidne forum, na którym znajdą się ludzie z dużą wiedzą programistyczną ukierunkowaną na CS:GO. Pomysł powstał na początku 2018 roku, a parę miesięcy później, 19 kwietnia, powstała ta strona internetowa. Jako alternatywna odpowiedź na inne tego typu miejsca, poważnie podeszliśmy do tematu, najpierw tłumacząc angielską dokumentację SourceMod'a na język polski, a potem pisząc rozległe poradniki i wypełniając forum najpotrzebniejszymi rzeczami dla właścicieli serwerów i programistów. Cała nasza Ekipa jest dumna z pracy jaką w to włożyliśmy i cieszymy się że zbierają się wokół nas zarówno ludzie znający tematy sourcepawn'a i konfiguracji, jak i również nowe twarze w tym "biznesie", którym z chęcią niesiemy wiedzę oraz pomoc w rozwiązywaniu problemów.

Największe modyfikacje serwerowe

×
×
  • Create New...