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

[ROZWIĄZANE] Rozdawane punkty kento rankme

Recommended Posts

To znów ja, mam teraz problem z kolejnym pluginem którym jest to kento rankme, mianowicie chodzi o rozdawane punkty. Pod koniec meczu cała drużyna za wygrany mecz powinna dostać np. 100 pkt lecz zamiast tego ma je odejmowane, i na odwrót jak dana drużyna przegra ma dodawane pkt a nie zabierane. I jeszcze jeden problem jest z zapisem wygranych meczy sytuacja jest taka sama.

Link do pluginu - https://github.com/rogeraabbccdd/Kento-Rankme/blob/master/gameserver/scripting/kento_rankme.sp
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

 

Najprawdopodobniej problem występuje gdzieś w public Action:Event_WinPanelMatch

Share this post


Link to post
Share on other sites

Jak masz ustawione cvary odpowiadające za punkty za przegraną/wygraną?

Share this post


Link to post
Share on other sites
Spoiler

public Action:Event_WinPanelMatch(Handle:event, const String:name[], bool:dontBroadcast) {
	if(CS_GetTeamScore(CT) > CS_GetTeamScore(TR))
	{
		for(new i=1;i<=MaxClients;i++)
		{
			if(IsClientInGame(i))
			{
				if(!hidechat[i])
				{
					CPrintToChat(i, "%T", "CT_Win", i, g_PointsMatchWin);
					CPrintToChat(i, "%T", "TR_Lose", i, g_PointsMatchLose);
				}
				
				if(GetClientTeam(i) == TR)
				{
					g_aStats[i][MATCH_LOSE]++;
					g_aStats[i][SCORE] -= g_PointsMatchLose;
				}
				else if (GetClientTeam(i) == CT)
				{
					g_aStats[i][MATCH_WIN]++;
					g_aStats[i][SCORE] += g_PointsMatchWin;
				}
			}
		}
	}
	
	else if(CS_GetTeamScore(CT) == CS_GetTeamScore(TR))
	{
		for(new i=1;i<=MaxClients;i++)
		{
			if (IsClientInGame(i) && (GetClientTeam(i) == TR || GetClientTeam(i) == CT))
			{
				g_aStats[i][MATCH_DRAW]++;
				g_aStats[i][SCORE] += g_PointsMatchDraw;
				
				if(!hidechat[i])	CPrintToChat(i, "%T", "Draw", i, g_PointsMatchDraw);
			}
		}
	}
	
	else if(CS_GetTeamScore(CT) < CS_GetTeamScore(TR))
	{
		for(new i=1;i<=MaxClients;i++)
		{
			if(IsClientInGame(i))
			{
				if(!hidechat[i])
				{
					CPrintToChat(i, "%s %T", MSG, "TR_Win", i, g_PointsMatchWin);
					CPrintToChat(i, "%s %T", MSG, "CT_Lose", i, g_PointsMatchLose);
				}
				
				if(GetClientTeam(i) == TR)
				{
					g_aStats[i][MATCH_LOSE]++;
					g_aStats[i][SCORE] -= g_PointsMatchLose;
				}
				else if (GetClientTeam(i) == CT)
				{
					g_aStats[i][MATCH_WIN]++;
					g_aStats[i][SCORE] += g_PointsMatchWin;
				}
			}
		}
	}
}

 

Jak widać w kodzie nieważne czy TT wygra czy CT wygra rezultat jest taki sam. Wystarczy w linii 2692 zamienić TR na CT a w linii 2697 zamienić CT na TR.

  • Lubię to! 1

Share this post


Link to post
Share on other sites

Jeszcze nie sprawdzałem, poczekaj chwilę jak coś to zgłoszę wątek ?

Share this post


Link to post
Share on other sites

Tak nie do końca rozwiązane bo teraz jak dojdzie do zmiany stron drużyn problem powraca

Share this post


Link to post
Share on other sites

Nie do końca rozumiem, czy po wprowadzeniu poprawek, skompilowaniu pluginu, wgraniu go na serwer i restarcie serwera problem występuje tylko gdy drużyny zamienią się miejscami?

Share this post


Link to post
Share on other sites
31 minut temu, Vasto_Lorde napisał:

Nie do końca rozumiem, czy po wprowadzeniu poprawek, skompilowaniu pluginu, wgraniu go na serwer i restarcie serwera problem występuje tylko gdy drużyny zamienią się miejscami?

Dokladnie tak

Share this post


Link to post
Share on other sites

Ktoś jakiś pomysł jak to ogarnąć bo moje pomysły zakończyły nie powodzeniem

Share this post


Link to post
Share on other sites


Czekaj. Plugin działa prawidłowo w momencie tylko gdy drużyn nie zamieniają się miejscami. Moze taki mini schemat

TT jak pozostanie w TT za wygrany czy przegrany mecz ma poprawnie dodane punkty i statystyki wygranych meczy.

TT jak zostanie przeniesione do CT po upływie 15 rund i wygra mecz ma odejmowane np.30pkt oraz dostaje ten mecz jako przegrany

 

Share this post


Link to post
Share on other sites

Nadal nie rozumiem mechaniki zmiany drużyn. Jeśli zmiana zachodzi tylko i wyłącznie na ostatniej rundzie może warto by wyłączyć zmianę drużyn w ogóle. Można też zapisać w połowie meczu / na początku kto jest w jakiej drużynie i na tej podstawie przydzielać punkty.

Share this post


Link to post
Share on other sites

To już raczej nie dla mnie, ale nie wiem czy tak łatwo będzie gdy teambalance przeniesie kogoś innego do innego teamu

Share this post


Link to post
Share on other sites

Jest to standardowe ustawienie z gry , wymuszano komendą.

Edited by szogun

Share this post


Link to post
Share on other sites

mp_halftime "1"

Tak to zamienia gdy to jest wyłączone pkt są przyznawane prawidłowo

Share this post


Link to post
Share on other sites
Spoiler

 


public Action:Event_WinPanelMatch(Handle:event, const String:name[], bool:dontBroadcast) 
{
	ConVar changeTeam = FindConVar("mp_halftime");

	if(CS_GetTeamScore(CS_TEAM_CT) > CS_GetTeamScore(CS_TEAM_T))
	{
		for(new i=1;i<=MaxClients;i++)
		{
			if(IsClientInGame(i))
			{
				if(!hidechat[i])
				{
					CPrintToChat(i, "%T", "CT_Win", i, g_PointsMatchWin);
					CPrintToChat(i, "%T", "TR_Lose", i, g_PointsMatchLose);
				}
				
				if(GetConVarInt(changeTeam) == 1 )
				{
					if(GetClientTeam(i) == CS_TEAM_CT)
					{
						g_aStats[i][MATCH_LOSE]++;
						g_aStats[i][SCORE] -= g_PointsMatchLose;
					}
					else if (GetClientTeam(i) == CS_TEAM_T)
					{
						g_aStats[i][MATCH_WIN]++;
						g_aStats[i][SCORE] += g_PointsMatchWin;
					}	

				}
				else
				{
					if(GetClientTeam(i) == CS_TEAM_T)
					{
						g_aStats[i][MATCH_LOSE]++;
						g_aStats[i][SCORE] -= g_PointsMatchLose;
					}
					else if (GetClientTeam(i) == CS_TEAM_CT)
					{
						g_aStats[i][MATCH_WIN]++;
						g_aStats[i][SCORE] += g_PointsMatchWin;
					}		
				}
				
			}
		}
	}
	
	else if(CS_GetTeamScore(CS_TEAM_CT) == CS_GetTeamScore(CS_TEAM_T))
	{
		for(new i=1;i<=MaxClients;i++)
		{
			if (IsClientInGame(i) && (GetClientTeam(i) == CS_TEAM_T || GetClientTeam(i) == CS_TEAM_CT))
			{
				g_aStats[i][MATCH_DRAW]++;
				g_aStats[i][SCORE] += g_PointsMatchDraw;
				
				if(!hidechat[i])	CPrintToChat(i, "%T", "Draw", i, g_PointsMatchDraw);
			}
		}
	}
	
	else 
	{
		for(new i=1;i<=MaxClients;i++)
		{
			if(IsClientInGame(i))
			{
				if(!hidechat[i])
				{
					CPrintToChat(i, "%s %T", MSG, "TR_Win", i, g_PointsMatchWin);
					CPrintToChat(i, "%s %T", MSG, "CT_Lose", i, g_PointsMatchLose);
				}
				
				if(GetConVarInt(changeTeam) == 1 )
				{
					if(GetClientTeam(i) == CS_TEAM_T)
					{
						g_aStats[i][MATCH_LOSE]++;
						g_aStats[i][SCORE] -= g_PointsMatchLose;
					}
					else if (GetClientTeam(i) == CS_TEAM_CT)
					{
						g_aStats[i][MATCH_WIN]++;
						g_aStats[i][SCORE] += g_PointsMatchWin;
					}		

				}
				else
				{
					if(GetClientTeam(i) == CS_TEAM_CT)
					{
						g_aStats[i][MATCH_LOSE]++;
						g_aStats[i][SCORE] -= g_PointsMatchLose;
					}
					else if (GetClientTeam(i) == CS_TEAM_T)
					{
						g_aStats[i][MATCH_WIN]++;
						g_aStats[i][SCORE] += g_PointsMatchWin;
					}		
				}
				
			}
		}
	}
}

 

 

srawdz to xD

Share this post


Link to post
Share on other sites

Ktoś coś jakiś pomył, problem zgłoszony u autora ponad 2/3 miesiace temu i zero odzewu

Share this post


Link to post
Share on other sites

Nie widzę prostszych i bardziej optymalnych rozwiązań niż te:
A) Wyłącz plugin na dodawanie statystyk na koniec meczu/w połowie (bo plugin jest chyba skierowany do serwerów gdzie nie ma zmiany drużyn)
B) Wyłącz/zablokuj zmianę drużyn (i plugin do balansu drużyn)

Jedyna opcja która wpadła mi do głowy a jest ogólnie według mnie nieopłacalna do zrobienia to:
Wpisanie w to wykrywania kto w jakim czasie zmienił drużynę. Jeśli gracz zagrał 8 rund w CT i przeszedł do TT i zagrał tam 7 rund, to wtedy będzie mu dana wygrana jeśli wygra drużyna TT. Jest to natomiast łatwy do nadużycia system, gdyż wtedy gracz po zmianie drużyn może ginąc specjalnie w nowej drużynie by mieć łatwiejszą wygraną

Share this post


Link to post
Share on other sites

Obecnie mam już blokadę zmiany drużyn jak oraz autojoin, więc tutaj zbytnio tego nie przeskoczą, wyłączenie autobalansu to taki średni pomysł gdy jest blokada zmiany teamu.

 

19 godzin temu, Vasto_Lorde napisał:

 

Jedyna opcja która wpadła mi do głowy a jest ogólnie według mnie nieopłacalna do zrobienia to:
Wpisanie w to wykrywania kto w jakim czasie zmienił drużynę. Jeśli gracz zagrał 8 rund w CT i przeszedł do TT i zagrał tam 7 rund, to wtedy będzie mu dana wygrana jeśli wygra drużyna TT. Jest to natomiast łatwy do nadużycia system, gdyż wtedy gracz po zmianie drużyn może ginąc specjalnie w nowej drużynie by mieć łatwiejszą wygraną 

 

To już przerasta moją głowę nawet nie wiem jak do tergo się zabrać

Share this post


Link to post
Share on other sites

Watek do zamkniecia, autor w koncu po pol roku wydal poprawke

 

Fixed match end stats counting and points.

By MAGNET,

Nareszcie :D Wątek zamknięty

By Vasto_Lorde,

Załączam link do naprawionego pluginu na wszelki wypadek https://github.com/rogeraabbccdd/Kento-Rankme

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

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