25.08.2012, 11:05
Indentation fixed, errors solved.
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)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /siren [type]") &&
SendClientMessage(playerid, COLOR_GRAD2, "Type: 1 = Inside, 2 = Roof, 3 = Off.");
switch(type)
{
case 1:
{
if(Siren[VID] == 1) return SendClientMessage(playerid, COLOR_GRAD2, "This vehicle already has a siren!");
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) return SendClientMessage(playerid, COLOR_GRAD2, "This vehicle already has a siren!");
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) return SendClientMessage(playerid, COLOR_GRAD2, "This vehicle doesn't have a siren on it!");
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 return 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;
}