SA-MP Forums Archive
Police Dash Siren - 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: Police Dash Siren (/showthread.php?tid=367396)



Police Dash Siren - Melon - 09.08.2012

Hi, I'm trying to implement a dash siren command into my script that can be toggled with a command and I have managed to come across this one that has been converted from ZCMD to STRCMP.

My script does not allow ZCMD as all of my commands are written in STRCMP..

I add this to my script under OnPlayerCommandText, I've tried adding it elsewhere also.

It crashes my PAWN compliler. Is there something I'm doing wrong?

Please help, I will rep.

Thanks.

pawn Код:
if (strcmp("/siren", cmdtext, true, 10) == 0)
    {
        new string[128], type;
        new VID = GetPlayerVehicleID(playerid);
        new x_siren[256];
        x_siren = strtok(cmdtext, idx);
        if(!strlen(x_siren))
        {
            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);
                 ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                return 1;Z
            }
        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);
                        ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                        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);
                ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                return 1;
            }
        default:
            {
                SendClientMessage(playerid, COLOR_WHITE, "Invalid license type! /siren [type]");
                SendClientMessage(playerid, COLOR_GRAD2, "Type: 1 = Roof, 2 = Inside, 3 = Off.");
            }
        }
    return 1;
}



Re: Police Dash Siren - phillip875 - 09.08.2012

Add this underneath x_siren = strok(cmdtext,idx) :

pawn Код:
type = strval(x_siren);
Also, when you use the "case" function.

It always begins with 0.

In other words, type 1 = 0 in the case.

pawn Код:
case 0: // inside
{
}
case 1: // roof
{
}
case 2: // off
{
}
This should fix the crash.


Re: Police Dash Siren - Melon - 09.08.2012

Quote:
Originally Posted by phillip875
Посмотреть сообщение
Add this underneath x_siren = strok(cmdtext,idx) :

pawn Код:
type = strval(x_siren);
Also, when you use the "case" function.

It always begins with 0.

In other words, type 1 = 0 in the case.

pawn Код:
case 0: // inside
{
}
case 1: // roof
{
}
case 2: // off
{
}
This should fix the crash.
Hi, thank you for that, however, it is still crashing.

This is now my code:

pawn Код:
if (strcmp("/siren", cmdtext, true, 10) == 0)
    {
        new string[128], type;
        new VID = GetPlayerVehicleID(playerid);
        new x_siren[256];
        x_siren = strtok(cmdtext, idx);
        type = strval(x_siren);
        if(!strlen(x_siren))
        {
            SendClientMessage(playerid, COLOR_WHITE, "USAGE: /siren [type]");
            SendClientMessage(playerid, COLOR_GRAD2, "Type: 1 = Inside, 2 = Roof, 3 = Off.");
            return 1;
        }
        switch(type)
        {
        case 0:
            {
                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);
                 ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                return 1;Z
            }
        case 1:
            {
                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);
                        ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                        return 1;
            }
        case 2:
            {
                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);
                ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                return 1;
            }
        default:
            {
                SendClientMessage(playerid, COLOR_WHITE, "Invalid license type! /siren [type]");
                SendClientMessage(playerid, COLOR_GRAD2, "Type: 1 = Roof, 2 = Inside, 3 = Off.");
            }
        }
    return 1;
}
I've checked over my script and it is definitely this which is crashing it, nothing else.


Re: Police Dash Siren - phillip875 - 09.08.2012

pawn Код:
public OnPlayerCommandText(playerid,cmdtext[])
{
    if(strcmp("/siren", cmdtext, true, 10) == 0)
    {
        new string[128], type;
        new VID = GetPlayerVehicleID(playerid);
        new x_siren[256];
        x_siren = strtok(cmdtext, idx);
        type = strval(x_siren);
        if(!strlen(x_siren))
        {
            SendClientMessage(playerid, COLOR_WHITE, "USAGE: /siren [type]");
            SendClientMessage(playerid, COLOR_GRAD2, "Type: 1 = Inside, 2 = Roof, 3 = Off.");
            return 1;
        }
        if(type < 1 || type > 3)
        {
            SendClientMessage(playerid, COLOR_WHITE, "Invalid license type! /siren [type]");
            SendClientMessage(playerid, COLOR_GRAD2, "Type: 1 = Roof, 2 = Inside, 3 = Off.");
            return 1;
        }
        if(type == 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);
            ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
            return 1;
        }
        if(type == 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);
            ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
            return 1;
         }
         if(type == 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);
            ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
            return 1;
        }
    }
    return 0;
}
Give that a go.


Re: Police Dash Siren - Melon - 10.08.2012

Quote:
Originally Posted by phillip875
Посмотреть сообщение
pawn Код:
public OnPlayerCommandText(playerid,cmdtext[])
{
    if(strcmp("/siren", cmdtext, true, 10) == 0)
    {
        new string[128], type;
        new VID = GetPlayerVehicleID(playerid);
        new x_siren[256];
        x_siren = strtok(cmdtext, idx);
        type = strval(x_siren);
        if(!strlen(x_siren))
        {
            SendClientMessage(playerid, COLOR_WHITE, "USAGE: /siren [type]");
            SendClientMessage(playerid, COLOR_GRAD2, "Type: 1 = Inside, 2 = Roof, 3 = Off.");
            return 1;
        }
        if(type < 1 || type > 3)
        {
            SendClientMessage(playerid, COLOR_WHITE, "Invalid license type! /siren [type]");
            SendClientMessage(playerid, COLOR_GRAD2, "Type: 1 = Roof, 2 = Inside, 3 = Off.");
            return 1;
        }
        if(type == 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);
            ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
            return 1;
        }
        if(type == 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);
            ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
            return 1;
         }
         if(type == 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);
            ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
            return 1;
        }
    }
    return 0;
}
Give that a go.
Okay, that's solved the crashing. Thank you. These are the error messages after compiling the script.

Код:
C:\Users\DAN\Desktop\CSRP\gamemodes\csrp.pwn(44511) : error 021: symbol already defined: "OnPlayerCommandText"
C:\Users\DAN\Desktop\CSRP\gamemodes\csrp.pwn(44517) : error 017: undefined symbol "idx"
C:\Users\DAN\Desktop\CSRP\gamemodes\csrp.pwn(44533) : error 017: undefined symbol "Siren"
C:\Users\DAN\Desktop\CSRP\gamemodes\csrp.pwn(44533) : warning 215: expression has no effect
C:\Users\DAN\Desktop\CSRP\gamemodes\csrp.pwn(44533) : error 001: expected token: ";", but found "]"
C:\Users\DAN\Desktop\CSRP\gamemodes\csrp.pwn(44533) : error 029: invalid expression, assumed zero
C:\Users\DAN\Desktop\CSRP\gamemodes\csrp.pwn(44533) : fatal error 107: too many error messages on one line
Код:
44511: public OnPlayerCommandText(playerid,cmdtext[])
44533: if(Siren[VID] == 1)
44517: x_siren = strtok(cmdtext, idx);
Also.. I forgot to note that I need this restricted and only useable by IsACop || IsAnAgent.


Re: Police Dash Siren - phillip875 - 10.08.2012

You didn't need to copy and paste the "public OnPlayerCommandText(playerid,cmdtext[])"

You should of copied everything from if(strcmp("/siren") to before "return 0;" and pasted it where your existing one was.

Add "new idx;" in the command or make it a global.

Also add "new Siren[MAX_VEHICLES];"

To restrict it

after
[PAWN]if(strcmp("/siren",cmdtext,true,10) == 0)
{[/PAWN}

put
pawn Код:
if(IsACop(playerid) || IsAnAgent(playerid))
{
before the last bracket for if(strcmp("/siren") add another } so it matches with your restriction


Re: Police Dash Siren - phillip875 - 10.08.2012

pawn Код:
if(strcmp("/siren", cmdtext, true, 10) == 0)
    {
        if(IsACop(playerid) || IsAnAgent(playerid))
        {
            new string[128], type,idx;
            new VID = GetPlayerVehicleID(playerid);
            new x_siren[256];
            new Siren[MAX_VEHICLES];
            x_siren = strtok(cmdtext, idx);
            type = strval(x_siren);
            if(!strlen(x_siren))
            {
                SendClientMessage(playerid, COLOR_WHITE, "USAGE: /siren [type]");
                SendClientMessage(playerid, COLOR_GRAD2, "Type: 1 = Inside, 2 = Roof, 3 = Off.");
                return 1;
            }
            if(type < 1 || type > 3)
            {
                SendClientMessage(playerid, COLOR_WHITE, "Invalid license type! /siren [type]");
                SendClientMessage(playerid, COLOR_GRAD2, "Type: 1 = Roof, 2 = Inside, 3 = Off.");
                return 1;
            }
            if(type == 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);
                ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                return 1;
            }
            if(type == 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);
                ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                return 1;
             }
             if(type == 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);
                ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                return 1;
            }
         }
         else return 0;
    }
Copy and paste that where your current /siren is and try.


Re: Police Dash Siren - Melon - 10.08.2012

pawn Код:
if(strcmp("/siren", cmdtext, true, 10) == 0)
    {
        if(IsACop(playerid) || IsAnAgent(playerid))
        {
            new string[128], type,idx;
            new VID = GetPlayerVehicleID(playerid);
            new x_siren[256];
            new idx;
            new Siren[MAX_VEHICLES];
            x_siren = strtok(cmdtext, idx);
            type = strval(x_siren);
            if(!strlen(x_siren))
            {
                SendClientMessage(playerid, COLOR_WHITE, "USAGE: /siren [type]");
                SendClientMessage(playerid, COLOR_GRAD2, "Type: 1 = Inside, 2 = Roof, 3 = Off.");
                return 1;
            }
            if(type < 1 || type > 3)
            {
                SendClientMessage(playerid, COLOR_WHITE, "Invalid license type! /siren [type]");
                SendClientMessage(playerid, COLOR_GRAD2, "Type: 1 = Roof, 2 = Inside, 3 = Off.");
                return 1;
            }
            if(type == 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);
                ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                return 1;
            }
            if(type == 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);
                ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                return 1;
             }
             if(type == 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);
                ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                return 1;
            }
         }
         else return 0;
    }
Thank you for the quick replies but it crashes when compiling..


Re: Police Dash Siren - EvanA - 28.07.2013

Sure its not something else in the script?


Re: Police Dash Siren - BossZk - 28.07.2013

idk if this will fix it but siren does not have 10 characters

pawn Код:
if(strcmp("/siren", cmdtext, true, 10) == 0)