Skocz do zawartości
BulgaR

[Rozwiązane] Możliwość wyłączenia Hud z LVL etc.

Rekomendowane odpowiedzi

Tak jak w temacie, w jaki sposób mogę dodać opcję wyłączenia hudu? Chciałbym aby gracze mogli zadecydować czy chcą widzieć informacje o klasie, lvl, etc.

Byłby ktoś tak miły aby pomóc?

 

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Lubię to! 4

1.Do kodu dodaj zmienną globalną

g_bHud[MAXPLAYERS + 1];

2.Do OnPluginStart dodaj:

RegConsoleCmd("sm_hud", Hud_CMD);

3. Dodaj callback komendy

public Action Hud_CMD(int client, int args)
{
	if(g_bHud[client])
		g_bHud[client] = false;
	else
		g_bHud[client] = true;
}

4. Znajdź w kodzie linijkę

public OnClientPutInServer(client)

i dodaj do niej

g_bHud[client] = true;

5. Zamień w kodzie to:

Spoiler
public Action:PokazInformacje(Handle:timer, any:client)
{
	if(!IsValidClient(client))
		return;
		
	if(IsPlayerAlive(client))
		PrintHintText(client, "<font color='#008000'>[Klasa: <b>%s</b>]\n[Xp: <b>%i</b> | Lv: <b>%i</b>]\n[Item: <b>%s</b> [<b>%i%%</b>]]</font>", nazwy_klas[klasa_gracza[client]], doswiadczenie_gracza[client], poziom_gracza[client], nazwy_itemow[item_gracza[client]], wytrzymalosc_itemu_gracza[client]);
	else
	{
		new spect = GetEntProp(client, Prop_Send, "m_iObserverMode");
		if(spect == 4 || spect == 5) 
		{
			new target = GetEntPropEnt(client, Prop_Send, "m_hObserverTarget");
			if(target != -1 && IsValidClient(target))
				PrintHintText(client, "<font color='#FFFFFF'>[Klasa: <b>%s</b>]\n[Xp: <b>%i</b> | Lv: <b>%i</b>]\n[Item: <b>%s</b> [<b>%i%%</b>]]</font>", nazwy_klas[klasa_gracza[target]], doswiadczenie_gracza[target], poziom_gracza[target], nazwy_itemow[item_gracza[target]], wytrzymalosc_itemu_gracza[target]);
		}
	}

	hud_task[client] = CreateTimer(0.5, PokazInformacje, client, TIMER_FLAG_NO_MAPCHANGE);
}

 

na to:

Spoiler
public Action:PokazInformacje(Handle:timer, any:client)
{
	if(!IsValidClient(client))
		return;
	if(!g_bHud[client])
		return;
		
	if(IsPlayerAlive(client))
		PrintHintText(client, "<font color='#008000'>[Klasa: <b>%s</b>]\n[Xp: <b>%i</b> | Lv: <b>%i</b>]\n[Item: <b>%s</b> [<b>%i%%</b>]]</font>", nazwy_klas[klasa_gracza[client]], doswiadczenie_gracza[client], poziom_gracza[client], nazwy_itemow[item_gracza[client]], wytrzymalosc_itemu_gracza[client]);
	else
	{
		new spect = GetEntProp(client, Prop_Send, "m_iObserverMode");
		if(spect == 4 || spect == 5) 
		{
			new target = GetEntPropEnt(client, Prop_Send, "m_hObserverTarget");
			if(target != -1 && IsValidClient(target))
				PrintHintText(client, "<font color='#FFFFFF'>[Klasa: <b>%s</b>]\n[Xp: <b>%i</b> | Lv: <b>%i</b>]\n[Item: <b>%s</b> [<b>%i%%</b>]]</font>", nazwy_klas[klasa_gracza[target]], doswiadczenie_gracza[target], poziom_gracza[target], nazwy_itemow[item_gracza[target]], wytrzymalosc_itemu_gracza[target]);
		}
	}

	hud_task[client] = CreateTimer(0.5, PokazInformacje, client, TIMER_FLAG_NO_MAPCHANGE);
}

 

 

Po skompilowaniu pliku .sp hud będzie można włączać pod komendą !hud .

Edytowane przez Yamakashi
Przez MAGNET,

Taki poradniczek mógłbyś nawet wydzielić jako osobny tutorial ;)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Cytat

5. Zamień w kodzie to:

W 5 podaleś 2 razy to samo? Albo nie widze zmiany?

 

EDIT: Juz widze...

 

Edytowane przez BulgaR

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Mam problem podczas skompilowania:

 

error 001: expected token: ";", but found "´"
error 017: undefined symbol "g_bHud"
warning 215: expression has no effect
error 001: expected token: ";", but found "]"
error 029: invalid expression, assumed zero
fatal error 190: too many error messages on one line

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Poradziłem sobie, plugin działa lecz sypie ERRORY:

 

L 08/08/2019 - 22:47:39: SourceMod error session started
L 08/08/2019 - 22:47:39: Info (map "de_dust2") (file "errors_20190808.log")
L 08/08/2019 - 22:47:39: [SM] Exception reported: Invalid timer handle 3bd013f (error 1)
L 08/08/2019 - 22:47:39: [SM] Blaming: codmod_nowy.smx
L 08/08/2019 - 22:47:39: [SM] Call stack trace:
L 08/08/2019 - 22:47:39: [SM]   [0] KillTimer
L 08/08/2019 - 22:47:39: [SM]   [1] Line 323, codmod_nowy.sp::UsunZadania
L 08/08/2019 - 22:47:39: [SM]   [2] Line 290, codmod_nowy.sp::OnClientDisconnect
L 08/08/2019 - 22:47:41: [SM] Exception reported: Invalid timer handle 3bd013f (error 1)
L 08/08/2019 - 22:47:41: [SM] Blaming: codmod_nowy.smx
L 08/08/2019 - 22:47:41: [SM] Call stack trace:
L 08/08/2019 - 22:47:41: [SM]   [0] KillTimer
L 08/08/2019 - 22:47:41: [SM]   [1] Line 323, codmod_nowy.sp::UsunZadania
L 08/08/2019 - 22:47:41: [SM]   [2] Line 274, codmod_nowy.sp::OnClientAuthorized
L 08/08/2019 - 22:48:15: [SM] Exception reported: Invalid timer handle 3bd013f (error 1)
L 08/08/2019 - 22:48:15: [SM] Blaming: codmod_nowy.smx
L 08/08/2019 - 22:48:15: [SM] Call stack trace:
L 08/08/2019 - 22:48:15: [SM]   [0] KillTimer
L 08/08/2019 - 22:48:15: [SM]   [1] Line 323, codmod_nowy.sp::UsunZadania
L 08/08/2019 - 22:48:15: [SM]   [2] Line 290, codmod_nowy.sp::OnClientDisconnect

Edytowane przez BulgaR

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Wiadomość wygenerowana automatycznie

 

Problem został rozwiązany

Jeżeli się z tym nie zgadzasz, raportuj ten post

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

×
×
  • Dodaj nową pozycję...