s777
Участник
- Сообщения
- 449
- Реакции
- 74
- Операционная система
- Linux
- Список мета-модулей
-
[01] SourceMod (1.10.0.6459) by AlliedModders LLC
[02] BanId Fix (1.0) by Phoenix (˙·٠●Феникс●٠·˙)
[03] SDK Tools (1.10.0.6459) by AlliedModders LLC
[04] CS Tools (1.10.0.6459) by AlliedModders LLC
[05] SteamWorks Extension (1.2.3) by Kyle Sanderson
[06] SDK Hooks (1.10.0.6459) by AlliedModders LLC
[07] PTaH (1.1.1) by Phoenix (˙·٠●Феникс●٠·˙)
[08] SendProxy Manager (1.2) by Afronanny
[09] DHooks (2.2.0-detours9) by Dr!fter
- Список расширений SM
-
[01] Automatic Updater (1.10.0.6459): Updates SourceMod gamedata files
[02] Webternet (1.10.0.6459): Extension for interacting with URLs
[03] Accelerator (2.5.0): SRCDS Crash Handler
[04] BanId Fix (1.0): Correcting 'Ghost players' error
[05] SDK Tools (1.10.0.6459): Source SDK Tools
[06] BinTools (1.10.0.6459): Low-level C/C++ Calling API
[07] CS Tools (1.10.0.6459): CS extended functionality
[08] SteamWorks Extension (1.2.3): Exposes SteamWorks functions to Developers
[09] Regex (1.10.0.6459): Provides regex natives for plugins
[10] SDK Hooks (1.10.0.6459): Source SDK Hooks
[11] Top Menus (1.10.0.6459): Creates sorted nested menus
[12] Client Preferences (1.10.0.6459): Saves client preference settings
[13] SQLite (1.10.0.6459): SQLite Driver
[14] PTaH (1.1.1): Additional CS:GO Hooks and Natives
[15] SendProxy Manager (1.2): Change stuff without actually changing stuff!
[16] TAU LIB (1.4):
[17] DHooks (2.2.0-detours9): Dynamic Hooks
[18] MySQL-DBI (1.10.0.6459): MySQL driver implementation for DBI
Вечер добрый. Проблема - не заменяется стандартный префикс [SM] в чате. Предоставляю 2 варианта плагина, ни один не работает. Ньюанс в том, что пару лет все работало прекрасно, до недавнего времени (позавчера перестало). Ошибок нет
UPD: Проблема решилась сама по себе
C-подобный:
#include <sourcemod>
#include <csgo_colors>
#pragma semicolon 1
#define MAXTEXTCOLORS 100
// Plugin definitions
#define PLUGIN_VERSION "0.32"
public Plugin:myinfo =
{
name = "Default SM Text Replacer",
author = "Феня 228",
description = "Расскрашивает теги SM",
version = PLUGIN_VERSION,
url = "hlmod.ru"
};
new Handle:cvar_randomcolor = INVALID_HANDLE;
new UseRandomColors = 0;
new CountColors = 0;
new String:TextColors[MAXTEXTCOLORS][256];
public OnPluginStart()
{
cvar_randomcolor = CreateConVar( "sm_textcol_random", "1", "Рандомно цвета=1,По очереди 0.");
AutoExecConfig(true, "sm_textreplacer");
HookConVarChange(cvar_randomcolor, Event_CvarChange);
CreateConVar("sm_textreplacer_version", PLUGIN_VERSION, "text replacer version", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY);
RegAdminCmd("sm_reloadstc", Command_ReloadConfig, ADMFLAG_CONFIG, "Reloads Text color's config file");
HookUserMessage(GetUserMessageId("TextMsg"), TextMsg, true);
}
public Action:Command_ReloadConfig(client, args) {
RefreshConfig();
LogAction(client, -1, "Reloaded [SM] Text replacer config file");
ReplyToCommand(client, "[STC] Reloaded config file.");
return Plugin_Handled;
}
public OnConfigsExecuted()
{
RefreshConfig();
}
public Event_CvarChange(Handle:convar, const String:oldValue[], const String:newValue[])
{
RefreshConfig();
}
stock RefreshConfig()
{
UseRandomColors = GetConVarInt(cvar_randomcolor);
for (new X = 0; X < MAXTEXTCOLORS; X++)
{
//Format(TextColors[X], sizeof(TextColors), "");
TextColors[X] = "";
}
decl String:sPaths[PLATFORM_MAX_PATH];
BuildPath(Path_SM, sPaths, sizeof(sPaths),"configs/sm_textcolors.cfg");
new Handle:hFile = OpenFile(sPaths, "r");
new String:sBuffer[256];
//new len;
CountColors = -1;
while (ReadFileLine(hFile, sBuffer, sizeof(sBuffer)))
{
/*len = strlen(sBuffer);
if (sBuffer[len-1] == '\n')
sBuffer[--len] = '\0';*/
TrimString(sBuffer);
if(!StrEqual(sBuffer,"",false)){
CGOReplaceColorSay(sBuffer, 256);
CountColors++;
Format(TextColors[CountColors], sizeof(TextColors), "%s", sBuffer);
PrintToChatAll(" %s", sBuffer);
}
}
CloseHandle(hFile);
}
public Action:TextMsg(UserMsg:msg_id, Handle:bf, const players[], playersNum, bool:reliable, bool:init)
{
if(CountColors != -1)
{
if(reliable)
{
new String:buffer[PLATFORM_MAX_PATH];
PbReadString(bf, "params", buffer, sizeof(buffer), 0);
if(StrContains(buffer, "[SM]") == 0)
{
new Handle:pack;
CreateDataTimer(0.0, timer_strip, pack);
WritePackCell(pack, playersNum);
for(new i = 0; i < playersNum; i++)
{
WritePackCell(pack, players);
}
WritePackString(pack, buffer);
ResetPack(pack);
return Plugin_Handled;
}
}
}
return Plugin_Continue;
}
public Action:timer_strip(Handle:timer, Handle:pack)
{
new playersNum = ReadPackCell(pack);
new players[playersNum];
new client, count;
for(new i = 0; i < playersNum; i++)
{
client = ReadPackCell(pack);
if(IsClientInGame(client))
{
players[count++] = client;
}
}
if(count < 1) return;
playersNum = count;
new String:buffer[255];
ReadPackString(pack, buffer, sizeof(buffer));
new String:QuickFormat[255];
new ColorChoose = 0;
if(UseRandomColors == 1) ColorChoose = GetRandomInt(0, CountColors);
Format(QuickFormat, sizeof(QuickFormat), " %s", TextColors[ColorChoose]);
ReplaceStringEx(buffer, sizeof(buffer), "[SM]", QuickFormat);
new Handle:Pb = StartMessage("SayText2", players, playersNum, USERMSG_RELIABLE|USERMSG_BLOCKHOOKS);
PbSetInt(Pb, "ent_idx", -1);
PbSetBool(Pb, "chat", true);
PbSetString(Pb, "msg_name", buffer);
PbAddString(Pb, "params", "");
PbAddString(Pb, "params", "");
PbAddString(Pb, "params", "");
PbAddString(Pb, "params", "");
EndMessage();
}
C-подобный:
new Handle:g_PrefixName = INVALID_HANDLE;
public Plugin:myinfo = {
name = "SM Prefix Change",
author = "dkzinhoo",
description = "Change SM PREFIX",
version = "v7",
};
public OnPluginStart()
{
if(GetUserMessageType() == UM_Protobuf)
{
HookUserMessage(GetUserMessageId("TextMsg"), TextMsg, true);
}
g_PrefixName = CreateConVar("sm_prefix_name", "[Battles]", "Set your prefix name.", FCVAR_PLUGIN);
}
public Action:TextMsg(UserMsg:msg_id, Handle:pb, players[], playersNum, bool:reliable, bool:init)
{
if(!reliable || PbReadInt(pb, "msg_dst") != 3)
{
return Plugin_Continue;
}
new String:buffer[256];
PbReadString(pb, "params", buffer, sizeof(buffer), 0);
if(StrContains(buffer, "[SM] ") == 0)
{
new Handle:pack;
CreateDataTimer(0.0, change_prefix, pack, TIMER_FLAG_NO_MAPCHANGE);
WritePackCell(pack, playersNum);
for(new i = 0; i < playersNum; i++)
{
WritePackCell(pack, players);
}
WritePackCell(pack, strlen(buffer));
WritePackString(pack, buffer);
ResetPack(pack);
return Plugin_Handled;
}
return Plugin_Continue;
}
public Action:change_prefix(Handle:timer, Handle:pack)
{
new playersNum = ReadPackCell(pack);
new players[playersNum];
new player, players_count;
for(new i = 0; i < playersNum; i++)
{
player = ReadPackCell(pack);
if(IsClientInGame(player))
{
players[players_count++] = player;
}
}
playersNum = players_count;
if(playersNum < 1)
{
return;
}
new Handle:pb = StartMessage("TextMsg", players, playersNum, USERMSG_BLOCKHOOKS);
PbSetInt(pb, "msg_dst", 3);
new buffer_size = ReadPackCell(pack)+15;
new String:buffer[buffer_size];
ReadPackString(pack, buffer, buffer_size);
decl String:sBuffer[32];
GetConVarString(g_PrefixName, sBuffer, sizeof(sBuffer));
Format(buffer, buffer_size, " \x04%s\x01%s", sBuffer,buffer[4]);
PbAddString(pb, "params", buffer);
PbAddString(pb, "params", NULL_STRING);
PbAddString(pb, "params", NULL_STRING);
PbAddString(pb, "params", NULL_STRING);
PbAddString(pb, "params", NULL_STRING);
EndMessage();
}
C-подобный:
/* Colors available=>
\x01 = default
\x02 = darkred
\x03 = purple/teamcolor (idk)
\x04 = green
\x05 = lightgreen
\x06 = lime
\x07 = red
\x08 = grey
\x09 = yellow
\x0A = bluegrey
\x0B = blue
\x0C = darkblue
\x0D = grey2
\x0E = orchid
\x0F = lightred
\x10 = gold
*/
#include <sourcemod>
#pragma semicolon 1
#define MAXTEXTCOLORS 100
#define SERVER_TAG "[\x0CMy Server Tag\x01]"
// Plugin definitions
#define PLUGIN_VERSION "1.0"
public Plugin:myinfo =
{
name = "Default SM Text Replacer",
author = "Mitch/Bacardi/Cruze",
description = "Replaces the '[SM]' text with more color!",
version = PLUGIN_VERSION,
url = ""
};
public OnPluginStart()
{
HookUserMessage(GetUserMessageId("TextMsg"), TextMsg, true);
}
public Action:TextMsg(UserMsg:msg_id, Handle:bf, const players[], playersNum, bool:reliable, bool:init)
{
if(reliable)
{
new String:buffer[256];
PbReadString(bf, "params", buffer, sizeof(buffer), 0);
if(StrContains(buffer, "[SM]") == 0)
{
new Handle:pack;
CreateDataTimer(0.0, timer_strip, pack);
WritePackCell(pack, playersNum);
for(new i = 0; i < playersNum; i++)
{
WritePackCell(pack, players[i]);
}
WritePackString(pack, buffer);
ResetPack(pack);
return Plugin_Handled;
}
}
return Plugin_Continue;
}
public Action:timer_strip(Handle:timer, Handle:pack)
{
new playersNum = ReadPackCell(pack);
new players[playersNum];
new client, count;
for(new i = 0; i < playersNum; i++)
{
client = ReadPackCell(pack);
if(IsClientInGame(client))
{
players[count++] = client;
}
}
if(count < 1) return;
playersNum = count;
new String:buffer[255];
ReadPackString(pack, buffer, sizeof(buffer));
new String:QuickFormat[255];
Format(QuickFormat, sizeof(QuickFormat), "%s", SERVER_TAG);
ReplaceStringEx(buffer, sizeof(buffer), "[SM]", QuickFormat);
new Handle:bf = StartMessage("SayText2", players, playersNum, USERMSG_RELIABLE|USERMSG_BLOCKHOOKS);
//BfWriteString(bf, buffer);
PbSetInt(bf, "ent_idx", -1);
PbSetBool(bf, "chat", true);
PbSetString(bf, "msg_name", buffer);
PbAddString(bf, "params", "");
PbAddString(bf, "params", "");
PbAddString(bf, "params", "");
PbAddString(bf, "params", "");
EndMessage();
}
UPD: Проблема решилась сама по себе
Последнее редактирование: