28.07.2014, 10:54
(
Последний раз редактировалось gami007; 28.07.2014 в 18:21.
Причина: Firma
)
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:
PD: NO SE SI ESTO QUE POSTEE VA AQUI, "Corriganme si me equivoque del lugar de posteo"
SIN MAS NADA QUE DECIR: GRACIAS
Код:
#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;
}
SIN MAS NADA QUE DECIR: GRACIAS


