Перейти к содержимому


Фотография

Единая тема для поиска плагинов SOURCEMOD

Поиск плагинов AFK+PING насторойка сервера Игры

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2188

#2181 DanZa_v34

DanZa_v34

    Участник

  • Пользователь
  • PipPip
  • 88 сообщений

Отправлено 30 Июнь 2023 - 18:22

Кто подскажет что это за плагин статистики? Скачал RankMe, на скрине скачивания плагина показывает вот так, а когда устанавливаю то при вводе rank в чат просто в чате пишет место

Прикрепленные файлы



#2182 alexuuuu

alexuuuu

    Новичок

  • Пользователь
  • Pip
  • 1 сообщений

Отправлено 30 Август 2023 - 19:27

Привет. Попробуй: attachicon.gif g_smoke.sp

My server crashed from this plugin, can you solve this pls?



#2183 CorazonMest

CorazonMest

    Новичок

  • Пользователь
  • Pip
  • 34 сообщений

Отправлено 30 Октябрь 2023 - 20:37

Нужна FSA admin вот такой, имееться где-то ? или кто может сделать?

https://hlmod.net/threads/fsa-admin.65930/

 



#2184 PR0metei97

PR0metei97

    Новичок

  • Пользователь
  • Pip
  • 3 сообщений

Отправлено 30 Октябрь 2023 - 22:06

#include <sourcemod> 
new String:teams[3][] = {"\x04 Спектаров","\x04 Бандитов \x01","\x04 Ментов \x01"} 
 
public Plugin:myinfo =   
    name = "[KDLP] Game Events",  
    author = "KorDen",  
    description = "",  
    version = "1.0",  
    url = "css32.ru"  
public OnPluginStart()  
    HookEvent("player_disconnect", event_PlayerConn, EventHookMode_Pre); 
    HookEvent("player_connect", event_PlayerConn, EventHookMode_Pre); 
    HookEvent("player_team", event_PlayerTeam, EventHookMode_Pre); 
//GameEvents Begin 
public Action:event_PlayerTeam(Handle:event, const String:name[], bool:dontBroadcast) 
    new client=GetClientOfUserId(GetEventInt(event, "userid")) 
    if (!dontBroadcast && !GetEventBool(event,"disconnect") && !GetEventBool(event,"silent") && IsClientConnected(client)) 
    { 
        SetEventBroadcast(event, true); 
        PrintToChatAll("\x01₪₪₪ \x04[\x01INFO\x04] \x04%N \x01зашел за \x04%s \x01₪₪₪",client,teams[GetEventInt(event,"team")-1]); 
    } 
public Action:event_PlayerConn(Handle:event, const String:name[], bool:dontBroadcast) 
    if (!dontBroadcast) 
        SetEventBroadcast(event, true); 
    decl String:rawmsg[255]; 
    decl String:rawadmmsg[255]; 
    decl String:steam[24]; 
    decl String:nick[48]; 
    decl String:ip[16]; 
    decl String:reason[192]; 
    GetEventString(event, "networkid", steam, sizeof(steam)); 
    GetEventString(event, "name", nick, sizeof(nick)); 
    if (strcmp(name,"player_connect"))  
    { 
        new client=GetClientOfUserId(GetEventInt(event,"userid")) 
        if(client<1) return; 
        GetEventString(event, "reason", reason, sizeof(reason)); 
        GetClientIP(client, ip, sizeof(ip)); // В player_disconnect нет address 
        ReplaceString(reason, sizeof(reason), "\n", " "); 
        Format(rawadmmsg,sizeof(rawadmmsg),"\x01₪₪₪ \x04[\x01INFO\x04] \x04%s \x03| \x04%s \x01отключился \x04\x01₪₪₪", nick, ip); 
        Format(rawmsg,sizeof(rawmsg),"\x01₪₪₪ \x04[\x01INFO\x04] \x04%s \x03| \x04%s \x01 отключился - \x04%s\x01₪₪₪", nick, ip, reason); 
    } 
    else 
    {     
        GetEventString(event, "address", ip, sizeof(ip)); 
        SplitString(ip,":",ip,sizeof(ip)); 
  Format(rawadmmsg,sizeof(rawadmmsg), "\x01₪₪₪ \x04[\x01INFO\x04] \x04%s \x03| \x04%s \x01подключился \x03\x01₪₪₪", nick, ip);
Format(rawmsg,sizeof(rawmsg), "\x01₪₪₪ \x04[\x01INFO\x04] \x04%s \x03вступает в игру \x04\x01₪₪₪", nick)
    } 
     
    for (new i = 1; i <= MaxClients; i++) 
        if(IsClientConnected(i) && IsClientInGame(i)) 
            if (GetUserFlagBits(i)) 
                PrintToChat(i, "%s", rawadmmsg); 
            else 
                PrintToChat(i, "%s", rawmsg); 
}
 
 
 
Кто сможет сделать для Sourcemod 1.10 - 1.11 
Пожалуйста


#2185 BloodyBlade

BloodyBlade

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 018 сообщений

Отправлено 31 Октябрь 2023 - 14:46

 

#include <sourcemod> 
new String:teams[3][] = {"\x04 Спектаров","\x04 Бандитов \x01","\x04 Ментов \x01"} 
 
public Plugin:myinfo =   
    name = "[KDLP] Game Events",  
    author = "KorDen",  
    description = "",  
    version = "1.0",  
    url = "css32.ru"  
public OnPluginStart()  
    HookEvent("player_disconnect", event_PlayerConn, EventHookMode_Pre); 
    HookEvent("player_connect", event_PlayerConn, EventHookMode_Pre); 
    HookEvent("player_team", event_PlayerTeam, EventHookMode_Pre); 
//GameEvents Begin 
public Action:event_PlayerTeam(Handle:event, const String:name[], bool:dontBroadcast) 
    new client=GetClientOfUserId(GetEventInt(event, "userid")) 
    if (!dontBroadcast && !GetEventBool(event,"disconnect") && !GetEventBool(event,"silent") && IsClientConnected(client)) 
    { 
        SetEventBroadcast(event, true); 
        PrintToChatAll("\x01₪₪₪ \x04[\x01INFO\x04] \x04%N \x01зашел за \x04%s \x01₪₪₪",client,teams[GetEventInt(event,"team")-1]); 
    } 
public Action:event_PlayerConn(Handle:event, const String:name[], bool:dontBroadcast) 
    if (!dontBroadcast) 
        SetEventBroadcast(event, true); 
    decl String:rawmsg[255]; 
    decl String:rawadmmsg[255]; 
    decl String:steam[24]; 
    decl String:nick[48]; 
    decl String:ip[16]; 
    decl String:reason[192]; 
    GetEventString(event, "networkid", steam, sizeof(steam)); 
    GetEventString(event, "name", nick, sizeof(nick)); 
    if (strcmp(name,"player_connect"))  
    { 
        new client=GetClientOfUserId(GetEventInt(event,"userid")) 
        if(client<1) return; 
        GetEventString(event, "reason", reason, sizeof(reason)); 
        GetClientIP(client, ip, sizeof(ip)); // В player_disconnect нет address 
        ReplaceString(reason, sizeof(reason), "\n", " "); 
        Format(rawadmmsg,sizeof(rawadmmsg),"\x01₪₪₪ \x04[\x01INFO\x04] \x04%s \x03| \x04%s \x01отключился \x04\x01₪₪₪", nick, ip); 
        Format(rawmsg,sizeof(rawmsg),"\x01₪₪₪ \x04[\x01INFO\x04] \x04%s \x03| \x04%s \x01 отключился - \x04%s\x01₪₪₪", nick, ip, reason); 
    } 
    else 
    {     
        GetEventString(event, "address", ip, sizeof(ip)); 
        SplitString(ip,":",ip,sizeof(ip)); 
  Format(rawadmmsg,sizeof(rawadmmsg), "\x01₪₪₪ \x04[\x01INFO\x04] \x04%s \x03| \x04%s \x01подключился \x03\x01₪₪₪", nick, ip);
Format(rawmsg,sizeof(rawmsg), "\x01₪₪₪ \x04[\x01INFO\x04] \x04%s \x03вступает в игру \x04\x01₪₪₪", nick)
    } 
     
    for (new i = 1; i <= MaxClients; i++) 
        if(IsClientConnected(i) && IsClientInGame(i)) 
            if (GetUserFlagBits(i)) 
                PrintToChat(i, "%s", rawadmmsg); 
            else 
                PrintToChat(i, "%s", rawmsg); 
}
 
 
 
Кто сможет сделать для Sourcemod 1.10 - 1.11 
Пожалуйста

 

Прикрепленный файл  GameEvents.sp   2,64К   1 Количество загрузок:



#2186 PR0metei97

PR0metei97

    Новичок

  • Пользователь
  • Pip
  • 3 сообщений

Отправлено 03 Ноябрь 2023 - 23:49

помогите снова ,есть плагин Army ,все работает но нужно отключить панелюку при входе на сервер ,очень надо 

 

 

 

public OnPluginStart()
{
g_hMainMenu = CreateMenu(Handle_MainMenu);
SetMenuTitle(g_hMainMenu, "[ArmyR] Меню:\n ");
AddMenuItem(g_hMainMenu, "myrank", "Мой ранк");
AddMenuItem(g_hMainMenu, "nextrank", "Следующее звание");
AddMenuItem(g_hMainMenu, "top", "Топ игроков");
AddMenuItem(g_hMainMenu, "ranks", "Доступные звания");
AddMenuItem(g_hMainMenu, "total", "Всего игроков");
 
HookEvent("player_death", Ev_PlayerDeath);
HookEvent("player_spawn", Ev_PlayerSpawn);
 
RegConsoleCmd("sm_army", Command_Army);
RegConsoleCmd("sm_rank", Command_Rank);
RegConsoleCmd("sm_top", Command_Top);
 
AddCommandListener(Command_Say, "say");
}
 
public Action:Command_Top(iClient, iArgc)
{
if ( iClient )
{
g_iTemp[iClient] = 0;
SendTopPanel(iClient);
}
else
{
PrintToServer("[ArmyR] client-side only");
}
 
return Plugin_Handled;
}
 
public Action:Command_Army(iClient, iArgc)
{
if ( iClient )
{
if ( g_bLoaded[iClient] )
{
DisplayMenu(g_hMainMenu, iClient, MENU_TIME_FOREVER);
}
else
{
PrintToChat(iClient, "\x01[\x04ArmyR\x01] Идет загрузка ваших данных");
}
}
else
{
PrintToServer("[ArmyR] client-side only");
}
 
return Plugin_Handled;
}
 
public Action:Command_Rank(iClient, iArgc)
{
if ( iClient )
{
if ( g_bLoaded[iClient] )
{
decl String:sQuery[256];
Format(sQuery, sizeof(sQuery), "SELECT `kills` AS rankn FROM `army_ranks` WHERE (`kills` > 0 AND `deaths` > 0) AND `kills` < (SELECT `kills` FROM `army_ranks` WHERE auth = '%s' LIMIT 1) AND `auth` != '%s' ORDER BY rankn ASC", g_sAuth[iClient], g_sAuth[iClient]);
SQL_TQuery(g_hSQLdb, SQLT_ShowRank, sQuery, GetClientUserId(iClient));
}
else
{
PrintToChat(iClient, "\x01[\x04ArmyR\x01] Идет загрузка ваших данных");
}
}
else
{
PrintToServer("[ArmyR] client-side only");
}
return Plugin_Handled;
}
 
public SQLT_ShowRank(Handle:hOwner, Handle:hQuery, const String:sError[], any:iUserId)
{
new iClient = GetClientOfUserId(iUserId);
if ( !iClient )
{
return;
}
 
if ( !hQuery )
{
LogError("SQLT_ShowRank: %s", sError);
}
 
if ( SQL_HasResultSet(hQuery) )
{
PrintToChat(iClient, "\x01[\x04ArmyR\x01] \x01Ваше звание: \x04[%s] \x01Вы занимаетe \x03%d  \x01из \x03%d \x01мест.", g_sRank[iClient], SQL_GetRowCount(hQuery), g_iTotalPlayers);
PrintToChat(iClient, "\x01[\x04ArmyR\x01] Убийств: \x03%d\x01, Смертей: \x03%d", g_iKills[iClient], g_iDeaths[iClient]);
}
}
 
public Handle_MainMenu(Handle:hMenu, MenuAction:action, iClient, iSlot)
{
switch (action)
{
case MenuAction_Select:
{
if ( iSlot == 0 )
{
decl String:sBuffer[64], String:sName[32];
GetClientName(iClient, sName, sizeof(sName));
new Handle:hPanel = CreatePanel();
SetPanelTitle(hPanel, "[ArmyR] Мой ранк:\n ");
Format(sBuffer, sizeof(sBuffer), "Ваш ник: %s", sName);
DrawPanelText(hPanel, sBuffer);
Format(sBuffer, sizeof(sBuffer), "Ваше звание: [%s]", g_sRank[iClient]);
DrawPanelText(hPanel, sBuffer);
Format(sBuffer, sizeof(sBuffer), "Убийств: %d", g_iKills[iClient]);
DrawPanelText(hPanel, sBuffer);
Format(sBuffer, sizeof(sBuffer), "Смертей: %d\n ", g_iDeaths[iClient]);
DrawPanelText(hPanel, sBuffer);
SetPanelCurrentKey(hPanel, 9);
DrawPanelItem(hPanel, "Назад");
SetPanelCurrentKey(hPanel, 10);
DrawPanelItem(hPanel, "Выход");
SendPanelToClient(hPanel, iClient, Handle_BackToMainMenu, MENU_TIME_FOREVER);
CloseHandle(hPanel);
}
else if ( iSlot == 1 )
{
decl String:sBuffer[64], String:sName[32];
GetArrayString(g_hArray_sRanks, g_iRank[iClient]+1, sName, sizeof(sName));
new Handle:hPanel = CreatePanel();
SetPanelTitle(hPanel, "[ArmyR] Следующее звание:\n ");
Format(sBuffer, sizeof(sBuffer), "След.звание: [%s]", sName);
DrawPanelText(hPanel, sBuffer);
Format(sBuffer, sizeof(sBuffer), "Необходимо убийств: %d", g_iNextRankKills[iClient]);
DrawPanelText(hPanel, sBuffer);
Format(sBuffer, sizeof(sBuffer), "Кол. Убийств у вас: %d\n ", g_iKills[iClient]);
DrawPanelText(hPanel, sBuffer);
SetPanelCurrentKey(hPanel, 9);
DrawPanelItem(hPanel, "Назад");
SetPanelCurrentKey(hPanel, 10);
DrawPanelItem(hPanel, "Выход");
SendPanelToClient(hPanel, iClient, Handle_BackToMainMenu, MENU_TIME_FOREVER);
CloseHandle(hPanel);
}
else if ( iSlot == 2 )
{
g_iTemp[iClient] = 0;
SendTopPanel(iClient);
}
else if ( iSlot == 3 )
{
DisplayMenu(g_hRanksMenu, iClient, MENU_TIME_FOREVER);
}
else if ( iSlot == 4 )
{
decl String:sQuery[256];
Format(sQuery, sizeof(sQuery), "SELECT `name` FROM `army_ranks` LIMIT %d, 1", g_iTotalPlayers-1);
SQL_TQuery(g_hSQLdb, SQLT_OnTotalDisplay, sQuery, GetClientUserId(iClient));
}
}
}
}
 
public SQLT_OnTotalDisplay(Handle:hOwner, Handle:hQuery, const String:sError[], any:iUserId)
{
new iClient = GetClientOfUserId(iUserId);
if ( !iClient )
{
return;
}
 
if ( !hQuery )
{
LogError("SQLT_OnTotalDisplay: %s", sError);
}
 
if ( SQL_FetchRow(hQuery) )
{
new Handle:hTopPanel = CreatePanel();
SetPanelTitle(hTopPanel, "[ArmyR] Всего игроков:\n ");
decl String:sBuffer[64];
Format(sBuffer, sizeof(sBuffer), "Всего игроков: %d", g_iTotalPlayers);
DrawPanelText(hTopPanel, sBuffer);
SQL_FetchString(hQuery, 0, sBuffer, sizeof(sBuffer));
Format(sBuffer, sizeof(sBuffer), "Последний игрок: %s\n ", sBuffer);
DrawPanelText(hTopPanel, sBuffer);
SetPanelCurrentKey(hTopPanel, 10);
DrawPanelItem(hTopPanel, "Выход");
SendPanelToClient(hTopPanel, iClient, Handle_BackToMainMenu, MENU_TIME_FOREVER);
CloseHandle(hTopPanel);
}
}
 
SendTopPanel(iClient)
{
decl String:sQuery[256];
Format(sQuery, sizeof(sQuery), "SELECT `name`, `kills` FROM `army_ranks` ORDER BY `kills` DESC LIMIT %d, 7;", g_iTemp[iClient]*7);
SQL_TQuery(g_hSQLdb, SQLT_OnTopDisplay, sQuery, GetClientUserId(iClient));
}
 
public SQLT_OnTopDisplay(Handle:hOwner, Handle:hQuery, const String:sError[], any:iUserId)
{
new iClient = GetClientOfUserId(iUserId);
if ( !iClient )
{
return;
}
 
if ( !hQuery )
{
LogError("SQLT_OnTopDisplay: %s", sError);
}
 
new Handle:hTopPanel = CreatePanel(), iCount = 0;
SetPanelTitle(hTopPanel, "[ArmyR] Топ игроков:\n ");
decl String:sBuffer[64], String:sRank[32], iRank, iKills;
while ( SQL_FetchRow(hQuery) )
{
SQL_FetchString(hQuery, 0, sBuffer, sizeof(sBuffer));
iKills = SQL_FetchInt(hQuery, 1);
iRank = 0;
while (iKills > GetArrayCell(g_hArray_iKills, iRank))
{
++iRank;
}
GetArrayString(g_hArray_sRanks, iRank, sRank, sizeof(sRank));
Format(sBuffer, sizeof(sBuffer), "%d. %s [%s] (%d)", g_iTemp[iClient]*7 + iCount + 1, sBuffer, sRank, iKills);
DrawPanelText(hTopPanel, sBuffer);
iCount++;
}
 
DrawPanelText(hTopPanel, " ");
if ( iCount == 7 )
{
SetPanelCurrentKey(hTopPanel, 9);
DrawPanelItem(hTopPanel, "Далее");
}
SetPanelCurrentKey(hTopPanel, 10);
DrawPanelItem(hTopPanel, "Выход");
 
SendPanelToClient(hTopPanel, iClient, Handle_TopPanel, MENU_TIME_FOREVER);
CloseHandle(hTopPanel);
}
 
public Handle_TopPanel(Handle:hMenu, MenuAction:action, iClient, iSlot)
{
if ( iSlot == 9 )
{
g_iTemp[iClient]++;
SendTopPanel(iClient);
}
}
 
public Handle_BackToMainMenu(Handle:hMenu, MenuAction:action, iClient, iSlot)
{
if ( iSlot == 9 )
{
Command_Army(iClient, 0);
}
else if ( action == MenuAction_Cancel && iSlot == MenuCancel_ExitBack )
{
Command_Army(iClient, 0);
}
}
 
public Ev_PlayerDeath(Handle:hEvent, const String:sEvName[], bool:bDontBroadcast)
{
new iClient = GetClientOfUserId(GetEventInt(hEvent, "userid")),
iAttker = GetClientOfUserId(GetEventInt(hEvent, "attacker"));
 
g_iDeaths[iClient]++;
SaveClient(iClient);
if ( iClient != iAttker && iClient && iAttker && GetClientTeam(iClient) != GetClientTeam(iAttker) )
{
g_iKills[iAttker] += 1;
if ( g_iKills[iAttker] >= g_iNextRankKills[iAttker] )
{
++g_iRank[iAttker];
if ( g_iRank[iClient] == g_iTotalRanks )
{
g_iRank[iClient]--;
}
GetArrayString(g_hArray_sRanks, g_iRank[iAttker], g_sRank[iAttker], sizeof(g_sRank[]));
g_iNextRankKills[iAttker] = GetArrayCell(g_hArray_iKills, g_iRank[iAttker]);
PrintToChat(iAttker, "\x01[\x04ArmyR\x01] Вы получили новое звание: \x04[%s]", g_sRank[iAttker]);
}
SaveClient(iAttker);
 
if ( g_iKills[iAttker] == 1 )
{
decl String:sRank[32];
GetArrayString(g_hArray_sRanks, 1, sRank, sizeof(sRank));
PrintToChat(iAttker, "\x01[\x04ArmyR\x01] \x01Вам необходимо набрать \x04[%d убийств] \x01для получения звания: \x02[%s]", g_iNextRankKills[iAttker], sRank);
}
}
}
 
public Action:Command_Say(client, const String:command[], argc)
{
if ( g_hSayTimer[client] == INVALID_HANDLE )
{
new iTime = GetTime();
if ( g_iLastSay[client] > iTime )
{
return Plugin_Handled;
}
g_iLastSay[client] = iTime +2;
 
decl String:sName[64], String:sMessage[256];
GetClientName(client, sName, sizeof(sName) - 1);
GetCmdArgString(sMessage, sizeof(sMessage) - 1);
StripQuotes(sMessage);
 
if ( StrEqual(sMessage, "rank") )
{
Command_Rank(client, 0);
}
else if ( StrEqual(sMessage, "top") )
{
Command_Top(client, 0);
}
 
if ( IsPlayerAlive(client) )
{
CPrintToChatAllEx(client, "{default}[{green}%s{default}] {teamcolor}%s{default}: %s", g_sRank[client], sName, sMessage);
}
else
{
if ( GetClientTeam(client) > 1  )
{
CPrintToChatAllEx(client, "*УБИТ* {default}[{green}%s{default}] {teamcolor}%s{default}: %s", g_sRank[client], sName, sMessage);
}
else
{
CPrintToChatAllEx(client, "*СПЕК* {default}[{green}%s{default}] {teamcolor}%s{default}: %s", g_sRank[client], sName, sMessage);
}
}
g_hSayTimer[client] = CreateTimer(0.0, Timer_RestoreChat, client);
return Plugin_Handled;
}
 
return Plugin_Continue;
}
 
public Action:Timer_RestoreChat(Handle:hTimer, any:client)
{
g_hSayTimer[client] = INVALID_HANDLE;
return Plugin_Stop;
}
 
public Ev_PlayerSpawn(Handle:hEvent, const String:sEvName[], bool:bDontBroadcast)
{
new iClient = GetClientOfUserId(GetEventInt(hEvent, "userid"));
if ( g_bLoaded[iClient] )
{
decl String:sNextRank[32];
GetArrayString(g_hArray_sRanks, g_iRank[iClient]+1, sNextRank, sizeof(sNextRank));
PrintToChat(iClient, "\x01[\x04ArmyR\x01] \x01Вам необходимо ещё \x03%d \x01убийств \x01до звания: \x03[%s]", g_iNextRankKills[iClient] - g_iKills[iClient], sNextRank);
}
}


#2187 BloodyBlade

BloodyBlade

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 018 сообщений

Отправлено 04 Ноябрь 2023 - 11:11

 

помогите снова ,есть плагин Army ,все работает но нужно отключить панелюку при входе на сервер ,очень надо 

 

 

 

public OnPluginStart()
{
g_hMainMenu = CreateMenu(Handle_MainMenu);
SetMenuTitle(g_hMainMenu, "[ArmyR] Меню:\n ");
AddMenuItem(g_hMainMenu, "myrank", "Мой ранк");
AddMenuItem(g_hMainMenu, "nextrank", "Следующее звание");
AddMenuItem(g_hMainMenu, "top", "Топ игроков");
AddMenuItem(g_hMainMenu, "ranks", "Доступные звания");
AddMenuItem(g_hMainMenu, "total", "Всего игроков");
 
HookEvent("player_death", Ev_PlayerDeath);
HookEvent("player_spawn", Ev_PlayerSpawn);
 
RegConsoleCmd("sm_army", Command_Army);
RegConsoleCmd("sm_rank", Command_Rank);
RegConsoleCmd("sm_top", Command_Top);
 
AddCommandListener(Command_Say, "say");
}
 
public Action:Command_Top(iClient, iArgc)
{
if ( iClient )
{
g_iTemp[iClient] = 0;
SendTopPanel(iClient);
}
else
{
PrintToServer("[ArmyR] client-side only");
}
 
return Plugin_Handled;
}
 
public Action:Command_Army(iClient, iArgc)
{
if ( iClient )
{
if ( g_bLoaded[iClient] )
{
DisplayMenu(g_hMainMenu, iClient, MENU_TIME_FOREVER);
}
else
{
PrintToChat(iClient, "\x01[\x04ArmyR\x01] Идет загрузка ваших данных");
}
}
else
{
PrintToServer("[ArmyR] client-side only");
}
 
return Plugin_Handled;
}
 
public Action:Command_Rank(iClient, iArgc)
{
if ( iClient )
{
if ( g_bLoaded[iClient] )
{
decl String:sQuery[256];
Format(sQuery, sizeof(sQuery), "SELECT `kills` AS rankn FROM `army_ranks` WHERE (`kills` > 0 AND `deaths` > 0) AND `kills` < (SELECT `kills` FROM `army_ranks` WHERE auth = '%s' LIMIT 1) AND `auth` != '%s' ORDER BY rankn ASC", g_sAuth[iClient], g_sAuth[iClient]);
SQL_TQuery(g_hSQLdb, SQLT_ShowRank, sQuery, GetClientUserId(iClient));
}
else
{
PrintToChat(iClient, "\x01[\x04ArmyR\x01] Идет загрузка ваших данных");
}
}
else
{
PrintToServer("[ArmyR] client-side only");
}
return Plugin_Handled;
}
 
public SQLT_ShowRank(Handle:hOwner, Handle:hQuery, const String:sError[], any:iUserId)
{
new iClient = GetClientOfUserId(iUserId);
if ( !iClient )
{
return;
}
 
if ( !hQuery )
{
LogError("SQLT_ShowRank: %s", sError);
}
 
if ( SQL_HasResultSet(hQuery) )
{
PrintToChat(iClient, "\x01[\x04ArmyR\x01] \x01Ваше звание: \x04[%s] \x01Вы занимаетe \x03%d  \x01из \x03%d \x01мест.", g_sRank[iClient], SQL_GetRowCount(hQuery), g_iTotalPlayers);
PrintToChat(iClient, "\x01[\x04ArmyR\x01] Убийств: \x03%d\x01, Смертей: \x03%d", g_iKills[iClient], g_iDeaths[iClient]);
}
}
 
public Handle_MainMenu(Handle:hMenu, MenuAction:action, iClient, iSlot)
{
switch (action)
{
case MenuAction_Select:
{
if ( iSlot == 0 )
{
decl String:sBuffer[64], String:sName[32];
GetClientName(iClient, sName, sizeof(sName));
new Handle:hPanel = CreatePanel();
SetPanelTitle(hPanel, "[ArmyR] Мой ранк:\n ");
Format(sBuffer, sizeof(sBuffer), "Ваш ник: %s", sName);
DrawPanelText(hPanel, sBuffer);
Format(sBuffer, sizeof(sBuffer), "Ваше звание: [%s]", g_sRank[iClient]);
DrawPanelText(hPanel, sBuffer);
Format(sBuffer, sizeof(sBuffer), "Убийств: %d", g_iKills[iClient]);
DrawPanelText(hPanel, sBuffer);
Format(sBuffer, sizeof(sBuffer), "Смертей: %d\n ", g_iDeaths[iClient]);
DrawPanelText(hPanel, sBuffer);
SetPanelCurrentKey(hPanel, 9);
DrawPanelItem(hPanel, "Назад");
SetPanelCurrentKey(hPanel, 10);
DrawPanelItem(hPanel, "Выход");
SendPanelToClient(hPanel, iClient, Handle_BackToMainMenu, MENU_TIME_FOREVER);
CloseHandle(hPanel);
}
else if ( iSlot == 1 )
{
decl String:sBuffer[64], String:sName[32];
GetArrayString(g_hArray_sRanks, g_iRank[iClient]+1, sName, sizeof(sName));
new Handle:hPanel = CreatePanel();
SetPanelTitle(hPanel, "[ArmyR] Следующее звание:\n ");
Format(sBuffer, sizeof(sBuffer), "След.звание: [%s]", sName);
DrawPanelText(hPanel, sBuffer);
Format(sBuffer, sizeof(sBuffer), "Необходимо убийств: %d", g_iNextRankKills[iClient]);
DrawPanelText(hPanel, sBuffer);
Format(sBuffer, sizeof(sBuffer), "Кол. Убийств у вас: %d\n ", g_iKills[iClient]);
DrawPanelText(hPanel, sBuffer);
SetPanelCurrentKey(hPanel, 9);
DrawPanelItem(hPanel, "Назад");
SetPanelCurrentKey(hPanel, 10);
DrawPanelItem(hPanel, "Выход");
SendPanelToClient(hPanel, iClient, Handle_BackToMainMenu, MENU_TIME_FOREVER);
CloseHandle(hPanel);
}
else if ( iSlot == 2 )
{
g_iTemp[iClient] = 0;
SendTopPanel(iClient);
}
else if ( iSlot == 3 )
{
DisplayMenu(g_hRanksMenu, iClient, MENU_TIME_FOREVER);
}
else if ( iSlot == 4 )
{
decl String:sQuery[256];
Format(sQuery, sizeof(sQuery), "SELECT `name` FROM `army_ranks` LIMIT %d, 1", g_iTotalPlayers-1);
SQL_TQuery(g_hSQLdb, SQLT_OnTotalDisplay, sQuery, GetClientUserId(iClient));
}
}
}
}
 
public SQLT_OnTotalDisplay(Handle:hOwner, Handle:hQuery, const String:sError[], any:iUserId)
{
new iClient = GetClientOfUserId(iUserId);
if ( !iClient )
{
return;
}
 
if ( !hQuery )
{
LogError("SQLT_OnTotalDisplay: %s", sError);
}
 
if ( SQL_FetchRow(hQuery) )
{
new Handle:hTopPanel = CreatePanel();
SetPanelTitle(hTopPanel, "[ArmyR] Всего игроков:\n ");
decl String:sBuffer[64];
Format(sBuffer, sizeof(sBuffer), "Всего игроков: %d", g_iTotalPlayers);
DrawPanelText(hTopPanel, sBuffer);
SQL_FetchString(hQuery, 0, sBuffer, sizeof(sBuffer));
Format(sBuffer, sizeof(sBuffer), "Последний игрок: %s\n ", sBuffer);
DrawPanelText(hTopPanel, sBuffer);
SetPanelCurrentKey(hTopPanel, 10);
DrawPanelItem(hTopPanel, "Выход");
SendPanelToClient(hTopPanel, iClient, Handle_BackToMainMenu, MENU_TIME_FOREVER);
CloseHandle(hTopPanel);
}
}
 
SendTopPanel(iClient)
{
decl String:sQuery[256];
Format(sQuery, sizeof(sQuery), "SELECT `name`, `kills` FROM `army_ranks` ORDER BY `kills` DESC LIMIT %d, 7;", g_iTemp[iClient]*7);
SQL_TQuery(g_hSQLdb, SQLT_OnTopDisplay, sQuery, GetClientUserId(iClient));
}
 
public SQLT_OnTopDisplay(Handle:hOwner, Handle:hQuery, const String:sError[], any:iUserId)
{
new iClient = GetClientOfUserId(iUserId);
if ( !iClient )
{
return;
}
 
if ( !hQuery )
{
LogError("SQLT_OnTopDisplay: %s", sError);
}
 
new Handle:hTopPanel = CreatePanel(), iCount = 0;
SetPanelTitle(hTopPanel, "[ArmyR] Топ игроков:\n ");
decl String:sBuffer[64], String:sRank[32], iRank, iKills;
while ( SQL_FetchRow(hQuery) )
{
SQL_FetchString(hQuery, 0, sBuffer, sizeof(sBuffer));
iKills = SQL_FetchInt(hQuery, 1);
iRank = 0;
while (iKills > GetArrayCell(g_hArray_iKills, iRank))
{
++iRank;
}
GetArrayString(g_hArray_sRanks, iRank, sRank, sizeof(sRank));
Format(sBuffer, sizeof(sBuffer), "%d. %s [%s] (%d)", g_iTemp[iClient]*7 + iCount + 1, sBuffer, sRank, iKills);
DrawPanelText(hTopPanel, sBuffer);
iCount++;
}
 
DrawPanelText(hTopPanel, " ");
if ( iCount == 7 )
{
SetPanelCurrentKey(hTopPanel, 9);
DrawPanelItem(hTopPanel, "Далее");
}
SetPanelCurrentKey(hTopPanel, 10);
DrawPanelItem(hTopPanel, "Выход");
 
SendPanelToClient(hTopPanel, iClient, Handle_TopPanel, MENU_TIME_FOREVER);
CloseHandle(hTopPanel);
}
 
public Handle_TopPanel(Handle:hMenu, MenuAction:action, iClient, iSlot)
{
if ( iSlot == 9 )
{
g_iTemp[iClient]++;
SendTopPanel(iClient);
}
}
 
public Handle_BackToMainMenu(Handle:hMenu, MenuAction:action, iClient, iSlot)
{
if ( iSlot == 9 )
{
Command_Army(iClient, 0);
}
else if ( action == MenuAction_Cancel && iSlot == MenuCancel_ExitBack )
{
Command_Army(iClient, 0);
}
}
 
public Ev_PlayerDeath(Handle:hEvent, const String:sEvName[], bool:bDontBroadcast)
{
new iClient = GetClientOfUserId(GetEventInt(hEvent, "userid")),
iAttker = GetClientOfUserId(GetEventInt(hEvent, "attacker"));
 
g_iDeaths[iClient]++;
SaveClient(iClient);
if ( iClient != iAttker && iClient && iAttker && GetClientTeam(iClient) != GetClientTeam(iAttker) )
{
g_iKills[iAttker] += 1;
if ( g_iKills[iAttker] >= g_iNextRankKills[iAttker] )
{
++g_iRank[iAttker];
if ( g_iRank[iClient] == g_iTotalRanks )
{
g_iRank[iClient]--;
}
GetArrayString(g_hArray_sRanks, g_iRank[iAttker], g_sRank[iAttker], sizeof(g_sRank[]));
g_iNextRankKills[iAttker] = GetArrayCell(g_hArray_iKills, g_iRank[iAttker]);
PrintToChat(iAttker, "\x01[\x04ArmyR\x01] Вы получили новое звание: \x04[%s]", g_sRank[iAttker]);
}
SaveClient(iAttker);
 
if ( g_iKills[iAttker] == 1 )
{
decl String:sRank[32];
GetArrayString(g_hArray_sRanks, 1, sRank, sizeof(sRank));
PrintToChat(iAttker, "\x01[\x04ArmyR\x01] \x01Вам необходимо набрать \x04[%d убийств] \x01для получения звания: \x02[%s]", g_iNextRankKills[iAttker], sRank);
}
}
}
 
public Action:Command_Say(client, const String:command[], argc)
{
if ( g_hSayTimer[client] == INVALID_HANDLE )
{
new iTime = GetTime();
if ( g_iLastSay[client] > iTime )
{
return Plugin_Handled;
}
g_iLastSay[client] = iTime +2;
 
decl String:sName[64], String:sMessage[256];
GetClientName(client, sName, sizeof(sName) - 1);
GetCmdArgString(sMessage, sizeof(sMessage) - 1);
StripQuotes(sMessage);
 
if ( StrEqual(sMessage, "rank") )
{
Command_Rank(client, 0);
}
else if ( StrEqual(sMessage, "top") )
{
Command_Top(client, 0);
}
 
if ( IsPlayerAlive(client) )
{
CPrintToChatAllEx(client, "{default}[{green}%s{default}] {teamcolor}%s{default}: %s", g_sRank[client], sName, sMessage);
}
else
{
if ( GetClientTeam(client) > 1  )
{
CPrintToChatAllEx(client, "*УБИТ* {default}[{green}%s{default}] {teamcolor}%s{default}: %s", g_sRank[client], sName, sMessage);
}
else
{
CPrintToChatAllEx(client, "*СПЕК* {default}[{green}%s{default}] {teamcolor}%s{default}: %s", g_sRank[client], sName, sMessage);
}
}
g_hSayTimer[client] = CreateTimer(0.0, Timer_RestoreChat, client);
return Plugin_Handled;
}
 
return Plugin_Continue;
}
 
public Action:Timer_RestoreChat(Handle:hTimer, any:client)
{
g_hSayTimer[client] = INVALID_HANDLE;
return Plugin_Stop;
}
 
public Ev_PlayerSpawn(Handle:hEvent, const String:sEvName[], bool:bDontBroadcast)
{
new iClient = GetClientOfUserId(GetEventInt(hEvent, "userid"));
if ( g_bLoaded[iClient] )
{
decl String:sNextRank[32];
GetArrayString(g_hArray_sRanks, g_iRank[iClient]+1, sNextRank, sizeof(sNextRank));
PrintToChat(iClient, "\x01[\x04ArmyR\x01] \x01Вам необходимо ещё \x03%d \x01убийств \x01до звания: \x03[%s]", g_iNextRankKills[iClient] - g_iKills[iClient], sNextRank);
}
}

 

Научись текст плагина публиковать под спойлер. + ты не весь код плагина скинул



#2188 Аластар

Аластар

    Новичок

  • Пользователь
  • Pip
  • 26 сообщений

Отправлено 15 Ноябрь 2023 - 10:36

Здравия! Нужен плагин регулировки наносимого урона выбранного оружия. Хочу убавить наносимый урон скорострелок. за ранее благодарен. 



#2189 pinky

pinky

    Новичок

  • Пользователь
  • Pip
  • 3 сообщений

Отправлено 04 Декабрь 2023 - 20:25

Слушайте, а есть у кого новогодний skybox или хотя бы ночная для css v92





Темы с аналогичным тегами Поиск плагинов, AFK+PING, насторойка сервера, Игры

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных