Код
/*
Changelog:
1.0 - релиз. Переделанная версия плагина join_ip_new (3.0)
Изменения: уменьшен код, добавлена поддержка multilanguage (en и ru) и добавлен квар amx_join_authid
Квары:
connect_client_msg <0|1|2|3|4|5|6> (по-умолчанию 1)
connect_client_msg 0 - отключает плагин (в том числе и звук)
connect_client_msg 1 - Показывает сообщение в чат только тогда, когда игрок соединяется на сервер.
connect_client_msg 2 - Показывает сообщение в чат только тогда, когда игрок присоединился за команду.
connect_client_msg 3 - Показывет сообщение в чат тогда, когда игрок соединяется на сервер и когда присоединился за команду.
connect_client_msg 4 - Показывет сообщение в чат тогда, когда игрок присоединился за команду и когда вышел с сервера.
connect_client_msg 5 - Показывет сообщение в чат тогда,когда игрок соединяется на сервер и когда вышел с сервера.
connect_client_msg 6 - Показывает сообщение во время соединения, присоединения за команду и выхода с сервера игрока.
connect_client_country <1|0> - вкл/выкл показ страны (по-умолчанию 1)
connect_client_ip <1|0> - вкл/выкл показ ip-адреса (по-умолчанию 1)
connect_client_authid <1|0> - вкл/выкл показ AuthID игрока (по-умолчанию 1)
connect_client_sound <1|0> - вкл/выкл воспроизведение звука, сообщающего о том, что игрок присоединился за команду (по-умолчанию 1)
1.1:
Изменения: по просьбе изменил перевод в ланг-файле
с CONNECT_IP_CONNECTING = соединяется на сервер
на CONNECT_IP_CONNECTING = заходит на сервер,
не воспроизводился звук в случаях connect_client_msg <1|3|5>,
добавил квар connect_client_sound,
подправил недочет, связанный с multi-lingual поддержкой.
1.2
в предыдущей версии допустил огромный косяк из-за
недочёта, связанного с multi-lingual поддержкой.
Эту версию перепроверил разными способами - всё ок
*/
#include <amxmodx>
#include <amxmisc>
#include <geoip>
//#include <colorchat>
#define MAXPLAYER 32
new maxplayers=MAXPLAYER
new id_send;
new temp;
new TeamInfo;
new SayText;
new g_CvarJoinMsg;
new g_CvarJoinCountry;
new g_CvarJoinIp;
new g_CvarJoinAuthId;
new g_CvarJoinSound
new Players[32]
new send_msg[200]
new bool:IsConnected[MAXPLAYER + 1];
new g_szSoundFile[] = "buttons/blip1.wav";
public plugin_init()
{
register_plugin("Connect IP Client", "1.2", "hunter");
register_dictionary("connect_ip_client.txt")
g_CvarJoinMsg = register_cvar("connect_client_msg", "6")
g_CvarJoinCountry = register_cvar("connect_client_country", "1")
g_CvarJoinIp = register_cvar("connect_client_ip", "1")
g_CvarJoinAuthId = register_cvar("connect_client_authid", "1")
g_CvarJoinSound = register_cvar("connect_client_sound", "1")
TeamInfo = get_user_msgid("TeamInfo");
SayText = get_user_msgid("SayText");
}
public plugin_precache()
{
precache_sound(g_szSoundFile);
}
public client_putinserver(player)
{
temp=get_pcvar_num(g_CvarJoinMsg);
IsConnected[player] = true;
if((temp >= 2 && temp<=4) || temp>=6)
{
show_msg(player,"CONNECT_IP_JOINED")
client_cmd(0,"hud_saytext_time 8")
client_cmd(0,"hud_deathnotice_time 8") //lol just my own remove if needed
}
if (temp>=1 && get_pcvar_num(g_CvarJoinSound)) client_cmd(0, "spk %s", g_szSoundFile)
}
public client_disconnect(player)
{
IsConnected[player] = false;
if(get_pcvar_num(g_CvarJoinMsg) >= 4) show_msg(player,"CONNECT_IP_DISCONNECTED");
}
public client_authorized(player)
{
temp=get_pcvar_num(g_CvarJoinMsg);
IsConnected[player] = false;
if(temp == 1 || temp==3 || temp>=5) show_msg(player,"CONNECT_IP_CONNECTING")
}
public show_msg(player,lang_msg[]){
new authid[35],user[32],ip[15],Country[33],msg[200],len;
get_user_name(player,user,31)
get_user_ip(player,ip,15,1)
get_user_authid(player,authid,34)
geoip_country(ip,Country)
len=format(msg,199,"^x04%s^x01",user);
if (get_pcvar_num(g_CvarJoinIp)==1) len+=format(msg[len],199," (^x03%s^x01)",ip);
if (get_pcvar_num(g_CvarJoinAuthId)==1) len+=format(msg[len],199," (^x03%s^x01)",authid);
len+=format(msg[len],199," %s","%L");
if (get_pcvar_num(g_CvarJoinCountry)==1) len+=format(msg[len],199," (^x03%s^x01)",Country);
format(msg[len],199,".");
print_in_chat(msg,lang_msg);
}
public print_in_chat(msg[200],lang_msg[])
{
id_send=get_player()
if (id_send!=-1)
{
new team,id
new team_name[10]
team = get_user_team(id_send);
team_name=get_team_name(team)
format(msg[192],199,"^0")
get_players(Players, maxplayers,"c")
for (new playerIdx=0;playerIdx<maxplayers; ++playerIdx)
{
id = Players[playerIdx];
if (!IsConnected[id]) continue
send_msg=msg;
formatex(send_msg,199,msg,id,lang_msg)
Team_Info(id,id_send,MSG_ONE,"TERRORIST");
message_begin(MSG_ONE, SayText,{0,0,0},id);
write_byte(id_send);
write_string(send_msg);
message_end();
Team_Info(id,id_send,MSG_ONE,team_name);
}
return 1;
}
return 0;
}
Team_Info(id_send,id_change,type,team[])
{
message_begin(type, TeamInfo,_,id_send);
write_byte(id_change);
write_string(team);
message_end();
return 1;
}
get_player()
{
for( new plr = 1; plr <= maxplayers; plr++ )
{
if( IsConnected[plr] )
{
return plr;
}
}
return -1;
}
get_team_name(team)
{
new team_name[10]
switch(team)
{
case 0:
{
team_name=""
}
case 1:
{
team_name="TERRORIST"
}
case 2:
{
team_name="CT"
}
case 3:
{
team_name="SPECTATOR"
}
}
return team_name
}