LOL0105
|
Дата: Воскресенье, 19.05.2019, 09:19:46 | Сообщение # 1 |
|
Сообщений: 1
Репутация: 0 [ +/- ]
|
|
Помогите пожалуйста КАК СДЕЛАТЬ ЧТОБЫ ПИСАЛО ЛОГ ?
}
}
public OnConVarChanged_AdminFlag_Hide(Handle:convar, const String:oldValue[], const String:newValue[]) { g_iAdminFlag_Hide = ReadFlagString(newValue); }
public OnConVarChanged_AdminFlag_SeeAll(Handle:convar, const String:oldValue[], const String:newValue[]) { g_iAdminFlag_SeeAll = ReadFlagString(newValue); }
public OnConVarChanged_AdminSelection(Handle:convar, const String:oldValue[], const String:newValue[]) { g_bAdminSelection = GetConVarBool(convar); }
public OnConVarChanged_SendToChat(Handle:convar, const String:oldValue[], const String:newValue[]) { g_bSendToChat = GetConVarBool(convar); }
public OnConVarChanged_ShowCmds(Handle:convar, const String:oldValue[], const String:newValue[]) { g_bShowCmds = GetConVarBool(convar); }
public OnConVarChanged_SendAll(Handle:convar, const String:oldValue[], const String:newValue[]) { g_bSendAll = GetConVarBool(convar); }
//public Action:Cmd_ShowAdmins(client, args) Cmd_ShowAdmins(client) { if (g_bSendToChat) { new iCount = 0; decl String:sName[MAXPLAYERS + 1][64]; for (new i = 1; i <= MaxClients; i++) { if (IsClientInGame(i) && GetUserFlagBits(i) & (ADMFLAG_GENERIC + ADMFLAG_ROOT)) { if (!(g_iAdminFlag_SeeAll && GetUserFlagBits(client) & g_iAdminFlag_SeeAll)) { if (g_iAdminFlag_Hide && GetUserFlagBits(i) & g_iAdminFlag_Hide) continue; }
GetClientName(i, sName[iCount], sizeof(sName[])); iCount++; } }
decl String:sBuffer[256]; ImplodeStrings(sName, iCount, ", ", sBuffer, sizeof(sBuffer)); if (iCount) { CPrintToChat(client, "%s %t", g_sPrefix, "Админы онлайн в чате", sBuffer); } else CPrintToChat(client, "%s %t", g_sPrefix, "Админов нет на сервере"); } else Menu_ShowAdmins(client); }
Menu_ShowAdmins(client) { if (!DisplayMenu(Handle:CreateMenu_ShowAdmins(client), client, MENU_TIME_FOREVER)) { CPrintToChat(client, "%s %t", g_sPrefix, "Админов нет на сервере"); }
ClearVariables(client); }
Handle:CreateMenu_ShowAdmins(client) { new Handle:hMenu = CreateMenu(Handler_ShowAdmins); SetMenuTitle(hMenu, "☆ Администрация online ☆\n%s \n", g_bAdminSelection ? "Выберите администратора...\n" : "");
decl String:sUserId[16], String:sName[64]; for (new i = 1; i <= MaxClients; i++) { if (IsClientInGame(i) && GetUserFlagBits(i) & (ADMFLAG_GENERIC + ADMFLAG_ROOT)) { if (!(g_iAdminFlag_SeeAll && GetUserFlagBits(client) & g_iAdminFlag_SeeAll)) { if (g_iAdminFlag_Hide && GetUserFlagBits(i) & g_iAdminFlag_Hide) continue; }
IntToString(GetClientUserId(i), sUserId, sizeof(sUserId)); GetClientName(i, sName, sizeof(sName)); AddMenuItem(hMenu, sUserId, sName, g_bAdminSelection ? ITEMDRAW_DEFAULT : ITEMDRAW_DISABLED); } }
return hMenu; }
public Handler_ShowAdmins(Handle:menu, MenuAction:action, client, option) { switch (action) { case MenuAction_End: CloseHandle(menu);
case MenuAction_Select: { decl String:sUserId[16]; GetMenuItem(menu, option, sUserId, sizeof(sUserId)); new target = GetClientOfUserId(StringToInt(sUserId));
if (target > 0) { DisplayMenu(Handle:CreateMenu_AdminSelected(target), client, MENU_TIME_FOREVER); } else CPrintToChat(client, "%s %t", g_sPrefix, "Админа нет на сервере"); } } }
Handle:CreateMenu_AdminSelected(target) { new Handle:hMenu = CreateMenu(Handler_AdminSelected); SetMenuTitle(hMenu, "Вы выбрали админа: %N\n \n", target);
decl String:sInfo[16]; IntToString(GetClientUserId(target), sInfo, sizeof(sInfo)); AddMenuItem(hMenu, sInfo, "Написать личное сообщение"); AddMenuItem(hMenu, sInfo, "Админ нарушил правила"); AddMenuItem(hMenu, sInfo, "Показать нарушителя"); AddMenuItem(hMenu, sInfo, "Оставить положительный отзыв"); AddMenuItem(hMenu, sInfo, "Оставить отрицательный отзыв");
SetMenuExitBackButton(hMenu, true);
return hMenu; }
public Handler_AdminSelected(Handle:menu, MenuAction:action, client, option) { switch (action) { case MenuAction_End: CloseHandle(menu);
case MenuAction_Cancel: if (option == MenuCancel_ExitBack) Menu_ShowAdmins(client);
case MenuAction_Select: { decl String:sUserId[16]; GetMenuItem(menu, option, sUserId, sizeof(sUserId)); new iUserId = StringToInt(sUserId);
if (GetClientOfUserId(iUserId) > 0) { if (option == 2) { if (!DisplayMenu(Handle:CreateMenu_ShowPlayers(client), client, MENU_TIME_FOREVER)) { CPrintToChat(client, "%s %t", g_sPrefix, "Нет игроков"); } } else { g_iMessageType[client] = option; CPrintToChat(client, "%s %t", g_sPrefix, "Создание сообщения", g_sMessageType[option]); CPrintToChat(client, "%s %t", g_sPrefix, "Команды отмены"); }
g_iAdmin[client] = iUserId; } else CPrintToChat(client, "%s %t", g_sPrefix, "Админа нет на сервере"); } } }
Handle:CreateMenu_ShowPlayers(client) { new Handle:hMenu = CreateMenu(Handler_ShowPlayers); SetMenuTitle(hMenu, "Выберите игрока\n \n");
decl String:sUserId[16], String:sName[64]; for (new i = 1; i <= MaxClients; i++) { if (IsClientInGame(i)) { IntToString(GetClientUserId(i), sUserId, sizeof(sUserId)); GetClientName(i, sName, sizeof(sName)); AddMenuItem(hMenu, sUserId, sName, (client == i || GetUserFlagBits(i) & (ADMFLAG_GENERIC + ADMFLAG_ROOT)) ? ITEMDRAW_DISABLED : ITEMDRAW_DEFAULT); } }
SetMenuExitBackButton(hMenu, true);
return hMenu; }
public Handler_ShowPlayers(Handle:menu, MenuAction:action, client, option) { switch (action) { case MenuAction_End: CloseHandle(menu);
case MenuAction_Cancel: if (option == MenuCancel_ExitBack) Menu_ShowAdmins(client);
case MenuAction_Select: { decl String:sUserId[16]; GetMenuItem(menu, option, sUserId, sizeof(sUserId)); new iUserId = StringToInt(sUserId); new target = GetClientOfUserId(iUserId);
if (target > 0) { new admin = GetClientOfUserId(g_iAdmin[client]); if (admin > 0) { g_iMessageType[client] = 2; CPrintToChat(client, "%s %t", g_sPrefix, "Создание сообщения", g_sMessageType[2]); CPrintToChat(client, "%s %t", g_sPrefix, "Команды отмены"); g_iPlayer[client] = iUserId; } else CPrintToChat(client, "%s %t", g_sPrefix, "Админа нет на сервере"); } else CPrintToChat(client, "%s %t", g_sPrefix, "Игрока нет на сервере"); } } }
Handle:CreateMenu_Message(String:sText[], iMessageType, target, client) { new Handle:hMenu = CreateMenu(Handler_Message); decl String:sPlayer[128]; new player; if (g_iPlayer[client] > 0 && (player = GetClientOfUserId(g_iPlayer[client])) > 0) { //GetClientName(player, sName, sizeof(sName)); FormatEx(sPlayer, sizeof(sPlayer), "Вы выбрали игрока: %N\n", player); } else sPlayer[0] = 0;
SetMenuTitle(hMenu, "[ %s ]\n%sВы выбрали админа: %N\n \nСообщение:\n%s\n \n", g_sMessageType[iMessageType], sPlayer, target, sText);
decl String:sInfo[2]; IntToString(iMessageType, sInfo, sizeof(sInfo)); AddMenuItem(hMenu, sInfo, "Изменить"); AddMenuItem(hMenu, sText, "Отправить");
SetMenuExitBackButton(hMenu, true);
return hMenu; }
public Action:OnClientSayCommand(client, const String:command[], const String:sArgs[]) { if (client > 0 && IsClientInGame(client)) { if (g_iMessageType[client] > -1) { if (strcmp(sArgs, "!отмена", false) == 0 || strcmp(sArgs, "!cancel", false) == 0) { CPrintToChat(client, "%s %t", g_sPrefix, "Отмена", g_sMessageType[g_iMessageType[client]]);
ClearVariables(client);
return Plugin_Stop; }
if (g_iAdmin[client] > 0) { new target = GetClientOfUserId(g_iAdmin[client]); if (target > 0) { if (g_iPlayer[client] > 0 && !(GetClientOfUserId(g_iPlayer[client]) > 0)) { g_iPlayer[client] = -1; CPrintToChat(client, "%s %t", g_sPrefix, "Игрока нет на сервере"); return Plugin_Stop; }
decl String:sText[256]; strcopy(sText, sizeof(sText), sArgs); DisplayMenu(Handle:CreateMenu_Message(sText, g_iMessageType[client], target, client), client, MENU_TIME_FOREVER); } else { CPrintToChat(client, "%s %t", g_sPrefix, "Админа нет на сервере"); g_iAdmin[client] = -1; } }
g_iMessageType[client] = -1;
return Plugin_Stop; }
if (strcmp(sArgs, "!admins", false) == 0 || strcmp(sArgs, "!админы", false) == 0 || strcmp(sArgs, "!админлист", false) == 0 || strcmp(sArgs, "!adminlist", false) == 0) { Cmd_ShowAdmins(client);
return g_bShowCmds ? Plugin_Continue : Plugin_Handled; } } return Plugin_Continue; }
public Handler_Message(Handle:menu, MenuAction:action, client, option) { switch (action) { case MenuAction_End: CloseHandle(menu);
case MenuAction_Cancel: if (option == MenuCancel_ExitBack) Menu_ShowAdmins(client);
case MenuAction_Select: { new target = GetClientOfUserId(g_iAdmin[client]); if (target > 0) { new player = 0; if (g_iPlayer[client] > 0 && !((player = GetClientOfUserId(g_iPlayer[client])) > 0)) { g_iPlayer[client] = -1; CPrintToChat(client, "%s %t", g_sPrefix, "Игрока нет на сервере"); return; }
decl String:sMessageType[2]; GetMenuItem(menu, 0, sMessageType, sizeof(sMessageType)); new iMessageType = StringToInt(sMessageType);
if (option == 0) { g_iMessageType[client] = iMessageType; CPrintToChat(client, "%s %t", g_sPrefix, "Создание сообщения", g_sMessageType[iMessageType]); CPrintToChat(client, "%s %t", g_sPrefix, "Команды отмены"); } else { decl String:sText[256]; GetMenuItem(menu, 1, sText, sizeof(sText)); SendMessage(client, target, iMessageType, sText, player); } } else CPrintToChat(client, "%s %t", g_sPrefix, "Админа нет на сервере"); } } }
SendMessage(client, target, const iMessageType, const String:sText[], player) { switch (iMessageType) { case 0: { CPrintToChat(target, "%t", "Личное сообщение", client, sText); LogToFile(g_sLogFile, "[Личное Сообщение] %L отправил администратору %L сообщение: %s", client, target, sText); } case 1: { LogToFile(g_sLogFile, "[Нарушение Администратора] %L написал о нарушении администратора %L: %s", client, target, sText); } case 2: { if (g_bSendAll) { PrintToAdmins("%s %t", g_sPrefix, "Нарушение игрока", client, player, sText); } else CPrintToChat(target, "%s %t", g_sPrefix, "Нарушение игрока", client, player, sText); LogToFile(g_sLogFile, "[Нарушение Игрока] %L написал о нарушении игрока %L администратору %L: %s", client, player, target, sText); } case 3: { LogToFile(g_sLogFile, "[Положительный Отзыв] %L написал положительный отзыв о администраторе %L: %s", client, target, sText); } case 4: { LogToFile(g_sLogFile, "[Отрицательный Отзыв] %L написал отрицательный отзыв о администраторе %L: %s", client, target, sText); } }
CPrintToChat(client, "%s %t", g_sPrefix, "Отправлено", g_sMessageType[iMessageType]);
ClearVariables(client); }
public OnClientPostAdminCheck(client) { ClearVariables(client); }
PrintToAdmins(const String:sFormat[], any:...) { decl String:sBuffer[256]; VFormat(sBuffer, sizeof(sBuffer), sFormat, 2);
for (new i = 1; i <= MaxClients; i++) { if (IsClientInGame(i) && GetUserFlagBits(i) & (ADMFLAG_GENERIC + ADMFLAG_ROOT)) { CPrintToChat(i, sBuffer); } } }
ClearVariables(client) { g_iMessageType[client] = -1; g_iAdmin[client] = -1; g_iPlayer[client] = -1; }Добавлено (19.05.2019, 09:24:03) --------------------------------------------- У меня логи не ведутся Если сможете не могли бы помочь чтоб при команде !logadmins выводился лог ? Добавлено (19.05.2019, 10:22:25) --------------------------------------------- У меня логи не ведутся Если сможете не могли бы помочь чтоб при команде !logadmins выводился лог ?
Сообщение отредактировал LOL0105 - Воскресенье, 19.05.2019, 09:22:41 |
|
| |