Jump to content
assignment_ind Existing user? Sign In

Sign In



person_add Sign Up
Go-Code.pl - Support SourceMod i Pluginy CS:GO
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

szogun to jest jakiś łapacz baboli w pluginach innych osób xD

  • Lubię to! 1

Share this post


Link to post
Share on other sites

rozwiązane? można zamknąć?

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

Czyli rozumiem, że po rundzie w której zaszła zmiana stron plugin działa poprawnie?

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

jaki plugin używasz do zmiany teamów?

 

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

jaka jest do tego komenda xD? to zamienia wyniki teamów? 

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

Niestety to nie pomogło

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.


O NAS Jesteśmy społecznością łączącą ludzi, którzy dzielą pasję poznawania CS:GO od strony programistycznej. Posiadamy duże zaplecze merytoryczne i zawsze cieszymy się, gdy dołączają do nas osoby gotowe do nauki. Gwarantujemy, że z odrobiną wytrwałości i otwartym umysłem bardzo szybko napiszesz swój pierwszy plugin. Zapraszamy! 🙂
Szablon wykonany z dużą ilością przez cyberpixelz / Mesharsky / Sitefuture
Forum dumnie napędzane przez: Invision Power Services, Inc.
×
×
  • Create New...