Перейти к содержанию
×
×
  • Создать...

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


Перейти к решению Решено Alexander_Batrakov,

Рекомендуемые сообщения

Добрый вечер форумчане. Хотел бы у вас спросить, есть ли тут люди, которые смогут помочь сделать голосовой чат на сервер CRMP. Всё оплачивается. 

 

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

Vova_Zenko.gif

Ссылка на сообщение

Есть же готовые скрипты и туториалы

Мне плевать сколько ты там код проверял, сколько раз переписал одно и тоже, ты забыл поставить запятую, я отказываюсь работать (с) MySQL.

Ссылка на сообщение
  • Решение

Если у тебя карта на 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);
}

 

 

Ссылка на сообщение

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу