27.09.2012, 00:07
here is the Code if that will help
PHP код:
// [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;
}
strtok(const string[], &index, const seperator[] = " ")
{
new index2, result[30];
index2 = strfind(string, seperator, false, index);
if(index2 == -1)
{
if(strlen(string) > index)
{
strmid(result, string, index, strlen(string), 30);
index = strlen(string);
}
return result;
}
if(index2 > (index + 29))
{
index2 = index + 29;
strmid(result, string, index, index2, 30);
index = index2;
return result;
}
strmid(result, string, index, index2, 30);
index = index2 + 1;
return result;
}