SA-MP Forums Archive
OnPlayerText Not Working - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: OnPlayerText Not Working (/showthread.php?tid=654331)



OnPlayerText Not Working - TadePoleMG - 26.05.2018

Hi friends

My spam and anti advertising not works and i think some error in my script, Please help me.

Here are the all codes of OnPlayerText from my script.

Код:
public OnPlayerText(playerid, text[])
{
//==============================================================================
// Vip Chat
//==============================================================================
	if(text[0] == '*' && AccInfo[playerid][pVip] >= 1)
	{
	    new string[128];
		GetPlayerName(playerid,string,sizeof(string));
		format(string,sizeof(string),"[Vip Chat] %s (%d): %s",string,playerid,text[1]);
		MessageToPlayerVIP(0xDC686BAA,string);
		SaveIn("ChatVipLog",string);
	    return 0;
	}
//==============================================================================
// Administration Chat
//==============================================================================
    if(text[0] == '@' && AccInfo[playerid][Level] >= 1)
	{
	    new string[128];
		GetPlayerName(playerid,string,sizeof(string));
		format(string,sizeof(string),"[ADMIN CHAT] %s (%d): %s",string,playerid,text[1]);
		MessageToAdmins(green,string);
		#if ADM_CHAT_LOG == true
		SaveIn("AdmChatLog",string);
		#endif
	    return 0;
	}
//==============================================================================
// Team Chat
//==============================================================================
	if(text[0] == '!)
    {
    new string[156];
	GetPlayerName(playerid,string,sizeof(string));
	format(string,sizeof(string),"[Team Chat]: %s (%d): %s", string, playerid, text[1]);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && GetPlayerTeam(i) == GetPlayerTeam(playerid))
    {
	SendClientMessage(i, yellow, string);
	}
    }
    return 0;
    }

// Ask CHAT
    if(text[0] == '#')
    {
	if(AccInfo[playerid][Level] < 1)
	{
    new playername[MAX_PLAYER_NAME],msg[128];
    GetPlayerName(playerid,playername,sizeof(playername));
    format(msg,sizeof(msg),""COL_WHITE">> ["COL_RED"HELP"COL_WHITE"/"COL_RED"Question"COL_WHITE"] %s (%d) : "COL_YELLOW"%s",playername, playerid, text[1]);
    for(new i=0;i<MAX_PLAYERS;++i)
    {
    if(IsPlayerConnected(i) && (AccInfo[i][Level] > 0))
    SendClientMessage(i,-1,msg);
    }
    SendClientMessage(playerid,purple, "* You question has been successfully send to our online administrative staff.");
    }
    else SendClientMessage(playerid,red,"You cannot send question because you are already admin.");
    return 0;
    }
//==============================================================================
// Math Quiz Answer
//==============================================================================
    if(strval(text) == MathQuizTest && MathQuizTest != -1)
	{
	CorrectAnswer(playerid);
	return 0;
	}
//==============================================================================
// Chat Disabled
//==============================================================================
	if(ServerInfo[DisableChat] == 1)
	{
		SendClientMessage(playerid,red,"[ Chat has been Disabled, contact an admin if you have queries. ]");
	 	return 0;
	}
//==============================================================================
// Player Muted
//==============================================================================
 	if(AccInfo[playerid][Muted] == 1)
	{
 		AccInfo[playerid][MuteWarnings]++;
 		new string[128];
		if(AccInfo[playerid][MuteWarnings] < ServerInfo[MaxMuteWarnings])
		{
		format(string, sizeof(string),"[ ATTENTION: You are Muted, you cannot talk (Warnings: %d/%d), contact an admin if you have queries. ]",AccInfo[playerid][MuteWarnings],ServerInfo[MaxMuteWarnings]);
		SendClientMessage(playerid,red,string);
		}
		else
		{
		SendClientMessage(playerid,red,"[ ADMIN: You have been Automatically Kicked. | Reason: Exceeding Mute Warnings. ]");
		format(string, sizeof(string),"[ Player %s (Id: %d) has been Automatically Kicked. | Reason: Exceeding Mute Warnings. ]",PlayerName2(playerid),playerid);
		SendClientMessageToAll(grey,string);
		SaveIn("KickLog",string); Kick(playerid);
		}
	}
	else
	{
//==============================================================================
// Player SayS
//==============================================================================
    if(AccInfo[playerid][LoggedIn] == 1)
    {
           new string[128];
		   GetPlayerName(playerid, string, sizeof(string));
           format(string, sizeof(string), "%s (%d): "COL_WHITE"%s", string, playerid, text[0]);
	       SendClientMessageToAll(GetPlayerColor(playerid), string);
		   if(AccInfo[playerid][ChatBubbles] == 1)
		   {
           new MeMsg[MAX_CHATBUBBLE_LENGTH+1];
	       format(MeMsg,MAX_CHATBUBBLE_LENGTH,"%s",text[0]);
           SetPlayerChatBubble(playerid,MeMsg,white,35.0,10000);
           SetTimerEx("Delete3DChatBubble", 5000, false, "i", playerid);
		   }
    }
    else SendClientMessage(playerid, red, "* You need to Login to your account to use chat!");
    return 0;
    }
//==============================================================================
// Flood/Spam Protection
//==============================================================================
    if(AccInfo[playerid][Level] == 0 && !IsPlayerAdmin(playerid))
    {
    if(AccInfo[playerid][SpamCount] == 0) AccInfo[playerid][SpamTime] = gettime();
	AccInfo[playerid][SpamCount]++;
	if(gettime() - AccInfo[playerid][SpamTime] > SPAM_TIMELIMIT)
	{
	AccInfo[playerid][SpamCount] = 0;
	AccInfo[playerid][SpamTime] =  gettime();
	}
    else if(gettime() - AccInfo[playerid][SpamTime] < SPAM_TIMELIMIT)
	{
    new string[200];
	format(string,sizeof(string),"* "COL_RED"Warning received (%d/%d)! Reason: Spam.",AccInfo[playerid][SpamCount],SPAM_MAX_MSGS);
	SendClientMessage(playerid,white,string);
    }
    else if(AccInfo[playerid][SpamCount] == SPAM_MAX_MSGS)
	{
    new name[24];
	new string[200];
	GetPlayerName(playerid,name,24);
	format(string,sizeof(string),"• "OWNER_NAME" has muted %s (%d)  for %d Minutes. Reason: Spam.", name, playerid, AutoUnmuteTime);
	SendClientMessageToAll(ADMINCOLOR,string);
	SendClientMessage(playerid,red,"* Spam level reached, You have received your final warning (3/3)! Reason: Spam.");
	AccInfo[playerid][Muted] = 1;
	SetTimerEx("AutoUnMute",AutoUnmuteTime*60000,false,"i",playerid);
    printf("[MUTED] %s (%d) has been muted for 2 minutes reason spamming.", name, playerid);
    return 0;
    }
    }

//==============================================================================
// Anti Advertisements
//==============================================================================
	if(ServerInfo[AntiAds] == 1)
	{
	    if(AdvertisementCheck(text) && AccInfo[playerid][Level] < 3)
		{
			AccInfo[playerid][MaxAdv]++;
			new string[128], playername[MAX_PLAYER_NAME];
			format(string,sizeof(string),"* ATTENTION: Suspected advertisements in your message, (Warnings: %d/%d).",AccInfo[playerid][MaxAdv], MAX_ADV_WARNINGS);
			SendClientMessage(playerid, red,string);
			if(AccInfo[playerid][MaxAdv] == MAX_ADV_WARNINGS)
			{
				GetPlayerName(playerid, playername, sizeof(playername));
				format(string,sizeof(string),"* You are Automatically muted. | Reason: Many advertisements in your Messages (%d/%d).",AccInfo[playerid][MaxAdv], MAX_ADV_WARNINGS);
 				SendClientMessage(playerid, lightred,string);
				format(string,sizeof(string),"• "OWNER_NAME" has muted %s (%d) for 5 Minutes. Reason: Advertisements.",playername,playerid);
		        SendClientMessageToAll(ADMINCOLOR, string);
		        AccInfo[playerid][Muted] = 1;
 				SetTimerEx("AutoUnMute2",5*60000,false,"i",playerid);
				print(string);
			}
		}
		return 0;
	}

//==============================================================================
// Send Admin in front of name
//==============================================================================
	#if ADM_InMSG == true
	if (AccInfo[playerid][Hide] == 0)
	{
	if(AccInfo[playerid][Level] > 0)
	{
	new str3[256];
	format(str3, 256, "(Admin): %s", text);
	for(new gz=0;gz<200;gz++)
	if(IsPlayerConnected(gz))
	SendPlayerMessageToPlayer(gz, playerid, str3);
	else SendPlayerMessageToPlayer(gz, playerid, text);
	}
	return 0;
	}
	#endif
//==============================================================================
// Forbidden Words
//==============================================================================
	if(ServerInfo[AntiSwear] == 1 && AccInfo[playerid][Level] < ServerInfo[MaxAdminLevel])
	for(new s = 0; s < BadWordsCount; s++)
	{
	new pos;
	while((pos = strfind(text,BadWords[s],true)) != -1)
	for(new i = pos, j = pos + strlen(BadWords[s]); i < j; i++) text[i] = '*';
	}
//==============================================================================
// Block CapsLock
//==============================================================================
	if(AccInfo[playerid][Caps] == 1)
	UpperToLower(text);
	if(ServerInfo[NoCaps] == 1)
	UpperToLower(text);

//==============================================================================
// Chat Lines (Console)
//==============================================================================
	for(new i = 1; i < MAX_CHAT_LINES-1; i++)
	Chat[i] = Chat[i+1];
	new ChatSTR[128];
	GetPlayerName(playerid,ChatSTR,sizeof(ChatSTR));
	format(ChatSTR,128,"[CHAT]%s: %s",ChatSTR, text[0]);
	Chat[MAX_CHAT_LINES-1] = ChatSTR;
	return 1;
}
Thank You pls help.


Re: OnPlayerText Not Working - Milak - 26.05.2018

Quote:

new string[128];
GetPlayerName(playerid,string,sizeof(string));
format(string,sizeof(string),"[Vip Chat] %s (%d): %s",string,playerid,text[1])

Mate, why did you format variable that you use to store player's name?!


Re: OnPlayerText Not Working - RxErT - 26.05.2018

There's some issues in your OnPlayerText callback.

for example and as Milak said, you defined string as player's name so why you're formatting it, it's horribly wrong.

It should be like that for ex:

PHP код:
new string[90], name[MAX_PLAYER_NAME];
GetPlayerName(playeridname,sizeof(name));
format(string,sizeof(string),"[VIP Chat] %s (%i): %s"name,playerid,text[1]); 
Plus your code is just a copy paste of other scripts/filter-scripts and pasted in your gamemode or whatever you're working on, but without optimization.


Re: OnPlayerText Not Working - jasperschellekens - 26.05.2018

PHP код:
if(text[1