CS:GO админы против игроков

YAMER1

Участник
Сообщения
19
Реакции
0
Ищу небольшой плагин, который позволяет админам играть против игроков сервера (некий admins vs players).
Данный плагин, я видел в props плагине (моде), но там конечно же мешает этот мод.
Если вам нужен будет это плагин пропс, то напишите это в комментариях.



P.S. Заранее благодарю за сделанную вами работу и просмотр этой темы.
Если захотите, то выдам вам админку на моём сервере навсегда или помогу раскрутить группу/сервер и т.д за сделанную вами услугу.
 
N

NiGaByte

Как вообще определяется команда админов?
Сделать два режима
1) Куда присоединился хоть один админ, туда больше не смогут присоединится игроки, а тех кто там был, перебросит в другую команду.
2) Заранее определять команду админов(кваром) 1=ct/2=t, заранее нельзя присоединится в эту команду.
 

YAMER1

Участник
Сообщения
19
Реакции
0
У komashchenko он же Феникс в плагине есть такая функция, может у него попросить, раз из русских никто не делает.
 

hanson

Участник
Сообщения
303
Реакции
15
YAMER1, давай начнем с того, зачем тебе это надо?
 

DarklSide

Участник
Сообщения
931
Реакции
468
По умолчанию sm_drenable - имеется в выключенном состоянии.
По умолчанию sm_drugans - включен на T.

sm_sortings - команда на сортировку Админов и игроков.
Настройки в -> cfg/sourcemod/sm_joinfriends.cfg

PHP:
#include <sourcemod>
#include <cstrike>
//#define FLAG_ADMINA ADMFLAG_UNBAN
new bool:b_en, 
bool:b_team, 
bool:switchEnd[MAXPLAYERS + 1] = false;
public OnPluginStart()
{
    new Handle:cvar;
    HookConVarChange((cvar = CreateConVar("sm_drenable", "0", "Включить/выключить плагин", FCVAR_PLUGIN, true, 0.0, true, 1.0)), Cvar_b_enabled);
    b_en = GetConVarBool(cvar);
    HookConVarChange((cvar = CreateConVar("sm_drugans", "0", "0 - T, 1 - CT", FCVAR_PLUGIN, true, 0.0, true, 1.0)), Cvar_b_team);
    b_team = GetConVarBool(cvar);
    CloseHandle(cvar);
    AddCommandListener(JoinTeams, "jointeam");
    //AddCommandListener(JoinTeams, "joinclass");
    HookEvent("round_end", Event_RoundEnd, EventHookMode_PostNoCopy);
    RegAdminCmd("sm_sortings", EnAdminS, ADMFLAG_ROOT);
    AutoExecConfig(true, "sm_joinfriends");
}
public Plugin:myinfo = 
{
    name = "[NM] JoinFriends", 
    author = "DarklSide", 
    description = "Join friends in my team", 
    version = "1.0.2", 
    url = "www.surf-4fun.com"
};
public Action:EnAdminS(client, args)
{
    if (IsClientInGame(client))
    {
        for (new i = 1; i <= MaxClients; i++)
        {
            if (IsClientInGame(i))
            {
                if (b_Iadmins(i))
                {
                    switchEnd[i] = true;
                }
            }
        }
        PrintToChat(client, "Сортировка команд, в след. раунде");
    }
    return Plugin_Handled;
}
public OnClientDisconnect(client)
{
    if (b_en)
    {
        switchEnd[client] = false;
    }
}
bool:b_Iadmins(client)
{
    return GetUserAdmin(client) == INVALID_ADMIN_ID ? false : true;
}
public Event_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
    if (b_en)
    {
        for (new i = 1; i <= MaxClients; i++)
        {
            if (switchEnd[i])
            {
                Switch(i);
                switchEnd[i] = false;
            }
        }
    }
}
Switch(client)
{
    if (IsClientInGame(client))
    {
        if (GetClientTeam(client) > 1)
        {
            if (b_team)
            {
                CS_SwitchTeam(client, 2);
            }
            else
            {
                CS_SwitchTeam(client, 3);
            }
        }
    }
}
public Cvar_b_enabled(Handle:cvar, const String:oldvalue[], const String:newvalue[])
{
    b_en = GetConVarBool(cvar);
    if (b_en)
    {
        ServerCommand("mp_limitteams 0");
        ServerCommand("mp_autoteambalance 0");
    }
    else
    {
        ServerCommand("mp_limitteams 1"); // Своё значение
        ServerCommand("mp_autoteambalance 1"); // Своё значение
        for (new i = 1; i <= MaxClients; i++)
        {
            switchEnd[i] = false;
        }
    }
}
public Cvar_b_team(Handle:cvar, const String:oldvalue[], const String:newvalue[])
{
    b_team = GetConVarBool(cvar);
}
public Action:JoinTeams(client, const String:command[], args)
{
    if (client && IsClientInGame(client))
    {
        switch (b_en)
        {
            case 0:
            return Plugin_Continue;
            case 1:
            {
                decl String:s_Team[4];
                GetCmdArg(1, s_Team, sizeof(s_Team));
                new i_team = StringToInt(s_Team);
                if (i_team == 0)
                {
                    PrintToChat(client, "\x01Автовыбор временно \x03отключен");
                    return Plugin_Handled;
                }
                switch (b_team)
                {
                    case 0:
                    {
                        if (i_team == CS_TEAM_T) // && (GetUserFlagBits(client) < FLAG_ADMINA))
                        {
                            //ClientCommand(client, "jointeam 3");
                            PrintToChat(client, "\x01Зайти за \x03T \x01можно только Админам - \x03(временно)");
                            return Plugin_Handled;
                        }
                        return Plugin_Continue;
                    }
                    case 1:
                    {
                        if (i_team == CS_TEAM_CT) // && (GetUserFlagBits(client) < FLAG_ADMINA))
                        {
                            //ClientCommand(client, "jointeam 2");
                            PrintToChat(client, "\x01Зайти за \x03СT \x01можно только Админам - \x03(временно)");
                            return Plugin_Handled;
                        }
                        return Plugin_Continue;
                    }
                }
            }
        }
    }
    return Plugin_Continue;
}

Для удобства:
PHP:
"Commands" 
{ 
    "ServerCommands" 
    { 
        "Включить ct или t" 
        { 
            "cmd"        "sm_drenable #1" 
            "admin"        "sm_unban" 
            "execute"    "server" 
            "1" 
            { 
                "type"    "onoff" 
                "title"    "Включить/Выключить" 
            } 
        } 
        "Админа за T/CT" 
        { 
            "cmd"        "sm_drugans #1" 
            "admin"        "sm_unban" 
            "execute"    "server" 
            "1" 
            { 
                "type"    "onoff" 
                "title"    "1 - CT, 2 - T" 
            } 
        } 
        "Сортировка игроков" 
        { 
            "cmd"        "sm_sortings" 
            "admin"        "sm_unban" 
            "execute"    "player" 
        } 
    } 
}

P.S.: Не разу не запускал. Можно использовать как -

Клан серва vs Игроков (swapteam),
Друзья vs Игроков (swapteam),
Так и, - Админы vs Игроков (sm_sortings),
и т.д...
 

Вложения

  • joinfriends.smx
    5.7 КБ · Просмотры: 3
  • joinfriends.sp
    4 КБ · Просмотры: 2
Последнее редактирование:

YAMER1

Участник
Сообщения
19
Реакции
0
По умолчанию sm_drenable - имеется в выключенном состоянии.
По умолчанию sm_drugans - включен на T.

sm_sortings - команда на сортировку Админов и игроков.
Настройки в cfg/sourcemod/sm_changeteamt.cfg

PHP:
#include <sourcemod>
#include <cstrike>
#define FLAG_ADMINA ADMFLAG_BAN
new bool:b_en,
bool:b_team,
bool:switchEnd[MAXPLAYERS+1] = false;
public OnPluginStart()
{
	new Handle:cvar;
	HookConVarChange((cvar=CreateConVar("sm_drenable", "0", "Включить/выключить плагин", FCVAR_PLUGIN, true, 0.0, true, 1.0)), Cvar_b_enabled);
	b_en = GetConVarBool(cvar);
	HookConVarChange((cvar=CreateConVar("sm_drugans", "0", "0 - T, 1 - CT", FCVAR_PLUGIN, true, 0.0, true, 1.0)), Cvar_b_team);
	b_team = GetConVarBool(cvar);
	CloseHandle(cvar);
	AddCommandListener(JoinTeams, "jointeam");
	HookEvent("round_end", Event_RoundEnd, EventHookMode_PostNoCopy);
	RegAdminCmd("sm_sortings", EnAdminS, ADMFLAG_ROOT);
	AutoExecConfig(true, "sm_changeteamt");
}
public Action:EnAdminS(client, args)
{
	for (new i = 1; i <= MaxClients; i++)
	{
		{
			if(b_Iadmins(i))
			{
				switchEnd[i] = true;
			}
		}
	}
	return Plugin_Handled;
}
public OnClientDisconnect(client)
{
	if(b_en)
	{
		switchEnd[client] = false;
	}
}
bool:b_Iadmins(client)
{
	return GetUserAdmin(client) == INVALID_ADMIN_ID ? false : true;
}
public Event_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
	if(b_en)
	{
		for (new i = 1; i <= MaxClients; i++)
		{
			if(switchEnd[i])
			{
				Switch(i);
				switchEnd[i] = false;
			}
		}
	}
}
Switch(client)
{
	CreateTimer(0.5, Timer_TeamSwitch, client);
}
public Action:Timer_TeamSwitch(Handle:timer, any:client)
{
	new tm = GetClientTeam(client);
	if(IsClientInGame(client) && (tm > 1))
	PerformSwitch(client);
	return Plugin_Stop;
}
PerformSwitch(client)
{
	if(b_team)
	{
		CS_SwitchTeam(client, 2);
	}
	else
	{
		CS_SwitchTeam(client, 3);
	}
}
public Cvar_b_enabled(Handle:cvar, const String:oldvalue[], const String:newvalue[])
{
	b_en = GetConVarBool(cvar);
	if(b_en)
	{
		ServerCommand("mp_limitteams 0");
		ServerCommand("mp_autoteambalance 0");
	}
	else
	{
		ServerCommand("mp_limitteams 1"); // Своё значение 
		ServerCommand("mp_autoteambalance 1"); // Своё значение
		for (new i = 1; i <= MaxClients; i++)
		{
			switchEnd[i] = false;
		}
	}
}
public Cvar_b_team(Handle:cvar, const String:oldvalue[], const String:newvalue[])
{
	b_team = GetConVarBool(cvar);
}
public Action:JoinTeams(client, const String:command[], args)
{
	if (IsClientInGame(client)) 
	{
		switch (b_en)
		{
			case 0:
				return Plugin_Continue;
			case 1:
			{
				decl String:s_Team[3];
				GetCmdArg(1, s_Team, sizeof(s_Team));
				new i_team = StringToInt(s_Team);
				if(i_team == 0)
				{
					PrintToChat(client, " \x01Автовыбор временно \x03отключен");
					return Plugin_Handled;
				}
				switch (b_team)
				{
					case 0:
					{
						if(i_team == CS_TEAM_T && (GetUserFlagBits(client) < FLAG_ADMINA))
						{
							ClientCommand(client, "jointeam 3");
							PrintToChat(client, " \x01Зайти за \x03T \x01можно только Админам - (временно)");
							return Plugin_Handled;
						}
						return Plugin_Continue;
					}
					case 1:
					{
						if(i_team == CS_TEAM_CT && (GetUserFlagBits(client) < FLAG_ADMINA))
						{
							ClientCommand(client, "jointeam 2");
							PrintToChat(client, " \x01Зайти за \x03СT \x01можно только Админам - (временно)");
							return Plugin_Handled;
						}
						return Plugin_Continue;
					}
				}
			}
		}
	}
	return Plugin_Continue;
}

Для удобства:
PHP:
"Commands"
{
	"ServerCommands"
	{
		"Включить ct или t"
		{
			"cmd"		"sm_drenable #1"
			"admin"		"sm_unban"
			"execute"	"server"
			"1"
			{
				"type"	"onoff"
				"title"	"Включить/Выключить"
			}
		}
		"Админа за T/CT"
		{
			"cmd"		"sm_drugans #1"
			"admin"		"sm_unban"
			"execute"	"server"
			"1"
			{
				"type"	"onoff"
				"title"	"1 - CT, 2 - T"
			}
		}
		"Сортировка игроков"
        {
            "cmd"        "sm_sortings"
            "admin"        "sm_unban"
            "execute"    "player"
        }
    }
}

P.S.: Не разу не запускал. Можно использовать как -

Клан серва vs Игроков (swapteam),
Друзья vs Игроков (swapteam),
Так и Админы vs Игроков (sm_sortings),
и т.д...

Вроде сделал всё правильно, но пишет "нет такой команды".
 

YAMER1

Участник
Сообщения
19
Реакции
0
Врагмент кода феникса

public AdminFlashHandler(Handle:menu, MenuAction:action, client, param)
{
if (action == MenuAction_Select)
{
switch(param)
{
case 0:
{
g_FlashModID = 0;
PrintCenterTextAll("Все флешмобы отключены. Играйте и наслаждайтесь!");
}
case 1:
{
g_FlashModID = 1;
g_iAdminTeam = 3;
SetConVarInt(FindConVar("mp_limitteams"), 0);
SetConVarInt(FindConVar("mp_autoteambalance"), 0);

for (new i=1;i<=MaxClients;i++)
{
if (!IsClientInGame(i)) continue;
CS_SwitchTeam(i, (GetUserAdmin(i) != INVALID_ADMIN_ID) ? g_iAdminTeam : CS_TEAM_T);
}
SetConVarInt(FindConVar("mp_restartgame"), 1);
PrintCenterTextAll("Админы против игроков: убей админа - получи 10 бонусов!");

LogToFile(log_path, "[FlashModes] Admin %N started flashmode #%d", client, param);
}
}
DisplayMenu(g_hAdminFlashMenu, client, MENU_TIME_FOREVER);
}
else if (action == MenuAction_Cancel && param == MenuCancel_ExitBack) DisplayMenu(g_hAdminMenu, client, MENU_TIME_FOREVER);
}
И весь скрипт
 

Вложения

  • sProps.rar
    11.5 КБ · Просмотры: 1

YAMER1

Участник
Сообщения
19
Реакции
0
Смотри в error'ах или сделать дополнительную проверку.
Displaying call stack trace for plugin "joint.smx":
L 05/29/2015 - 01:32:20: [SM] [0] Line 42, E:\css\s\s163\joint.sp::b_Iadmins()
L 05/29/2015 - 01:32:20: [SM] [1] Line 25, E:\css\s\s163\joint.sp::EnAdminS()
А sp файл же не нужен, это просто скрипт?
Я не знаю, что означает этот путь.
 

DarklSide

Участник
Сообщения
931
Реакции
468
YAMER1, Обновил вложение, предыдущий файл можно удалить - smx.
sp - для профилактики.
 

YAMER1

Участник
Сообщения
19
Реакции
0
YAMER1, Обновил вложение, предыдущий файл можно удалить - smx.
sp - для профилактики.
Большое спасибо, если тебе надо будет сервер попиарить, подписчиков накрутить или же разрекламировать услуги по созданию и настройки плагинов, то обращайся.
Сам плагин я проверю уже завтра.

Добавлено через 18 часов 0 минут
YAMER1, Обновил вложение, предыдущий файл можно удалить - smx.
sp - для профилактики.
Теперь пишу swapteam, тоже нет команды, но когда пишу sm_sortings просто ничего не происходит.
 
Последнее редактирование:
Сверху Снизу