Not a member of Pastebin yet?
                        Sign Up,
                        it unlocks many cool features!                    
                - #include <a_samp>
 - #include <dof2>
 - #include <sscanf2>
 - #include <streamer>
 - #include <zcmd>
 - // CONSTANTES
 - // Sistema de casas
 - #define MAX_CASAS (500)
 - #define MAX_INTERIORES_CASAS (10)
 - // CORES
 - #define COR_ADM "{2587CE}"
 - #define COR_CASA_DONO "{FF0000}"
 - #define COR_CASA_ID "{0000FF}"
 - #define COR_CASA_PRECO "{00CC00}"
 - #define COR_DESABILITADO "{404040}"
 - #define COR_ERRO "{CC0000}"
 - #define COR_INFO "{CCCC00}"
 - #define COR_OK ""COR_CASA_PRECO""
 - #define COR_PADRAO "{C0C0C0}"
 - #define COR_TITULO "{FFFFFF}"
 - // DIALOGS
 - #define DIALOG_ADMIN_CASAS_LISTA (555)
 - #define DIALOG_ADMIN_CASAS_OQ_FAZER (556)
 - #define DIALOG_ADMIN_CASAS_MENU (557)
 - #define DIALOG_ADMIN_CASAS_DONO (558)
 - #define DIALOG_ADMIN_CASAS_PRECO (559)
 - #define DIALOG_ADMIN_CASAS_INTS (560)
 - #define DIALOG_ADMIN_CASAS_FINAL (561)
 - #define DIALOG_PLAYER_CASA_COM_GER (562)
 - #define DIALOG_PLAYER_CASA_MENU (563)
 - #define DIALOG_PLAYER_CASA_VENDER_I (564)
 - #define DIALOG_PLAYER_CASA_VENDER_P (565)
 - #define DIALOG_PLAYER_CASA_COMPRAR (567)
 - // DIRETÓRIOS
 - #define CONTAS "contas/%s.ini"
 - // Sistema de casas
 - #define CASAS "casas/%d.ini"
 - // MACROS
 - #define SCM(%0,%1) SendClientMessage(%0,0xA9C4E4AA,%1)
 - new Float:InterioresCasasPos[10][3] = {
 - {2317.795166, -1026.553466, 1050.217773}, // Mais luxuosa
 - {226.464431, 1114.291015, 1080.993774},
 - {235.248870, 1186.979736, 1080.257812},
 - {2324.366699, -1149.066162, 1050.710083},
 - {2365.262207, -1135.448120, 1050.882568},
 - {2495.976318, -1693.067993, 1014.742187},
 - {295.094757, 1472.437866, 1080.257812},
 - {226.275527, 1239.917724, 1082.140625},
 - {223.190322, 1287.136230, 1082.140625},
 - {2468.444824, -1698.332397, 1013.507812} // Mais lixosa
 - };
 - new InterioresCasasInt[10][1] = {
 - {9}, {5}, {3}, {12}, {8},
 - {3}, {15}, {2}, {1}, {2}
 - };
 - enum cInfo
 - {
 - // DADOS
 - cID,
 - cPrecoFixo,
 - // ESTRUTURA
 - bool:cEntrada,
 - cDono[MAX_PLAYER_NAME],
 - cInt,
 - cPickup,
 - cVW,
 - Float:cX,
 - Float:cY,
 - Float:cZ,
 - Text3D:cLbl,
 - // INTERIOR
 - cInterior,
 - cPickupSaida,
 - Float:cSX,
 - Float:cSY,
 - Float:cSZ,
 - // NÃO-SALVÁVEIS
 - cDonoID,
 - cPreco,
 - cVenP
 - }
 - new CasaInfo[MAX_CASAS][cInfo];
 - new
 - bool:pACEntrada[MAX_PLAYERS],
 - pACDono[MAX_PLAYERS][MAX_PLAYER_NAME],
 - pACInterior[MAX_PLAYERS],
 - pACPreco[MAX_PLAYERS],
 - pACEditando[MAX_PLAYERS],
 - pEstaEmCasa[MAX_PLAYERS],
 - pTempoEEC[MAX_PLAYERS]
 - ;
 - enum pInfo
 - {
 - pCasa
 - }
 - new PlayerInfo[MAX_PLAYERS][pInfo];
 - enum sInfo
 - {
 - // ** DADOS SALVÁVEIS ** //
 - // Sistema de casas
 - sNCas,
 - }
 - new ServerInfo[sInfo];
 - new
 - pListarCasas[MAX_PLAYERS][11]
 - ;
 - public OnFilterScriptInit()
 - {
 - print("\n\n\n---------------------------------------------------------");
 - print("Este servidor usa o sistema de casas por Rodney Francalim");
 - print("---------------------------------------------------------\n\n\n");
 - ServerInfo[sNCas] = -1;
 - for(new i = 0; i < MAX_CASAS; ++i)
 - {
 - CasaInfo[i][cID] = -1;
 - CarregarCasa(i);
 - }
 - return 1;
 - }
 - public OnFilterScriptExit()
 - {
 - return 1;
 - }
 - public OnPlayerConnect(playerid)
 - {
 - ResetarVarAdminCasas(playerid);
 - pTempoEEC[playerid] = 0;
 - pEstaEmCasa[playerid] = -1;
 - PlayerInfo[playerid][pCasa] = -1;
 - return 1;
 - }
 - public OnPlayerDisconnect(playerid, reason)
 - {
 - return 1;
 - }
 - CMD:acasas(playerid)
 - {
 - if(PodeUsarComando(playerid))
 - {
 - //if(!IsPlayerAdmin(playerid)) return OnPlayerCommandPerformed(playerid, "/acasas", false);
 - TogglePlayerControllable(playerid, false);
 - if(gettime() < pTempoEEC[playerid] && pEstaEmCasa[playerid] > -1)
 - pListarCasas[playerid][10] = pEstaEmCasa[playerid];
 - else
 - pListarCasas[playerid][10] = -1;
 - ListaAdminCasas(playerid);
 - }
 - return 1;
 - }
 - CMD:casa(playerid)
 - {
 - if(PodeUsarComando(playerid))
 - {
 - if(PlayerInfo[playerid][pCasa] > -1) // Tem uma casa
 - ShowPlayerDialog(playerid, DIALOG_PLAYER_CASA_COM_GER, DIALOG_STYLE_LIST, ""COR_TITULO"Gerenciar casa", "Gerenciar casa\n"COR_DESABILITADO"Comprar casa (+)", "Escolher", "Sair");
 - else // Não tem uma casa
 - {
 - if(pTempoEEC[playerid] > gettime() && pEstaEmCasa[playerid] > -1 && strcmp(CasaInfo[pEstaEmCasa[playerid]][cDono], "Governo", false) == 0) // Pode comprar a casa
 - ShowPlayerDialog(playerid, DIALOG_PLAYER_CASA_COM_GER, DIALOG_STYLE_LIST, ""COR_TITULO"Gerenciar casa", ""COR_DESABILITADO"Gerenciar casa\n"COR_OK"Comprar casa (+)", "Escolher", "Sair");
 - else // Não pode comprar a casa
 - ShowPlayerDialog(playerid, DIALOG_PLAYER_CASA_COM_GER, DIALOG_STYLE_LIST, ""COR_TITULO"Gerenciar casa", ""COR_DESABILITADO"Gerenciar casa\n"COR_DESABILITADO"Comprar casa (+)", "Escolher", "Sair");
 - }
 - }
 - return 1;
 - }
 - CMD:entrar(playerid)
 - {
 - if(PodeUsarComando(playerid))
 - {
 - if(gettime() < pTempoEEC[playerid])
 - {
 - if(IsPlayerInRangeOfPoint(playerid, 1.0, CasaInfo[pEstaEmCasa[playerid]][cX], CasaInfo[pEstaEmCasa[playerid]][cY], CasaInfo[pEstaEmCasa[playerid]][cZ]))
 - {
 - if((PlayerInfo[playerid][pCasa] == pEstaEmCasa[playerid]) || CasaInfo[pEstaEmCasa[playerid]][cEntrada])
 - {
 - SetPlayerPos(playerid, InterioresCasasPos[CasaInfo[pEstaEmCasa[playerid]][cInterior]][0], InterioresCasasPos[CasaInfo[pEstaEmCasa[playerid]][cInterior]][1], InterioresCasasPos[CasaInfo[pEstaEmCasa[playerid]][cInterior]][2]);
 - SetPlayerInterior(playerid, InterioresCasasInt[CasaInfo[pEstaEmCasa[playerid]][cInterior]][0]);
 - SetPlayerVirtualWorld(playerid, pEstaEmCasa[playerid] + 500);
 - }
 - else
 - SCM(playerid, " "COR_ERRO"* "COR_PADRAO"Porta trancada.");
 - }
 - }
 - }
 - return 1;
 - }
 - CMD:sair(playerid)
 - {
 - if(PodeUsarComando(playerid))
 - {
 - if(gettime() < pTempoEEC[playerid])
 - {
 - if(IsPlayerInRangeOfPoint(playerid, 1.0, InterioresCasasPos[CasaInfo[pEstaEmCasa[playerid]][cInterior]][0], InterioresCasasPos[CasaInfo[pEstaEmCasa[playerid]][cInterior]][1], InterioresCasasPos[CasaInfo[pEstaEmCasa[playerid]][cInterior]][2]))
 - {
 - if((PlayerInfo[playerid][pCasa] == pEstaEmCasa[playerid]) || CasaInfo[pEstaEmCasa[playerid]][cEntrada])
 - {
 - SetPlayerPos(playerid, CasaInfo[pEstaEmCasa[playerid]][cX], CasaInfo[pEstaEmCasa[playerid]][cY], CasaInfo[pEstaEmCasa[playerid]][cZ]);
 - SetPlayerVirtualWorld(playerid, CasaInfo[pEstaEmCasa[playerid]][cVW]);
 - SetPlayerInterior(playerid, CasaInfo[pEstaEmCasa[playerid]][cInt]);
 - }
 - else
 - SCM(playerid, " "COR_ERRO"* "COR_PADRAO"Porta trancada.");
 - }
 - }
 - }
 - return 1;
 - }
 - public OnPlayerSpawn(playerid)
 - {
 - new
 - arquivo[20 + MAX_PLAYER_NAME]
 - ;
 - format(arquivo, sizeof(arquivo), CONTAS, pNome(playerid));
 - PlayerInfo[playerid][pCasa] = DOF2_GetInt(arquivo, "Casa", "CASA");
 - DOF2_SaveFile();
 - if(PlayerInfo[playerid][pCasa] > -1)
 - {
 - if(strcmp(CasaInfo[PlayerInfo[playerid][pCasa]][cDono], pNome(playerid), false) != 0)
 - {
 - SCM(playerid, " "COR_ERRO"* "COR_PADRAO"Você perdeu sua casa.");
 - PlayerInfo[playerid][pCasa] = -1;
 - }
 - else
 - CasaInfo[PlayerInfo[playerid][pCasa]][cDonoID] = playerid;
 - }
 - return 1;
 - }
 - public OnPlayerPickUpDynamicPickup(playerid, pickupid)
 - {
 - for(new i = 0; i < MAX_CASAS; ++i)
 - {
 - if(CasaInfo[i][cPickup] == pickupid || CasaInfo[i][cPickupSaida] == pickupid)
 - {
 - pTempoEEC[playerid] = gettime() + 5;
 - pEstaEmCasa[playerid] = i;
 - }
 - }
 - return 1;
 - }
 - public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
 - {
 - return 1;
 - }
 - public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
 - {
 - return 1;
 - }
 - public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
 - {
 - new
 - str[1024] // NÃO COLOQUE NO GM
 - ;
 - switch(dialogid)
 - {
 - case DIALOG_ADMIN_CASAS_LISTA:
 - {
 - pEstaEmCasa[playerid] = -1;
 - if(response)
 - {
 - switch(listitem)
 - {
 - case 0 .. 9:
 - {
 - if(pListarCasas[playerid][listitem] >= 0)
 - {
 - pACEditando[playerid] = pListarCasas[playerid][listitem];
 - ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_OQ_FAZER, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", "Editar\nExcluir\nIr", "Escolher", "Voltar");
 - }
 - else
 - ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", MenuAdminCasas(playerid), "Escolher", "Voltar");
 - }
 - case 10:
 - {
 - if(pListarCasas[playerid][10] > 0) // PRÓXIMA LISTA
 - ListaAdminCasas(playerid);
 - else
 - ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", MenuAdminCasas(playerid), "Escolher", "Voltar");
 - }
 - case 11:
 - ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", MenuAdminCasas(playerid), "Escolher", "Voltar");
 - }
 - }
 - else
 - {
 - ResetarVarAdminCasas(playerid);
 - TogglePlayerControllable(playerid, true);
 - }
 - }
 - case DIALOG_ADMIN_CASAS_OQ_FAZER:
 - {
 - if(response)
 - {
 - switch(listitem)
 - {
 - case 0: // Editar
 - {
 - format(pACDono[playerid], MAX_PLAYER_NAME, "%s", CasaInfo[pACEditando[playerid]][cDono]);
 - pACPreco[playerid] = CasaInfo[pACEditando[playerid]][cPrecoFixo];
 - pACEntrada[playerid] = CasaInfo[pACEditando[playerid]][cEntrada];
 - pACInterior[playerid] = CasaInfo[pACEditando[playerid]][cInterior];
 - ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", MenuAdminCasas(playerid), "Escolher", "Voltar");
 - }
 - case 1: // Excluir
 - {
 - printf("A casa de ID %d foi deletada pelo administrador %s.", pACEditando[playerid], pNome(playerid));
 - CasaInfo[pACEditando[playerid]][cID] = -1;
 - DestroyDynamicPickup(CasaInfo[pACEditando[playerid]][cPickup]);
 - DestroyDynamicPickup(CasaInfo[pACEditando[playerid]][cPickupSaida]);
 - DestroyDynamic3DTextLabel(CasaInfo[pACEditando[playerid]][cLbl]);
 - TogglePlayerControllable(playerid, true);
 - DOF2_RemoveFile(DirCasa(pACEditando[playerid]));
 - ResetarVarAdminCasas(playerid);
 - }
 - case 2: // Ir
 - {
 - SetPlayerPos(playerid, CasaInfo[pACEditando[playerid]][cX], CasaInfo[pACEditando[playerid]][cY], CasaInfo[pACEditando[playerid]][cZ]);
 - SetPlayerInterior(playerid, CasaInfo[pACEditando[playerid]][cInt]);
 - SetPlayerVirtualWorld(playerid, CasaInfo[pACEditando[playerid]][cVW]);
 - TogglePlayerControllable(playerid, true);
 - ResetarVarAdminCasas(playerid);
 - }
 - }
 - }
 - else
 - {
 - pListarCasas[playerid][10] = pListarCasas[playerid][0];
 - ListaAdminCasas(playerid);
 - ResetarVarAdminCasas(playerid);
 - }
 - }
 - case DIALOG_ADMIN_CASAS_MENU:
 - {
 - if(response)
 - {
 - switch(listitem)
 - {
 - case 0: // Dono
 - ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_DONO, DIALOG_STYLE_INPUT, ""COR_TITULO"Administrar casas", ""COR_TITULO"Digite o nome do dono desta casa.\n\n"COR_INFO"(se quer deixar esta casa com o Governo, apenas clique em voltar)", "Escolher", "Voltar");
 - case 1: // Preço
 - ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_PRECO, DIALOG_STYLE_INPUT, ""COR_TITULO"Administrar casas", ""COR_TITULO"Digite o valor de venda desta casa.\n\n"COR_INFO"(min. 0 | max. 1000000)", "Escolher", "Voltar");
 - case 2: // Porta
 - {
 - pACEntrada[playerid] = ~pACEntrada[playerid];
 - ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", MenuAdminCasas(playerid), "Escolher", "Voltar");
 - }
 - case 3: // Interior
 - ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_INTS, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", ListaInterioresCasas(), "Escolher", "Voltar");
 - case 4: // Finalizar
 - {
 - if(pACDono[playerid][0] == EOS || pACPreco[playerid] < 0 || pACInterior[playerid] < 0)
 - ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", MenuAdminCasas(playerid), "Escolher", "Voltar");
 - else
 - ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_FINAL, DIALOG_STYLE_MSGBOX, ""COR_TITULO"Administrar casas", MenuAdminCasasFinalizar(playerid), "Sim", "Não");
 - }
 - }
 - }
 - else
 - {
 - if(pACInterior[playerid] > - 1)
 - ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_OQ_FAZER, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", "Editar\nExcluir\nIr", "Escolher", "Voltar");
 - else
 - {
 - pListarCasas[playerid][10] = pListarCasas[playerid][0];
 - ListaAdminCasas(playerid);
 - ResetarVarAdminCasas(playerid);
 - }
 - }
 - }
 - case DIALOG_ADMIN_CASAS_DONO:
 - {
 - if(response)
 - {
 - new
 - arquivo[20 + MAX_PLAYER_NAME]
 - ;
 - format(arquivo, sizeof(arquivo), CONTAS, inputtext);
 - if(!DOF2_FileExists(arquivo)) return ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_DONO, DIALOG_STYLE_INPUT, ""COR_TITULO"Administrar casas", ""COR_ERRO"Este jogador não criou conta. "COR_INFO"(se quer deixar esta casa com o Governo, apenas clique em voltar)\n\n"COR_TITULO"Digite o ID do dono desta casa.", "Escolher", "Voltar");
 - format(pACDono[playerid], MAX_PLAYER_NAME, "%s", inputtext);
 - }
 - else
 - format(pACDono[playerid], MAX_PLAYER_NAME, "Governo");
 - ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", MenuAdminCasas(playerid), "Escolher", "Voltar");
 - }
 - case DIALOG_ADMIN_CASAS_PRECO:
 - {
 - if(response)
 - {
 - if(strval(inputtext) < 0 || strval(inputtext) > 1000000) return ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_PRECO, DIALOG_STYLE_INPUT, ""COR_TITULO"Administrar casas", ""COR_ERRO"Valor inválido. "COR_INFO"(min. 0 | max. 1000000)\n\n"COR_TITULO"Digite o valor de venda desta casa.", "Escolher", "Voltar");
 - pACPreco[playerid] = strval(inputtext);
 - }
 - ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", MenuAdminCasas(playerid), "Escolher", "Voltar");
 - }
 - case DIALOG_ADMIN_CASAS_INTS:
 - {
 - if(response)
 - pACInterior[playerid] = listitem;
 - ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", MenuAdminCasas(playerid), "Escolher", "Voltar");
 - }
 - case DIALOG_ADMIN_CASAS_FINAL:
 - {
 - if(response)
 - {
 - new
 - Float:p[3]
 - ;
 - GetPlayerPos(playerid, p[0], p[1], p[2]);
 - CriarOuEditarCasa(pACEditando[playerid], pACDono[playerid], pACPreco[playerid], p[0], p[1], p[2], pACEntrada[playerid], GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid), pACInterior[playerid]);
 - ResetarVarAdminCasas(playerid);
 - TogglePlayerControllable(playerid, true);
 - }
 - else
 - ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", MenuAdminCasas(playerid), "Escolher", "Voltar");
 - }
 - case DIALOG_PLAYER_CASA_COM_GER:
 - {
 - if(response)
 - {
 - switch(listitem)
 - {
 - case 0: // Gerenciar casa
 - {
 - if(PlayerInfo[playerid][pCasa] > -1)
 - {
 - if(!IsPlayerInRangeOfPoint(playerid, 3.0, CasaInfo[PlayerInfo[playerid][pCasa]][cX], CasaInfo[PlayerInfo[playerid][pCasa]][cY], CasaInfo[PlayerInfo[playerid][pCasa]][cZ]) &&
 - !IsPlayerInRangeOfPoint(playerid, 25.0, InterioresCasasPos[CasaInfo[PlayerInfo[playerid][pCasa]][cInterior]][0], InterioresCasasPos[CasaInfo[PlayerInfo[playerid][pCasa]][cInterior]][1], InterioresCasasPos[CasaInfo[PlayerInfo[playerid][pCasa]][cInterior]][2]))
 - return SCM(playerid, " "COR_ERRO"* "COR_PADRAO"Você não está dentro, ou na porta, da sua casa.");
 - ShowPlayerDialog(playerid, DIALOG_PLAYER_CASA_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Gerenciar casa", MenuGerCasa(PlayerInfo[playerid][pCasa]), "Escolher", "Sair");
 - }
 - else
 - {
 - if(pTempoEEC[playerid] > gettime() && pEstaEmCasa[playerid] != PlayerInfo[playerid][pCasa])
 - ShowPlayerDialog(playerid, DIALOG_PLAYER_CASA_COM_GER, DIALOG_STYLE_LIST, ""COR_TITULO"Gerenciar casa", ""COR_DESABILITADO"Gerenciar casa\n"COR_DESABILITADO"Comprar casa (+)", "Escolher", "Sair");
 - else
 - ShowPlayerDialog(playerid, DIALOG_PLAYER_CASA_COM_GER, DIALOG_STYLE_LIST, ""COR_TITULO"Gerenciar casa", ""COR_DESABILITADO"Gerenciar casa\n"COR_DESABILITADO"Comprar casa (+)", "Escolher", "Sair");
 - }
 - }
 - case 1: // Comprar casa (+)
 - {
 - if(PlayerInfo[playerid][pCasa] <= -1 && pEstaEmCasa[playerid] > -1 && pTempoEEC[playerid] > gettime() && PlayerInfo[playerid][pCasa] != pEstaEmCasa[playerid] && strcmp(CasaInfo[pEstaEmCasa[playerid]][cDono], "Governo", false) == 0)
 - {
 - // Retira o dinheiro no PlayerInfo[playerid][pBanco];
 - PlayerInfo[playerid][pCasa] = pEstaEmCasa[playerid];
 - CasaInfo[PlayerInfo[playerid][pCasa]][cDono][0] = EOS;
 - strins(CasaInfo[PlayerInfo[playerid][pCasa]][cDono], pNome(playerid), 0);
 - CasaInfo[PlayerInfo[playerid][pCasa]][cDonoID] = playerid;
 - SalvarCasa(PlayerInfo[playerid][pCasa]);
 - ConectarCasa(PlayerInfo[playerid][pCasa]);
 - format(str, sizeof(str), " "COR_OK"* "COR_PADRAO"Você comprou a casa de ID %d.", pEstaEmCasa[playerid]);
 - SCM(playerid, str);
 - }
 - else
 - {
 - if(PlayerInfo[playerid][pCasa] == -1)
 - ShowPlayerDialog(playerid, DIALOG_PLAYER_CASA_COM_GER, DIALOG_STYLE_LIST, ""COR_TITULO"Gerenciar casa", ""COR_DESABILITADO"Gerenciar casa\n"COR_DESABILITADO"Comprar casa (+)", "Escolher", "Sair");
 - else
 - ShowPlayerDialog(playerid, DIALOG_PLAYER_CASA_COM_GER, DIALOG_STYLE_LIST, ""COR_TITULO"Gerenciar casa", "Gerenciar casa\n"COR_DESABILITADO"Comprar casa (+)", "Escolher", "Sair");
 - }
 - }
 - }
 - }
 - }
 - case DIALOG_PLAYER_CASA_MENU:
 - {
 - if(response)
 - {
 - switch(listitem)
 - {
 - case 0: // Porta aberta ou fechada
 - {
 - CasaInfo[PlayerInfo[playerid][pCasa]][cEntrada] = ~CasaInfo[PlayerInfo[playerid][pCasa]][cEntrada];
 - ShowPlayerDialog(playerid, DIALOG_PLAYER_CASA_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Gerenciar casa", MenuGerCasa(PlayerInfo[playerid][pCasa]), "Escolher", "Sair");
 - }
 - default: // Vende-la
 - ShowPlayerDialog(playerid, DIALOG_PLAYER_CASA_VENDER_I, DIALOG_STYLE_INPUT, ""COR_TITULO"Gerenciar casa", ""COR_TITULO"Digite o ID do jogador para quem você quer vender a casa.\n\n"COR_INFO"(use -1 para vender ao Governo (80% do preço original))", "Confirmar", "Voltar");
 - }
 - }
 - }
 - case DIALOG_PLAYER_CASA_VENDER_I:
 - {
 - if(response)
 - {
 - if(strval(inputtext) < -1 && strval(inputtext) != playerid) return ShowPlayerDialog(playerid, DIALOG_PLAYER_CASA_VENDER_I, DIALOG_STYLE_INPUT, ""COR_TITULO"Gerenciar casa", ""COR_ERRO"ID inválido. "COR_INFO"(use -1 para vender ao Governo (80% do preço original))\n\n"COR_TITULO"Digite o ID do jogador para quem você quer vender a casa.", "Confirmar", "Voltar");
 - if(strval(inputtext) == -1) // Governo
 - {
 - CasaInfo[PlayerInfo[playerid][pCasa]][cDono][0] = EOS;
 - strins(CasaInfo[PlayerInfo[playerid][pCasa]][cDono], "Governo", 0);
 - SalvarCasa(PlayerInfo[playerid][pCasa]);
 - ConectarCasa(PlayerInfo[playerid][pCasa]);
 - PlayerInfo[playerid][pCasa] = -1;
 - //SalvarConta(playerid);
 - format(str, sizeof(str), " "COR_OK"* "COR_PADRAO"Você vendeu a casa de ID %d para o Governo por %d (80% do preço original).", CasaInfo[PlayerInfo[playerid][pCasa]][cPrecoFixo] - (CasaInfo[PlayerInfo[playerid][pCasa]][cPrecoFixo] * 0.2));
 - SCM(playerid, str);
 - // Dá CasaInfo[PlayerInfo[playerid][pCasa]][cPrecoFixo] - (CasaInfo[PlayerInfo[playerid][pCasa]][cPrecoFixo] * 0.2)
 - // ao player
 - }
 - else
 - {
 - if(!IsPlayerConnected(strval(inputtext))) return ShowPlayerDialog(playerid, DIALOG_PLAYER_CASA_VENDER_I, DIALOG_STYLE_INPUT, ""COR_TITULO"Gerenciar casa", ""COR_ERRO"ID inválido. "COR_INFO"(use -1 para vender ao Governo (80% do preço original))\n\n"COR_TITULO"Digite o ID do jogador para quem você quer vender a casa.", "Confirmar", "Voltar");
 - if(!IsPlayerInRangeOfPoint(strval(inputtext), 3.0, CasaInfo[PlayerInfo[playerid][pCasa]][cX], CasaInfo[PlayerInfo[playerid][pCasa]][cY], CasaInfo[PlayerInfo[playerid][pCasa]][cZ]) &&
 - !IsPlayerInRangeOfPoint(strval(inputtext), 25.0, InterioresCasasPos[CasaInfo[PlayerInfo[playerid][pCasa]][cInterior]][0], InterioresCasasPos[CasaInfo[PlayerInfo[playerid][pCasa]][cInterior]][1], InterioresCasasPos[CasaInfo[PlayerInfo[playerid][pCasa]][cInterior]][2]))
 - ShowPlayerDialog(playerid, DIALOG_PLAYER_CASA_VENDER_I, DIALOG_STYLE_INPUT, ""COR_TITULO"Gerenciar casa", ""COR_ERRO"Este jogador não está dentro, ou na porta, da sua casa. "COR_INFO"(use -1 para vender ao Governo (80% do preço original))\n\n"COR_TITULO"Digite o ID do jogador para quem você quer vender a casa.", "Confirmar", "Voltar");
 - CasaInfo[PlayerInfo[playerid][pCasa]][cVenP] = strval(inputtext);
 - pACEditando[strval(inputtext)] = PlayerInfo[playerid][pCasa];
 - ShowPlayerDialog(playerid, DIALOG_PLAYER_CASA_VENDER_P, DIALOG_STYLE_INPUT, ""COR_TITULO"Gerenciar casa", ""COR_TITULO"Digite o preço da casa\n\n"COR_INFO"(min. 0 | max. 1000000)", "Confirmar", "Voltar");
 - }
 - }
 - else
 - ShowPlayerDialog(playerid, DIALOG_PLAYER_CASA_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Gerenciar casa", MenuGerCasa(PlayerInfo[playerid][pCasa]), "Escolher", "Sair");
 - }
 - case DIALOG_PLAYER_CASA_VENDER_P:
 - {
 - if(response)
 - {
 - if(strval(inputtext) < 0 || strval(inputtext) > 1000000) return ShowPlayerDialog(playerid, DIALOG_PLAYER_CASA_VENDER_I, DIALOG_STYLE_INPUT, ""COR_TITULO"Gerenciar casa", ""COR_TITULO"Digite o ID do jogador para quem você quer vender a casa.\n\n"COR_INFO"(use -1 para vender ao Governo (80% do preço original))", "Confirmar", "Voltar");
 - if(!IsPlayerInRangeOfPoint(CasaInfo[PlayerInfo[playerid][pCasa]][cVenP], 3.0, CasaInfo[PlayerInfo[playerid][pCasa]][cX], CasaInfo[PlayerInfo[playerid][pCasa]][cY], CasaInfo[PlayerInfo[playerid][pCasa]][cZ]) &&
 - !IsPlayerInRangeOfPoint(strval(inputtext), 25.0, InterioresCasasPos[CasaInfo[PlayerInfo[playerid][pCasa]][cInterior]][0], InterioresCasasPos[CasaInfo[PlayerInfo[playerid][pCasa]][cInterior]][1], InterioresCasasPos[CasaInfo[PlayerInfo[playerid][pCasa]][cInterior]][2]))
 - return ShowPlayerDialog(playerid, DIALOG_PLAYER_CASA_VENDER_I, DIALOG_STYLE_INPUT, ""COR_TITULO"Gerenciar casa", ""COR_ERRO"Este jogador não está dentro, ou na porta, da sua casa. "COR_INFO"(use -1 para vender ao Governo (80% do preço original))\n\n"COR_TITULO"Digite o ID do jogador para quem você quer vender a casa.", "Confirmar", "Voltar");
 - CasaInfo[PlayerInfo[playerid][pCasa]][cPreco] = strval(inputtext);
 - format(str, sizeof(str), ""COR_TITULO"O %s %s está te oferecendo a casa dele por %d US$.\n\n\nVocê quer comprá-la?", IsPlayerAdmin(playerid) ? ("administrador") : ("jogador"), pNome(playerid), strval(inputtext));
 - ShowPlayerDialog(CasaInfo[PlayerInfo[playerid][pCasa]][cVenP], DIALOG_PLAYER_CASA_COMPRAR, DIALOG_STYLE_MSGBOX, ""COR_TITULO"Comprar casa", str, "Sim", "Não");
 - }
 - else
 - ShowPlayerDialog(playerid, DIALOG_PLAYER_CASA_VENDER_I, DIALOG_STYLE_INPUT, ""COR_TITULO"Gerenciar casa", ""COR_TITULO"Digite o ID do jogador para quem você quer vender a casa.\n\n"COR_INFO"(use -1 para vender ao Governo (80% do preço original))", "Confirmar", "Voltar");
 - }
 - case DIALOG_PLAYER_CASA_COMPRAR:
 - {
 - if(response)
 - {
 - CasaInfo[pACEditando[playerid]][cDono][0] = EOS;
 - strins(CasaInfo[pACEditando[playerid]][cDono], pNome(playerid), 0);
 - PlayerInfo[CasaInfo[pACEditando[playerid]][cDonoID]][pCasa] = -1;
 - PlayerInfo[playerid][pCasa] = pACEditando[playerid];
 - format(str, sizeof(str), " "COR_OK"* "COR_PADRAO"Você comprou a casa de %s por %d US$.", pNome(CasaInfo[pACEditando[playerid]][cDonoID]), CasaInfo[pACEditando[playerid]][cPreco]);
 - SCM(playerid, str);
 - format(str, sizeof(str), " "COR_OK"* "COR_PADRAO"%s aceitou a sua oferta e comprou sua casa por %d US$.", pNome(playerid), CasaInfo[pACEditando[playerid]][cPreco]);
 - SCM(CasaInfo[pACEditando[playerid]][cDonoID], str);
 - ConectarCasa(pACEditando[playerid]);
 - ResetarVarAdminCasas(playerid);
 - ResetarVarAdminCasas(CasaInfo[PlayerInfo[playerid][pCasa]][cDonoID]);
 - CasaInfo[PlayerInfo[playerid][pCasa]][cDonoID] = playerid;
 - }
 - }
 - }
 - return 1;
 - }
 - // SISTEMA DE CASAS (by.: Rodney Francalim)
 - stock Atualizar3DCasa(casaid)
 - {
 - new
 - str[512]
 - ;
 - if(strcmp(CasaInfo[casaid][cDono], "Governo", false) == 0)
 - format(str, sizeof(str), ""COR_TITULO"ID: "COR_CASA_ID"%d\n"COR_TITULO"Proprietário: "COR_CASA_DONO"%s\n"COR_TITULO"Preço: "COR_CASA_PRECO"%d US$", casaid, CasaInfo[casaid][cDono], CasaInfo[casaid][cPrecoFixo]);
 - else
 - format(str, sizeof(str), ""COR_TITULO"ID: "COR_CASA_ID"%d\n"COR_TITULO"Proprietário: "COR_CASA_DONO"%s", casaid, CasaInfo[casaid][cDono]);
 - DestroyDynamic3DTextLabel(CasaInfo[casaid][cLbl]);
 - CasaInfo[casaid][cLbl] = CreateDynamic3DTextLabel(str, 0xFFFFFFAA, CasaInfo[casaid][cX], CasaInfo[casaid][cY], CasaInfo[casaid][cZ] + 1, 10, INVALID_PLAYER_ID, INVALID_PLAYER_ID, 0, CasaInfo[casaid][cVW], -1, -1, 100.0);
 - return 1;
 - }
 - stock CarregarCasa(casaid)
 - {
 - if(!DOF2_FileExists(DirCasa(casaid))) return 0;
 - // DADOS
 - CasaInfo[casaid][cID] = casaid;
 - format(CasaInfo[casaid][cDono], MAX_PLAYER_NAME, "%s", DOF2_GetString(DirCasa(casaid), "Dono", "DADOS"));
 - CasaInfo[casaid][cPrecoFixo] = DOF2_GetInt(DirCasa(casaid), "PreçoFixo", "DADOS");
 - // ESTRUTURA
 - CasaInfo[casaid][cX] = DOF2_GetFloat(DirCasa(casaid), "PosX", "ESTRUTURA");
 - CasaInfo[casaid][cY] = DOF2_GetFloat(DirCasa(casaid), "PosY", "ESTRUTURA");
 - CasaInfo[casaid][cZ] = DOF2_GetFloat(DirCasa(casaid), "PosZ", "ESTRUTURA");
 - CasaInfo[casaid][cEntrada] = DOF2_GetBool(DirCasa(casaid), "Entrada", "ESTRUTURA");
 - CasaInfo[casaid][cInt] = DOF2_GetInt(DirCasa(casaid), "Int", "ESTRUTURA");
 - CasaInfo[casaid][cVW] = DOF2_GetInt(DirCasa(casaid), "VW", "ESTRUTURA");
 - // INTERIOR
 - CasaInfo[casaid][cInterior] = DOF2_GetInt(DirCasa(casaid), "Interior", "INTERIOR");
 - ++ServerInfo[sNCas];
 - ConectarCasa(casaid);
 - return 1;
 - }
 - stock ConectarCasa(casaid)
 - {
 - Atualizar3DCasa(casaid);
 - DestroyDynamicPickup(CasaInfo[casaid][cPickup]);
 - if(strcmp(CasaInfo[casaid][cDono], "Governo", false) == 0)
 - CasaInfo[casaid][cPickup] = CreateDynamicPickup(1273, 1, CasaInfo[casaid][cX], CasaInfo[casaid][cY], CasaInfo[casaid][cZ], CasaInfo[casaid][cVW], -1, -1, 100);
 - else
 - CasaInfo[casaid][cPickup] = CreateDynamicPickup(1318, 1, CasaInfo[casaid][cX], CasaInfo[casaid][cY], CasaInfo[casaid][cZ], CasaInfo[casaid][cVW], -1, -1, 100);
 - CasaInfo[casaid][cPickupSaida] = CreateDynamicPickup(1318, 1, InterioresCasasPos[CasaInfo[casaid][cInterior]][0], InterioresCasasPos[CasaInfo[casaid][cInterior]][1], InterioresCasasPos[CasaInfo[casaid][cInterior]][2], casaid + 500);
 - return 1;
 - }
 - stock CriarOuEditarCasa(casaid, dono[], preco, Float:x, Float:y, Float:z, bool:entrada, int, vw, interior)
 - {
 - if((DOF2_FileExists(DirCasa(casaid)) || ServerInfo[sNCas] >= MAX_CASAS - 1) && casaid == -1) return 0;
 - new
 - auxcasaid = casaid
 - ;
 - if(auxcasaid == -1)
 - {
 - ++ServerInfo[sNCas];
 - for(new i = 0; i < MAX_CASAS; ++i)
 - {
 - if(CasaInfo[i][cID] == -1)
 - {
 - auxcasaid = i;
 - break;
 - }
 - }
 - }
 - // DADOS
 - format(CasaInfo[auxcasaid][cDono], MAX_PLAYER_NAME, "%s", dono);
 - if(strcmp(CasaInfo[auxcasaid][cDono], "Governo", false) != 0)
 - {
 - for(new i = 0; i < MAX_PLAYERS; ++i)
 - {
 - if(IsPlayerConnected(i))
 - {
 - if(strcmp(dono, pNome(i), false) == 0)
 - {
 - PlayerInfo[i][pCasa] = auxcasaid;
 - break;
 - }
 - }
 - else
 - {
 - new
 - arquivo[20 + MAX_PLAYER_NAME]
 - ;
 - format(arquivo, sizeof(arquivo), CONTAS, dono);
 - if(DOF2_FileExists(arquivo))
 - {
 - DOF2_SetInt(arquivo, "Casa", auxcasaid, "CASA");
 - DOF2_SaveFile();
 - break;
 - }
 - }
 - }
 - }
 - CasaInfo[auxcasaid][cID] = auxcasaid;
 - CasaInfo[auxcasaid][cPrecoFixo] = preco;
 - // ESTRUTURA
 - CasaInfo[auxcasaid][cEntrada] = entrada;
 - // INTERIOR
 - CasaInfo[auxcasaid][cSX] = InterioresCasasPos[interior][0];
 - CasaInfo[auxcasaid][cSY] = InterioresCasasPos[interior][1];
 - CasaInfo[auxcasaid][cSZ] = InterioresCasasPos[interior][2];
 - if(casaid == -1) // Criando casa
 - {
 - // ESTRUTURA
 - CasaInfo[auxcasaid][cX] = x;
 - CasaInfo[auxcasaid][cY] = y;
 - CasaInfo[auxcasaid][cZ] = z;
 - CasaInfo[auxcasaid][cInt] = int;
 - CasaInfo[auxcasaid][cVW] = vw;
 - // INTERIOR
 - CasaInfo[auxcasaid][cInterior] = interior;
 - }
 - else // Editando casa
 - if(CasaInfo[auxcasaid][cInterior] != interior)
 - CasaInfo[auxcasaid][cInterior] = interior;
 - SalvarCasa(auxcasaid);
 - Atualizar3DCasa(auxcasaid);
 - ConectarCasa(auxcasaid);
 - return 1;
 - }
 - stock DirCasa(casaid)
 - {
 - new
 - arquivo[20]
 - ;
 - format(arquivo, sizeof(arquivo), CASAS, casaid);
 - return arquivo;
 - }
 - stock ListaAdminCasas(playerid)
 - {
 - new
 - str[600] // 623
 - ;
 - for(new i = pListarCasas[playerid][10], c = -1; i < MAX_CASAS; ++i)
 - {
 - pListarCasas[playerid][c + 1] = -1;
 - if(c < 9)
 - {
 - if(DOF2_FileExists(DirCasa(i)))
 - {
 - pListarCasas[playerid][++c] = i;
 - if(pEstaEmCasa[playerid] == pListarCasas[playerid][c] && gettime() < pTempoEEC[playerid])
 - {
 - format(str, sizeof(str), "%s%sID: "COR_CASA_ID"%d "COR_TITULO"- "COR_INFO"%s\n", str, strcmp(CasaInfo[i][cDono], "Governo", false) != 0 ? (""COR_OK"") : (""COR_ERRO""), i, CasaInfo[i][cDono]);
 - }
 - else
 - format(str, sizeof(str), "%s%sID: "COR_CASA_ID"%d "COR_TITULO"- "COR_CASA_DONO"%s\n", str, strcmp(CasaInfo[i][cDono], "Governo", false) != 0 ? (""COR_OK"") : (""COR_ERRO""), i, CasaInfo[i][cDono]);
 - }
 - }
 - else
 - {
 - if(DOF2_FileExists(DirCasa(i)))
 - {
 - pListarCasas[playerid][++c] = i;
 - strcat(str, "Próximo >>\n");
 - break;
 - }
 - }
 - }
 - strcat(str, ""COR_OK"Adicionar nova casa...");
 - ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_LISTA, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", str, "Escolher", "Sair");
 - return 1;
 - }
 - stock ListaInterioresCasas()
 - {
 - new
 - str[512]
 - ;
 - for(new i = 0; i <= MAX_INTERIORES_CASAS - 1; ++i)
 - format(str, sizeof(str), "%sInterior %d%s\n", str, i + 1, i + 1 == 1 ? (" - Mais luxuoso") : (i + 1 == MAX_INTERIORES_CASAS ? (" - Menos luxuoso") : ("")));
 - return str;
 - }
 - stock MenuAdminCasas(playerid)
 - {
 - new
 - str[512]
 - ;
 - if(pACDono[playerid][0] == EOS) strcat(str, ""COR_ERRO"Dono\n");
 - else format(str, sizeof(str), "%s"COR_TITULO"Dono: "COR_CASA_DONO"%s\n", str, pACDono[playerid]);
 - if(pACPreco[playerid] <= 0) strcat(str, ""COR_ERRO"Preço\n");
 - else format(str, sizeof(str), "%s"COR_TITULO"Preço: "COR_CASA_PRECO"%d US$\n", str, pACPreco[playerid]);
 - if(pACEntrada[playerid]) strcat(str, "Porta "COR_OK"aberta\n");
 - else strcat(str, "Porta "COR_ERRO"fechada\n");
 - if(pACInterior[playerid] < 0) strcat(str, ""COR_ERRO"Interior\n");
 - else format(str, sizeof(str), "%s"COR_TITULO"Interior: "COR_CASA_ID"%d\n", str, pACInterior[playerid] + 1);
 - if(pACInterior[playerid] > -1 && pACPreco[playerid] > 0 && pACDono[playerid][0] != EOS)
 - strcat(str, ""COR_INFO"Finalizar!");
 - else
 - strcat(str, ""COR_DESABILITADO"Finalizar!");
 - return str;
 - }
 - stock MenuAdminCasasFinalizar(playerid)
 - {
 - new
 - str[512]
 - ;
 - strcat(str, ""COR_TITULO"Estes são os dados da casa.\n\n");
 - format(str, sizeof(str), "%sDono: "COR_CASA_DONO"%s\n", str, pACDono[playerid]);
 - format(str, sizeof(str), "%s"COR_TITULO"Preço: "COR_CASA_PRECO"%d US$\n", str, pACPreco[playerid]);
 - if(pACEntrada[playerid]) strcat(str, ""COR_TITULO"Porta "COR_OK"aberta\n");
 - else strcat(str, ""COR_TITULO"Porta "COR_ERRO"fechada\n");
 - format(str, sizeof(str), "%s"COR_TITULO"Interior: "COR_CASA_ID"%d\n\n\n"COR_INFO"", str, pACInterior[playerid] + 1);
 - strcat(str, pACEditando[playerid] <= -1 ? ("Quer criar esta casa aqui?") : ("Quer atualizar esta casa?"));
 - return str;
 - }
 - stock MenuGerCasa(casaid)
 - {
 - new
 - str[512]
 - ;
 - if(CasaInfo[casaid][cEntrada]) strcat(str, "Porta "COR_OK"aberta\n");
 - else strcat(str, "Porta "COR_ERRO"fechada\n");
 - strcat(str, ""COR_INFO"Vendê-la");
 - return str;
 - }
 - stock ResetarVarAdminCasas(playerid)
 - {
 - pACDono[playerid][0] = EOS;
 - pACEditando[playerid] = -1;
 - pACPreco[playerid] = -1;
 - pACEntrada[playerid] = false;
 - pACInterior[playerid] = -1;
 - return 1;
 - }
 - stock SalvarCasa(casaid)
 - {
 - if(!DOF2_FileExists(DirCasa(casaid)))
 - DOF2_CreateFile(DirCasa(casaid));
 - // DADOS
 - DOF2_SetInt(DirCasa(casaid), "ID", CasaInfo[casaid][cID], "DADOS");
 - DOF2_SetString(DirCasa(casaid), "Dono", CasaInfo[casaid][cDono], "DADOS");
 - DOF2_SetInt(DirCasa(casaid), "PreçoFixo", CasaInfo[casaid][cPrecoFixo], "DADOS");
 - // ESTRUTURA
 - DOF2_SetFloat(DirCasa(casaid), "PosX", CasaInfo[casaid][cX], "ESTRUTURA");
 - DOF2_SetFloat(DirCasa(casaid), "PosY", CasaInfo[casaid][cY], "ESTRUTURA");
 - DOF2_SetFloat(DirCasa(casaid), "PosZ", CasaInfo[casaid][cZ], "ESTRUTURA");
 - DOF2_SetBool(DirCasa(casaid), "Entrada", CasaInfo[casaid][cEntrada], "ESTRUTURA");
 - DOF2_SetInt(DirCasa(casaid), "Int", CasaInfo[casaid][cInt], "ESTRUTURA");
 - DOF2_SetInt(DirCasa(casaid), "VW", CasaInfo[casaid][cVW], "ESTRUTURA");
 - // INTERIOR
 - DOF2_SetInt(DirCasa(casaid), "Interior", CasaInfo[casaid][cInterior], "INTERIOR");
 - DOF2_SaveFile();
 - return 1;
 - }
 - // NÃO COLOCAR O QUE ESTÁ A PARTIR DAQUI NO GM
 - stock PodeUsarComando(playerid)
 - return playerid >= 0 ? 1 : 0;
 - stock pNome(playerid)
 - {
 - new
 - nome[MAX_PLAYER_NAME]
 - ;
 - GetPlayerName(playerid, nome, sizeof(nome));
 - return nome;
 - }
 
Advertisement
 
                    Add Comment                
                
                        Please, Sign In to add comment