Advertisement
RodneyFrancalim

Sistema de casas

Mar 2nd, 2015
1,500
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 38.81 KB | None | 0 0
  1. #include    <a_samp>
  2. #include    <dof2>
  3. #include    <sscanf2>
  4. #include    <streamer>
  5. #include    <zcmd>
  6.  
  7. // CONSTANTES
  8. // Sistema de casas
  9. #define     MAX_CASAS                   (500)
  10. #define     MAX_INTERIORES_CASAS        (10)
  11.  
  12. // CORES
  13. #define     COR_ADM                     "{2587CE}"
  14. #define     COR_CASA_DONO               "{FF0000}"
  15. #define     COR_CASA_ID                 "{0000FF}"
  16. #define     COR_CASA_PRECO              "{00CC00}"
  17. #define     COR_DESABILITADO            "{404040}"
  18. #define     COR_ERRO                    "{CC0000}"
  19. #define     COR_INFO                    "{CCCC00}"
  20. #define     COR_OK                      ""COR_CASA_PRECO""
  21. #define     COR_PADRAO                  "{C0C0C0}"
  22. #define     COR_TITULO                  "{FFFFFF}"
  23.  
  24. // DIALOGS
  25. #define     DIALOG_ADMIN_CASAS_LISTA    (555)
  26. #define     DIALOG_ADMIN_CASAS_OQ_FAZER (556)
  27. #define     DIALOG_ADMIN_CASAS_MENU     (557)
  28. #define     DIALOG_ADMIN_CASAS_DONO     (558)
  29. #define     DIALOG_ADMIN_CASAS_PRECO    (559)
  30. #define     DIALOG_ADMIN_CASAS_INTS     (560)
  31. #define     DIALOG_ADMIN_CASAS_FINAL    (561)
  32. #define     DIALOG_PLAYER_CASA_COM_GER  (562)
  33. #define     DIALOG_PLAYER_CASA_MENU     (563)
  34. #define     DIALOG_PLAYER_CASA_VENDER_I (564)
  35. #define     DIALOG_PLAYER_CASA_VENDER_P (565)
  36. #define     DIALOG_PLAYER_CASA_COMPRAR  (567)
  37.  
  38. // DIRETÓRIOS
  39. #define     CONTAS                      "contas/%s.ini"
  40. // Sistema de casas
  41. #define     CASAS                       "casas/%d.ini"
  42.  
  43. // MACROS
  44. #define     SCM(%0,%1)                  SendClientMessage(%0,0xA9C4E4AA,%1)
  45.  
  46. new Float:InterioresCasasPos[10][3] = {
  47. {2317.795166, -1026.553466, 1050.217773},   // Mais luxuosa
  48. {226.464431, 1114.291015, 1080.993774},
  49. {235.248870, 1186.979736, 1080.257812},
  50. {2324.366699, -1149.066162, 1050.710083},
  51. {2365.262207, -1135.448120, 1050.882568},
  52. {2495.976318, -1693.067993, 1014.742187},
  53. {295.094757, 1472.437866, 1080.257812},
  54. {226.275527, 1239.917724, 1082.140625},
  55. {223.190322, 1287.136230, 1082.140625},
  56. {2468.444824, -1698.332397, 1013.507812}    // Mais lixosa
  57. };
  58.  
  59. new InterioresCasasInt[10][1] = {
  60. {9},  {5}, {3}, {12}, {8},
  61. {3}, {15}, {2},  {1}, {2}
  62. };
  63.  
  64. enum cInfo
  65. {
  66.     // DADOS
  67.     cID,
  68.     cPrecoFixo,
  69.  
  70.     // ESTRUTURA
  71.     bool:cEntrada,
  72.     cDono[MAX_PLAYER_NAME],
  73.     cInt,
  74.     cPickup,
  75.     cVW,
  76.     Float:cX,
  77.     Float:cY,
  78.     Float:cZ,
  79.     Text3D:cLbl,
  80.  
  81.     // INTERIOR
  82.     cInterior,
  83.     cPickupSaida,
  84.     Float:cSX,
  85.     Float:cSY,
  86.     Float:cSZ,
  87.  
  88.     // NÃO-SALVÁVEIS
  89.     cDonoID,
  90.     cPreco,
  91.     cVenP
  92. }
  93. new CasaInfo[MAX_CASAS][cInfo];
  94.  
  95. new
  96.     bool:pACEntrada[MAX_PLAYERS],
  97.     pACDono[MAX_PLAYERS][MAX_PLAYER_NAME],
  98.     pACInterior[MAX_PLAYERS],
  99.     pACPreco[MAX_PLAYERS],
  100.     pACEditando[MAX_PLAYERS],
  101.     pEstaEmCasa[MAX_PLAYERS],
  102.     pTempoEEC[MAX_PLAYERS]
  103. ;
  104.  
  105. enum pInfo
  106. {
  107.     pCasa
  108. }
  109. new PlayerInfo[MAX_PLAYERS][pInfo];
  110.  
  111. enum sInfo
  112. {
  113.     // ** DADOS SALVÁVEIS ** //
  114.     // Sistema de casas
  115.     sNCas,
  116. }
  117. new ServerInfo[sInfo];
  118.  
  119. new
  120.     pListarCasas[MAX_PLAYERS][11]
  121. ;
  122.  
  123. public OnFilterScriptInit()
  124. {
  125.  
  126.     print("\n\n\n---------------------------------------------------------");
  127.     print("Este servidor usa o sistema de casas por Rodney Francalim");
  128.     print("---------------------------------------------------------\n\n\n");
  129.  
  130.     ServerInfo[sNCas] = -1;
  131.  
  132.     for(new i = 0; i < MAX_CASAS; ++i)
  133.     {
  134.         CasaInfo[i][cID] = -1;
  135.         CarregarCasa(i);
  136.     }
  137.  
  138.     return 1;
  139. }
  140.  
  141. public OnFilterScriptExit()
  142. {
  143.     return 1;
  144. }
  145.  
  146. public OnPlayerConnect(playerid)
  147. {
  148.     ResetarVarAdminCasas(playerid);
  149.  
  150.     pTempoEEC[playerid] = 0;
  151.     pEstaEmCasa[playerid] = -1;
  152.  
  153.     PlayerInfo[playerid][pCasa] = -1;
  154.  
  155.     return 1;
  156. }
  157.  
  158. public OnPlayerDisconnect(playerid, reason)
  159. {
  160.     return 1;
  161. }
  162.  
  163. CMD:acasas(playerid)
  164. {
  165.     if(PodeUsarComando(playerid))
  166.     {
  167.         //if(!IsPlayerAdmin(playerid)) return OnPlayerCommandPerformed(playerid, "/acasas", false);
  168.         TogglePlayerControllable(playerid, false);
  169.         if(gettime() < pTempoEEC[playerid] && pEstaEmCasa[playerid] > -1)
  170.             pListarCasas[playerid][10] = pEstaEmCasa[playerid];
  171.         else
  172.             pListarCasas[playerid][10] = -1;
  173.  
  174.         ListaAdminCasas(playerid);
  175.     }
  176.  
  177.     return 1;
  178. }
  179.  
  180. CMD:casa(playerid)
  181. {
  182.     if(PodeUsarComando(playerid))
  183.     {
  184.         if(PlayerInfo[playerid][pCasa] > -1) // Tem uma casa
  185.             ShowPlayerDialog(playerid, DIALOG_PLAYER_CASA_COM_GER, DIALOG_STYLE_LIST, ""COR_TITULO"Gerenciar casa", "Gerenciar casa\n"COR_DESABILITADO"Comprar casa (+)", "Escolher", "Sair");
  186.         else // Não tem uma casa
  187.         {
  188.             if(pTempoEEC[playerid] > gettime() && pEstaEmCasa[playerid] > -1 && strcmp(CasaInfo[pEstaEmCasa[playerid]][cDono], "Governo", false) == 0) // Pode comprar a casa
  189.                 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");
  190.             else // Não pode comprar a casa
  191.                 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");
  192.         }
  193.     }
  194.  
  195.     return 1;
  196. }
  197.  
  198. CMD:entrar(playerid)
  199. {
  200.     if(PodeUsarComando(playerid))
  201.     {
  202.         if(gettime() < pTempoEEC[playerid])
  203.         {
  204.             if(IsPlayerInRangeOfPoint(playerid, 1.0, CasaInfo[pEstaEmCasa[playerid]][cX], CasaInfo[pEstaEmCasa[playerid]][cY], CasaInfo[pEstaEmCasa[playerid]][cZ]))
  205.             {
  206.                 if((PlayerInfo[playerid][pCasa] == pEstaEmCasa[playerid]) || CasaInfo[pEstaEmCasa[playerid]][cEntrada])
  207.                 {
  208.                     SetPlayerPos(playerid, InterioresCasasPos[CasaInfo[pEstaEmCasa[playerid]][cInterior]][0], InterioresCasasPos[CasaInfo[pEstaEmCasa[playerid]][cInterior]][1], InterioresCasasPos[CasaInfo[pEstaEmCasa[playerid]][cInterior]][2]);
  209.                     SetPlayerInterior(playerid, InterioresCasasInt[CasaInfo[pEstaEmCasa[playerid]][cInterior]][0]);
  210.                     SetPlayerVirtualWorld(playerid, pEstaEmCasa[playerid] + 500);
  211.                 }
  212.                 else
  213.                     SCM(playerid, " "COR_ERRO"* "COR_PADRAO"Porta trancada.");
  214.             }
  215.         }
  216.     }
  217.  
  218.     return 1;
  219. }
  220.  
  221. CMD:sair(playerid)
  222. {
  223.     if(PodeUsarComando(playerid))
  224.     {
  225.         if(gettime() < pTempoEEC[playerid])
  226.         {
  227.             if(IsPlayerInRangeOfPoint(playerid, 1.0, InterioresCasasPos[CasaInfo[pEstaEmCasa[playerid]][cInterior]][0], InterioresCasasPos[CasaInfo[pEstaEmCasa[playerid]][cInterior]][1], InterioresCasasPos[CasaInfo[pEstaEmCasa[playerid]][cInterior]][2]))
  228.             {
  229.                 if((PlayerInfo[playerid][pCasa] == pEstaEmCasa[playerid]) || CasaInfo[pEstaEmCasa[playerid]][cEntrada])
  230.                 {
  231.                     SetPlayerPos(playerid, CasaInfo[pEstaEmCasa[playerid]][cX], CasaInfo[pEstaEmCasa[playerid]][cY], CasaInfo[pEstaEmCasa[playerid]][cZ]);
  232.                     SetPlayerVirtualWorld(playerid, CasaInfo[pEstaEmCasa[playerid]][cVW]);
  233.                     SetPlayerInterior(playerid, CasaInfo[pEstaEmCasa[playerid]][cInt]);
  234.                 }
  235.                 else
  236.                     SCM(playerid, " "COR_ERRO"* "COR_PADRAO"Porta trancada.");
  237.             }
  238.         }
  239.     }
  240.  
  241.     return 1;
  242. }
  243.  
  244. public OnPlayerSpawn(playerid)
  245. {
  246.     new
  247.         arquivo[20 + MAX_PLAYER_NAME]
  248.     ;
  249.  
  250.     format(arquivo, sizeof(arquivo), CONTAS, pNome(playerid));
  251.     PlayerInfo[playerid][pCasa] = DOF2_GetInt(arquivo, "Casa", "CASA");
  252.     DOF2_SaveFile();
  253.     if(PlayerInfo[playerid][pCasa] > -1)
  254.     {
  255.         if(strcmp(CasaInfo[PlayerInfo[playerid][pCasa]][cDono], pNome(playerid), false) != 0)
  256.         {
  257.             SCM(playerid, " "COR_ERRO"* "COR_PADRAO"Você perdeu sua casa.");
  258.             PlayerInfo[playerid][pCasa] = -1;
  259.         }
  260.         else
  261.             CasaInfo[PlayerInfo[playerid][pCasa]][cDonoID] = playerid;
  262.     }
  263.  
  264.     return 1;
  265. }
  266.  
  267. public OnPlayerPickUpDynamicPickup(playerid, pickupid)
  268. {
  269.     for(new i = 0; i < MAX_CASAS; ++i)
  270.     {
  271.         if(CasaInfo[i][cPickup] == pickupid || CasaInfo[i][cPickupSaida] == pickupid)
  272.         {
  273.             pTempoEEC[playerid] = gettime() + 5;
  274.             pEstaEmCasa[playerid] = i;
  275.         }
  276.     }
  277.  
  278.  
  279.  
  280.     return 1;
  281. }
  282.  
  283. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  284. {
  285.     return 1;
  286. }
  287.  
  288. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  289. {
  290.     return 1;
  291. }
  292.  
  293. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  294. {
  295.     new
  296.         str[1024] // NÃO COLOQUE NO GM
  297.     ;
  298.  
  299.     switch(dialogid)
  300.     {
  301.         case DIALOG_ADMIN_CASAS_LISTA:
  302.         {
  303.             pEstaEmCasa[playerid] = -1;
  304.             if(response)
  305.             {
  306.                 switch(listitem)
  307.                 {
  308.                     case 0 .. 9:
  309.                     {
  310.                         if(pListarCasas[playerid][listitem] >= 0)
  311.                         {
  312.                             pACEditando[playerid] = pListarCasas[playerid][listitem];
  313.                             ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_OQ_FAZER, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", "Editar\nExcluir\nIr", "Escolher", "Voltar");
  314.                         }
  315.                         else
  316.                             ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", MenuAdminCasas(playerid), "Escolher", "Voltar");
  317.                     }
  318.                     case 10:
  319.                     {
  320.                         if(pListarCasas[playerid][10] > 0) // PRÓXIMA LISTA
  321.                             ListaAdminCasas(playerid);
  322.                         else
  323.                             ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", MenuAdminCasas(playerid), "Escolher", "Voltar");
  324.                     }
  325.                     case 11:
  326.                         ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", MenuAdminCasas(playerid), "Escolher", "Voltar");
  327.                 }
  328.             }
  329.             else
  330.             {
  331.                 ResetarVarAdminCasas(playerid);
  332.                 TogglePlayerControllable(playerid, true);
  333.             }
  334.         }
  335.         case DIALOG_ADMIN_CASAS_OQ_FAZER:
  336.         {
  337.             if(response)
  338.             {
  339.                 switch(listitem)
  340.                 {
  341.                     case 0: // Editar
  342.                     {
  343.                         format(pACDono[playerid], MAX_PLAYER_NAME, "%s", CasaInfo[pACEditando[playerid]][cDono]);
  344.                         pACPreco[playerid] = CasaInfo[pACEditando[playerid]][cPrecoFixo];
  345.                         pACEntrada[playerid] = CasaInfo[pACEditando[playerid]][cEntrada];
  346.                         pACInterior[playerid] = CasaInfo[pACEditando[playerid]][cInterior];
  347.                         ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", MenuAdminCasas(playerid), "Escolher", "Voltar");
  348.                     }
  349.                     case 1: // Excluir
  350.                     {
  351.                         printf("A casa de ID %d foi deletada pelo administrador %s.", pACEditando[playerid], pNome(playerid));
  352.                         CasaInfo[pACEditando[playerid]][cID] = -1;
  353.                         DestroyDynamicPickup(CasaInfo[pACEditando[playerid]][cPickup]);
  354.                         DestroyDynamicPickup(CasaInfo[pACEditando[playerid]][cPickupSaida]);
  355.                         DestroyDynamic3DTextLabel(CasaInfo[pACEditando[playerid]][cLbl]);
  356.                         TogglePlayerControllable(playerid, true);
  357.                         DOF2_RemoveFile(DirCasa(pACEditando[playerid]));
  358.                         ResetarVarAdminCasas(playerid);
  359.                     }
  360.                     case 2: // Ir
  361.                     {
  362.                         SetPlayerPos(playerid, CasaInfo[pACEditando[playerid]][cX], CasaInfo[pACEditando[playerid]][cY], CasaInfo[pACEditando[playerid]][cZ]);
  363.                         SetPlayerInterior(playerid, CasaInfo[pACEditando[playerid]][cInt]);
  364.                         SetPlayerVirtualWorld(playerid, CasaInfo[pACEditando[playerid]][cVW]);
  365.                         TogglePlayerControllable(playerid, true);
  366.                         ResetarVarAdminCasas(playerid);
  367.                     }
  368.                 }
  369.             }
  370.             else
  371.             {
  372.                 pListarCasas[playerid][10] = pListarCasas[playerid][0];
  373.                 ListaAdminCasas(playerid);
  374.                 ResetarVarAdminCasas(playerid);
  375.             }
  376.         }
  377.         case DIALOG_ADMIN_CASAS_MENU:
  378.         {
  379.             if(response)
  380.             {
  381.                 switch(listitem)
  382.                 {
  383.                     case 0: // Dono
  384.                         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");
  385.                     case 1: // Preço
  386.                         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");
  387.                     case 2: // Porta
  388.                     {
  389.                         pACEntrada[playerid] = ~pACEntrada[playerid];
  390.                         ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", MenuAdminCasas(playerid), "Escolher", "Voltar");
  391.                     }
  392.                     case 3: // Interior
  393.                         ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_INTS, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", ListaInterioresCasas(), "Escolher", "Voltar");
  394.                     case 4: // Finalizar
  395.                     {
  396.                         if(pACDono[playerid][0] == EOS || pACPreco[playerid] < 0 || pACInterior[playerid] < 0)
  397.                             ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", MenuAdminCasas(playerid), "Escolher", "Voltar");
  398.                         else
  399.                             ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_FINAL, DIALOG_STYLE_MSGBOX, ""COR_TITULO"Administrar casas", MenuAdminCasasFinalizar(playerid), "Sim", "Não");
  400.                     }
  401.                 }
  402.             }
  403.             else
  404.             {
  405.                 if(pACInterior[playerid] > - 1)
  406.                     ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_OQ_FAZER, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", "Editar\nExcluir\nIr", "Escolher", "Voltar");
  407.                 else
  408.                 {
  409.                     pListarCasas[playerid][10] = pListarCasas[playerid][0];
  410.                     ListaAdminCasas(playerid);
  411.                     ResetarVarAdminCasas(playerid);
  412.                 }
  413.             }
  414.         }
  415.         case DIALOG_ADMIN_CASAS_DONO:
  416.         {
  417.             if(response)
  418.             {
  419.                 new
  420.                     arquivo[20 + MAX_PLAYER_NAME]
  421.                 ;
  422.  
  423.                 format(arquivo, sizeof(arquivo), CONTAS, inputtext);
  424.  
  425.                 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");
  426.                 format(pACDono[playerid], MAX_PLAYER_NAME, "%s", inputtext);
  427.             }
  428.             else
  429.                 format(pACDono[playerid], MAX_PLAYER_NAME, "Governo");
  430.  
  431.             ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", MenuAdminCasas(playerid), "Escolher", "Voltar");
  432.         }
  433.         case DIALOG_ADMIN_CASAS_PRECO:
  434.         {
  435.             if(response)
  436.             {
  437.                 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");
  438.                 pACPreco[playerid] = strval(inputtext);
  439.             }
  440.             ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", MenuAdminCasas(playerid), "Escolher", "Voltar");
  441.         }
  442.         case DIALOG_ADMIN_CASAS_INTS:
  443.         {
  444.             if(response)
  445.                 pACInterior[playerid] = listitem;
  446.  
  447.             ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", MenuAdminCasas(playerid), "Escolher", "Voltar");
  448.         }
  449.         case DIALOG_ADMIN_CASAS_FINAL:
  450.         {
  451.             if(response)
  452.             {
  453.                 new
  454.                     Float:p[3]
  455.                 ;
  456.  
  457.                 GetPlayerPos(playerid, p[0], p[1], p[2]);
  458.                 CriarOuEditarCasa(pACEditando[playerid], pACDono[playerid], pACPreco[playerid], p[0], p[1], p[2], pACEntrada[playerid], GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid), pACInterior[playerid]);
  459.  
  460.                 ResetarVarAdminCasas(playerid);
  461.                 TogglePlayerControllable(playerid, true);
  462.             }
  463.             else
  464.                 ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", MenuAdminCasas(playerid), "Escolher", "Voltar");
  465.         }
  466.         case DIALOG_PLAYER_CASA_COM_GER:
  467.         {
  468.             if(response)
  469.             {
  470.                 switch(listitem)
  471.                 {
  472.                     case 0: // Gerenciar casa
  473.                     {
  474.                         if(PlayerInfo[playerid][pCasa] > -1)
  475.                         {
  476.                             if(!IsPlayerInRangeOfPoint(playerid, 3.0, CasaInfo[PlayerInfo[playerid][pCasa]][cX], CasaInfo[PlayerInfo[playerid][pCasa]][cY], CasaInfo[PlayerInfo[playerid][pCasa]][cZ]) &&
  477.                                 !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]))
  478.                                 return SCM(playerid, " "COR_ERRO"* "COR_PADRAO"Você não está dentro, ou na porta, da sua casa.");
  479.  
  480.                             ShowPlayerDialog(playerid, DIALOG_PLAYER_CASA_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Gerenciar casa", MenuGerCasa(PlayerInfo[playerid][pCasa]), "Escolher", "Sair");
  481.                         }
  482.                         else
  483.                         {
  484.                             if(pTempoEEC[playerid] > gettime() && pEstaEmCasa[playerid] != PlayerInfo[playerid][pCasa])
  485.                                 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");
  486.                             else
  487.                                 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");
  488.                         }
  489.                     }
  490.                     case 1: // Comprar casa (+)
  491.                     {
  492.                         if(PlayerInfo[playerid][pCasa] <= -1 && pEstaEmCasa[playerid] > -1 && pTempoEEC[playerid] > gettime() && PlayerInfo[playerid][pCasa] != pEstaEmCasa[playerid] && strcmp(CasaInfo[pEstaEmCasa[playerid]][cDono], "Governo", false) == 0)
  493.                         {
  494.                             // Retira o dinheiro no PlayerInfo[playerid][pBanco];
  495.                             PlayerInfo[playerid][pCasa] = pEstaEmCasa[playerid];
  496.                             CasaInfo[PlayerInfo[playerid][pCasa]][cDono][0] = EOS;
  497.                             strins(CasaInfo[PlayerInfo[playerid][pCasa]][cDono], pNome(playerid), 0);
  498.                             CasaInfo[PlayerInfo[playerid][pCasa]][cDonoID] = playerid;
  499.                             SalvarCasa(PlayerInfo[playerid][pCasa]);
  500.                             ConectarCasa(PlayerInfo[playerid][pCasa]);
  501.                             format(str, sizeof(str), " "COR_OK"* "COR_PADRAO"Você comprou a casa de ID %d.", pEstaEmCasa[playerid]);
  502.                             SCM(playerid, str);
  503.                         }
  504.                         else
  505.                         {
  506.                             if(PlayerInfo[playerid][pCasa] == -1)
  507.                                 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");
  508.                             else
  509.                                 ShowPlayerDialog(playerid, DIALOG_PLAYER_CASA_COM_GER, DIALOG_STYLE_LIST, ""COR_TITULO"Gerenciar casa", "Gerenciar casa\n"COR_DESABILITADO"Comprar casa (+)", "Escolher", "Sair");
  510.                         }
  511.                     }
  512.                 }
  513.             }
  514.         }
  515.         case DIALOG_PLAYER_CASA_MENU:
  516.         {
  517.             if(response)
  518.             {
  519.                 switch(listitem)
  520.                 {
  521.                     case 0: // Porta aberta ou fechada
  522.                     {
  523.                         CasaInfo[PlayerInfo[playerid][pCasa]][cEntrada] = ~CasaInfo[PlayerInfo[playerid][pCasa]][cEntrada];
  524.                         ShowPlayerDialog(playerid, DIALOG_PLAYER_CASA_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Gerenciar casa", MenuGerCasa(PlayerInfo[playerid][pCasa]), "Escolher", "Sair");
  525.                     }
  526.                     default: // Vende-la
  527.                         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");
  528.                 }
  529.             }
  530.         }
  531.         case DIALOG_PLAYER_CASA_VENDER_I:
  532.         {
  533.             if(response)
  534.             {
  535.                 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");
  536.                 if(strval(inputtext) == -1) // Governo
  537.                 {
  538.                     CasaInfo[PlayerInfo[playerid][pCasa]][cDono][0] = EOS;
  539.                     strins(CasaInfo[PlayerInfo[playerid][pCasa]][cDono], "Governo", 0);
  540.                     SalvarCasa(PlayerInfo[playerid][pCasa]);
  541.                     ConectarCasa(PlayerInfo[playerid][pCasa]);
  542.                     PlayerInfo[playerid][pCasa] = -1;
  543.                     //SalvarConta(playerid);
  544.                     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));
  545.                     SCM(playerid, str);
  546.                     // Dá CasaInfo[PlayerInfo[playerid][pCasa]][cPrecoFixo] - (CasaInfo[PlayerInfo[playerid][pCasa]][cPrecoFixo] * 0.2)
  547.                     // ao player
  548.                 }
  549.                 else
  550.                 {
  551.                     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");
  552.                     if(!IsPlayerInRangeOfPoint(strval(inputtext), 3.0, CasaInfo[PlayerInfo[playerid][pCasa]][cX], CasaInfo[PlayerInfo[playerid][pCasa]][cY], CasaInfo[PlayerInfo[playerid][pCasa]][cZ]) &&
  553.                         !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]))
  554.                         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");
  555.  
  556.                     CasaInfo[PlayerInfo[playerid][pCasa]][cVenP] = strval(inputtext);
  557.                     pACEditando[strval(inputtext)] = PlayerInfo[playerid][pCasa];
  558.                     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");
  559.                 }
  560.             }
  561.             else
  562.                 ShowPlayerDialog(playerid, DIALOG_PLAYER_CASA_MENU, DIALOG_STYLE_LIST, ""COR_TITULO"Gerenciar casa", MenuGerCasa(PlayerInfo[playerid][pCasa]), "Escolher", "Sair");
  563.         }
  564.         case DIALOG_PLAYER_CASA_VENDER_P:
  565.         {
  566.             if(response)
  567.             {
  568.                 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");
  569.                 if(!IsPlayerInRangeOfPoint(CasaInfo[PlayerInfo[playerid][pCasa]][cVenP], 3.0, CasaInfo[PlayerInfo[playerid][pCasa]][cX], CasaInfo[PlayerInfo[playerid][pCasa]][cY], CasaInfo[PlayerInfo[playerid][pCasa]][cZ]) &&
  570.                     !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]))
  571.                     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");
  572.  
  573.                 CasaInfo[PlayerInfo[playerid][pCasa]][cPreco] = strval(inputtext);
  574.                 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));
  575.                 ShowPlayerDialog(CasaInfo[PlayerInfo[playerid][pCasa]][cVenP], DIALOG_PLAYER_CASA_COMPRAR, DIALOG_STYLE_MSGBOX, ""COR_TITULO"Comprar casa", str, "Sim", "Não");
  576.             }
  577.             else
  578.                 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");
  579.         }
  580.         case DIALOG_PLAYER_CASA_COMPRAR:
  581.         {
  582.             if(response)
  583.             {
  584.                 CasaInfo[pACEditando[playerid]][cDono][0] = EOS;
  585.                 strins(CasaInfo[pACEditando[playerid]][cDono], pNome(playerid), 0);
  586.                 PlayerInfo[CasaInfo[pACEditando[playerid]][cDonoID]][pCasa] = -1;
  587.                 PlayerInfo[playerid][pCasa] = pACEditando[playerid];
  588.                 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]);
  589.                 SCM(playerid, str);
  590.                 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]);
  591.                 SCM(CasaInfo[pACEditando[playerid]][cDonoID], str);
  592.                 ConectarCasa(pACEditando[playerid]);
  593.                 ResetarVarAdminCasas(playerid);
  594.                 ResetarVarAdminCasas(CasaInfo[PlayerInfo[playerid][pCasa]][cDonoID]);
  595.                 CasaInfo[PlayerInfo[playerid][pCasa]][cDonoID] = playerid;
  596.             }
  597.         }
  598.     }
  599.     return 1;
  600. }
  601.  
  602. // SISTEMA DE CASAS (by.: Rodney Francalim)
  603. stock Atualizar3DCasa(casaid)
  604. {
  605.     new
  606.         str[512]
  607.     ;
  608.  
  609.     if(strcmp(CasaInfo[casaid][cDono], "Governo", false) == 0)
  610.         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]);
  611.     else
  612.         format(str, sizeof(str), ""COR_TITULO"ID: "COR_CASA_ID"%d\n"COR_TITULO"Proprietário: "COR_CASA_DONO"%s", casaid, CasaInfo[casaid][cDono]);
  613.  
  614.     DestroyDynamic3DTextLabel(CasaInfo[casaid][cLbl]);
  615.     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);
  616.  
  617.     return 1;
  618. }
  619.  
  620. stock CarregarCasa(casaid)
  621. {
  622.     if(!DOF2_FileExists(DirCasa(casaid))) return 0;
  623.  
  624.     // DADOS
  625.     CasaInfo[casaid][cID] = casaid;
  626.     format(CasaInfo[casaid][cDono], MAX_PLAYER_NAME, "%s", DOF2_GetString(DirCasa(casaid), "Dono", "DADOS"));
  627.     CasaInfo[casaid][cPrecoFixo] = DOF2_GetInt(DirCasa(casaid), "PreçoFixo", "DADOS");
  628.  
  629.     // ESTRUTURA
  630.     CasaInfo[casaid][cX] = DOF2_GetFloat(DirCasa(casaid), "PosX", "ESTRUTURA");
  631.     CasaInfo[casaid][cY] = DOF2_GetFloat(DirCasa(casaid), "PosY", "ESTRUTURA");
  632.     CasaInfo[casaid][cZ] = DOF2_GetFloat(DirCasa(casaid), "PosZ", "ESTRUTURA");
  633.     CasaInfo[casaid][cEntrada] = DOF2_GetBool(DirCasa(casaid), "Entrada", "ESTRUTURA");
  634.     CasaInfo[casaid][cInt] = DOF2_GetInt(DirCasa(casaid), "Int", "ESTRUTURA");
  635.     CasaInfo[casaid][cVW] = DOF2_GetInt(DirCasa(casaid), "VW", "ESTRUTURA");
  636.  
  637.     // INTERIOR
  638.     CasaInfo[casaid][cInterior] = DOF2_GetInt(DirCasa(casaid), "Interior", "INTERIOR");
  639.     ++ServerInfo[sNCas];
  640.  
  641.     ConectarCasa(casaid);
  642.  
  643.     return 1;
  644. }
  645.  
  646. stock ConectarCasa(casaid)
  647. {
  648.     Atualizar3DCasa(casaid);
  649.  
  650.     DestroyDynamicPickup(CasaInfo[casaid][cPickup]);
  651.  
  652.     if(strcmp(CasaInfo[casaid][cDono], "Governo", false) == 0)
  653.         CasaInfo[casaid][cPickup] = CreateDynamicPickup(1273, 1, CasaInfo[casaid][cX], CasaInfo[casaid][cY], CasaInfo[casaid][cZ], CasaInfo[casaid][cVW], -1, -1, 100);
  654.     else
  655.         CasaInfo[casaid][cPickup] = CreateDynamicPickup(1318, 1, CasaInfo[casaid][cX], CasaInfo[casaid][cY], CasaInfo[casaid][cZ], CasaInfo[casaid][cVW], -1, -1, 100);
  656.  
  657.     CasaInfo[casaid][cPickupSaida] = CreateDynamicPickup(1318, 1, InterioresCasasPos[CasaInfo[casaid][cInterior]][0], InterioresCasasPos[CasaInfo[casaid][cInterior]][1], InterioresCasasPos[CasaInfo[casaid][cInterior]][2], casaid + 500);
  658.  
  659.     return 1;
  660. }
  661.  
  662. stock CriarOuEditarCasa(casaid, dono[], preco, Float:x, Float:y, Float:z, bool:entrada, int, vw, interior)
  663. {
  664.     if((DOF2_FileExists(DirCasa(casaid)) || ServerInfo[sNCas] >= MAX_CASAS - 1) && casaid == -1) return 0;
  665.  
  666.     new
  667.         auxcasaid = casaid
  668.     ;
  669.  
  670.     if(auxcasaid == -1)
  671.     {
  672.         ++ServerInfo[sNCas];
  673.         for(new i = 0; i < MAX_CASAS; ++i)
  674.         {
  675.             if(CasaInfo[i][cID] == -1)
  676.             {
  677.                 auxcasaid = i;
  678.                 break;
  679.             }
  680.         }
  681.     }
  682.  
  683.     // DADOS
  684.     format(CasaInfo[auxcasaid][cDono], MAX_PLAYER_NAME, "%s", dono);
  685.     if(strcmp(CasaInfo[auxcasaid][cDono], "Governo", false) != 0)
  686.     {
  687.         for(new i = 0; i < MAX_PLAYERS; ++i)
  688.         {
  689.             if(IsPlayerConnected(i))
  690.             {
  691.                 if(strcmp(dono, pNome(i), false) == 0)
  692.                 {
  693.                     PlayerInfo[i][pCasa] = auxcasaid;
  694.                     break;
  695.                 }
  696.             }
  697.             else
  698.             {
  699.                 new
  700.                     arquivo[20 + MAX_PLAYER_NAME]
  701.                 ;
  702.  
  703.                 format(arquivo, sizeof(arquivo), CONTAS, dono);
  704.                 if(DOF2_FileExists(arquivo))
  705.                 {
  706.                     DOF2_SetInt(arquivo, "Casa", auxcasaid, "CASA");
  707.                     DOF2_SaveFile();
  708.                     break;
  709.                 }
  710.             }
  711.         }
  712.     }
  713.     CasaInfo[auxcasaid][cID] = auxcasaid;
  714.     CasaInfo[auxcasaid][cPrecoFixo] = preco;
  715.  
  716.     // ESTRUTURA
  717.     CasaInfo[auxcasaid][cEntrada] = entrada;
  718.  
  719.     // INTERIOR
  720.     CasaInfo[auxcasaid][cSX] = InterioresCasasPos[interior][0];
  721.     CasaInfo[auxcasaid][cSY] = InterioresCasasPos[interior][1];
  722.     CasaInfo[auxcasaid][cSZ] = InterioresCasasPos[interior][2];
  723.  
  724.     if(casaid == -1) // Criando casa
  725.     {
  726.         // ESTRUTURA
  727.         CasaInfo[auxcasaid][cX] = x;
  728.         CasaInfo[auxcasaid][cY] = y;
  729.         CasaInfo[auxcasaid][cZ] = z;
  730.         CasaInfo[auxcasaid][cInt] = int;
  731.         CasaInfo[auxcasaid][cVW] = vw;
  732.  
  733.         // INTERIOR
  734.         CasaInfo[auxcasaid][cInterior] = interior;
  735.     }
  736.     else // Editando casa
  737.         if(CasaInfo[auxcasaid][cInterior] != interior)
  738.             CasaInfo[auxcasaid][cInterior] = interior;
  739.  
  740.     SalvarCasa(auxcasaid);
  741.     Atualizar3DCasa(auxcasaid);
  742.     ConectarCasa(auxcasaid);
  743.  
  744.     return 1;
  745. }
  746.  
  747. stock DirCasa(casaid)
  748. {
  749.     new
  750.         arquivo[20]
  751.     ;
  752.  
  753.     format(arquivo, sizeof(arquivo), CASAS, casaid);
  754.     return arquivo;
  755. }
  756.  
  757. stock ListaAdminCasas(playerid)
  758. {
  759.     new
  760.         str[600] // 623
  761.     ;
  762.  
  763.     for(new i = pListarCasas[playerid][10], c = -1; i < MAX_CASAS; ++i)
  764.     {
  765.         pListarCasas[playerid][c + 1] = -1;
  766.         if(c < 9)
  767.         {
  768.             if(DOF2_FileExists(DirCasa(i)))
  769.             {
  770.                 pListarCasas[playerid][++c] = i;
  771.                 if(pEstaEmCasa[playerid] == pListarCasas[playerid][c] && gettime() < pTempoEEC[playerid])
  772.                 {
  773.                     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]);
  774.                 }
  775.                 else
  776.                     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]);
  777.             }
  778.         }
  779.         else
  780.         {
  781.             if(DOF2_FileExists(DirCasa(i)))
  782.             {
  783.                 pListarCasas[playerid][++c] = i;
  784.                 strcat(str, "Próximo >>\n");
  785.                 break;
  786.             }
  787.         }
  788.     }
  789.     strcat(str, ""COR_OK"Adicionar nova casa...");
  790.     ShowPlayerDialog(playerid, DIALOG_ADMIN_CASAS_LISTA, DIALOG_STYLE_LIST, ""COR_TITULO"Administrar casas", str, "Escolher", "Sair");
  791.  
  792.     return 1;
  793. }
  794.  
  795. stock ListaInterioresCasas()
  796. {
  797.     new
  798.         str[512]
  799.     ;
  800.  
  801.     for(new i = 0; i <= MAX_INTERIORES_CASAS - 1; ++i)
  802.         format(str, sizeof(str), "%sInterior %d%s\n", str, i + 1, i + 1 == 1 ? (" - Mais luxuoso") : (i + 1 == MAX_INTERIORES_CASAS ? (" - Menos luxuoso") : ("")));
  803.  
  804.     return str;
  805. }
  806.  
  807. stock MenuAdminCasas(playerid)
  808. {
  809.     new
  810.         str[512]
  811.     ;
  812.  
  813.     if(pACDono[playerid][0] == EOS) strcat(str, ""COR_ERRO"Dono\n");
  814.     else format(str, sizeof(str), "%s"COR_TITULO"Dono: "COR_CASA_DONO"%s\n", str, pACDono[playerid]);
  815.  
  816.     if(pACPreco[playerid] <= 0) strcat(str, ""COR_ERRO"Preço\n");
  817.     else format(str, sizeof(str), "%s"COR_TITULO"Preço: "COR_CASA_PRECO"%d US$\n", str, pACPreco[playerid]);
  818.  
  819.     if(pACEntrada[playerid]) strcat(str, "Porta "COR_OK"aberta\n");
  820.     else strcat(str, "Porta "COR_ERRO"fechada\n");
  821.  
  822.     if(pACInterior[playerid] < 0) strcat(str, ""COR_ERRO"Interior\n");
  823.     else format(str, sizeof(str), "%s"COR_TITULO"Interior: "COR_CASA_ID"%d\n", str, pACInterior[playerid] + 1);
  824.  
  825.     if(pACInterior[playerid] > -1 && pACPreco[playerid] > 0 && pACDono[playerid][0] != EOS)
  826.         strcat(str, ""COR_INFO"Finalizar!");
  827.     else
  828.         strcat(str, ""COR_DESABILITADO"Finalizar!");
  829.     return str;
  830. }
  831.  
  832. stock MenuAdminCasasFinalizar(playerid)
  833. {
  834.     new
  835.         str[512]
  836.     ;
  837.  
  838.     strcat(str, ""COR_TITULO"Estes são os dados da casa.\n\n");
  839.  
  840.     format(str, sizeof(str), "%sDono: "COR_CASA_DONO"%s\n", str, pACDono[playerid]);
  841.  
  842.     format(str, sizeof(str), "%s"COR_TITULO"Preço: "COR_CASA_PRECO"%d US$\n", str, pACPreco[playerid]);
  843.  
  844.     if(pACEntrada[playerid]) strcat(str, ""COR_TITULO"Porta "COR_OK"aberta\n");
  845.     else strcat(str, ""COR_TITULO"Porta "COR_ERRO"fechada\n");
  846.  
  847.     format(str, sizeof(str), "%s"COR_TITULO"Interior: "COR_CASA_ID"%d\n\n\n"COR_INFO"", str, pACInterior[playerid] + 1);
  848.  
  849.     strcat(str, pACEditando[playerid] <= -1 ? ("Quer criar esta casa aqui?") : ("Quer atualizar esta casa?"));
  850.  
  851.     return str;
  852. }
  853.  
  854. stock MenuGerCasa(casaid)
  855. {
  856.     new
  857.         str[512]
  858.     ;
  859.  
  860.     if(CasaInfo[casaid][cEntrada]) strcat(str, "Porta "COR_OK"aberta\n");
  861.     else strcat(str, "Porta "COR_ERRO"fechada\n");
  862.  
  863.     strcat(str, ""COR_INFO"Vendê-la");
  864.  
  865.     return str;
  866. }
  867.  
  868. stock ResetarVarAdminCasas(playerid)
  869. {
  870.     pACDono[playerid][0] = EOS;
  871.     pACEditando[playerid] = -1;
  872.     pACPreco[playerid] = -1;
  873.     pACEntrada[playerid] = false;
  874.     pACInterior[playerid] = -1;
  875.  
  876.     return 1;
  877. }
  878.  
  879. stock SalvarCasa(casaid)
  880. {
  881.     if(!DOF2_FileExists(DirCasa(casaid)))
  882.         DOF2_CreateFile(DirCasa(casaid));
  883.  
  884.     // DADOS
  885.     DOF2_SetInt(DirCasa(casaid), "ID", CasaInfo[casaid][cID], "DADOS");
  886.     DOF2_SetString(DirCasa(casaid), "Dono", CasaInfo[casaid][cDono], "DADOS");
  887.     DOF2_SetInt(DirCasa(casaid), "PreçoFixo", CasaInfo[casaid][cPrecoFixo], "DADOS");
  888.  
  889.     // ESTRUTURA
  890.     DOF2_SetFloat(DirCasa(casaid), "PosX", CasaInfo[casaid][cX], "ESTRUTURA");
  891.     DOF2_SetFloat(DirCasa(casaid), "PosY", CasaInfo[casaid][cY], "ESTRUTURA");
  892.     DOF2_SetFloat(DirCasa(casaid), "PosZ", CasaInfo[casaid][cZ], "ESTRUTURA");
  893.     DOF2_SetBool(DirCasa(casaid), "Entrada", CasaInfo[casaid][cEntrada], "ESTRUTURA");
  894.     DOF2_SetInt(DirCasa(casaid), "Int", CasaInfo[casaid][cInt], "ESTRUTURA");
  895.     DOF2_SetInt(DirCasa(casaid), "VW", CasaInfo[casaid][cVW], "ESTRUTURA");
  896.  
  897.     // INTERIOR
  898.     DOF2_SetInt(DirCasa(casaid), "Interior", CasaInfo[casaid][cInterior], "INTERIOR");
  899.     DOF2_SaveFile();
  900.  
  901.     return 1;
  902. }
  903.  
  904. // NÃO COLOCAR O QUE ESTÁ A PARTIR DAQUI NO GM
  905. stock PodeUsarComando(playerid)
  906.     return playerid >= 0 ? 1 : 0;
  907.  
  908. stock pNome(playerid)
  909. {
  910.     new
  911.         nome[MAX_PLAYER_NAME]
  912.     ;
  913.  
  914.     GetPlayerName(playerid, nome, sizeof(nome));
  915.  
  916.     return nome;
  917. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement