Cant remove the siren object [+rep for answer]
#1

For some reason I cannot remove the siren with /siren nothing and when I try to add a siren when one already exists it doesnt come up with the message. Here is the code, plus rep for a good answer:

pawn Код:
if(strcmp(cmd, "/siren", true) == 0)
    {
        if(!IsValidObject(Siren[playerid]))
        {
            if(PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pMember] == 3)
            {
                new siren[65];
                new VID = GetPlayerVehicleID(playerid);
                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp))
                {
                    SendClientMessage(playerid, COLOR_GREY, "USAGE: /siren [inside, roof, nothing]");
                    SendClientMessage(playerid, COLOR_GREY, "[INFO]: 'nothing' will remove the item from your vehicle!");
                    return 1;
                }
                strmid(siren, tmp, 0, strlen(cmdtext), 255);
                if(strcmp(siren, "inside", true, strlen(siren)) == 0)
                {
                    if(Siren[playerid] != INVALID_OBJECT_ID)
                    {
 //                       if(VID != 426) { return SendClientMessage(playerid, COLOR_LIGHTRED, "You need to be in a Premier model!"); } // If he's not in a Premier...
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        Siren[playerid] = CreateObject(18646, 10.0, 10.0, 10.0, 0, 0, 0);
                        AttachObjectToVehicle(Siren[playerid], VID, 0.0, 0.75, 0.275, 0.0, 0.1, 0.0); // Inside - Premier
                        format(string, sizeof(string), "* %s puts the siren on the dashboard.", sendername);
                        ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                    } else { return SendClientMessage(playerid, COLOR_GREY, "[INFO]: You do already have a siren..."); }
                }
                else if(strcmp(siren, "roof", true, strlen(siren)) == 0)
                {
                    if( Siren[playerid] != INVALID_OBJECT_ID )
                    {
 //                       if(VID != 426) { return SendClientMessage(playerid, COLOR_LIGHTRED, "You need to be in a Premier model!"); } // If he's not in a Premier...
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        Siren[playerid] = CreateObject(18646, 10.0, 10.0, 10.0, 0, 0, 0);
                        AttachObjectToVehicle(Siren[playerid], VID, -0.43, 0.0, 0.785, 0.0, 0.1, 0.0); // tak - Premier
                        format(string, sizeof(string), "* %s puts the siren on the roof.", sendername);
                        ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                    } else { return SendClientMessage(playerid, COLOR_GREY, "[INFO]: You do already have a siren..."); }
                }
                else if(strcmp(siren, "nothing", true, strlen(siren)) == 0)
                {
                    GetPlayerName(playerid, sendername, sizeof(sendername));
                    DestroyObject(Siren[playerid]);
                    format(string, sizeof(string), "* %s takes down the siren.", sendername);
                    ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                }
            } else { SendClientMessage(playerid, COLOR_GREY, "[INFO]: Are you a cop?"); }
        }
        return 1;
    }
Reply
#2

Try putting this line above your DestroyObject. Pawno can be a little glitchy sometimes.


AttachObjectToVehicle(Siren[playerid]),car,0.0,0.0,0.6,0.0,0.0,0.0);
Reply
#3

Quote:
Originally Posted by MichaelTarr
Посмотреть сообщение
Try putting this line above your DestroyObject. Pawno can be a little glitchy sometimes.


AttachObjectToVehicle(Siren[playerid]),car,0.0,0.0,0.6,0.0,0.0,0.0);
That made no difference
Reply
#4

Try this one:
But don't forget to set the Siren[playerid] to -1 at onplayerconnect.

pawn Код:
if(strcmp(cmd, "/siren", true) == 0)
    {
        if(!IsValidObject(Siren[playerid]))
        {
            if(PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pMember] == 3)
            {
                new siren[65];
                new VID = GetPlayerVehicleID(playerid);
                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp))
                {
                    SendClientMessage(playerid, COLOR_GREY, "USAGE: /siren [inside, roof, nothing]");
                    SendClientMessage(playerid, COLOR_GREY, "[INFO]: 'nothing' will remove the item from your vehicle!");
                    return 1;
                }
                strmid(siren, tmp, 0, strlen(cmdtext), 255);
                if(strcmp(siren, "inside", true, strlen(siren)) == 0)
                {
                    if(Siren[playerid] != -1)
                    {
 //                       if(VID != 426) { return SendClientMessage(playerid, COLOR_LIGHTRED, "You need to be in a Premier model!"); } // If he's not in a Premier...
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        Siren[playerid] = CreateObject(18646, 10.0, 10.0, 10.0, 0, 0, 0);
                        AttachObjectToVehicle(Siren[playerid], VID, 0.0, 0.75, 0.275, 0.0, 0.1, 0.0); // Inside - Premier
                        format(string, sizeof(string), "* %s puts the siren on the dashboard.", sendername);
                        ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                    } else { return SendClientMessage(playerid, COLOR_GREY, "[INFO]: You do already have a siren..."); }
                }
                else if(strcmp(siren, "roof", true, strlen(siren)) == 0)
                {
                    if(Siren[playerid] != -1)
                    {
 //                       if(VID != 426) { return SendClientMessage(playerid, COLOR_LIGHTRED, "You need to be in a Premier model!"); } // If he's not in a Premier...
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        Siren[playerid] = CreateObject(18646, 10.0, 10.0, 10.0, 0, 0, 0);
                        AttachObjectToVehicle(Siren[playerid], VID, -0.43, 0.0, 0.785, 0.0, 0.1, 0.0); // tak - Premier
                        format(string, sizeof(string), "* %s puts the siren on the roof.", sendername);
                        ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                    } else { return SendClientMessage(playerid, COLOR_GREY, "[INFO]: You do already have a siren..."); }
                }
                else if(strcmp(siren, "nothing", true, strlen(siren)) == 0)
                {
                    GetPlayerName(playerid, sendername, sizeof(sendername));
                    DestroyObject(Siren[playerid]);
                    Siren[playerid] = -1;
                    format(string, sizeof(string), "* %s takes down the siren.", sendername);
                    ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                }
            } else { SendClientMessage(playerid, COLOR_GREY, "[INFO]: Are you a cop?"); }
        }
        return 1;
    }
Reply
#5

Quote:
Originally Posted by Roel
Посмотреть сообщение
But don't forget to set the Siren[playerid] to -1 at onplayerconnect.
And how would I do that? Thanks
Reply
#6

Put Siren[playerid] = -1; inside your OnPlayerConnect.
Reply
#7

pawn Код:
OnPlayerConnect(playerid)
{
      Siren[playerid] = -1;
}
EDIT: Roel beat me to it. But that's the example .
Reply
#8

When trying to add a siren I now get a message saying "[INFO] You allready have a siren..."
Reply
#9

Well then you didn't put the Siren[playerid] = -1; at onplayerconnect...
Reply
#10

Use my one( you can either convert it, or use zcmd)
pawn Код:
CMD:siren(playerid, params[]) {
    if(PlayerInfo[playerid][pGroup]][gGroupType] == 1 || PlayerInfo[playerid][pGroup]][gGroupType] == 2 || PlayerInfo[playerid][pGroup]][gGroupType] == 4) {
        new string[128], type;
        new VID = GetPlayerVehicleID(playerid);
        if(sscanf(params, "d", type))
        {
            SendClientMessage(playerid, COLOR_WHITE, "USAGE: /siren [type]");
            SendClientMessage(playerid, COLOR_GREY, "Type: 1 = Inside, 2 = Roof, 3 = Off.");
            return 1;
        }
        switch(type)
        {
        case 1:
            {
                if(Siren[VID] == 1)
                {
                    SendClientMessage(playerid, COLOR_GREY, "This vehicle already has a siren!");
                    return 1;
                }
                 Siren[VID] = 1;
                 GetRPName(playerid, szPlayerName, MAX_PLAYER_NAME);
                 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.", szPlayerName);
                 nearByMessage(playerid, COLOR_PURPLE, string);
                return 1;
            }
        case 2:
            {
                if(Siren[VID] == 1)
                {
                    SendClientMessage(playerid, COLOR_GREY, "This vehicle already has a siren!");
                    return 1;
                }
                        Siren[VID] = 1;
                        GetRPName(playerid, szPlayerName, MAX_PLAYER_NAME);
                        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.", szPlayerName);
                        nearByMessage(playerid, COLOR_PURPLE, string);
                        return 1;
            }
        case 3:
            {
                if(Siren[VID] == 0)
                {
                    SendClientMessage(playerid, COLOR_GREY, "This vehicle doesn't have a siren on it!");
                    return 1;
                }
                Siren[VID] = 0;
                GetRPName(playerid, szPlayerName, MAX_PLAYER_NAME);
                DestroyObject(SirenObject[VID]);
                format(string, sizeof(string), "* %s takes down the siren.", szPlayerName);
                nearByMessage(playerid, COLOR_PURPLE, string);
                return 1;
            }
        default:
            {
                SendClientMessage(playerid, COLOR_WHITE, "Invalid license type! /siren [type]");
                SendClientMessage(playerid, COLOR_GREY, "Type: 1 = Roof, 2 = Inside, 3 = Off.");
            }
        }
    }
    else SendClientMessage(playerid, COLOR_GREY, "You're not authorised to use this command.");
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)