dialyabev, так через set_speak и не работает так как надо, или я что-то не то делаю, может подскажете)
Код:
#include <amxmodx>
#include <engine>
#define PLUGIN "voice chat"
#define VERSION "0.1"
#define AUTHOR "Public Code"
new bool:VoiceEnabled[33], g_iPlayerMenuPage[33], g_apPlayerMenuPlayers[33][32];
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("voice", "OpenVoiceMenu")
register_menucmd(register_menuid("Voice Menu"), 1023, "VoiceMenu");
}
public client_putinserver(pId)
{
NoVoice(pId);
}
public client_disconnect(pId)
{
NoVoice(pId);
}
public NoVoice(pId)
{
VoiceEnabled[pId] = false;
CheckVoice(pId);
}
public OpenVoiceMenu(pId)
{
if (!VoiceEnabled[pId])
{
VoiceEnabled[pId] = true;
ChatColor(pId, "^4[VOICE] ^1Вы вошли в голосовой чат");
CheckVoice(pId);
}
ShowVoiceMenu(pId, g_iPlayerMenuPage[pId] = 0);
return PLUGIN_HANDLED;
}
public ShowVoiceMenu(pId, iPage)
{
if (iPage < 0)
return PLUGIN_HANDLED;
new apPlayers[32];
new iPlayers;
new szMenu[512], szName[32];
new pPlayer;
get_players(apPlayers, iPlayers);
new i = min(iPage * 7, iPlayers);
new iStart = i - (i % 7);
new iEnd = min(iStart + 7, iPlayers);
iPage = iStart / 7;
g_apPlayerMenuPlayers[pId] = apPlayers;
g_iPlayerMenuPage[pId] = iPage;
new iLen = formatex(szMenu, 511, "\wCSDM \d| \rГолосовой чат^n\dС Вами в чате:^n^n");
new bitsKeys = MENU_KEY_0;
new iItem;
for (i = iStart; i < iEnd; i++)
{
pPlayer = apPlayers[i];
get_user_name(pPlayer, szName, 31);
if (VoiceEnabled[pPlayer])
{
if (pId == pPlayer)
{
bitsKeys |= (1 << iItem);
iLen += formatex(szMenu[iLen], 511 - iLen, "\r%d. \y%s^n", ++iItem, szName);
} else {
bitsKeys |= (1 << iItem);
iLen += formatex(szMenu[iLen], 511 - iLen, "\r%d. \w%s^n", ++iItem, szName);
}
}
}
if (iEnd < iPlayers)
{
bitsKeys |= MENU_KEY_8|MENU_KEY_9;
formatex(szMenu[iLen], 511 - iLen, "^n\r8. \yПокинуть чат^n^n\r9. \wДалее^n\r0. \w%s", iPage ? "Назад" : "Закрыть");
}
else
{
bitsKeys |= MENU_KEY_8;
formatex(szMenu[iLen], 511 - iLen, "^n\r8. \yПокинуть чат^n^n^n\r0. \w%s", iPage ? "Назад" : "Закрыть");
}
return show_menu(pId, bitsKeys, szMenu, -1, "Voice Menu");
}
public VoiceMenu(pId, iKey)
{
switch (iKey)
{
case 7:
{
VoiceEnabled[pId] = false;
ChatColor(pId, "^4[VOICE] ^1Вы покинули голосовой чат");
CheckVoice(pId);
}
case 8: ShowVoiceMenu(pId, ++g_iPlayerMenuPage[pId]);
case 9: ShowVoiceMenu(pId, --g_iPlayerMenuPage[pId]);
default:
{
//new pPlayer = g_apPlayerMenuPlayers[pId][(g_iPlayerMenuPage[pId] * 7) + iKey];
// ShowVoiceOptionsMenu(pId, pPlayer)
ShowVoiceMenu(pId, g_iPlayerMenuPage[pId]);
}
}
return PLUGIN_HANDLED;
}
public CheckVoice(pId)
{
if (VoiceEnabled[pId])
{
set_speak(pId, SPEAK_NORMAL);
} else {
set_speak(pId, SPEAK_MUTED);
}
}
stock ChatColor(const id, const szMessage[], any:...)
{
static pnum, players[32], szMsg[190], IdMsg;
vformat(szMsg, charsmax(szMsg), szMessage, 3);
if(!IdMsg) IdMsg = get_user_msgid("SayText");
if(id)
{
if(!is_user_connected(id)) return 0;
players[0] = id;
pnum = 1;
}
else get_players(players, pnum, "ch");
for(new i; i < pnum; i++)
{
message_begin(MSG_ONE, IdMsg, .player = players[i]);
write_byte(players[i]);
write_string(szMsg);
message_end();
}
return 1;
}
игроки которые вошли в чат слышат друг друга нормально, но если игрок вышел из чата, или вообще в его даже не заходил он все равно слышит тех кто в находится в чате?
где я накосячил?)