Mask system
#1

Could someone tell me why this wouldnt/wont work

Код:
#include <a_samp>
#include <ZCMD>
#define COLOR_GREY 0xAFAFAFAA
new masked[MAX_PLAYERS];

CMD:mask(playerid, params[])
{

   if(masked[playerid] == 0)
   {
   masked[playerid] = 1;
   SendClientMessage(playerid, -1,"You are now masked and your name is hidden.");
   for(new i = 0; i < MAX_PLAYERS; i++) ShowPlayerNameTagForPlayer(i,playerid, false);
   }
   else
   {
   masked[playerid] = 0;
   SendClientMessage(playerid, -1,"You are no longer masked and your name is visble.");
   for(new i = 0; i < MAX_PLAYERS; i++) ShowPlayerNameTagForPlayer(i,playerid, true);
   }
   return true;
}


public OnPlayerText(playerid, text[])
{
new string[128];
new ProxDetector;

if(masked[playerid] == 1)
		{
		    format(string,sizeof(string), "Stranger: %s",text);
		    ProxDetector(20.0, playerid, string,COLOR_GREY,COLOR_GREY,COLOR_GREY,COLOR_GREY,COLOR_GREY);
		}
		else
		{
        	format(string, sizeof(string), "%s: %s", sendername,text);
			ProxDetector(20.0, playerid, string,COLOR_GREY,COLOR_GREY,COLOR_GREY,COLOR_GREY,COLOR_GREY);
		}


}
I keep getting these errors

Quote:

ALL ON LINE 36
error 012: invalid function call, not a valid address
: warning 215: expression has no effect
: warning 215: expression has no effect
: warning 215: expression has no effect
: warning 215: expression has no effect
: warning 215: expression has no effect
: warning 215: expression has no effect
: warning 215: expression has no effect
: warning 215: expression has no effect
: error 001: expected token: ";", but found ")"
: error 029: invalid expression, assumed zero
: fatal error 107: too many error messages on one line

Reply
#2

If you ever get the error about undefined symbols, using "new" to declare it as a variable is not always the solution and in your case "ProxDetector" must be a function and not a variable you declared it to be. For that function, search it on ******, there're dozen of results and add it to the script, remove the declaration part and it'll compile.
Reply
#3

Could you please give me an exampl? I have ben searching for things to do with proxdetector all night. I cannot find any solid solutions to this.
Reply
#4

http://forum.sa-mp.com/showpost.php?...42&postcount=3

Though it's kind of old function and if you're about to send the message with the same colour as you did in the code above, it's recommended not to use it and use the client messages instead.
Reply
#5

How am I supposed to use the public proxdetector though when I am using the public OnPlayerText?
Reply
#6

Add the public function somewhere at your script (for example, at the bottom of it), just outside of callbacks etc.
Reply
#7

I got it to compile. weird thing though. When I load the fs... no text shows up at all. When I unload works fine again.
Reply
#8

That's because you do not return any value in OnPlayerText callback.
Reply
#9

Код:
forward ProxDetector(Float:radi, playerid, str[], col1, col2, col3, col4, col5);

public ProxDetector(Float:radi, playerid, str[],col1,col2,col3,col4,col5)
{
	if(IsPlayerConnected(playerid))
	{
		new Float:posx, Float:posy, Float:posz;
		new Float:oldposx, Float:oldposy, Float:oldposz;
		new Float:tempposx, Float:tempposy, Float:tempposz;
		GetPlayerPos(playerid, oldposx, oldposy, oldposz);
		//radi = 2.0; //Trigger Radius
		for(new i = 0; i < MAX_PLAYERS; i++)
		{
			if(IsPlayerConnected(i))
			{

				GetPlayerPos(i, posx, posy, posz);
				tempposx = (oldposx -posx);
				tempposy = (oldposy -posy);
				tempposz = (oldposz -posz);
				//printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
				if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
				{
					SendClientMessage(i, col1, str);
				}
				else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
				{
					SendClientMessage(i, col2, str);
				}
				else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
				{
					SendClientMessage(i, col3, str);
				}
				else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
				{
					SendClientMessage(i, col4, str);
				}
				else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
				{
					SendClientMessage(i, col5, str);
				}
			}
		}
	}//not connected
	return 1;
}

public OnPlayerText(playerid, text[])
{
new string[128];

if(masked[playerid] == 1)
		{
		    format(string,sizeof(string), "Stranger: %s",text);
		    ProxDetector(20.0, playerid, string,COLOR_GREY,COLOR_GREY,COLOR_GREY,COLOR_GREY,COLOR_GREY);
		}
		else
		{
        	format(string, sizeof(string), "%s: %s", sendername,text);
			ProxDetector(20.0, playerid, string,COLOR_GREY,COLOR_GREY,COLOR_GREY,COLOR_GREY,COLOR_GREY);
		}
   return 0;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)