// This is a comment
// uncomment the line below if you want to write a filterscript
#define FILTERSCRIPT
#include <a_samp>
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Nuclear Bomb | BlackWidow ");
// Please do not edit this tag //
print("--------------------------------------\n");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
#endif
//==============================================================================
//===========================Customizeable Settings=============================
//==============================================================================
//
// #define savelog true // change to "false" to disable logging. [coming soon]
//
//==============================================================================
//==============================END CUSTOMIZATION===============================
//==============================================================================
//
//==============================================================================
//============================DO NOT EDIT THIS BELLOW===========================
//==============================================================================
#define COLOR_RED 0xAA3333AA
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_ADMINCMD 0x007E96F6
new bool:nuke = false;
new bool:nukea = false;
new bool:nukeb = false;
new bool:nukec = false;
new bool:nuked = false;
//new bool:fallout = false; planned for later version
new bool:safecar[MAX_PLAYERS];
//new Engine[MAX_VEHICLES]; planned for later version
new nuketimer1;
new fallouthp;
//CUSTOMS
new bool:lhp = true; // change this to false to disable health loss in fallout.
forward makenuke(playerid);
forward nuketimer();
forward LaunchNuke();
forward writelog(playerid);
forward Fallout();
forward fallouttime();
forward destroynuke(playerid);
//==============================================================================
//================================END VARIABLE SETS=============================
//==============================================================================
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/makenuke", cmdtext, true, 10) == 0)
{
// YOU CAN INSERT IF HERE FOR GROUP/GANG/FACTION/ADMIN CHECK
makenuke(playerid); // Starts Make Nuke Public, and Sends PlayerID
// CLOSE IF STATEMENT; IF USED
return 1;
}
if (strcmp("/launchnuke", cmdtext, true, 10) == 0)
{
if (nuke == true)
{
LaunchNuke();
}
}
if (strcmp("/nukea", cmdtext, true, 10) ==0)
{
if(IsPlayerAdmin(playerid))
{
SetPlayerPos(playerid, -62.238136, -1116.629028, 1.078125);
}
else
{
return 0;
}
return 1;
}
if (strcmp("/nukeb", cmdtext, true, 10) ==0)
{
if(IsPlayerAdmin(playerid))
{
SetPlayerPos(playerid, 263.488922, 21.603782, 3.433196);
}
else
{
return 0;
}
return 1;
}
if (strcmp("/nukec", cmdtext, true, 10) ==0)
{
if(IsPlayerAdmin(playerid))
{
SetPlayerPos(playerid, 1080.911132, -345.248352, 73.984832);
}
else
{
return 0;
}
return 1;
}
if (strcmp("/nuked", cmdtext, true, 10) ==0)
{
if(IsPlayerAdmin(playerid))
{
SetPlayerPos(playerid, 2755.711181, -2534.867431, 13.645303);
}
else
{
return 0;
}
return 1;
}
return 0;
}
public makenuke(playerid)
{
if(nukea == true) return SendClientMessage(playerid, COLOR_RED, "A nuke is already under construction"); // prevents dual nuke
if(nukeb == true) return SendClientMessage(playerid, COLOR_RED, "A nuke is already under construction"); // preventd dual nuke
if(nukec == true) return SendClientMessage(playerid, COLOR_RED, "A nuke is already under construction"); // prevents dual nuke
if(nuked == true) return SendClientMessage(playerid, COLOR_RED, "A nuke is already under construction"); // prevents dual nuke
if(IsPlayerInRangeOfPoint(playerid, 25.0, -62.238136, -1116.629028, 1.078125))
{
SendClientMessageToAll(COLOR_RED, "NEWS WIRE: Unconfirmed reports state a local terror cell has began building a nuclear bomb");
nuketimer1 = SetTimer("nuketimer",120000,false); // 2 mins before nuke will be finised.
nukea = true;
nukeb = false;
nukec = false;
nuked = false;
}
else if(IsPlayerInRangeOfPoint(playerid, 25.0, 263.488922, 21.603782, 3.433196))
{
SendClientMessageToAll(COLOR_RED, "NEWS WIRE: Unconfirmed reports state a local terror cell has began building a nuclear bomb");
nuketimer1 = SetTimer("nuketimer",120000,false); // 2 mins before nuke will be finised.
nukea = false;
nukeb = true;
nukec = false;
nuked = false;
}
else if(IsPlayerInRangeOfPoint(playerid, 25.0, 1080.911132, -345.248352, 73.984832))
{
SendClientMessageToAll(COLOR_RED, "NEWS WIRE: Unconfirmed reports state a local terror cell has began building a nuclear bomb");
nuketimer1 = SetTimer("nuketimer",120000,false); // 2 mins before nuke will be finised.
nukea = false;
nukeb = false;
nukec = true;
nuked = false;
}
else if(IsPlayerInRangeOfPoint(playerid, 25.0, 2755.711181, -2534.867431, 13.645303))
{
SendClientMessageToAll(COLOR_RED, "NEWS WIRE: Unconfirmed reports state a local terror cell has began building a nuclear bomb");
nuketimer1 = SetTimer("nuketimer",120000,false); // 2 mins before nuke will be finised.
nukea = false;
nukeb = false;
nukec = false;
nuked = true;
}
else
{
SendClientMessage(playerid, COLOR_GREY,("You are not at a nuke construction site")); // not at site
}
return 1;
}
public nuketimer() //after devince created
{
SendClientMessageToAll(COLOR_RED, "NEWS WIRE: Confirmed reportes state a local terror cell has successfuly created a nuclear device");
nuke = true;
KillTimer(nuketimer1);
}
public LaunchNuke()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerInRangeOfPoint(i, 250.0, 275.951751, 1816.600341, 1.007812))
{
// no action
}
else
{
new Float:x, Float:y, Float:z;
if(IsPlayerInAnyVehicle(i))
{
RemovePlayerFromVehicle(i);
SendClientMessage(i, COLOR_RED, "A light in sky forces you out of your car");
}
GetPlayerPos(i, x, y, z);
SetPlayerHealth(i, 20);
CreateExplosion(x+random(5), y+random(5), z+random(5), 7, 250.0);
GameTextForAll("~n~~r~Nuclear Device Launched",10000,5);
//fallout = true; planned.
Fallout();
fallouthp = SetTimer("Fallout",6000,false);
SetTimer("fallouttime",420000,false);
SetWeather(19);
}
}
}
return 1;
}
public Fallout()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(lhp == true)
{
if(IsPlayerConnected(i))
{
new Float:health;
GetPlayerHealth(i, health);
if(safecar[i] == true)
{
SetPlayerDrunkLevel(i, 0);
fallouthp = SetTimer("Fallout",16000,false);
SetPlayerHealth(i, health - 1.0);
}
else if(safecar[i] == false)
{
SetPlayerDrunkLevel(i, 3000);
fallouthp = SetTimer("Fallout",16000,false);
SetPlayerHealth(i, health - 3.0);
}
}
}
}
return 1;
}
public fallouttime()
{
SetWeather(0);
//fallout = false; planned.
KillTimer(fallouthp);
return 1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(GetVehicleModel(vehicleid) == 424) // Open Top
{
safecar[playerid] = false;
}
else if(GetVehicleModel(vehicleid) == 448) // Open Top
{
safecar[playerid] = false;
}
else if(GetVehicleModel(vehicleid) == 468) // Open Top
{
safecar[playerid] = false;
}
else if(GetVehicleModel(vehicleid) == 480) // Open Top
{
safecar[playerid] = false;
}
else if(GetVehicleModel(vehicleid) == 481) // Open Top
{
safecar[playerid] = false;
}
else if(GetVehicleModel(vehicleid) == 500) // Open Top
{
safecar[playerid] = false;
}
else if(GetVehicleModel(vehicleid) == 521) // Open Top
{
safecar[playerid] = false;
}
else if(GetVehicleModel(vehicleid) == 522) // Open Top
{
safecar[playerid] = false;
}
else if(GetVehicleModel(vehicleid) == 523) // Open Top
{
safecar[playerid] = false;
}
else if(GetVehicleModel(vehicleid) == 523) // Open Top
{
safecar[playerid] = false;
}
else if(GetVehicleModel(vehicleid) == 531) // Open Top
{
safecar[playerid] = false;
}
else if(GetVehicleModel(vehicleid) == 533) // Open Top
{
safecar[playerid] = false;
}
else if(GetVehicleModel(vehicleid) == 536) // Open Top
{
safecar[playerid] = false;
}
else if(GetVehicleModel(vehicleid) == 555) // Open Top
{
safecar[playerid] = false;
}
else if(GetVehicleModel(vehicleid) == 575) // Open Top
{
safecar[playerid] = false;
}
else
{
safecar[playerid] = true;
}
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
safecar[playerid] = false;
return 1;
}