Skocz do zawartości
Brum Brum

[CS:GO] Kento rankme Rangi

Rekomendowane odpowiedzi

Opis: Dodaje rangi csowe pod tabelę od danej ilości pkt.

Kod:

Spoiler

#include <sdktools>
#include <sdkhooks>
#include <cstrike>
#include <clientprefs>
#include <kento_rankme/rankme>

#define MAX_RANKS 19

ConVar g_RankPoints[MAX_RANKS];
Handle g_rank;

char RanksName[][] = 
{
	"Unranked", 
	"Silver I", 
	"Silver II", 
	"Silver III", 
	"Silver IV", 
	"Silver Elite", 
	"Silver Elite Master", 
	"Gold Nova 1", 
	"Gold Nova 2", 
	"Gold Nova 3", 
	"Gold Nova Master", 
	"Master Guardian 1", 
	"Master Guardian 2", 
	"Master Guardian Elite", 
	"Distinguished Master Guardian", 
	"Legendary Eagle", 
	"Legendary Eagle Master", 
	"Supreme Master First Class", 
	"The Global Elite"
};

int Ranga[MAXPLAYERS + 1];
int StaraRanga[MAXPLAYERS + 1];
int RankPoints[MAX_RANKS];
int offset_rank;

public Plugin myinfo = 
{
	name = "ADEPT --> Level Ranks (Kento RankMe)", 
	description = "Autorski Plugin StudioADEPT.net", 
	author = "Brum Brum", 
	version = "1.0", 
	url = "http://www.StudioADEPT.net/forum", 
};

public void OnPluginStart()
{
	HookEventEx("player_death", Rank_Hooks);
	HookEventEx("bomb_planted", Rank_Hooks);
	HookEventEx("bomb_defused", Rank_Hooks);
	HookEventEx("bomb_exploded", Rank_Hooks);
	HookEventEx("bomb_dropped", Rank_Hooks);
	HookEventEx("bomb_pickup", Rank_Hooks);
	HookEventEx("hostage_rescued", Rank_Hooks);
	HookEventEx("vip_killed", Rank_Hooks);
	HookEventEx("vip_escaped", Rank_Hooks);
	HookEventEx("round_end", Rank_Hooks);
	HookEventEx("round_start", Rank_Hooks);
	HookEventEx("round_mvp", Rank_Hooks);
	g_rank = RegClientCookie("sm_ranga", "ranga", CookieAccess_Protected);
	g_RankPoints[0] = CreateConVar("sm_levelrankpoints_unranked", "1", "Ilość pkt za silvera");
	g_RankPoints[1] = CreateConVar("sm_levelrankpoints_silver", "1075", "Ilość pkt za silvera");
	g_RankPoints[2] = CreateConVar("sm_levelrankpoints_silver2", "1150", "Ilość pkt za silvera2");
	g_RankPoints[3] = CreateConVar("sm_levelrankpoints_silver3", "1225", "Ilość pkt za silvera3");
	g_RankPoints[4] = CreateConVar("sm_levelrankpoints_silver4", "1300", "Ilość pkt za silvera4");
	g_RankPoints[5] = CreateConVar("sm_levelrankpoints_silverelite", "1375", "Ilość pkt za silverelite");
	g_RankPoints[6] = CreateConVar("sm_levelrankpoints_silverme", "1450", "Ilość pkt za silverelitemaster");
	g_RankPoints[7] = CreateConVar("sm_levelrankpoints_gold", "1525", "Ilość pkt za gold");
	g_RankPoints[8] = CreateConVar("sm_levelrankpoints_gold2", "1600", "Ilość pkt za gold2");
	g_RankPoints[9] = CreateConVar("sm_levelrankpoints_gold3", "1675", "Ilość pkt za gold3");
	g_RankPoints[10] = CreateConVar("sm_levelrankpoints_gold4", "1750", "Ilość pkt za gold4");
	g_RankPoints[11] = CreateConVar("sm_levelrankpoints_mg", "1825", "Ilość pkt za mg");
	g_RankPoints[12] = CreateConVar("sm_levelrankpoints_mg2", "1900", "Ilość pkt za mg2");
	g_RankPoints[13] = CreateConVar("sm_levelrankpoints_mge", "1975", "Ilość pkt za mge");
	g_RankPoints[14] = CreateConVar("sm_levelrankpoints_dmg", "2050", "Ilość pkt za dmg");
	g_RankPoints[15] = CreateConVar("sm_levelrankpoints_le", "2125", "Ilość pkt za le");
	g_RankPoints[16] = CreateConVar("sm_levelrankpoints_lem", "2200", "Ilość pkt za lem");
	g_RankPoints[17] = CreateConVar("sm_levelrankpoints_supreme", "2275", "Ilość pkt za supreme");
	g_RankPoints[18] = CreateConVar("sm_levelrankpoints_global", "2350", "Ilość pkt za global");
	AutoExecConfig(true, "kento_rankme_ranks");
	RegConsoleCmd("sm_ranga", CMD_Ranga);
	RegConsoleCmd("sm_rangi", CMD_Ranga);
}

public void OnClientCookiesCached(int client)
{
	char value[11];
	GetClientCookie(client, g_rank, value, sizeof(value));
	Ranga[client] = StringToInt(value);
}

public void OnClientDisconnect(int client)
{
	if (AreClientCookiesCached(client))
	{
		char value[11];
		Format(value, sizeof(value), "%d", Ranga[client]);
		SetClientCookie(client, g_rank, value);
	}
	Ranga[client] = 0;
}

public void OnMapStart()
{
	offset_rank = FindSendPropInfo("CCSPlayerResource", "m_iCompetitiveRanking");
	SDKHook(FindEntityByClassname(MaxClients + 1, "cs_player_manager"), SDKHook_ThinkPost, Hook_OnThinkPost);
}

public Action Rank_Hooks(Event event, const char[] name, bool dontBroadcast) {
	int client = GetClientOfUserId(event.GetInt("userid"));
	int attacker = GetClientOfUserId(event.GetInt("attacker"));
	CheckRanks(client);
	CheckRanks(attacker);
}

public void OnConfigsExecuted()
{
	for (int i = 0; i < MAX_RANKS; i++)
	{
		RankPoints[i] = g_RankPoints[i].IntValue;
	}
}

public Action CMD_Ranga(int client, int args)
{
	char pkt[32], nextrank[64], nextrankstring[64];
	Format(pkt, sizeof(pkt), "Aktualnie masz %d punktów", RankMe_GetPoints(client));
	if (Ranga[client] == 18)
	{
		Format(nextrank, sizeof(nextrank), "To już jest ostatnia ranga. Gratulujemy!");
	}
	else
	{
		Format(nextrank, sizeof(nextrank), "Do następnej rangi brakuje Ci %d punktów", RankPoints[Ranga[client] + 1] - RankMe_GetPoints(client));
		Format(nextrankstring, sizeof(nextrankstring), "Następna ranga %s", RanksName[Ranga[client] + 1]);
	}
	Menu menu = new Menu(Menu_Handler);
	menu.SetTitle("ADEPT -> Level Ranks");
	menu.AddItem("", pkt, ITEMDRAW_DISABLED);
	menu.AddItem("", nextrank, ITEMDRAW_DISABLED);
	menu.AddItem("", nextrankstring, ITEMDRAW_DISABLED);
	menu.AddItem("rangi", "Lista Rang");
	menu.ExitButton = true;
	menu.Display(client, 60);
}

public int Menu_Handler(Menu menu, MenuAction action, int client, int itemNum)
{
	if (client == 0)return;
	char info[32];
	GetMenuItem(menu, itemNum, info, sizeof(info));
	if (!strcmp(info, "rangi", true))
	{
		if (IsValidClient(client))
		{
			Ranks(client);
		}
	}
	if (action == MenuAction_End)
	{
		delete menu;
	}
}

void Ranks(int client)
{
	Menu menu = new Menu(EmptyHandler);
	menu.SetTitle("ADEPT -> Level Ranks");
	for (int i = 1; i < MAX_RANKS; i++)
	{
		char buffer[64];
		Format(buffer, sizeof(buffer), "%s %d", RanksName[i], RankPoints[i]);
		menu.AddItem("", buffer, ITEMDRAW_DISABLED);
	}
	menu.ExitButton = true;
	menu.Display(client, 60);
}

void CheckRanks(int client)
{
	if (IsValidClient(client))
	{
		StaraRanga[client] = Ranga[client];
		
		if (RankMe_GetPoints(client) >= RankPoints[0] && RankMe_GetPoints(client) < RankPoints[1])
		{
			Ranga[client] = 0;
		}
		if (RankMe_GetPoints(client) >= RankPoints[1] && RankMe_GetPoints(client) < RankPoints[2])
		{
			Ranga[client] = 1;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[2] && RankMe_GetPoints(client) < RankPoints[3])
		{
			Ranga[client] = 2;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[3] && RankMe_GetPoints(client) < RankPoints[4])
		{
			Ranga[client] = 3;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[4] && RankMe_GetPoints(client) < RankPoints[5])
		{
			Ranga[client] = 4;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[5] && RankMe_GetPoints(client) < RankPoints[6])
		{
			Ranga[client] = 5;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[6] && RankMe_GetPoints(client) < RankPoints[7])
		{
			Ranga[client] = 6;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[7] && RankMe_GetPoints(client) < RankPoints[8])
		{
			Ranga[client] = 7;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[8] && RankMe_GetPoints(client) < RankPoints[9])
		{
			Ranga[client] = 8;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[9] && RankMe_GetPoints(client) < RankPoints[10])
		{
			Ranga[client] = 9;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[10] && RankMe_GetPoints(client) < RankPoints[11])
		{
			Ranga[client] = 10;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[11] && RankMe_GetPoints(client) < RankPoints[12])
		{
			Ranga[client] = 11;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[12] && RankMe_GetPoints(client) < RankPoints[13])
		{
			Ranga[client] = 12;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[13] && RankMe_GetPoints(client) < RankPoints[14])
		{
			Ranga[client] = 13;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[14] && RankMe_GetPoints(client) < RankPoints[15])
		{
			Ranga[client] = 14;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[15] && RankMe_GetPoints(client) < RankPoints[16])
		{
			Ranga[client] = 15;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[16] && RankMe_GetPoints(client) < RankPoints[17])
		{
			Ranga[client] = 16;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[17] && RankMe_GetPoints(client) < RankPoints[18])
		{
			Ranga[client] = 17;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[18])
		{
			Ranga[client] = 18;
		}
		if (Ranga[client] > StaraRanga[client])
		{
			SetHudTextParams(-1.0, 0.125, 8.0, 255, 153, 0, 255, 0, 0.25, 1.5, 0.5);
			for (int i = 1; i < MaxClients; i++)
			{
				if (IsValidClient(i))
				{
					ShowHudText(i, -1, "Właśnie %N awansował na\n%s", client, RanksName[Ranga[client]]);
				}
			}
		}
		else if (Ranga[client] < StaraRanga[client])
		{
			SetHudTextParams(-1.0, 0.125, 8.0, 255, 153, 0, 255, 0, 0.25, 1.5, 0.5);
			for (int i = 1; i < MaxClients; i++)
			{
				if (IsValidClient(i))
				{
					ShowHudText(i, -1, "Właśnie %N spadł z %s do\n%s", client, RanksName[Ranga[client] + 1], RanksName[Ranga[client]]);
				}
			}
		}
	}
}

public int EmptyHandler(Menu menu, MenuAction action, int client, int item)
{
}

public void Hook_OnThinkPost(int iEnt)
{
	SetEntDataArray(iEnt, offset_rank, Ranga, MAXPLAYERS);
	StartMessageAll("ServerRankRevealAll");
	EndMessage();
}

public bool IsValidClient(int client)
{
	if (!(1 <= client <= MaxClients) || !IsClientInGame(client) || !IsClientConnected(client) || IsFakeClient(client) || IsClientSourceTV(client))
		return false;
	
	return true;
} 

 

 

Download:

kento_rankme_ranks.sp
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

Dosyć nieoptymalne rozwiązanie, można to napisać 5 razy krócej, ale jeżeli działa to masz + za wstawkę.

Z tego co pamiętam @plx211 masz coś takiego bądź podobnego z wykorzystaniem rankme od kento bądź zwykłego rankme.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
4 godziny temu, Mesharsky napisał:

Dosyć nieoptymalne rozwiązanie, można to napisać 5 razy krócej, ale jeżeli działa to masz + za wstawkę.

Z tego co pamiętam @plx211 masz coś takiego bądź podobnego z wykorzystaniem rankme od kento bądź zwykłego rankme.

"Nieoptymalne" Chodzi Ci o wszystko z Hook_OnThinkPost? Jeżeli tak to nie wiem jak mogę to zrobić, poradziłbyś coś?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

 

public void Hook_OnThinkPost(int iEnt)

jak już robisz taką ścianę ifów to proszę zamień to na fora z makrodefinicją. myśl o sobie i osobach to edytujących.

 

rangę aktualizujesz już w tym swoim checkRanks czy jakoś tak więc nie musisz w innych miejscach tego robić ? 

 

staraj się nie pisać cyferek w kodzie - napisz sobie #define MAX_RANKS 19 i używaj tego ? (sam tak kiedyś nie robiłem i teraz jak zaglądam do kodu to cyfra nic nie znaczy, a w słowach jest wszystko pięknie opisane xD) (chyba że robisz jako zlecenie to pisz jak Ci wygodnie ?

 

a co do hooków (nie chce mi się analizować całego kodu) możesz wszystko w jednym robić jako checkowanie 

a najpiękniej by było jakbyś do rankme dodał forward wysyłający info że punkty się zmieniły xd 

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jak już chcesz hookować wszystkie eventy to wystarczy zrobić tak:

 

public void OnPluginStart()
{
	HookEventEx("player_death", Rank_Hooks);
	HookEventEx("bomb_planted", Rank_Hooks);
	HookEventEx("bomb_defused", Rank_Hooks);
	HookEventEx("bomb_exploded", Rank_Hooks);
	HookEventEx("bomb_dropped", Rank_Hooks);
	HookEventEx("bomb_pickup", Rank_Hooks);
	HookEventEx("hostage_rescued", Rank_Hooks);
	HookEventEx("vip_killed", Rank_Hooks);
	HookEventEx("vip_escaped", Rank_Hooks);
	HookEventEx("round_end", Rank_Hooks);
	HookEventEx("round_start", Rank_Hooks);
	HookEventEx("round_mvp", Rank_Hooks);
}

public Action Rank_Hooks(Event event, const char[] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(event.GetInt("userid"));
	CheckRanks(client);
}

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@Update 
Lepiej hookowane eventy

Poprawiono sprawdzanie rangi (Nie wiedziałem jak zrobić to forem więc zostawiłem ifami)

Zapisywanie rangi w cookisach (Co zmianę mapy pisało, że dany gracz awansował na daną rangę)

Kod:

Spoiler

#include <sdktools>
#include <sdkhooks>
#include <cstrike>
#include <clientprefs>
#include <kento_rankme/rankme>

#define MAX_RANKS 19

ConVar g_RankPoints[MAX_RANKS];
Handle g_rank;

char RanksName[][] = 
{
	"Unranked", 
	"Silver I", 
	"Silver II", 
	"Silver III", 
	"Silver IV", 
	"Silver Elite", 
	"Silver Elite Master", 
	"Gold Nova 1", 
	"Gold Nova 2", 
	"Gold Nova 3", 
	"Gold Nova Master", 
	"Master Guardian 1", 
	"Master Guardian 2", 
	"Master Guardian Elite", 
	"Distinguished Master Guardian", 
	"Legendary Eagle", 
	"Legendary Eagle Master", 
	"Supreme Master First Class", 
	"The Global Elite"
};

int Ranga[MAXPLAYERS + 1];
int StaraRanga[MAXPLAYERS + 1];
int RankPoints[MAX_RANKS];
int offset_rank;

public Plugin myinfo = 
{
	name = "ADEPT --> Level Ranks (Kento RankMe)", 
	description = "Autorski Plugin StudioADEPT.net", 
	author = "Brum Brum", 
	version = "1.0", 
	url = "http://www.StudioADEPT.net/forum", 
};

public void OnPluginStart()
{
	HookEventEx("player_death", Rank_Hooks);
	HookEventEx("bomb_planted", Rank_Hooks);
	HookEventEx("bomb_defused", Rank_Hooks);
	HookEventEx("bomb_exploded", Rank_Hooks);
	HookEventEx("bomb_dropped", Rank_Hooks);
	HookEventEx("bomb_pickup", Rank_Hooks);
	HookEventEx("hostage_rescued", Rank_Hooks);
	HookEventEx("vip_killed", Rank_Hooks);
	HookEventEx("vip_escaped", Rank_Hooks);
	HookEventEx("round_end", Rank_Hooks);
	HookEventEx("round_start", Rank_Hooks);
	HookEventEx("round_mvp", Rank_Hooks);
	g_rank = RegClientCookie("sm_ranga", "ranga", CookieAccess_Protected);
	g_RankPoints[0] = CreateConVar("sm_levelrankpoints_unranked", "1", "Ilość pkt za silvera");
	g_RankPoints[1] = CreateConVar("sm_levelrankpoints_silver", "1075", "Ilość pkt za silvera");
	g_RankPoints[2] = CreateConVar("sm_levelrankpoints_silver2", "1150", "Ilość pkt za silvera2");
	g_RankPoints[3] = CreateConVar("sm_levelrankpoints_silver3", "1225", "Ilość pkt za silvera3");
	g_RankPoints[4] = CreateConVar("sm_levelrankpoints_silver4", "1300", "Ilość pkt za silvera4");
	g_RankPoints[5] = CreateConVar("sm_levelrankpoints_silverelite", "1375", "Ilość pkt za silverelite");
	g_RankPoints[6] = CreateConVar("sm_levelrankpoints_silverme", "1450", "Ilość pkt za silverelitemaster");
	g_RankPoints[7] = CreateConVar("sm_levelrankpoints_gold", "1525", "Ilość pkt za gold");
	g_RankPoints[8] = CreateConVar("sm_levelrankpoints_gold2", "1600", "Ilość pkt za gold2");
	g_RankPoints[9] = CreateConVar("sm_levelrankpoints_gold3", "1675", "Ilość pkt za gold3");
	g_RankPoints[10] = CreateConVar("sm_levelrankpoints_gold4", "1750", "Ilość pkt za gold4");
	g_RankPoints[11] = CreateConVar("sm_levelrankpoints_mg", "1825", "Ilość pkt za mg");
	g_RankPoints[12] = CreateConVar("sm_levelrankpoints_mg2", "1900", "Ilość pkt za mg2");
	g_RankPoints[13] = CreateConVar("sm_levelrankpoints_mge", "1975", "Ilość pkt za mge");
	g_RankPoints[14] = CreateConVar("sm_levelrankpoints_dmg", "2050", "Ilość pkt za dmg");
	g_RankPoints[15] = CreateConVar("sm_levelrankpoints_le", "2125", "Ilość pkt za le");
	g_RankPoints[16] = CreateConVar("sm_levelrankpoints_lem", "2200", "Ilość pkt za lem");
	g_RankPoints[17] = CreateConVar("sm_levelrankpoints_supreme", "2275", "Ilość pkt za supreme");
	g_RankPoints[18] = CreateConVar("sm_levelrankpoints_global", "2350", "Ilość pkt za global");
	AutoExecConfig(true, "kento_rankme_ranks");
	RegConsoleCmd("sm_ranga", CMD_Ranga);
	RegConsoleCmd("sm_rangi", CMD_Ranga);
}

public void OnClientCookiesCached(int client)
{
	char value[11];
	GetClientCookie(client, g_rank, value, sizeof(value));
	Ranga[client] = StringToInt(value);
}

public void OnClientDisconnect(int client)
{
	if (AreClientCookiesCached(client))
	{
		char value[11];
		Format(value, sizeof(value), "%d", Ranga[client]);
		SetClientCookie(client, g_rank, value);
	}
	Ranga[client] = 0;
}

public void OnMapStart()
{
	offset_rank = FindSendPropInfo("CCSPlayerResource", "m_iCompetitiveRanking");
	SDKHook(FindEntityByClassname(MaxClients + 1, "cs_player_manager"), SDKHook_ThinkPost, Hook_OnThinkPost);
}

public Action Rank_Hooks(Event event, const char[] name, bool dontBroadcast) {
	int client = GetClientOfUserId(event.GetInt("userid"));
	int attacker = GetClientOfUserId(event.GetInt("attacker"));
	CheckRanks(client);
	CheckRanks(attacker);
}

public void OnConfigsExecuted()
{
	for (int i = 0; i < MAX_RANKS; i++)
	{
		RankPoints[i] = g_RankPoints[i].IntValue;
	}
}

public Action CMD_Ranga(int client, int args)
{
	char pkt[32], nextrank[64], nextrankstring[64];
	Format(pkt, sizeof(pkt), "Aktualnie masz %d punktów", RankMe_GetPoints(client));
	if (Ranga[client] == 18)
	{
		Format(nextrank, sizeof(nextrank), "To już jest ostatnia ranga. Gratulujemy!");
	}
	else
	{
		Format(nextrank, sizeof(nextrank), "Do następnej rangi brakuje Ci %d punktów", RankPoints[Ranga[client] + 1] - RankMe_GetPoints(client));
		Format(nextrankstring, sizeof(nextrankstring), "Następna ranga %s", RanksName[Ranga[client] + 1]);
	}
	Menu menu = new Menu(Menu_Handler);
	menu.SetTitle("ADEPT -> Level Ranks");
	menu.AddItem("", pkt, ITEMDRAW_DISABLED);
	menu.AddItem("", nextrank, ITEMDRAW_DISABLED);
	menu.AddItem("", nextrankstring, ITEMDRAW_DISABLED);
	menu.AddItem("rangi", "Lista Rang");
	menu.ExitButton = true;
	menu.Display(client, 60);
}

public int Menu_Handler(Menu menu, MenuAction action, int client, int itemNum)
{
	if (client == 0)return;
	char info[32];
	GetMenuItem(menu, itemNum, info, sizeof(info));
	if (!strcmp(info, "rangi", true))
	{
		if (IsValidClient(client))
		{
			Ranks(client);
		}
	}
	if (action == MenuAction_End)
	{
		delete menu;
	}
}

void Ranks(int client)
{
	Menu menu = new Menu(EmptyHandler);
	menu.SetTitle("ADEPT -> Level Ranks");
	for (int i = 1; i < MAX_RANKS; i++)
	{
		char buffer[64];
		Format(buffer, sizeof(buffer), "%s %d", RanksName[i], RankPoints[i]);
		menu.AddItem("", buffer, ITEMDRAW_DISABLED);
	}
	menu.ExitButton = true;
	menu.Display(client, 60);
}

void CheckRanks(int client)
{
	if (IsValidClient(client))
	{
		StaraRanga[client] = Ranga[client];
		
		if (RankMe_GetPoints(client) >= RankPoints[0] && RankMe_GetPoints(client) < RankPoints[1])
		{
			Ranga[client] = 0;
		}
		if (RankMe_GetPoints(client) >= RankPoints[1] && RankMe_GetPoints(client) < RankPoints[2])
		{
			Ranga[client] = 1;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[2] && RankMe_GetPoints(client) < RankPoints[3])
		{
			Ranga[client] = 2;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[3] && RankMe_GetPoints(client) < RankPoints[4])
		{
			Ranga[client] = 3;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[4] && RankMe_GetPoints(client) < RankPoints[5])
		{
			Ranga[client] = 4;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[5] && RankMe_GetPoints(client) < RankPoints[6])
		{
			Ranga[client] = 5;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[6] && RankMe_GetPoints(client) < RankPoints[7])
		{
			Ranga[client] = 6;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[7] && RankMe_GetPoints(client) < RankPoints[8])
		{
			Ranga[client] = 7;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[8] && RankMe_GetPoints(client) < RankPoints[9])
		{
			Ranga[client] = 8;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[9] && RankMe_GetPoints(client) < RankPoints[10])
		{
			Ranga[client] = 9;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[10] && RankMe_GetPoints(client) < RankPoints[11])
		{
			Ranga[client] = 10;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[11] && RankMe_GetPoints(client) < RankPoints[12])
		{
			Ranga[client] = 11;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[12] && RankMe_GetPoints(client) < RankPoints[13])
		{
			Ranga[client] = 12;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[13] && RankMe_GetPoints(client) < RankPoints[14])
		{
			Ranga[client] = 13;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[14] && RankMe_GetPoints(client) < RankPoints[15])
		{
			Ranga[client] = 14;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[15] && RankMe_GetPoints(client) < RankPoints[16])
		{
			Ranga[client] = 15;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[16] && RankMe_GetPoints(client) < RankPoints[17])
		{
			Ranga[client] = 16;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[17] && RankMe_GetPoints(client) < RankPoints[18])
		{
			Ranga[client] = 17;
		}
		else if (RankMe_GetPoints(client) >= RankPoints[18])
		{
			Ranga[client] = 18;
		}
		if (Ranga[client] > StaraRanga[client])
		{
			SetHudTextParams(-1.0, 0.125, 8.0, 255, 153, 0, 255, 0, 0.25, 1.5, 0.5);
			for (int i = 1; i < MaxClients; i++)
			{
				if (IsValidClient(i))
				{
					ShowHudText(i, -1, "Właśnie %N awansował na\n%s", client, RanksName[Ranga[client]]);
				}
			}
		}
		else if (Ranga[client] < StaraRanga[client])
		{
			SetHudTextParams(-1.0, 0.125, 8.0, 255, 153, 0, 255, 0, 0.25, 1.5, 0.5);
			for (int i = 1; i < MaxClients; i++)
			{
				if (IsValidClient(i))
				{
					ShowHudText(i, -1, "Właśnie %N spadł z %s do\n%s", client, RanksName[Ranga[client] + 1], RanksName[Ranga[client]]);
				}
			}
		}
	}
}

public int EmptyHandler(Menu menu, MenuAction action, int client, int item)
{
}

public void Hook_OnThinkPost(int iEnt)
{
	SetEntDataArray(iEnt, offset_rank, Ranga, MAXPLAYERS);
	StartMessageAll("ServerRankRevealAll");
	EndMessage();
}

public bool IsValidClient(int client)
{
	if (!(1 <= client <= MaxClients) || !IsClientInGame(client) || !IsClientConnected(client) || IsFakeClient(client) || IsClientSourceTV(client))
		return false;
	
	return true;
} 

 

 

kento_rankme_ranks.smx
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

kento_rankme_ranks.sp
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

Przez MAGNET,

Zaktualizowałem 1 post

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
for(int i = MAX_RANKS; i>=0; i--)
{
	if(clientPoints[client] >= rankNeed[i])
	{
		cientRank[client] = i;
		break;

	}
}

 

Edytowane przez mastah7991
błąd w kodzie ;(

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ktoś mógłby pomóc? ? 

SourcePawn Compiler 1.9 Copyright (c) 1997-2006 ITB CompuPhase Copyright (c) 2004-2017 AlliedModders LLC plugin.sp(5) : fatal error 183: cannot read from file: "kento_rankme/rankme" Compilation aborted. 1 Error.

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
18 minut temu, aBarteK napisał:

Ktoś mógłby pomóc? ? 

SourcePawn Compiler 1.9 Copyright (c) 1997-2006 ITB CompuPhase Copyright (c) 2004-2017 AlliedModders LLC plugin.sp(5) : fatal error 183: cannot read from file: "kento_rankme/rankme" Compilation aborted. 1 Error.

 

Nie masz plików inc od kento_rankme u siebie

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
W dniu 26.05.2019 o 11:49, Brum Brum napisał:

Nie masz plików inc od kento_rankme u siebie

Szukałem, szukałem i nie znalazłem czy mógłbym dostać tego include ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Pobrałem includy i wszystko i nadal tylko 

SourcePawn Compiler 1.7.1 Copyright (c) 1997-2006 ITB CompuPhase Copyright (c) 2004-2014 AlliedModders LLC /home/groups/sourcemod/upload_tmp/phpkRMTid.sp(5) : fatal error 182: cannot read from file: "kento_rankme/rankme" Compilation aborted. 1 Error.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
3 minuty temu, jogas napisał:

Pobrałem includy i wszystko i nadal tylko 

SourcePawn Compiler 1.7.1 Copyright (c) 1997-2006 ITB CompuPhase Copyright (c) 2004-2014 AlliedModders LLC /home/groups/sourcemod/upload_tmp/phpkRMTid.sp(5) : fatal error 182: cannot read from file: "kento_rankme/rankme" Compilation aborted. 1 Error.

jestem przekonany, że nie wrzuciłeś includów poprawnie do folderu include.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić obrazków. Dodaj lub załącz obrazki z adresu URL.


×
×
  • Dodaj nową pozycję...