как знаешь, я буду себе сам делатьkdlp-gameevents тут показывает когда игрок подк. страну стим , мне это не надо . Мне нужна когда при выборе команды только было
public Plugin:myinfo =
{
name = "[KDLP] Game Events - Team",
author = "KorDen & AlmazON",
description = "Замена сообщений смены команд",
version = "1.0.1",
url = "http://hlmod.ru/"
}
public OnPluginStart() HookEvent("player_team", PT, EventHookMode_Pre);
public Action:PT(Handle:E, String:N[], bool:B)
{
if(B==false) if(GetEventBool(E,"disconnect")==false) if(GetEventBool(E,"silent")==false)
{
new c=GetClientOfUserId(GetEventInt(E,"userid")), i=MaxClients;
switch(GetEventInt(E,"team"))
{
case 1:do if(IsClientInGame(i)) PrintToChat(i, "\x04Игрок \x07FFFFFF>>>\x078b00ff%N\x07FFFFFF<<< \x04решил \x01отдохнуть", c);
while(--i);
case 2:do if(IsClientInGame(i)) PrintToChat(i, "\x04Игрок \x07FFFFFF>>>\x078b00ff%N\x07FFFFFF<<< \x04зашел за \x07FF4040Теров", c);
while(--i);
case 3:do if(IsClientInGame(i)) PrintToChat(i, "\x04Игрок \x07FFFFFF>>>\x078b00ff%N\x07FFFFFF<<< \x04зашел за \x0799CCFFКонтров", c);
while(--i);
}SetEventBroadcast(E, true);
return Plugin_Changed;
}return Plugin_Continue;
}
static const String:msg[][] =
{
"решил \x01отдохнуть",
"зашел за \x07FF4040Теров",
"зашел за \x0799CCFFКонтров"
};
public OnPluginStart()
{
HookEvent("player_team", Event_Team, EventHookMode_Pre);
}
public Action:Event_Team(Handle:event, String:name[], bool:dontBroadcast)
{
static client, team;
if(dontBroadcast || GetEventBool(event,"disconnect") || GetEventBool(event,"silent")
|| !(client = GetClientOfUserId(GetEventInt(event,"userid"))) || (team = GetEventInt(event,"team") - 1) < 0)
return Plugin_Continue;
PrintToChatAll("\x04Игрок \x07FFFFFF>>>\x078b00ff%N\x07FFFFFF<<< \x04%s", client, msg[team]);
SetEventBroadcast(event, true);
return Plugin_Changed;
}
Для ксго нужно будет подключить библиотеку цветов. И вместо HEX кодов указывать тэги цветов. Подробнее можешь прочесть в моей теме (Инструкция: Как покрасить любой плагин?), если реально хочешь научиться правильно красить и без напряга.PrintToChatAll("\x04Игрок \x07FFFFFF>>>\x078b00ff%N\x07FFFFFF<<< \x04%s", client, msg[team]);
В этой строчки цвет менять? а то эти цвета на ксго не работают
правильно я сделал?Для ксго нужно будет подключить библиотеку цветов. И вместо HEX кодов указывать тэги цветов. Подробнее можешь прочесть в моей теме (Инструкция: Как покрасить любой плагин?), если реально хочешь научиться правильно красить и без напряга.
Так будет правильнее.правильно я сделал?
Спасибо большое!Так будет правильнее.
А не сможешь сделать, чтоб блокировались стандартные подключения и отключения игрока,@Wise Hand, так будет немного получше, кмк:PHP:static const String:msg[][] = { "решил \x01отдохнуть", "зашел за \x07FF4040Теров", "зашел за \x0799CCFFКонтров" }; public OnPluginStart() { HookEvent("player_team", Event_Team, EventHookMode_Pre); } public Action:Event_Team(Handle:event, String:name[], bool:dontBroadcast) { static client, team; if(dontBroadcast || GetEventBool(event,"disconnect") || GetEventBool(event,"silent") || !(client = GetClientOfUserId(GetEventInt(event,"userid"))) || (team = GetEventInt(event,"team") - 1) < 0) return Plugin_Continue; PrintToChatAll("\x04Игрок \x07FFFFFF>>>\x078b00ff%N\x07FFFFFF<<< \x04%s", client, msg[team]); SetEventBroadcast(event, true); return Plugin_Changed; }
public OnPluginStart()
{
HookEvent("player_disconnect", Event_Connect, EventHookMode_Pre);
HookEvent("player_connect", Event_Connect, EventHookMode_Pre);
}
public Action:Event_Connect(Handle:event, String:name[], bool:dontBroadcast)
{
SetEventBroadcast(event, false);
return Plugin_Changed;
}
Спасибо большое. Это можно добавить к team_change_notify или обязательно как отдельный плагин?@skolobes, вот так:PHP:public OnPluginStart() { HookEvent("player_disconnect", Event_Connect, EventHookMode_Pre); HookEvent("player_connect", Event_Connect, EventHookMode_Pre); } public Action:Event_Connect(Handle:event, String:name[], bool:dontBroadcast) { SetEventBroadcast(event, false); return Plugin_Changed; }
static const String:msg[][] =
{
"решил \x01отдохнуть",
"зашел за \x07FF4040Теров",
"зашел за \x0799CCFFКонтров"
};
public OnPluginStart()
{
HookEvent("player_team", Event_Team, EventHookMode_Pre);
}
public Action:Event_Team(Handle:event, String:name[], bool:dontBroadcast)
{
static client, team;
if(dontBroadcast || GetEventBool(event,"disconnect") || GetEventBool(event,"silent")
|| !(client = GetClientOfUserId(GetEventInt(event,"userid"))) || (team = GetEventInt(event,"team") - 1) < 0)
return Plugin_Continue;
PrintToChatAll("\x04Игрок \x07FFFFFF>>>\x078b00ff%N\x07FFFFFF<<< \x04%s", client, msg[team]);
SetEventBroadcast(event, false);
return Plugin_Changed;
}
Не блокирует@skolobes, вот так:PHP:public OnPluginStart() { HookEvent("player_disconnect", Event_Connect, EventHookMode_Pre); HookEvent("player_connect", Event_Connect, EventHookMode_Pre); } public Action:Event_Connect(Handle:event, String:name[], bool:dontBroadcast) { SetEventBroadcast(event, false); return Plugin_Changed; }
public Action PlayerTeam(Event E, const char[] N, bool B)
{
if(E.GetBool("disconnect")==false) if(E.GetBool("silent")==false) if(E.GetInt("team")==1)
{
char t[PLATFORM_MAX_PATH];
FormatEx(t,sizeof(t), "\x01 \03%N \x01> \x05spectate", GetClientOfUserId(E.GetInt("userid")));
STA(t);
}return Plugin_Handled;
}
public Action PlayerTeam(Event E, const char[] N, bool B)
{
if(E.GetBool("disconnect")==false) if(E.GetBool("silent")==false)
{
char t[PLATFORM_MAX_PATH];
int iTeam = E.GetInt("team");
FormatEx(t,sizeof(t), "\x01 \03%N \x01> \x05%s", GetClientOfUserId(E.GetInt("userid")), (iTeam == 1 ? "spectate" : (iTeam == 2 ? "terrorist " : "counter-terrorist")));
STA(t);
}return Plugin_Handled;
}
Функция STA например, так и не ясно, что делает.
void STA(const char[] t)
{
int i, p;
int[] c=new int[i=iMC];
do if(IsClientInGame(i)) c[p++] = i;
while(--i);
if(p)
{
Handle m;
PbSetInt(m=StartMessage("SayText2", c,p, USERMSG_RELIABLE|USERMSG_BLOCKHOOKS), "ent_idx",c[0]);
PbSetBool(m, "chat",true);
PbSetString(m, "msg_name",t);
do PbAddString(m, "params","");
while(++i<4);
EndMessage();
}
}