Jump to content
  • Chmurka
  • Boróweczka
  • Jabłuszko
  • Limonka
  • Czekoladka
  • Węgielek
Sign in to follow this  
szogun

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

Recommended Posts

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!

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

Edited by szogun

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Edited by szogun

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 ?

Share this post


Link to post
Share on other sites

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ę

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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ą/

Edited by szogun

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
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...