new SV_LSTREAM:localchat[MAX_PLAYERS] = { SV_NULL, ... };
public SV_VOID:OnPlayerActivationKeyPress(SV_UINT
layerid,SV_UINT:keyid)//Игрок нажмал на кнопку
{
if (keyid == 0x42 || localchat[playerid])// Кнопка В 0x42
{
if(GetPVarInt(playerid, "ActivateFinal") == 1)
{
new Float
os[3];
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
if(IsPlayerInRangeOfPoint(playerid, 10.00, pos[0], pos[1], pos[2]))
{
SvAttachSpeakerToStream(localchat[playerid], playerid);
}
TogglePlayerControllable(playerid, true);
}
}
}
public SV_VOID:OnPlayerActivationKeyRelease(SV_UINT
layerid,SV_UINT:keyid)//Игрок отпустил кнопку
{
if (keyid == 0x42 || localchat[playerid])
{
if(GetPVarInt(playerid, "ActivateFinal") == 1)
{
new Float
os[3];
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
if(IsPlayerInRangeOfPoint(playerid, 10.00, pos[0], pos[1], pos[2]))
{
SvDetachSpeakerFromStream(localchat[playerid], playerid);
}
TogglePlayerControllable(playerid, true);
}
}
}
public OnPlayerConnect(playerid) return SetTimerEx("LoadVoice", 1000, false, "i", playerid);
forward LoadVoice(playerid);
public LoadVoice(playerid) return SetPVarInt(playerid, "ActivateVoice", 1);
public OnPlayerSpawn(playerid)
{
if (SvGetVersion(playerid) == SV_NULL) { SendClientMessage(playerid, -1, "У вас не установлен плагин SampVoice."); }
else if (SvGetVersion(playerid) < SV_VERSION) { SendClientMessage(playerid, -1, "У вас устаревшая версия плагина, возможна несовместимость. Обновите её."); }
else if (!SvHasMicro(playerid)) { SendClientMessage(playerid, -1, "У вас отсутствует микрофон. Вы можете слышать, но не сможете общаться."); }
if(GetPVarInt(playerid, "ActivateVoice") == 1)
{
localchat[playerid] = SvCreateDLStreamAtPlayer(40.0, SV_INFINITY, playerid, 0xff0000ff, "L");
SvAddKey(playerid, 0x42);
SetPVarInt(playerid, "ActivateFinal", 1);
}
return 1;
}
public OnGameModeInit()
{
SvDebug(SV_TRUE);
}
public OnPlayerDisconnect(playerid, reason)
{
if (localchat[playerid])
{
SvDeleteStream(localchat[playerid]);
localchat[playerid] = SV_NULL;
}
return 1;
}