rendered paste body//RoNaLD wAz ere anD grafeeteed on tomozj's pasteBin 20/3/07
// lol ron :D
//Grove:
#include <a_samp>
#include <core>
#include <float>
#include <dini>
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_RED 0xAA3333AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_WHITE 0xFFFFFFAA
//Colour Defines 2
#define GREY 0x808080AA
#define GREEN 0x20B2AAAA
#define YELLOW 0xFFFF00AA //0xFFFFE0AA
#define ORANGE 0xDA70D6AA
#define WHITE 0xFFFFFFAA
#define RED 0xFF0000AA //0xAA3333AA
#define DARKRED 0x660000AA
#define PINK 0xFF66FFAA
#define BLUE 0x0000BBAA
#define LIGHTBLUE 0x33CCFFAA
#define PocketMoney 1000000 // Amount player recieves on spawn.
#define INACTIVE_PLAYER_ID 255
#define GIVECASH_DELAY 5000 // Time in ms between /givecash commands.
#define NUMVALUES 4
forward MoneyGrubScoreUpdate();
forward Givecashdelaytimer(playerid);
//forward GrubModeReset();
forward SetPlayerRandomSpawn(playerid);
forward SetupPlayerForClassSelection(playerid);
forward GameModeExitFunc();
forward OnPlayerPrivmsg(playerid, senderid, text[]);
//------------------------
//--Weapon Defines by-----
//-------tomozj-----------
//------------------------
//#define Unarmed 0
//#define BrassKnuckle 1
#define GolfClub 2
#define NightStick 3
#define Knife 4
#define BaseballBat 5
#define Shovel 6
#define PoolCue 7
#define Katana 8
#define Chainsaw 9
#define DoubleEndedDildo 10
#define BigWhiteVibrator 11
#define MediumWhiteVibrator 12
#define SmallSilverVibrator 13
#define Flowers 14
#define Cane 15
//#define Grenade 16
//#define Teargas 17
#define Molotov 18
//#define RPG 19
//#define HeatRPG 20
//#define HydraRocket 21
#define Pistol 22
#define SPistol 23
#define DesertEagle 24
#define Shotgun 25
#define SawnoffShotgun 26
#define CombatShotgun 27
#define MicroUzi 28
#define MP5 29
#define AK47 30
#define M4 31
#define Tec9 32
//#define CountryRifle 33
//#define SniperRifle 34
//#define RocketLauncher 35
//#define HSRocketLauncher 36
#define Flamethrower 37
#define Minigun 38
//#define SatchelCharge 39
//#define Detonator 40
#define Spraycan 41
#define FireExtinguisher 42
#define Camera 43
#define Nightvision 44
#define InfraredVision 45
#define Parachute 46
#define FakePistol 47
//#define VehicleDeath 49
//#define DrownedDeath 53
//#define Collision/SplashDeath 54
//------------------------------------------------------------------------------------------------------
new CashScoreOld;
//new iSpawnSet[MAX_PLAYERS];
new gActivePlayers[MAX_PLAYERS];
new gLastGaveCash[MAX_PLAYERS];
//------------------------------------------------------------------------------------------------------
main()
{
print("n----------------------------------");
print(" Running ColdThugZ Trainingn");
print(" Hosted and Coded By");
print(" tomozj");
print("----------------------------------n");
}
//------------------------------------------------------------------------------------------------------
public MoneyGrubScoreUpdate()
{
new CashScore;
new name[MAX_PLAYER_NAME];
//new string[256];
for(new i=0; i<MAX_PLAYERS; i++)
{
if (IsPlayerConnected(i))
{
GetPlayerName(i, name, sizeof(name));
CashScore = GetPlayerMoney(i);
SetPlayerScore(i, CashScore);
if (CashScore > CashScoreOld)
{
CashScoreOld = CashScore;
//format(string, sizeof(string), "$$$ %s is now in the lead $$$", name);
//SendClientMessageToAll(COLOR_YELLOW, string);
}
}
}
}
//------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------
public OnPlayerConnect(playerid)
{
GameTextForPlayer(playerid,"~w~ColdThugZ ~r~4 ~g~Life",5000,5);
SendPlayerFormattedText(playerid, "Welcome to the ColdThugZ Training Server, Created by Grove", 0);
SendPlayerFormattedText(playerid, "Feeling down? Kill a clown! Login before you spawn otherwise you WILL be kicked!.", 0);
gActivePlayers[playerid]++;
gLastGaveCash[playerid] = GetTickCount();
return 1;
}
//------------------------------------------------------------------------------------------------------
public OnPlayerDisconnect(playerid)
{
gActivePlayers[playerid]--;
}
//------------------------------------------------------------------------------------------------------
public OnPlayerCommandText(playerid, cmdtext[])
{
new string[256];
new playermoney;
new sendername[MAX_PLAYER_NAME];
new giveplayer[MAX_PLAYER_NAME];
new cmd[256];
new giveplayerid, moneys, idx;
// new idx;
// new string[256];
new command[256];
command = strtok(cmdtext, idx);
cmd = strtok(cmdtext, idx);
if(strcmp(cmd, "/help", true) == 0) {
SendPlayerFormattedText(playerid,"The ColdThugZ 4 life training server",0);
SendPlayerFormattedText(playerid,"Type: /objective : to find out what to do in this gamemode.",0);
SendPlayerFormattedText(playerid,"Type: /givecash [playerid] [money-amount] to send money to other players.",0);
SendPlayerFormattedText(playerid,"Type: /regiser [password] to register your id on this server.", 0);
SendPlayerFormattedText(playerid,"Type: /tips : to see some tips from the creator of the gamemode.", 0);
return 1;
}
if(strcmp(cmd, "/objective", true) == 0) {
SendPlayerFormattedText(playerid,"Practice hard-to-do stuff, like parachuting and long range crap. You can practice a whole range of stuff.",0);
SendPlayerFormattedText(playerid,"If you'd like a weapon, just ask an admin. I will implement that you can do it yourself, soon :)",0);
return 1;
}
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));
playermoney = GetPlayerMoney(playerid);
if (moneys > 0 && playermoney >= moneys) {
GivePlayerMoney(playerid, (0 - moneys));
GivePlayerMoney(giveplayerid, moneys);
format(string, sizeof(string), "You have sent %s(player: %d), $%d.", giveplayer,giveplayerid, moneys);
SendClientMessage(playerid, COLOR_YELLOW, string);
format(string, sizeof(string), "You have recieved $%d from %s(player: %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), "%d is not an active player.", giveplayerid);
SendClientMessage(playerid, COLOR_YELLOW, string);
}
return 1;
}
// PROCESS OTHER COMMANDS - new
if (strcmp(command, "/tp", true)==0)
{
new endid;
new tmp[256];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{ //if there is no params
SendClientMessage(playerid,WHITE,"USAGE: /tp <id>");
}
else { //if there are any params! :)
if(!IsPlayerConnected(endid)) { //Checks if they are connected
SendClientMessage(playerid,GREY,"Enter a valid player id!.");
return 1;
}
else {
endid = strval(tmp);
new end_player[MAX_PLAYER_NAME];
new start_player[MAX_PLAYER_NAME];
new Float:X, Float:Y, Float:Z;
GetPlayerName(endid,end_player,sizeof(end_player));
GetPlayerName(playerid,start_player,sizeof(start_player));
GetPlayerPos(endid,Float:X,Float:Y,Float:Z);
SetPlayerPos(playerid,Float:X+1,Float:Y+1,Float:Z);
format(string,sizeof(string),"You've been teleported to %s!",end_player);
SendClientMessage(playerid, YELLOW, string);
format(string,sizeof(string),"%s has been teleported to you!",start_player);
SendClientMessage(endid,YELLOW,string);
}
}
return 1;
}
if (strcmp(command, "/ctp", true)==0)
{
new tmp[256];
new endid;
tmp = strtok(cmdtext, idx);
endid = strval(tmp);
if(!strlen(tmp))
{ //if there is no params
SendClientMessage(playerid,WHITE,"USAGE: /ctp <id>");
}
else { //if there are any params! :)
if(!IsPlayerConnected(endid)) { //Checks if they are connected
SendClientMessage(playerid,GREY,"Enter a valid player id!.");
return 1;
}
else {
new end_player[MAX_PLAYER_NAME];
new start_player[MAX_PLAYER_NAME];
new Float:X, Float:Y, Float:Z;
GetPlayerName(endid,end_player,sizeof(end_player));
GetPlayerName(playerid,start_player,sizeof(start_player));
GetPlayerPos(endid,Float:X,Float:Y,Float:Z);
SetVehiclePos(playerid,Float:X,Float:Y,Float:Z+3);
format(string,sizeof(string),"You have car teleported to %s!",end_player);
SendClientMessage(playerid, YELLOW, string);
format(string,sizeof(string),"%s has car teleported to you!",start_player);
SendClientMessage(endid,YELLOW,string);
}
}
return 1;
}
if(strcmp(command,"/dive",true)==0)
{
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,Float:X,Float:Y,Float:Z);
SetPlayerPos(playerid,Float:X,Float:Y,Float:Z+500);
GameTextForPlayer(playerid,"WOOHOO!!!",5000,3);
GivePlayerWeapon(playerid, 46, 1 );
return 1;
}
if(strcmp(command,"/time",true)==0) {
new hour,minute,second;
gettime(hour, minute, second);
format(string,sizeof(string),"Time: %d:%d:%d",hour,minute,second);
SendClientMessage(playerid, YELLOW,string);
return 1;
}
if(strcmp(command,"/date",true)==0) {
new year,month,day;
getdate(year,month,day);
format(string,sizeof(string),"Date: %d/%d/%d",day,month,year);
SendClientMessage(playerid, YELLOW,string);
return 1;
}
//admincommands via RCON
if(IsPlayerAdmin(playerid) == 1) {
if (strcmp(command, "/fetch", true)==0)
{
new endid;
new tmp[256];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{ //if there is no params
SendClientMessage(playerid,WHITE,"USAGE: /fetch <id>");
}
else { //if there are any params! :)
if(!IsPlayerConnected(endid)) { //Checks if they are connected
SendClientMessage(playerid,GREY,"Enter a valid player id!");
return 1;
}
else {
endid = strval(tmp);
new end_player[MAX_PLAYER_NAME];
new start_player[MAX_PLAYER_NAME];
new Float:X, Float:Y, Float:Z;
GetPlayerName(endid,end_player,sizeof(end_player));
GetPlayerName(playerid,start_player,sizeof(start_player));
GetPlayerPos(playerid,Float:X,Float:Y,Float:Z);
SetPlayerPos(endid,Float:X,Float:Y,Float:Z);
format(string,sizeof(string),"You have fetched %s.",end_player);
SendClientMessage(playerid, YELLOW, string);
format(string,sizeof(string),"You've been fetched by an administrator!",start_player);
SendClientMessage(endid,YELLOW,string);
}
}
return 1;
}
}//endofadmin ++++++
return 0;
}
//------------------------------------------------------------------------------------------------------
public OnPlayerSpawn(playerid)
{
GivePlayerMoney(playerid, PocketMoney);
SetPlayerInterior(playerid,0);
//SetPlayerRandomSpawn(playerid);
return 1;
}
/*public SetPlayerRandomSpawn(playerid)
{
new rand = random(sizeof(gRandomPlayerSpawns));
SetPlayerPos(playerid, gRandomPlayerSpawns[rand][0], gRandomPlayerSpawns[rand][1], gRandomPlayerSpawns[rand][2]); // Warp the player
//}
//return 1;
}*/
//------------------------------------------------------------------------------------------------------
public OnPlayerDeath(playerid, killerid, reason)
{
new playercash;
if(killerid == INVALID_PLAYER_ID) {
SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);
ResetPlayerMoney(playerid);
} else {
SendDeathMessage(killerid,playerid,reason);
SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
playercash = GetPlayerMoney(playerid);
if (playercash > 0) {
GivePlayerMoney(killerid, playercash);
ResetPlayerMoney(playerid);
}
else
{
}
}
return 1;
}
//------------------------------------------------------------------------------------------------------
public OnPlayerRequestClass(playerid, classid)
{
SetupPlayerForClassSelection(playerid);
return 1;
}
public SetupPlayerForClassSelection(playerid)
{
SetPlayerInterior(playerid,14);
SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
SetPlayerFacingAngle(playerid, 270.0);
SetPlayerCameraPos(playerid,256.0815,-43.0475,1004.0234);
SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
}
public GameModeExitFunc()
{
GameModeExit();
}
public OnGameModeInit()
{
SetGameModeText("ColdThugZ Practice Server from tomozj");
ShowPlayerMarkers(1);
ShowNameTags(1);
AddPlayerClass(107,1460.5353,2789.9490,10.8203,269.1425,MicroUzi,16000,SawnoffShotgun,15000,M4,15000); //Groves
AddPlayerClass(264,1785.9087,2848.6279,10.6738,42.3208,MicroUzi,16000,SawnoffShotgun,15000,M4,15000); //Clowns
AddPlayerClass(50,2149.753906,-1810.177490,16.140625,269.1425,MicroUzi,16000,SawnoffShotgun,15000,M4,15000); // Spectators
//PROPERTIES
//required includes
#include <a_samp> //everything needs it :D
#include <dini> //dini
#include <dudb> //dudb
//requiered defines
#define dcmd(%1,%2,%3) if ((strcmp(%3, "/%1", true, %2+1) == 0)&&(((%3[%2+1]==0)&&(dcmd_%1(playerid,"")))||((%3[%2+1]==32)&&(dcmd_%1(playerid,%3[%2+2]))))) return 1
//required functions
//properties files are called by their propid, so less memory used as we dont need to udb_encode() it
stock propfile(prop)
{
new string[256];
format(string, sizeof(string), "%d.prop", prop);
return string;
}
//what your players login files are.
//change it, if yours are different
stock playerfile(playerid)
{
new string[256];
format(string, sizeof(string), "%s.sav", udb_encode(Playername(playerid)));
return string;
}
stock GetDistanceBetweenTwoPoints(Float:x,Float:y, Float:x1,Float:y1)
{
new Float:tmpdis;
tmpdis = floatsqroot(floatpower(floatabs(floatsub(x,x1)),2)+floatpower(floatabs(floatsub(y,y1)),2));
return floatround(tmpdis);
}
//less params then SendClientMessage()
stock SendPlayerText(playerid, const text[])
{
return SendClientMessage(playerid, 0x35FFC2AA, text);
}
//required to get the owner of the property that has been bought.
stock GetPlayerid(name[])
{
for (new i = 0; i < MAX_PLAYERS; i++)
{
if (IsPlayerConnected(i))
{
if(strcmp(Playername(i), name, true) == 0)
{
return i;
}
}
}
return INVALID_PLAYER_ID;
}
/*
NOTE:
Not all these functions are by me. If you want to find the original authors,
look in the useful functions thread or around sa-mp forum.
*/
//required forwards
forward ConstFunctions();
//required stats
enum PLAYER_PARAMS
{
proparea,
bool:Logged
}
new PlayerParameters[MAX_PLAYERS][PLAYER_PARAMS];
//------------------------------------------------------------------------------
//checkpoint stuff
#define MAX_PROPS 1000 //if you have 1000+ properties, just change it
new PropInfo[MAX_PROPS];
new InfoPoint[MAX_PROPS][256];
//------------------------------------------------------------------------------
//add property
//adds a property (each property creates its own file, so dont change the propid after youve started the mode once.
stock AddProperty(playerid, Float:x, Float:y, Float:z, name[], price, bool:forsale, propid, size)
{
if(!fexist(propfile(propid)))
{
dini_Create(propfile(propid));
dini_Set(propfile(propid), "name", name);
dini_IntSet(propfile(propid), "price", price);
dini_FloatSet(propfile(propid), "x", x);
dini_FloatSet(propfile(propid), "y", y);
dini_FloatSet(propfile(propid), "z", z);
if(forsale)
{
dini_IntSet(propfile(propid), "forsale", 1);
} else {
dini_IntSet(propfile(propid), "forsale", 0);
}
}
new Float:xp, Float:yp, Float:zp;
GetPlayerPos(playerid, xp, yp, zp);
if(GetDistanceBetweenTwoPoints(x,y, xp,yp) < 40)
{
if(PlayerParameters[playerid][proparea]!=propid)
{
SetPlayerCheckpoint(playerid, x, y, z, size);
PlayerParameters[playerid][proparea]=propid;
}
} else if(PlayerParameters[playerid][proparea]==propid)
{
PlayerParameters[playerid][proparea]=0;
DisablePlayerCheckpoint(playerid);
}
PropInfo[propid]=1;
return 1;
}
//------------------------------------------------------------------------------
//add info point
//adds a checkpoint which, when walked into, tells the player information
stock AddInfoPoint(playerid, Float:x, Float:y, Float:z, line[], infoid, size)
{
new Float:xp, Float:yp, Float:zp;
GetPlayerPos(playerid, xp, yp, zp);
if(GetDistanceBetweenTwoPoints(x,y, xp,yp) < 40)
{
if(PlayerParameters[playerid][proparea]!=infoid)
{
SetPlayerCheckpoint(playerid, x, y, z, size);
PlayerParameters[playerid][proparea]=infoid;
}
} else if(PlayerParameters[playerid][proparea]==infoid)
{
PlayerParameters[playerid][proparea]=0;
DisablePlayerCheckpoint(playerid);
}
PropInfo[infoid]=2;
set(InfoPoint[infoid], line);
return 1;
}
//------------------------------------------------------------------------------
//this is where to add properties or info points
stock PropertyCheckpointUpdate(playerid)
{
AddProperty(playerid,2024.6274,1007.8792,10.8203, "Four Dragons Casino", 20000000, true, 1, 5/2);
AddProperty(playerid,1680.5830,1447.9042,10.7735, "The Airport", 50000000, false, 2, 5/2);
AddProperty(playerid,1607.0425,1819.7314,10.8280, "Hospital", 150000, false, 3, 5/2);
//Bank
AddInfoPoint(playerid,2418.9380,1123.6112,10.8203, "BANK: You can safely store your money in the bank", 4, 5/2);
return 1;
}
//------------------------------------------------------------------------------
//what happens when someone enters the checkpoint.
public OnPlayerEnterCheckpoint(playerid)
{
new string[256], propid;
propid=PlayerParameters[playerid][proparea];
if(PropInfo[propid]==1)
{
format(string, sizeof(string), "-- %s --", dini_Get(propfile(propid), "name"));
SendPlayerText(playerid, string);
format(string, sizeof(string), "Price: %d", dini_Int(propfile(propid), "price"));
SendPlayerText(playerid, string);
if(dini_Int(propfile(propid), "forsale") == 1) SendPlayerText(playerid, "Forsale: Yes");
if(dini_Int(propfile(propid), "forsale") == 0) SendPlayerText(playerid, "Forsale: No");
if(dini_Isset(propfile(propid), "owner"))
{
format(string, sizeof(string), "Owner: %s", dini_Get(propfile(propid), "owner"));
SendPlayerText(playerid, string);
}
} else if(PropInfo[propid]==2)
{
SendPlayerText(playerid, InfoPoint[propid]);
}
return 1;
}
//------------------------------------------------------------------------------
//Playername (not created by me, but required)
stock Playername(playerid) {
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
return name;
}
//------------------------------------------------------------------------------
//converts integer into string (easier to type then valstr())
stock str(value)
{
new string[256];
format(string, sizeof(string), "%d", value);
return string;
}
//------------------------------------------------------------------------------
//one function, created so you can run constant functions off one timer
public ConstFunctions()
{
for (new i = 0; i < MAX_PLAYERS; i++)
{
if (IsPlayerConnected(i))
{
PropertyCheckpointUpdate(i);
}
}
return 1;
}
//------------------------------------------------------------------------------
public OnGameModeInit()
{
SetTimer("ConstFunctions", 400, 1); //loops the function (you may want to make it higher if you have alot of properties in your server)
//other stuff
return 1;
}
//------------------------------------------------------------------------------
//put the property up for sale
dcmd_sell(playerid, params[])
{
#pragma unused params
if(!PlayerParameters[playerid][Logged]) return SendPlayerText(playerid, "ERROR: You must be logged in");
new propid = PlayerParameters[playerid][proparea];
if(!IsPlayerInCheckpoint(playerid) || PropInfo[propid]!=1) return SendPlayerText(playerid, "ERROR: You must be in a property checkpoint");
if(!dini_Isset(propfile(propid), "owner")) return SendPlayerText(playerid, "ERROR: You don't own this property");
if(strcmp(dini_Get(propfile(propid), "owner"), Playername(playerid), true) == 0)
{
// if(!strlen(params)) return SendPlayerText(playerid, "USAGE: /sell [price]");
if(dini_Int(propfile(propid), "forsale") == 1) return SendPlayerText(playerid, "ERROR: Property is already for sale");
dini_IntSet(propfile(propid), "forsale", 1);
SendPlayerText(playerid, "PROPERTY: Set for sale");
} else {
SendPlayerText(playerid, "ERROR: You don't own this property");
}
return 1;
}
//change the price of the property (if you own it)
dcmd_value(playerid, params[])
{
if(!PlayerParameters[playerid][Logged]) return SendPlayerText(playerid, "ERROR: You must be logged in");
new propid = PlayerParameters[playerid][proparea];
if(!IsPlayerInCheckpoint(playerid) || PropInfo[propid]!=1) return SendPlayerText(playerid, "ERROR: You must be in a property checkpoint");
if(!dini_Isset(propfile(propid), "owner")) return SendPlayerText(playerid, "ERROR: You don't own this property");
if(strcmp(dini_Get(propfile(propid), "owner"), Playername(playerid), true) == 0)
{
if(!strlen(params)) return SendPlayerText(playerid, "USAGE: /value [price]");
new string[256];
format(string, sizeof(string), "PROPERTY: Set value to $%d", strval(params));
SendPlayerText(playerid, string);
dini_IntSet(propfile(propid), "price", strval(params));
} else {
SendPlayerText(playerid, "ERROR: You don't own this property");
}
return 1;
}
//buy a property
dcmd_buy(playerid, params[])
{
#pragma unused params
if(!PlayerParameters[playerid][Logged]) return SendPlayerText(playerid, "ERROR: You must be logged in");
new propid = PlayerParameters[playerid][proparea];
if(!IsPlayerInCheckpoint(playerid) || PropInfo[propid]!=1) return SendPlayerText(playerid, "ERROR: You must be in a property checkpoint");
if(strcmp(dini_Get(propfile(propid), "name"), Playername(playerid), true) == 0) return SendPlayerText(playerid, "ERROR: You already own this property");
if(dini_Int(propfile(propid), "forsale") == 0) return SendPlayerText(playerid, "ERROR: Property is not for sale");
new price;
price=dini_Int(propfile(propid), "price");
if(price > GetPlayerMoney(playerid)) return SendPlayerText(playerid, "ERROR: Not enough money");
new string[256];
if(dini_Isset(propfile(propid), "owner"))
{
format(string, sizeof(string), "PROPERTY: You have bought %s off %s", dini_Get(propfile(propid), "name"), dini_Get(propfile(propid), "owner"));
SendPlayerText(playerid, string);
new sellerid = GetPlayerid(dini_Get(propfile(propid), "owner"));
if(IsPlayerConnected(sellerid))
{
GivePlayerMoney(sellerid, price);
format(string, sizeof(string), "PROPERTY: Your property \"%s\" has been bought buy %s", dini_Get(propfile(propid), "name"), Playername(playerid));
SendPlayerText(sellerid, string);
} else {
dini_IntSet(udb_encode(dini_Get(propfile(propid), "owner")), "money", price + dini_Int(udb_encode(dini_Get(propfile(propid), "owner")), "money"));
}
} else {
format(string, sizeof(string), "PROPERTY: You have bought %s", dini_Get(propfile(propid), "name"));
SendPlayerText(playerid, string);
}
dini_IntSet(propfile(propid), "forsale", 0);
GivePlayerMoney(playerid, price * -1);
dini_Set(propfile(propid), "owner", Playername(playerid));
return 1;
}
//pulls the property off the market
dcmd_unsell(playerid, params[])
{
#pragma unused params
if(!PlayerParameters[playerid][Logged]) return SendPlayerText(playerid, "ERROR: You must be logged in");
new propid = PlayerParameters[playerid][proparea];
if(!IsPlayerInCheckpoint(playerid) || PropInfo[propid]!=1) return SendPlayerText(playerid, "ERROR: You must be in a property checkpoint");
if(!dini_Isset(propfile(propid), "owner")) return SendPlayerText(playerid, "ERROR: You don't own this property");
if(strcmp(dini_Get(propfile(propid), "owner"), Playername(playerid), true) == 0)
{
if(dini_Int(propfile(propid), "forsale") == 0) return SendPlayerText(playerid, "ERROR: Property is already not for sale");
dini_IntSet(propfile(propid), "forsale", 0);
SendPlayerText(playerid, "PROPERTY: Set to not for sale");
} else {
SendPlayerText(playerid, "ERROR: You don't own this property");
}
return 1;
}
//------------------------------------------------------------------------------
public OnPlayerCommandText(playerid, cmdtext[], text[])
{
dcmd(sell,4,cmdtext);
dcmd(buy,3,cmdtext);
dcmd(unsell,6,cmdtext);
dcmd(value,5,cmdtext);
return 0;
}
//Airport
AddStaticVehicle(497,1604.5009,1632.5208,10.6584,165.4447,-1,-1); // heli N
AddStaticVehicle(488,1653.2899,1551.5253,10.6297,28.1039,-1,-1); // Heli S1
AddStaticVehicle(487,1630.6370,1538.0615,10.6363,20.9186,-1,-1); // Heli S2
AddStaticVehicle(513,1275.2164,1322.2445,10.6578,269.8379,-1,-1); // Stuntplane
//Stuff
//AddStaticVehicle(502,1771.6277,1713.6118,8.4002,176.5937,18,1); // Under bridge near airport
//AddStaticVehicle(508,1892.3022,1740.1941,10.6505,355.2742,18,1); // Staticcar
//AddStaticVehicle(539,2075.0254,1687.5909,10.5100,182.6338,18,1); // Caluigas Static
//AddStaticVehicle(528,2040.4146,1550.0151,10.5099,181.2650,18,1); // Pirate ship static
//AddStaticVehicle(523,2196.8042,1855.9552,10.6588,183.9444,18,1); // Static carpark
//AddStaticVehicle(434,2175.3594,1985.5201,10.6578,354.0914,18,1); // Static car 24-7
//AddStaticVehicle(429,2098.4536,2065.6353,10.6583,19.8687,18,1); // Static Banshee
//AddStaticVehicle(438,2106.6731,2216.9944,10.6587,103.8177,18,1); // Staticcar 24-7 north
//AddStaticVehicle(438,2137.6179,2232.7024,10.6811,328.1266,18,1); // Staticcar middle
//AddStaticVehicle(438,2198.3364,2346.4541,10.5099,331.3130,18,1); // Staticcar
//AddStaticVehicle(596,2257.1960,2460.6353,10.6585,328.5564,18,1); // PS1
//AddStaticVehicle(597,2271.6089,2459.2036,10.6585,213.9797,18,1); // PS2
//AddStaticVehicle(598,2232.0371,2513.9004,10.5058,4.0112,18,1); // Ramp Staticcar
//AddStaticVehicle(603,2047.7943,2652.9763,10.6604,68.8819,18,1); // North 1
//AddStaticVehicle(603,1885.5183,2712.6055,10.5101,74.7906,18,1); // fence
//AddStaticVehicle(599,2161.8704,2786.7180,10.6584,238.9728,18,1); // Burger shot nort car
//AddStaticVehicle(599,2061.6829,2735.9634,10.6612,94.7349,18,1); // car
//AddStaticVehicle(603,2002.6414,2419.8474,10.6574,132.1344,18,1); // car
//Defenders
AddStaticPickup(1240,15,1460.5353,2789.9490,10.8203); // hp gang base
AddStaticPickup(350,15,1460.2203,2796.4148,10.8203); // Shotgun gang base
AddPlayerClass(0,1458.4514,2774.1108,10.8203,244.2857,0,0,0,0,0,0); // Property, gang base
AddStaticPickup(1242,2,1491.2185,2773.6294,15.9894); // Armour gang base
AddPlayerClass(0,1450.2231,2772.6238,18.8203,297.1567,0,0,0,0,0,0); // Balcony gang base
AddPlayerClass(0,1430.8402,2789.6694,20.5233,97.4699,0,0,0,0,0,0); // Back of gang base
//AddPlayerClass(604,1436.8529,2773.5029,28.2280,277.3029,0,0,0,0,0,0); // Base Parachute target
AddStaticVehicle(522,1464.9810,2733.4819,10.3853,267.8583,-1,-1); // nrg 1
AddStaticVehicle(522,1462.8542,2795.9509,10.3901,258.7028,-1,-1); // nrg 2
AddStaticVehicle(522,1532.1580,2847.4944,10.3902,91.4492,-1,-1); // nrg 4
AddStaticVehicle(522,1532.3024,2848.9724,10.3907,91.3429,-1,-1); // nrg 5
AddStaticVehicle(415,1283.0444,1371.4061,10.6377,266.8527,-1,-1); // chetta
AddStaticVehicle(562,1270.4288,1372.3790,10.6370,273.4499,-1,-1); // elgy
AddStaticVehicle(541,2914.2566,2351.6838,10.6323,357.0764,-1,-1); // bullet 4
AddStaticVehicle(477,2875.1868,2432.0144,10.6396,46.7006,-1,-1); // zr350 1
AddStaticVehicle(522,2254.5771,1425.3311,10.6390,355.3797,-1,-1); // nrg 7
AddStaticVehicle(503,2100.4119,1308.9951,10.6453,178.6603,-1,-1); // hotringracer
AddStaticVehicle(533,2039.2728,1010.8618,10.4818,179.1586,-1,-1); // feltzer
AddStaticVehicle(411,2115.8042,919.1169,10.6339,89.2362,-1,-1); // infernus
AddStaticVehicle(603,2396.0210,987.1786,10.6407,0.2171,-1,-1); // phonix
AddStaticVehicle(495,2206.8557,1286.9694,10.6368,91.4188,-1,-1); // sandking
AddStaticVehicle(481,2017.7323,1439.8879,10.6470,91.5200,-1,-1); // bmx
AddStaticVehicle(560,1909.2883,1508.7249,13.8009,1.7875,-1,-1); // sultan
AddStaticVehicle(461,1678.0342,1447.0616,10.5977,0.3426,-1,-1); // pcg 600
AddStaticVehicle(444,1677.3979,1641.2938,10.6472,181.1313,-1,-1); // monster
AddStaticVehicle(593,1569.9906,1455.9814,10.6423,105.2400,-1,-1); // dodo 1
AddStaticVehicle(593,1574.6472,1419.2720,10.6537,86.8129,-1,-1); // dodo 2
AddStaticVehicle(519,1473.7332,1223.5358,10.6498,358.7122,-1,-1); // shamal
AddStaticVehicle(411,1319.0302,1279.5372,10.6338,358.9358,-1,-1); // infernus
AddStaticVehicle(411,1286.5758,1351.6403,10.6458,270.1198,-1,-1); // infernus
AddStaticVehicle(429,1271.8992,1351.6096,10.6267,270.1201,-1,-1); // banshee
AddStaticVehicle(451,1557.0938,2769.9756,10.3868,89.7441,-1,-1); // turismo
AddStaticVehicle(487,1513.9069,2741.0537,10.3912,3.9957,-1,-1); // maverick
AddStaticVehicle(415,1648.7969,2746.1509,10.3977,183.7414,-1,-1); // cheetah
//More cars
AddStaticVehicle(451,2057.0154,2479.5674,10.6386,182.7193,-1,-1); // turismo1
AddStaticVehicle(541,2095.4143,2406.6946,10.6324,267.0882,-1,-1); // bullet 1
AddStaticVehicle(522,1899.1897,2436.6160,10.6329,89.7169,-1,-1); // nrg 1
AddStaticVehicle(481,2015.1847,2244.7551,17.1910,91.7736,-1,-1); // bmx 1
AddStaticVehicle(451,1961.9185,2263.6355,21.9445,1.0018,-1,-1); // turismo 3
AddStaticVehicle(481,2058.9536,2120.2051,10.6319,274.5362,-1,-1); // bmx 2
AddStaticVehicle(543,2186.1321,2000.6383,10.6382,269.2430,-1,-1); // sadler 1
AddStaticVehicle(560,2030.9957,1920.1638,12.1462,359.0746,-1,-1); // sultan 1
AddStaticVehicle(522,2097.0789,1817.3425,10.4916,154.3612,-1,-1); // nrg 3
AddStaticVehicle(415,2186.2268,1679.8568,10.9244,89.7265,-1,-1); // cheeta 1
AddStaticVehicle(561,2038.4380,1581.8392,10.4848,180.0221,-1,-1); // stratnum 1
AddStaticVehicle(526,2074.3374,1485.5081,10.4920,178.8493,-1,-1); // elgy
AddStaticVehicle(541,2104.7822,2042.6835,10.6367,88.6707,-1,-1); // bullet 2
AddStaticVehicle(526,2103.9919,2039.7473,10.6349,94.5920,-1,-1); // elgy 1
AddStaticVehicle(411,2102.6750,2036.5862,10.6422,89.1654,-1,-1); // infernus 1
AddStaticVehicle(451,2118.4802,2182.9604,10.4811,0.1673,-1,-1); // turismo 4
AddStaticVehicle(425,2081.5449,2173.1152,10.6459,266.0287,-1,-1); // hunter 1
AddStaticVehicle(415,2156.0930,2179.6372,10.4835,183.1849,-1,-1); // cheeta 2
AddStaticVehicle(573,2270.6741,2153.7966,10.4896,269.8834,-1,-1); // Dune
AddStaticVehicle(522,2360.2717,2192.8499,10.5035,4.3367,-1,-1); // nrg 5
AddStaticVehicle(562,2499.7349,2239.5540,10.6325,268.7984,-1,-1); // elegy 2
AddStaticVehicle(560,2611.8284,2280.3379,10.6449,268.0368,-1,-1); // sultan 2
AddStaticVehicle(411,2564.7625,2254.6672,10.6343,91.7917,-1,-1); // infernus 2
AddStaticVehicle(519,1281.8251,1413.9574,11.7382,267.0010,-1,-1); // shamal 1
AddStaticVehicle(519,1280.9353,1386.8433,11.7420,266.6763,-1,-1); // shamal 3
AddStaticVehicle(417,1290.7386,1481.8655,10.5926,257.1584,-1,-1); // leithan
AddStaticVehicle(476,1551.0508,1674.7930,10.5885,82.2679,-1,1); // rustler
AddStaticVehicle(487,1536.4259,1690.1382,10.5920,89.4718,-1,-1); // maverick
AddStaticVehicle(487,1769.0634,2772.6401,11.0131,176.9863,-1,-1); // maverick
AddStaticVehicle(471,2182.7898,986.2454,10.3967,357.2017,-1,-1); // quad
//Even more cars :P
AddStaticVehicle(421,2040.2322,1114.1805,10.2108,1.3861,-1,-1); // blista
AddStaticVehicle(517,2073.7354,1241.1677,10.2373,3.5522,-1,-1); // majestic
AddStaticVehicle(508,1892.3004,1740.2008,11.2037,355.3529,1,1); // makeme white
AddStaticVehicle(502,1771.7930,1713.5942,8.4038,179.1076,0,0); // change colour
AddStaticVehicle(432,1622.1565,1634.4916,10.3949,184.3586,-1,-1); // rhino
AddStaticVehicle(522,1765.5023,2855.6228,10.3983,256.6644,-1,-1); // nrg
AddStaticVehicle(461,2533.5432,1205.2379,10.3842,348.4666,-1,-1); // pcj 600
AddStaticVehicle(522,2546.9314,1307.2151,10.3848,268.5469,-1,-1); // nrg
AddStaticVehicle(541,2575.9492,1494.8772,10.3578,3.4901,-1,-1); // bullet
AddStaticVehicle(522,2631.0564,1746.9773,10.3930,85.3631,-1,-1); // nrg
AddStaticVehicle(561,2814.8008,2368.7236,10.3661,270.5381,3,8); // stratum
AddStaticVehicle(522,1532.2705,2850.1287,10.3903,91.7645,3,3); // nrg
AddStaticVehicle(521,-717.3291,2340.3069,127.1968,37.3134,-1,-1); // fcr
AddStaticVehicle(447,-740.4054,2368.5869,126.3433,38.8258,-1,-1); // seasparrow
AddStaticVehicle(562,1461.0449,2878.7629,10.4784,359.2087,1,1); // elegy
AddStaticVehicle(493,-901.1133,2311.0952,40.4684,306.3554,1,1); // seasparrow
AddStaticVehicle(447,-1059.1678,2299.8862,88.1641,209.7766,1,1); // seasparrow
AddStaticVehicle(447,-933.0016,2264.5122,41.4685,328.7767,1,1); // sea sparrow 2
AddStaticVehicle(460,-886.9491,2238.8982,42.5646,326.4070,1,1); // seaplane
AddStaticVehicle(447,-698.2007,2338.4663,127.4615,121.6867,1,1); // seasparrow 4
AddStaticVehicle(522,-2318.0090,-1644.9191,483.2745,221.9152,3,8); // nrg 1
AddStaticVehicle(522,-2316.3083,-1643.5609,483.2737,220.6978,3,8); // nrg 2
AddStaticVehicle(571,1461.9705,2806.9727,10.3900,178.2703,-1,-1); // kart 1
AddStaticVehicle(571,1466.2021,2806.9998,10.3934,179.4911,-1,-1); // kart
AddStaticVehicle(571,1470.8328,2806.9707,10.3933,177.7581,-1,-1); // kart
AddStaticVehicle(471,1532.3285,2748.0210,10.3892,84.5290,-1,-1); // quad
AddStaticVehicle(471,1532.2800,2740.6250,10.3894,74.9172,-1,-1); // quad
AddStaticVehicle(471,1532.3054,2734.8901,10.3905,93.0723,-1,-1); // quad
AddStaticVehicle(468,1458.8420,2764.9695,10.3890,266.5134,-1,-1); // sanchez
AddStaticVehicle(468,1458.9244,2779.6365,10.3904,272.2317,-1,-1); // sanchez
AddStaticVehicle(425,1438.6089,2849.7024,10.3018,263.1435,74,83); // hunter
AddStaticVehicle(457,1230.2601,2788.1450,10.3827,46.3546,7,79); // caddy
AddStaticVehicle(411,1464.8896,2877.9666,10.3944,179.2235,-1,-1); // infernus
AddStaticVehicle(415,1455.6304,2877.5237,10.3936,182.3453,36,105); // cheetah
//Grove not knowing what topics to put his cars in!
AddStaticVehicle(477,1451.9153,2877.0503,10.3992,180.4145,36,105); // zr350
AddStaticVehicle(553,1379.1086,1822.5465,11.0033,183.6785,-1,-1); // neveda
AddStaticVehicle(451,2296.3013,2770.8347,10.3966,274.4213,3,8); // turismo
AddStaticVehicle(471,2414.0842,2816.9314,10.3899,178.9183,-1,-1); // quad
AddStaticVehicle(461,2358.6731,2350.6233,10.3943,93.6122,-1,-1); // pcj600
AddStaticVehicle(475,1622.3398,2596.4460,10.3779,272.3468,-1,-1); // sabre
AddStaticVehicle(506,2174.3054,2787.7549,10.3851,179.0551,3,8); // supergt
AddStaticVehicle(457,1395.3652,2798.0498,10.4471,89.5335,-1,-1); // caddy
AddStaticVehicle(457,1490.1388,2725.5674,10.4471,359.8205,-1,-1); // caddy 2
AddStaticVehicle(457,1492.5103,2725.5535,10.4471,1.2605,-1,-1); // caddy 3
AddStaticVehicle(457,1494.8014,2725.5676,10.4471,0.0310,-1,-1); // caddy 4
AddStaticVehicle(420,2129.5667,2356.9368,10.1532,89.2911,-1,-1); // taxi
AddStaticVehicle(521,2075.5205,1630.7382,10.1538,179.0849,-1,-1); // fcr900
AddStaticVehicle(451,2013.8352,1534.4230,10.2142,269.0800,-1,-1); // turismo
//AddStaticVechicle(107,1530.2817,2772.7063,10.6719,257.6448,0,0,0,0,0,0); // Bike
//Attackers
AddStaticVehicle(603,1766.1143,2765.5012,10.6742,223.8507,18,1); // GB2spawnfront
AddStaticVehicle(451,1386.3617,2245.7559,10.5276,270.4848,125,125); // turismo
AddStaticVehicle(520,1441.3807,2872.9150,10.5622,180.8967,0,0); // hydra 2
AddStaticVehicle(520,1481.9612,2873.9111,10.5665,179.8358,0,0); // hydra 1
AddStaticVehicle(522,1594.6188,2814.1919,10.5622,269.6190,-1,-1); // nrg
AddStaticVehicle(520,1517.3684,2873.1519,10.5673,180.1987,18,1); // hydra 3
AddStaticVehicle(415,1283.0444,1371.4061,10.6377,266.8527,9,14); // chetta
AddStaticVehicle(432,1520.7349,2822.7148,10.3880,90.9706,51,118); // rhino
AddStaticVehicle(432,1428.6714,2826.7346,10.3902,263.5591,51,118); // rhino
AddStaticVehicle(447,-946.3799,2316.8535,41.3884,163.5627,1,1); // seasparrow
AddStaticVehicle(493,-927.8610,2274.6426,41.4520,264.5587,1,1); // speeder
AddStaticVehicle(493,-897.4188,2408.8547,42.0895,79.2376,1,1); // speeder
AddStaticVehicle(493,-966.3184,2425.2080,41.4240,179.5466,1,1); // speeder
AddStaticVehicle(522,-668.6516,2303.5947,135.1377,92.1648,1,1); // nrg
AddStaticVehicle(522,-668.3508,2305.1782,135.3140,88.1297,1,1); // nrg
AddStaticVehicle(522,-668.5353,2307.0933,135.2974,92.3528,1,1); // nrg
AddStaticVehicle(571,1778.2523,2753.6826,10.6274,75.9987,2,35); // kart 1
AddStaticVehicle(571,1778.6165,2755.0515,10.6277,77.2688,2,35); // kart 2
AddStaticVehicle(571,1779.0068,2756.4204,10.6275,74.6831,2,35); // kart 3
/*//Shooting Practice
AddPlayerClass(0,2494.6423,2781.3252,10.8203,254.5655,0,0,0,0,0,0); // Checkpoint to get in
AddPlayerClass(0,2530.5044,2785.8953,10.8203,288.0301,0,0,0,0,0,0); // Shooting practice spawn 1
AddPlayerClass(0,2545.5120,2754.5957,10.8203,205.8532,0,0,0,0,0,0); // Shooting practice spawn 2
AddPlayerClass(0,2501.0344,2751.0037,10.9844,92.7377,0,0,0,0,0,0); // Hp SP
AddPlayerClass(0,2500.6753,2745.5601,10.9844,159.0127,0,0,0,0,0,0); // armour SP
AddPlayerClass(0,2499.7344,2785.4690,10.8203,274.4723,0,0,0,0,0,0); // checkpoint to get out
AddPlayerClass(0,2499.8782,2789.0295,10.8203,320.0604,0,0,0,0,0,0); // checkpoint in spawn
//AddPlayerClass(0,2494.8655,2788.1851,10.8203,271.1069,0,0,0,0,0,0); // Checkpoint spawn out*/
//Armour
//new Float:gArmourPickups[][ PickupSpawnInfo ] =
//{
// { 1491.2185,2773.6294,15.9894 },
// { 2089.0508, 1449.1014, 10.8203 },
//{ 1982.9528, 1623.2513, 12.1968 },
// { 2110.3594, 2057.5906, 10.8203 },
// { -377.4450, 2241.7900, 46.1869 },
// { -2669.0249, 1428.7522, 906.4609 },
// { 1491.0803, 2773.4373, 15.9706 }
//};
SetTimer("MoneyGrubScoreUpdate", 1000, 1);
//SetTimer("GameModeExitFunc", gRoundTime, 0);
return 1;
}
public SendPlayerFormattedText(playerid, const str[], define)
{
new tmpbuf[256];
format(tmpbuf, sizeof(tmpbuf), str, define);
SendClientMessage(playerid, 0xFFFF00AA, tmpbuf);
}
public SendAllFormattedText(playerid, const str[], define)
{
new tmpbuf[256];
format(tmpbuf, sizeof(tmpbuf), str, define);
SendClientMessageToAll(0xFFFF00AA, tmpbuf);
}
/*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;
}*/