All pastes #221003 Raw Edit

Untitled

public text v1 · immutable
#221003 ·published 2006-10-25 13:31 UTC
rendered paste body
#include <a_samp>

//Color Define
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_RED 0xFF0000AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_DARKYELLOW 0xE3B515AA
#define COLOR_PINK 0xFF66FFAA
#define COLOR_BLUE 0x0000BBAA
#define COLOR_LIGHTBLUE 0x33CCFFAA
#define COLOR_DARKRED 0x660000AA
#define COLOR_ORANGE 0xFF9900AA
#define COLOR_WHITE 0xFFFFFFAA
#define COLOR_LIGHTGREEN 0x00FF00AA
//End Color Define

//------------------------------------------------------------------------------

#define CP_CHEMIST         0
#define CP_ELECTRIC        1
#define CP_RICHHOUSE_1_                2
#define CP_RICHHOUSE_2_                3

#define P_CHEMIST           0
#define P_ELECTRIC          1
#define P_RICHHOUSE_1_                  2
#define P_RICHHOUSE_2_                  3

#define P_OFFSET    3
//------------------------------------------------------------------------------
new playerCheckpoint[MAX_PLAYERS];

#define MAX_POINTS 4

new Float:checkCoords[MAX_POINTS][4] = {
{-2112.1587,-1880.4966,-1079.9663,-733.0032},     //CHEMIST
{-2135.6433,-1887.8292,-1066.3611,-671.8706}, //ELECTRIC
{-2688.5269,-2659.4243,894.3184,944.9646}, // RICHHOUSE_1
{-2675.2063,-2654.8101,858.9042,901.1694} // RICHHOUSE_2
// I will add a lot of properties!!!
};
new Float:checkpoints[MAX_POINTS][3] = {
{-1954.8829,-858.4899,32.0312},     //CHEMIST
{-2541.2253,-624.2522,132.7179}, //ELECTRIC
{-2671.1990,927.6693,79.7031}, // RICHHOUSE_1
{-2661.7036,876.9665,79.7738} // RICHHOUSE_2

// I will add a lot of properties!!!
};
new checkpointType[MAX_POINTS] = {
	CP_CHEMIST,
	CP_ELECTRIC,
	CP_RICHHOUSE_1_,
    CP_RICHHOUSE_2_,
// I will add a lot of properties!!!
	};

#define MAX_PROPERTIES 4

new propertyNames[MAX_PROPERTIES][100] = {

    "Chemist Studios",
	"Electric Station",
	"Villa Brey",
	"Sewayeou"
// I will add a lot of properties!!!
};

new propertyValues[MAX_PROPERTIES] = {
	100000000,
	355000000,
	  1000000,
       500000
// I will add a lot of properties!!!
};

new propertyEarnings[MAX_PROPERTIES] = {
	50000,
	90000,
	-6000,
    -2000
// I will add a lot of properties!!!
};
new propertyOwner[MAX_PROPERTIES] = {999,999,999,999};// numer of prop

main()
{
	print("\n----------------------------------");
	print("  This is a blank GameModeScript");
	print("----------------------------------\n");
}



public OnGameModeInit()
{
	print("GameModeInit()");
	SetGameModeText("Blank Script");
	AddPlayerClass(0, -2541.2253,-624.2522,132.7179, 269.1425, 22, 5677,38, 8888, 29, 45454);
	
	AddStaticVehicle(478, -2541.2253,-628.2522,135.7179,random(360), 0, 0);
	AddStaticVehicle(478, -2541.2253,-628.2522,155.7179,random(360), 0, 0);
	AddStaticVehicle(478, -2541.2253,-628.2522,145.7179,random(360), 0, 0);
	AddStaticVehicle(478, -2541.2253,-628.2522,136.7179,random(360), 0, 0);
	AddStaticVehicle(478, -2541.2253,-638.2522,135.7179,random(360), 0, 0);
	AddStaticVehicle(478, -2521.2253,-628.2522,155.7179,random(360), 0, 0);
	AddStaticVehicle(478, -2501.2253,-628.2522,145.7179,random(360), 0, 0);
	AddStaticVehicle(478, -2541.2253,-618.2522,136.7179,random(360), 0, 0);

	SetTimer("PropertyScoreUpdate", 40005, 1);
    SetTimer("checkpointUpdate", 1100, 1);
    
	return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
	SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
	return 1;
}

public OnGameModeExit()
{
	print("GameModeExit()");
	return 1;
}

public OnPlayerConnect(playerid)
{
	printf("OnPlayerConnect(%d)", playerid);
	playerCheckpoint[playerid]=999;
	GivePlayerMoney(playerid, 10000000);
	return 1;
}

public OnPlayerDisconnect(playerid)
{
	for(new i = 0; i < MAX_PROPERTIES; i++)
	{
		if(propertyOwner[i]==playerid)
		{
		    propertyOwner[i] = 999;
		    GivePlayerMoney(playerid, propertyValues[i]);
  		}
	}
}


public OnPlayerSpawn(playerid)
{
	printf("OnPlayerSpawn(%d)", playerid);
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
	printf("OnPlayerDeath(%d, %d, %d)", playerid, killerid, reason);
	return 1;
}

public OnVehicleSpawn(vehicleid)
{
	printf("OnVehicleSpawn(%d)", vehicleid);
	return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
	printf("OnVehicleDeath(%d, %d)", vehicleid, killerid);
	return 1;
}

public OnPlayerText(playerid)
{
	printf("OnPlayerText(%d)", playerid);
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
	
		new cmd[256];
 	    new idx;
	    cmd = strtok(cmdtext, idx);
	    
	    new giveplayer[MAX_PLAYER_NAME];
	    
    	new property=999;

		new string[512];
	    
   if(strcmp(cmd, "/buy", true) == 0) {

	

		if(IsPlayerInCheckpoint(playerid)) {
			switch (playerCheckpoint[playerid])
			{
				case CP_CHEMIST:{
					property = P_CHEMIST;
				}
				case CP_ELECTRIC:{
					property = P_ELECTRIC;
				}
			
			}

			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(cmd, "/properties", true) == 0) {
		SendClientMessage(playerid, COLOR_GREEN, "Property Owners:");
		for(new i = 0; i < MAX_PROPERTIES; 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;
	}

  // I would like to add command /sell

if(strcmp(cmd, "/sell", true) == 0)
    {
	// help me !
  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)
{
	new string[256];
	new ownplayer[MAX_PLAYER_NAME];
	switch(getCheckpointType(playerid))
	{
	
		case CP_CHEMIST:
		{
			SendClientMessage(playerid, COLOR_YELLOW, "You can buy the Chemist-Studious $000 with /buy.");
  		}
		case CP_ELECTRIC:
		{
			SendClientMessage(playerid, COLOR_YELLOW, "You can buy the Electric-Station for $000 with /buy.");
		}

	}
	if(getCheckpointType(playerid)>= P_OFFSET) {
		format(string, sizeof(string), "You can buy the %s for $%d with /buy.", propertyNames[playerCheckpoint[playerid]-P_OFFSET], propertyValues[playerCheckpoint[playerid]-P_OFFSET]);
		SendClientMessage(playerid, COLOR_YELLOW, string);
		format(string, sizeof(string), "You will earn $%d regularly.", propertyEarnings[playerCheckpoint[playerid]-P_OFFSET]);
		SendClientMessage(playerid, COLOR_YELLOW, string);
		if(propertyOwner[playerCheckpoint[playerid]-P_OFFSET]<999) {
			GetPlayerName(propertyOwner[playerCheckpoint[playerid]-P_OFFSET], ownplayer, sizeof(ownplayer));
			format(string, sizeof(string), "This property is currently owned by %s.", ownplayer);
			SendClientMessage(playerid, COLOR_RED, string);
			}
    	}

  }

public OnPlayerLeaveCheckpoint(playerid)
{
	printf("OnPlayerLeaveCheckpoint(%d)", playerid);
	return 1;
}

public getCheckpointType(playerID) {
	return checkpointType[playerCheckpoint[playerID]];
}

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;
}
public PayPlayerInArea(playerID, Float:x1, Float:y1, Float:x2, Float:y2, cash)
{

	if(IsPlayerConnected(playerID))
	{
		new Float:X, Float:Y, Float:Z;

		GetPlayerPos(playerID, X, Y, Z);
		if(X >= x1 && X <= x2 && Y >= y1 && Y <= y2)
		{
			GivePlayerMoney(playerID, cash);
			return 1;
		}
	}
	return 0;
}
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) {
						 if (GetPlayerMoney(i) >= propertyValues[j])
						 {
	                    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 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_GREEN, string);
		}
	}

}

strtok(const string[], &index)
{
	new length = strlen(string);
	while ((index < length) && (string[index] <= ' '))
	{
		index++;
	}

	new offset = index;
	new result[20];
	while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
	{
		result[index - offset] = string[index];
		index++;
	}
	result[index - offset] = EOS;
	return result;
}