All pastes #825402 Raw Edit

Miscellany

public text v1 · immutable
#825402 ·published 2007-12-20 15:33 UTC
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;
}