Advertisement
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
Advertisement