/siren problem
#5

pawn Код:
new Siren[MAX_VEHICLES];
new SirenObject[MAX_VEHICLES];

CMD:siren(playerid, params[])
{
    if(AccInfo[playerid][Level] >= 1 || AccInfo[playerid][pVip] >= 1)
    {
        new string[128], type;
        new VID = GetPlayerVehicleID(playerid);
        if(sscanf(params, "d", type))
        {
            SendClientMessage(playerid, COLOR_WHITE, "USAGE: /siren [type]");
            SendClientMessage(playerid, COLOR_GRAD2, "Type: 1 = Inside, 2 = Roof, 3 = Off.");
            return 1;
        }
        switch(type)
        {
        case 1:
            {
                if(Siren[VID] == 1)
                {
                    SendClientMessage(playerid, COLOR_GRAD2, "This vehicle already has a siren!");
                    return 1;
                }
                 new sendername[MAX_PLAYER_NAME];
                 Siren[VID] = 1;
                 GetPlayerName(playerid, sendername, sizeof(sendername));
                 SirenObject[VID] = CreateObject(18646, 10.0, 10.0, 10.0, 0, 0, 0);
                 AttachObjectToVehicle(SirenObject[VID], VID, 0.0, 0.75, 0.275, 0.0, 0.1, 0.0);
                 format(string, sizeof(string), "* %s puts the siren on the dashboard.", sendername);
                 for(new i = 0;i<MAX_PLAYERS;++i)
                    if(ProxDetector(30.0, playerid, i) && IsPlayerConnected(i))) SendClientMessage(i,COLOR_PURPLE,string);
                 return 1;
            }
        case 2:
            {
                if(Siren[VID] == 1)
                {
                    SendClientMessage(playerid, COLOR_GRAD2, "This vehicle already has a siren!");
                    return 1;
                }
                        Siren[VID] = 1;
                        new sendername[MAX_PLAYER_NAME];
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        SirenObject[VID] = CreateObject(18646, 10.0, 10.0, 10.0, 0, 0, 0);
                        AttachObjectToVehicle(SirenObject[VID], VID, -0.43, 0.0, 0.785, 0.0, 0.1, 0.0);
                        format(string, sizeof(string), "* %s puts the siren on the roof.", sendername);
                        for(new i = 0;i<MAX_PLAYERS;++i)
                            if(ProxDetector(30.0, playerid, i) && IsPlayerConnected(i))) SendClientMessage(i,COLOR_PURPLE,string);
                        return 1;
            }
        case 3:
            {
                if(Siren[VID] == 0)
                {
                    SendClientMessage(playerid, COLOR_GRAD2, "This vehicle doesn't have a siren on it!");
                    return 1;
                }
                Siren[VID] = 0;
                new sendername[MAX_PLAYER_NAME];
                GetPlayerName(playerid, sendername, sizeof(sendername));
                DestroyObject(SirenObject[VID]);
                format(string, sizeof(string), "* %s takes down the siren.", sendername);
                for(new i = 0;i<MAX_PLAYERS;++i)
                    if(ProxDetector(30.0, playerid, i) && IsPlayerConnected(i)) SendClientMessage(i,COLOR_PURPLE,string);
                return 1;
            }
        default:
            {
                SendClientMessage(playerid, COLOR_WHITE, "Invalid license type! /siren [type]");
                SendClientMessage(playerid, COLOR_GRAD2, "Type: 1 = Roof, 2 = Inside, 3 = Off.");
            }
        }
    }
    else SendClientMessage(playerid, COLOR_GREY, "You're not authorised to use this command.");
    return 1;
}
forward ProxDetector(Float:radi, playerid, targetid);
public ProxDetector(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);
        GetPlayerPos(targetid, posx, posy, posz);
        tempposx = (oldposx -posx);
        tempposy = (oldposy -posy);
        tempposz = (oldposz -posz);
        if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
        {
            return 1;
        }
    }
    return 0;
}
Reply


Messages In This Thread
/siren problem - by kbalor - 25.08.2012, 10:08
Re: /siren problem - by justinnater - 25.08.2012, 10:11
Re: /siren problem - by kbalor - 25.08.2012, 10:33
Re: /siren problem - by CentyPoo - 25.08.2012, 10:40
Re: /siren problem - by [MM]RoXoR[FS] - 25.08.2012, 10:42
Re: /siren problem - by kbalor - 25.08.2012, 10:45
Re: /siren problem - by kbalor - 25.08.2012, 10:48
Re: /siren problem - by clarencecuzz - 25.08.2012, 11:05
Re: /siren problem - by kbalor - 25.08.2012, 11:29
Re: /siren problem - by clarencecuzz - 25.08.2012, 11:34

Forum Jump:


Users browsing this thread: 2 Guest(s)