rendered paste body//------------------------------------------------------------------------------
// TESTMOD [TM]
//
// This gamemode is created by SA-MP Script Maker 0.1
//------------------------------------------------------------------------------
#include <a_samp>
#include <core>
#include <file>
#include <float>
#define GIVECASH_DELAY 5000 // Time in ms between /givecash commands.
//------------------------------------------------------------------------------
//Defines
//Colours (Relevant code!)
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_RED 0xAA3333AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_WHITE 0xFFFFFFAA
#define TEAM_1 1
#define TEAM_2 2
#define TEAM_3 3
//Fuel (Relevant code!)
#define TIME 5000
#define AMOUNT 150
//Gas stations (Relevant code!)
#define CP_STATION1 0
#define CP_STATION2 1
#define CP_STATION3 2
#define CP_STATION4 3
#define CP_STATION5 4
#define CP_STATION6 5
#define CP_STATION7 6
#define CP_STATION8 7
#define CP_STATION9 8
#define CP_STATION10 9
#define CP_STATION11 10
#define CP_STATION12 11
#define CP_STATION13 12
#define CP_STATION14 13
#define CP_STATION15 14
#define CP_STATION16 15
#define GIVECASH_DELAY 5000 // Time in ms between /givecash commands.
#define MAX_POINTS 16 //(Relevant code!)
//------------------------------------------------------------------------------
//Variables
//Checkpoint vars (Relevant code!)
new playerCheckpoint[MAX_PLAYERS];
//Fuel vars (Relevant code!)
#define MAX_CARS 29 //make sure to change this to your vehicle count
new Petrol[MAX_CARS];
//Coordinate check var (Relevant code!)
new Float:checkCoords[MAX_POINTS][4] = {
{2098.1316,901.7380,2137.7456,963.0146},
{2617.5967,1062.8710,2656.6526,1142.5109},
{501.7475,1626.7821,653.2095,1774.1093},
{-1351.2833,2638.8943,-1265.1661,2738.6450},
{-2450.3767,949.5080,-2400.8530,1069.8329},
{-1715.5112,349.5567,-1658.8451,458.3686},
{-2265.3027,-2586.3762,-2219.1868,-2558.2539},
{-1657.4102,-2763.3518,-1501.5303,-2666.7454},
{1903.7450,-1795.7990,1955.5667,-1759.5187},
{-135.2077,-1199.8291,-43.7008,-1134.7999},
{1336.7378,454.7961,1430.0760,483.9776},
{648.2494,-592.9003,670.9278,-540.8264},
{-1494.2593,1854.1290,-1449.4076,1885.2032},
{2097.0452,2708.1218,2172.7161,2762.7495},
{2187.6587,2462.8057,2215.5042,2495.0332},
{1577.7729,2182.5112,1616.5842,2242.3628}
};
//Checkpoint check var (Relevant code!)
new Float:checkpoints[MAX_POINTS][4] = {
{2109.2126,917.5845,10.8203,5.0},
{2640.1831,1103.9224,10.8203,5.0},
{611.8934,1694.7921,6.7193,5.0},
{-1327.5398,2682.9771,49.7896,5.0},
{-2413.7427,975.9317,45.0031,5.0},
{-1672.3597,414.2950,6.8866,5.0},
{-2244.1365,-2560.6294,31.6276,5.0},
{-1603.0166,-2709.3589,48.2419,5.0},
{1939.3275,-1767.6813,13.2787,5.0},
{-94.7651,-1174.8079,1.9979,5.0},
{1381.6699,462.6467,19.8540,5.0},
{657.8167,-559.6507,16.0630,5.0},
{-1478.2916,1862.8318,32.3617,5.0},
{2147.3054,2744.9377,10.5263,5.0},
{2204.9602,2480.3494,10.5278,5.0},
{1590.9493,2202.2637,10.5247,5.0}
};
//Checkpoint type var (Relevant code!)
new checkpointType[MAX_POINTS] = {
CP_STATION1,
CP_STATION2,
CP_STATION3,
CP_STATION4,
CP_STATION5,
CP_STATION6,
CP_STATION7,
CP_STATION8,
CP_STATION9,
CP_STATION10,
CP_STATION11,
CP_STATION12,
CP_STATION13,
CP_STATION14,
CP_STATION15,
CP_STATION16
};
//------------------------------------------------------------------------------
new gTeam[MAX_PLAYERS];
main()
{
print("Loaded LSTDM+PETROL\n");
}
//------------------------------------------------------------------------------
//Pre made Functions (Relevant code!)
//------------------------------------------------------------------------------
//Check point type function
public getCheckpointType(playerID) {
return checkpointType[playerCheckpoint[playerID]];
}
//IsPlayerInArea function
public isPlayerInArea(playerID, Float:data[4])
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerID, X, Y, Z);
if(X >= data[0] && X <= data[2] && Y >= data[1] && Y <= data[3])
{
return 1;
}
return 0;
}//Update the players checkpoint function
public checkpointUpdate()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
for(new j=0; j < MAX_POINTS; j++)
{
if(isPlayerInArea(i, checkCoords[j]))
{
if(playerCheckpoint[i]!=j)
{
DisablePlayerCheckpoint(i);
SetPlayerCheckpoint(i, checkpoints[j][0],checkpoints[j][1],checkpoints[j][2],checkpoints[j][3]);
playerCheckpoint[i] = j;
}
}
else
{
if(playerCheckpoint[i]==j)
{
DisablePlayerCheckpoint(i);
playerCheckpoint[i] = 999;
}
}
}
}
}
}
//Fuel check function
public CheckFuel(playerid)
{
new Ptmess[32];
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i) == 1 && IsPlayerInAnyVehicle(i) == 1)
{
if(GetPlayerState(i) == 2)
{
new Vi;
Vi = GetPlayerVehicleID(i);
Petrol[Vi]--;
if(Petrol[Vi] >= 1)
{
format(Ptmess, sizeof(Ptmess), "~w~Petrol ->~r~%d", Petrol[Vi]);
GameTextForPlayer(i, Ptmess, 500, 4);
}
else
{
RemovePlayerFromVehicle(i);
SendClientMessage(i, COLOR_RED, "Your vehicle ran out of Fuel");
if(Petrol[Vi] < 0)
{
Petrol[Vi] = 0;
}
}
if(Petrol[i] >= 51)
{
format(Ptmess, sizeof(Ptmess), "~w~Petrol ->%d", Petrol[Vi]);
GameTextForPlayer(i, Ptmess, 500, 4);
}
}
}
}
}//Refill fuel function
public FuelRefill(playerid)
{
new VID;
VID = GetPlayerVehicleID(playerid);
if(Petrol[VID] < AMOUNT)
{
new FillUp;
FillUp = AMOUNT - Petrol[VID];
if(GetPlayerMoney(playerid) >= FillUp)
{
Petrol[VID] +=FillUp;
new mess[64];
format(mess, sizeof(mess), "You put %d units of Benzin in your vehicle", FillUp);
SendClientMessage(playerid, COLOR_WHITE, mess);
GivePlayerMoney(playerid, -FillUp);
return 1;
}
else
{
SendClientMessage(playerid, COLOR_RED, "You don't have enough money for benzin");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_RED, "Your vehicle is allready full with benzin");
return 1;
}
return 1;
}
//--------------------------------------------/-----------------/-----------/-----------------/----------------/-----------------/
public OnGameModeInit()
{
SetGameModeText("LSTDM+BENZIN");
ShowPlayerMarkers(1);
ShowNameTags(1);
//T(he next 6 lines are all Relevant code!)
for(new c=0;c<MAX_CARS;c++)
{
Petrol[c] = AMOUNT;
}
SetTimer("CheckFuel", TIME, 1);
SetTimer("checkpointUpdate", 1100, 1);
AddPlayerClass(106,2494.3562,-1686.1851,13.5128,1.6176,5,0, 28,100,30,200); //
AddPlayerClass(107,2512.6980,-1672.8854,13.5053,82.4816,5,0, 35,1,30,200); //
AddPlayerClass(102,1908.4832,-1084.3281,24.2066,332.1639,5,0, 35,3,30,200); //
AddPlayerClass(280,1573.6373,-1633.8633,13.5569,79.9025,25,100,3,0,33,50); //
AddPlayerClass(284,1573.5677,-1631.6781,13.3828,79.9750,25,100,3,0,33,50); //
AddPlayerClass(277,-2024.6244,69.6427,28.4417,270.7564,42,9999,3,0,44,1);
AddPlayerClass(285,1573.5227,-1692.2543,6.2188,191.9810,17,20,31,500,22,100); //
AddStaticVehicle(596,1604.0367,-1620.8091,13.2294,90.3612,0,1); //
AddStaticVehicle(536,2505.4890,-1695.3503,13.2931,1.4558,26,96); //
AddStaticVehicle(596,1603.2155,-1605.8500,13.2201,90.0685,0,1); //
AddStaticVehicle(596,1603.4541,-1630.0145,13.2304,90.0761,0,1); //
AddStaticVehicle(596,1604.3523,-1626.5479,13.2444,90.0763,0,1); //
AddStaticVehicle(596,1601.3359,-1688.0052,5.6287,90.0758,0,1); //
AddStaticVehicle(596,1601.3313,-1684.3447,5.6287,90.0758,0,1); //
AddStaticVehicle(596,1601.3470,-1696.3527,5.6287,90.0758,0,1); //
AddStaticVehicle(596,1601.3516,-1699.8674,5.6287,90.0758,0,1); //
AddStaticVehicle(596,1570.3251,-1710.1962,5.5759,357.2678,0,1); //
AddStaticVehicle(596,1564.5908,-1710.9171,5.6118,0.5393,0,1); //
AddStaticVehicle(601,1569.0431,-1693.8695,5.6494,180.8858,0,1); //
AddStaticVehicle(601,1562.2574,-1693.9742,5.6494,180.8858,1,1); //
AddStaticVehicle(497,1547.2900,-1641.8395,28.5788,87.8725,0,1); //
AddStaticVehicle(497,1547.0568,-1648.1121,28.5462,87.8728,0,1); //
AddStaticVehicle(497,2210.8748,2499.3906,15.8181,5.8266,0,1); //
AddStaticVehicle(596,2255.9316,2442.1934,10.5366,180.3756,0,1); //
AddStaticVehicle(596,2252.0483,2442.1672,10.5365,180.3756,0,1); //
AddStaticVehicle(596,2277.2422,2442.3335,10.5366,180.3756,0,1); //
AddStaticVehicle(407,-2022.3669,84.3204,28.2927,272.7082,3,1); //
AddStaticVehicle(407,-2022.7542,92.5641,28.3385,272.7959,3,1); //
AddStaticVehicle(596,1026.9486,-1342.8145,13.4500,268.4723,0,1); //
AddStaticVehicle(563,-2060.8513,79.1505,29.8778,0.5626,3,1); //
AddStaticVehicle(420,-1408.7021,-312.5261,13.7738,39.5140,6,1); //
AddStaticVehicle(567,2508.0242,-1666.3884,13.2629,10.7764,86,86); //
AddStaticVehicle(567,2477.4773,-1655.0356,13.1931,91.8945,86,86); //
AddStaticVehicle(425,2723.3564,-2441.7620,28.3644,6.3723,43,0); //
AddStaticVehicle(425,2727.7595,-2446.2952,29.5603,353.5743,43,0); //
AddStaticVehicle(577,1472.6519,-2595.2483,13.0931,270.3008,8,16); //
AddStaticVehicle(408,1493.5797,-2591.6401,13.2740,178.3924,64,1); //
AddStaticVehicle(487,2528.6719,-1677.6431,20.1055,0.3136,86,86); //
return 1;
}
public OnPlayerConnect(playerid)
{
SendClientMessage(playerid, 0xFFFFFFAA, "This server is underconstruction so, Dont expect too much.");
SendClientMessage(playerid, 0xFFFFFFAA, "Exspesially Rambo, spy)");
GivePlayerMoney(playerid, 500);
//Other stuff
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerCameraPos(playerid, 2495.4807, -1684.4324, 13.4795);
SetPlayerPos(playerid, 2495.4431, -1688.6630, 13.9467);
SetPlayerFacingAngle(playerid, 1.8265);
SetPlayerCameraLookAt(playerid, 2495.4431, -1688.6630, 13.9467);
if(classid == 0 || classid == 1){
gTeam[playerid] = TEAM_1;
GameTextForPlayer(playerid, "GROVE", 1000, 3);}
else if(classid == 2){
gTeam[playerid] = TEAM_2;
GameTextForPlayer(playerid, "Ballas", 1000, 3);}
else if(classid == 3 || classid == 4 || classid == 5 || classid == 6){
gTeam[playerid] = TEAM_3;
GameTextForPlayer(playerid, "POLICE", 1000, 3);}
return 1;
}
public OnPlayerSpawn(playerid)
{
SetPlayerInterior(playerid,0);
if(gTeam[playerid] == TEAM_1)
SetPlayerColor(playerid, 0x008000FF);
else if(gTeam[playerid] == TEAM_2)
SetPlayerColor(playerid, 0x800080FF);
else if(gTeam[playerid] == TEAM_3)
SetPlayerColor(playerid, 0x000080FF);
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid != INVALID_PLAYER_ID){
if(gTeam[killerid] != gTeam[playerid]){
GivePlayerMoney(killerid, 500);
SetPlayerScore(killerid, GetPlayerScore(killerid) + 1);
}else{
GivePlayerMoney(killerid, 500);
SetPlayerScore(killerid, GetPlayerScore(killerid) - 1);
}
}
SendDeathMessage(killerid, playerid, reason);
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp(cmdtext, "/day", true)==0)
{
/* Do something here */
SetWorldTime(12);
GameTextForPlayer(playerid,"~p~Giorno ~p~Felice ~p~LOL",5000,5);
return 1;
}
if (strcmp(cmdtext, "/night", true)==0)
{
/* Do something here */
SetWorldTime(0);
GameTextForPlayer(playerid,"~b~notte ~b~oscura ~g~LOL",5000,5);
return 1;
}
//car locking code copied from Allan.
if (strcmp(cmdtext, "/lock", true)==0)
{
if(IsPlayerInAnyVehicle(playerid))
{
new State=GetPlayerState(playerid);
if(State!=PLAYER_STATE_DRIVER)
{
SendClientMessage(playerid,0xFFFF00AA,"You can only lock the doors as the driver.");
return 1;
}
new i;
for(i=0;i<MAX_PLAYERS;i++)
{
if(i != playerid)
{
SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid),i, 0, 1);
}
}
SendClientMessage(playerid, 0xFFFF00AA, "Vehicle locked!");
new Float:pX, Float:pY, Float:pZ;
GetPlayerPos(playerid,pX,pY,pZ);
PlayerPlaySound(playerid,1056,pX,pY,pZ);
}
else
{
SendClientMessage(playerid, 0xFFFF00AA, "You're not in a vehicle!");
}
return 1;
}
if (strcmp(cmdtext, "/unlock", true)==0)
{
if(IsPlayerInAnyVehicle(playerid))
{
new State=GetPlayerState(playerid);
if(State!=PLAYER_STATE_DRIVER)
{
SendClientMessage(playerid,0xFFFF00AA,"You can only unlock the doors as the driver.");
return 1;
}
new i;
for(i=0;i<MAX_PLAYERS;i++)
{
SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid),i, 0, 0);
}
SendClientMessage(playerid, 0xFFFF00AA, "Vehicle unlocked!");
new Float:pX, Float:pY, Float:pZ;
GetPlayerPos(playerid,pX,pY,pZ);
PlayerPlaySound(playerid,1057,pX,pY,pZ);
}
else
{
SendClientMessage(playerid, 0xFFFF00AA, "You're not in a vehicle!");
}
return 1;
}
//------------------- /givecash
if(strcmp(cmd, "/givecash", true) == 0) {
new tmp[256];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /givecash [playerid] [amount]");
return 1;
}
giveplayerid = strval(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /givecash [playerid] [amount]");
return 1;
}
moneys = strval(tmp);
//printf("givecash_command: %d %d",giveplayerid,moneys);
if (IsPlayerConnected(giveplayerid)) {
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
if(dmPlayers[giveplayerid]==999) {
playermoney = GetPlayerMoney(playerid);
if (moneys > 0 && playermoney >= moneys) {
GivePlayerMoney(playerid, (0 - moneys));
GivePlayerMoney(giveplayerid, moneys);
format(string, sizeof(string), "You have sent %s (id: %d), $%d.", giveplayer,giveplayerid, moneys);
SendClientMessage(playerid, COLOR_YELLOW, string);
format(string, sizeof(string), "You have recieved $%d from %s (id: %d).", moneys, sendername, playerid);
SendClientMessage(giveplayerid, COLOR_YELLOW, string);
printf("%s(playerid:%d) has transfered %d to %s(playerid:%d)",sendername, playerid, moneys, giveplayer, giveplayerid);
}
else {
SendClientMessage(playerid, COLOR_YELLOW, "Invalid transaction amount.");
}
} else {
format(string, sizeof(string), "%s is currently in a deathmatch. You cannot give them money at this time.", giveplayer);
SendClientMessage(playerid, COLOR_YELLOW, string);
}
}
else {
format(string, sizeof(string), "%d is not an active player.", giveplayerid);
SendClientMessage(playerid, COLOR_YELLOW, string);
}
return 1;
}
printf("OnPlayerText(%d)");
//Gas station locations command (Relevant code!)
if(strcmp(cmdtext, "/gasloc", true) == 0) {
SendClientMessage(playerid, COLOR_GREEN, "Gas stations are located at:");
SendClientMessage(playerid, COLOR_YELLOW, "LV South, The Strip -- LV SouthEast, Come-a-lot");
SendClientMessage(playerid, COLOR_YELLOW, "LV Central, Bonecounty -- LV NorthWest, Tierra Robada");
SendClientMessage(playerid, COLOR_YELLOW, "SF NorthWest, Juniper Hollow -- SF East, Easter Basin");
SendClientMessage(playerid, COLOR_YELLOW, "LS SouthWest, Angel Pine -- LS SouthWest, Whetstone");
SendClientMessage(playerid, COLOR_YELLOW, "LS Central, Idlewood -- LS West, Flint County");
SendClientMessage(playerid, COLOR_YELLOW, "LS North, montgomery -- LS North, Dillimore");
SendClientMessage(playerid, COLOR_YELLOW, "LV NorthWest, South Tierra Robada -- LV North, Spiny Bed");
SendClientMessage(playerid, COLOR_YELLOW, "LV North, Emerald Isle......");
return 1;
}
return 0;
}
//------------------------------------------------------------------------------
public OnPlayerInfoChange(playerid)
{
printf("OnPlayerInfoChange(%d)");
return 1;
}
//------------------------------------------------------------------------------
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
printf("OnPlayerEnterVehicle(%d, %d, %d)", playerid, vehicleid, ispassenger);
return 1;
}
//------------------------------------------------------------------------------
public OnPlayerExitVehicle(playerid, vehicleid)
{
printf("OnPlayerExitVehicle(%d, %d)", playerid, vehicleid);
return 1;
}
//------------------------------------------------------------------------------
public OnPlayerStateChange(playerid, newstate, oldstate)
{
printf("OnPlayerStateChange(%d, %d, %d)", playerid, newstate, oldstate);
return 1;
}
//------------------------------------------------------------------------------
public OnPlayerEnterCheckpoint(playerid)
{
printf("OnPlayerEnterCheckpoint(%d)", playerid);
//(The next 13 lines (the return should always be at the end) is Relevant code!)
if(getCheckpointType(playerid)>= 0 && getCheckpointType(playerid)<= 15)
{
if(IsPlayerInAnyVehicle(playerid))
{
SendClientMessage(playerid,COLOR_WHITE,"Stay in the checkpoint to refill your car with petrol");
FuelRefill(playerid);
}
else
{
SendClientMessage(playerid, COLOR_RED, "Your not in a vehicle");
}
return 1;
}
return 1;
}
//------------------------------------------------------------------------------
public OnPlayerLeaveCheckpoint(playerid)
{
printf("OnPlayerLeaveCheckpoint(%d)", playerid);
return 1;
}
//------------------------------------------------------------------------------