shape1
shape2
shape3
shape4
shape7
shape8

Голосовой чат


Vova_Zenko

Новичок
Пользователь
07.09.2017
282
4
0
21
Модпакер
Добрый вечер форумчане. Хотел бы у вас спросить, есть ли тут люди, которые смогут помочь сделать голосовой чат на сервер CRMP. Всё оплачивается. 

P.S. Администрация, если тема не в том разделе, то прошу перенести в правильный раздел. 

 

SweetyDeveloper

Освоившийся
Пользователь
09.08.2016
320
1
48
0
25
Есть же готовые скрипты и туториалы

 

Alexander_Batrakov

Новичок
Пользователь
13.09.2019
255
2
0
0
25
Игрок
Если у тебя карта на samp 0.3.7.

То щас напишу скрипт, тебе только останется скачать библиотеку sampvoice и плагин.

Локальный чат

new SV_LSTREAM:localchat[MAX_PLAYERS] = { SV_NULL, ... };

public SV_VOID:OnPlayerActivationKeyPress(SV_UINT:playerid,SV_UINT:keyid)//Игрок нажмал на кнопку
{
if (keyid == 0x42 || localchat[playerid])// Кнопка В 0x42
{
if(GetPVarInt(playerid, "ActivateFinal") == 1)
{
new Float:pos[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:playerid,SV_UINT:keyid)//Игрок отпустил кнопку
{
if (keyid == 0x42 || localchat[playerid])
{
if(GetPVarInt(playerid, "ActivateFinal") == 1)
{
new Float:pos[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;

}



Пример админского чата.

Код:
new adminchat = SV_NULL;
		
public SV_VOID:OnPlayerActivationKeyPress(SV_UINT:playerid,SV_UINT:keyid)
{
	if(GetPVarInt(playerid,"Admin") == 1)
	{
		if (keyid == 0x5A && adminchat) SvAttachSpeakerToStream(adminchat, playerid);
	}
}
CMD:setadmin(playerid)
{
	SetPVarInt(playerid, "Admin", 1);
	SvAddKey(playerid, 0x5A);
	if (adminchat) SvAttachListenerToStream(adminchat, playerid);
}
CMD:deladmin(playerid)
{
	SetPVarInt(playerid, "Admin", -1);
	SvRemoveKey(playerid, 0x5A);
	SvDetachListenerFromStream(adminchat, playerid);
}