[AYUDA] Poner limitante al comprar casas
#1

Hola a todos, como dice en el titulo necesito poner una limitante al intentar comprar otra casa, he buscado otros fs y estan en ingles y estan muy buenos solo que viene con muchas lineas de comandos, me gustan los otros pero no lo puedo agregar al gm, y el que tngo en estos momentos es bastante simple y ya lo tngo agregado al gm solo que quiero ponerle una limitante al comprar una segunda casa, "SOY NUEVO EN PAWNO Y NO SE ABSOLUTAMENTE NADA", Diganme si hay una solucion o hay algun foro para esto, ya busque en todos lados pero no se si exista, aqui les dejo el codigo por si alguien lo quiere ver:

Код:
#include <a_samp>
#include <dini>
#include <streamer>
#include <sscanf2>

//|0 = Desactivar | 1 = Activar
#define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
#define HMESSAGES 1 //Activar casa comprar/vender mensajes.
#define DABOX 9164 // Dialog id (cambiar opcional).
#define MAX_HOUSES 200 // Maximo de casas

#define COLOR_BLUE 0x1C10EFFF
#define COLOR_RED 0xC93639FF

new hfile[256];
new idfile[256];
new ufile[256];
new HEnterCP[MAX_HOUSES];
new HExitCP[MAX_HOUSES];
new Text3D:HLabel[MAX_HOUSES];
new HMarker[MAX_HOUSES];

public OnFilterScriptInit()
{
	SetTimer("UpdateHouses", 15000, 1);
	for(new i=0; i<TotalHouses(); i++)
	{
		DisableInteriorEnterExits();
		format(hfile, sizeof(hfile), "/Casas/%d.ini", i);
		new Float:ECPX; ECPX = dini_Float(hfile, "ECPX");
		new Float:ECPY; ECPY = dini_Float(hfile, "ECPY");
		new Float:ECPZ; ECPZ = dini_Float(hfile, "ECPZ");
		new Float:ICPX; ICPX = dini_Float(hfile, "ICPX");
		new Float:ICPY; ICPY = dini_Float(hfile, "ICPY");
		new Float:ICPZ; ICPZ = dini_Float(hfile, "ICPZ");
		new hname[256]; hname = dini_Get(hfile, "Nombre");
		new hprice; hprice = dini_Int(hfile, "Precio");
		new howner[256]; howner = dini_Get(hfile, "Dueсo");
		new hworld; hworld = dini_Int(hfile, "Mundo");
		new str[250]; format(str, sizeof(str), "{00FF00}Nombre: {FFFFFF}%s\n{00FF00}Precio: {FFFFFF}$%d\n{00FF00}Dueсo: {FFFFFF}%s", hname, hprice, howner);
		if(dini_Int(hfile, "CPSet") == 1) {
			HEnterCP[i] = CreateDynamicCP(ECPX, ECPY, ECPZ, 1, -1, -1, -1, 25);
			HExitCP[i] = CreateDynamicCP(ICPX, ICPY, ICPZ, 1, hworld, -1, -1, 25);
			HLabel[i] = CreateDynamic3DTextLabel(str, COLOR_BLUE, ECPX, ECPY, ECPZ+1, 40, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 40.0);
			HMarker[i] = CreateDynamicMapIcon(ECPX, ECPY, ECPZ, 31, 0, -1, -1, -1, 45);
		}
	}
	return 1;
}

public OnFilterScriptExit()
{
	DestroyAllDynamicCPs();
	DestroyAllDynamic3DTextLabels();
	DestroyAllDynamicMapIcons();
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(ccrear,6, cmdtext);
dcmd(ceditar,7, cmdtext);
dcmd(cdarcp,6, cmdtext);
dcmd(cdarentpos,10, cmdtext);
dcmd(cdarsalpos,10, cmdtext);
dcmd(cdarintcp,9, cmdtext);
dcmd(cabrir,6, cmdtext);
dcmd(ccancelar,9, cmdtext);
dcmd(ccmds,5, cmdtext);
dcmd(cdarmv,6, cmdtext);
dcmd(cdarnombre,10, cmdtext);
dcmd(cdarprecio,10, cmdtext);
dcmd(cdebug,6, cmdtext);
dcmd(cir,3, cmdtext);
dcmd(cterminar,9, cmdtext);
dcmd(cborrar,7, cmdtext);
dcmd(cinfo,5, cmdtext);
return 1;
}
dcmd_ccrear(playerid, params[]) {
#pragma unused params
    if (IsPlayerAdmin(playerid))
	{
	format(idfile, sizeof(idfile), "/Casas/ids.ini");
	if(IsEditing(playerid) == 1) return SendClientMessage(playerid, COLOR_RED, "Ya estas editando una casa!");
 	if(!dini_Exists(idfile)) dini_Create(idfile), dini_IntSet(idfile, "ID", 0);
	else dini_IntSet(idfile, "ID", dini_Int(idfile, "ID")+1);
	new str[128];
	format(hfile, sizeof(hfile), "/Casas/%d.ini", dini_Int(idfile, "ID"));

	dini_Create(hfile);
	SetPVarInt(playerid, "EditID", dini_Int(idfile, "ID"));
	SetPVarInt(playerid, "Editing", 1);
	format(str, sizeof(str), "Ahora estas editando una casa [ID:%d]", dini_Int(idfile, "ID"));
	SendClientMessage(playerid, COLOR_BLUE, str);
	ShowPlayerDialog(playerid, DABOX, DIALOG_STYLE_LIST, "Editar Casa | Menu", "Checkpoint Entrada\nCheckpoint Salida\nDar coordenadas de la entrada\nDar coordenadas de la salida\nDar nombre a la casa\nDar precio a la casa\nTeleport\nDar mundo virtual", "Ok", "Cancelar");
	}else return SendClientMessage(playerid, 0xFFFFFFFF, "Comando solo para admins RCON!");
    return 1;
    }
dcmd_ceditar(playerid, params[]) {
#pragma unused params
    if (IsPlayerAdmin(playerid))
	{
	if(IsEditing(playerid) == 0) return SendClientMessage(playerid, COLOR_RED, "Ya estas editando una casa!");
	ShowPlayerDialog(playerid, DABOX, DIALOG_STYLE_LIST, "Editar Casa | Menu", "Checkpoint Entrada\nCheckpoint Salida\nDar coordenadas de la entrada\nDar coordenadas de la salida\nDar nombre a la casa\nDar precio a la casa\nTeleport\nDar mundo virtual", "Ok", "Cancelar");
	}else return SendClientMessage(playerid, 0xFFFFFFFF, "Comando solo para admins RCON!");
    return 1;
    }
dcmd_cdarcp(playerid, params[]) {
#pragma unused params
    if (IsPlayerAdmin(playerid))
	{
	format(hfile, sizeof(hfile), "/Casas/%d.ini", GetPlayerHouseID(playerid));
	if(IsEditing(playerid) == 0) return SendClientMessage(playerid, COLOR_RED, "No estas editando una casa!");

	new Float:X, Float:Y, Float:Z;
	GetPlayerPos(playerid, X, Y, Z);

	dini_FloatSet(hfile, "ECPX", X);
	dini_FloatSet(hfile, "ECPY", Y);
	dini_FloatSet(hfile, "ECPZ", Z);
	dini_IntSet(hfile, "CPSet", 1);

	DestroyDynamicMapIcon(HMarker[GetPlayerHouseID(playerid)]);
	DestroyDynamicCP(HEnterCP[GetPlayerHouseID(playerid)]);
	HEnterCP[GetPlayerHouseID(playerid)] = CreateDynamicCP(X, Y, Z, 1, -1, -1, -1, 25);
	HMarker[GetPlayerHouseID(playerid)] = CreateDynamicMapIcon(X, Y, Z, 31, 0, -1, -1, -1, 45);

	new str[128];
	format(str, sizeof(str), "Casa [ID:%d]: Checkpoint entrada - X: %f, Y: %f, Z: %f.", GetPlayerHouseID(playerid), X, Y, Z);
	ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Editar Casa - Entrada CP", str, "Ok", "Cancelar");
	SendClientMessage(playerid, COLOR_BLUE, str);
	}else return SendClientMessage(playerid, 0xFFFFFFFF, "Comando solo para admins RCON!");
    return 1;
    }
dcmd_cdarentpos(playerid, params[]) {
#pragma unused params
    if (IsPlayerAdmin(playerid))
	{
	format(hfile, sizeof(hfile), "/Casas/%d.ini", GetPlayerHouseID(playerid));
	if(IsEditing(playerid) == 0) return SendClientMessage(playerid, COLOR_RED, "No estas editando una casa!");

	new Float:X, Float:Y, Float:Z;
	GetPlayerPos(playerid, X, Y, Z);

	dini_FloatSet(hfile, "ENTX", X);
	dini_FloatSet(hfile, "ENTY", Y);
	dini_FloatSet(hfile, "ENTZ", Z);
	dini_IntSet(hfile, "Interior", GetPlayerInterior(playerid));

	new str[128];
	format(str, sizeof(str), "Casa [ID:%d]: Posicion de entrada - X: %f, Y: %f, Z: %f [Interior:%d]", GetPlayerHouseID(playerid), X, Y, Z, GetPlayerInterior(playerid));
	ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Editar Casa - Posicion de entrada", str, "Ok", "Cancelar");
	SendClientMessage(playerid, COLOR_BLUE, str);
	}else return SendClientMessage(playerid, 0xFFFFFFFF, "Comando solo para admins RCON!");
    return 1;
    }
dcmd_cdarsalpos(playerid, params[]) {
#pragma unused params
    if (IsPlayerAdmin(playerid))
	{
	format(hfile, sizeof(hfile), "/Casas/%d.ini", GetPlayerHouseID(playerid));
	if(IsEditing(playerid) == 0) return SendClientMessage(playerid, COLOR_RED, "No estas editando una casa!");

	new Float:X, Float:Y, Float:Z;
	GetPlayerPos(playerid, X, Y, Z);

	dini_FloatSet(hfile, "EXITX", X);
	dini_FloatSet(hfile, "EXITY", Y);
	dini_FloatSet(hfile, "EXITZ", Z);
	dini_IntSet(hfile, "Interior2", GetPlayerInterior(playerid));

	new str[128];
	format(str, sizeof(str), "Casa [ID:%d]: Posicion de salida - X: %f, Y: %f, Z: %f.", GetPlayerHouseID(playerid), X, Y, Z);
	ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Editar Casa - Posicion de salida", str, "Ok", "Cancelar");
	SendClientMessage(playerid, COLOR_BLUE, str);
	}else return SendClientMessage(playerid, 0xFFFFFFFF, "Comando solo para admins RCON!");
    return 1;
    }
dcmd_cdarintcp(playerid, params[]) {
#pragma unused params
    if (IsPlayerAdmin(playerid))
	{
	format(hfile, sizeof(hfile), "/Casas/%d.ini", GetPlayerHouseID(playerid));
	if(IsEditing(playerid) == 0) return SendClientMessage(playerid, COLOR_RED, "No estas editando una casa!");

	new Float:X, Float:Y, Float:Z;
	GetPlayerPos(playerid, X, Y, Z);

	dini_FloatSet(hfile, "ICPX", X);
	dini_FloatSet(hfile, "ICPY", Y);
	dini_FloatSet(hfile, "ICPZ", Z);
	new hworld; hworld = dini_Int(hfile, "Mundo");

	DestroyDynamicCP(HExitCP[GetPlayerHouseID(playerid)]);
	HExitCP[GetPlayerHouseID(playerid)] = CreateDynamicCP(X, Y, Z, 1, hworld, -1, -1, 25);

	new str[128];
	format(str, sizeof(str), "Casa [ID:%d] Checkpoint int. salida - X: %f, Y: %f, Z: %f.", GetPlayerHouseID(playerid), X, Y, Z);
	ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Editar Casa - Salir CP", str, "Ok", "Cancelar");
	SendClientMessage(playerid, COLOR_BLUE, str);
	}else return SendClientMessage(playerid, 0xFFFFFFFF, "Comando solo para admins RCON!");
    return 1;
    }
dcmd_cdarnombre(playerid, params[]) {
    if (IsPlayerAdmin(playerid))
	{
	format(hfile, sizeof(hfile), "/Casas/%d.ini", GetPlayerHouseID(playerid));
	if(IsEditing(playerid) == 0) return SendClientMessage(playerid, COLOR_RED, "No estas editando una casa!");
	if(!strlen(params)) return SendClientMessage(playerid, COLOR_RED, "USA: '/cdarnombre <nombre>'");

	new hname[128];
	sscanf(params, "s", hname);
	dini_Set(hfile, "Nombre", hname);

	new Float:ECPX; ECPX = dini_Float(hfile, "ECPX");
	new Float:ECPY; ECPY = dini_Float(hfile, "ECPY");
	new Float:ECPZ; ECPZ = dini_Float(hfile, "ECPZ");

	new hprice; hprice = dini_Int(hfile, "Precio");
	new howner[256]; howner = dini_Get(hfile, "Dueсo");
	new str[250]; format(str, sizeof(str), "{00FF00}Nombre: {FFFFFF}%s\n{00FF00}Precio: {FFFFFF}$%d\n{00FF00}Dueсo: {FFFFFF}%s", hname, hprice, howner);

	DestroyDynamic3DTextLabel(HLabel[GetPlayerHouseID(playerid)]);
	HLabel[GetPlayerHouseID(playerid)] = CreateDynamic3DTextLabel(str, COLOR_BLUE, ECPX, ECPY, ECPZ+1, 40, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 40.0);

	format(str, sizeof(str), "Casa [ID:%d]: Ahora su nombre es '%s'!", GetPlayerHouseID(playerid), hname);
	ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Editar Casa - Dar nombre", str, "Ok", "Cancelar");
	SendClientMessage(playerid, COLOR_BLUE, str);
	}else return SendClientMessage(playerid, 0xFFFFFFFF, "Comando solo para admins RCON!");
    return 1;
    }
dcmd_cdarmv(playerid, params[]) {
    if (IsPlayerAdmin(playerid))
	{
	format(hfile, sizeof(hfile), "/Casas/%d.ini", GetPlayerHouseID(playerid));
	if(IsEditing(playerid) == 0) return SendClientMessage(playerid, COLOR_RED, "No estas editando una casa!");
	if(!strlen(params)) return SendClientMessage(playerid, COLOR_RED, "USA: '/cdarmv <mundo virtual id>'");

	new hworld;
	sscanf(params, "i", hworld);
	dini_IntSet(hfile, "Mundo", hworld);

	new str[128];
	format(str, sizeof(str), "Casa [ID:%d]: Mundo virtual ahora es de: '%d'!", GetPlayerHouseID(playerid), hworld);
	ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Editar Casa - Mundo virtual", str, "Ok", "Cancelar");
	SendClientMessage(playerid, COLOR_BLUE, str);
	}else return SendClientMessage(playerid, 0xFFFFFFFF, "Comando solo para admins RCON!");
    return 1;
    }
dcmd_cdarprecio(playerid, params[]) {
    if (IsPlayerAdmin(playerid))
	{
	format(hfile, sizeof(hfile), "/Casas/%d.ini", GetPlayerHouseID(playerid));
	if(IsEditing(playerid) == 0) return SendClientMessage(playerid, COLOR_RED, "No estas editando una casa!");
	if(!strlen(params)) return SendClientMessage(playerid, COLOR_RED, "USA: '/cdarprecio <precio>'");

	new hprice;
	sscanf(params, "i", hprice);
	dini_IntSet(hfile, "Precio", hprice);

	new Float:ECPX; ECPX = dini_Float(hfile, "ECPX");
	new Float:ECPY; ECPY = dini_Float(hfile, "ECPY");
	new Float:ECPZ; ECPZ = dini_Float(hfile, "ECPZ");

	new howner[256]; howner = dini_Get(hfile, "Dueсo");
	new hname[256]; hname = dini_Get(hfile, "Nombre");
	new str[250]; format(str, sizeof(str), "{00FF00}Nombre: {FFFFFF}%s\n{00FF00}Precio: {FFFFFF}$%d\n{00FF00}Dueсo: {FFFFFF}%s", hname, hprice, howner);

	DestroyDynamic3DTextLabel(HLabel[GetPlayerHouseID(playerid)]);
	HLabel[GetPlayerHouseID(playerid)] = CreateDynamic3DTextLabel(str, COLOR_BLUE, ECPX, ECPY, ECPZ+1, 40, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 40.0);

	format(str, sizeof(str), "Casa [ID:%d]: Ahora el precio es de: '%d'!", GetPlayerHouseID(playerid), hprice);
	ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Editar Casa - Precio", str, "Ok", "Cancelar");
	SendClientMessage(playerid, COLOR_BLUE, str);
	}else return SendClientMessage(playerid, 0xFFFFFFFF, "Comando solo para admins RCON!");
    return 1;
    }
dcmd_ccancelar(playerid, params[]) {
#pragma unused params
    if (IsPlayerAdmin(playerid))
	{
	format(idfile, sizeof(idfile), "/Casas/ids.ini");
	format(hfile, sizeof(hfile), "/Casas/%d.ini", GetPlayerHouseID(playerid));
	if(IsEditing(playerid) == 0) return SendClientMessage(playerid, COLOR_RED, "No estas editando una casa ahora!");

	DestroyDynamicCP(HExitCP[GetPlayerHouseID(playerid)]);
	DestroyDynamicCP(HEnterCP[GetPlayerHouseID(playerid)]);
	DestroyDynamic3DTextLabel(HLabel[GetPlayerHouseID(playerid)]);
	DestroyDynamicMapIcon(HMarker[GetPlayerHouseID(playerid)]);

	dini_Remove(hfile);
	dini_IntSet(idfile, "ID", dini_Int(idfile, "ID")-1);
	SetPVarInt(playerid, "EditID", -1);
	SetPVarInt(playerid, "Editing", 0);
	SendClientMessage(playerid, COLOR_BLUE, "Has cancelado la casa que has estado editando!");
	}else return SendClientMessage(playerid, 0xFFFFFFFF, "Comando solo para admins RCON!");
    return 1;
    }
dcmd_cterminar(playerid, params[]) {
#pragma unused params
    if (IsPlayerAdmin(playerid))
	{
	if(IsEditing(playerid) == 0) return SendClientMessage(playerid, COLOR_RED, "No estas editando una casa ahora!");

	new str[50];
	format(str, sizeof(str), "Has terminado de editar la casa [ID:%d]!", GetPlayerHouseID(playerid));
	SendClientMessage(playerid, COLOR_BLUE, str);
	SetPVarInt(playerid, "EditID", -1);
	SetPVarInt(playerid, "Editing", 0);
    dini_IntSet(hfile, "CerrarCasa", 1);
	}else return SendClientMessage(playerid, 0xFFFFFFFF, "Comando solo para admins RCON!");
    return 1;
    }
dcmd_cabrir(playerid, params[]) {
    if (IsPlayerAdmin(playerid))
	{
	if(IsEditing(playerid) == 1) return SendClientMessage(playerid, COLOR_RED, "Ya estas editando una casa!");
 	new hid;
	sscanf(params, "i", hid);
	format(hfile, sizeof(hfile), "/Casas/%d.ini", hid);
	if(!strlen(params)) return SendClientMessage(playerid, COLOR_RED, "USA: '/cabrir <casa id>'");
	if(!dini_Exists(hfile)) return SendClientMessage(playerid, COLOR_RED, "ERROR: Esa id de casa no existe!");

	SetPVarInt(playerid, "EditID", hid);
	SetPVarInt(playerid, "Editing", 1);
	new str[50];
	format(str, sizeof(str), "Ahora estas editando la casa [ID:%d]", hid);
	SendClientMessage(playerid, COLOR_BLUE, str);
	ShowPlayerDialog(playerid, DABOX, DIALOG_STYLE_LIST, "Editar Casa | Menu", "Checkpoint Entrada\nCheckpoint Salida\nDar coordenadas de la entrada\nDar coordenadas de la salida\nDar nombre a la casa\nDar precio a la casa\nTeleport\nDar mundo virtual", "Ok", "Cancelar");
	}else return SendClientMessage(playerid, 0xFFFFFFFF, "Comando solo para admins RCON!");
    return 1;
    }
dcmd_cir(playerid, params[]) {
    if (IsPlayerAdmin(playerid))
	{
	format(hfile, sizeof(hfile), "/Casas/%d.ini", GetPlayerHouseID(playerid));
	if(IsEditing(playerid) == 0) return SendClientMessage(playerid, COLOR_RED, "No estas editando una casa!");
	if(!strlen(params)) return SendClientMessage(playerid, COLOR_RED, "USA: '/cir [entrar/salir]'");

	if(strcmp(params,"entrar",true) == 0) {
		new Float:X; X = dini_Float(hfile, "ENTX");
		new Float:Y; Y = dini_Float(hfile, "ENTY");
		new Float:Z; Z = dini_Float(hfile, "ENTZ");
		new Interior; Interior = dini_Int(hfile, "Interior");
		new hworld; hworld = dini_Int(hfile, "Mundo");
		SetPlayerAt(playerid, X, Y, Z, Interior, hworld);
		SendClientMessage(playerid, COLOR_BLUE, "Has sido teleportado a las coordenadas de la entrada.");
	}
	else if(strcmp(params, "salir", true) == 0) {
	    new Float:X; X = dini_Float(hfile, "EXITX");
	    new Float:Y; Y = dini_Float(hfile, "EXITY");
	    new Float:Z; Z = dini_Float(hfile, "EXITZ");
		SetPlayerAt(playerid, X, Y, Z, 0, 0);
		SendClientMessage(playerid, COLOR_BLUE, "Has sido teleportado a las coordenadas de la salida.");
	}
	else {
		SendClientMessage(playerid, COLOR_BLUE, "USA: '/cir [entrar/salir]'");
	}
	}else return SendClientMessage(playerid, 0xFFFFFFFF, "Comando solo para admins RCON!");
    return 1;
    }
dcmd_cborrar(playerid, params[]) {
    if (IsPlayerAdmin(playerid))
	{
	new hid;
	sscanf(params, "i", hid);
	format(hfile, sizeof(hfile), "/Casas/%d.ini", hid);
	if(!dini_Exists(hfile)) return SendClientMessage(playerid, COLOR_RED, "ERROR: Esa id de casa no existe!");
	if(!strlen(params)) return SendClientMessage(playerid, COLOR_RED, "USA: '/cborrar <casa id>'");
 	if(hid == GetPlayerHouseID(playerid))
	{
		SetPVarInt(playerid, "EditID", hid);
		SetPVarInt(playerid, "Editing", 1);
	}
	new str[50];
	format(str, sizeof(str), "Has borrado la casa [ID:%d]", hid);
	SendClientMessage(playerid, COLOR_BLUE, str);
	ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Editar Casa - Borrar", str, "Ok", "Cancelar");
	}else return SendClientMessage(playerid, 0xFFFFFFFF, "Comando solo para admins RCON!");
    return 1;
    }
dcmd_cdebug(playerid, params[]) {
    if (IsPlayerAdmin(playerid))
	{
	new hid;
	sscanf(params, "i", hid);
	if(!strlen(params)) return SendClientMessage(playerid, COLOR_RED, "Debes entrar a la ID de la casa.");
 	format(idfile, sizeof(idfile), "/Casas/ids.ini");
	format(hfile, sizeof(hfile), "/Casas/%d.ini", GetPlayerHouseID(playerid));
	new id; id = dini_Int(idfile, "ID");
	new thouses; thouses = TotalHouses();
	new str[128];
	format(str, sizeof(str), "Archivo ID: %d\nCasas Totales: %d\n", id, thouses);
	ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Casa Debug", str, "Ok", "Cancelar");
	}else return SendClientMessage(playerid, 0xFFFFFFFF, "Comando solo para admins RCON!");
    return 1;
    }
dcmd_cinfo(playerid, params[]) {
    if (IsPlayerAdmin(playerid))
	{
	new hid;
	sscanf(params, "i", hid);
	format(hfile, sizeof(hfile), "/Casas/%d.ini", hid);
	if(!strlen(params)) return SendClientMessage(playerid, COLOR_RED, "Debes entrar a la ID de la casa.");
	if(!dini_Exists(hfile)) return SendClientMessage(playerid, COLOR_RED, "Esta ID de casa no existe!");
 	new hname[256]; hname = dini_Get(hfile, "Nombre");
	new hprice; hprice = dini_Int(hfile, "Precio");
	new Interior; Interior = dini_Int(hfile, "Interior");
	new howner[256]; howner = dini_Get(hfile, "Dueсo");
	new hworld; hworld = dini_Int(hfile, "Mundo");
	new hccasa; hccasa = dini_Int(hfile, "CerrarCasa");
	new hyccasa; hyccasa = dini_Int(hfile, "YaComproCasa");
	new str[128];
	format(str, sizeof(str), "Nombre de casa: %s\nDueсo: %s\nPrecio: $%d\nInterior: %d\nMundo Virtual: %d\nCasa Cerrada (1=si;0=no): %d\nCasa Comprada: %d", hname, howner, hprice, Interior, hworld, hccasa, hyccasa);
	ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Info de la casa", str, "Ok", "Cancelar");
	}else return SendClientMessage(playerid, 0xFFFFFFFF, "Comando solo para admins RCON!");
    return 1;
    }
dcmd_ccmds(playerid, params[]) {
#pragma unused params
    if (IsPlayerAdmin(playerid))
	{
	ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Comandos para crear una casa", "/cborrar <casa id>\n/cir <entrar/salir>\n/cabrir <casa id>\n/cterminar\n/ccancelar\n/cdarmv\n/cdarprecio\n/cdarnombre\n/cdarintcp\n/cdarcp\n/cdarsalpos\n/cdarentpos\n/ceditar\n/ccrear\n/cdebug\n/cinfo <casa id>\n", "Ok", "Cancelar");
	}else return SendClientMessage(playerid, 0xFFFFFFFF, "Comando solo para admins RCON!");
    return 1;
    }

public OnPlayerConnect(playerid)
{
	format(ufile, sizeof(ufile), "/Casas/Usuarios/%s.ini", pName(playerid));
	if(!dini_Exists(ufile)) AddUser(playerid);
	return 1;
}

public OnPlayerSpawn(playerid)
{
	format(ufile, sizeof(ufile), "/Casas/Usuarios/%s.ini", pName(playerid));
	if(dini_Int(ufile, "SpawnOpt") == 1)
	{
		format(hfile, sizeof(hfile), "/Casas/%d.ini", dini_Int(ufile, "SpawnID"));
		new howner[256]; howner = dini_Get(hfile, "Dueсo");
		new nigname[MAX_PLAYER_NAME]; nigname = pName(playerid);
		if(strfind(howner, nigname, true) == -1)
		{
			dini_IntSet(ufile, "SpawnOpt", 0);
			dini_IntSet(ufile, "SpawnID", -1);
			ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Casa - Spawn", "No spawnearas en esta casa!", "Ok", "Cancelar");
			return 1;
		}
		SetPVarInt(playerid, "SpawnTimer", SetTimerEx("SetHouseSpawn", 1250, false, "i", playerid));
	}
	return 1;
}

public OnPlayerEnterDynamicCP(playerid, checkpointid)
{
	for(new x=0; x<TotalHouses(); x++)
	{
		if(checkpointid == HEnterCP[x])
		{
			if(IsEditing(playerid) == 1) return 1;
			SetPVarInt(playerid, "EntID", x);
			ShowPlayerDialog(playerid, DABOX+2, DIALOG_STYLE_LIST, "Menu de casa", "Entrar a la casa\nComprar Casa\nCerrar Casa\nAbrir Casa\nVender la casa", "Ok", "Cancelar"); // Quitado el lugar de spawn
		}
		else if(checkpointid == HExitCP[x])
		{
			if(IsEditing(playerid) == 1) return 1;
			format(hfile, sizeof(hfile), "/Casas/%d.ini", x);
			new Float:EXITX; EXITX = dini_Float(hfile, "EXITX");
			new Float:EXITY; EXITY = dini_Float(hfile, "EXITY");
			new Float:EXITZ; EXITZ = dini_Float(hfile, "EXITZ");
			new Interior2; Interior2 = dini_Int(hfile, "Interior2");
			SetPlayerAt(playerid, EXITX, EXITY, EXITZ, Interior2, 0);
			SetPVarInt(playerid, "EntID", -1);
		}
	}
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
  	if(dialogid == DABOX)
	{
		if(response)
		{
			  if(IsEditing(playerid) == 0) return SendClientMessage(playerid, COLOR_RED, "No estas editando una casa!");
			  switch(listitem)
		      {
  					case 0:
  					{
						format(hfile, sizeof(hfile), "/Casas/%d.ini", GetPlayerHouseID(playerid));
						new Float:X, Float:Y, Float:Z;
						GetPlayerPos(playerid, X, Y, Z);

						dini_FloatSet(hfile, "ECPX", X);
						dini_FloatSet(hfile, "ECPY", Y);
						dini_FloatSet(hfile, "ECPZ", Z);
						dini_IntSet(hfile, "CPSet", 1);

						DestroyDynamicMapIcon(HMarker[GetPlayerHouseID(playerid)]);
						DestroyDynamicCP(HEnterCP[GetPlayerHouseID(playerid)]);
						HEnterCP[GetPlayerHouseID(playerid)] = CreateDynamicCP(X, Y, Z, 1, -1, -1, -1, 25);
						HMarker[GetPlayerHouseID(playerid)] = CreateDynamicMapIcon(X, Y, Z, 31, 0, -1, -1, -1, 45);

						new str[128];
						format(str, sizeof(str), "Casa [ID:%d]: Checkpoint de entrada: \n X: %f, Y: %f, Z: %f.", GetPlayerHouseID(playerid), X, Y, Z);
						ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Editar Casa - Checkpoint Entrada", str, "Ok", "Cancelar");
						SendClientMessage(playerid, COLOR_BLUE, str);
  					}
  					case 1:
  					{
						format(hfile, sizeof(hfile), "/Casas/%d.ini", GetPlayerHouseID(playerid));
						new Float:X, Float:Y, Float:Z;
						GetPlayerPos(playerid, X, Y, Z);

						dini_FloatSet(hfile, "ICPX", X);
						dini_FloatSet(hfile, "ICPY", Y);
						dini_FloatSet(hfile, "ICPZ", Z);
						new hworld; hworld = dini_Int(hfile, "Mundo");

						DestroyDynamicCP(HExitCP[GetPlayerHouseID(playerid)]);
						HExitCP[GetPlayerHouseID(playerid)] = CreateDynamicCP(X, Y, Z, 1, hworld, -1, -1, 25);

						new str[128];
						format(str, sizeof(str), "Casa [ID:%d]: Checkpoint de salida: \n X: %f, Y: %f, Z: %f.", GetPlayerHouseID(playerid), X, Y, Z);
						ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Editar Casa - Checkpoint Salida", str, "Ok", "Cancelar");
						SendClientMessage(playerid, COLOR_BLUE, str);
  					}
  					case 2:
  					{
						format(hfile, sizeof(hfile), "/Casas/%d.ini", GetPlayerHouseID(playerid));
						new Float:X, Float:Y, Float:Z;
						GetPlayerPos(playerid, X, Y, Z);

						dini_FloatSet(hfile, "ENTX", X);
						dini_FloatSet(hfile, "ENTY", Y);
						dini_FloatSet(hfile, "ENTZ", Z);
						dini_IntSet(hfile, "Interior", GetPlayerInterior(playerid));

						new str[128];
						format(str, sizeof(str), "Casa [ID:%d]: Posicion de entrada: \n X: %f, Y: %f, Z: %f [Interior:%d]", GetPlayerHouseID(playerid), X, Y, Z, GetPlayerInterior(playerid));
						ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Editar Casa - Posicion de entrada", str, "Ok", "Cancelar");
						SendClientMessage(playerid, COLOR_BLUE, str);
  					}
  					case 3:
  					{
						format(hfile, sizeof(hfile), "/Casas/%d.ini", GetPlayerHouseID(playerid));
						new Float:X, Float:Y, Float:Z;
						GetPlayerPos(playerid, X, Y, Z);

						dini_FloatSet(hfile, "EXITX", X);
						dini_FloatSet(hfile, "EXITY", Y);
						dini_FloatSet(hfile, "EXITZ", Z);
						dini_IntSet(hfile, "Interior2", GetPlayerInterior(playerid));

						new str[128];
						format(str, sizeof(str), "Casa [ID:%d] Posicion de salida: \n X: %f, Y: %f, Z: %f.", GetPlayerHouseID(playerid), X, Y, Z);
						ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Editar Casa - Posicion de salida", str, "Ok", "Cancelar");
						SendClientMessage(playerid, COLOR_BLUE, str);
  					}
  					case 4:
  					{
			            ShowPlayerDialog(playerid, DABOX+1, DIALOG_STYLE_INPUT, "Editar Casa - Dar nombre a la casa", "Escribe a continuacion el nombre que quieres darle a la casa.", "Ok", "Cancelar");
  					}
  					case 5:
  					{
			            ShowPlayerDialog(playerid, DABOX+3, DIALOG_STYLE_INPUT, "Editar Casa - Dar precio a la casa", "Escribe a continuacion el precio que quieres darle a la casa.", "Ok", "Cancelar");
  					}
  					case 6:
  					{
						ShowPlayerDialog(playerid, DABOX+6, DIALOG_STYLE_LIST, "Casa - Teleport", "Tele para el CP de entrada\nTele para el CP de salida", "Ok", "Cancelar");
  					}
  					case 7:
  					{
			            ShowPlayerDialog(playerid, DABOX+7, DIALOG_STYLE_INPUT, "Editar Casa - Dar mundo virtual a la casa", "Escribe a continuacion el mundo virtual que quieres darle a la casa.", "Ok", "Cancelar");
					}
			  }
        }
        return 1;
    }
  	if(dialogid == DABOX+1)
	{
		if(response)
		{
			  if(IsEditing(playerid) == 0) return SendClientMessage(playerid, COLOR_RED, "No estas editando una casa!");
			  if(!strlen(inputtext)) return SendClientMessage(playerid, COLOR_RED, "ERROR: Debes insertar un nombre a la casa!");
			  {
					format(hfile, sizeof(hfile), "/Casas/%d.ini", GetPlayerHouseID(playerid));

					new aname[128];
					format(aname, sizeof(aname), "%s", inputtext);

					dini_Set(hfile, "Nombre", aname);

					new Float:ECPX; ECPX = dini_Float(hfile, "ECPX");
					new Float:ECPY; ECPY = dini_Float(hfile, "ECPY");
					new Float:ECPZ; ECPZ = dini_Float(hfile, "ECPZ");

					new hprice; hprice = dini_Int(hfile, "Precio");
					new howner[256]; howner = dini_Get(hfile, "Dueсo");
					new str[250]; format(str, sizeof(str), "{00FF00}Nombre: {FFFFFF}%s\n{00FF00}Precio: {FFFFFF}$%d\n{00FF00}Dueсo: {FFFFFF}%s", aname, hprice, howner);

					DestroyDynamic3DTextLabel(HLabel[GetPlayerHouseID(playerid)]);
					HLabel[GetPlayerHouseID(playerid)] = CreateDynamic3DTextLabel(str, COLOR_BLUE, ECPX, ECPY, ECPZ+1, 40, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 40.0);

					format(str, sizeof(str), "Casa [ID:%d]: El nombre ahora es '%s'!", GetPlayerHouseID(playerid), aname);
					ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Editar Casa - Dar nombre a la casa", str, "Ok", "Cancelar");
   			  }
        }
        return 1;
    }
  	if(dialogid == DABOX+2)
	{
		if(response)
		{
			  switch(listitem)
		      {
  					case 0:
  					{
                        format(hfile, sizeof(hfile), "/Casas/%d.ini", GetEntID(playerid));
                        new nigname[MAX_PLAYER_NAME]; nigname = pName(playerid);
                        new howner[256]; howner = dini_Get(hfile, "Dueсo");
			            ////if(strfind(howner, nigname, true) == -1) return ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Casa - Opciones", "No eres el dueсo de esta casa!", "Ok", "Cancelar");
  					    //new howner[256]; howner = dini_Get(hfile, "Dueсo");
						//new nigname[MAX_PLAYER_NAME]; nigname = pName(playerid);
 						if(dini_Int(hfile, "CerrarCasa") == 1 && strfind(howner, nigname, true) == -1)
 						{
		     				//ShowPlayerDialog(playerid, DABOX+5, DIALOG_STYLE_INPUT, "Casa - Contraseсa", "Escribe a continuacion la contraseсa para poder entrar a la casa.", "Ok", "Cancelar");
                            ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Casa - Cerrada", "{FFFFFF}La casa esta {FF0000}cerrada{FFFFFF}.", "Ok", "Cancelar");
                            return 1;
 						}
						new Float:ENTX; ENTX = dini_Float(hfile, "ENTX");
						new Float:ENTY; ENTY = dini_Float(hfile, "ENTY");
						new Float:ENTZ; ENTZ = dini_Float(hfile, "ENTZ");
						new Interior = dini_Int(hfile, "Interior");
						new hworld; hworld = dini_Int(hfile, "Mundo");
						SetPlayerAt(playerid, ENTX, ENTY, ENTZ, Interior, hworld);
  					}
  					case 1:
  					{
                        new nigname[MAX_PLAYER_NAME]; nigname = pName(playerid);
                        new howner[256]; howner = dini_Get(hfile, "Dueсo");
                        format(hfile, sizeof(hfile), "/Casas/%d.ini", GetEntID(playerid));
                        if(dini_Int(hfile, "YaComproCasa") == 1 && strfind(howner, nigname, true) == -1)
 						{
		     				//ShowPlayerDialog(playerid, DABOX+5, DIALOG_STYLE_INPUT, "Casa - Contraseсa", "Escribe a continuacion la contraseсa para poder entrar a la casa.", "Ok", "Cancelar");
                            ShowPlayerDialog(playerid, DABOX+2, DIALOG_STYLE_MSGBOX, "Casa - {FF0000}ERROR", "{FFFFFF}Ya eres dueсo de una casa!.", "Ok", "Cancelar");
                            return 1;
 						}
                        //new nigname[MAX_PLAYER_NAME]; nigname = pName(playerid);
                        //new howner[256]; howner = dini_Get(hfile, "Dueсo");
  					    new hprice; hprice = dini_Int(hfile, "Precio");
  					    //new howner[256]; howner = dini_Get(hfile, "Dueсo");
  					    new hname[256]; hname = dini_Get(hfile, "Nombre");
					    if(GetPlayerMoney(playerid) < hprice) return ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Casa - Comprar", "No tienes tanto dinero para comprar\nesta casa!", "Ok", "Cancelar");
						if(strfind(howner, nigname, true) != -1) return ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Casa - Comprar", "Ya has comprado esta casa", "Ok", "Cancelar");
						dini_Set(hfile, "Dueсo", pName(playerid));
						dini_IntSet(hfile, "YaComproCasa", 1);
						GivePlayerMoney(playerid, -hprice);
						PlayerPlaySound(playerid, 1058, 0, 0, 0);
						PlayerPlaySound(playerid, 1149, 0, 0, 0);
						ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Casa - Comprar", "Felicidades por comprar tu nueva casa!", "Ok", "Cancelar");
						#if HMESSAGES == 1
						//new str[128];
						//format(str, sizeof(str), "%s purchased the House '%s' [ID:%d] for $%d!", pName(playerid), hname, GetEntID(playerid), hprice);
						//SendClientMessageToAll(COLOR_BLUE, str);
                        printf("%s Compra la casa '%s' [ID:%d] por $%d!", pName(playerid), hname, GetEntID(playerid), hprice);
						#endif
  					}
  					case 2:
  					{
                        format(hfile, sizeof(hfile), "/Casas/%d.ini", GetEntID(playerid));
                        new nigname[MAX_PLAYER_NAME]; nigname = pName(playerid);
                        new howner[256]; howner = dini_Get(hfile, "Dueсo");
			            if(strfind(howner, nigname, true) == -1) return ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Casa - Opciones", "No eres el dueсo de esta casa!", "Ok", "Cancelar");
  					    //new howner[256]; howner = dini_Get(hfile, "Dueсo");
						//new nigname[MAX_PLAYER_NAME]; nigname = pName(playerid);
						//if(strfind(howner, nigname, true) == -1) return ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Casa - Opciones", "No eres el dueсo de esta casa!", "Ok", "Cancelar");
						//ShowPlayerDialog(playerid, DABOX+4, DIALOG_STYLE_INPUT, "Casa - Cerrar Casa", "Escribe a continuacion la contraseсa que quieres darle a la casa al entrar.", "Ok", "Cancelar");
                        ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Casa - Cerrar", "{FFFFFF}La casa ahora esta {FF0000}cerrada{FFFFFF}.", "Ok", "Cancelar");
                        dini_IntSet(hfile, "CerrarCasa", 1);
					}
					case 3:
  					{
                        format(hfile, sizeof(hfile), "/Casas/%d.ini", GetEntID(playerid));
                        new nigname[MAX_PLAYER_NAME]; nigname = pName(playerid);
                        new howner[256]; howner = dini_Get(hfile, "Dueсo");
			            if(strfind(howner, nigname, true) == -1) return ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Casa - Opciones", "No eres el dueсo de esta casa!", "Ok", "Cancelar");
  					    //new howner[256]; howner = dini_Get(hfile, "Dueсo");
						//new nigname[MAX_PLAYER_NAME]; nigname = pName(playerid);
						//if(strfind(howner, nigname, true) == -1) return ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Casa - Opciones", "No eres el dueсo de esta casa!", "Ok", "Cancelar");
						//ShowPlayerDialog(playerid, DABOX+4, DIALOG_STYLE_INPUT, "Casa - Cerrar Casa", "Escribe a continuacion la contraseсa que quieres darle a la casa al entrar.", "Ok", "Cancelar");
                        ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Casa - Cerrar", "{FFFFFF}La casa ahora esta {FF0000}abierta{FFFFFF}.", "Ok", "Cancelar");
                        dini_IntSet(hfile, "CerrarCasa", 0);
					}
  					case 4:
  					{
                        format(hfile, sizeof(hfile), "/Casas/%d.ini", GetEntID(playerid));
                        new nigname[MAX_PLAYER_NAME]; nigname = pName(playerid);
                        new howner[256]; howner = dini_Get(hfile, "Dueсo");
			            if(strfind(howner, nigname, true) == -1) return ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Casa - Opciones", "No eres el dueсo de esta casa!", "Ok", "Cancelar");
  					    //new howner[256]; howner = dini_Get(hfile, "Dueсo");
						//new nigname[MAX_PLAYER_NAME]; nigname = pName(playerid);
						//if(strfind(howner, nigname, true) == -1) return ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Casa - Opciones", "No eres el dueсo de esta casa!", "Ok", "Cancelar");
						ShowPlayerDialog(playerid, DABOX+8, DIALOG_STYLE_INPUT, "Casa - Vender Casa", "Estas seguro que deseas vender la casa?\nEscribe 'Si' o 'No' (sin los ' ')", "Ok", "Cancelar");
  					}
  					case 5:
  					{
                        format(hfile, sizeof(hfile), "/Casas/%d.ini", GetEntID(playerid));
  					    new howner[256]; howner = dini_Get(hfile, "Dueсo");
						new nigname[MAX_PLAYER_NAME]; nigname = pName(playerid);
						if(strfind(howner, nigname, true) == -1) return ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Casa - Opciones", "No eres dueсo de esta casa!", "Ok", "Cancelar");
						ShowPlayerDialog(playerid, DABOX+9, DIALOG_STYLE_INPUT, "Casa - Spawn", "Estas seguro que quieres spawnear en esta casa?\nEscribe 'Si' o 'No' (sin los ' ')", "Ok", "Cancelar");
  					}
			  }
        }
        return 1;
    }
  	if(dialogid == DABOX+3)
	{
		if(response)
		{
			  if(IsEditing(playerid) == 0) return SendClientMessage(playerid, COLOR_RED, "No estas editando una casa!");
			  if(!strlen(inputtext)) return SendClientMessage(playerid, COLOR_RED, "ERROR: Debes insertar un precio!");
			  {
					format(hfile, sizeof(hfile), "/Casas/%d.ini", GetPlayerHouseID(playerid));

					new hprice;
					sscanf(inputtext, "i", hprice);

					dini_IntSet(hfile, "Precio", hprice);

					new Float:ECPX; ECPX = dini_Float(hfile, "ECPX");
					new Float:ECPY; ECPY = dini_Float(hfile, "ECPY");
					new Float:ECPZ; ECPZ = dini_Float(hfile, "ECPZ");

					new howner[256]; howner = dini_Get(hfile, "Dueсo");
					new hname[256]; hname = dini_Get(hfile, "Nombre");
					new str[250]; format(str, sizeof(str), "{00FF00}Nombre: {FFFFFF}%s\n{00FF00}Precio: {FFFFFF}$%d\n{00FF00}Dueсo: {FFFFFF}%s", hname, hprice, howner);

					DestroyDynamic3DTextLabel(HLabel[GetPlayerHouseID(playerid)]);
					HLabel[GetPlayerHouseID(playerid)] = CreateDynamic3DTextLabel(str, COLOR_BLUE, ECPX, ECPY, ECPZ+1, 40, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 40.0);

					format(str, sizeof(str), "Casa [ID:%d]: El precio ahora es de '%d'!", GetPlayerHouseID(playerid), hprice);
					ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Editar Casa - Dar precio a la casa", str, "Ok", "Cancelar");
   			  }
        }
        return 1;
    }
  	if(dialogid == DABOX+4)
	{
		if(response)
		{
			  if(!strlen(inputtext)) return SendClientMessage(playerid, COLOR_RED, "ERROR: Debes insertar un precio!");
			  {
					format(hfile, sizeof(hfile), "/Casas/%d.ini", GetEntID(playerid));

					new hpass[128];
					sscanf(inputtext, "s", hpass);
					dini_Set(hfile, "Password", hpass);
					dini_IntSet(hfile, "CerrarCasa", 1);

					new str[128];
					//format(str, sizeof(str), "La contraseсa por la casa [ID:%d] es ahora: '%s'!", GetEntID(playerid), hpass);
					format(str, sizeof(str), "Has cerrado tu casa!", GetEntID(playerid), hpass);
					ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Casa Opciones - Cerrar Casa", str, "Ok", "Cancelar");
   			  }
        }
        return 1;
    }
  	if(dialogid == DABOX+5)
	{
		if(response)
		{
			  if(!strlen(inputtext)) return SendClientMessage(playerid, COLOR_RED, "ERROR: Debes insertar una contraseсa!");
			  {
					format(hfile, sizeof(hfile), "/Casas/%d.ini", GetEntID(playerid));

					new hpass[128];
					sscanf(inputtext, "s", hpass);
					new matchpass[256]; matchpass = dini_Get(hfile, "Password");

					if(strfind(matchpass, hpass, true) == -1) return ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Casa - Contraseсa", "Contraseсa Incorrecta...", "Ok", "Cancelar");
					else {
						new Float:ENTX; ENTX = dini_Float(hfile, "ENTX");
						new Float:ENTY; ENTY = dini_Float(hfile, "ENTY");
						new Float:ENTZ; ENTZ = dini_Float(hfile, "ENTZ");
						new Interior = dini_Int(hfile, "Interior");
						new hworld = dini_Int(hfile, "Mundo");
						SetPlayerAt(playerid, ENTX, ENTY, ENTZ, Interior, hworld);
					}
   			  }
        }
        return 1;
    }
  	if(dialogid == DABOX+6)
	{
		if(response)
		{
			  if(IsEditing(playerid) == 0) return SendClientMessage(playerid, COLOR_RED, "No estas editando una casa!");
			  switch(listitem)
		      {
  					case 0:
  					{
		    			new Float:X; X = dini_Float(hfile, "ENTX");
						new Float:Y; Y = dini_Float(hfile, "ENTY");
						new Float:Z; Z = dini_Float(hfile, "ENTZ");
						new Interior; Interior = dini_Int(hfile, "Interior");
						new hworld; hworld = dini_Int(hfile, "Mundo");
						SetPlayerAt(playerid, X, Y, Z, Interior, hworld);
			            ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Editar Casa - Checkpoint Entrada", "Teleportado correctamente a las coordenadas (entrada).", "Ok", "Cancelar");
  					}
  					case 1:
  					{
		    			new Float:X; X = dini_Float(hfile, "EXITX");
						new Float:Y; Y = dini_Float(hfile, "EXITY");
						new Float:Z; Z = dini_Float(hfile, "EXITZ");
						new Interior2; Interior2 = dini_Int(hfile, "Interior2");
						SetPlayerAt(playerid, X, Y, Z, Interior2, 0);
			            ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Editar Casa - Checkpoint Salida", "Teleportado correctamente a las coordenadas (salida).", "Ok", "Cancelar");
  					}
			  }
        }
        return 1;
    }
  	if(dialogid == DABOX+7)
	{
		if(response)
		{
			  if(IsEditing(playerid) == 0) return SendClientMessage(playerid, COLOR_RED, "No estas editando una casa!");
			  if(!strlen(inputtext)) return SendClientMessage(playerid, COLOR_RED, "ERROR: Debes insertar un precio!");
			  {
					format(hfile, sizeof(hfile), "/Casas/%d.ini", GetPlayerHouseID(playerid));

					new hworld;
					sscanf(inputtext, "i", hworld);

					dini_IntSet(hfile, "Mundo", hworld);
					
					SetPlayerVirtualWorld(playerid, hworld);

					new str[128];
					format(str, sizeof(str), "Casa [ID:%d]: El mundo virtual ahora es: '%d'!", GetPlayerHouseID(playerid), hworld);
					ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Casa Editar - Dar mundo virtual a la casa", str, "Ok", "Cancelar");
   			  }
        }
        return 1;
    }
  	if(dialogid == DABOX+8)
	{
		if(response)
		{
            format(hfile, sizeof(hfile), "/Casas/%d.ini", GetEntID(playerid));
	 		new howner[256]; howner = dini_Get(hfile, "Dueсo");
			new nigname[MAX_PLAYER_NAME]; nigname = pName(playerid);
			if(strfind(howner, nigname, true) == -1) return ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Casa - Opciones", "No eres el dueсo de esta casa!", "Ok", "Cancelar");
		   	if(strfind(inputtext,"Si",true) == 0)
			{
				new hprice; hprice = dini_Int(hfile, "Precio");
				new hname[256]; hname = dini_Get(hfile, "Nombre");
				dini_Set(hfile, "Dueсo", "Nadie");
				dini_IntSet(hfile, "YaComproCasa", 0);
				GivePlayerMoney(playerid, hprice);
				ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Venta de la casa", "{33FF66}Felicidades! Has vendido tu {FFFFFF}casa{33FF66}!", "Ok", "Cancelar");
				#if HMESSAGES == 1
				//new str[128];
				//format(str, sizeof(str), "%s sold the House '%s' [ID:%d] [Price: %d]!", pName(playerid), hname, GetEntID(playerid), hprice);
				//SendClientMessageToAll(COLOR_BLUE, str);
				printf("%s Vende la casa '%s' [ID:%d] por $%d!", pName(playerid), hname, GetEntID(playerid), hprice);
				#endif
		 	}
		   	else if(strfind(inputtext,"No",true) == 0)
			{
   				SendClientMessage(playerid, COLOR_RED, "Has decidido no vender tu casa...");
		 	}
		}
        return 1;
    }
    if(dialogid == DABOX+9)
	{
		if(response)
		{
			format(hfile, sizeof(hfile), "/Casas/%d.ini", GetEntID(playerid));
			format(ufile, sizeof(ufile), "/Casas/Usuarios/%s.ini", pName(playerid));
			if(!dini_Exists(ufile)) AddUser(playerid);
	 		new howner[256]; howner = dini_Get(hfile, "Dueсo");
			new nigname[MAX_PLAYER_NAME]; nigname = pName(playerid);
			if(strfind(howner, nigname, true) == -1) return ShowPlayerDialog(playerid, DABOX-1, DIALOG_STYLE_MSGBOX, "Casa - Opciones", "No eres el dueсo de esta casa!", "Ok", "Cancelar");
		   	if(strfind(inputtext,"Si",true) == 0)
			{
				dini_IntSet(ufile, "SpawnOpt", 1);
				dini_IntSet(ufile, "SpawnID", GetEntID(playerid));
				SendClientMessage(playerid, COLOR_BLUE, "Ahora spawnearas en esta casa luego de que mueras!");
		 	}
		   	else if(strfind(inputtext,"No",true) == 0)
			{
   				SendClientMessage(playerid, COLOR_RED, "Has decidido no spawnear en esta casa...");
		 	}
		}
        return 1;
    }
    return 0;
}

stock AddUser(playerid)
{
	format(ufile, sizeof(ufile), "/Casas/Usuarios/%s.ini", pName(playerid));
	dini_Create(ufile);
	dini_IntSet(ufile, "SpawnOpt", 0);
	dini_IntSet(ufile, "SpawnID", -1);
	return 1;
}

forward SetHouseSpawn(playerid);
public SetHouseSpawn(playerid)
{
	KillTimer(GetPVarInt(playerid, "SpawnTimer"));
	format(ufile, sizeof(ufile), "/Casas/Usuarios/%s.ini", pName(playerid));
	format(hfile, sizeof(hfile), "/Casas/%d.ini", dini_Int(ufile, "SpawnID"));
	new Float:SPAWNX; SPAWNX = dini_Float(hfile, "SPAWNX");
	new Float:SPAWNY; SPAWNY = dini_Float(hfile, "SPAWNY");
	new Float:SPAWNZ; SPAWNZ = dini_Float(hfile, "SPAWNZ");
	new hint = dini_Int(hfile, "Interior");
	new hworld = dini_Int(hfile, "Mundo");
	SetPlayerAt(playerid, SPAWNX, SPAWNY, SPAWNZ, hint, hworld);
	return 1;
}

stock pName(playerid)
{
	new gName[MAX_PLAYER_NAME];
	GetPlayerName(playerid, gName, sizeof(gName));
	return gName;
}

stock IsEditing(playerid)
{
	return GetPVarInt(playerid, "Editing");
}

stock GetPlayerHouseID(playerid)
{
	return GetPVarInt(playerid, "EditID");
}

stock GetEntID(playerid)
{
	return GetPVarInt(playerid, "EntID");
}

stock TotalHouses()
{
	new tehcount;
	for(new i=0; i<MAX_HOUSES; i++)
	{
		format(hfile, sizeof(hfile), "/Casas/%d.ini", i);
		if(dini_Exists(hfile)) tehcount++;
	}
	return tehcount;
}

forward UpdateHouses();
public UpdateHouses()
{
	for(new i=0; i<TotalHouses(); i++)
	{
		DisableInteriorEnterExits();
		format(hfile, sizeof(hfile), "/Casas/%d.ini", i);
		new Float:ECPX; ECPX = dini_Float(hfile, "ECPX");
		new Float:ECPY; ECPY = dini_Float(hfile, "ECPY");
		new Float:ECPZ; ECPZ = dini_Float(hfile, "ECPZ");
		new Float:ICPX; ICPX = dini_Float(hfile, "ICPX");
		new Float:ICPY; ICPY = dini_Float(hfile, "ICPY");
		new Float:ICPZ; ICPZ = dini_Float(hfile, "ICPZ");
		new hname[256]; hname = dini_Get(hfile, "Nombre");
		new hprice; hprice = dini_Int(hfile, "Precio");
		new howner[256]; howner = dini_Get(hfile, "Dueсo");
  		new hworld; hworld = dini_Int(hfile, "Mundo");
		new str[250]; format(str, sizeof(str), "{00FF00}Nombre: {FFFFFF}%s\n{00FF00}Precio: {FFFFFF}$%d\n{00FF00}Dueсo: {FFFFFF}%s", hname, hprice, howner);
		DestroyDynamicMapIcon(HMarker[i]);
		DestroyDynamicCP(HEnterCP[i]);
		DestroyDynamicCP(HExitCP[i]);
		DestroyDynamic3DTextLabel(HLabel[i]);
		if(dini_Int(hfile, "CPSet") == 1) {
			HEnterCP[i] = CreateDynamicCP(ECPX, ECPY, ECPZ, 1, -1, -1, -1, 25);
			HExitCP[i] = CreateDynamicCP(ICPX, ICPY, ICPZ, 1, hworld, -1, -1, 25);
			HLabel[i] = CreateDynamic3DTextLabel(str, COLOR_BLUE, ECPX, ECPY, ECPZ+1, 40, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 40.0);
			HMarker[i] = CreateDynamicMapIcon(ECPX, ECPY, ECPZ, 31, 0, -1, -1, -1, 45);
		}
	}
	return 1;
}

stock SetPlayerAt(playerid, Float:X, Float:Y, Float:Z, interiorid, virtualworld)
{
	SetPlayerPos(playerid, X, Y, Z);
	SetPlayerInterior(playerid, interiorid);
	SetPlayerVirtualWorld(playerid, virtualworld);
	return 1;
}
PD: NO SE SI ESTO QUE POSTEE VA AQUI, "Corriganme si me equivoque del lugar de posteo"
SIN MAS NADA QUE DECIR: GRACIAS
Reply
#2

Quieres decir un limitante para que solo puedan tener una casa?

Prueba este FS: https://sampforum.blast.hk/showthread.php?tid=321388
Reply
#3

Quote:
Originally Posted by chusothe41
Посмотреть сообщение
Quieres decir un limitante para que solo puedan tener una casa?

Prueba este FS: https://sampforum.blast.hk/showthread.php?tid=321388
YA TENGO ESTE FS, POR ESO DIJE QUE YA BUSQUE OTROS SISTEMAS DE CASAS PERO Q ESTAN EN INGLES, PERO LO QUE ESTOY SOLICITANDO ES DE COMO PONER UNA LIMITANTE DE QUE SOLO SE PUEDA COMPRAR UNA SOLA CASA, NO QUE ME PASEN LOS FS PORQUE ENCONTRE EN ESTE FORO EL DE (GAGIS HOUSES, Sasinosoft Houses 2.2, CALI HOUSES Y OTROS MAS) PERO NO SE SI ME DOY A ENTENDER UN POCO MAS.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)