Skocz do zawartości

Niedziałająca rezerwacja slota.


papito

Rekomendowane odpowiedzi

Prosiłbym jakiegoś technika serwerów o naprawienie rezerwacji slota, ponieważ czasami jest sytuacja taka, że nie ma żadnego admina na serwerze gdy jest full, a ja nie mogę wejść chociaż piszą, że odpał biega po serwerze.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 5
  • Dodano
  • Ostatnia odpowiedź

Top użytkownicy w tym temacie

Top użytkownicy w tym temacie

Nie wiem co Ty widzisz tutaj niedziałającego? Rezerwowany slot jest jeden, a nie 10, więc jeśli ktoś na niego z takową rezerwacją wejdzie, to następny już nie da rady. Tak było zawsze.

 

ddOQGML.jpg

Odnośnik do komentarza
Udostępnij na innych stronach

Podajcie mi jedną flagę admina, która dotyczy stricte adminów, ale nie dotyczy VIP, czy tam premium. Wtedy da się to załatwić.

 

Rozwiązanie:

* nie jestem pewny, czy działać będzie w pełni poprawnie, bo będzie działać także drugi, prawie bliźniaczy plugin, jednak wg kodu plugin będzie rozpoznawał admina na podstawie flagi d, której raczej żaden VIP nie ma - tak na chłopski rozum.

 

Cvary:

amx_reservation_admin
amx_hideslots_admin

 

Wartości wpisać w amxx.cfg na FTP serwera, poniżej SMA do kompilacji.

 

 

#include <amxmodx>
#include <amxmisc>

new g_cmdLoopback[16]
new g_ResPtr
new g_HidePtr

public plugin_init()
{
	register_plugin("Slots Reservation ADMIN", AMXX_VERSION_STR, "AMXX Dev Team")
	register_dictionary("adminslots.txt")
	register_dictionary("common.txt")
	g_ResPtr = register_cvar("amx_reservation_admin", "0")
	g_HidePtr = register_cvar("amx_hideslots_admin", "0")
	
	format(g_cmdLoopback, 15, "amxres%c%c%c%c", random_num('A', 'Z'), random_num('A', 'Z'), random_num('A', 'Z'), random_num('A', 'Z'))
	register_clcmd(g_cmdLoopback, "ackSignal")
}

public plugin_cfg()
{
	set_task(3.0, "MapLoaded")
}

public MapLoaded()
{
	if (!get_pcvar_num(g_HidePtr))
		return

	new maxplayers = get_maxplayers()
	new players = get_playersnum(1)
	new limit = maxplayers - get_pcvar_num(g_ResPtr)
	setVisibleSlots(players, maxplayers, limit)
}

public ackSignal(id)
{
	new lReason[64]
	format(lReason, 63, "%L", id, "DROPPED_RES")
	server_cmd("kick #%d ^"%s^"", get_user_userid(id), lReason)
	
	return PLUGIN_HANDLED
}

public client_authorized(id)
{
	new maxplayers = get_maxplayers()
	new players = get_playersnum(1)
	new limit = maxplayers - get_pcvar_num(g_ResPtr)

	if (access(id, ADMIN_BAN) || (players <= limit))
	{
		if (get_pcvar_num(g_HidePtr) == 1)
			setVisibleSlots(players, maxplayers, limit)
		return PLUGIN_CONTINUE
	}
	
	client_cmd(id, "%s", g_cmdLoopback)

	return PLUGIN_HANDLED
}

public client_disconnect(id)
{
	if (!get_pcvar_num(g_HidePtr))
		return PLUGIN_CONTINUE

	new maxplayers = get_maxplayers()
	
	setVisibleSlots(get_playersnum(1) - 1, maxplayers, maxplayers - get_pcvar_num(g_ResPtr))
	return PLUGIN_CONTINUE
}

setVisibleSlots(players, maxplayers, limit)
{
	new num = players + 1

	if (players == maxplayers)
		num = maxplayers
	else if (players < limit)
		num = limit
	
	set_cvar_num("sv_visiblemaxplayers", num)
}

 

 

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

2 godziny temu, PluszaQ napisał:

Nie wiem co Ty widzisz tutaj niedziałającego? Rezerwowany slot jest jeden, a nie 10, więc jeśli ktoś na niego z takową rezerwacją wejdzie, to następny już nie da rady. Tak było zawsze.

 

Tylko chodzi o to, że admin niby jest ponad graczem i zawsze powinien mieć możliwość aby na serwer wejść. :) @PluszaQ

 

@soQl Ja zupełnie się na tym nie znam, więc zostawię to dla tiviego bądź kogoś innego. ;p 

Odnośnik do komentarza
Udostępnij na innych stronach

Ewentualnie.. gdyby coś nie grało i chcecie koniecznie zrobić dwa sloty mniej (jeden dla VIP,  jeden dla adm), to możliwe, że będzie trzeba zmienić linijkę w:

 

setVisibleSlots(players, maxplayers, limit)
{
	new num = players + 1

 

Na

 

setVisibleSlots(players, maxplayers, limit)
{
	new num = players + 2

 

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.