Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

xSPECJALSx - zdjęcie

xSPECJALSx

Rejestracja: 07.08.2023
Aktualnie: Nieaktywny
Poza forum Ostatnio: 06.04.2024 20:42
-----

Moje tematy

OnlyDD2 (2023)

12.11.2023 16:00

Witam przedstawiam wam paczkę OnlyDD2 większość pluginów pochodzi z AMXX.pl niektóre zostały przerobione

Paczka składana / stworzona przez xZANDARMx / xSPECJALSx

 

Może komuś się przyda kto zaczyna z DD2 i ma gotową paczkę działającą 

 

 

 

Większość plików posiada pliki sma gotowe do edycji dlatego też nie posiadają plików amxx

plugins.ini

; Wtyczki AMX Mod X

; Baza admina - zawsze musi być aktywowana
admin.amxx              ; baza admina (wymagana dla wszystkich związanych z administracją)
;admin_sql.amxx         ; baza admina - wersja SQL (komentarz admin.amxx)

; Podstawowy
admincmd.amxx           ; podstawowe polecenia konsoli administratora
adminhelp.amxx          ; polecenie pomocy dla poleceń konsoli administratora
adminslots.amxx         ; rezerwacja slotów
multilingual.amxx       ; zarządzanie wielojęzyczne

; Menu
menufront.amxx          ; front-end dla menu administratora
cmdmenu.amxx            ; menu komend (mowa, ustawienia)
plmenu.amxx             ; menu graczy (kick, ban, polecenia klienta)
;telemenu.amxx          ; menu teleportu (wymagany moduł fun!)
mapsmenu.amxx           ; menu map (głosowanie, zmiana poziomu)
pluginmenu.amxx         ; Menu komend/wariantów uporządkowane według pluginów

; Czat / Wiadomości
adminchat.amxx          ; polecenia czatu konsoli
antiflood.amxx          ; zapobiega zalewaniu serwera czatem przez klientów
scrollmsg.amxx          ; wyświetla przewijaną wiadomość
imessage.amxx           ; wyświetla wiadomości informacyjne
adminvote.amxx          ; polecenia głosowania


; Powiązane z mapą
nextmap.amxx		; wyświetla następną mapę w cyklu map
mapchooser.amxx		; pozwala głosować na następną mapę
timeleft.amxx		; wyświetla pozostały czas na mapie

; Konfiguracja
pausecfg.amxx		; umożliwia wstrzymywanie i wyłączanie niektórych wtyczek
statscfg.amxx		; umożliwia zarządzanie wtyczkami statystyk za pomocą menu i poleceń

; Counter-Strike
;restmenu.amxx		; ograniczenie menu broni
statsx.amxx		; statystyki śmierci lub okrągłego końca (wymagany moduł CSX!)
;miscstats.amxx		; Ogłoszenie grupy wydarzeń dla Counter-Strike
;stats_logging.amxx	; logowanie statystyk broni (wymagany moduł CSX!).


; Niestandardowe - Dodaj tutaj wtyczki innych firm


================== Oryginalne Pluginy ==================

ReklamySay.amxx                       >> Reklamy w Say
bs_limiter.amxx                       >> Ogranicznik Limitów BSów
IP.amxx                               >> Sprawdz IP / SteamID
polski_cs.amxx                        >> Polski cs
parachute.amxx                        >> Spadochron (parachute)
unbanmenu.amxx                        >> UnBan menu
admin_spec_esp.amxx                   >> admin wh
czerwony_ekran.amxx                   >> Czerowny ekran po śmierci
ptb.amxx                              >> Wyrównuje balans drużyn
napisz_skarge.amxx                    >> Napisz Skargę /skargi


================== VIPY ==================

DD2_vip.amxx                          >> VIP Flaga T

================== Pluginy ==================

DD2_info.amxx                         >> pelne info serwa
DD2_Wizyty.amxx                       >> Licznik wizyt na serwerze
DD2_NazwaServera.amxx                 >> Nazwa Serwera
DD2_Podmiana_Menu.amxx                >> Podmiana Nazwy Teamow
DD2_weapon_icon.amxx                  >> Kolorowe Ikony Broni
DD2_PrzenikanieTeam.amxx              >> Przenikanie przez graczy
DD2_VoteBan.amxx                      >> Vote Ban 
DD2_Ekwipunek.amxx                    >> Wyrzuca po śmierci Ekwipunek
DD2_smuga.amxx                        >> Smuga za Granatami
DD2_flash.amxx                        >> Pokazuje kto nas oślepił Flash'em
DD2_Obrazenia.amxx                    >> Pokazuje Zadane Obrażenia
DD2_BlokadaRadio.amxx                 >> Blokowanie używania Radia
DD2_NajlepszyGracz.amxx               >> Najlepszy gracz rundy
DD2_KtoPrzychodzi.amxx                >> Kto wbija na serwer
DD2_adminlisten.amxx                  >> Admin widzi wszystkie Wiadomości
DD2_Asysty.amxx                       >> DD2_Asysty
DD2_info_granaty.amxx		      >> pokazuje jaki gracz rzucił granata
DD2_inf_smierc.amxx                   >> inf po smierci
DD2_straznik_ping.amxx                >> Wyrzuca graczy z duzym pingiem
DD2_prefixy.amxx                      >> prefixy top15 w say
DD2_inf_smierc.amxx                   >> inf po smierci
DD2_dokonczenie_mapy.amxx             >> dokonczenie rundy przed zmiana mapy
DD2_c4_przenies.amxx                  >> przenosi bombe gdy ktos jest AFK
DD2_afk_system.amxx                   >> AFK System
DD2_skull.amxx                        >> Czaszka po śmierci
DD2_antiflash.amxx                    >> antyflash
DD2_Wyniki.amxx                       >> Wynik Gry
DD2_RangCsGo.amxx                     >> Rangi CsGo

AMXX / cvary

////////////////////////////////////////////////////

//BS który BS gramy teraz 
bsl_ctmin 4 //wymagana liczba graczy w CT

////////////////////////////////////////////////////

// Licznik wizyt na serwerze
visitcounter_prefix "[Info]" //prefix przed wiadomościami
visitcounter_webaddr "PsychoFrags.pl" //adres Twojej sieci
visitcounter_adson "1" //1 - włącza cykliczny komunikat o ilości wizyt, 0 - wyłącza
visitcounter_adstime "180.0" //co ile sekund ma pojawiać się w/w komunikat?
visitcounter_interval "1800" //czas, jaki gracz musi NIE być na serwerze aby zliczyło kolejne wejście

////////////////////////////////////////////////////

// Nazwa serwera
amx_gamename ">> OnlyDD2 <<"

////////////////////////////////////////////////////

// Kolorowe Ikony Broni
amx_weapon_location 1 // (0 - nie pokazuje, 1- pokazuje po prawej stronie, 2 - pokazuje na dole przy zegarku)


////////////////////////////////////////////////////

// Ogólne Przenikanie Team
// ------
semiclip 1 // Czy Semiclip ma być włączony [0 - Wyłączony / 1 - Włączony]
semiclip_blockteam 0 // Kto ma posiadać Semiclip [0 - Każdy | 1 - Terro nie mają | 2 - CT nie mają | 3 - Nikt nie ma]
semiclip_enemies 0 // Przeźroczystość wrogów [0 - Wyłączona / 1 - Włączona]
semiclip_unstuck 1 // Odblokowanie, w przypadku zaklinowania sie w kimś/czymś [0 - Wyłączone / 1 - Zależnie od Teamu / 2 - Spawny CSDM / 3 - Gdzieś w pobliżu aktualnego miejsca]
semiclip_unstuckdelay 0.1 // Opóźnienie z odblokowaniem gracza [ 0 - Od Razu] Zalecane Wartości Między 0.1 a 3.0
semiclip_button 0 // Przycisk Przyśpieszający Semiclip ) [0 - Wyłączony / 1 - Teroo / 2 -CT / 3 - Wszyscy]
semiclip_knife_trace 0 // Ataki nożem dosiegają gracza nabliżej stojącego jeśli stoimy w Kimś [0 - Wyłącz / 1 - Włącz]
semiclip_duration 0 // Czy plugin ma działać tylko na początku rundy [0 - Wyłączony / 1 - Włączony]
    
// Ustawienia Rendera
// -----
semiclip_render 1 // Czy niestandardowe opcje renderowania mają być włączone [0 - Wyłączone / 1 - Włączone]
semiclip_rendermode 2 // Tryb Rendera ) [0 - 5] [0 - Wyłączony]
semiclip_renderamt 129 // Jaki mocny ma być Render [0 - 255]
semiclip_renderfx 0 // Jak mocny ma być Render Fx [0 - 20] [0 - Wyłączony]
semiclip_renderradius 250 // Jaki mocny ma mieć zasięg rendera [?? - 4095]
semiclip_renderfade 0 // Czy ma być włączona poświata dodatkowa [0 - Wyłączone / 1 - Włączone]
semiclip_renderfademin 25 // Minimalna wartość Render Fade [0 - 200]
semiclip_renderfadespec 1 // Czy Render Face ma być włączone dla obserwatorów [0 - Wyłączone / 1 - Włączone]
   

// Kolor poświaty
// -----
semiclip_color_admin_flag "b" // Flaga wymagana do poświaty
semiclip_color_admin_R 0 // Kolor admina (czerwony) [0-255]
semiclip_color_admin_G 0 // Kolor admina (zielony) [0-255]
semiclip_color_admin_B 0 // Kolor admina (niebieski) [0-255]
semiclip_color_ter_R 0 // Kolor Terro (czerwony) [0-255]
semiclip_color_ter_G 0 // Kolor Terro (zielony) [0-255]
semiclip_color_ter_B 0 // Kolor Terro (niebieski) [0-255]
semiclip_color_ct_R 0 // Kolor CT (czerwony) [0-255]
semiclip_color_ct_G 0 // Kolor CT (zielony) [0-255]
semiclip_color_ct_B 0 // Kolor CT (niebieski) [0-255]

////////////////////////////////////////////////////


//VoteBan

voteban_percent 45 - po osiągnięciu 45% banuje danego gracza
voteban_type 4 - typ banowania , 4-amxbans
voteban_time 2880 - czas bana w minutach , 0 - na zawsze
voteban_log 1 - zapisywanie logów w pliku, 1 - tak , 0 - nie
 
// jeśli chcesz aby zawsze banowało gracza np od 10 głosów 
 
voteban_percent 0
voteban_limit 6 - liczba głosów od jakiej ma banować

////////////////////////////////////////////////////

//Kto przychodzi na serwer!
amx_join_message "Przychodzi %name%"
amx_joined_message "%name% jest gotowy!"
amx_leave_message "Odchodzi %name%"
amx_join_leave "1"

////////////////////////////////////////////////////

modules.ini / moduły - Wymagane moduły 

fun
engine
fakemeta
cstrike
csx
hamsandwich
amxmodx

jeśli były by jakieś problemy proszę pisać tutaj na priv 

Pobierz:
https://megawrzuta.p...2019655317.html

 

amxbans brak funkcji w panelu admina

03.11.2023 19:29

Witam, zainstalowałem dziś amxbans na nowym hostingu 
i mam problem nie ma żadnej zakładki w panelu admina 

Jakie pomysły?

  Załączony plik  Zrzut ekranu 2023-11-03 192734.png   40,29 KB  4 Ilość pobrań

Prośba o Komplikację do amxx

23.09.2023 23:38

Witam, nie mogę tego komplikować chodzi o timer.amxx

próbowałem na wszelkie sposoby i nie da rady błąd 

/*
* DeathRunTimer
*
* Site : http://amxx.pl/deathrun-timer-save-records-t31649.html
* Author : Knopers
*/
#include <amxmodx>
#include <engine>
#include <hamsandwich>

#define _CustomButtons

#include "timer/buttons.inl"

#define RecordsSaveTo 1 // 1 - Nvault, 2 - MySQL 

#define TaskID 3456
#define DeadID 3356
new sMap[35];
new HudObj, StatusText, TimerType = 2;
new TimerS[33] = 0; 
new iBest, sBest[64] = "";
new g_iMaxPlayers;

#if RecordsSaveTo == 1
	#include "timer/nvault.inl" // -= Nvault =-
	#else 
	#if RecordsSaveTo == 2
		#include "timer/mysql.inl" // -= MySQL =-
	#endif
#endif

public plugin_init()
{
	register_plugin("DeathRun Timer + Save Record", "2.1", "Knopers");//Edited by Owner (Owner123);
	get_mapname(sMap, 34);
	
	RegisterHam(Ham_Spawn, "player", "EvSpawn", 1);
	RegisterHam(Ham_Killed, "player", "EvPlayerKilled", 1);
	register_logevent("eventResetTime", 2, "1=Round_Start");

	register_concmd("say /best", "ShowBest");
	
	register_cvar("amx_timer_type", "2"); // 1 - Hud, 2 - Status
	
	HudObj = CreateHudSyncObj();
	StatusText = get_user_msgid("StatusText");
	
	//
	// Buttons 
	//
	register_concmd("say /drtimermenu", "ShowMenu");
	RegisterHam(Ham_Use, "func_button", "EvUse", 0);
	entButton = engfunc(EngFunc_AllocString, "func_button");
	readButtons();
	
	#if defined _Timer_Save2Nvault
		h_vault = nvault_open("dr_records");
		LoadRecord();
	#else
	#if defined _Timer_Save2SQL
		register_cvar("timer_sql_host","127.0.0.1",FCVAR_PROTECTED)
		register_cvar("timer_sql_user","root",FCVAR_PROTECTED)
		register_cvar("timer_sql_pass","password",FCVAR_PROTECTED)
		register_cvar("timer_sql_database","baza123",FCVAR_PROTECTED)
		
		ConnectSql();
		//server_print("Loading Record ... [Step 1/4]"); //ForDebug
		set_task(10.0, "CheckRecord");
	#endif
	#endif
	
	g_iMaxPlayers = get_maxplayers();
}
public plugin_precache()
{
	#if defined _CustomButtons
	precache_model(gszButtonModels[0]);
	precache_model(gszButtonModels[1]);
	#else
	engfunc(EngFunc_PrecacheModel, "models/w_c4.mdl");
	#endif
}
public plugin_end()
{
	#if defined _Timer_Save2Nvault
		nvault_close(h_vault);
	#else
	#if defined _Timer_Save2SQL
		SQL_FreeHandle(SQL_TUPLE);
	#endif
	#endif
}
public client_disconnect(id)
{
	if(task_exists(id + TaskID))
		remove_task(id + TaskID);
	if(task_exists(id + DeadID))
		remove_task(id + DeadID);
}
public EvSpawn(id)
{
	TimerS[id] = 0;
	if(task_exists(TaskID + id))
		remove_task(TaskID + id);
	if(task_exists(id + DeadID))
		remove_task(id + DeadID);
	if(get_user_team(id) == 2 && !iOption[0])
		Start(id);
}
public EvPlayerKilled(iVictim, iAttacker)
{
	if(task_exists(TaskID + iVictim))
		remove_task(TaskID + iVictim);
	set_task(1.0, "DeadTask", iVictim + DeadID, _, _, "b");
	if(get_user_team(iVictim) == 1 && get_user_team(iAttacker) == 2 && !iOption[1])
		Finish(iAttacker, iVictim);
}
public Start(id)
{
	TimerS[id] = 0;
	if(get_user_team(id) == 2)
	{
		if(task_exists(id + TaskID))
			remove_task(id + TaskID);
		fnShowTimer(id + TaskID);
		set_task(1.0, "fnShowTimer", id + TaskID, _, _, "b");
	}
}
public Finish(id, idTT)
{
	if(TimerS[id] <= 10 || !task_exists(TaskID + id))
		return PLUGIN_CONTINUE;
	
	if(idTT > 0 && idTT < 33 && !iOption[1])
	{
		remove_task(TaskID + id);
		new svName[32], skName[32];
		get_user_name(idTT, svName, 31);
		get_user_name(id, skName, 31);
		new sMsg[128];
		format(sMsg, 127, "^x04Gracz ^x03%s ^x04ukonczyl mape w ^x03%02d:%02d ^x04i zabil teroryste ^x03%s.", skName, TimerS[id] / 60, TimerS[id] % 60, svName);
		ColorChat(0, sMsg);
		if(TimerS[id] < iBest || iBest < 1)
		{
			iBest = TimerS[id];
			sBest = skName;
			
			format(sMsg, 127, "^x04Gracz ^x03%s ^x04ustanowil nowy rekord mapy ^x03%02d:%02d ", skName, TimerS[id] / 60, TimerS[id] % 60);
			ColorChat(0, sMsg);
			
			#if defined _Timer_Save2Nvault
				replace_all(sBest, 63, "^"", "''");
				SaveRecord();
			#else
			#if defined _Timer_Save2SQL
				//ColorChat(0, "^x04 Please Wait ... Saving record ... [Step 1/4]"); //ForDebug
				replace_all(sBest, 63, "'", "\'");
				replace_all(sBest, 63, "`", "\`");
				//ColorChat(0, "^x04 Please Wait ... Saving record ... [Step 2/4]"); //ForDebug
				Save2SQL();
			#endif
			#endif
		}
		else
		{
			format(sMsg, 127, "^x04Gracz ^x03%s ^x04nie ustanowil nowego rekordu mapy. Aktualny rekord wynosi: ^x03%02d:%02d ", skName, iBest / 60, iBest % 60);
			ColorChat(0, sMsg);
		}
	}
	else
	{
		remove_task(TaskID + id);
		new sName[32];
		get_user_name(id, sName, 31);
		new sMsg[128];
		format(sMsg, 127, "^x04Gracz ^x03%s ^x04ukonczyl mape w ^x03%02d:%02d", sName, TimerS[id] / 60, TimerS[id] % 60);
		ColorChat(0, sMsg);
		if(TimerS[id] < iBest || iBest < 1)
		{
			iBest = TimerS[id];
			sBest = sName;
			
			format(sMsg, 127, "^x04Gracz ^x03%s ^x04ustanowil nowy rekord mapy ^x03%02d:%02d ", sName, TimerS[id] / 60, TimerS[id] % 60);
			ColorChat(0, sMsg);
			
			#if defined _Timer_Save2Nvault
				replace_all(sBest, 63, "^"", "''");
				SaveRecord();
			#else
			#if defined _Timer_Save2SQL
				//ColorChat(0, "^x04 Please Wait ... Saving record ... [Step 1/4]"); //ForDebug
				replace_all(sBest, 63, "'", "\'");
				replace_all(sBest, 63, "`", "\`");
				//ColorChat(0, "^x04 Please Wait ... Saving record ... [Step 2/4]"); //ForDebug
				Save2SQL();
			#endif
			#endif
		}
		else
		{
			format(sMsg, 127, "^x04Gracz ^x03%s ^x04nie ustanowil nowego rekordu mapy. Aktualny rekord wynosi: ^x03%02d:%02d ", sName, iBest / 60, iBest % 60);
			ColorChat(0, sMsg);
		}
	}
	TimerType = get_cvar_num("amx_timer_type");
	return PLUGIN_CONTINUE;
}
public fnShowTimer(idTask)
{
	new id = idTask - TaskID;
	TimerS[id] ++;
	if(TimerType == 1)
	{
		set_hudmessage(255, 255, 255, 0.1, 0.9, 2, 0.05, 1000.0, 0.1, 3.0, -1);
		ShowSyncHudMsg(id, HudObj, "Czas: %02d:%02d", TimerS[id] / 60, TimerS[id] % 60);
	}
	else
	{
		new sSMsg[32];
		format(sSMsg, 31, "Czas: %02d:%02d", TimerS[id] / 60, TimerS[id] % 60);
		message_begin(MSG_ONE, StatusText, {0,0,0}, id);
		write_byte(0);
		write_string(sSMsg);
		message_end();
	}
}

public eventResetTime()
{
	for(new id = 1; id < g_iMaxPlayers; id++)
	{
		if(!is_user_connected(id) || !is_user_alive(id))
			continue;
		
		if(!task_exists(id + TaskID))
			continue;
		
		remove_task(id + TaskID);
		TimerS[id] = 0;
		set_task(1.0, "fnShowTimer", id + TaskID, _, _, "b");
	}
}

public ShowBest(id)
{
	new sMsg[128];
	
	if(!sBest[0])
		format(sMsg, 127, "^4Nikt jeszcze nie ustanowil rekordu na tej mapie.");
	else
		format(sMsg, 127, "^x04Rekord Mapy : ^x03%s ^x01-- ^x04%02d:%02d", sBest, iBest / 60, iBest % 60);
	
	#if defined _Timer_Save2SQL
	if(!g_bRecordLoaded)
		format(sMsg, 127, "^4Ladowanie rekordu, proszę czekac ...");
	#endif
	
	ColorChat(0, sMsg);
}
stock ColorChat(id, sMessage[])
{
	new SayText = get_user_msgid("SayText");
	if(id == 0)
	{
		for(new i = 1; i < 33; i++)
		{
			if(is_user_connected(i))
			{
				message_begin(MSG_ONE, SayText, { 0, 0, 0 }, i);
				write_byte(i);
				write_string(sMessage);
				message_end();
			}
		}
	}
	else
	{
		message_begin(MSG_ONE, SayText, { 0, 0, 0 }, id);
		write_byte(id);
		write_string(sMessage);
		message_end();
	}
}
public DeadTask(Spect)
{
	Spect -= DeadID;
	if(!is_user_connected(Spect) || is_user_alive(Spect))
	{
		remove_task(Spect + DeadID);
		return PLUGIN_CONTINUE;
	}
	new id = entity_get_int(Spect, EV_INT_iuser2);
	if(id <= 0 || id >= 33 || !is_user_alive(id))
		return PLUGIN_CONTINUE;
	new Name[32];
	get_user_name(id, Name, 31);
	
	set_hudmessage(255, 255, 255, -1.0, 0.2, 2, 0.05, 1.0, 0.1, 3.0, -1);
	ShowSyncHudMsg(Spect, HudObj, "Gracz: %s ^nCzas Gracza: %02d:%02d", Name, TimerS[id] / 60, TimerS[id] % 60);
	
	return PLUGIN_CONTINUE;
}

[ROZWIĄZANE] Dodanie powiadomienia HUD?

07.09.2023 22:46

Witam, mam pytanie odnośnie jak zrobić lub może ktoś posiada 

 

Chciałbym coś takiego jak hmm

Witamy [you] na serwerze COD MOD 

 

żeby się wyświetlało np na samej górze ekranu coś tego typu takiej czcionki wielkości itp

 

Załączony plik  Zrzut ekranu 2023-09-07 234407.png   82,01 KB  5 Ilość pobrań

Przerobienie pluginu rangi

30.08.2023 08:44

Witam, bawiłem się lecz jak dodam info to mi znika reszta mogby ktoś pomóc dopisać dwie rzeczy?

 

 

Chciałbym aby do góry był dopisany serwer i forum

[Serwer: OnlyDD2] 

[Forum: twojeforum.pl]

 

a na samym koncu przed godzina chciałbym coś typu [Konto: VIP] dla vipa, a dla zwykłego gracza zeby się wyswietlało [Konto: Darmowe]

 

 

KOD HUD

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <csx>
#include <fun>

#define TASK 666

#define PLUGIN "Rangi Serwer, Rangi Chat, Prefixy"
#define VERSION "3.0"
#define AUTHOR "Paranormal Activity` - przerobka edit. Leqally"

new name[33]
new ranga[33];
new const limit = 18;
new const limit_min = 1
new const rangi[][] = {
	{10, "Srebro I"},
	{30, "Srebro II"},
	{70, "Srebro III"},
	{150, "Srebro IV"},
	{300, "Elitarne srebro"},
	{400, "Mistrzowskie elitarne srebro"},
	{550, "Złoty laur I"},
	{750, "Złoty laur II"},
	{1000, "Złoty laur III"},
	{2250, "Mistrzowski złoty laur"},
	{3500, "Mistrzowski obrońca I"},
	{4500, "Mistrzowski obrońca II "},
	{5500, "Elitarny mistrzowski obrońca"},
	{6000, "Wybitny mistrzowski obrońca"},
	{7500, "Legendarny orzeł"},
	{8900, "Mistrzowski legendarny orzeł"},
	{9999, "Mistrzowska pierwsza klasa"},
	{12000, "Elita światowa"}
}

new Float:liczby[] = {0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 2000.0}

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("say /rangi", "motd")
	register_cvar("rangi_kolor", "2")
	register_message(get_user_msgid("SayText"),"handleSayText");
}

public client_connect(id)
{
    if(is_user_bot(id) || is_user_hltv(id))
        return

	new param[1]
	param[0] = id
	set_task(1.0,"rank",TASK+id,param,1,"b")
}

public client_disconnect(id)
{
    if(is_user_bot(id) || is_user_hltv(id))
        return
	
	if(task_exists(TASK+id))
	remove_task(TASK+id)
}

public rank(param[])
{
	new id = param[0]
	new stats[8]
	new body[8]
    static stats1[8], body1[8], rankpos, rankmax
    get_user_stats(id, stats, body)
    rankpos = get_user_stats(id, stats1, body1);

	rankmax = get_statsnum();
	
	if(!is_user_alive(id))
	{
		id = pev(id, pev_iuser2);
		if(!id)
			id = param[0]
	}
	new Float:kdratio[33]
	kdratio[id] = float(stats[0]) / float(stats[1])


	if(kdratio[id] >= liczby[ranga[id]] && stats[0] >= rangi[ranga[id]][0] && ranga[id] < limit)
		ranga[id]++

	if(kdratio[id] < liczby[ranga[id]] && ranga[id] > limit_min)
		ranga[id]--

	new timeleft = get_timeleft ()
	get_user_name(id,name,32)
	set_hudmessage(0, 69, 200, 0.01, 0.18, 2, 0.02, 1.0, 0.01)
	show_hudmessage(id, "Nick: %s^nRanga: %s^nZabojstwa: %d^nK/D Ratio: %0.2f% proc.^nRanking: %d/%d^nZamiana mapy: %d:%02d", name, rangi[ranga[id]][1], stats[0], kdratio[id], rankpos, rankmax, timeleft / 60, timeleft% 60)
}

public motd(id)
	if(is_user_connected(id))
		show_motd(id, "rangi.txt", "Rangi na serwerze:");
		
public handleSayText(msgId,msgDest,msgEnt)
{
	new id = get_msg_arg_int(1);
	if(!is_user_connected(id))      
		return;

	new szTmp[256],szTmp2[256];
	get_msg_arg_string(2,szTmp, charsmax(szTmp));

	new szPrefix[64];
	formatex(szPrefix,charsmax(szPrefix),"^x01[^x04%s^x01]", rangi[ranga[id]][1]);
	if(!equal(szTmp,"#Cstrike_Chat_All"))
	{
		add(szTmp2,charsmax(szTmp2),szPrefix);
		add(szTmp2,charsmax(szTmp2)," ");
		add(szTmp2,charsmax(szTmp2),szTmp);
	}
	else
	{
		add(szTmp2,charsmax(szTmp2),szPrefix);
		add(szTmp2,charsmax(szTmp2),"^x03 %s1^x01 :  %s2");
	}

	set_msg_arg_string(2,szTmp2);
}

public handleSayText1(msgId,msgDest,msgEnt){
	new id = get_msg_arg_int(1);
	
	if(!is_user_connected(id))	return PLUGIN_CONTINUE;
	
	new szTmp[256],szTmp2[256];
	get_msg_arg_string(2,szTmp, charsmax( szTmp ) )
	new szPrefix[64];
		
	if(!equal(szTmp,"#Cstrike_Chat_All")){
		add(szTmp2,charsmax(szTmp2),szPrefix);
		add(szTmp2,charsmax(szTmp2)," ");
		add(szTmp2,charsmax(szTmp2),szTmp);
	}
	else{
		add(szTmp2,charsmax(szTmp2),szPrefix);
		add(szTmp2,charsmax(szTmp2),"^x03 %s1^x01 :  %s2");
	}
	
	set_msg_arg_string(2,szTmp2);
	
	return PLUGIN_CONTINUE;
}

/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/