
Стаж: 12 лет
Сообщений: 70
Благодарностей: 6
Полезность: 70
|
Всем привет! Есть плагин, который при подключении/отключении игрока пишет из какого он города. Хочу ещё подкрутить, чтобы для игрока обладающего флагом доступа ADMIN_LEVEL_G в нотификации добавлялся префикс VIP. Вроде написал правильно, но VIP пишет только, когда игрок отключается. При подключении, почему-то, не срабатывает. Помогите поправить! Ещё в логе вот такая ошибка стала появляться: Код L 07/31/2014 - 18:52:45: [AMXX] Run time error 4: index out of bounds L 07/31/2014 - 18:52:45: [AMXX] [0] colorchat.inc::ColorChat (line 70) L 07/31/2014 - 18:52:45: [AMXX] [1] sypex_geo.sma::client_disconnect (line 62) Код:
#include <amxmodx> #include <sypexgeo> #include <colorchat> enum _data { _ip[16], _name[64], _city[64], _cc2iso[3], _country[32], _region[64] } new data[_data];
public client_connect(id) { if(is_user_bot(id) || is_user_hltv(id)) return; get_user_ip(id,data[_ip],15,1); get_user_name(id,data[_name],63); sxgeo_data(data[_ip],data[_city],63,data[_country],63,data[_region],63,data[_cc2 iso],2);
/* * Заходит игрок Player - 89.67.32.89 [RU] Москва. * if( equal(data[_city], "error") ) data[_city] = "****"; * data[_name] Имя игрока. * data[_ip] IP Адрес. * data[_country] Страна. * data[_city] Город. * data[_region] Регион. * data[_cc2iso] Двухзначный код страны. */
if( get_user_flags(id) & ADMIN_LEVEL_G ) { ColorChat(0,TEAM_COLOR,"* ^01Пришёл VIP ^3%s^1 - ^04%s",data[_name],data[_city]); } else { ColorChat(0,TEAM_COLOR,"* ^01Пришёл ^3%s^1 - ^04%s",data[_name],data[_city]); }
}
public client_disconnect(id) { if(is_user_bot(id) || is_user_hltv(id)) return; get_user_ip(id,data[_ip],15,1); get_user_name(id,data[_name],63); sxgeo_data(data[_ip],data[_city],63,data[_country],63,data[_region],63,data[_cc2 iso],2);
if( get_user_flags(id) & ADMIN_LEVEL_G ) { ColorChat(0,RED,"^3* Отключился VIP ^4%s^3 - %s",data[_name],data[_city]); } else { ColorChat(0,RED,"^3* Отключился ^4%s^3 - %s",data[_name],data[_city]); }
} Код:
/* Fun functions * * by Numb * * This file is provided as is (no warranties). */
enum Color { NORMAL = 1, // clients scr_concolor cvar color GREEN, // Green Color TEAM_COLOR, // Red, grey, blue GREY, // grey RED, // Red BLUE, // Blue }
new TeamName[][] = { "", "TERRORIST", "CT", "SPECTATOR" }
ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...) { static message[256];
switch(type) { case NORMAL: // clients scr_concolor cvar color { message[0] = 0x01; } case GREEN: // Green { message[0] = 0x04; } default: // White, Red, Blue { message[0] = 0x03; } }
vformat(message[1], 251, msg, 4);
// Make sure message is not longer than 192 character. Will crash the server. message[192] = '^0';
static team, ColorChange, index, MSG_Type; if(id) { MSG_Type = MSG_ONE; index = id; } else { index = FindPlayer(); MSG_Type = MSG_ALL; } team = get_user_team(index); ColorChange = ColorSelection(index, MSG_Type, type);
ShowColorMessage(index, MSG_Type, message); if(ColorChange) { Team_Info(index, MSG_Type, TeamName[team]); } }
ShowColorMessage(id, type, message[]) { message_begin(type, get_user_msgid("SayText"), _, id); write_byte(id) write_string(message); message_end(); }
Team_Info(id, type, team[]) { message_begin(type, get_user_msgid("TeamInfo"), _, id); write_byte(id); write_string(team); message_end();
return 1; }
ColorSelection(index, type, Color:Type) { switch(Type) { case RED: { return Team_Info(index, type, TeamName[1]); } case BLUE: { return Team_Info(index, type, TeamName[2]); } case GREY: { return Team_Info(index, type, TeamName[0]); } }
return 0; }
FindPlayer() { static i; i = -1;
while(i <= get_maxplayers()) { if(is_user_connected(++i)) { return i; } }
return -1; }
|