Oyun İçi Konuşmalar
Gönderilme zamanı: Sal May 07, 2019 1:32 pm
Arkadaşlar serverimda rütbe sistemine göre tag eklentisi var ve bu eklenti oyun içinde yazılan komutların gözükmesini engelliyor. Aynı zamanda u'dan basıp konuşan bir oyuncunun konuşmalarını adminler göremiyor. Aşağıda ki şekilde bir sma dosyası. İnceleyebilir misiniz? Oyun içinde yazılan komutları görmek istiyorum. ve adminlerimiz u'dan yazılanları okuyabilsinler. Örneğin /destek /redbull yazan oyuncuların yazılarını göremiyoruz
Kod: Tümünü seç
#include <amxmodx>
#include <amxmisc>
#include <csstats>
#define PLUGIN "Admin Chat Colors"
#define VERSION "2.0"
#define AUTHOR "Arion"
#define ACCESS_LEVEL ADMIN_RESERVATION
#define ADMIN_LISTEN ADMIN_ALL
#define RANK_NOTHING 0
#define RANK_PRIVATE 1
#define RANK_PRIVATE_FIRST_CLASS 2
#define RANK_CORPORAL 3
#define RANK_SERGEANT 4
#define RANK_STAFF_SERGEANT 5
#define RANK_GUNNERY_SERGEANT 6
#define RANK_MASTER_SERGEANT 7
#define RANK_COMMAND_SERGEANT 8
#define RANK_SECOND_LIEUTENANT 9
#define RANK_FIRST_LIEUTENANT 10
#define RANK_COLONEL 11
#define RANK_BRIGADIER_GENERAL 12
#define RANK_MAJOR_GENERAL 13
#define RANK_LIEUTENANT_GENERAL 14
#define RANK_GENERAL 15
#define RANK_GENERAL_OF_THE_ARMY 16
#define MAXRANKS 17
new PlayerRank[33]
new message[192]
new sayText
new teamInfo
new maxPlayers
new g_MessageColor
new g_NameColor
new g_AdminListen
new strName[191]
new strText[191]
new alive[11]
new const rankNames[MAXRANKS][] =
{
"[Ogrenci]",
"[Stajyer]",
"[Cirak]",
"[Usta]",
"[Usta Basi]",
"[Formen]",
"[Insaat Muhendisi]",
"[Proje Muhendisi]",
"[Saha Muhendisi]",
"[Santiye Sefi]",
"[Proje Muduru]",
"[Genel Mudur]",
"[Ceo]",
"[Muteahhit]",
"[CivilEngineer'S Silver]",
"[CivilEngineer'S Gold]",
"[CivilEngineer'S VIP]"
}
new const rankXP[MAXRANKS] =
{
0, 10, 25, 50, 100, 250, 500, 750, 1000, 1500, 2000, 2500, 3000, 4000, 5000, 6500, 8000
}
public plugin_init()
{
register_plugin (PLUGIN, VERSION, AUTHOR)
g_MessageColor = register_cvar ("amx_color", "2") // Message colors: [1] Default Yellow, [2] Green, [3] White, [4] Blue, [5] Red
g_NameColor = register_cvar ("amx_namecolor", "6") // Name colors: [1] Default Yellow, [2] Green, [3] White, [4] Blue, [5] Red, [6] Team-color
g_AdminListen = register_cvar ("amx_listen", "1") // Set whether admins see or not all messages (Alive, dead and team-only)
sayText = get_user_msgid ("SayText")
teamInfo = get_user_msgid ("TeamInfo")
maxPlayers = get_maxplayers()
register_message (sayText, "avoid_duplicated")
register_clcmd ("amx_color", "set_color", ACCESS_LEVEL, "<color>")
register_clcmd ("amx_namecolor", "set_name_color", ACCESS_LEVEL, "<color>")
register_clcmd ("amx_listen", "set_listen", ACCESS_LEVEL, "<1 | 0>")
register_clcmd ("say", "hook_say")
register_clcmd ("say_team", "hook_teamsay")
}
public avoid_duplicated (msgId, msgDest, receiver)
{
return PLUGIN_HANDLED
}
public hook_say(id)
{
read_args (message, 191)
remove_quotes (message)
if (message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message, "")) // Ignores Admin Hud Messages, Admin Slash commands,
// Gungame commands and empty messages
return PLUGIN_CONTINUE
new name[32]
get_user_name (id, name, 31)
new bool:admin = false
if (get_user_flags(id) & ACCESS_LEVEL)
admin = true
new isAlive
if (is_user_alive (id))
{
isAlive = 1
alive = "^x01"
}
else
{
isAlive = 0
alive = "^x01*OLU* "
}
static color[10]
static stats[8], hits[8]
get_user_stats(id, stats, hits)
new currentPlayerRank = 0;
while(currentPlayerRank < (MAXRANKS - 1))
{
if(stats[0] >= rankXP[currentPlayerRank + 1])
++currentPlayerRank;
else
break;
}
PlayerRank[id] = currentPlayerRank;
if (admin)
{
// Name
switch (get_pcvar_num (g_NameColor))
{
case 1:
format (strName, 191, "^x04%s %s%s", rankNames[currentPlayerRank], alive, name)
case 2:
format (strName, 191, "^x04%s %s^x04%s", rankNames[currentPlayerRank], alive, name)
case 3:
{
color = "SPECTATOR"
format (strName, 191, "^x04%s %s^x03%s", rankNames[currentPlayerRank], alive, name)
}
case 4:
{
color = "CT"
format (strName, 191, "^x04%s %s^x03%s", rankNames[currentPlayerRank], alive, name)
}
case 5:
{
color = "TERRORIST"
format (strName, 191, "^x04%s %s^x03%s", rankNames[currentPlayerRank], alive, name)
}
case 6:
{
get_user_team (id, color, 9)
format (strName, 191, "^x04%s %s^x03%s", rankNames[currentPlayerRank], alive, name)
}
}
// Message
switch (get_pcvar_num (g_MessageColor))
{
case 1: // Yellow
format (strText, 191, "%s", message)
case 2: // Green
format (strText, 191, "^x04%s", message)
case 3: // White
{
copy (color, 9, "SPECTATOR")
format (strText, 191, "^x03%s", message)
}
case 4: // Blue
{
copy (color, 9, "CT")
format (strText, 191, "^x03%s", message)
}
case 5: // Red
{
copy (color, 9, "TERRORIST")
format (strText, 191, "^x03%s", message)
}
}
}
else // Player is not admin. Team-color name : Yellow message
{
get_user_team (id, color, 9)
format (strName, 191, "^x04%s %s^x03%s", rankNames[currentPlayerRank], alive, name)
format (strText, 191, "%s", message)
}
format (message, 191, "%s^x01 : %s", strName, strText)
sendMessage (color, isAlive) // Sends the colored message
return PLUGIN_CONTINUE
}
public hook_teamsay(id)
{
new playerTeam = get_user_team(id)
new playerTeamName[19]
switch (playerTeam) // Team names which appear on team-only messages
{
case 1:
copy (playerTeamName, 11, "TEROR")
case 2:
copy (playerTeamName, 18, "POLIS")
default:
copy (playerTeamName, 9, "IZLEYICI")
}
read_args (message, 191)
remove_quotes (message)
if (message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message, "")) // Ignores Admin Hud Messages, Admin Slash commands,
// Gungame commands and empty messages
return PLUGIN_CONTINUE
new name[32]
get_user_name (id, name, 31)
new bool:admin = false
if (get_user_flags(id) & ACCESS_LEVEL)
admin = true
new isAlive
if (is_user_alive (id))
{
isAlive = 1
alive = "^x01"
}
else
{
isAlive = 0
alive = "^x01*OLU* "
}
static color[10]
static stats[8], hits[8]
get_user_stats(id, stats, hits)
new currentPlayerRank = 0;
while(currentPlayerRank < (MAXRANKS - 1))
{
if(stats[0] >= rankXP[currentPlayerRank + 1])
++currentPlayerRank;
else
break;
}
PlayerRank[id] = currentPlayerRank;
if (admin)
{
// Name
switch (get_pcvar_num (g_NameColor))
{
case 1:
format (strName, 191, "^x04%s %s(%s) %s", rankNames[currentPlayerRank], alive, playerTeamName, name)
case 2:
format (strName, 191, "^x04%s %s(%s) ^x04%s", rankNames[currentPlayerRank], alive, playerTeamName, name)
case 3:
{
color = "SPECTATOR"
format (strName, 191, "^x04%s %s(%s) ^x03%s", rankNames[currentPlayerRank], alive, playerTeamName, name)
}
case 4:
{
color = "CT"
format (strName, 191, "^x04%s %s(%s) ^x03%s", rankNames[currentPlayerRank], alive, playerTeamName, name)
}
case 5:
{
color = "TERRORIST"
format (strName, 191, "^x04%s %s(%s) ^x03%s", rankNames[currentPlayerRank], alive, playerTeamName, name)
}
case 6:
{
get_user_team (id, color, 9)
format (strName, 191, "^x04%s %s(%s) ^x03%s", rankNames[currentPlayerRank], alive, playerTeamName, name)
}
}
// Message
switch (get_pcvar_num (g_MessageColor))
{
case 1: // Yellow
format (strText, 191, "%s", message)
case 2: // Green
format (strText, 191, "^x04%s", message)
case 3: // White
{
copy (color, 9, "SPECTATOR")
format (strText, 191, "^x03%s", message)
}
case 4: // Blue
{
copy (color, 9, "CT")
format (strText, 191, "^x03%s", message)
}
case 5: // Red
{
copy (color, 9, "TERRORIST")
format (strText, 191, "^x03%s", message)
}
}
}
else // Player is not admin. Team-color name : Yellow message
{
get_user_team (id, color, 9)
format (strName, 191, "^x04%s %s(%s) ^x03%s", rankNames[currentPlayerRank], alive, playerTeamName, name)
format (strText, 191, "%s", message)
}
format (message, 191, "%s ^x01: %s", strName, strText)
sendTeamMessage (color, isAlive, playerTeam) // Sends the colored message
return PLUGIN_CONTINUE
}
public set_color (id, level, cid)
{
if (!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED
new arg[1], newColor
read_argv (1, arg, 1)
newColor = str_to_num (arg)
if (newColor >= 1 && newColor <= 5)
{
set_cvar_num ("amx_color", newColor)
set_pcvar_num (g_MessageColor, newColor)
if (get_pcvar_num (g_NameColor) != 1 &&
((newColor == 3 && get_pcvar_num (g_NameColor) != 3)
|| (newColor == 4 && get_pcvar_num (g_NameColor) != 4)
|| (newColor == 5 && get_pcvar_num (g_NameColor) != 5)))
{
set_cvar_num ("amx_namecolor", 2)
set_pcvar_num (g_NameColor, 2)
}
}
return PLUGIN_HANDLED
}
public set_name_color (id, level, cid)
{
if (!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED
new arg[1], newColor
read_argv (1, arg, 1)
newColor = str_to_num (arg)
if (newColor >= 1 && newColor <= 6)
{
set_cvar_num ("amx_namecolor", newColor)
set_pcvar_num (g_NameColor, newColor)
if ((get_pcvar_num (g_MessageColor) != 1
&& ((newColor == 3 && get_pcvar_num (g_MessageColor) != 3)
|| (newColor == 4 && get_pcvar_num (g_MessageColor) != 4)
|| (newColor == 5 && get_pcvar_num (g_MessageColor) != 5)))
|| get_pcvar_num (g_NameColor) == 6)
{
set_cvar_num ("amx_color", 2)
set_pcvar_num (g_MessageColor, 2)
}
}
return PLUGIN_HANDLED
}
public set_listen (id, level, cid)
{
if (!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED
new arg[1], newListen
read_argv(1, arg, 1)
newListen = str_to_num (arg)
set_cvar_num ("amx_listen", newListen)
set_pcvar_num (g_AdminListen, newListen)
return PLUGIN_HANDLED
}
public sendMessage (color[], alive)
{
new teamName[10]
for (new player = 1; player < maxPlayers; player++)
{
if (!is_user_connected(player))
continue
if(is_user_alive(player))
{
get_user_team (player, teamName, 9) // Stores user's team name to change back after sending the message
changeTeamInfo (player, color) // Changes user's team according to color choosen
writeMessage (player, message) // Writes the message on player's chat
changeTeamInfo (player, teamName) // Changes user's team back to original
}
else
{
get_user_team (player, teamName, 9) // Stores user's team name to change back after sending the message
changeTeamInfo (player, color) // Changes user's team according to color choosen
writeMessage (player, message) // Writes the message on player's chat
changeTeamInfo (player, teamName) // Changes user's team back to original
}
}
}
public sendTeamMessage (color[], alive, playerTeam)
{
new teamName[10]
for (new player = 1; player < maxPlayers; player++)
{
if (!is_user_connected(player))
continue
if (get_user_team(player) == playerTeam)
{
if (is_user_alive(player))
{
get_user_team (player, teamName, 9) // Stores user's team name to change back after sending the message
changeTeamInfo (player, color) // Changes user's team according to color choosen
writeMessage (player, message) // Writes the message on player's chat
changeTeamInfo (player, teamName) // Changes user's team back to original
}
else
{
get_user_team (player, teamName, 9) // Stores user's team name to change back after sending the message
changeTeamInfo (player, color) // Changes user's team according to color choosen
writeMessage (player, message) // Writes the message on player's chat
changeTeamInfo (player, teamName) // Changes user's team back to original
}
}
}
}
public changeTeamInfo (player, team[])
{
message_begin (MSG_ONE, teamInfo, _, player) // Tells to to modify teamInfo (Which is responsable for which time player is)
write_byte (player) // Write byte needed
write_string (team) // Changes player's team
message_end() // Also Needed
}
public writeMessage (player, message[])
{
message_begin (MSG_ONE, sayText, {0, 0, 0}, player) // Tells to modify sayText (Which is responsable for writing colored messages)
write_byte (player) // Write byte needed
write_string (message) // Effectively write the message, finally, afterall
message_end () // Needed as always
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1055\\ f0\\ fs16 \n\\ par }
*/