SA-MP Forums Archive
Sending a proximity Message to players around the player on a command. - 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: Sending a proximity Message to players around the player on a command. (/showthread.php?tid=337144)



Sending a proximity Message to players around the player on a command. - Deal-or-die - 25.04.2012

Hello Again,
Fair time since i was last scripting and have to catch up again but i am trying to get a command to send a message to the player that typed the command and then another message to the players around that player.

For example,
Deal_Ordie types /seatbelt
Text to Deal_Ordie: You have clipped your seatbelt on.
Text to players around Deal_Ordie: Deal Ordie clipped on his seat belt.

pawn Код:
command(seatbelt,playerid,params[])
{
    #pragma unused params
    if(WearingSeatbelt[playerid])
    {
        WearingSeatbelt[playerid] = 0;
        SendClientMessage(playerid, COLOR_GREY, "You have taken off your seatbelt.");
    }
    else if(!WearingSeatbelt[playerid])
    {
        WearingSeatbelt[playerid] = 1;
        SendClientMessage(playerid, COLOR_GREY, "You put your seatbelt on.");
    }
    return 1;
}
Any Help is Greatly appreciated,
Cheers.


Re: Sending a proximity Message to players around the player on a command. - Ballu Miaa - 25.04.2012

Add these callbacks in the end of your game mode with the proper forward decleration.
pawn Код:
#define COLOR_PURPLE          0xC2A2DAAA // Add this color in your game mode or replace it.
forward ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5);
forward ProxDetectorS(Float:radi, playerid, targetid);
//=========================[PROX DETECTOR]======================================
public ProxDetector(Float:radi, playerid, string[],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 (GetPlayerVirtualWorld(playerid)==GetPlayerVirtualWorld(i))
                {
                    if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
                    {
                        SendClientMessage(i, col1, string);
                    }
                    else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
                    {
                        SendClientMessage(i, col2, string);
                    }
                    else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
                    {
                        SendClientMessage(i, col3, string);
                    }
                    else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
                    {
                        SendClientMessage(i, col4, string);
                    }
                    else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
                    {
                        SendClientMessage(i, col5, string);
                    }
                }
            }
            else
            {
                SendClientMessage(i, col1, string);
            }
        }
    }
    return 1;
}
public ProxDetectorS(Float:radi, playerid, targetid)
{
    if(IsPlayerConnected(playerid)&&IsPlayerConnected(targetid))
    {
        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
        GetPlayerPos(targetid, posx, posy, posz);
        tempposx = (oldposx -posx);
        tempposy = (oldposy -posy);
        tempposz = (oldposz -posz);
        //printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
        if (GetPlayerVirtualWorld(playerid)==GetPlayerVirtualWorld(targetid))
        {
            if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
            {
                return 1;
            }
        }
    }
    return 0;
}
Now your command will be like :
pawn Код:
command(seatbelt,playerid,params[])
{
    #pragma unused params
    new string[60];
    new playername[24];
    GetPlayerName(playerid,playername,24);
    if(WearingSeatbelt[playerid])
    {
        WearingSeatbelt[playerid] = 0;
        SendClientMessage(playerid, COLOR_GREY, "You have taken off your seatbelt.");
        format(string, sizeof(string), "* %s twists the holder and takes off their seatbelt.",playername);
        ProxDetector(20.0, playerid, string,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
    }
    else if(!WearingSeatbelt[playerid])
    {
        WearingSeatbelt[playerid] = 1;
        SendClientMessage(playerid, COLOR_GREY, "You put your seatbelt on.");
        format(string, sizeof(string), "* %s tucks the holder and puts on their seatbelt.",playername);
        ProxDetector(20.0, playerid, string,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
//ProxDetector shows the message to the players within the range of 20.0 with the COLOR_PURPLE
    }
    return 1;
}



Re: Sending a proximity Message to players around the player on a command. - Deal-or-die - 25.04.2012

Hmm... Thats Close to what i had so I'll just fix my errors.
Cheers for your help

Just incase your thinking it's nothing like what i had, this is what i had before editing my post above :P

pawn Код:
command(seatbelt,playerid,params[])
{
    #pragma unused params
    if(WearingSeatbelt[playerid])
    {
        WearingSeatbelt[playerid] = 0;
        SendClientMessage(playerid, COLOR_GREY, "You have taken off seatbelt");
        format(chat,sizeof(chat), "%s clips his seatbelt on.", GetPlayerNameEx(playerid), chat);
        ProximityMessage(playerid, 20, chat, ACTION_1, ACTION_2, ACTION_3, ACTION_4, ACTION_5);
    }
    else if(!WearingSeatbelt[playerid])
    {
        WearingSeatbelt[playerid] = 1;
        SendClientMessage(playerid, COLOR_GREY, "You put seatbelt on");
    }
    return 1;
}
I Had just forgot to add the string, thanks for that :P

But thank you for your help, Greatly appreciated


Re: Sending a proximity Message to players around the player on a command. - Ballu Miaa - 25.04.2012

Quote:
Originally Posted by Deal-or-die
Посмотреть сообщение
Hmm... Thats Close to what i had so I'll just fix my errors.
Cheers for your help

Just incase your thinking it's nothing like what i had, this is what i had before editing my post above :P

pawn Код:
command(seatbelt,playerid,params[])
{
    #pragma unused params
    if(WearingSeatbelt[playerid])
    {
        WearingSeatbelt[playerid] = 0;
        SendClientMessage(playerid, COLOR_GREY, "You have taken off seatbelt");
        format(chat,sizeof(chat), "%s clips his seatbelt on.", GetPlayerNameEx(playerid), chat);
        ProximityMessage(playerid, 20, chat, ACTION_1, ACTION_2, ACTION_3, ACTION_4, ACTION_5);
    }
    else if(!WearingSeatbelt[playerid])
    {
        WearingSeatbelt[playerid] = 1;
        SendClientMessage(playerid, COLOR_GREY, "You put seatbelt on");
    }
    return 1;
}
But thank you for your help, Greatly appreciated
Cool. Im glad that i can help. You can download some pre released game modes for help with some custom functions. I take help from lot of game mods when im out of my scripting ideas and logics.


Re: Sending a proximity Message to players around the player on a command. - Deal-or-die - 25.04.2012

Nah, I just need to get all the habits back in my head :P Long time no see Mr Pawno :P

And with that way of doing things, wouldn't the 'You have taken off your seatbelt' and the 'Deal Ordie has taken off his seatbelt' be displayed to the player that sent the command?


Re: Sending a proximity Message to players around the player on a command. - Ballu Miaa - 25.04.2012

Quote:
Originally Posted by Deal-or-die
Посмотреть сообщение
wouldn't the 'You have taken off your seatbelt' and the 'Deal Ordie has taken off his seatbelt' be displayed to the player that sent the command?
This Command will do all that just fine. you can edit the messages according to your needs

pawn Код:
command(seatbelt,playerid,params[])
{
    #pragma unused params
    new string[60];
    new playername[24];
    GetPlayerName(playerid,playername,24);
    if(WearingSeatbelt[playerid])
    {
        WearingSeatbelt[playerid] = 0;
        SendClientMessage(playerid, COLOR_GREY, "You have taken off your seatbelt.");
        format(string, sizeof(string), "* %s twists the holder and takes off their seatbelt.",playername);
        ProxDetector(20.0, playerid, string,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
    }
    else if(!WearingSeatbelt[playerid])
    {
        WearingSeatbelt[playerid] = 1;
        SendClientMessage(playerid, COLOR_GREY, "You put your seatbelt on.");
        format(string, sizeof(string), "* %s tucks the holder and puts on their seatbelt.",playername);
        ProxDetector(20.0, playerid, string,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
//ProxDetector shows the message to the players within the range of 20.0 with the COLOR_PURPLE
    }
    return 1;
}



Re: Sending a proximity Message to players around the player on a command. - Deal-or-die - 25.04.2012

Hmm.... I'll try this way first, but thanks, if this fails I'll try that.


Re: Sending a proximity Message to players around the player on a command. - Aira - 25.04.2012

Quote:
Originally Posted by Deal-or-die
Посмотреть сообщение
Nah, I just need to get all the habits back in my head :P Long time no see Mr Pawno :P

And with that way of doing things, wouldn't the 'You have taken off your seatbelt' and the 'Deal Ordie has taken off his seatbelt' be displayed to the player that sent the command?
You are the Owner of Something Roleplay right? Corey Moore's and Hal Moore's Friend?


Re: Sending a proximity Message to players around the player on a command. - Ballu Miaa - 25.04.2012

Quote:
Originally Posted by Aira
Посмотреть сообщение
You are the Owner of Something Roleplay right? Corey Moore's and Hal Moore's Friend?
Maybe he is but Hal Moores server was Phoenix RP. He closed it a while ago. He started Operation New Dawn after it with all his friends. Slim Shady and Others lol.


Re: Sending a proximity Message to players around the player on a command. - Deal-or-die - 25.04.2012

pawn Код:
else if(!WearingSeatbelt[playerid])
    {
        WearingSeatbelt[playerid] = 1;
        SendClientMessage(playerid, COLOR_GREY, "You put your seatbelt on");
        format(chat,sizeof(chat), "%s Clips on his seatbelt.", GetPlayerNameEx(playerid), chat);
        ProximityMessage(playerid, 20, chat, ACTION_1, ACTION_2, ACTION_3, ACTION_4, ACTION_5);
    }


AND

pawn Код:
if(WearingSeatbelt[playerid])
    {
        WearingSeatbelt[playerid] = 0;
        SendClientMessage(playerid, COLOR_GREY, "You have taken off your seatbelt");
        format(chat,sizeof(chat), "%s un-clips his seatbelt.",playername);
        ProximityMessage(playerid, 20, chat, ACTION_1, ACTION_2, ACTION_3, ACTION_4, ACTION_5);
    }


Together
pawn Код:
command(seatbelt,playerid,params[])
{
    #pragma unused params
    new chat[256];
    new playername[24];
    GetPlayerName(playerid,playername,24);
    if(WearingSeatbelt[playerid])
    {
        WearingSeatbelt[playerid] = 0;
        SendClientMessage(playerid, COLOR_GREY, "You have taken off your seatbelt");
        format(chat,sizeof(chat), "%s un-clips his seatbelt.",playername);
        ProximityMessage(playerid, 20, chat, ACTION_1, ACTION_2, ACTION_3, ACTION_4, ACTION_5);
    }
    else if(!WearingSeatbelt[playerid])
    {
        WearingSeatbelt[playerid] = 1;
        SendClientMessage(playerid, COLOR_GREY, "You put your seatbelt on");
        format(chat,sizeof(chat), "%s Clips on his seatbelt.", GetPlayerNameEx(playerid), chat);
        ProximityMessage(playerid, 20, chat, ACTION_1, ACTION_2, ACTION_3, ACTION_4, ACTION_5);
    }
    return 1;
}