Brum Brum 7 7 Napisano 15 Lipca 2020 Opis: Plugin dodaje niestandardowy status, który sami ustawicie. KOD: Spoiler #include <sdktools> #include <PTaH> #pragma semicolon 1 #pragma newdecls required ArrayList StatusArray; ConVar gc_ShowOnlyPlayerInfo, gc_SortPlayerByUserId; bool g_bHidden[MAXPLAYERS + 1]; public Plugin myinfo = { name = "ADEPT -> Status", description = "Autorski plugin StudioADEPT.net", author = "Brum Brum", version = "1.0", url = "http://www.StudioADEPT.net/forum" }; public void OnPluginStart() { gc_ShowOnlyPlayerInfo = CreateConVar("sm_status_show_only_player_info", "0", "Show only information about player who executes the status command", _, true, 0.0, true, 1.0); gc_SortPlayerByUserId = CreateConVar("sm_status_sort_player_by_userid", "1", "Sort player by their userid", _, true, 0.0, true, 1.0); StatusArray = new ArrayList(512); PTaH(PTaH_ExecuteStringCommandPre, Hook, ExecuteStringCommand); AutoExecConfig(true, "ADEPT_Status"); } public void OnMapStart() { LoadConfig(); } public void OnClientPostAdminCheck(int client) { g_bHidden[client] = false; } public void OnClientDisconnect(int client) { g_bHidden[client] = false; } public void OnMapEnd() { StatusArray.Clear(); for (int i = 1; i <= MaxClients; i++) { if (IsClientConnected(i) && !IsFakeClient(i) && !IsClientSourceTV(i)) { g_bHidden[i] = false; } } } public Action ExecuteStringCommand(int client, char sCommandString[512]) { if (IsValidClient(client)) { static char sMessage[512]; strcopy(sMessage, sizeof(sMessage), sCommandString); TrimString(sMessage); if (StrContains(sMessage, "status ") == 0 || StrEqual(sMessage, "status", false)) { bool playerlist = false; for (int i = 0; i < StatusArray.Length; i++) { char buffer[512]; StatusArray.GetString(i, buffer, sizeof(buffer)); if (StrContains(buffer, "{USERID}") != -1 && !playerlist) { if (!gc_ShowOnlyPlayerInfo.BoolValue) { if (gc_SortPlayerByUserId.BoolValue) { ArrayList sorted = new ArrayList(2); for (int j = 1; j <= MaxClients; j++) { if (IsClientConnected(j) && !IsFakeClient(j) && !IsClientSourceTV(j) && !g_bHidden[j]) { int index = sorted.Push(GetClientUserId(j)); sorted.Set(index, i, 1); } } SortADTArray(sorted, Sort_Ascending, Sort_Integer); for (int j = 0; j < sorted.Length; j++) { buffer = ""; StatusArray.GetString(i, buffer, sizeof(buffer)); Format(buffer, sizeof(buffer), "%s", CheckMessageVariables(buffer, GetClientOfUserId(sorted.Get(j, 0)))); PrintToConsole(client, buffer); } } else { for (int j = 1; j <= MaxClients; j++) { if (IsClientConnected(j) && !IsFakeClient(j) && !IsClientSourceTV(j) && !g_bHidden[client]) { buffer = ""; StatusArray.GetString(i, buffer, sizeof(buffer)); Format(buffer, sizeof(buffer), "%s", CheckMessageVariables(buffer, j)); PrintToConsole(client, buffer); } } } } else { Format(buffer, sizeof(buffer), "%s", CheckMessageVariables(buffer, client)); PrintToConsole(client, buffer); } playerlist = true; continue; } Format(buffer, sizeof(buffer), "%s", CheckMessageVariables(buffer)); PrintToConsole(client, buffer); } return Plugin_Handled; } } return Plugin_Continue; } char CheckMessageVariables(const char[] message, int client = -1) { char buffer[256], sMessage[512], Name[16]; strcopy(sMessage, sizeof(sMessage), message); if (client > -1 && !IsClientConnected(client) && !IsFakeClient(client) && !IsClientSourceTV(client))return sMessage; if (StrContains(sMessage, "{SERVER_IP}", false) != -1) { ReplaceString(sMessage, sizeof(sMessage), "{SERVER_IP}", GetServerIP()); } if (StrContains(sMessage, "{SERVER_NAME}", false) != -1) { GetConVarString(FindConVar("hostname"), buffer, sizeof(buffer)); ReplaceString(sMessage, sizeof(sMessage), "{SERVER_NAME}", buffer); } if (StrContains(sMessage, "{CURRENT_MAP}", false) != -1) { GetCurrentMap(buffer, sizeof(buffer)); ReplaceString(sMessage, sizeof(sMessage), "{CURRENT_MAP}", buffer); } if (StrContains(sMessage, "{PLAYER_COUNT}", false) != -1) { IntToString(GetPlayers(false), buffer, sizeof(buffer)); ReplaceString(sMessage, sizeof(sMessage), "{PLAYER_COUNT}", buffer); } if (StrContains(sMessage, "{CONNECTING_PLAYERS}", false) != -1) { IntToString(GetPlayers(true), buffer, sizeof(buffer)); ReplaceString(sMessage, sizeof(sMessage), "{CONNECTING_PLAYERS}", buffer); } if (StrContains(sMessage, "{MAXPLAYERS}", false) != -1) { IntToString(GetMaxHumanPlayers(), buffer, sizeof(buffer)); ReplaceString(sMessage, sizeof(sMessage), "{MAXPLAYERS}", buffer); } if (StrContains(sMessage, "{USERID}", false) != -1) { IntToString(GetClientUserId(client), buffer, sizeof(buffer)); ReplaceString(sMessage, sizeof(sMessage), "{USERID}", buffer); } if (StrContains(sMessage, "{PLAYERNAME}", false) != -1) { Format(Name, sizeof(Name), "%N", client); ReplaceString(sMessage, sizeof(sMessage), "{PLAYERNAME}", Name); } if (StrContains(sMessage, "{STEAM32}", false) != -1) { GetClientAuthId(client, AuthId_Steam2, buffer, sizeof(buffer)); ReplaceString(sMessage, sizeof(sMessage), "{STEAM32}", buffer); } if (StrContains(sMessage, "{CONNECTION_TIME}", false) != -1) { Format(buffer, sizeof(buffer), "%s", FormatShortTime(RoundToFloor(GetClientTime(client)))); ReplaceString(sMessage, sizeof(sMessage), "{CONNECTION_TIME}", buffer); } if (StrContains(sMessage, "{CLIENT_PING}", false) != -1) { Format(buffer, sizeof(buffer), "%d", GetEntProp(GetPlayerResourceEntity(), Prop_Send, "m_iPing", _, client)); ReplaceString(sMessage, sizeof(sMessage), "{CLIENT_PING}", buffer); } if (StrContains(sMessage, "{CURRENT_DATE}", false) != -1) { FormatTime(buffer, sizeof(buffer), "%d.%m.%Y"); ReplaceString(sMessage, sizeof(sMessage), "{CURRENT_DATE}", buffer); } if (StrContains(sMessage, "{CURRENT_TIME}", false) != -1) { FormatTime(buffer, sizeof(buffer), "%H:%M:%S"); ReplaceString(sMessage, sizeof(sMessage), "{CURRENT_TIME}", buffer); } if (StrContains(sMessage, "{NEXTMAP}", false) != -1) { GetNextMap(buffer, sizeof(buffer)); ReplaceString(sMessage, sizeof(sMessage), "{NEXTMAP}", buffer); } return sMessage; } void LoadConfig() { char inFile[PLATFORM_MAX_PATH]; char line[512]; BuildPath(Path_SM, inFile, sizeof(inFile), "configs/ADEPT_Status.txt"); Handle file = OpenFile(inFile, "rt"); if (file != INVALID_HANDLE) { while (!IsEndOfFile(file)) { if (!ReadFileLine(file, line, sizeof(line))) { break; } TrimString(line); if (strlen(line) > 0) { if (StrContains(line, "//") != -1) continue; StatusArray.PushString(line); } } CloseHandle(file); } } public APLRes AskPluginLoad2(Handle hMyself, bool bLate, char[] sError, int err_max) { CreateNative("Status_HidePlayer", Native_HidePlayer); CreateNative("Status_ShowPlayer", Native_ShowPlayer); CreateNative("Status_IsPlayerHidden", Native_IsPlayerHidden); RegPluginLibrary("Custom_Status"); return APLRes_Success; } public int Native_HidePlayer(Handle plugin, int numParams) { int client = GetNativeCell(1); if (!IsValidClient(client))return; g_bHidden[client] = true; } public int Native_ShowPlayer(Handle plugin, int numParams) { int client = GetNativeCell(1); if (!IsValidClient(client))return; g_bHidden[client] = false; } public int Native_IsPlayerHidden(Handle plugin, int numParams) { int client = GetNativeCell(1); if (!IsValidClient(client))return false; return g_bHidden[client]; } int GetPlayers(bool connecting) { int players; for (int i = 1; i <= MaxClients; i++) { if (g_bHidden[i])continue; if (connecting && IsClientConnected(i) && !IsClientInGame(i))players++; else if (!connecting && IsValidClient(i))players++; } return players; } char FormatShortTime(int time) { char Time[12]; int g_iHours = 0; int g_iMinutes = 0; int g_iSeconds = time; while (g_iSeconds > 3600) { g_iHours++; g_iSeconds -= 3600; } while (g_iSeconds > 60) { g_iMinutes++; g_iSeconds -= 60; } if (g_iHours >= 1)Format(Time, sizeof(Time), "%d:%d:%d", g_iHours, g_iMinutes, g_iSeconds); else if (g_iMinutes >= 1)Format(Time, sizeof(Time), " %d:%d", g_iMinutes, g_iSeconds); else Format(Time, sizeof(Time), " %d", g_iSeconds); return Time; } char GetServerIP() { char NetIP[32]; int pieces[4]; int longip = FindConVar("hostip").IntValue; pieces[0] = (longip >> 24) & 0x000000FF; pieces[1] = (longip >> 16) & 0x000000FF; pieces[2] = (longip >> 8) & 0x000000FF; pieces[3] = longip & 0x000000FF; Format(NetIP, sizeof(NetIP), "%d.%d.%d.%d:%d", pieces[0], pieces[1], pieces[2], pieces[3], FindConVar("hostport").IntValue); return NetIP; } bool IsValidClient(int client) { if (!(1 <= client <= MaxClients) || !IsClientInGame(client) || !IsClientConnected(client) || IsFakeClient(client) || IsClientSourceTV(client)) return false; return true; } Wymagania: PTaH - Najnowsza wersja( https://ptah.zizt.ru/Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! ). INSTALACJA Kompilujemy plik ADEPT_Status.sp następnie wrzucamy go do folderu /addons/sourcemod/plugins Następnie wrzucamy plik konfiguracyjny ADEPT_Status.txt do folderu /addons/sourcemod/configs ADEPT_Status.spHej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! ADEPT_Status.txtHej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! ADEPT_Status.incHej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Thommen Napisano 15 Lipca 2020 Świetny plugin, dzięki! ❤️ Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Gość Napisano 16 Lipca 2020 Niepotrzebny kod w ładowaniu configu (i, totallines). Poza tym plugin wygląda bardzo fajnie, pozdro 🙂 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
y0ung Napisano 16 Lipca 2020 kozak 😄 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
szoguun Napisano 16 Lipca 2020 Fajna sprawa Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
chomik Napisano 17 Lipca 2020 fajny bajer +rep Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Danski Napisano 18 Lipca 2020 Spoiler #———————————————————————————————————————————————————————————————————————— # _____ _ _ _ ___ ______ _____ ______ _____ # / ___|| | | |(_) / _ \ | _ \| ___|| ___ \|_ _| # \ `--. | |_ _ _ __| | _ ___ / /_\ \| | | || |__ | |_/ / | | # `--. \| __|| | | | / _` || | / _ \ | _ || | | || __| | __/ | | # /\__/ /| |_ | |_| || (_| || || (_) || | | || |/ / | |___ | | | | # \____/ \__| \__,_| \__,_||_| \___/ \_| |_/|___/ \____/ \_| \_/ # # # Nazwa serwera: # Właściciel serwera: Brum Brum # Forum: StudioADEPT.net/forum # IP Serwera: # Liczba graczy: 4(1)/16 # Aktualna data i godzina: 18.07.2020 20:01:52 # Akutalna mapa: am_aztec2 # Następna mapa: am_grass2_64 ————————————————————————————————————————————————————————————————————————— # userid | Nick gracza | SteamID | Czas połączenia | ping # 3 [DENTY]><HAPPY>< STEAM_1:0:120462579 13:20 15 # 3 [DENTY]><HAPPY>< STEAM_1:0:120462579 13:20 15 # 3 [DENTY]><HAPPY>< STEAM_1:0:120462579 13:20 15 # 3 [DENTY]><HAPPY>< STEAM_1:0:120462579 13:20 15 # 3 [DENTY]><HAPPY>< STEAM_1:0:120462579 13:20 15 1 osobę tylko pokazuje PTAH mam najnowszego tylko ja mam taki problem? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Brum Brum 1 Napisano 19 Lipca 2020 19 godzin temu, Danski napisał: Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! Pokaż ukrytą zawartość #———————————————————————————————————————————————————————————————————————— # _____ _ _ _ ___ ______ _____ ______ _____ # / ___|| | | |(_) / _ \ | _ \| ___|| ___ \|_ _| # \ `--. | |_ _ _ __| | _ ___ / /_\ \| | | || |__ | |_/ / | | # `--. \| __|| | | | / _` || | / _ \ | _ || | | || __| | __/ | | # /\__/ /| |_ | |_| || (_| || || (_) || | | || |/ / | |___ | | | | # \____/ \__| \__,_| \__,_||_| \___/ \_| |_/|___/ \____/ \_| \_/ # # # Nazwa serwera: # Właściciel serwera: Brum Brum # Forum: StudioADEPT.net/forum # IP Serwera: # Liczba graczy: 4(1)/16 # Aktualna data i godzina: 18.07.2020 20:01:52 # Akutalna mapa: am_aztec2 # Następna mapa: am_grass2_64 ————————————————————————————————————————————————————————————————————————— # userid | Nick gracza | SteamID | Czas połączenia | ping # 3 [DENTY]><HAPPY>< STEAM_1:0:120462579 13:20 15 # 3 [DENTY]><HAPPY>< STEAM_1:0:120462579 13:20 15 # 3 [DENTY]><HAPPY>< STEAM_1:0:120462579 13:20 15 # 3 [DENTY]><HAPPY>< STEAM_1:0:120462579 13:20 15 # 3 [DENTY]><HAPPY>< STEAM_1:0:120462579 13:20 15 1 osobę tylko pokazuje PTAH mam najnowszego tylko ja mam taki problem? Skorzystaj z wersji na aliedach, tutaj na razie nie mam jak zaktualizować https://forums.alliedmods.net/showthread.php?p=2710354Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Brum Brum 1 Napisano 31 Lipca 2020 @UPDATE 1. Dodano limit znaków nicku gracza do 16 (jeśli chcesz zmienić na więcej znaków edytuj 103 linie). To nadal nie wygląda zbyt dobrze, ale lepiej (jeśli wiesz jak mogę to zrobić lepiej napisz tutaj <3) (Chodzi o odstęp między nickiem gracza, a steamid screenHej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!) 2. Dodano convar do sortowania graczy po userid (rosnąco) 3. Dodano native do ukrywania/pokazywania gracza ze statusu. Przydatne z pluginem admin stealthHej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!, gdy admin jest niewidoczny w tabeli wtedy można go ukryć ze statusu, ale musisz najpierw dodać tego native'a do tego pluginu. Oczywiście poprawiono błędy, które występowały w tej wersji na forum. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
VestSmart 1 Napisano 31 Lipca 2020 2 godziny temu, Brum Brum napisał: 1. Dodano limit znaków nicku gracza do 16 (jeśli chcesz zmienić na więcej znaków edytuj 103 linie). To nadal nie wygląda zbyt dobrze, ale lepiej (jeśli wiesz jak mogę to zrobić lepiej napisz tutaj <3) (Chodzi o odstęp między nickiem gracza, a steamid screenHej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!) Przenieś kolumnę "Nick gracza" na koniec tabeli i pozbędziesz się problemu. 😄 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Brum Brum 1 Napisano 31 Lipca 2020 43 minuty temu, VestSmart napisał: Przenieś kolumnę "Nick gracza" na koniec tabeli i pozbędziesz się problemu. 😄 To też jest rozwiązanie 😄 Jednak będę próbował też jakoś to ogarnąć 😉 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Jesoen Napisano 27 Sierpnia 2020 W dniu 15.07.2020 o 21:50, Brum Brum napisał: Kompilujemy plik ADEPT_Status.sp następnie wrzucamy go do folderu /addons/sourcemod/plugins Nie mogę skompilować pliku 😕 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Shadow Napisano 27 Sierpnia 2020 (edytowane) nie posiadasz includa Ptah w scripting/include Edytowane 27 Sierpnia 2020 przez Shadow Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
y0ung Napisano 27 Sierpnia 2020 5 godzin temu, Jesoen napisał: Nie mogę skompilować pliku 😕 ADEPT_Status.smxHej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
szogun Napisano 27 Sierpnia 2020 Kompiluj lokalnie, ewentualnie na https://spider.limetech.io/ Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!dodając przy okazji inc ptah Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
gejmer Napisano 2 Grudnia 2020 Wgrałem wszystko itd brak jakich kolwiek errorlogow i gdy wpisuje status w konsoli wyskuje Conected ipserwera Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Brum Brum 1 Napisano 4 Grudnia 2020 W dniu 3.12.2020 o 00:45, gejmer napisał: Wgrałem wszystko itd brak jakich kolwiek errorlogow i gdy wpisuje status w konsoli wyskuje Conected ipserwera A czy plik tekstowy został wgrany co folderu configs? Jeżeli tak czy nie jest on pusty? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
gejmer 1 Napisano 4 Grudnia 2020 @Brum Brum Faktycznie zamiast do confing wrzuciłem do translations wszystko działa. Przepraszam moja pomyłka Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Angel 2 Napisano 27 Grudnia 2020 Gdyby ktoś szukał w jaki sposób zrobić własny napis z znaków to podrzucam wam generator Wybieracie czcionkę, wpisujecie frazę i generujecie 😉 https://ascii.adgraf.net/napisy.phpHej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach