Basic player range chat text
#1

Hello,
How to make a basic player range chat text?
so if he say something, only the other players in his range will receive what he said :/
Note: I have this fonction on my GM so you can help me find it too.
Here's the OnPlayerText part in my GM:
Quote:

public OnPlayerText(playerid, text[])
{
if(TutTime[playerid] >= 1 || RegistrationStep[playerid] >= 1) return 0;
new string[256];
///----- Anti SPAM -----///
if(text[0] && !strcmp (text, LastText[playerid]) && LastTextTime[playerid] > GetTickCount () && PlayerInfo[playerid][pAdmin] < 1) return 0;
LastTextTime[playerid] = GetTickCount() + SECONDS_BETWEEN_SAME_MSGS * 1000;
strcpy(LastText[playerid], text, 12;
///----- Anti SPAM -----///
///----- CHAT LOGS -----///
new var100[300],queryyy[300],totalchats,resulttt[300],result3[300];
if(Mobile[playerid] != -1)
{
format(result3, sizeof(result3),"(cellphone) %s",text);
}
else
{
format(result3, sizeof(result3),"%s",text);
}
mysql_real_escape_string(result3, resulttt);
mysql_format(SQL, var100, sizeof(var100), "INSERT INTO chat_logs (`playerid`,`text`) VALUES ('%d','%s')", PlayerInfo[playerid][pSQLID],resulttt);
mysql_tquery(SQL,var100,"","");
format(queryyy, sizeof(queryyy), "SELECT * FROM `chat_logs` WHERE `playerid`='%d'", PlayerInfo[playerid][pSQLID]);
new Cache: chatnums = mysql_query(SQL, queryyy);
for(new i=0, j = cache_get_row_count (); i != j; ++i)
{
totalchats++;
}
cache_delete(chatnums);
if(totalchats >= 12)
{
mysql_format(SQL, var100, sizeof(var100), "DELETE FROM `chat_logs` WHERE `playerid`='%d' ORDER BY `ID` ASC limit 2", PlayerInfo[playerid][pSQLID]);
mysql_tquery(SQL,var100,"","");
}
///----- CHAT LOGS -----///
if(FindIP(text)) /// Anti-Reclama
{
new advertiser[MAX_PLAYER_NAME];
GetPlayerName(playerid, advertiser, sizeof(advertiser));
format(string, sizeof(string), "{f03337}Warning: %s(%d) typed %s in chat.", advertiser, playerid, text);
ABroadCast(COLOR_WHITE,string,1);
}
for(new i; i < sizeof(TLD); i++)
{
if(strfind(text, TLD[i], true) != -1)
{
if(strfind(text, "www.s4uriK.ro", true) != -1 || strfind(text, "www.s4uriK.ro/forum", true) != -1 || strfind(text, "s4uriK.ro", true) != -1) break;
new advertiser[MAX_PLAYER_NAME];
GetPlayerName(playerid, advertiser, sizeof(advertiser));
format(string, sizeof(string), "{f03337}Warning: %s(%d) typed %s in chat.", advertiser, playerid, text);
ABroadCast(COLOR_WHITE,string,1);
}
}

new sendername[MAX_PLAYER_NAME];
new tmp[256];
format(string, sizeof(string), "\"%s\"", text);
SetPlayerChatBubble(playerid, text, COLOR_CHATBUBBLE, 10.0, 10000);
if(PlayerInfo[playerid][pMuted] == 1)
{
format(string, sizeof(string), "You can not speak, you have been silenced for %d seconds.",PlayerInfo[playerid][pMuteTime]);
SendClientMessage(playerid, COLOR_LIGHTRED, string);
return 0;
}
assert(AntiFlood_Check(playerid));
if(Answered == 0)
{
new idx;
tmp = strtok(text, idx);
if ((strcmp(FastString, tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen(FastString)))
{
new money = random(19000) + 1000;
Answered = 1;
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "Fast Event: {FFFFFF}%s a castigat fast-eventul si a primit $%s!", sendername, FormatNumber(money));
OOCNews(COLOR_LIGHTRED, string);
GivePlayerCash(playerid, money);
return 0;
}
}
if(TalkingLive[playerid] != 0)
{
GetPlayerName(playerid, sendername, sizeof(sendername));
if(PlayerInfo[playerid][pLeader] == 9 || PlayerInfo[playerid][pMember] == 9)
{
format(string, sizeof(string), "NR %s: %s", sendername, text);
OOCNews(COLOR_LIGHTGREEN, string);
}
else
{
format(string, sizeof(string), "LivePlayer %s: %s", sendername, text);
OOCNews(COLOR_LIGHTGREEN, string);
}
return 0;
}
if(Mobile[playerid] != -1)
{
new idx;
tmp = strtok(text, idx);
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "(cellphone) %s: %s", sendername, text);
ProxDetector(20.0, playerid, string,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_F ADE4,COLOR_FADE5);
if(IsPlayerConnected(Mobile[playerid]))
{
if(Mobile[Mobile[playerid]] == playerid)
{
if(PlayerInfo[Mobile[playerid]][pSpeaker] == 1)
{
ProxDetector(20.0, Mobile[playerid], string,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_F ADE4,COLOR_FADE5);
}
else
{
SendClientMessage(Mobile[playerid], COLOR_YELLOW,string);
}
}
}
else
{
SendClientMessage(playerid, COLOR_YELLOW,"Theres nobody there");
}
format(string, sizeof(string), "(cellphone) \"%s\"", text);
SetPlayerChatBubble(playerid, string, COLOR_CHATBUBBLE, 10.0, 10000);
return 0;
}
if (realchat)
{
if(gPlayerLogged[playerid] == 0)
{
return 0;
}

Reply
#2

Test it...
Код:
new 
	Float: X,
	Float: Y,
	Float: Z
;

public OnPlayerText(playerid, text[])
{
	GetPlayerPos(playerid, X, Y, Z);
	
	for(new i = 0; i < MAX_PLAYERS; i ++) {
		if(IsPlayerInRangeOfPoint(i, 50.0, X, Y, Z)) SendClientMessage(i, 0xFFFFFFFF, text);
	}
 
	return 0;
}
Reply
#3

Just use the proxdetector

Код:
ProxDetector(Float:radi, playerid, string[],color)
{
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    foreach(Player,i)
    {
        if(IsPlayerInRangeOfPoint(i,radi,x,y,z)) 
        {
            SendClientMessage(i,color,string);
        }
    }
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)