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