Skocz do zawartości
PepeKOZAK

[Rozwiązane] Problem z kompilacją

Rekomendowane odpowiedzi

Witam!

Ostatnio zacząłem przerabiać sobie plugin na vipa, jednak mam problem z jego kompilacją i nie wiem czym to jest spowodowane.

Z góry dziękuję za pomoc 😄

Spoiler

/* << Define >> */
#define ELITA_PREFIX "{blue}[WIEJSKA ELITA]{default}"

/* << Pragma >> */
#pragma newdecls required
#pragma semicolon 1
#pragma tabsize 0

/* << Macro >> */
#define LoopClients(%1) for(int %1 = 1; %1 <= MaxClients; %1++)\
if (IsClientInGame( % 1))
	
/* << ConVary >> */
ConVar g_cvVipFlag;
ConVar g_Cvar_Kamizelka_Helm_1_runda;
ConVar g_CvarWiadomosciChat;
ConVar g_CvarWiadomosciStart;
ConVar g_CvarVipyOnline;
ConVar g_CvarPrzywitanieVip;
ConVar g_CvarPozegnanieVip;
ConVar g_CvarVipPisanieWHud;
ConVar g_CvarVipArmor;
ConVar g_CvarVipHelm;
ConVar g_CvarGranatyRunda;
ConVar g_CvarHEGranat;
ConVar g_CvarFlashGranat;
ConVar g_CvarSmokeGranat;
ConVar g_CvarHealGranat;
ConVar g_CvarIncGranat;
ConVar g_CvarMolotovGranat;
ConVar g_CvarVipPieniadzeNaStart;
ConVar g_CvarVipPieniadzePodlozenie;
ConVar g_CvarVipPieniadzeRozbrojenie;
ConVar g_CvarVipHeadShotPieniadze;
ConVar g_CvarVipKillPieniadze;
ConVar g_CvarVipKillKnifePieniadze;
ConVar g_CvarVipWygranaPieniadze;
ConVar g_CvarMenuBroni;
ConVar g_CvarRundaMenuBroni;

/* << Inty >> */
int LiczbaRund = 0;
int g_iaGrenadeOffsets[] =  { 15, 17, 16, 14, 18, 17 };

/* << Boole >> */
bool g_bWiadomoscHud[MAXPLAYERS + 1];

public void OnPluginStart() {
	HookEvent("round_start", Event_RoundStart);
	HookEvent("player_spawn", Event_PlayerSpawn);
	HookEvent("player_death", Event_PlayerDeath);
	HookEvent("bomb_planted", Event_BombPlanted);
	HookEvent("bomb_defused", Event_BombDefused);
	HookEvent("round_end", Event_RoundEnd);
	HookEvent("announce_phase_end", ResetPoZmianie);
	HookEvent("cs_intermission", ResetPoZmianie);
	
	RegConsoleCmd("sm_elity", ShowOnlineVips);
	RegConsoleCmd("sm_elitasay", Komenda_Hud);
	
	/* << ConVary >> */
	g_cvVipFlag = CreateConVar("elita_flag", "p", "Flaga dla gracza ELITA, pozostaw puste by każdy miał ELITE.");
	
	g_CvarWiadomosciChat = CreateConVar("elita_wiadomosci_chat", "1", "Czy pokazywać różne wiadomości na chacie, np za zabicie?");
	g_CvarWiadomosciStart = CreateConVar("vip_wiadomosci_start", "1", "Czy pokazywać wiadomości o kevlarze, hełmie, granatach i defuserze? (0/1)");
	g_Cvar_Kamizelka_Helm_1_runda = CreateConVar("elita_disable_armor_and_helmet", "0", "Czy kamizelka i hełm mają nie działać w pierwszej rundzie?");
	g_CvarVipyOnline = CreateConVar("elita_elity_online", "1", "Czy włączyć funkcje ELITY ONLINE?");
	g_CvarPrzywitanieVip = CreateConVar("elita_przywitanie", "1", "Czy włączyć przywitanie ELITY?");
	g_CvarPozegnanieVip = CreateConVar("elita_pozegnanie", "1", "Czy włączyć pożegnanie ELITY?");
	g_CvarVipPisanieWHud = CreateConVar("elita_hud_message", "1", "Czy pozwolić ELICIE na pisanie w HUD?");
	g_CvarVipArmor = CreateConVar("armor_elita", "100", "Punkty kamizelki dla ELITY? (od 1 - 100)");
	g_CvarVipHelm = CreateConVar("helm_elita", "1", "Czy ELITA ma posiadać darmowy hełm? (0/1)");
	g_CvarVipPieniadzeNaStart = CreateConVar("elita_dodatkowe_Pieniadze", "0", "Ilość dodatkowych pieniędzy na start rundy jakie ma ELITA dostawać.");
	g_CvarVipKillPieniadze = CreateConVar("pieniadze_kill_elita", "200", "Ile ELITA ma dostawać pieniędzy za zabójstwo?");
	g_CvarVipKillKnifePieniadze = CreateConVar("pieniadze_kill_knife_elita", "200", "Ile ELITA ma dostawać pieniędzy za zabójstwo z noża?");
	g_CvarVipHeadShotPieniadze = CreateConVar("pieniadze_hs_elita", "500", "Ile ELITA ma dostawać pieniędzy za zabójstwo w głowę?");
	g_CvarVipPieniadzePodlozenie = CreateConVar("pieniadze_podlozenie_elita", "1000", "Ile pieniędzy ma dostawać ELITA za podłożenie bomby?");
	g_CvarVipPieniadzeRozbrojenie = CreateConVar("pieniadze_rozbrojenie_elita", "1000", "Ile pieniędzy ma dostawać ELITA za rozbrojenie bomby?");
	g_CvarVipWygranaPieniadze = CreateConVar("pieniadze_wygranie_rundy", "500", "Ile pieniędzy ma dostawać ELITA za wygranie rundy?");
	g_CvarGranatyRunda = CreateConVar("elita_nades_round", "1", "Od której rundy przyznawać darmowe granaty ELICIE?");
	g_CvarHEGranat = CreateConVar("elita_he", "1", "Czy ELITA ma dostawać granat HE na start rundy?");
	g_CvarFlashGranat = CreateConVar("elita_flash", "1", "Czy ELITA ma dostawać granat flash na start rundy?");
	g_CvarSmokeGranat = CreateConVar("elita_smoke", "1", "Czy ELITA ma dostawać granat smoke na start rundy?");
	g_CvarHealGranat = CreateConVar("elita_heal", "1", "Czy ELITA ma dostawać medishota na start rundy?");
	g_CvarIncGranat = CreateConVar("elita_inc", "1", "Czy ELITA ma dostawać granat podpalający (CT) na start rundy?");
	g_CvarMolotovGranat = CreateConVar("elita_molotov", "1", "Czy ELITA ma dostawać granat podpalający (TT) na start rundy?");
	g_CvarMenuBroni = CreateConVar("elita_menu_broni", "1", "Czy ma być menu broni dla ELITY?");
	g_CvarRundaMenuBroni = CreateConVar("elita_runda_menubroni", "3", "Od ktorej rundy ma pokazywac menu broni dla ELITY?");
	
	AutoExecConfig(true, "sm_elita");
}

public void OnMapStart() {
	LiczbaRund = 0;
}

public void OnClientPutInServer(int client) {
	g_bWiadomoscHud[client] = true;
}

public void OnClientPostAdminCheck(int client) {
	if (g_CvarPrzywitanieVip.BoolValue && IsPlayerVip(client)) {
		PrintToChatAll("╔════════════════════════════════════════╗");
		PrintToChatAll("%s %N dołączył do gry", ELITA_PREFIX, client);
		PrintToChatAll("╚════════════════════════════════════════╝");
	}
}

public void OnClientDisconnect(int client) {
	if (g_CvarPozegnanieVip.BoolValue && IsPlayerVip(client)) {
		PrintToChatAll("╔════════════════════════════════════════╗");
		PrintToChatAll("%s %N opuścił grę", ELITA_PREFIX, client);
		PrintToChatAll("╚════════════════════════════════════════╝");
	}
}

public Action Komenda_Hud(int client, int args) {
	if (!g_CvarVipPisanieWHud.BoolValue) {
		PrintToChat(client, "Ta funkcja została wyłączona przez administratora serwera.");
		return Plugin_Handled;
	}
	
	if (!IsPlayerVip(client)) {
		PrintToChat(client, "Tylko ELITA może użyć tej komendy.");
		return Plugin_Handled;
	}
	
	if (args < 1) {
		ReplyToCommand(client, "[SM] Użycie: sm_hudsay <tekst>");
		return Plugin_Handled;
	}
	
	char text[192];
	GetCmdArgString(text, sizeof(text));
	
	for (int i = 1; i <= MaxClients; i++) {
		if (IsClientInGame(i) && !IsFakeClient(i)) {
			SetHudTextParams(0.35, 0.225, 10.0, 0, 255, 0, 1, 0, 2.5, 2.0); //Tutaj se edytujemy tak o beka.
			ShowHudText(i, 5, "ELITA: %N napisał:\n%s", client, text);
		}
	}
	
	g_bWiadomoscHud[client] = false;
	CreateTimer(120.0, Timer_EnableMessage, client);
	
	return Plugin_Handled;
}

public Action Timer_EnableMessage(Handle timer, any client) {
	if (client)
		g_bWiadomoscHud[client] = true;
}

public Action MenuGlowne(int client) {
	if (IsValidClient(client)) {
		if (IsPlayerVip(client)) {
			Menu menu = new Menu(MenuHandler1);
			menu.SetTitle("ELITA : Wybierz broń");
			menu.AddItem("weapon_ak47", "AK-47");
			menu.AddItem("weapon_m4a1", "M4A4");
			menu.AddItem("weapon_m4a1_silencer", "M4A1-S");
			menu.AddItem("weapon_awp", "AWP");
			menu.AddItem("weapon_ssg08", "SCOUT");
			menu.AddItem("weapon_xm1014", "XM1014");
			menu.AddItem("weapon_famas", "FAMAS");
			menu.ExitButton = true;
			menu.Display(client, 15);
		}
	}
}

public int MenuHandler1(Menu menu, MenuAction action, int client, int itemNum) {
	if (action == MenuAction_Select) {
		char info[32];
		GetMenuItem(menu, itemNum, info, sizeof(info));
		
		if (IsPlayerAlive(client)) {
			StripAllWeapons(client);
			GivePlayerItem(client, "weapon_knife");
			GivePlayerItem(client, info);
			MenuBroni(client);
		}
	}
	else if (action == MenuAction_End)
		CloseHandle(menu);
}

public Action MenuBroni(int client) {
	if (IsValidClient(client)) {
		if (IsPlayerVip(client)) {
			Menu menusec = new Menu(MenuHandler2);
			menusec.SetTitle("ELITA : Wybierz pistolet");
			menusec.AddItem("weapon_deagle", "Deagle");
			menusec.AddItem("weapon_revolver", "R8 Revolver");
			menusec.AddItem("weapon_fiveseven", "Five-Seven");
			menusec.AddItem("weapon_tec9", "Tec-9");
			menusec.AddItem("weapon_cz75a", "CZ7a");
			menusec.AddItem("weapon_elite", "Dual Elites");
			menusec.AddItem("weapon_p250", "p250");
			menusec.ExitButton = true;
			menusec.Display(client, 15);
		}
	}
}

public int MenuHandler2(Menu menusec, MenuAction action, int client, int itemNum) {
	
	if (action == MenuAction_Select) {
		char info[32];
		GetMenuItem(menusec, itemNum, info, sizeof(info));
		
		if (IsPlayerAlive(client))
			GivePlayerItem(client, info);
	}
	else if (action == MenuAction_End)
		CloseHandle(menusec);
}

public Action Event_RoundStart(Event hEvent, const char[] chName, bool bDontBroadcast) {
	if (GameRules_GetProp("m_bWarmupPeriod") != 1)
		LiczbaRund = LiczbaRund + 1;
}

public Action ResetPoZmianie(Event hEvent, const char[] chName, bool bDontBroadcast) {
	LiczbaRund = 0;
}

public Action Event_PlayerSpawn(Event hEvent, const char[] chName, bool bDontBroadcast) {
	int client = GetClientOfUserId(hEvent.GetInt("userid"));
	
	if (GameRules_GetProp("m_bWarmupPeriod") == 1)
		return;
	
	if (IsPlayerVip(client)) {
		if (g_Cvar_Kamizelka_Helm_1_runda.BoolValue && LiczbaRund <= 1)
			return;
		else {
			SetEntProp(client, Prop_Send, "m_ArmorValue", g_CvarVipArmor.IntValue);
			SetEntProp(client, Prop_Send, "m_bHasHelmet", g_CvarVipHelm.IntValue);
			if (g_CvarWiadomosciStart.BoolValue && g_CvarVipArmor.IntValue && g_CvarVipHelm.IntValue)
					CPrintToChat(client, "%s Dostałeś darmowy kevlar i hełm!", ELITA_PREFIX);
			if (g_CvarWiadomosciStart.BoolValue && g_CvarVipArmor.IntValue && !g_CvarVipHelm.IntValue)
					CPrintToChat(client, "%s Dostałeś darmowy kevlar!", ELITA_PREFIX);	
		}
		
		SetEntProp(client, Prop_Send, "m_iAccount", GetEntProp(client, Prop_Send, "m_iAccount") + g_CvarVipPieniadzeNaStart.IntValue);
		
		if (GetClientTeam(client) == CS_TEAM_CT && GetEntProp(client, Prop_Send, "m_bHasDefuser") == 0) {
			GivePlayerItem(client, "item_defuser");
			if (g_CvarWiadomosciStart.BoolValue)
					CPrintToChat(client, "%s Dostałeś darmowy zestaw do rozbrajania!", ELITA_PREFIX);
		}
		if (LiczbaRund >= g_CvarGranatyRunda.IntValue) {
			if (g_CvarHEGranat.BoolValue) {
				GivePlayerItem(client, "weapon_hegrenade");
				if (g_CvarWiadomosciStart.BoolValue)
					CPrintToChat(client, "%s Dostałeś darmowy granat zaczepny!", ELITA_PREFIX);
			}
			if (g_CvarFlashGranat.BoolValue) {
				GivePlayerItem(client, "weapon_flashbang");
				if (g_CvarWiadomosciStart.BoolValue)
					CPrintToChat(client, "%s Dostałeś darmowy granat błyskowy!", ELITA_PREFIX);
			}
			if (g_CvarSmokeGranat.BoolValue) {
				GivePlayerItem(client, "weapon_smokegrenade");
				if (g_CvarWiadomosciStart.BoolValue)
					CPrintToChat(client, "%s Dostałeś darmowy granat dymny!", ELITA_PREFIX);
			}
			if (g_CvarHealGranat.BoolValue) {
				GivePlayerItem(client, "weapon_healthshot");
				if (g_CvarWiadomosciStart.BoolValue)
					CPrintToChat(client, "%s Dostałeś darmowy zastrzyk wzmacniający!", ELITA_PREFIX);
			}
			if (GetClientTeam(client) == CS_TEAM_CT && g_CvarIncGranat.BoolValue) {
				GivePlayerItem(client, "weapon_incgrenade");
				if (g_CvarWiadomosciStart.BoolValue)
					CPrintToChat(client, "%s Dostałeś darmowy granat zapalający!", ELITA_PREFIX);
			}
			if (GetClientTeam(client) == CS_TEAM_T && g_CvarMolotovGranat.BoolValue) {
				GivePlayerItem(client, "weapon_molotov");
				if (g_CvarWiadomosciStart.BoolValue)
					CPrintToChat(client, "%s Dostałeś darmowego molotova!", ELITA_PREFIX);
			}
		}
	
	if (g_CvarMenuBroni.BoolValue && LiczbaRund >= g_CvarRundaMenuBroni.IntValue)
		MenuGlowne(client);
}

public Action Event_PlayerDeath(Event hEvent, const char[] chName, bool bDontBroadcast) {
	int attacker = GetClientOfUserId(hEvent.GetInt("attacker"));
	int victim = GetClientOfUserId(hEvent.GetInt("userid"));
	
	if (!IsValidClient(attacker))
		return;
	
	char weapon[64];
	GetEventString(hEvent, "weapon", weapon, sizeof(weapon));
	
	if (IsPlayerVip(attacker)) {
		if (GetClientTeam(attacker) != GetClientTeam(victim)) {
			bool headshot = hEvent.GetBool("headshot", false); //false - default.
			int PieniadzeGracza = GetEntProp(attacker, Prop_Send, "m_iAccount");
			
			if (headshot) {
				SetEntProp(attacker, Prop_Send, "m_iAccount", g_CvarVipHeadShotPieniadze.IntValue + PieniadzeGracza);
			}
			else {
				SetEntProp(attacker, Prop_Send, "m_iAccount", g_CvarVipKillPieniadze.IntValue + PieniadzeGracza);
			}
			
			//if (StrEqual(weapon, "knife"))
			if (StrContains(weapon, "knife", false) != -1 || StrContains(weapon, "bayonet", false) != -1) {
				SetEntProp(attacker, Prop_Send, "m_iAccount", g_CvarVipKillKnifePieniadze.IntValue + PieniadzeGracza);
				
				if (g_CvarWiadomosciChat.BoolValue)
					CPrintToChat(attacker, "%s Jako ELITA otrzymałeś %i$ za zabójstwo z noża.", ELITA_PREFIX, g_CvarVipKillKnifePieniadze.IntValue);
			}
		}
	}
}

public Action Event_BombPlanted(Event hEvent, const char[] chName, bool bDontBroadcast) {
	int client = GetClientOfUserId(hEvent.GetInt("userid"));
	int PieniadzeGracza = GetEntProp(client, Prop_Send, "m_iAccount");
	
	if (IsPlayerVip(client)) {
		if (g_CvarWiadomosciChat.BoolValue)
			CPrintToChat(client, "%s Jako ELITA otrzymałeś %i$ za podłożenie bomby.", ELITA_PREFIX, g_CvarVipPieniadzePodlozenie.IntValue);
		
		SetEntProp(client, Prop_Send, "m_iAccount", g_CvarVipPieniadzePodlozenie.IntValue + PieniadzeGracza);
	}
}

public Action Event_BombDefused(Event hEvent, const char[] chName, bool bDontBroadcast) {
	int client = GetClientOfUserId(hEvent.GetInt("userid"));
	int PieniadzeGracza = GetEntProp(client, Prop_Send, "m_iAccount");
	
	if (IsPlayerVip(client)) {
		if (g_CvarWiadomosciChat.BoolValue)
			CPrintToChat(client, "%s Jako ELITA otrzymałeś %i$ za rozbrojenie bomby.", ELITA_PREFIX, g_CvarVipPieniadzeRozbrojenie.IntValue);
		
		SetEntProp(client, Prop_Send, "m_iAccount", g_CvarVipPieniadzeRozbrojenie.IntValue + PieniadzeGracza);
	}
}

public Action Event_RoundEnd(Event hEvent, const char[] chName, bool bDontBroadcast) {
	int WygranaDruzyna = hEvent.GetInt("winner");
	
	for (int client = 1; client < MAXPLAYERS + 1; client++) {
		if(!IsValidClient(client))
			return;
		
		if (IsPlayerVip(client)) {
			RemoveNades(client);
			
			if (GetClientTeam(client) == WygranaDruzyna)
				SetEntProp(client, Prop_Send, "m_iAccount", g_CvarVipWygranaPieniadze.IntValue + GetEntProp(client, Prop_Send, "m_iAccount"));
		}
	}
}

public Action ShowOnlineVips(int client, int args) {
	if (!g_CvarVipyOnline.BoolValue) {
		PrintToChat(client, "Ta funkcja została wyłączona przez administratora serwera.");
		return Plugin_Handled;
	}
	
	int iCount = 0;
	
	Menu menu = new Menu(Menu_Handler);
	
	menu.SetTitle("Gracze ELITA, którzy aktualnie znajdują się na serwerze");
	
	for (int i = 1; i < MaxClients; i++) {
		if(IsValidClient(i))
		{
			if (IsPlayerVip(i) && IsClientInGame(i)) {
				char format[128];
				char cid[16];
				char name[MAX_NAME_LENGTH + 1];
			
				IntToString(i, cid, sizeof cid);
				GetClientName(i, name, sizeof name);
			
				Format(format, sizeof format, "[ELITA] » %s", name);
				menu.AddItem(cid, format, ITEMDRAW_DISABLED);
				iCount++;
			}	
		}
	}
	
	if (iCount == 0) {
		menu.AddItem("ITEMDRAW_DISABLED", "Ups, wygląda na to, że nie ma graczy online, którzy posiadają usługę ELITA.");
	}
	
	menu.ExitButton = true;
	menu.Display(client, 0);
	
	return Plugin_Handled;
}

public int Menu_Handler(Menu menu, MenuAction action, int client, int itemNum) {
	if (action == MenuAction_End)
		CloseHandle(menu);
}

stock void StripAllWeapons(int client) {
	int iEnt;
	for (int i = 0; i <= 2; i++) {
		while ((iEnt = GetPlayerWeaponSlot(client, i)) != -1) {
			RemovePlayerItem(client, iEnt);
			AcceptEntityInput(iEnt, "Kill");
		}
	}
}

stock void RemoveNades(int client) {
	while (RemoveWeaponBySlot(client, 3)) {  }
	for (int i = 0; i < 6; i++)
	SetEntProp(client, Prop_Send, "m_iAmmo", 0, _, g_iaGrenadeOffsets[i]);
}

stock bool RemoveWeaponBySlot(int client, int iSlot) {
	int iEntity = GetPlayerWeaponSlot(client, iSlot);
	
	if (IsValidEdict(iEntity)) {
		RemovePlayerItem(client, iEntity);
		AcceptEntityInput(iEntity, "Kill");
		return true;
	}
	return false;
}

stock bool IsPlayerVip(int client) {	
    char flag[10];
    g_cvVipFlag.GetString(flag, sizeof(flag));
 
    if (GetUserFlagBits(client) & ReadFlagString(flag) || GetAdminFlag(GetUserAdmin(client), Admin_Root))
        return true;
    return false;
}

stock bool IsValidClient(int client) {
	if (client <= 0)return false;
	if (client > MaxClients)return false;
	if (!IsClientConnected(client))return false;
	if (IsClientReplay(client))return false;
	if (IsFakeClient(client))return false;
	if (IsClientSourceTV(client))return false;
	return IsClientInGame(client);
}

 

Przez MAGNET,

Następnym razem długi kod umieszczaj w spoilerze :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dodaje jeszcze include

#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#include <cstrike>
#include <clientprefs>
#include <colors_csgo>
#include <loghelper>

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Fajnie fajnie, a jaki ten problem z kompilacją? Pewnie nie chce się skompilować? 😄 

A jakie błędy? ^^ 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Desktop\scripting\elita.sp(59) : error 017: undefined symbol "Event_PlayerDeath"
Desktop\scripting\elita.sp(60) : error 017: undefined symbol "Event_BombPlanted"
Desktop\scripting\elita.sp(61) : error 017: undefined symbol "Event_BombDefused"
Desktop\scripting\elita.sp(62) : error 017: undefined symbol "Event_RoundEnd"
Desktop\scripting\elita.sp(66) : error 017: undefined symbol "ShowOnlineVips"
Desktop\scripting\elita.sp(110) : error 017: undefined symbol "IsPlayerVip"
Desktop\scripting\elita.sp(118) : error 017: undefined symbol "IsPlayerVip"
Desktop\scripting\elita.sp(131) : error 017: undefined symbol "IsPlayerVip"
Desktop\scripting\elita.sp(163) : error 017: undefined symbol "IsValidClient"
Desktop\scripting\elita.sp(164) : error 017: undefined symbol "IsPlayerVip"
Desktop\scripting\elita.sp(186) : error 017: undefined symbol "StripAllWeapons"
Desktop\scripting\elita.sp(197) : error 017: undefined symbol "IsValidClient"
Desktop\scripting\elita.sp(198) : error 017: undefined symbol "IsPlayerVip"
Desktop\scripting\elita.sp(240) : warning 209: function "Event_PlayerSpawn" should return a value
Desktop\scripting\elita.sp(242) : error 017: undefined symbol "IsPlayerVip"
Desktop\scripting\elita.sp(244) : warning 209: function "Event_PlayerSpawn" should return a value
Desktop\scripting\elita.sp(298) : error 029: invalid expression, assumed zero
Desktop\scripting\elita.sp(298) : error 001: expected token: ";", but found "("
Desktop\scripting\elita.sp(298) : error 174: symbol 'Event' is a type and cannot be used as a value
Desktop\scripting\elita.sp(298) : fatal error 190: too many error messages on one line

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
11 godzin temu, PepeKOZAK napisał:

Desktop\scripting\elita.sp(59) : error 017: undefined symbol "Event_PlayerDeath"
Desktop\scripting\elita.sp(60) : error 017: undefined symbol "Event_BombPlanted"
Desktop\scripting\elita.sp(61) : error 017: undefined symbol "Event_BombDefused"
Desktop\scripting\elita.sp(62) : error 017: undefined symbol "Event_RoundEnd"

W kodzie nie ma użytych tych eventów.

 

11 godzin temu, PepeKOZAK napisał:

Desktop\scripting\elita.sp(66) : error 017: undefined symbol "ShowOnlineVips"
Desktop\scripting\elita.sp(110) : error 017: undefined symbol "IsPlayerVip"
Desktop\scripting\elita.sp(118) : error 017: undefined symbol "IsPlayerVip"
Desktop\scripting\elita.sp(131) : error 017: undefined symbol "IsPlayerVip"
Desktop\scripting\elita.sp(163) : error 017: undefined symbol "IsValidClient"
Desktop\scripting\elita.sp(164) : error 017: undefined symbol "IsPlayerVip"
Desktop\scripting\elita.sp(186) : error 017: undefined symbol "StripAllWeapons"
Desktop\scripting\elita.sp(197) : error 017: undefined symbol "IsValidClient"
Desktop\scripting\elita.sp(198) : error 017: undefined symbol "IsPlayerVip"

Brakuje Ci funkcji "ShowOnlineVips", "StripAllWeapons" oraz nie masz zdefiniowanych booleanów "IsPlayerVip",  "IsValidClient".

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Napisano (edytowane)

A mógłbyś mi to przerobić? 😧

Albo chociaż jak dokładnie to poprawić, bo dopiero zaczynam z tym zabawę 😄

Edytowane przez PepeKOZAK

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Po analizie kodu znalazłem brak jednej klamry, przez którą wysypało Ci errory. Masz tutaj poprawioną wersję:

Spoiler

#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#include <cstrike>
#include <clientprefs>
#include <multicolors>

/* << Define >> */
#define ELITA_PREFIX "{blue}[WIEJSKA ELITA]{default}"

/* << Pragma >> */
#pragma newdecls required
#pragma semicolon 1
#pragma tabsize 0

/* << Macro >> */
#define LoopClients(%1) for(int %1 = 1; %1 <= MaxClients; %1++)\
if (IsClientInGame( % 1))
	
/* << ConVary >> */
ConVar g_cvVipFlag;
ConVar g_Cvar_Kamizelka_Helm_1_runda;
ConVar g_CvarWiadomosciChat;
ConVar g_CvarWiadomosciStart;
ConVar g_CvarVipyOnline;
ConVar g_CvarPrzywitanieVip;
ConVar g_CvarPozegnanieVip;
ConVar g_CvarVipPisanieWHud;
ConVar g_CvarVipArmor;
ConVar g_CvarVipHelm;
ConVar g_CvarGranatyRunda;
ConVar g_CvarHEGranat;
ConVar g_CvarFlashGranat;
ConVar g_CvarSmokeGranat;
ConVar g_CvarHealGranat;
ConVar g_CvarIncGranat;
ConVar g_CvarMolotovGranat;
ConVar g_CvarVipPieniadzeNaStart;
ConVar g_CvarVipPieniadzePodlozenie;
ConVar g_CvarVipPieniadzeRozbrojenie;
ConVar g_CvarVipHeadShotPieniadze;
ConVar g_CvarVipKillPieniadze;
ConVar g_CvarVipKillKnifePieniadze;
ConVar g_CvarVipWygranaPieniadze;
ConVar g_CvarMenuBroni;
ConVar g_CvarRundaMenuBroni;

/* << Inty >> */
int LiczbaRund = 0;
int g_iaGrenadeOffsets[] =  { 15, 17, 16, 14, 18, 17 };

/* << Boole >> */
bool g_bWiadomoscHud[MAXPLAYERS + 1];

public void OnPluginStart() {
	HookEvent("round_start", Event_RoundStart);
	HookEvent("player_spawn", Event_PlayerSpawn);
	HookEvent("player_death", Event_PlayerDeath);
	HookEvent("bomb_planted", Event_BombPlanted);
	HookEvent("bomb_defused", Event_BombDefused);
	HookEvent("round_end", Event_RoundEnd);
	HookEvent("announce_phase_end", ResetPoZmianie);
	HookEvent("cs_intermission", ResetPoZmianie);
	
	RegConsoleCmd("sm_elity", ShowOnlineVips);
	RegConsoleCmd("sm_elitasay", Komenda_Hud);
	
	/* << ConVary >> */
	g_cvVipFlag = CreateConVar("elita_flag", "p", "Flaga dla gracza ELITA, pozostaw puste by każdy miał ELITE.");
	
	g_CvarWiadomosciChat = CreateConVar("elita_wiadomosci_chat", "1", "Czy pokazywać różne wiadomości na chacie, np za zabicie?");
	g_CvarWiadomosciStart = CreateConVar("vip_wiadomosci_start", "1", "Czy pokazywać wiadomości o kevlarze, hełmie, granatach i defuserze? (0/1)");
	g_Cvar_Kamizelka_Helm_1_runda = CreateConVar("elita_disable_armor_and_helmet", "0", "Czy kamizelka i hełm mają nie działać w pierwszej rundzie?");
	g_CvarVipyOnline = CreateConVar("elita_elity_online", "1", "Czy włączyć funkcje ELITY ONLINE?");
	g_CvarPrzywitanieVip = CreateConVar("elita_przywitanie", "1", "Czy włączyć przywitanie ELITY?");
	g_CvarPozegnanieVip = CreateConVar("elita_pozegnanie", "1", "Czy włączyć pożegnanie ELITY?");
	g_CvarVipPisanieWHud = CreateConVar("elita_hud_message", "1", "Czy pozwolić ELICIE na pisanie w HUD?");
	g_CvarVipArmor = CreateConVar("armor_elita", "100", "Punkty kamizelki dla ELITY? (od 1 - 100)");
	g_CvarVipHelm = CreateConVar("helm_elita", "1", "Czy ELITA ma posiadać darmowy hełm? (0/1)");
	g_CvarVipPieniadzeNaStart = CreateConVar("elita_dodatkowe_Pieniadze", "0", "Ilość dodatkowych pieniędzy na start rundy jakie ma ELITA dostawać.");
	g_CvarVipKillPieniadze = CreateConVar("pieniadze_kill_elita", "200", "Ile ELITA ma dostawać pieniędzy za zabójstwo?");
	g_CvarVipKillKnifePieniadze = CreateConVar("pieniadze_kill_knife_elita", "200", "Ile ELITA ma dostawać pieniędzy za zabójstwo z noża?");
	g_CvarVipHeadShotPieniadze = CreateConVar("pieniadze_hs_elita", "500", "Ile ELITA ma dostawać pieniędzy za zabójstwo w głowę?");
	g_CvarVipPieniadzePodlozenie = CreateConVar("pieniadze_podlozenie_elita", "1000", "Ile pieniędzy ma dostawać ELITA za podłożenie bomby?");
	g_CvarVipPieniadzeRozbrojenie = CreateConVar("pieniadze_rozbrojenie_elita", "1000", "Ile pieniędzy ma dostawać ELITA za rozbrojenie bomby?");
	g_CvarVipWygranaPieniadze = CreateConVar("pieniadze_wygranie_rundy", "500", "Ile pieniędzy ma dostawać ELITA za wygranie rundy?");
	g_CvarGranatyRunda = CreateConVar("elita_nades_round", "1", "Od której rundy przyznawać darmowe granaty ELICIE?");
	g_CvarHEGranat = CreateConVar("elita_he", "1", "Czy ELITA ma dostawać granat HE na start rundy?");
	g_CvarFlashGranat = CreateConVar("elita_flash", "1", "Czy ELITA ma dostawać granat flash na start rundy?");
	g_CvarSmokeGranat = CreateConVar("elita_smoke", "1", "Czy ELITA ma dostawać granat smoke na start rundy?");
	g_CvarHealGranat = CreateConVar("elita_heal", "1", "Czy ELITA ma dostawać medishota na start rundy?");
	g_CvarIncGranat = CreateConVar("elita_inc", "1", "Czy ELITA ma dostawać granat podpalający (CT) na start rundy?");
	g_CvarMolotovGranat = CreateConVar("elita_molotov", "1", "Czy ELITA ma dostawać granat podpalający (TT) na start rundy?");
	g_CvarMenuBroni = CreateConVar("elita_menu_broni", "1", "Czy ma być menu broni dla ELITY?");
	g_CvarRundaMenuBroni = CreateConVar("elita_runda_menubroni", "3", "Od ktorej rundy ma pokazywac menu broni dla ELITY?");
	
	AutoExecConfig(true, "sm_elita");
}

public void OnMapStart() {
	LiczbaRund = 0;
}

public void OnClientPutInServer(int client) {
	g_bWiadomoscHud[client] = true;
}

public void OnClientPostAdminCheck(int client) {
	if (g_CvarPrzywitanieVip.BoolValue && IsPlayerVip(client)) {
		PrintToChatAll("╔════════════════════════════════════════╗");
		PrintToChatAll("%s %N dołączył do gry", ELITA_PREFIX, client);
		PrintToChatAll("╚════════════════════════════════════════╝");
	}
}

public void OnClientDisconnect(int client) {
	if (g_CvarPozegnanieVip.BoolValue && IsPlayerVip(client)) {
		PrintToChatAll("╔════════════════════════════════════════╗");
		PrintToChatAll("%s %N opuścił grę", ELITA_PREFIX, client);
		PrintToChatAll("╚════════════════════════════════════════╝");
	}
}

public Action Komenda_Hud(int client, int args) {
	if (!g_CvarVipPisanieWHud.BoolValue) {
		PrintToChat(client, "Ta funkcja została wyłączona przez administratora serwera.");
		return Plugin_Handled;
	}
	
	if (!IsPlayerVip(client)) {
		PrintToChat(client, "Tylko ELITA może użyć tej komendy.");
		return Plugin_Handled;
	}
	
	if (args < 1) {
		ReplyToCommand(client, "[SM] Użycie: sm_hudsay <tekst>");
		return Plugin_Handled;
	}
	
	char text[192];
	GetCmdArgString(text, sizeof(text));
	
	for (int i = 1; i <= MaxClients; i++) {
		if (IsClientInGame(i) && !IsFakeClient(i)) {
			SetHudTextParams(0.35, 0.225, 10.0, 0, 255, 0, 1, 0, 2.5, 2.0); //Tutaj se edytujemy tak o beka.
			ShowHudText(i, 5, "ELITA: %N napisał:\n%s", client, text);
		}
	}
	
	g_bWiadomoscHud[client] = false;
	CreateTimer(120.0, Timer_EnableMessage, client);
	
	return Plugin_Handled;
}

public Action Timer_EnableMessage(Handle timer, any client) {
	if (client)
		g_bWiadomoscHud[client] = true;
}

public Action MenuGlowne(int client) {
	if (IsValidClient(client)) {
		if (IsPlayerVip(client)) {
			Menu menu = new Menu(MenuHandler1);
			menu.SetTitle("ELITA : Wybierz broń");
			menu.AddItem("weapon_ak47", "AK-47");
			menu.AddItem("weapon_m4a1", "M4A4");
			menu.AddItem("weapon_m4a1_silencer", "M4A1-S");
			menu.AddItem("weapon_awp", "AWP");
			menu.AddItem("weapon_ssg08", "SCOUT");
			menu.AddItem("weapon_xm1014", "XM1014");
			menu.AddItem("weapon_famas", "FAMAS");
			menu.ExitButton = true;
			menu.Display(client, 15);
		}
	}
}

public int MenuHandler1(Menu menu, MenuAction action, int client, int itemNum) {
	if (action == MenuAction_Select) {
		char info[32];
		GetMenuItem(menu, itemNum, info, sizeof(info));
		
		if (IsPlayerAlive(client)) {
			StripAllWeapons(client);
			GivePlayerItem(client, "weapon_knife");
			GivePlayerItem(client, info);
			MenuBroni(client);
		}
	}
	else if (action == MenuAction_End)
		CloseHandle(menu);
}

public Action MenuBroni(int client) {
	if (IsValidClient(client)) {
		if (IsPlayerVip(client)) {
			Menu menusec = new Menu(MenuHandler2);
			menusec.SetTitle("ELITA : Wybierz pistolet");
			menusec.AddItem("weapon_deagle", "Deagle");
			menusec.AddItem("weapon_revolver", "R8 Revolver");
			menusec.AddItem("weapon_fiveseven", "Five-Seven");
			menusec.AddItem("weapon_tec9", "Tec-9");
			menusec.AddItem("weapon_cz75a", "CZ7a");
			menusec.AddItem("weapon_elite", "Dual Elites");
			menusec.AddItem("weapon_p250", "p250");
			menusec.ExitButton = true;
			menusec.Display(client, 15);
		}
	}
}

public int MenuHandler2(Menu menusec, MenuAction action, int client, int itemNum) {
	
	if (action == MenuAction_Select) {
		char info[32];
		GetMenuItem(menusec, itemNum, info, sizeof(info));
		
		if (IsPlayerAlive(client))
			GivePlayerItem(client, info);
	}
	else if (action == MenuAction_End)
		CloseHandle(menusec);
}

public Action Event_RoundStart(Event hEvent, const char[] chName, bool bDontBroadcast) {
	if (GameRules_GetProp("m_bWarmupPeriod") != 1)
		LiczbaRund = LiczbaRund + 1;
}

public Action ResetPoZmianie(Event hEvent, const char[] chName, bool bDontBroadcast) {
	LiczbaRund = 0;
}

public Action Event_PlayerSpawn(Event hEvent, const char[] chName, bool bDontBroadcast) {
	int client = GetClientOfUserId(hEvent.GetInt("userid"));
	
	if (GameRules_GetProp("m_bWarmupPeriod") == 1)
		return;
	
	if (IsPlayerVip(client)) {
		if (g_Cvar_Kamizelka_Helm_1_runda.BoolValue && LiczbaRund <= 1)
			return;
		else {
			SetEntProp(client, Prop_Send, "m_ArmorValue", g_CvarVipArmor.IntValue);
			SetEntProp(client, Prop_Send, "m_bHasHelmet", g_CvarVipHelm.IntValue);
			if (g_CvarWiadomosciStart.BoolValue && g_CvarVipArmor.IntValue && g_CvarVipHelm.IntValue)
				CPrintToChat(client, "%s Dostałeś darmowy kevlar i hełm!", ELITA_PREFIX);
			if (g_CvarWiadomosciStart.BoolValue && g_CvarVipArmor.IntValue && !g_CvarVipHelm.IntValue)
				CPrintToChat(client, "%s Dostałeś darmowy kevlar!", ELITA_PREFIX);
		}
		
		SetEntProp(client, Prop_Send, "m_iAccount", GetEntProp(client, Prop_Send, "m_iAccount") + g_CvarVipPieniadzeNaStart.IntValue);
		
		if (GetClientTeam(client) == CS_TEAM_CT && GetEntProp(client, Prop_Send, "m_bHasDefuser") == 0) {
			GivePlayerItem(client, "item_defuser");
			if (g_CvarWiadomosciStart.BoolValue)
				CPrintToChat(client, "%s Dostałeś darmowy zestaw do rozbrajania!", ELITA_PREFIX);
		}
		if (LiczbaRund >= g_CvarGranatyRunda.IntValue) {
			if (g_CvarHEGranat.BoolValue) {
				GivePlayerItem(client, "weapon_hegrenade");
				if (g_CvarWiadomosciStart.BoolValue)
					CPrintToChat(client, "%s Dostałeś darmowy granat zaczepny!", ELITA_PREFIX);
			}
			if (g_CvarFlashGranat.BoolValue) {
				GivePlayerItem(client, "weapon_flashbang");
				if (g_CvarWiadomosciStart.BoolValue)
					CPrintToChat(client, "%s Dostałeś darmowy granat błyskowy!", ELITA_PREFIX);
			}
			if (g_CvarSmokeGranat.BoolValue) {
				GivePlayerItem(client, "weapon_smokegrenade");
				if (g_CvarWiadomosciStart.BoolValue)
					CPrintToChat(client, "%s Dostałeś darmowy granat dymny!", ELITA_PREFIX);
			}
			if (g_CvarHealGranat.BoolValue) {
				GivePlayerItem(client, "weapon_healthshot");
				if (g_CvarWiadomosciStart.BoolValue)
					CPrintToChat(client, "%s Dostałeś darmowy zastrzyk wzmacniający!", ELITA_PREFIX);
			}
			if (GetClientTeam(client) == CS_TEAM_CT && g_CvarIncGranat.BoolValue) {
				GivePlayerItem(client, "weapon_incgrenade");
				if (g_CvarWiadomosciStart.BoolValue)
					CPrintToChat(client, "%s Dostałeś darmowy granat zapalający!", ELITA_PREFIX);
			}
			if (GetClientTeam(client) == CS_TEAM_T && g_CvarMolotovGranat.BoolValue) {
				GivePlayerItem(client, "weapon_molotov");
				if (g_CvarWiadomosciStart.BoolValue)
					CPrintToChat(client, "%s Dostałeś darmowego molotova!", ELITA_PREFIX);
			}
		}
	}
	
	if (g_CvarMenuBroni.BoolValue && LiczbaRund >= g_CvarRundaMenuBroni.IntValue)
		MenuGlowne(client);
}

public Action Event_PlayerDeath(Event hEvent, const char[] chName, bool bDontBroadcast) {
	int attacker = GetClientOfUserId(hEvent.GetInt("attacker"));
	int victim = GetClientOfUserId(hEvent.GetInt("userid"));
	
	if (!IsValidClient(attacker))
		return;
	
	char weapon[64];
	GetEventString(hEvent, "weapon", weapon, sizeof(weapon));
	
	if (IsPlayerVip(attacker)) {
		if (GetClientTeam(attacker) != GetClientTeam(victim)) {
			bool headshot = hEvent.GetBool("headshot", false); //false - default.
			int PieniadzeGracza = GetEntProp(attacker, Prop_Send, "m_iAccount");
			
			if (headshot) {
				SetEntProp(attacker, Prop_Send, "m_iAccount", g_CvarVipHeadShotPieniadze.IntValue + PieniadzeGracza);
			}
			else {
				SetEntProp(attacker, Prop_Send, "m_iAccount", g_CvarVipKillPieniadze.IntValue + PieniadzeGracza);
			}
			
			//if (StrEqual(weapon, "knife"))
			if (StrContains(weapon, "knife", false) != -1 || StrContains(weapon, "bayonet", false) != -1) {
				SetEntProp(attacker, Prop_Send, "m_iAccount", g_CvarVipKillKnifePieniadze.IntValue + PieniadzeGracza);
				
				if (g_CvarWiadomosciChat.BoolValue)
					CPrintToChat(attacker, "%s Jako ELITA otrzymałeś %i$ za zabójstwo z noża.", ELITA_PREFIX, g_CvarVipKillKnifePieniadze.IntValue);
			}
		}
	}
}

public Action Event_BombPlanted(Event hEvent, const char[] chName, bool bDontBroadcast) {
	int client = GetClientOfUserId(hEvent.GetInt("userid"));
	int PieniadzeGracza = GetEntProp(client, Prop_Send, "m_iAccount");
	
	if (IsPlayerVip(client)) {
		if (g_CvarWiadomosciChat.BoolValue)
			CPrintToChat(client, "%s Jako ELITA otrzymałeś %i$ za podłożenie bomby.", ELITA_PREFIX, g_CvarVipPieniadzePodlozenie.IntValue);
		
		SetEntProp(client, Prop_Send, "m_iAccount", g_CvarVipPieniadzePodlozenie.IntValue + PieniadzeGracza);
	}
}

public Action Event_BombDefused(Event hEvent, const char[] chName, bool bDontBroadcast) {
	int client = GetClientOfUserId(hEvent.GetInt("userid"));
	int PieniadzeGracza = GetEntProp(client, Prop_Send, "m_iAccount");
	
	if (IsPlayerVip(client)) {
		if (g_CvarWiadomosciChat.BoolValue)
			CPrintToChat(client, "%s Jako ELITA otrzymałeś %i$ za rozbrojenie bomby.", ELITA_PREFIX, g_CvarVipPieniadzeRozbrojenie.IntValue);
		
		SetEntProp(client, Prop_Send, "m_iAccount", g_CvarVipPieniadzeRozbrojenie.IntValue + PieniadzeGracza);
	}
}

public Action Event_RoundEnd(Event hEvent, const char[] chName, bool bDontBroadcast) {
	int WygranaDruzyna = hEvent.GetInt("winner");
	
	for (int client = 1; client < MAXPLAYERS + 1; client++) {
		if (!IsValidClient(client))
			return;
		
		if (IsPlayerVip(client)) {
			RemoveNades(client);
			
			if (GetClientTeam(client) == WygranaDruzyna)
				SetEntProp(client, Prop_Send, "m_iAccount", g_CvarVipWygranaPieniadze.IntValue + GetEntProp(client, Prop_Send, "m_iAccount"));
		}
	}
}

public Action ShowOnlineVips(int client, int args) {
	if (!g_CvarVipyOnline.BoolValue) {
		PrintToChat(client, "Ta funkcja została wyłączona przez administratora serwera.");
		return Plugin_Handled;
	}
	
	int iCount = 0;
	
	Menu menu = new Menu(Menu_Handler);
	
	menu.SetTitle("Gracze ELITA, którzy aktualnie znajdują się na serwerze");
	
	for (int i = 1; i < MaxClients; i++) {
		if (IsValidClient(i))
		{
			if (IsPlayerVip(i) && IsClientInGame(i)) {
				char format[128];
				char cid[16];
				char name[MAX_NAME_LENGTH + 1];
				
				IntToString(i, cid, sizeof cid);
				GetClientName(i, name, sizeof name);
				
				Format(format, sizeof format, "[ELITA] » %s", name);
				menu.AddItem(cid, format, ITEMDRAW_DISABLED);
				iCount++;
			}
		}
	}
	
	if (iCount == 0) {
		menu.AddItem("ITEMDRAW_DISABLED", "Ups, wygląda na to, że nie ma graczy online, którzy posiadają usługę ELITA.");
	}
	
	menu.ExitButton = true;
	menu.Display(client, 0);
	
	return Plugin_Handled;
}

public int Menu_Handler(Menu menu, MenuAction action, int client, int itemNum) {
	if (action == MenuAction_End)
		CloseHandle(menu);
}

stock void StripAllWeapons(int client) {
	int iEnt;
	for (int i = 0; i <= 2; i++) {
		while ((iEnt = GetPlayerWeaponSlot(client, i)) != -1) {
			RemovePlayerItem(client, iEnt);
			AcceptEntityInput(iEnt, "Kill");
		}
	}
}

stock void RemoveNades(int client) {
	while (RemoveWeaponBySlot(client, 3)) {  }
	for (int i = 0; i < 6; i++)
	SetEntProp(client, Prop_Send, "m_iAmmo", 0, _, g_iaGrenadeOffsets[i]);
}

stock bool RemoveWeaponBySlot(int client, int iSlot) {
	int iEntity = GetPlayerWeaponSlot(client, iSlot);
	
	if (IsValidEdict(iEntity)) {
		RemovePlayerItem(client, iEntity);
		AcceptEntityInput(iEntity, "Kill");
		return true;
	}
	return false;
}

stock bool IsPlayerVip(int client) {
	char flag[10];
	g_cvVipFlag.GetString(flag, sizeof(flag));
	
	if (GetUserFlagBits(client) & ReadFlagString(flag) || GetAdminFlag(GetUserAdmin(client), Admin_Root))
		return true;
	return false;
}

stock bool IsValidClient(int client) {
	if (client <= 0)return false;
	if (client > MaxClients)return false;
	if (!IsClientConnected(client))return false;
	if (IsClientReplay(client))return false;
	if (IsFakeClient(client))return false;
	if (IsClientSourceTV(client))return false;
	return IsClientInGame(client);
} 

 

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Wiadomość wygenerowana automatycznie

 

Problem został rozwiązany

Jeżeli się z tym nie zgadzasz, raportuj ten post

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

×
×
  • Dodaj nową pozycję...