selam herkese, dün istek konusudna bir arkadaşın attığı eklentiyi kendimize göre düzenledik ve sağolsun suriyelikeneninde yardımlarıyla bizimde aradağımız birşeyde yardımcı oldu arkadaşa olduğu gibi. şöyle bir problem var, mesela biz tagı eklenti içerisinde ayarlıyoruz problem yok ama diyelim örnek olarak [ Steam+ Chief Admin ] böyle bi tagımız var bu adam normal y sayden yazınca problem olmuyor ancak u sayden yazınca u sayde bulunan (TE) Tagı adamda görünmüyor çünkü tag çok uzun olmuş oluyor. Bunun çözümü nasıl olabilir? ve bu bizim 2 tane tag vereceğimiz oyunculardada böyle bir problem olacağını düşünüyoruz. Ancak CSD'nin kendi adminchatında böyle bir problem yok nasıl önüne geçebiliriz?
Kod:
///----------------------------------------
/// The author is Ian Cammarata
/// Editors are Yek'-ta and PurposeLess
/// Optimized and Powered by PurposeLess
///----------------------------------------
#include <amxmodx>
#include <reapi_reunion>
native csd_checkuserac(id);
new alv_sndr, alv_str2[26], alv_str4[101];
new msg[200], saytext;
const TaskId = 144;
public plugin_precache()
{
saytext = get_user_msgid("SayText");
}
public plugin_init()
{
register_plugin("SteamCHAT", "1.2", "Ian Cammara");
register_message(saytext, "message_saytext")
}
public message_saytext(msgid, msgdest, receiver)
{
new str2[26]
get_msg_arg_string(2, str2, charsmax(str2))
static const Cstrike_Chat[] = "#Cstrike_Chat";
if(equal(str2, Cstrike_Chat, 13))
{
new str3[22], len;
get_msg_arg_string(3, str3, charsmax(str3))
len = strlen(str3);
if(!len)
{
new str4[101]
get_msg_arg_string(4, str4, charsmax(str4))
if(str4[0] == '/' || str4[0] == '.' || str4[0] == '!')
{
return PLUGIN_HANDLED;
}
new sndr = get_msg_arg_int(1)
static const Cstrike_Chat_All[] = "#Cstrike_Chat_All";
new bool:is_team_msg = !bool:equal(str2, Cstrike_Chat_All, 17)
new sndr_team = get_user_team(sndr)
new bool:is_sndr_spec = !bool:(0 < sndr_team < 3)
new bool:same_as_last = bool:(alv_sndr == sndr && equal(alv_str2, str2) && equal(alv_str4, str4))
if(!same_as_last)
{
if(!(is_team_msg && (is_sndr_spec || is_team_msg)))
{
new flags[5], team[10]
flags = is_user_alive(sndr) ? "bc":"ac";
if(is_team_msg)
{
len = strlen(flags);
add(flags[len], charsmax(flags) - len, "e")
if(sndr_team == 1) team = "TERRORIST"
else team = "CT"
}
new players[32], num
static Uid
get_players(players, num, flags, team)
if(get_user_flags(sndr) & ADMIN_RESERVATION)
buildmsg(sndr, is_sndr_spec, is_team_msg, sndr_team, str4)
else buildmsg(sndr, is_sndr_spec, is_team_msg, sndr_team, str4)
for(new i=0; i < num; i++)
{
Uid = players[i];
if(is_user_alive(Uid) && get_user_flags(Uid) & ADMIN_RESERVATION|| !is_user_alive(Uid)){
client_print_color(Uid, sndr, msg);
//message_begin(MSG_ONE, saytext, _, Uid)
//write_byte(sndr)
//write_string(msg)
//message_end()
}
}
}
alv_sndr = sndr
alv_str2 = str2
alv_str4 = str4
if(task_exists(TaskId)) remove_task(TaskId)
set_task(0.1, "task_clear_antiloop_vars", TaskId)
}
if(!same_as_last) buildmsg(sndr, is_sndr_spec, is_team_msg, sndr_team, str4)
set_msg_arg_string(2, msg)
set_msg_arg_string(4, "")
}
}
return PLUGIN_CONTINUE
}
public buildmsg(sndr, is_sndr_spec, is_team_msg, sndr_team, str4[ ])
{
new sndr_name[33]
get_user_name(sndr, sndr_name, charsmax(sndr_name))
new prefix[30] = "^x01"
new flags = get_user_flags(sndr);
new authid[MAX_AUTHID_LENGTH];
get_user_authid(sndr,authid,charsmax(authid));
if(flags > 0 && !(flags & ADMIN_USER))
{
if(equali(authid,"STEAM_0:0:8713385555"))
{
if(is_user_steam(sndr))
{
prefix = csd_checkuserac(sndr) ? "^x04[^x03Steam+ MRA^x04] [ssss] ^x02":"^x04[Steam MRA] [ssss] ^x03";
}
else
{
prefix = "^x04[ala] ^x01"
}
}
else if(equali(authid,"STEAM_0:1:577965555"))
{
if(is_user_steam(sndr))
{
prefix = csd_checkuserac(sndr) ? "^x03[^x04 Steam+ emr ^x03] ^x03":"^x04[Steam emr] ^x03";
}
else
{
prefix = "^x04[emr] ^x01"
}
}
else if(flags & ADMIN_PASSWORD) //CHİEF ADMİN
{
if(is_user_steam(sndr))
{
prefix = csd_checkuserac(sndr) ? "^x03[^x04 Steam+ Chief Admin ^x03] ^x03":"^x03[^x04 Steam Chief Admin ^x03] ^x03";
}
else
{
prefix = "^x03[^x04 Chief Admin ^x03] ^x03"
}
}
else if(flags & ADMIN_KICK)
{
if(is_user_steam(sndr))
{
prefix = csd_checkuserac(sndr) ? "^x04[Steam+ Admin] ^x01":"^x04[Steam Admin] ^x01";
}
else
{
prefix = "^x04[Admin] ^x01"
}
}
else if(flags & ADMIN_RESERVATION)
{
if(is_user_steam(sndr))
{
prefix = csd_checkuserac(sndr) ? "^x04[Steam+ Slot] ^x01":"^x04[Steam Slot] ^x01";
}
else
{
prefix = "^x04[Slot] ^x01"
}
}
}
else {
if(is_user_steam(sndr))
{
prefix = csd_checkuserac(sndr) ? "^x03[^x04 Steam+ Oyuncu ^x03] ^x03":"^x03[^x04 Steam Oyuncu ^x03] ^x03";
}
}
new len = strlen(prefix);
if(is_sndr_spec) add(prefix[len], charsmax(prefix) - len, "¤")
else if(!is_user_alive(sndr)) add(prefix[len], charsmax(prefix) - len, "xx ")
if(is_team_msg)
{
if(is_sndr_spec) add(prefix[len], charsmax(prefix) - len, "(SPEC) ")
else if(sndr_team == 1) add(prefix[len], charsmax(prefix) - len, "[^x04TE^x03] ")
else if(sndr_team == 2) add(prefix[len], charsmax(prefix) - len, "[^x04 CT ^x03] ")
}
if(flags > 0 && !(flags & ADMIN_USER))
{
format(msg, 199, "%s^x03%s : ^x04%s",\
len > 1 ? prefix : "",\
sndr_name, str4)
}
else{
format(msg, 199, "%s^x03%s : ^x01%s",\
len > 1 ? prefix : "",\
sndr_name, str4)
}
return PLUGIN_HANDLED
}
public task_clear_antiloop_vars()
{
alv_sndr = 0
alv_str2 = ""
alv_str4 = ""
return PLUGIN_HANDLED
}