Skocz do zawartości
szogun

[Rozwiązane] Clienlimiter buguje się ze sklep-cs

Rekomendowane odpowiedzi

Hej.

Mam mały problem z pluginem clientlimiter, rozchodzi się o to że vipa dodaje poprzez sklep-cs gdzie plugin nie zunaje tych flag poprzez co nie działa rezerwacja slota, gdy dodam ręcznie rezerwacje slota vipowi do pliku /config/admin_slot wtedy gracz ma nadpisane flagi i posiada tylko flagę dla rezerwacji slota

https://forums.alliedmods.net/showthread.php?p=2302217
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Czy sklep-cs przypisuje takie sami flagi uprawnień co serwer, czy ma swój własny system flag?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

W sklepie się ustala swoje flagi typu "a,b,c" po czym on to zapisuje w bazie danych a na serwerze poprzez plugin pobiera informacje o flagach.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

możesz przypisywać daną flagę z poziomu sklepu

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

chodziło mi o to, że możesz przypisywać przez sklep flagę, która jest odpowiedzialna za rezerwacje slota.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

W tym problem że przypisanie tej flagi nie pomaga, w momencie gdy jest pełen serwer + uzycie connect ip dostaje kicka ze serwer jest pełny

 

// Specifies how the reserved slots plugin operates. Valid values are:
// 0 : Public slots are used in preference to reserved slots. Reserved slots are freed before public slots.
// 1 : If someone with reserve access joins into a reserved slot, the player with the highest latency and 
// no reserved slot access (spectator players are selected first) is kicked to make room. Thus, the reserved
// slots always remains free. The only situation where the reserved slot(s) can become properly occupied is 
// if the server is full with reserve slot access clients.
// --
// Requires: reservedslots.smx
// Default: 0
sm_reserve_type 1


// Specifies the number of reserved player slots.  Users with the reservation
// admin flag set will be able to join the server when there are no public slots
// remaining. If someone does not have this flag, they will be kicked.
// (Public slots are defined as: maxplayers - number of reserved slots)
// --
// Requires: reservedslots.smx
// Default: 0
sm_reserved_slots 1


// Specifies whether or not reserved slots will be hidden (subtracted from max
// slot count). Valid values are 0 (Visible) or 1 (Hidden).
// --
// Requires: reservedslots.smx
// Default: 0
sm_hide_slots 0

 

Edytowane przez szogun

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

bump ktoś coś, nadanie flagi w sklepie czy nawet w sourcebansie nie pomaga.

Dodanie steamid osoby do pliku już tak tylko wtedy nadpisuje wszystkie jego flagi i posiada tylko rezerwacje slota

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

hmm a jesteś pewien, że na rezerwację, którą dodajesz do sklep-cs, jest poprawna? Skoro przy ręcznym wpisywaniu do pliku rezerwacja działa poprawnie ja bym się doszukiwał winy właśnie tam

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jestem pewien, gdy wywalę clientlimiter rezerwacja działa prawidłowo, w momencie gdy jest pełen serwer to kickuje losową osobę

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

spróbuj pod flagę, którą przydzielasz graczowi z rezerwacją, przypisać uprawnienia do...czegokolwiek (np. glupiego pisania na czacie) i sprawdź, czy będziesz w stanie pisać. Po prostu znajdź jakikolwiek plugin, który nadaje uprawnienia i zmień flagę na tą samą z rezerwacji

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dodałem aby gracz otrzymywał granat pod flagą rezerwacji i to działa ale już sama rezerwacja slota nie działa.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

W takim razie problem najwidoczniej dotyczy samej rezerwacji...

 

Dopiero teraz zajrzałem do bebechów tej rezerwacji i zauważyłem, że plugin czyta flagi z pliku txt, a następnie przypisuje je graczowi

clientlimiter061.sp, linijki 34-37:

if (FindStringInArray(Arr_SteamIDs, auth) != -1)
	{
		SetUserFlagBits(client, ADMFLAG_RESERVATION);
	}

warunek sprawdza, czy w tablicy, wcześniej przygotowanej w funkcji LoadSteamIDList, znajduje się SteamID gracza wchodzącego na serwer. Jeśli tak, przypisuje mu flagę rezerwacji

Autor robi to jednak poprzez przypisanie (flagi_gracza = ADMFLAG_RESERVATION, gdyż SetUserFlagBits tym się zajmuje). W praktyce oznacza to, że wszystkie dotychczasowe przywileje gracza zostają otracone. Można to prosto ominąć zmieniając podane przypisanie na:

if (FindStringInArray(Arr_SteamIDs, auth) != -1)
	{
		SetUserFlagBits(client, GetUserFlagBits(client)|ADMFLAG_RESERVATION);
	}

Spowoduje to, że graczowi zostaną przypisane aktualnie posiadane flagi wraz z nowo dodaną rezerwacją, dzięki zastosowaniu bitowej operacji alternatywy OR (więcej o operacjach bitowych tutaj
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!
)

 

Podmień warunek, wrzuć na serwer i sprawdź, czy działa

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

A jest jeszcze jakaś szansa aby pominąć dodawanie ich do pliku txt ? Np dodaje flagi poprzez sourcebansa i aby się nie bawić w dodawanie oddzielnej flagi do pliku

Edytowane przez szogun

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dalej nie działa. Może jest jakiś plugin, który ogarniczy ile może być osób w teamie i będzie prościej

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Obydwie, po prostu ten plugin uniemożliwa połączenia się osobą z serwerem gdy jest pełny. Gdy nie miałem owego pluginu wszystko działało jak powinno z wyjątkiem sv_visiblemaxplayers

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Okej, teraz rozumiem

podmień funkcje OnClientPostAdminCheck na:

public OnClientPostAdminCheck(client)
{	
	//Reserved slots mechanism
	int limit = GetMaxHumanPlayers();
	
	if (GetClientCount(false) > (limit - GetConVarInt(sm_admin_slots)))
	{
		if (hasReservedSlotAccess(GetUserFlagBits(client)))
		{
			char playername[50];
			GetClientName(client, playername, 49);
			LogMessage("player %s connected to a reserved slot", playername);
		}
		else
		{
			CreateTimer(0.1, OnTimedKickForReject, GetClientUserId(client));
		}
	}
}

 

Usunąłem z funkcji:

if (GetClientCount(false) > limit)
			{
				CreateTimer(0.1, OnTimedKickForReject, GetClientUserId(client));
			}

który powodował, że jeśli ilość graczy przekraczała wartość zmiennnej limit (będącej maksymalną liczbą graczy, która wyświetla się w GameTrackerze), to wykopywalo. Pominiecie tego warunku powinno rozwiązać problem, bo gracze będą już mogli się łączyć na ukryte sloty

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Problem rozwiązany? Jeśli już coś zrobiłeś dawaj na bierząco feedback - muszę wiedzieć, czy zamknąć temat, lub pomóc w czymś jeszcze ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Sorry nie miałem czasu, teoretycznie można nazwać że problem rozwiązany, można się już z serwerem łączyć, teraz tylko jak by jeszcze przy okazji kickowało losową osobę za rezerwacje slota bo wychodzi teraz 12/11 co jest mi całkowicie nie na rękę

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Spróbuj pokombinować coś z tymi cvarami: https://wiki.alliedmods.net/Reserved_Slots_(SourceMod)#Hidden_Slots
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!  (masz tam ładne opisy co robią, a jak nie znasz angielskiego to google tłumacz powinien dać rade)

Sam nie miałem nigdy tego problemu inie wiem do konca jak go rozwiazac

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Napisano (edytowane)

No ja też za bardzo z racji że nigdy nie korzystałem z rezerwacji slota aż do tego momentu, już wypróbowałem wszystko. Na necie są jakieś sposoby ale zawodzą/

Edytowane przez szogun

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ę...