27.09.2012, 00:19
pawn Код:
// [FS] Engine System v3
// Made J/Changes by Mika
// Credits J/for helping me fix some stuff
// DO NOT REMOVE THESE CREDITS
#include <a_samp>
#pragma tabsize 0
#include <zcmd>
#define SCM SendClientMessage
#define COLOR_PURPLE 0xC2A2DAAA
new VehicleStarted[MAX_VEHICLES];
new sendername[MAX_PLAYER_NAME];
new BigEar[MAX_PLAYERS];
forward Starting(playerid);
forward ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5);
public OnFilterScriptInit()
{
print("-------------------------------------");
print("-----Engine System By Mika-----");
new Car;
for(Car=0;Car<MAX_VEHICLES;Car++)
return 1;
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp("/exitcar", cmdtext, true, 10) == 0)
{
if(IsPlayerConnected(playerid))
{
if(IsPlayerInAnyVehicle(playerid))
{
RemovePlayerFromVehicle(playerid);
SCM(playerid,0xFFFF00AA,"* You left the vehicle.");
TogglePlayerControllable(playerid,1);
}else{
SCM(playerid,0xFFFF00AA,"* You are not in a vehicle!");
}
}
return 1;
}
return 0;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
new CarID = GetPlayerVehicleID(playerid);
new CarMod = GetVehicleModel(playerid);
if(newstate == PLAYER_STATE_DRIVER)
{
if(VehicleStarted[CarID] == 0 && CarMod != 510 && CarMod != 509 && CarMod != 481)
{
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 510 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 509 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 481){
return 1;
}
TogglePlayerControllable(playerid,0);
SCM(playerid,0x950000FF,"* Please Start The Engine Use Key: Y Or Press /engine");
}else{
SCM(playerid,0x80FF80FF,"* The Engine Is Already Running!");
}
}
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if((newkeys & (KEY_YES )) == (KEY_YES))
{
if(IsPlayerInAnyVehicle(playerid))
{
if(IsPlayerConnected(playerid))
{
new Vehicle = GetPlayerVehicleID(playerid);
if(VehicleStarted[Vehicle] == 0)
{
RemovePlayerFromVehicle(playerid);
SCM(playerid,0x0000FFFF,"* You Leave The Vehicle And Switch Off The Engine.");
TogglePlayerControllable(playerid,1);
}
}
}
}
if(newkeys == KEY_JUMP)
{
if(IsPlayerInAnyVehicle(playerid))
{
if(IsPlayerConnected(playerid))
{
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 510 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 509 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 481){
return 1;
}
new Vehicle = GetPlayerVehicleID(playerid);
if(VehicleStarted[Vehicle] == 0)
{
new string[256];
SCM(playerid,0x80FF80FF,"* Starting Engine...");
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* %s attempts to start the Engine.", sendername);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
GameTextForPlayer(playerid,"~n~~n~~n~~n~~n~~n~~n~~g~Starting vehicle...",3000,3);
SetTimerEx("Starting",3500,0,"i",playerid);
}
}
}
}
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
TogglePlayerControllable(playerid,1);
new Vehicle = GetPlayerVehicleID(playerid);
VehicleStarted[Vehicle] = 0;
return 1;
}
public Starting(playerid)
{
new Vehicle = GetPlayerVehicleID(playerid);
new RandomStart;
if(IsPlayerConnected(playerid))
{
if(IsPlayerInAnyVehicle(playerid))
{
RandomStart = random(10);
switch(RandomStart)
{
case 0,1,2,3,4,5,6,7,8,9:
{
new string[256];
VehicleStarted[Vehicle] = 1;
TogglePlayerControllable(playerid,1);
GameTextForPlayer(playerid,"~r~Engine Started", 1000, 1);
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* %s starts the Engine.", sendername);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
}
case 10:
{
new string[256];
SendClientMessage(playerid,0xFF1C1CFF,"* Engine Failed To Start!");
format(string, sizeof(string), "* %s fails to start the Engine.", sendername);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
}
}
}
}
return 1;
}
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);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(!BigEar[i])
{
GetPlayerPos(i, posx, posy, posz);
tempposx = (oldposx -posx);
tempposy = (oldposy -posy);
tempposz = (oldposz -posz);
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;
}
There warning was due to an unused stock function at the far bottom of the script. Anyhow, warnings do not prevent an .AMX file from being produced and the server will still be able to load the filterscript.
The patched source is above. You may want to go through the code and re-indent it as the current state is poor.