rendered paste body#include <a_samp>
#define CP_SFCAR 0
#define CP_WANGS 1
#define CP_TRAMS 2
#define CP_CLUB 3
#define CP_BURGER 4
#define CP_MISTYS 5
#define CP_GARAGE 6
#define CP_TRAIN 7
#define CP_ZEROS 8
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_RED 0xAA3333AA
#define COLOR_GREEN 0x33AA33AA
#define P_SFCAR 0
#define P_WANGS 1
#define P_TRAMS 2
#define P_CLUB 3
#define P_BURGER 4
#define P_MISTYS 5
#define P_GARAGE 6
#define P_TRAIN 7
#define P_ZEROS 8
#define P_OFFSET 11
new giveplayer[MAX_PLAYER_NAME];
new playerCheckpoint[MAX_PLAYERS];
enum PROPINFO {
name[30],
Float:checkpointx,
Float:checkpointy,
Float:checkpointz,
Float:areax1,
Float:areax2,
Float:areay1,
Float:areay2
}
#define MAX_POINTS 9
new checkCoords[MAX_POINTS][PROPINFO] = {
{"San Fierro Driving School",-2029.7269,-116.2020,1035.1719,-2035.6470,-119.3649,-2021.5370,-113.6046},
{"Wang Cars",-1956.4724,285.1592,35.4688,-2269.491455,534.383666,35.015625,-1941.9794},
{"San Fierro Tram Service",-2719.1909,-318.1408,7.8438,-2374.3145,553.3713,-2236.6191,518.3326},
{"San Fierro Country Club",368.4482,-73.1867,1001.5078,-2723.4802,-323.2720,-2718.6848,-312.1307},
{"Burger Shot",495.3479,-75.2320,998.7578,379.1006,-76.7808,362.3110,-56.4985},
{"Mistys Shithole Bar",-2032.0352,161.4595,29.0461,512.0634,-88.7290,489.6101,-71.8145},
{"Xoomer Garage",-1971.9601,138.1361,27.6875,-2060.9048,183.4393,-2016.7871,118.7150},
{"San Fierro Train Station",-2236.1519,130.6743,1035.4141,-1978.7048,162.6923,-1961.9302,113.2506},
{"Zero's RC Shop",-2228.3884,251.8337,35.3203,-2239.7976,127.7212,-2219.3057,136.8329},
};
new checkpointType[MAX_POINTS] = {
CP_SFCAR,
CP_WANGS,
CP_TRAMS,
CP_CLUB,
CP_BURGER,
CP_MISTYS,
CP_GARAGE,
CP_TRAIN,
CP_ZEROS
};
#define MAX_PROPERTIES 9
new propertyValues[MAX_PROPERTIES] = {
130000,
210000,
90000,
2000000,
50000,
45000,
60000,
240000,
80000,
};
new propertyEarnings[MAX_PROPERTIES] = {
4500,
6000,
2000,
25000,
1200,
900,
1700,
6500,
2000,
};
/*
Working Properties
-------------------
Driving School
Super Market
Country Club
Zeros RC Shop
-------------------
*/
new propertyOwner[MAX_PROPERTIES] = {999, ...};
forward PropertyScoreUpdate();
forward getCheckpointType(playerID);
forward checkpointUpdate();
forward isPlayerInArea(playerID, Float:data[4]);
#if defined FILTERSCRIPT
#endif
public PropertyScoreUpdate()
{
new owners[MAX_PROPERTIES];
new payments[MAX_PROPERTIES];
for(new i=0; i < MAX_PROPERTIES; i++)
owners[i]=999;
for(new i=0; i < MAX_PROPERTIES; i++)
{
if(propertyOwner[i] < 999) {
for(new j=0; j < MAX_PROPERTIES; j++) {
if(owners[j]==propertyOwner[i]) {
payments[j]+=propertyEarnings[i];
j = MAX_PROPERTIES;
} else if (owners[j]==999) {
owners[j]=propertyOwner[i];
payments[j]+=propertyEarnings[i];
j = MAX_PROPERTIES;
}
}
}
}
for(new i=0; i < MAX_PROPERTIES; i++) {
if(owners[i] < 999 && IsPlayerConnected(owners[i])) {
new string[256];
GivePlayerMoney(owners[i], payments[i]);
format(string, sizeof(string), "You earned $%d from your properties.", payments[i]);
SendClientMessage(owners[i], COLOR_YELLOW, string);
}
}
}
public OnGameModeInit()
{
SetTimer("checkpointUpdate", 1100, 500);
SetTimer("PropertyScoreUpdate", 40005, 1);
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
new string[256];
if(strcmp(cmdtext, "/buy", true) == 0) {
new property=999;
if(IsPlayerInCheckpoint(playerid)) {
switch (playerCheckpoint[playerid]) {
case CP_SFCAR:{
property = P_SFCAR;
}
case CP_WANGS:{
property = P_WANGS;
}
case CP_TRAMS:{
property = P_TRAMS;
}
case CP_CLUB:{
property = P_CLUB;
}
case CP_BURGER:{
property = P_BURGER;
}
case CP_MISTYS:{
property = P_MISTYS;
}
case CP_GARAGE:{
property = P_GARAGE;
}
case CP_TRAIN:{
property = P_TRAIN;
}
case CP_ZEROS:{
property = P_ZEROS;
}
}
if(property==999) {
SendClientMessage(playerid, COLOR_YELLOW, "You need to be in a property checkpoint to /buy it.");
return 1;
}
// property--;
if(GetPlayerMoney(playerid) < propertyValues[property]) {
SendClientMessage(playerid, COLOR_RED, "You don't have enough money to buy this property.");
return 1;
}
if(propertyOwner[property]==playerid) {
SendClientMessage(playerid, COLOR_RED, "You already own this property.");
return 1;
}
if(propertyOwner[property] < 999) {
GetPlayerName(playerid, giveplayer, sizeof(giveplayer));
GivePlayerMoney(propertyOwner[property], propertyValues[property]);
format (string, sizeof(string), "Your property, the %s, has been bought out by %s (id: %d).",propertyNames[property],giveplayer,playerid);
SendClientMessage(propertyOwner[property], COLOR_RED, string);
}
GivePlayerMoney(playerid, 0-propertyValues[property]);
propertyOwner[property]=playerid;
format(string, sizeof(string), "You have purchased the %s!", propertyNames[property]);
SendClientMessage(playerid, COLOR_GREEN, string);
} else {
SendClientMessage(playerid, COLOR_YELLOW, "You need to be in a property checkpoint to /buy it.");
return 1;
}
return 1;
}
//------------------- /properties
if(strcmp(cmdtext, "/properties", true) == 0) {
SendClientMessage(playerid, COLOR_GREEN, "Property Owners List 1:");
for(new i = 0; i < 8; i++) {
if(propertyOwner[i] < 999) {
GetPlayerName(propertyOwner[i], giveplayer, sizeof(giveplayer));
format(string, sizeof(string), "%d. %s - %s", i, propertyNames[i], giveplayer);
} else
format(string, sizeof(string), "%d. %s - None", i, propertyNames[i]);
SendClientMessage(playerid, COLOR_YELLOW, string);
}
return 1;
}
if(strcmp(cmdtext, "/properties2", true) == 0) {
SendClientMessage(playerid, COLOR_GREEN, "Property Owners List 2:");
for(new i = 9; i < 18; i++) {
if(propertyOwner[i] < 999) {
GetPlayerName(propertyOwner[i], giveplayer, sizeof(giveplayer));
format(string, sizeof(string), "%d. %s - %s", i, propertyNames[i], giveplayer);
} else
format(string, sizeof(string), "%d. %s - None", i, propertyNames[i]);
SendClientMessage(playerid, COLOR_YELLOW, string);
}
return 1;
}
return 0;
}
public getCheckpointType(playerID) {
return checkpointType[playerCheckpoint[playerID]];
}
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])) {
SendClientMessage(0,0xEFEFF7AA,"playerinarea confirmed");
if(playerCheckpoint[i]!=j) {
SendClientMessage(0,0xEFEFF7AA,"playercheckpoint confirmed");
DisablePlayerCheckpoint(i);
SetPlayerCheckpoint(i, checkpoints[j][0],checkpoints[j][1],checkpoints[j][2],2);
playerCheckpoint[i] = j;
}
} else {
if(playerCheckpoint[i]==j) {
DisablePlayerCheckpoint(i);
playerCheckpoint[i] = 999;
}
}
}
}
}
}
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;
}