Elite Napisano 22 Stycznia Cześć, Nie wiem jak zadać to pytanie może pokażę o co mi chodzi. Mam plugin, który zmienia tag w tabeli jak wybierzemy jakąś opcje w menu. Spoiler #include <sourcemod> #include <sdktools> #include <sdkhooks> #include <cstrike> #include <multicolors> public void OnPluginStart() { RegAdminCmd("sm_tag", SetTag_Menu, ADMFLAG_ROOT); RegAdminCmd("sm_tags", SetTag_Menu, ADMFLAG_ROOT); RegAdminCmd("sm_tagi", SetTag_Menu, ADMFLAG_ROOT); RegAdminCmd("sm_tagmenu", SetTag_Menu, ADMFLAG_ROOT); } public Action SetTag_Menu(int client, int args) { char buffer[128]; Format(buffer, sizeof(buffer), "Siemka, %N\nWybierz jaki chcesz mieć TAG\n ", client); Menu menu = new Menu(TagMenu_Handler); menu.SetTitle(buffer); menu.AddItem("", "Właściciel |"); menu.AddItem("", "♫ Opiekun | "); menu.AddItem("", "☯ Admin | "); menu.AddItem("", "✘ VIP | "); menu.AddItem("", "✔ Gracz | "); menu.Display(client, MENU_TIME_FOREVER); } public int TagMenu_Handler(Menu menu, MenuAction action, int client, int pos){ if (action == MenuAction_End) { delete menu; } switch (action) { case MenuAction_Select: { switch (pos) { case 0:OwnerTag(client); case 1:OpiekunTag(client); case 2:AdminTag(client); case 3:VIPTag(client); case 4:PlayerTag(client); } } case MenuAction_End:delete menu; } } void OwnerTag(int client) { CS_SetClientClanTag(client, "Właściciel |"); CPrintToChat(client, "{yellow}Wybrałeś TAG: {orchid}Właściciel |"); } void OpiekunTag(int client) { CS_SetClientClanTag(client, "♫ Opiekun | "); CPrintToChat(client, "{yellow}Wybrałeś TAG: {orchid}♫ Opiekun | "); } void AdminTag(int client) { CS_SetClientClanTag(client, "☯ Admin | "); CPrintToChat(client, "{yellow}Wybrałeś TAG: {orchid}☯ Admin | "); } void VIPTag(int client) { CS_SetClientClanTag(client, "✘ VIP | "); CPrintToChat(client, "{yellow}Wybrałeś TAG: {orchid}✘ VIP | "); } void PlayerTag(int client) { CS_SetClientClanTag(client, "✔ Gracz | "); CPrintToChat(client, "{yellow}Wybrałeś TAG: {orchid}✔ Gracz | "); } Chciałbym też, żeby po wybraniu pozycji zmieniało prefix na chacie. Chciałem skorzystać z pluginu magneta, który pisał w odcinku. I tak jak pisałem nie wiem jak to opisać MAGNET stworzył funkcję ProcessChat. Tylko ja chciałbym ją wykorzystać w funkcji, która otwiera menu. Jak napisałem niezrozumiale to napiszcie postaram się to lepiej wytłumaczyć. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Grafit Napisano 22 Stycznia Chcesz aby byl rowniez prefix na chat, tak? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Elite Napisano 22 Stycznia Teraz, Grafit napisał: Chcesz aby byl rowniez prefix na chat, tak? Tak Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Maroxx Napisano 22 Stycznia możesz to zrobić chatprocessorem public Action CP_OnChatMessage(int& author, ArrayList recipients, char[] flagstring, char[] name, char[] message, bool& processcolors, bool& removecolors) { Format(name, MAXLENGTH_NAME, "{red}%s", name); Format(message, MAXLENGTH_MESSAGE, "{blue}%s", message); return Plugin_Changed; } wystarczy dodać odpowiednie warunki Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Elite Napisano 22 Stycznia @Maroxx Średnio rozumiem ;-; Mam funkcje void OwnerTag(int client) { CS_SetClientClanTag(client, "Właściciel |"); CPrintToChat(client, "{yellow}Wybrałeś TAG: {orchid}Właściciel |"); } I do tego chciałbym dopisać kod, aby na chacie był prefix. Z chatprocessora nigdy nie korzystałem więc jak mógłbyś wytłumaczyć jak to zrobić byłbym wdzięczny. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Grafit Napisano 22 Stycznia (edytowane) #include <sourcemod> #include <sdktools> #include <sdkhooks> #include <cstrike> #include <multicolors> #include <chat-processor> bool owner[MAXPLAYERS + 1] = {true, ...}; public void OnPluginStart() { RegAdminCmd("sm_tag", SetTag_Menu, ADMFLAG_ROOT); RegAdminCmd("sm_tags", SetTag_Menu, ADMFLAG_ROOT); RegAdminCmd("sm_tagi", SetTag_Menu, ADMFLAG_ROOT); RegAdminCmd("sm_tagmenu", SetTag_Menu, ADMFLAG_ROOT); } public Action SetTag_Menu(int client, int args) { char buffer[128]; Format(buffer, sizeof(buffer), "Siemka, %N\nWybierz jaki chcesz mieć TAG\n ", client); Menu menu = new Menu(TagMenu_Handler); menu.SetTitle(buffer); menu.AddItem("", "Właściciel |"); menu.AddItem("", "♫ Opiekun | "); menu.AddItem("", "☯ Admin | "); menu.AddItem("", "✘ VIP | "); menu.AddItem("", "✔ Gracz | "); menu.Display(client, MENU_TIME_FOREVER); } public int TagMenu_Handler(Menu menu, MenuAction action, int client, int pos){ switch (action) { case MenuAction_Select: { switch (pos) { case 0:OwnerTag(client); case 1:OpiekunTag(client); case 2:AdminTag(client); case 3:VIPTag(client); case 4:PlayerTag(client); } } case MenuAction_End: delete menu; } } public Action CP_OnChatMessage(int& author, ArrayList recipients, char[] flagstring, char[] name, char[] message, bool& processcolors, bool& removecolors, int client) { char Name[MAX_NAME_LENGTH] char Message[512]; for (int i = 1; i < MAXPLAYERS; i++) { if (!IsValidClient(i)) continue; if (owner[client]) { CPrintToChat(i, " {orchid}Wlasciciel {teamcolor} %s {deafult}: %s", Name, Message); return Plugin_Handled; } } Format(Name, sizeof(Name), "%s", name); Format(Message, sizeof(Message), "{blue}%s", message); return Plugin_Changed; } void OwnerTag(int client) { CS_SetClientClanTag(client, "Właściciel |"); CPrintToChat(client, "{yellow}Wybrałeś TAG: {orchid}Właściciel |"); } void OpiekunTag(int client) { CS_SetClientClanTag(client, "♫ Opiekun | "); CPrintToChat(client, "{yellow}Wybrałeś TAG: {orchid}♫ Opiekun | "); } void AdminTag(int client) { CS_SetClientClanTag(client, "☯ Admin | "); CPrintToChat(client, "{yellow}Wybrałeś TAG: {orchid}☯ Admin | "); } void VIPTag(int client) { CS_SetClientClanTag(client, "✘ VIP | "); CPrintToChat(client, "{yellow}Wybrałeś TAG: {orchid}✘ VIP | "); } void PlayerTag(int client) { CS_SetClientClanTag(client, "✔ Gracz | "); CPrintToChat(client, "{yellow}Wybrałeś TAG: {orchid}✔ Gracz | "); } 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); } nie wiem czy takie cos ma szanse dzialac, ale zawsze mozna sprobowac 😛 (dla ownera prefix tylko) include https://forums.alliedmods.net/showthread.php?t=286913Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! @Elite mozna to w prosty sposob zmienic, jak mozesz to sprawdz i daj znac czy dziala, jezeli bedzie to wysle wersje z prefixami do kazdej rangi Edytowane 22 Stycznia przez Grafit Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Elite Napisano 22 Stycznia 1 minutę temu, Grafit napisał: nie wiem czy takie cos ma szanse dzialac, ale mozesz sprobowac 😛 (dla ownera prefix tylko) no właśnie a tak jak pisałem wyżej do każdego z osoba chciałem, ale dzięki tak czy siak :)). Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Elite Napisano 22 Stycznia @Grafit n_tabletags.sp(47) : error 181: function argument named 'client' differs from prototype Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Grafit Napisano 22 Stycznia (edytowane) 52 minuty temu, Elite napisał: @Grafit n_tabletags.sp(47) : error 181: function argument named 'client' differs from prototype #include <sourcemod> #include <sdktools> #include <sdkhooks> #include <cstrike> #include <multicolors> #include <chat-processor> bool owner[MAXPLAYERS + 1] = {true, ...}; public void OnPluginStart() { RegAdminCmd("sm_tag", SetTag_Menu, ADMFLAG_ROOT); RegAdminCmd("sm_tags", SetTag_Menu, ADMFLAG_ROOT); RegAdminCmd("sm_tagi", SetTag_Menu, ADMFLAG_ROOT); RegAdminCmd("sm_tagmenu", SetTag_Menu, ADMFLAG_ROOT); } public Action SetTag_Menu(int client, int args) { char buffer[128]; Format(buffer, sizeof(buffer), "Siemka, %N\nWybierz jaki chcesz mieć TAG\n ", client); Menu menu = new Menu(TagMenu_Handler); menu.SetTitle(buffer); menu.AddItem("", "Właściciel |"); menu.AddItem("", "♫ Opiekun | "); menu.AddItem("", "☯ Admin | "); menu.AddItem("", "✘ VIP | "); menu.AddItem("", "✔ Gracz | "); menu.Display(client, MENU_TIME_FOREVER); } public int TagMenu_Handler(Menu menu, MenuAction action, int client, int pos){ switch (action) { case MenuAction_Select: { switch (pos) { case 0:OwnerTag(client); case 1:OpiekunTag(client); case 2:AdminTag(client); case 3:VIPTag(client); case 4:PlayerTag(client); } } case MenuAction_End: delete menu; } } public Action CP_OnChatMessage(int& author, ArrayList recipients, char[] flagstring, char[] name, char[] message, bool& processcolors, bool& removecolors) { char Name[MAX_NAME_LENGTH] char Message[512]; Format(Name, sizeof(Name), "%s", name); Format(Message, sizeof(Message), "{blue}%s", message); if (owner(author)) { CPrintToChatAll( " {orchid}Wlasciciel {teamcolor} %s {deafult}: %s", Name, Message); return Plugin_Handled; } return Plugin_Changed; } void OwnerTag(int client) { CS_SetClientClanTag(client, "Właściciel |"); CPrintToChat(client, "{yellow}Wybrałeś TAG: {orchid}Właściciel |"); } void OpiekunTag(int client) { CS_SetClientClanTag(client, "♫ Opiekun | "); CPrintToChat(client, "{yellow}Wybrałeś TAG: {orchid}♫ Opiekun | "); } void AdminTag(int client) { CS_SetClientClanTag(client, "☯ Admin | "); CPrintToChat(client, "{yellow}Wybrałeś TAG: {orchid}☯ Admin | "); } void VIPTag(int client) { CS_SetClientClanTag(client, "✘ VIP | "); CPrintToChat(client, "{yellow}Wybrałeś TAG: {orchid}✘ VIP | "); } void PlayerTag(int client) { CS_SetClientClanTag(client, "✔ Gracz | "); CPrintToChat(client, "{yellow}Wybrałeś TAG: {orchid}✔ Gracz | "); } 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); } moze to? lub to #include <sourcemod> #include <sdktools> #include <sdkhooks> #include <cstrike> #include <multicolors> #include <chat-processor> bool owner[MAXPLAYERS + 1] = {true, ...}; public void OnPluginStart() { RegAdminCmd("sm_tag", SetTag_Menu, ADMFLAG_ROOT); RegAdminCmd("sm_tags", SetTag_Menu, ADMFLAG_ROOT); RegAdminCmd("sm_tagi", SetTag_Menu, ADMFLAG_ROOT); RegAdminCmd("sm_tagmenu", SetTag_Menu, ADMFLAG_ROOT); } public Action SetTag_Menu(int client, int args) { char buffer[128]; Format(buffer, sizeof(buffer), "Siemka, %N\nWybierz jaki chcesz mieć TAG\n ", client); Menu menu = new Menu(TagMenu_Handler); menu.SetTitle(buffer); menu.AddItem("", "Właściciel |"); menu.AddItem("", "♫ Opiekun | "); menu.AddItem("", "☯ Admin | "); menu.AddItem("", "✘ VIP | "); menu.AddItem("", "✔ Gracz | "); menu.Display(client, MENU_TIME_FOREVER); } public int TagMenu_Handler(Menu menu, MenuAction action, int client, int pos){ switch (action) { case MenuAction_Select: { switch (pos) { case 0:OwnerTag(client); case 1:OpiekunTag(client); case 2:AdminTag(client); case 3:VIPTag(client); case 4:PlayerTag(client); } } case MenuAction_End: delete menu; } } public Action CP_OnChatMessage(int& author, ArrayList recipients, char[] flagstring, char[] name, char[] message, bool& processcolors, bool& removecolors) { Format(name, MAXLENGTH_NAME, "}%s", name); Format(message, MAXLENGTH_MESSAGE, "%s", message); return Plugin_Changed; } public void CP_OnChatMessagePost(int author, ArrayList recipients, const char[] flagstring, const char[] formatstring, const char[] name, const char[] message, bool processcolors, bool removecolors) { if (owner[author]) { CPrintToChatAll("[Wlasciciel] %s: %s ", name, message); } else { CPrintToChatAll("[Gracz] %s: %s ", name, message); } } void OwnerTag(int client) { CS_SetClientClanTag(client, "Właściciel |"); CPrintToChat(client, "{yellow}Wybrałeś TAG: {orchid}Właściciel |"); owner[client] = true; } void OpiekunTag(int client) { CS_SetClientClanTag(client, "♫ Opiekun | "); CPrintToChat(client, "{yellow}Wybrałeś TAG: {orchid}♫ Opiekun | "); owner = false; } void AdminTag(int client) { CS_SetClientClanTag(client, "☯ Admin | "); CPrintToChat(client, "{yellow}Wybrałeś TAG: {orchid}☯ Admin | "); owner = false; } void VIPTag(int client) { CS_SetClientClanTag(client, "✘ VIP | "); CPrintToChat(client, "{yellow}Wybrałeś TAG: {orchid}✘ VIP | "); owner = false; } void PlayerTag(int client) { CS_SetClientClanTag(client, "✔ Gracz | "); CPrintToChat(client, "{yellow}Wybrałeś TAG: {orchid}✔ Gracz | "); owner = 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); } jak zadne z tych to nie umiem XD btw wiem ze troche slabe jest to z owner = true ciaglym ustawianiem ale inaczej nie wiem jak mozna takie cos zrobic @Elite Edytowane 22 Stycznia przez Grafit Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
ogbudowa 2 Napisano 23 Stycznia (edytowane) Cytat #include <sourcemod> #include <multicolors> #include <cstrike> #define stoi StringToInt char TAGS[][32] = {"Wlasciciel", "Opiekun", "Admin", "VIP", "Gracz"}; char alias[][32] = {"sm_tag", "sm_tagi", "sm_tagmenu", "sm_tags"}; enum struct Player { char tag[32]; } Player g_Player[MAXPLAYERS + 1]; public OnPluginStart() { for (int i = 0 ; i < sizeof(alias); i++) RegAdminCmd(alias[i], TAG, ADMFLAG_ROOT); } public Action TAG(int client, int args) { if (!IsValid(client)) return Plugin_Handled; Menu menu = new Menu(Menu_Handler); menu.SetTitle("TAGI:"); for (int i = 0 ; i < sizeof(TAGS); i++) { char index[32]; IntToString(i, index, sizeof(index)) menu.AddItem(index, TAGS[i]); } menu.Display(client, MENU_TIME_FOREVER); return Plugin_Handled; } int Menu_Handler(Menu menu, MenuAction action, int client, int pos) { if (action == MenuAction_Select) { char index[32]; GetMenuItem(menu, pos, index, sizeof(index)); g_Player[client].tag = TAGS[stoi(index)]; PrintToChat(client, " \x0F[TAGS]\x01 Wybrales TAG: \x0F%s!\x01", TAGS[stoi(index)]); Format(index, sizeof(index), "[%s]", TAGS[stoi(index)]); CS_SetClientClanTag(client, index); } return 0; } public Action CP_OnChatMessage(int& author, ArrayList recipients, char[] flagstring, char[] name, char[] message, bool& processcolors, bool& removecolors) { if (strlen(g_Player[author].tag) > 0) { Format(name, MAX_NAME_LENGTH, " \x07[%s] \x03 %s", g_Player[author].tag, name); return Plugin_Changed; } return Plugin_Continue; } bool IsValid(int client) { if (!IsClientConnected(client) || !IsClientInGame(client) || IsFakeClient(client)) return false; return true; } Edytowane 23 Stycznia przez ogbudowa . Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Elite 1 Napisano 23 Stycznia @ogbudowa Wow dzięki, ale sprawdze jutro bo już nie mogę. @Grafit sory, że nie odpisywałem na to, ale mam dużo roboty z serwerem. Tak czy siak dzięki. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach