[Filtercript] Simple House system (not mine) -- is anybody good at adding 3d text labels to pickups?
#1

I'm using this script: http://forum.sa-mp.com/showthread.ph...ght=game+house and instead of having the chat spammed when you step into the pickups, I'd rather there be a 3d text label at the icon displaying necessary information. As I said before, this isn't my script, but rather one I would like to bring back from the dead lol. I haven't changed much myself, besides adding houses, and changing a couple commands because they were clashing with some other commands. I will paste my script below if you'd like to use that, or just use the original from the link above. I'm clueless when it comes to 3d text labels, that's why I came here.

Код:
#include <a_samp>
#include <dudb>
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
//----------------------------
//----------------------------
//  Full house script by Antironix!
//  Just don't remove the credits!
//----------------------------
//----------------------------
#define MAX_DISTANCE_TO_PROP 1.5
#define MAX_HOUSES 1000
#define MAX_RENTCOST 1000
#define MIN_RENTCOST 10
#define MAX_BUY_CARS 0
#define CAR_DELIVER_TIME 0 //The time that it takes that your car will be delivered. In hours.

//buyable cars
enum CarInfo {CarModel,CarName[24],CarCost};
new Buyable_Cars[MAX_BUY_CARS][CarInfo] =
{  //Modelid, Buy Name, Price
	{411,"Infernus",0},
	{522,"NRG-500",50000},
	{451,"Turismo",50000},
	{541,"Bullet",50000},
	{415,"Cheetah",50000},
	{429,"Banshee",50000},
	{494,"Hotring",50000},
	{556,"Monster",50000}
};
//----------------------------
//----------------------------
#define c_y 0xFFFF00AA
#define c_r 0xAA3333AA
new HousePickup[MAX_HOUSES];
new playerinterior[MAX_PLAYERS]=-1;
new Float:housex, Float:housey, Float:housez;
new housemapicon[MAX_PLAYERS];
new playerworld[MAX_PLAYERS];
new bool:KillVeh[MAX_VEHICLES] = false;
forward rentfee();
forward newcar();
forward KillVehicle(carid);

enum HouseInfo
{
	Name[24],
	Renter[24],
	Rentable,
	Rentcost,
	Cost,
	Sell,
	Interior,
	Virtualworld,
	Locked,
	Float:InteriorX,
	Float:InteriorY,
	Float:InteriorZ,
	Float:iconx,
	Float:icony,
	Float:iconz,
	Rentfee
}
new hInfo[MAX_HOUSES][HouseInfo];

enum HouseCarInfo
{
	HouseCar,
	GotCar,
	Houseid,
	CarModel,
	Float:CarX,
	Float:CarY,
	Float:CarZ,
	CarColor1,
	CarColor2,
	Respawn_Delay,
	NewCar
}
new cInfo[MAX_HOUSES][HouseCarInfo];

#define FILTERSCRIPT
#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
	print("\n--------------------------------------");
	print(" Simple House System by Antironix");
	print("--------------------------------------\n");
	
	//AddHouse(houseid, iconX, iconY, iconZ, interiorX, interiorY, interiorZ, Cost, Sell, Interior, Virtualworld)
	AddHouse(0, 1442.9769,-629.5287,95.7186, 2317.8201,-1024.7500,1050.2109, 0, 0, 9, 0); //My House
	AddHouse(1, 1980.9896,-1719.0171,17.0304, 2451.77,	 -1699.80,	 1013.51,0,0, 2, 0); //Test house
	// 2-17 : LSM
	AddHouse(2, 2151.5000000,-1789.1999500, 13.5, 2140, -1796.09998, 969.50001, 0, 0, 0, 0);
	AddHouse(3, 2152.0000000,-1814.5999800, 13.5, 2140, -1796.09998, 969.50001, 0, 0, 0, 1);
	AddHouse(4, 2156.0000000,-1814.5999800, 13.5, 2140, -1796.09998, 969.50001, 0, 0, 0, 2);
	AddHouse(5, 2162.8000500,-1814.5999800, 13.5, 2140, -1796.09998, 969.50001, 0, 0, 0, 3);
	AddHouse(6, 2168.8000500,-1814.5999800, 13.5, 2140, -1796.09998, 969.50001, 0, 0, 0, 4);
	AddHouse(7, 2176.3000500,-1814.5999800, 13.5, 2140, -1796.09998, 969.50001, 0, 0, 0, 5);
	AddHouse(8, 2185.8000500,-1814.5999800, 13.5, 2140, -1796.09998, 969.50001, 0, 0, 0, 6);
	AddHouse(9, 2192.3999000,-1815.1999500, 13.5, 2140, -1796.09998, 969.50001, 0, 0, 0, 7);
	AddHouse(10, 2151.0000000,-1807.1999500, 13.5, 2140, -1796.09998, 969.50001, 0, 0, 0, 8);
	AddHouse(11, 2172.3999000,-1819.3000500, 16.0, 2140, -1796.09998, 969.50001, 0, 0, 0, 9);
	AddHouse(12, 2164.8000500,-1819.3000500, 16.0, 2140, -1796.09998, 969.50001, 0, 0, 0, 10);
	AddHouse(13, 2158.3999000,-1819.3000500, 16.0, 2140, -1796.09998, 969.50001, 0, 0, 0, 11);
	AddHouse(14, 2151.8999000,-1819.3000500, 16.0, 2140, -1796.09998, 969.50001, 0, 0, 0, 12);
	AddHouse(15, 2146.6001000,-1815.0000000, 16.0, 2140, -1796.09998, 969.50001, 0, 0, 0, 13);
	AddHouse(16, 2146.6001000,-1808.5000000, 16.0, 2140, -1796.09998, 969.50001, 0, 0, 0, 14);
	AddHouse(17, 2145.0000000,-1802.0000000, 16.0, 2140, -1796.09998, 969.50001, 0, 0, 0, 15);
	
	//AddHouseCar(1, 429, 1975.3328,-1709.8126,15.9688, 0, 0, 5*60*1000);//5 min respawn delay
	SetTimer("rentfee", 1*60*60*1000, 1);//1 hour
	SetTimer("newcar", CAR_DELIVER_TIME*60*10*1000,1);//1 hour
	return 0;
}

public OnFilterScriptExit()
{
	for(new i=0;i<MAX_HOUSES;i++)
	{
	    DestroyPickup(HousePickup[i]);
	    DestroyVehicle(cInfo[i][HouseCar]);
	}
	return 0;
}

#else
#endif

public OnPlayerCommandText(playerid, cmdtext[])
{
	dcmd(buy,3,cmdtext);
	dcmd(sell,4,cmdtext);
	dcmd(enter,5,cmdtext);
	dcmd(exit,4,cmdtext);
	dcmd(hlock,5,cmdtext);
	dcmd(hunlock,7,cmdtext);
	dcmd(home,4,cmdtext);
	dcmd(setrent,7,cmdtext);
	dcmd(rent,4,cmdtext);
	dcmd(unrent,6,cmdtext);
	dcmd(house,5,cmdtext);
	dcmd(housestats,10,cmdtext);
	dcmd(getrent,7,cmdtext);
	dcmd(payrent,7,cmdtext);
	dcmd(ordercar,8,cmdtext);
	return 0;
}

AddHouse(houseid, Float:iconX, Float:iconY, Float:iconZ, Float:interiorX, Float:interiorY, Float:interiorZ, Costa, Sella, Interiora, virtualworld)
{
	new house[256];
	format(house, sizeof(house), "Houses/houseid%d",houseid);
	if(!dini_Exists(house))
	{
		dini_Create(house);
		format(hInfo[houseid][Name], 24, "ForSale");
		dini_Set(house, "Name", "ForSale");
		format(hInfo[houseid][Renter], 24, "ForRent");
		dini_Set(house, "Renter", "ForRent");
		hInfo[houseid][Rentable] = 0;
		dini_IntSet(house, "Rentable", 0);
		hInfo[houseid][Rentcost] = 0;
		dini_IntSet(house, "Rentcost", 0);
		hInfo[houseid][Cost] = Costa;
		dini_IntSet(house, "Cost", Costa);
		hInfo[houseid][Sell] = Sella;
		dini_IntSet(house, "Sell", Sella);
		hInfo[houseid][Interior] = Interiora;
		dini_IntSet(house, "Interior", Interiora);
		dini_IntSet(house, "Virtualworld", virtualworld);
		hInfo[houseid][Virtualworld] = virtualworld;
		hInfo[houseid][Locked] = 1;
		dini_IntSet(house, "Locked", 1);
		hInfo[houseid][InteriorX] = interiorX;
		hInfo[houseid][InteriorY] = interiorY;
		hInfo[houseid][InteriorZ] = interiorZ;
		dini_FloatSet(house, "X", interiorX);
		dini_FloatSet(house, "Y", interiorY);
		dini_FloatSet(house, "Z", interiorZ);
		dini_IntSet(house, "RentPay", 0);
		dini_IntSet(house, "RentGet", 0);
		cInfo[houseid][HouseCar] = 429;
		dini_IntSet(house, "HouseCar", 0);
		cInfo[houseid][CarModel] = 429;
		dini_IntSet(house, "CarModel", 0);
		cInfo[houseid][CarX] = 0;
		cInfo[houseid][CarY] = 0;
		cInfo[houseid][CarZ] = 0;
		dini_FloatSet(house, "CarX", 0);
		dini_FloatSet(house, "CarY", 0);
		dini_FloatSet(house, "CarZ", 0);
		cInfo[houseid][CarColor1] = 0;
		cInfo[houseid][CarColor2] = 0;
		dini_IntSet(house, "CarColor1", 0);
		dini_IntSet(house, "CarColor2", 0);
		cInfo[houseid][GotCar] = 0;
		print("-");
		print("--------------House Created--------------");
		printf("- Houseid: %d", houseid);
		printf("- Buy Cost: %d", Costa);
		printf("- Sell Cost: %d", Sella);
		printf("- Interior: %d", Interiora);
		printf("- VirtualWorld: %d", virtualworld);
		print("-----------------------------------------");
		print("-");
	}
	else
	{
	    format(hInfo[houseid][Name], 24, dini_Get(house, "Name"));
	    format(hInfo[houseid][Renter], 24, dini_Get(house, "Renter"));
		hInfo[houseid][Rentable] = dini_Int(house, "Rentable");
		hInfo[houseid][Rentcost] = dini_Int(house, "Rentcost");
	    hInfo[houseid][Cost] = dini_Int(house, "Cost");
	    hInfo[houseid][Sell] = dini_Int(house, "Sell");
	    hInfo[houseid][Interior] = dini_Int(house, "Interior");
	    hInfo[houseid][Locked] = dini_Int(house, "Locked");
	    hInfo[houseid][InteriorX] = dini_Float(house, "X");
	    hInfo[houseid][InteriorY] = dini_Float(house, "Y");
		hInfo[houseid][InteriorZ] = dini_Float(house, "Z");
		hInfo[houseid][Virtualworld] = dini_Int(house, "Virtualworld");
	}
    hInfo[houseid][iconx]=iconX;
	hInfo[houseid][icony]=iconY;
	hInfo[houseid][iconz]=iconZ;
	format(house, sizeof(house), "Houses/houseid%d",houseid);
	if(strcmp(hInfo[houseid][Name],"ForSale",true)==0)
	{
		HousePickup[houseid] = CreatePickup(1273, 23, iconX, iconY, iconZ);//not bought
	}
	else
	{
		HousePickup[houseid] = CreatePickup(1272,23, iconX, iconY, iconZ);//bought
	}
}

/*AddHouseCar(houseid, modelid, Float:Carx, Float:Cary, Float:Carz, color1, color2, respawn_delay)
{
	new house[256];
	format(house, sizeof(house), "Houses/houseid%d",houseid);
	if(dini_Exists(house))
	{
	    cInfo[houseid][GotCar] = 1;
		if(dini_Int(house, "CarModel")==0)
		{
		    dini_IntSet(house, "CarModel", modelid);
		    cInfo[houseid][CarModel] = modelid;
		    cInfo[houseid][CarX] = Carx;
			cInfo[houseid][CarY] = Cary;
			cInfo[houseid][CarZ] = Carz;
			dini_FloatSet(house, "CarX", Carx);
			dini_FloatSet(house, "CarY", Cary);
			dini_FloatSet(house, "CarZ", Carz);
			cInfo[houseid][CarColor1] = color1;
			cInfo[houseid][CarColor2] = color2;
			dini_IntSet(house, "CarColor1", color1);
			dini_IntSet(house, "CarColor2", color2);
			dini_IntSet(house, "Respawn_Delay", respawn_delay);
			cInfo[houseid][Respawn_Delay] = respawn_delay;
 			cInfo[houseid][HouseCar] = CreateVehicle(cInfo[houseid][CarModel], Carx, Cary, Carz, 0.0, color1, color2, respawn_delay);
		    print("-");
			print("--------------Car Created--------------");
			printf("- Car Houseid: %d", houseid);
			printf("- Modelid: %d", modelid);
			printf("- Color 1: %d", color1);
			printf("- Color 2: %d", color2);
			printf("- Respawn Delay: %d", respawn_delay);
			print("---------------------------------------");
			print("-");
		}
		else
		{
		    cInfo[houseid][CarModel] = dini_Int(house, "CarModel");
		}
		cInfo[houseid][CarX] = dini_Int(house, "CarX");
		cInfo[houseid][CarY] = dini_Int(house, "CarY");
		cInfo[houseid][CarZ] = dini_Int(house, "CarZ");
		cInfo[houseid][CarColor1] = dini_Int(house, "CarColor1");
		cInfo[houseid][CarColor2] = dini_Int(house, "CarColor2");
		cInfo[houseid][Respawn_Delay] = dini_Int(house, "Respawn_Delay");
 		cInfo[houseid][HouseCar] = CreateVehicle(cInfo[houseid][CarModel], Carx, Cary, Carz, 0.0, color1, color2, respawn_delay);
	}
}*/

stock SpawnPlayerAtHouse(playerid)
{
	new str1[256],pname[24],str[256];
	GetPlayerName(playerid, pname, sizeof(pname));
	format(str1, sizeof(str1), "Houses/Users/%s", udb_encode(pname));
	if (dini_Exists(str1))
	{
		if(dini_Int(str1,"Houseid")!=-255)
		{
			new Float:x,Float:y,Float:z;
			str = dini_Get(str1,"SpawnInt");
			SetPlayerInterior(playerid, strval(str));
			playerinterior[playerid] = strval(str);
    		x = dini_Float(str1,"SpawnX");
	  		y = dini_Float(str1,"SpawnY");
	  		z = dini_Float(str1,"SpawnZ");
			SetPlayerPos(playerid, x, y, z);
		}
	}
	return 1;
}

public OnPlayerSpawn(playerid)
{
    SpawnPlayerAtHouse(playerid);
}

stock GetHouseStats(playerid, hid)
{
	new str2[256];
	format(str2, sizeof(str2), "Owned by: %s", hInfo[hid][Name]);
	SendClientMessage(playerid, c_y, str2);
	if(strcmp(hInfo[hid][Renter],"ForRent",true))
	{
		format(str2, sizeof(str2), "Rented by: %s", hInfo[hid][Renter]);
		SendClientMessage(playerid, c_y, str2);
	}
	format(str2,sizeof(str2),"Cost: %i",hInfo[hid][Cost]);
	SendClientMessage(playerid, c_y, str2);
}

dcmd_sell(playerid,params[])
{
	#pragma unused params
	new str[255],str1[256],pname[24],housenumber;
	housenumber = GetHouseID(playerid);
	GetPlayerName(playerid, pname, 24);
	format(str1, sizeof(str1), "Houses/houseid%d", housenumber);
	if (strcmp(hInfo[housenumber][Name],pname,false)) return SendClientMessage(playerid, c_r, "This house isn't yours!");
 	SendClientMessage(playerid, c_y, "You have sold your house!");
  	format(str, sizeof(str), "%s has sold houseid 0",pname);
	print(str);
	GivePlayerMoney(playerid, hInfo[housenumber][Sell]);
    dini_Set(str1, "Name", "ForSale");
    hInfo[housenumber][Locked] = dini_IntSet(str1,"Locked",1);
    format(hInfo[housenumber][Name],255,"ForSale");
	format(str1, sizeof(str1), "Houses/Users/%s", udb_encode(pname));
	if (!dini_Exists(str1)) dini_Create(str1);
	dini_IntSet(str1, "Houseid", -255);
	DestroyPickup(HousePickup[housenumber]);
	HousePickup[housenumber] = CreatePickup(1273, 23, hInfo[housenumber][iconx], hInfo[housenumber][icony], hInfo[housenumber][iconz]);
	RemovePlayerMapIcon(playerid, housemapicon[playerid]);
 	return 1;
}

dcmd_buy(playerid,params[])
{
    #pragma unused params
	new str[255],str1[255],pname[24], housenumber;
	housenumber = GetHouseID(playerid);
	if(housenumber == -1) return SendClientMessage(playerid, c_r, "You are not in a house icon!");

	GetPlayerName(playerid, pname, 24);
	format(str1, sizeof(str1), "Houses/Users/%s", udb_encode(pname));
	if(dini_Exists(str1))
	{
		if (dini_Int(str1, "Houseid")!=-255) return SendClientMessage(playerid, c_r, "You can only buy one house!");
	}
	format(str1, sizeof(str1), "Houses/houseid%d", housenumber);
	if (strcmp(hInfo[housenumber][Name],"ForSale",true)) return SendClientMessage(playerid, c_r, "This house isn't for sale!");
	if(GetPlayerMoney(playerid)<hInfo[housenumber][Cost]) return SendClientMessage(playerid, c_r, "Not enough money!");
	SendClientMessage(playerid, c_y, "You have bought the house!");
	format(str, sizeof(str), "%s has bought houseid 0",pname);
	print(str);
	GivePlayerMoney(playerid, -hInfo[housenumber][Cost]);
    dini_Set(str1, "Name", pname);
    hInfo[housenumber][Name]=pname;
    hInfo[housenumber][Locked] = dini_IntSet(str1,"Locked",0);

	format(str1, sizeof(str1), "Houses/Users/%s", udb_encode(pname));
	if (!dini_Exists(str1)) dini_Create(str1);
	new Float:sy, Float:sx, Float:sz;
	dini_IntSet(str1, "Houseid", housenumber);
	if(!dini_Isset(str1,"Rentid"))
	{
		dini_IntSet(str1, "Rentid", -255);
	}
	GetPlayerPos(playerid, sx,sy,sz);
	dini_FloatSet(str1, "SpawnX", sx);
	dini_FloatSet(str1, "SpawnY", sy);
	dini_FloatSet(str1, "SpawnZ", sz);
	dini_IntSet(str1, "SpawnInt", GetPlayerInterior(playerid));
	DestroyPickup(HousePickup[housenumber]);
	HousePickup[housenumber] = CreatePickup(1272, 23, hInfo[housenumber][iconx], hInfo[housenumber][icony], hInfo[housenumber][iconz]);
	return 1;
}

dcmd_hlock(playerid,params[])
{
    #pragma unused params
	new str1[256],pname[24],housenumber;
	housenumber = GetHouseID(playerid);
	GetPlayerName(playerid, pname, 24);
	format(str1, sizeof(str1), "Houses/houseid%d", housenumber);
	if(strcmp(hInfo[housenumber][Name],pname,true)==0)
	{
 		SendClientMessage(playerid, c_y, "You have locked your house!");
    	dini_IntSet(str1,"Locked",1);
    	hInfo[housenumber][Locked] = 1;
    }
    else if(strcmp(hInfo[housenumber][Renter],pname,true)==0)
    {
        SendClientMessage(playerid, c_y, "You have locked your house!");
    	dini_IntSet(str1,"Locked",1);
    	hInfo[housenumber][Locked] = 1;
    }
    else
    {
        SendClientMessage(playerid, c_r, "This house isn't yours!");
    }	
	return 1;
}

dcmd_hunlock(playerid,params[])
{
    #pragma unused params
	new str1[256],pname[24],housenumber;
	housenumber = GetHouseID(playerid);
	GetPlayerName(playerid, pname, 24);
	format(str1, sizeof(str1), "Houses/houseid%d", housenumber);
	if(strcmp(hInfo[housenumber][Name],pname,true)==0)
	{
 		SendClientMessage(playerid, c_y, "You have unlocked your house!");
    	dini_IntSet(str1,"Locked",0);
    	hInfo[housenumber][Locked] = 0;
    }
    else if(strcmp(hInfo[housenumber][Renter],pname,true)==0)
    {
        SendClientMessage(playerid, c_y, "You have unlocked your house!");
    	dini_IntSet(str1,"Locked",0);
    	hInfo[housenumber][Locked] = 0;
    }
    else
    {
        SendClientMessage(playerid, c_r, "This house isn't yours!");
    }
	return 1;
}

dcmd_enter(playerid,params[])
{
    #pragma unused params
	new str1[255],pname[24],housenumber;
	housenumber = GetHouseID(playerid);
	GetPlayerPos(playerid, housex, housey, housez);
	format(str1, sizeof(str1), "Houses/houseid%d", housenumber);
	GetPlayerName(playerid, pname, 24);
	if(hInfo[housenumber][Locked]==1) return SendClientMessage(playerid, c_r, "This house is locked!");
    playerworld[playerid] = GetPlayerVirtualWorld(playerid);
 	SendClientMessage(playerid, c_y, "You entered the house!");
    SetPlayerVirtualWorld(playerid, hInfo[housenumber][Virtualworld]);
    SetPlayerInterior(playerid, hInfo[housenumber][Interior]);
	SetPlayerPos(playerid, hInfo[housenumber][InteriorX], hInfo[housenumber][InteriorY], hInfo[housenumber][InteriorZ]);
	playerinterior[playerid] = hInfo[housenumber][Interior];
   	return 1;
}

dcmd_exit(playerid,params[])
{
    #pragma unused params

	if(GetPlayerInterior(playerid)==playerinterior[playerid])
	{
		SetPlayerPos(playerid, housex, housey, housez);
		SetPlayerInterior(playerid, playerworld[playerid]);
	}
	else
	{
		SendClientMessage(playerid, c_r, "You have not entered a house!");
	}
   	return 1;
}

dcmd_home(playerid,params[])
{
    #pragma unused params
	new str1[256],pname[24];
	GetPlayerName(playerid, pname, 24);
	format(str1, sizeof(str1), "Houses/Users/%s", udb_encode(pname));
	if(!dini_Exists(str1)) return SendClientMessage(playerid, c_r, "You don't own a house!");
	if(dini_Int(str1, "Houseid")!=-255)
	{
	    housemapicon[playerid] = SetPlayerMapIcon(playerid,31,hInfo[dini_Int(str1, "Houseid")][iconx], hInfo[dini_Int(str1, "Houseid")][icony], hInfo[dini_Int(str1, "Houseid")][iconz],31,c_y);
	}
	else if (dini_Int(str1, "Rentid")!=-255)
	{
	    housemapicon[playerid] = SetPlayerMapIcon(playerid,31,hInfo[dini_Int(str1, "Rentid")][iconx], hInfo[dini_Int(str1, "Rentid")][icony], hInfo[dini_Int(str1, "Rentid")][iconz],31,c_y);
	}
	else
	{
	    SendClientMessage(playerid, c_r, "You don't own a house!");
	}
	return 1;
}

dcmd_setrent(playerid,params[])
{
	new str[256],str1[256],pname[24],housenumber;
	housenumber = GetHouseID(playerid);
	GetPlayerName(playerid, pname, 24);
	format(str1, sizeof(str1), "Houses/houseid%d", housenumber);
	str = dini_Get(str1,"Name");
	if (strcmp(str,pname,true)) return SendClientMessage(playerid, c_r, "This house isn't yours!");
	new rentcost, rentable;
	if (sscanf(params, "dd", rentable, rentcost)) return SendClientMessage(playerid, c_r, "USAGE: /setrent [0/1] [Rentcost]");
	else if (rentcost<MIN_RENTCOST)
	{
	    format(str, sizeof(str), "The minimum rentcost is $%i.", MIN_RENTCOST);
		SendClientMessage(playerid, c_r, str);
		return 1;
	}
	else if (rentcost>MAX_RENTCOST)
	{
	    format(str, sizeof(str), "The maximum rentcost is $%i.", MAX_RENTCOST);
		SendClientMessage(playerid, c_r, str);
		return 1;
	}
	else if(rentable==1)
	{
        SendClientMessage(playerid, c_y, "Your house is now rentable!");
        hInfo[housenumber][Rentable] = 1;
		dini_IntSet(str1, "Rentable", 1);
        hInfo[housenumber][Rentcost] = rentcost;
		dini_IntSet(str1, "Rentcost", rentcost);
        return 1;
	}
	else if(rentable==0)
	{
	    SendClientMessage(playerid, c_y, "Your house is now not rentable!");
	    hInfo[housenumber][Rentable] = 0;
		dini_IntSet(str1, "Rentable", 0);
	    hInfo[housenumber][Rentcost] = rentcost;
		dini_IntSet(str1, "Rentcost", rentcost);
	    return 1;
	}
	return 1;
}

dcmd_rent(playerid,params[])
{
    #pragma unused params
	new str[255],str1[256],str5[255],pname[24],housenumber;
	housenumber = GetHouseID(playerid);
	GetPlayerName(playerid, pname, 24);
	format(str1, sizeof(str1), "Houses/houseid%d", housenumber);
	format(str5, sizeof(str5), "Houses/Users/%s", udb_encode(pname));
	if(dini_Isset(str5, "Rentid"))
	{
		if (dini_Int(str5, "Rentid")!=-255) return SendClientMessage(playerid, c_r, "You can only rent one house at a time!");
	}
	format(str, sizeof(str), dini_Get(str1,"Name"));
	if (strcmp(str,"ForSale",true)==0) return SendClientMessage(playerid, c_r, "This house has no owner!");
	if(hInfo[housenumber][Rentable]==0 || strcmp(hInfo[housenumber][Renter], "ForRent", true)) return SendClientMessage(playerid, c_r, "This house is not rentable!");
	if(GetPlayerMoney(playerid)<hInfo[housenumber][Rentcost]) return SendClientMessage(playerid, c_r, "Not enough money!");
	dini_Set(str1, "Renter", udb_encode(pname));
	format(hInfo[housenumber][Renter], 24, udb_encode(pname));
	dini_IntSet(str5, "Rentid", housenumber);
	format(str1, sizeof(str1), "You have rented this house, it will cost you $%i an hour!", hInfo[housenumber][Rentcost]);
	SendClientMessage(playerid, c_y, str1);
	return 1;
}

dcmd_unrent(playerid,params[])
{
    #pragma unused params
	new str1[256],pname[24],housenumber;
	housenumber = GetHouseID(playerid);
	GetPlayerName(playerid, pname, 24);
	format(str1, sizeof(str1), "Houses/houseid%d", housenumber);
	if(strcmp(hInfo[housenumber][Renter], pname, true)) return SendClientMessage(playerid, c_r, "You aren't renting this house!");
	
	dini_Set(str1, "Renter", "ForRent");
	format(hInfo[housenumber][Renter], 24, "ForRent");
	format(str1, sizeof(str1), "Houses/Users/%s", udb_encode(pname));
	dini_IntSet(str1, "Rentid", -255);
	SendClientMessage(playerid, c_y, "You have unrented this house!");
	return 1;
}

dcmd_house(playerid,params[])
{
	#pragma unused params
	SendClientMessage(playerid, c_y, "-------------");
	SendClientMessage(playerid, c_y, "House options");
	SendClientMessage(playerid, c_y, "-------------");
	SendClientMessage(playerid, c_y, "/setrent [0/1] [Cost] - House owner");
	//SendClientMessage(playerid, c_y, "/ordercar [CarName]   - House owner");
	SendClientMessage(playerid, c_y, "/getrent              - House owner");
	SendClientMessage(playerid, c_y, "/hlock                 - Renter/Owner");
	SendClientMessage(playerid, c_y, "/hunlock               - Renter/Owner");
	SendClientMessage(playerid, c_y, "/payrent              - Renter");
	SendClientMessage(playerid, c_y, "/unrent               - Renter");
	SendClientMessage(playerid, c_y, "/rent                 - Guest");
	SendClientMessage(playerid, c_y, "-------------");
	return 1;
}

dcmd_housestats(playerid,params[])
{
	#pragma unused params
	new str[256],housenumber;
	housenumber = GetHouseID(playerid);
	format(str, sizeof(str), "Owner: %s", hInfo[housenumber][Name]);
	SendClientMessage(playerid, c_y, str);
	format(str, sizeof(str), "Cost: $%d", hInfo[housenumber][Cost]);
	SendClientMessage(playerid, c_y, str);
	format(str, sizeof(str), "Renter: %s", hInfo[housenumber][Renter]);
	SendClientMessage(playerid, c_y, str);
	format(str, sizeof(str), "Rentcost: $%d / hour", hInfo[housenumber][Rentcost]);
	SendClientMessage(playerid, c_y, str);
	return 1;
}

dcmd_getrent(playerid,params[])
{
	#pragma unused params
	new pname[24],housenumber;
	housenumber = GetHouseID(playerid);
	GetPlayerName(playerid, pname, 24);
	if(strcmp(hInfo[housenumber][Name],pname,true)==0)
	{
	    new str[255];
 		SendClientMessage(playerid, c_y, "You collected the money of the renter!");
 		format(str, sizeof(str), "Houses/houseid%d", housenumber);
    	GivePlayerMoney(playerid, dini_Int(str, "RentGet"));
    	dini_IntSet(str, "RentGet", 0);
    }
    else
    {
        SendClientMessage(playerid, c_r, "This house isn't yours!");
    }
    return 1;
}

dcmd_payrent(playerid,params[])
{
	#pragma unused params
	new pname[24],housenumber;
	housenumber = GetHouseID(playerid);
	GetPlayerName(playerid, pname, 24);
	if(strcmp(hInfo[housenumber][Renter],pname,true)==0)
	{
	    new str[255];
	    format(str, sizeof(str), "Houses/houseid%d", housenumber);
	    if(GetPlayerMoney(playerid)<dini_Int(str, "RentPay")) return SendClientMessage(playerid, c_r, "You don't have enough money to pay the house owner!");
 		SendClientMessage(playerid, c_y, "You have payed the money to the owner!");
     	GivePlayerMoney(playerid, -dini_Int(str, "RentPay"));
    	dini_IntSet(str, "RentPay", 0);
    }
    else
    {
        SendClientMessage(playerid, c_r, "You aren't renting this house!");
    }
    return 1;
}

dcmd_ordercar(playerid,params[])
{
	#pragma unused params
	new pname[24],housenumber;
	housenumber = GetHouseID(playerid);
	GetPlayerName(playerid, pname, 24);
	if(cInfo[housenumber][GotCar]==0) return SendClientMessage(playerid, c_r, "This house can't order a car!");
	if(strcmp(hInfo[housenumber][Name],pname,true)==0)
	{
	    new carname[40];
	    if (sscanf(params, "s", carname))
		{
	 		SendClientMessage(playerid, c_r, "USAGE: /ordercar [CarName]");
	 	}
		else
		{
		    new str[256], abc;
		    for(new i=0;i<MAX_BUY_CARS;i++)
		    {
        		if(strcmp(carname,Buyable_Cars[i][CarName],true)==0)
	       		{
	       		    if(GetPlayerMoney(playerid)<Buyable_Cars[i][CarCost]) return SendClientMessage(playerid, c_r, "Not enough money!");
         			GivePlayerMoney(playerid, -Buyable_Cars[i][CarCost]);
					cInfo[housenumber][CarModel] = Buyable_Cars[i][CarModel];
					format(str, sizeof(str), "Houses/houseid%d", housenumber);
					dini_IntSet(str, "CarModel", Buyable_Cars[i][CarModel]);
					format(str, sizeof(str), "You have ordered the %s for $%d!", carname, Buyable_Cars[i][CarCost]);
  					SendClientMessage(playerid, c_y, str);
  					SendClientMessage(playerid, c_y, "It will take some time when your car will be delivered.");
  					cInfo[housenumber][NewCar] = 1;
  					abc = 1;
  				}
  			}
  			if(abc==0)
  			{
  			    SendClientMessage(playerid, c_r, "Wrong vehicle name!");
  			    abc=0;
  			}
  			
		}
    }
    else
    {
        SendClientMessage(playerid, c_r, "This house isn't yours!");
    }
    return 1;
}

public newcar()
{
	for(new carid=0;carid<MAX_HOUSES;carid++)
	{
		if(cInfo[carid][NewCar]==1)
		{
		    cInfo[carid][NewCar]=0;
		    KillVehicle(cInfo[carid][HouseCar]);
	    	cInfo[carid][HouseCar] = CreateVehicle(cInfo[carid][CarModel], cInfo[carid][CarX], cInfo[carid][CarY], cInfo[carid][CarZ], 0.0, cInfo[carid][CarColor1], cInfo[carid][CarColor2], cInfo[carid][Respawn_Delay]);
		}
	}
}

public KillVehicle(carid)
{
	for (new i=0;i<MAX_PLAYERS;i++)
	{
	    if(IsPlayerInVehicle(i, carid))
	    {
			RemovePlayerFromVehicle(i);
    		KillVeh[carid] = true;
    		SetVehicleToRespawn(carid);
    		SendClientMessage(i, c_r, "System: Your car has been destroyed.");
    		SendClientMessage(i, c_r, "Reason: House system.");
		}
		else
		{
		    KillVeh[carid] = true;
		    SetVehicleToRespawn(carid);
		}
	}
}

public OnVehicleSpawn(vehicleid)
{
	for(new i=0;i<MAX_HOUSES;i++)
	{
    	if(KillVeh[cInfo[i][HouseCar]]==true)
    	{
     		KillVeh[cInfo[i][HouseCar]] = false;
        	DestroyVehicle(cInfo[i][HouseCar]);
		}
	}
}

public rentfee()
{
	new str[255],str2[255],pname[24];
	for(new houseid=0;houseid<MAX_HOUSES;houseid++)
	{
		format(str, sizeof(str), "Houses/houseid%d", houseid);
		if(strcmp(hInfo[houseid][Renter], "ForRent", true))
		{
			for(new ii=0;ii<MAX_PLAYERS;ii++)
			{
		    	if(IsPlayerConnected(ii))
	  			{
	  		    	GetPlayerName(ii, pname, 24);
        			if(strcmp(hInfo[houseid][Renter], pname, true)==0)
        			{
        	 		   	format(str2, sizeof(str2), "You have to pay $%d for the hour you have rented the hous!", hInfo[houseid][Rentcost]);
        	 		   	SendClientMessage(ii, c_y, str2);
						dini_IntSet(str, "RentGet", dini_Int(str, "RentGet")+hInfo[houseid][Rentcost]);
						dini_IntSet(str, "RentPay", dini_Int(str, "RentPay")+hInfo[houseid][Rentcost]);
						hInfo[houseid][Rentfee]=1;
					}
				}
			}
			if(hInfo[houseid][Rentfee]==0)
			{
				    if(strcmp(hInfo[houseid][Renter],"ForRent"))
				    {
				        dini_IntSet(str, "RentGet", dini_Int(str, "RentGet")+hInfo[houseid][Rentcost]);
				        dini_IntSet(str, "RentPay", dini_Int(str, "RentPay")+hInfo[houseid][Rentcost]);
				    }
			}
			hInfo[houseid][Rentfee]=0;
		}
	}
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
	if(GetHouseID(playerid) != -255) GetHouseStats(playerid, GetHouseID(playerid));
	return 0;
}

stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
    if(IsPlayerConnected(playerid))
	{
		new Float:oldposx, Float:oldposy, Float:oldposz;
		new Float:tempposx, Float:tempposy, Float:tempposz;
		GetPlayerPos(playerid, oldposx, oldposy, oldposz);
		tempposx = (oldposx -x);
		tempposy = (oldposy -y);
		tempposz = (oldposz -z);
		if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
		{
			return 1;
		}
	}
	return 0;
}

stock GetHouseID(playerid)
{
	for(new i=0; i<MAX_HOUSES; i++)
	{
	    if(PlayerToPoint(MAX_DISTANCE_TO_PROP, playerid, hInfo[i][iconx], hInfo[i][icony], hInfo[i][iconz]))
	    {
	        return i;
		}
	}
	return -255;
}

stock sscanf(string[], format[], {Float,_}:...)
{
	new
		formatPos = 0,
		stringPos = 0,
		paramPos = 2,
		paramCount = numargs();
	while (paramPos < paramCount && string[stringPos])
	{
		switch (format[formatPos++])
		{
			case '\0':
			{
				return 0;
			}
			case 'i', 'd':
			{
				new
					neg = 1,
					num = 0,
					ch = string[stringPos];
				if (ch == '-')
				{
					neg = -1;
					ch = string[++stringPos];
				}
				do
				{
					stringPos++;
					if (ch >= '0' && ch <= '9')
					{
						num = (num * 10) + (ch - '0');
					}
					else
					{
						return 1;
					}
				}
				while ((ch = string[stringPos]) && ch != ' ');
				setarg(paramPos, 0, num * neg);
			}
			case 'h', 'x':
			{
				new
					ch,
					num = 0;
				while ((ch = string[stringPos++]))
				{
					switch (ch)
					{
						case 'x', 'X':
						{
							num = 0;
							continue;
						}
						case '0' .. '9':
						{
							num = (num << 4) | (ch - '0');
						}
						case 'a' .. 'f':
						{
							num = (num << 4) | (ch - ('a' - 10));
						}
						case 'A' .. 'F':
						{
							num = (num << 4) | (ch - ('A' - 10));
						}
						case ' ':
						{
							break;
						}
						default:
						{
							return 1;
						}
					}
				}
				setarg(paramPos, 0, num);
			}
			case 'c':
			{
				setarg(paramPos, 0, string[stringPos++]);
			}
			case 'f':
			{
				new tmp[25];
				strmid(tmp, string, stringPos, stringPos+sizeof(tmp)-2);
				setarg(paramPos, 0, _:floatstr(tmp));
			}
			case 's', 'z':
			{
				new
					i = 0,
					ch;
				if (format[formatPos])
				{
					while ((ch = string[stringPos++]) && ch != ' ')
					{
						setarg(paramPos, i++, ch);
					}
					if (!i) return 1;
				}
				else
				{
					while ((ch = string[stringPos++]))
					{
						setarg(paramPos, i++, ch);
					}
				}
				stringPos--;
				setarg(paramPos, i, '\0');
			}
			default:
			{
				continue;
			}
		}
		while (string[stringPos] && string[stringPos] != ' ')
		{
			stringPos++;
		}
		while (string[stringPos] == ' ')
		{
			stringPos++;
		}
		paramPos++;
	}
	while (format[formatPos] == 'z') formatPos++;
	return format[formatPos];
}

/*public OnVehicleMod(vehicleid, componentid)
{
    new house[256];
	for(new i=0; i<MAX_HOUSES; i++)
	{
	    format(house, sizeof(house), "Houses/houseid%d",i);
	    if(!dini_Isset(house, "CarModel")) continue;
	    if(
	}
	return 1;
}*/
Reply
#2

its very simple here is the link
its like making a message just it stays there forever
https://sampwiki.blast.hk/wiki/Create3DTextLabel
Reply
#3

Quote:
Originally Posted by DarkLored
Посмотреть сообщение
its very simple here is the link
its like making a message just it stays there forever
https://sampwiki.blast.hk/wiki/Create3DTextLabel
Is it really that easy?
Код:
But how would I incorporate the correct information into the text (owner, renter, cost,etc.) and keep it updated?
NVM that, but how would I pick out information that the script uses like the owner,renter,etc.?

This is some text from a different script, but im confused how it works...
Код:
format(labelstring,sizeof(labelstring),""COL_YELLOW"[ Name ]: "COL_WHITE"%s\n"COL_GREEN"[ Owner ]: "#COL_WHITE#"Yes\n"COL_PURPLE" [ Level ] : %i\n"COL_GREEN"[ Price ]: "#COL_LIME#"%i\n[ Owner ]: %s",HouseInfo[i][Name],HouseInfo[i][Level],HouseInfo[i][Price],pname);
OH I think I get it...

I lied, I'm stuck :/

Код:
C:\Users\Aerotactics' PC\Desktop\ALSRP\filterscripts\aHouse.pwn(232) : warning 213: tag mismatch
C:\Users\Aerotactics' PC\Desktop\ALSRP\filterscripts\aHouse.pwn(233) : error 017: undefined symbol "labelstring"
C:\Users\Aerotactics' PC\Desktop\ALSRP\filterscripts\aHouse.pwn(233) : error 017: undefined symbol "labelstring"
C:\Users\Aerotactics' PC\Desktop\ALSRP\filterscripts\aHouse.pwn(233) : error 001: expected token: "-string end-", but found "-identifier-"
C:\Users\Aerotactics' PC\Desktop\ALSRP\filterscripts\aHouse.pwn(233) : fatal error 107: too many error messages on one line
The script (I have no idea what Im doing):
Код:
AddHouse(houseid, Float:iconX, Float:iconY, Float:iconZ, Float:interiorX, Float:interiorY, Float:interiorZ, Costa, Sella, Interiora, virtualworld)
{
	new house[256];
	format(house, sizeof(house), "Houses/houseid%d",houseid);
	if(!dini_Exists(house))
	{
		dini_Create(house);
		format(hInfo[houseid][Name], 24, "ForSale");
		dini_Set(house, "Name", "ForSale");
		format(hInfo[houseid][Renter], 24, "ForRent");
		dini_Set(house, "Renter", "ForRent");
		hInfo[houseid][Rentable] = 0;
		dini_IntSet(house, "Rentable", 0);
		hInfo[houseid][Rentcost] = 0;
		dini_IntSet(house, "Rentcost", 0);
		hInfo[houseid][Cost] = Costa;
		dini_IntSet(house, "Cost", Costa);
		hInfo[houseid][Sell] = Sella;
		dini_IntSet(house, "Sell", Sella);
		hInfo[houseid][Interior] = Interiora;
		dini_IntSet(house, "Interior", Interiora);
		dini_IntSet(house, "Virtualworld", virtualworld);
		hInfo[houseid][Virtualworld] = virtualworld;
		hInfo[houseid][Locked] = 1;
		dini_IntSet(house, "Locked", 1);
		hInfo[houseid][InteriorX] = interiorX;
		hInfo[houseid][InteriorY] = interiorY;
		hInfo[houseid][InteriorZ] = interiorZ;
		dini_FloatSet(house, "X", interiorX);
		dini_FloatSet(house, "Y", interiorY);
		dini_FloatSet(house, "Z", interiorZ);
		dini_IntSet(house, "RentPay", 0);
		dini_IntSet(house, "RentGet", 0);
		cInfo[houseid][HouseCar] = 429;
		dini_IntSet(house, "HouseCar", 0);
		cInfo[houseid][CarModel] = 429;
		dini_IntSet(house, "CarModel", 0);
		cInfo[houseid][CarX] = 0;
		cInfo[houseid][CarY] = 0;
		cInfo[houseid][CarZ] = 0;
		dini_FloatSet(house, "CarX", 0);
		dini_FloatSet(house, "CarY", 0);
		dini_FloatSet(house, "CarZ", 0);
		cInfo[houseid][CarColor1] = 0;
		cInfo[houseid][CarColor2] = 0;
		dini_IntSet(house, "CarColor1", 0);
		dini_IntSet(house, "CarColor2", 0);
		cInfo[houseid][GotCar] = 0;
		print("-");
		print("--------------House Created--------------");
		printf("- Houseid: %d", houseid);
		printf("- Buy Cost: %d", Costa);
		printf("- Sell Cost: %d", Sella);
		printf("- Interior: %d", Interiora);
		printf("- VirtualWorld: %d", virtualworld);
		print("-----------------------------------------");
		print("-");
	}
	else
	{
	    format(hInfo[houseid][Name], 24, dini_Get(house, "Name"));
	    format(hInfo[houseid][Renter], 24, dini_Get(house, "Renter"));
		hInfo[houseid][Rentable] = dini_Int(house, "Rentable");
		hInfo[houseid][Rentcost] = dini_Int(house, "Rentcost");
	    hInfo[houseid][Cost] = dini_Int(house, "Cost");
	    hInfo[houseid][Sell] = dini_Int(house, "Sell");
	    hInfo[houseid][Interior] = dini_Int(house, "Interior");
	    hInfo[houseid][Locked] = dini_Int(house, "Locked");
	    hInfo[houseid][InteriorX] = dini_Float(house, "X");
	    hInfo[houseid][InteriorY] = dini_Float(house, "Y");
		hInfo[houseid][InteriorZ] = dini_Float(house, "Z");
		hInfo[houseid][Virtualworld] = dini_Int(house, "Virtualworld");
	}
    hInfo[houseid][iconx]=iconX;
	hInfo[houseid][icony]=iconY;
	hInfo[houseid][iconz]=iconZ;
	format(house, sizeof(house), "Houses/houseid%d",houseid);
	if(strcmp(hInfo[houseid][Name],"ForSale",true)==0)
	{
		HousePickup[houseid] = CreatePickup(1273, 23, iconX, iconY, iconZ);//not bought
		HLabel=Create3DTextLabel("_", 0x008080FF, iconX, iconY, iconZ, 40.0, 0, 0);//232
		format(labelstring,sizeof(labelstring),""c_y"[ Owner ]: "c_w"%s\n"c_y"[ Price ]: "c_w"%i",hInfo[houseid][Name],hInfo[houseid][Cost]);//233
  		Update3DTextLabelText(HLabel,0xFF0000FF,labelstring);
	}
	else
	{
	    //\n[ Renter ]: %s\n"c_y"[ Rent Cost ]: "c_w"$%i per hour
		HousePickup[houseid] = CreatePickup(1272,23, iconX, iconY, iconZ);//bought
	}
}
Reply
#4

Bump
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)