Скрыть строку/ссылку 'Audio stream' для всех игроков?
Чтобы скрыть ссылку на аудиопоток вводится стандартная команда /audiomsg. Работает это для одного игрока.
Что можно сделать, чтобы эта строка вообще никогда не появлялась ни одному из игроков?
Наткнулся на одном из форумов на вот такой способ от человека под ником "l1ghter" - использование 2х инклудов.
Вот они:
1.
Код:
forward SendClientMessageUpdate(playerid,color,const message[]);
forward SendClientMessageToAllUpdate(color,const message[]);
stock PlayAudioStreamForPlayerUpdate(playerid, url[], Float:posX = 0.0, Float:posY = 0.0, Float:posZ = 0.0, Float:distance = 50.0, usepos = 0) {
PlayAudioStreamForPlayer(playerid, url, posX, posY, posZ,distance, usepos);
new bf[145]; new addsend[145];
for ( new l = 99; l > 0 ; l-- ) SendClientMessage(playerid,-1,"");
for ( new l = 99; l > -1; l-- ) {
new meSage[145]; format(bf, sizeof(bf), "Messages%d" , l); GetPVarString(playerid,bf, meSage ,144);
new string[145]; format(string, sizeof(string), "%s" , meSage); strdel(string, 0, 1);
format( addsend , sizeof( addsend ), "MessageC%d" , l); SendClientMessage(playerid,GetPVarInt(playerid, addsend ),string); }
return 1;
}
public SendClientMessageUpdate(playerid,color,const message[])
{
new messagesv[145],addsend[145],addsens[145];
format( messagesv , sizeof( messagesv ), "-%s",message);
SendClientMessage(playerid,color, message );
for ( new l = 99; l > 0 ; l-- )
{
new meSage[145]; new tiw[145],bf[145], tiw2[64],bf2[64];
format(bf, sizeof(bf), "Messages%d" , l-1); GetPVarString(playerid,bf, tiw , 145);
format(meSage, sizeof(meSage), "Messages%d" , l); SetPVarString( playerid, meSage , tiw);
format( tiw2, sizeof( tiw2 ), "MessageC%d" , l); format(bf2, sizeof(bf2), "MessageC%d" , l-1); SetPVarInt( playerid,tiw2, GetPVarInt(playerid, bf2) );
}
format( addsend , sizeof( addsend ), "Messages0" ); SetPVarString( playerid, addsend , messagesv );
format( addsens , sizeof( addsens ), "MessageC0"); SetPVarInt( playerid, addsens ,color );
return 1;
}
public SendClientMessageToAllUpdate(color,const message[])
{
for(new i =0;i<MAX_PLAYERS;i++) {
if(IsPlayerConnected(i)) {
SendClientMessageUpdate( i ,color, message ); } }
}
#define SendClientMessage(%1,%2,%3) SendClientMessageUpdate(%1,%2,%3)
#define SendClientMessageToAll(%1,%2) SendClientMessageToAllUpdate(%1,%2)
#define PlayAudioStreamForPlayer PlayAudioStreamForPlayerUpdate
2.
Код:
#undef MAX_PLAYERS
#define MAX_PLAYERS 32 // Bitte auf die Serverslot Zahl achten
#define MAX_CHAT_LINES 99 // Am besten so lassen ;)
#define SERVERIP "" // Hier bitte die IP des Server eintragen. Ohne Port!
native _SendClientMessage(playerid, Color, const string[]) = SendClientMessage;
native _PlayAudioStreamForPlayer(playerid, url[], Float:posX=0.0,Float:posY=0.0,Float:posZ=0.0,Float:distance=50.0,usepos=0)= PlayAudioStreamForPlayer;
#define SendClientMessage __SendClientMessage
#define PlayAudioStreamForPlayer __PlayAudioStreamForPlayer
enum _ch { _inhalt[128], _color }
new _Chat[MAX_PLAYERS][MAX_CHAT_LINES][_ch];
stock __SendClientMessage(playerid, Color, const string[])
{
for(new i=1;i!=MAX_CHAT_LINES;i++)
{
format(_Chat[playerid][i-1][_inhalt],128,_Chat[playerid][i][_inhalt]);
_Chat[playerid][i-1][_color]=_Chat[playerid][i][_color];
}
format(_Chat[playerid][MAX_CHAT_LINES-1][_inhalt],128,string);
_Chat[playerid][MAX_CHAT_LINES-1][_color]=Color;
_SendClientMessage(playerid, Color, string);
return true;
}
stock __PlayAudioStreamForPlayer(playerid, url[], Float:posX=0.0,Float:posY=0.0,Float:posZ=0.0,Float:distance=50.0,usepos=0)
{
_PlayAudioStreamForPlayer(playerid, url, posX,posY,posZ,distance,usepos);
for(new i;i!=MAX_CHAT_LINES-1;i++) _SendClientMessage(playerid,_Chat[playerid][i][_color],_Chat[playerid][i][_inhalt]);
return true;
}
Что тут в этих инклудах, я разобрать не могу, для меня это пока очень сложно. При установке и компилировании выдало 2 варнинга:
Код:
warning 201: redefinition of constant/macro (symbol "SendClientMessage")
warning 201: redefinition of constant/macro (symbol "PlayAudioStreamForPlayer")
Прошу оценить этот способ решения задачи или предложить более упрощенный вариант.