и готово
Clansort
Перекидывает всех игроков с определенным клан тагом за одну из команд.
Команды:
amx_clanct - <clan tag> Клан за конторов
amx_clant - <clan tag> За терров
( 5,44 килобайт )
#pragma semicolon 1
#include <sourcemod>
#include <cstrike>
#define PLUGIN_VERSION "0.0.1"
#define DEBUG
public Plugin:myinfo =
{
name = "ClanSort",
author = "duxa",
description = "",
version = PLUGIN_VERSION,
url = ""
}
public OnPluginStart()
{
CreateConVar("sm_cs_version", PLUGIN_VERSION, _, FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY);
RegAdminCmd("sm_clansort", Clan, ADMFLAG_GENERIC, "sm_clansort <clan tag> <t | ct>");
}
public Action:Clan(client, args)
{
decl String:buffer[32];
decl String:buffer2[5];
if(args < 2)
{
ReplyToCommand(client, "[ClanSort] Usage: sm_clansort <clan tag> <t | ct>");
return Plugin_Handled;
}
GetCmdArg(1, buffer, sizeof(buffer));
GetCmdArg(2, buffer2, sizeof(buffer2));
new team;
if(StrEqual(buffer2, "t", false))
{
team = 2;
} else
if(StrEqual(buffer2, "ct", false))
{
team = 3;
} else
{
ReplyToCommand(client, "[ClanSort] Team not found");
return Plugin_Handled;
}
new String:ClanTag[MAXPLAYERS+1][32];
for (new i = 1; i <= MaxClients; i++)
{
if (!IsClientInGame(i) || IsFakeClient(i))
{
continue;
}
CS_GetClientClanTag(i, ClanTag[client], sizeof(ClanTag[]));
#if defined DEBUG
PrintToServer("Tag(%d) = '%s'", i, ClanTag[client]);
#endif
if(StrEqual(buffer, ClanTag[client]))
{
#if defined DEBUG
PrintToServer("Team Switched");
#endif
CS_SwitchTeam(i, team);
}
}
return Plugin_Handled;
}
Зачем создавать такой огромный двумерный массив? Нельзя обойтись одной строкой-буфером?Что-то в этом духе...
PHP:#pragma semicolon 1 #include <sourcemod> #include <cstrike> #define PLUGIN_VERSION "0.0.1" #define DEBUG public Plugin:myinfo = { name = "ClanSort", author = "duxa", description = "", version = PLUGIN_VERSION, url = "" } public OnPluginStart() { CreateConVar("sm_cs_version", PLUGIN_VERSION, _, FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY); RegAdminCmd("sm_clansort", Clan, ADMFLAG_GENERIC, "sm_clansort <clan tag> <t | ct>"); } public Action:Clan(client, args) { decl String:buffer[32]; decl String:buffer2[5]; if(args < 2) { ReplyToCommand(client, "[ClanSort] Usage: sm_clansort <clan tag> <t | ct>"); return Plugin_Handled; } GetCmdArg(1, buffer, sizeof(buffer)); GetCmdArg(2, buffer2, sizeof(buffer2)); new team; if(StrEqual(buffer2, "t", false)) { team = 2; } else if(StrEqual(buffer2, "ct", false)) { team = 3; } else { ReplyToCommand(client, "[ClanSort] Team not found"); return Plugin_Handled; } new String:ClanTag[MAXPLAYERS+1][32]; for (new i = 1; i <= MaxClients; i++) { if (!IsClientInGame(i) || IsFakeClient(i)) { continue; } CS_GetClientClanTag(i, ClanTag[client], sizeof(ClanTag[])); #if defined DEBUG PrintToServer("Tag(%d) = '%s'", i, ClanTag[client]); #endif if(StrEqual(buffer, ClanTag[client])) { #if defined DEBUG PrintToServer("Team Switched"); #endif CS_SwitchTeam(i, team); } } return Plugin_Handled; }
Действительно, не рационально вышло. Учту.Зачем создавать такой огромный двумерный массив? Нельзя обойтись одной строкой-буфером?
//Some crazy code
decl String:szClanTag[32];
for (new i = 1; i <= MaxClients; i++)
{
if (!IsClientInGame(i) || IsFakeClient(i))
{
continue;
}
CS_GetClientClanTag(i, szClanTag, sizeof(szClanTag));
if(StrEqual(buffer, szClanTag))
{
CS_SwitchTeam(i, team);
}
}
//Some crazy code
SourceMod 1.4.* ?в момент запуска пишет CS_GetClientClanTag was not found
SM. 1.4.2... SourceMod 1.4.* ?