OnPlayerText question
#1

Well I was wondering..


I've never worked with OnPlayerText and I'm now trying to find out some more about it.
I tried to make a function where if a player speaks, only players in a radius of 25 could see the message but it didn't work out.

Code:
public OnPlayerText(playerid, text[])
{
	new string[56];
	new PlayerName[MAX_PLAYER_NAME];
	for(new i; i<MAX_PLAYERS; i++)
	new Float:XXX,Float:YYY,Float:ZZZ;
	GetPlayerPos(playerid, XXX, YYY, ZZZ);
	if(IsPlayerInRangeOfPoint(i, 25.0, XXX, YYY, ZZZ))
	{
    format(string, sizeof(string), "%s says: %s",PlayerName,text);
    SendClientMessage(i, 0xFF0000AA, string);
    }
	return 1;
}
Code:
C:\SAMP 0.3b Server R2\gamemodes\Unknown-RP.pwn(72) : error 003: declaration of a local variable must appear in a compound block
C:\SAMP 0.3b Server R2\gamemodes\Unknown-RP.pwn(72) : warning 221: label name "Float" shadows tag name
C:\SAMP 0.3b Server R2\gamemodes\Unknown-RP.pwn(72) : error 017: undefined symbol "XXX"
C:\SAMP 0.3b Server R2\gamemodes\Unknown-RP.pwn(72) : warning 215: expression has no effect
C:\SAMP 0.3b Server R2\gamemodes\Unknown-RP.pwn(73) : error 017: undefined symbol "XXX"
C:\SAMP 0.3b Server R2\gamemodes\Unknown-RP.pwn(74) : error 017: undefined symbol "i"
C:\SAMP 0.3b Server R2\gamemodes\Unknown-RP.pwn(77) : error 017: undefined symbol "i"
C:\SAMP 0.3b Server R2\gamemodes\Unknown-RP.pwn(72) : warning 203: symbol is never used: "Float"
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


5 Errors.
So yea, looks like I did something terribly wrong, even though I use this at regular commands using SSCANF.
Heard of something like ProxDetectors but I don't understand shit about that.

If someone could help me out? Thanks
Reply
#2

pawn Code:
public OnPlayerText(playerid, text[])
{
    new string[56];
    new PlayerName[MAX_PLAYER_NAME];
    for(new i; i<MAX_PLAYERS; i++)
    {
        new Float:XXX,Float:YYY,Float:ZZZ;
        GetPlayerPos(playerid, XXX, YYY, ZZZ);
        if(IsPlayerInRangeOfPoint(i, 25.0, XXX, YYY, ZZZ))
        {
            format(string, sizeof(string), "%s says: %s",PlayerName,text);
            SendClientMessage(i, 0xFF0000AA, string);
        }
    }
    return 1;
}
You had no opening brace after the 'for' loop.

EDIT: Removed bad advice.
Reply
#3

Right, thanks for that missed that lol
Reply
#4

your welcome m8
Reply
#5

Quote:
Originally Posted by iggy1
View Post
You had no opening brace after the 'for' loop.
Also loops like that should be <= MAX_PLAYERS. Because if your sever is full the loop will miss a player.
Newly declared variables have a value of 0, which is a valid player slot. Using <= in loops is pretty much script suicide, just wait until you use the loop to modify an array and watch as your server kills itself (the loop will try to write to the 11th slot of var[10], for example).

i < MAX_PLAYERS, remember it...
Reply
#6

Shit i guess iv got some re-coding to do thanks for the tip brian. Luckly i use foreach for most player loops, but now i have to check all my code

nice1 pal.

Feel a bit silly now lol
Reply
#7

Because I also like to use /low, /s to get other ranges, since that code is global.
Reply
#8

Then you would use this stock, like so:
pawn Code:
stock localMessage(playerid,  colour, string[], Float: Distance)
{
    new Float:PosFloats[3];
    GetPlayerPos(playerid, PosFloats[0], PosFloats[1], PosFloats[2]);
    foreach(Player, i)
    {
        if(IsPlayerInRangeOfPoint(i, Distance, PosFloats[0], PosFloats[1], PosFloats[2])
        {
            SendClientMessage(i, colour, string);
        }
    }
    return 1;
}
pawn Code:
public OnPlayerText(playerid, text[])
{
    new
        string[128], // 56 cells isn't going to get you very far when the text I/O is 128.
        PlayerName[MAX_PLAYER_NAME];

    GetPlayerName(playerid, PlayerName, MAX_PLAYER_NAME);
    format(string, sizeof(string), "%s says: %s",PlayerName,text);
    localMessage(playerid, 0xFF0000AA, string, 15.0); // Distance you want to send it to
   
    return 1;
}
Excuse me if I missed something, it's 3.19 AM here. Yawn.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)