Advertisement
jlalt

jDynamicHouse

Dec 2nd, 2015
1,741
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 39.56 KB | None | 0 0
  1. /*
  2.                       Commands:
  3.                       /createh [ create house [
  4.                       /creatah [ create advanced house ]
  5.                       /buyh [ buy house ]
  6.                       /sellh [ sell house ]
  7.                       /lockh [ lock house for no one enter it ]
  8.                       /unlockh [ un lock house for enter it ]
  9.                       /enterh [ enter house ]
  10.                       /exith [ exit from house ]
  11. _________________________¶¶¶¶¶
  12. _______________________¶¶¶¶¶11¶¶
  13. _____________________¶¶¶¶111111¶¶
  14. ___________________¶¶¶111111111¶¶¶¶
  15. __________________¶¶¶11111111111¶¶¶¶¶¶
  16. _________________¶¶111111111111111111¶¶¶
  17. ________________¶¶1111111111111111111111¶
  18. _______________¶¶1111111111111111111111¶¶
  19. _____________¶¶¶111111111111111111111¶¶¶
  20. __________¶¶¶¶¶1111111111111111111111¶¶¶
  21. _________¶¶¶111111111111111111111111111¶¶¶
  22. _______¶¶¶1111111111111111111111111111111¶¶¶
  23. ______¶¶11111111111111111111111111111111111¶¶
  24. _____¶¶1111111111111111111111111111111111111¶¶
  25. ____¶¶111111111111111111111111111111111111111¶¶
  26. ___¶¶11111111111111111111111111111111111111111¶¶
  27. __¶¶1111111111111111111111111¶11111111111111111¶¶
  28. __¶¶¶111111111111111111111¶¶¶¶11111111111111111¶¶
  29. _¶¶¶¶¶¶¶¶1111111111111¶¶¶¶¶¶¶¶¶11111111111111111¶¶
  30. _¶¶¶¶¶¶¶¶¶¶¶¶111111¶¶¶¶¶¶¶¶¶¶¶¶¶1111111111111111¶¶
  31. ¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶111111111111111111111¶
  32. ¶¶1111¶________¶¶¶_________¶111111111111111111111¶
  33. ¶¶111¶_____¶¶¶_¶¶____¶¶_____¶11111111111111111111¶
  34. ¶¶111¶_____¶¶¶_¶¶___¶¶¶¶____¶11111111111111111111¶
  35. ¶¶1111¶______¶¶¶¶____¶¶____¶111111111111111111111¶
  36. _¶1111¶¶___¶¶¶___¶¶_______¶¶11111111111111111111¶¶
  37. _¶¶11111¶¶¶¶_______¶¶¶¶¶¶¶1111111111111111111111¶¶
  38. __¶1111¶¶¶___________¶¶¶11111111111111111111111¶¶
  39. __¶¶1¶¶¶_______________¶¶¶¶¶¶¶¶¶¶¶1111111111111¶¶
  40. ___¶¶¶¶___$$$$$$$$$$$$$¶¶_____¶¶¶¶¶¶¶111111111¶¶
  41. ____¶¶1¶¶$$$$$$$$_____¶¶____________¶¶¶111111¶¶
  42. _____¶¶11¶¶_________¶¶¶_______________¶¶¶111¶¶
  43. ______¶¶11¶¶¶______¶¶___________________¶11¶¶
  44. _______¶¶1¶__¶¶¶__¶¶____________________¶¶¶¶
  45. _________¶¶¶____¶¶_____________________¶¶¶
  46. ___________¶¶¶_______________________¶¶¶
  47. ____________¶¶¶¶_________________¶¶¶¶
  48. ________________¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶
  49. */
  50.  
  51.  
  52. #include a_samp
  53. #include a_mysql
  54. #include streamer
  55. #include zcmd
  56. #define MAX_HOUSES              2000
  57. //==========================Data Enums==========================================
  58. enum h_info
  59. {
  60.     Houseid,
  61.     Owner[128],
  62.     Owned,
  63.     Locked,
  64.     Interior,
  65.     World,
  66.     Price,
  67.     SPrice,
  68.     Float:HX,
  69.     Float:HY,
  70.     Float:HZ,
  71.     Float:IX,
  72.     Float:IY,
  73.     Float:IZ,
  74. };
  75. enum I_nfo
  76. {
  77.    hID,
  78.    hOwned,
  79. };
  80. //=====================================House News===============================
  81. new PlayerInfo[MAX_PLAYERS][I_nfo],
  82.     HouseInfo[MAX_HOUSES][h_info],
  83.     Text3D:hTextInfo[MAX_HOUSES],
  84.     Text:housetext[MAX_PLAYERS],
  85.     housemapicon[MAX_HOUSES],
  86.     HousePickup[MAX_HOUSES],
  87.     Float:posx[MAX_PLAYERS],
  88.     Float:posy[MAX_PLAYERS],
  89.     Float:posz[MAX_PLAYERS],
  90.     pinterior[MAX_PLAYERS],
  91.     teleporth[MAX_PLAYERS],
  92.     inhouse[MAX_PLAYERS],
  93.     htimer[MAX_PLAYERS],
  94.     Menu:housemain,
  95.     Menu:playerhm,
  96.     Menu:adminhm,
  97.     myhouseid,
  98.     removeh,
  99.     mysql
  100.     ;
  101. //----------====================Forwards================------------------------
  102. forward   housedis(playerid);
  103. forward   LoadHouses();
  104. forward   Teleporth(playerid);
  105. //================================Publics=======================================
  106. public OnFilterScriptInit() {
  107.   mysql_log(LOG_ERROR | LOG_WARNING | LOG_DEBUG);
  108.   mysql = mysql_connect("HOST", "USERNAME", "DATABASE", "PASSWORD");
  109.   if(mysql_errno(mysql) != 0)
  110.   {
  111.    print("Could not connect to database!");
  112.   }
  113.   else
  114.  {
  115.   print("  Successfully connected on DB ");
  116.   new Query[300];
  117.   format(Query,sizeof(Query),"CREATE TABLE IF NOT EXISTS houses(ID INT(128), HX VARCHAR(128), HY VARCHAR(128), HZ VARCHAR(128), IX VARCHAR(128)\
  118.  , IY VARCHAR(128), IZ VARCHAR(128), Price INT(128), SPrice INT(128), Interior INT(10), World INT(128), Locked INT(10), Owned INT(128), Owner VARCHAR(128) )");
  119.   mysql_tquery(mysql, Query, "", "");
  120.   format(Query,sizeof(Query),"CREATE TABLE IF NOT EXISTS accounts(Name VARCHAR(128), hID INT(128), HOwned INT(10) )");
  121.   mysql_tquery(mysql, Query, "", "");
  122.   format(Query, sizeof(Query), "SELECT * FROM houses");
  123.   mysql_tquery(mysql, Query, "LoadHouses", "");
  124.  }
  125.   housemain = CreateMenu("tAxI-XVM",1,440,140,150,40);
  126.   AddMenuItem(housemain,0,"Player House Menu");
  127.   AddMenuItem(housemain,0,"Admin House Menu");
  128.   AddMenuItem(housemain,0,"<exit>");
  129.  
  130.   playerhm = CreateMenu("tAxI-XVM",1,440,140,150,40);
  131.   AddMenuItem(playerhm,0,"Goto House");
  132.   AddMenuItem(playerhm,0,"Buy House");
  133.   AddMenuItem(playerhm,0,"Sell House");
  134.   AddMenuItem(playerhm,0,"Enter House");
  135.   AddMenuItem(playerhm,0,"Exit House");
  136.   AddMenuItem(playerhm,0,"Lock House");
  137.   AddMenuItem(playerhm,0,"UnLock House");
  138.   AddMenuItem(playerhm,0,"<back>");
  139.  
  140.   adminhm = CreateMenu("tAxI-XVM",1,440,140,150,40);
  141.   AddMenuItem(adminhm,0,"Sell House");
  142.   AddMenuItem(adminhm,0,"Reset All Houses");
  143.   AddMenuItem(adminhm,0,"Create a Small House");
  144.   AddMenuItem(adminhm,0,"Create a Medium House");
  145.   AddMenuItem(adminhm,0,"Create a Modern House");
  146.   AddMenuItem(adminhm,0,"Create a Mansion House");
  147.   AddMenuItem(adminhm,0,"<back>");
  148. }
  149. public OnFilterScriptExit() {
  150.     DestroyAllDynamicPickups();
  151.     DestroyAllDynamicMapIcons();
  152.     DestroyAllDynamic3DTextLabels();
  153.     mysql_close(mysql);
  154. }
  155. //==============================Load Houses=====================================
  156. public LoadHouses() {
  157.   new rows, fields;
  158.   cache_get_data(rows, fields, mysql);
  159.   if(rows)
  160.   {
  161.     removeh = cache_get_row_count()-1; myhouseid = cache_get_row_count();
  162.     for(new i = 0; i < cache_get_row_count(); i++) {
  163.       HouseInfo[i][Houseid] = cache_get_row_int(i, 0); new save[128]; cache_get_row(i, 13, save);
  164.       HouseInfo[HouseInfo[i][Houseid]][Owner] = save;
  165.       HouseInfo[HouseInfo[i][Houseid]][HX] = cache_get_row_float(i, 1); HouseInfo[HouseInfo[i][Houseid]][HY] = cache_get_row_float(i, 2);
  166.       HouseInfo[HouseInfo[i][Houseid]][HZ] = cache_get_row_float(i, 3);  HouseInfo[HouseInfo[i][Houseid]][Owned] = cache_get_row_int(i, 12);
  167.       HouseInfo[HouseInfo[i][Houseid]][Locked] = cache_get_row_int(i, 11); HouseInfo[HouseInfo[i][Houseid]][Price] = cache_get_row_int(i, 7);
  168.       HouseInfo[HouseInfo[i][Houseid]][SPrice] = cache_get_row_int(i, 8); HouseInfo[HouseInfo[i][Houseid]][Interior] = cache_get_row_int(i, 9);
  169.       HouseInfo[HouseInfo[i][Houseid]][World] = cache_get_row_int(i, 10); HouseInfo[HouseInfo[i][Houseid]][IX] = cache_get_row_float(i, 4);
  170.       HouseInfo[HouseInfo[i][Houseid]][IY] = cache_get_row_float(i, 5); HouseInfo[HouseInfo[i][Houseid]][IZ] = cache_get_row_float(i, 6);
  171.       if(HouseInfo[HouseInfo[i][Houseid]][Owned] == 0) {
  172.         HousePickup[HouseInfo[i][Houseid]] = CreateDynamicPickup(1273, 23, HouseInfo[HouseInfo[i][Houseid]][HX], HouseInfo[HouseInfo[i][Houseid]][HY], HouseInfo[HouseInfo[i][Houseid]][HZ]);
  173.         housemapicon[HouseInfo[i][Houseid]] = CreateDynamicMapIcon(HouseInfo[HouseInfo[i][Houseid]][HX], HouseInfo[HouseInfo[i][Houseid]][HY], HouseInfo[HouseInfo[i][Houseid]][HZ],31,0xFFFF00AA);
  174.         hTextInfo[HouseInfo[i][Houseid]] = CreateDynamic3DTextLabel("Not Owned", 0x00FF00FF, HouseInfo[HouseInfo[i][Houseid]][HX], HouseInfo[HouseInfo[i][Houseid]][HY], HouseInfo[HouseInfo[i][Houseid]][HZ]+0.75, 40, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, STREAMER_3D_TEXT_LABEL_SD);
  175.       } else if(HouseInfo[HouseInfo[i][Houseid]][Owned] == 1) {
  176.         new string[MAX_PLAYER_NAME+1];
  177.         format(string,sizeof string,"%s",HouseInfo[HouseInfo[i][Houseid]][Owner]);
  178.         hTextInfo[HouseInfo[i][Houseid]] = CreateDynamic3DTextLabel(string, 0xFF0000FF, HouseInfo[HouseInfo[i][Houseid]][HX], HouseInfo[HouseInfo[i][Houseid]][HY], HouseInfo[HouseInfo[i][Houseid]][HZ]+0.75, 40, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, STREAMER_3D_TEXT_LABEL_SD);
  179.         HousePickup[HouseInfo[HouseInfo[i][Houseid]][Houseid]] = CreateDynamicPickup(1272, 23, HouseInfo[HouseInfo[i][Houseid]][HX], HouseInfo[HouseInfo[i][Houseid]][HY], HouseInfo[HouseInfo[i][Houseid]][HZ]);
  180.         housemapicon[HouseInfo[HouseInfo[i][Houseid]][Houseid]] = CreateDynamicMapIcon(HouseInfo[HouseInfo[i][Houseid]][HX], HouseInfo[HouseInfo[i][Houseid]][HY], HouseInfo[HouseInfo[i][Houseid]][HZ],32,0xFFFF00AA);
  181.         }
  182.      }
  183.    }
  184.   if(!rows) {
  185.     myhouseid = 0;
  186.     print("  No House Loaded On Database");
  187.     }
  188.   printf("  %d House has been Successfully Loaded and Created",myhouseid);
  189.   return 1;
  190. }
  191. //===============================Publics Complete=============================//
  192. public OnPlayerConnect(playerid) {
  193.        new Query[200];
  194.        format(Query, sizeof(Query), "SELECT * FROM accounts WHERE `Name` = '%s'",pName(playerid));
  195.        mysql_tquery(mysql, Query, "LoadAccount", "i",playerid);
  196. }
  197. forward LoadAccount(playerid);
  198. public LoadAccount(playerid) {
  199.    new rows, fields;
  200.    cache_get_data(rows, fields, mysql);
  201.    if(rows) {
  202.      PlayerInfo[playerid][hID] = cache_get_field_content_int(0, "hID");
  203.      PlayerInfo[playerid][hOwned] = cache_get_field_content_int(0, "HOwned");
  204.      }
  205.    if(!rows) {
  206.      new Query[128];
  207.      format(Query, sizeof(Query),"INSERT INTO `accounts` (Name,hID,HOwned) VALUES ('%s','%d','%d')",pName(playerid),0,0);
  208.      mysql_tquery(mysql, Query, "", "");
  209.    }
  210. }
  211. public OnPlayerSelectedMenuRow(playerid, row)
  212. {
  213.   new Menu:Current = GetPlayerMenu(playerid);
  214.   if(Current == housemain) {
  215.       switch(row){
  216.           case 0:ShowMenuForPlayer(playerhm, playerid);
  217.           case 1:{ if(IsPlayerAdmin(playerid)) { ShowMenuForPlayer(adminhm, playerid); } else return SendClientMessage(playerid, 0xDC143CAA, "You need to be level four to to access");}
  218.           case 2:{HideMenuForPlayer(Current, playerid);TogglePlayerControllable(playerid, true);}
  219.         }
  220.     } else if(Current == playerhm) {
  221.       switch(row){
  222.           case 0:{HideMenuForPlayer(Current, playerid);cmd_gotoh(playerid,"\1");TogglePlayerControllable(playerid, true);}
  223.           case 1:{HideMenuForPlayer(Current, playerid);cmd_buyh(playerid,"\1");TogglePlayerControllable(playerid, true);}
  224.           case 2:{HideMenuForPlayer(Current, playerid);cmd_sellh(playerid,"\1");TogglePlayerControllable(playerid, true);}
  225.       case 3:{HideMenuForPlayer(Current, playerid);cmd_enterh(playerid,"\1");TogglePlayerControllable(playerid, true);}
  226.       case 4:{HideMenuForPlayer(Current, playerid);cmd_exith(playerid,"\1");TogglePlayerControllable(playerid, true);}
  227.       case 5:{HideMenuForPlayer(Current, playerid);cmd_lockh(playerid,"\1");TogglePlayerControllable(playerid, true);}
  228.       case 6:{HideMenuForPlayer(Current, playerid);cmd_unlockh(playerid,"\1");TogglePlayerControllable(playerid, true);}
  229.       case 10:ShowMenuForPlayer(housemain, playerid);
  230.     }
  231.     } else if(Current == adminhm) {
  232.       switch(row){
  233.       case 0:{HideMenuForPlayer(Current, playerid);cmd_asellh(playerid,"\1");TogglePlayerControllable(playerid, true);}
  234.       case 1:{
  235.         HideMenuForPlayer(Current, playerid);
  236.         TogglePlayerControllable(playerid, true);
  237.         if(IsPlayerAdmin(playerid)) {
  238.           cmd_aresetallhs(playerid,"");
  239.         }
  240.         else{ SendClientMessage(playerid, 0xDC143CAA, "You are not a rcon admin and cannot use this feature!"); }
  241.       }
  242.       case 2:{HideMenuForPlayer(Current, playerid);cmd_createh(playerid,"50000 50000 1");TogglePlayerControllable(playerid, true);}
  243.       case 3:{HideMenuForPlayer(Current, playerid);cmd_createh(playerid,"100000 100000 3");TogglePlayerControllable(playerid, true);}
  244.       case 4:{HideMenuForPlayer(Current, playerid);cmd_createh(playerid,"200000 200000 5");TogglePlayerControllable(playerid, true);}
  245.       case 5:{HideMenuForPlayer(Current, playerid);cmd_createh(playerid,"500000 500000 7");TogglePlayerControllable(playerid, true);}
  246.       case 6:ShowMenuForPlayer(housemain, playerid);
  247.     }
  248.   }
  249.   return 1;
  250. }
  251. public OnPlayerPickUpDynamicPickup(playerid, pickupid) {
  252.   for(new i = 0; i < MAX_HOUSES; i++) {
  253.     if(pickupid == HousePickup[HouseInfo[i][Houseid]]) {
  254.       Housestatus(playerid,HouseInfo[i][Houseid]);
  255.     }
  256.   }
  257. }
  258. public housedis(playerid)
  259. {
  260.  TextDrawDestroy(housetext[playerid]);
  261.  SetPVarInt(playerid, "nohtext", 0);
  262.  return 1;
  263. }
  264. public Teleporth(playerid) {
  265.   if(teleporth[playerid] == 0) {
  266.   KillTimer(htimer[playerid]);
  267.   GameTextForPlayer(playerid,"~g~Welcome Home!",2000,3);
  268.   if(IsPlayerInAnyVehicle(playerid) == 1) {
  269.   SetVehiclePos(GetPlayerVehicleID(playerid),HouseInfo[PlayerInfo[playerid][hID]][HX], HouseInfo[PlayerInfo[playerid][hID]][HY], HouseInfo[PlayerInfo[playerid][hID]][HZ]);
  270.   } else {
  271.   SetPlayerPos(playerid, HouseInfo[PlayerInfo[playerid][hID]][HX], HouseInfo[PlayerInfo[playerid][hID]][HY], HouseInfo[PlayerInfo[playerid][hID]][HZ]);
  272.   teleporth[playerid] = 5;}
  273.   } else if(teleporth[playerid] > 0) {
  274.     new text[50]; format(text,sizeof text,"%d",teleporth[playerid]);
  275.     GameTextForPlayer(playerid,text,1000,3);
  276.     teleporth[playerid] --;
  277.     }
  278. }
  279. public OnPlayerSpawn(playerid) {
  280.     if(PlayerInfo[playerid][hOwned] == 1) {
  281.     SetPlayerPos(playerid\
  282.     ,HouseInfo[PlayerInfo[playerid][hID]][HX]\
  283.     ,HouseInfo[PlayerInfo[playerid][hID]][HY]\
  284.     ,HouseInfo[PlayerInfo[playerid][hID]][HZ]);
  285.   }
  286. }
  287.  
  288. //=============================Fuctions=========================================
  289. PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
  290. {
  291.   if(IsPlayerConnected(playerid))
  292.   {
  293.     new Float:oldposx, Float:oldposy, Float:oldposz;
  294.     new Float:tempposx, Float:tempposy, Float:tempposz;
  295.     GetPlayerPos(playerid, oldposx, oldposy, oldposz);
  296.     tempposx = (oldposx -x);
  297.     tempposy = (oldposy -y);
  298.     tempposz = (oldposz -z);
  299.     if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
  300.     {
  301.       return 1;
  302.     }
  303.   }
  304.   return 0;
  305. }
  306. GetHouseID(playerid)
  307. {
  308.   for(new i=0; i<MAX_HOUSES; i++)
  309.   {
  310.       if(PlayerToPoint(1.5, playerid, HouseInfo[i][HX], HouseInfo[i][HY], HouseInfo[i][HZ]))
  311.       {
  312.           return i;
  313.     }
  314.   }
  315.   return -255;
  316. }
  317. pName(playerid) {
  318.   new pname[MAX_PLAYER_NAME];
  319.   GetPlayerName(playerid, pname, sizeof(pname));
  320.   return pname;
  321. }
  322. sscanf(string[], format[], {Float,_}:...)
  323. {
  324.     #if defined isnull
  325.         if (isnull(string))
  326.     #else
  327.         if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  328.     #endif
  329.         {
  330.             return format[0];
  331.         }
  332.     #pragma tabsize 4
  333.     new
  334.         formatPos = 0,
  335.         stringPos = 0,
  336.         paramPos = 2,
  337.         paramCount = numargs(),
  338.         delim = ' ';
  339.     while (string[stringPos] && string[stringPos] <= ' ')
  340.     {
  341.         stringPos++;
  342.     }
  343.     while (paramPos < paramCount && string[stringPos])
  344.     {
  345.         switch (format[formatPos++])
  346.         {
  347.             case '\0':
  348.             {
  349.                 return 0;
  350.             }
  351.             case 'i', 'd':
  352.             {
  353.                 new
  354.                     neg = 1,
  355.                     num = 0,
  356.                     ch = string[stringPos];
  357.                 if (ch == '-')
  358.                 {
  359.                     neg = -1;
  360.                     ch = string[++stringPos];
  361.                 }
  362.                 do
  363.                 {
  364.                     stringPos++;
  365.                     if ('0' <= ch <= '9')
  366.                     {
  367.                         num = (num * 10) + (ch - '0');
  368.                     }
  369.                     else
  370.                     {
  371.                         return -1;
  372.                     }
  373.                 }
  374.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  375.                 setarg(paramPos, 0, num * neg);
  376.             }
  377.             case 'h', 'x':
  378.             {
  379.                 new
  380.                     num = 0,
  381.                     ch = string[stringPos];
  382.                 do
  383.                 {
  384.                     stringPos++;
  385.                     switch (ch)
  386.                     {
  387.                         case 'x', 'X':
  388.                         {
  389.                             num = 0;
  390.                             continue;
  391.                         }
  392.                         case '0' .. '9':
  393.                         {
  394.                             num = (num << 4) | (ch - '0');
  395.                         }
  396.                         case 'a' .. 'f':
  397.                         {
  398.                             num = (num << 4) | (ch - ('a' - 10));
  399.                         }
  400.                         case 'A' .. 'F':
  401.                         {
  402.                             num = (num << 4) | (ch - ('A' - 10));
  403.                         }
  404.                         default:
  405.                         {
  406.                             return -1;
  407.                         }
  408.                     }
  409.                 }
  410.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  411.                 setarg(paramPos, 0, num);
  412.             }
  413.             case 'c':
  414.             {
  415.                 setarg(paramPos, 0, string[stringPos++]);
  416.             }
  417.             case 'f':
  418.             {
  419.  
  420.                 new changestr[16], changepos = 0, strpos = stringPos;
  421.                 while(changepos < 16 && string[strpos] && string[strpos] != delim)
  422.                 {
  423.                     changestr[changepos++] = string[strpos++];
  424.                     }
  425.                 changestr[changepos] = '\0';
  426.                 setarg(paramPos,0,_:floatstr(changestr));
  427.             }
  428.             case 'p':
  429.             {
  430.                 delim = format[formatPos++];
  431.                 continue;
  432.             }
  433.             case '\'':
  434.             {
  435.                 new
  436.                     end = formatPos - 1,
  437.                     ch;
  438.                 while ((ch = format[++end]) && ch != '\'') {}
  439.                 if (!ch)
  440.                 {
  441.                     return -1;
  442.                 }
  443.                 format[end] = '\0';
  444.                 if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  445.                 {
  446.                     if (format[end + 1])
  447.                     {
  448.                         return -1;
  449.                     }
  450.                     return 0;
  451.                 }
  452.                 format[end] = '\'';
  453.                 stringPos = ch + (end - formatPos);
  454.                 formatPos = end + 1;
  455.             }
  456.             case 'u':
  457.             {
  458.                 new
  459.                     end = stringPos - 1,
  460.                     id = 0,
  461.                     bool:num = true,
  462.                     ch;
  463.                 while ((ch = string[++end]) && ch != delim)
  464.                 {
  465.                     if (num)
  466.                     {
  467.                         if ('0' <= ch <= '9')
  468.                         {
  469.                             id = (id * 10) + (ch - '0');
  470.                         }
  471.                         else
  472.                         {
  473.                             num = false;
  474.                         }
  475.                     }
  476.                 }
  477.                 if (num && IsPlayerConnected(id))
  478.                 {
  479.                     setarg(paramPos, 0, id);
  480.                 }
  481.                 else
  482.                 {
  483.                     #if !defined foreach
  484.                         #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  485.                         #define __SSCANF_FOREACH__
  486.                     #endif
  487.                     string[end] = '\0';
  488.                     num = false;
  489.                     new
  490.                         ssname[MAX_PLAYER_NAME];
  491.                     id = end - stringPos;
  492.                     foreach (Player, playerid)
  493.                     {
  494.                         GetPlayerName(playerid, ssname, sizeof (ssname));
  495.                         if (!strcmp(ssname, string[stringPos], true, id))
  496.                         {
  497.                             setarg(paramPos, 0, playerid);
  498.                             num = true;
  499.                             break;
  500.                         }
  501.                     }
  502.                     if (!num)
  503.                     {
  504.                         setarg(paramPos, 0, INVALID_PLAYER_ID);
  505.                     }
  506.                     string[end] = ch;
  507.                     #if defined __SSCANF_FOREACH__
  508.                         #undef foreach
  509.                         #undef __SSCANF_FOREACH__
  510.                     #endif
  511.                 }
  512.                 stringPos = end;
  513.             }
  514.             case 's', 'z':
  515.             {
  516.                 new
  517.                     i = 0,
  518.                     ch;
  519.                 if (format[formatPos])
  520.                 {
  521.                     while ((ch = string[stringPos++]) && ch != delim)
  522.                     {
  523.                         setarg(paramPos, i++, ch);
  524.                     }
  525.                     if (!i)
  526.                     {
  527.                         return -1;
  528.                     }
  529.                 }
  530.                 else
  531.                 {
  532.                     while ((ch = string[stringPos++]))
  533.                     {
  534.                         setarg(paramPos, i++, ch);
  535.                     }
  536.                 }
  537.                 stringPos--;
  538.                 setarg(paramPos, i, '\0');
  539.             }
  540.             default:
  541.             {
  542.                 continue;
  543.             }
  544.         }
  545.         while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  546.         {
  547.             stringPos++;
  548.         }
  549.         while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  550.         {
  551.             stringPos++;
  552.         }
  553.         paramPos++;
  554.     }
  555.     do
  556.     {
  557.         if ((delim = format[formatPos++]) > ' ')
  558.         {
  559.             if (delim == '\'')
  560.             {
  561.                 while ((delim = format[formatPos++]) && delim != '\'') {}
  562.             }
  563.             else if (delim != 'z')
  564.             {
  565.                 return delim;
  566.             }
  567.         }
  568.     }
  569.     while (delim > ' ');
  570.     return 0;
  571. }
  572. Housestatus(playerid,Houseid1) {
  573.     new howner[128],str2[128];
  574.     if(strcmp(HouseInfo[Houseid1][Owner],"NULL",true)==0)
  575.     {
  576.       format(howner,128,"Not Owned");
  577.     } else {
  578.       format(howner,128,"%s",HouseInfo[Houseid1][Owner]);
  579.       if(strcmp(HouseInfo[Houseid1][Owner],pName(playerid),true)==0)
  580.        {
  581.        SetPlayerHealth(playerid,100);
  582.        SetPlayerArmour(playerid,100);
  583.        }
  584.     }
  585.     if(GetPVarInt(playerid, "nohtext") == 1) return 0;
  586.     else if(GetPVarInt(playerid, "nohtext") == 0) {
  587.       format(str2, sizeof(str2), "~n~ Owner: %s ~n~~n~ Price: $%i~n~~n~~n~",howner,HouseInfo[Houseid1][Price]);
  588.       housetext[playerid] = TextDrawCreate(215.200012, 300, "House");
  589.       TextDrawSetString(housetext[playerid], str2);
  590.       TextDrawUseBox(housetext[playerid], 1);
  591.       TextDrawTextSize(housetext[playerid], 400, 2000);
  592.       TextDrawBoxColor(housetext[playerid], 0x171717AA);
  593.       TextDrawLetterSize(housetext[playerid], 0.449999, 1.600000);
  594.       TextDrawFont(housetext[playerid], 1);
  595.       TextDrawColor(housetext[playerid], 0x00FF00FF);
  596.       TextDrawShowForPlayer(playerid, housetext[playerid]);
  597.       SetPVarInt(playerid,"nohtext",1);
  598.       SetTimerEx("housedis", 2500, false, "i", playerid);
  599.       }
  600.     return 1;
  601. }
  602. //====================================Commands==================================
  603. CMD:hmenu(playerid,params[]) {
  604.     TogglePlayerControllable(playerid, false);
  605.     ShowMenuForPlayer(housemain, playerid);
  606.     return 1;
  607. }
  608. CMD:buyh(playerid,params[]) {
  609.   new i; i = GetHouseID(playerid);
  610.   if(i == -255) return SendClientMessage(playerid, 0xDC143CAA, "ERROR: You need to be on house icon to bought it");
  611.   if(GetPlayerMoney(playerid) - HouseInfo[i][Price] >= 0) {
  612.     if(PlayerInfo[playerid][hOwned] == 0) {
  613.       if(HouseInfo[i][Owned] == 0) {
  614.         new Query[250];
  615.         format(Query, sizeof(Query), "UPDATE `houses` SET `Owner` = '%s',`Owned` = '%d' WHERE `ID` = '%d'", pName(playerid),1,HouseInfo[i][Houseid]);
  616.         mysql_tquery(mysql, Query, "", "");
  617.         format(Query, sizeof(Query),"UPDATE `accounts` SET `hID` = %d,`HOwned` = 1 WHERE `Name` = '%s'",HouseInfo[i][Houseid],pName(playerid));
  618.         mysql_tquery(mysql, Query, "", "");
  619.         DestroyDynamicPickup(HousePickup[HouseInfo[i][Houseid]]);
  620.         HousePickup[HouseInfo[i][Houseid]] = CreateDynamicPickup(1272, 23, HouseInfo[i][HX], HouseInfo[i][HY], HouseInfo[i][HZ]);
  621.         UpdateDynamic3DTextLabelText(hTextInfo[HouseInfo[i][Houseid]],0xFF0000FF,pName(playerid));
  622.         DestroyDynamicMapIcon(housemapicon[HouseInfo[i][Houseid]]);
  623.         housemapicon[HouseInfo[i][Houseid]] = CreateDynamicMapIcon(HouseInfo[i][HX], HouseInfo[i][HY], HouseInfo[i][HZ],32,0xFFFF00AA);
  624.         strmid(HouseInfo[i][Owner], pName(playerid), 0, strlen(pName(playerid)), 255); HouseInfo[i][Owned] = 1;
  625.         GivePlayerMoney(playerid,-HouseInfo[i][Price]); PlayerInfo[playerid][hOwned] = 1; PlayerInfo[playerid][hID] = HouseInfo[i][Houseid];
  626.         new string[70];
  627.         format(string,sizeof string,"You've Successfully Buyed This house [ ID: %d ]",i);
  628.         SendClientMessage(playerid, 0x33AA33AA, string);
  629.         } else return SendClientMessage(playerid, 0xDC143CAA,"ERROR: This House is already owned");
  630.        } else return SendClientMessage(playerid, 0xDC143CAA, "ERROR: You can only own one house");
  631.       } else return SendClientMessage(playerid, 0xDC143CAA,"ERROR: You Don't have enough cash to buy this house");
  632.   return 1;
  633. }
  634.  
  635. CMD:createh(playerid,params[]) {
  636.   if(IsPlayerAdmin(playerid)) {
  637.     new price,sprice,interior;
  638.     if(sscanf(params, "ddd", price,sprice,interior)) return SendClientMessage(playerid,0xDC143CAA,"Usage /createh [Buy Price] [Sell Price] [Interior]");
  639.     if(interior > 7 || interior < 1) return SendClientMessage(playerid,0xDC143CAA,"ERROR: Interior ID just can be between 1 and 7");
  640.     new Query[250],string[128],Float:X,Float:Y,Float:Z; GetPlayerPos(playerid, X, Y, Z);
  641.     format(Query, sizeof(Query),"INSERT INTO `houses`(`ID`,`HX`,`HY`,`HZ`,`Price`,`SPrice`,`Interior`,`World`,`Locked`,`Owned`,`Owner`) VALUES \
  642.    ('%d','%f','%f','%f','%d','%d','%d','%d','%d','%d','%s')",myhouseid,X,Y,Z,price,sprice,interior,GetPlayerVirtualWorld(playerid),0,0,"NULL");
  643.     mysql_tquery(mysql, Query, "", "");
  644.     format(string,sizeof string,"You've Successfully Created This house [ ID:%d ]",myhouseid);
  645.     SendClientMessage(playerid, 0x33AA33AA, string);
  646.     HouseInfo[myhouseid][Houseid] = myhouseid; HouseInfo[myhouseid][Owned] = 0; strmid(HouseInfo[myhouseid][Owner], "NULL", 0, strlen("NULL"), 255);
  647.     HouseInfo[myhouseid][Locked] = 0; HouseInfo[myhouseid][Interior] = interior; HouseInfo[myhouseid][World] = GetPlayerVirtualWorld(playerid);
  648.     HouseInfo[myhouseid][Price] = price; HouseInfo[myhouseid][SPrice] = sprice; HouseInfo[myhouseid][HX] = X;
  649.     HouseInfo[myhouseid][HY] = Y; HouseInfo[myhouseid][HZ] = Z;
  650.     HousePickup[myhouseid] = CreateDynamicPickup(1273, 23, X, Y, Z);
  651.     housemapicon[myhouseid] = CreateDynamicMapIcon(X, Y, Z,31,0xFFFF00AA);
  652.     hTextInfo[myhouseid] = CreateDynamic3DTextLabel("Not Owned", 0x00FF00FF, X, Y, Z+0.75, 40, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, STREAMER_3D_TEXT_LABEL_SD);
  653.     myhouseid ++; removeh ++;
  654.     } else return SendClientMessage(playerid, 0xDC143CAA, "ERROR: You need to be rcon to use this command");
  655.   return 1;
  656. }
  657.  
  658. CMD:createah(playerid,params[]) {
  659.   if(IsPlayerAdmin(playerid)) {
  660.     new price,sprice,Float:interiorx,Float:interiory,Float:interiorz,interior;
  661.     if(sscanf(params, "ddfffd", price,sprice,interiorx,interiory,interiorz,interior)) return SendClientMessage(playerid,0xDC143CAA,"Usage /createh [Buy Price] [Sell Price] [Interior X] [Interior Y] [Interior Z] [Interior ID]");
  662.     new Query[280],string[128],Float:X,Float:Y,Float:Z; GetPlayerPos(playerid, X, Y, Z);
  663.     format(Query, sizeof(Query),"INSERT INTO `houses`(`ID`,`HX`,`HY`,`IX`,`IY`,`IZ`,`HZ`,`Price`,`SPrice`,`Interior`,`World`,`Locked`,`Owned`,`Owner`) VALUES \
  664.    ('%d','%f','%f','%f','%f','%f','%f','%d','%d','%d','%d','%d','%d','%s')",myhouseid,X,Y,Z,interiorx,interiory,interiorz,price,sprice,interior,GetPlayerVirtualWorld(playerid),0,0,"NULL");
  665.     mysql_tquery(mysql, Query, "", "");
  666.     printf("%s",Query);
  667.     format(string,sizeof string,"You've Successfully Created This house [ ID:%d ]",myhouseid);
  668.     SendClientMessage(playerid, 0x33AA33AA, string);
  669.     HouseInfo[myhouseid][Houseid] = myhouseid; HouseInfo[myhouseid][Owned] = 0; strmid(HouseInfo[myhouseid][Owner], "NULL", 0, strlen("NULL"), 255);
  670.     HouseInfo[myhouseid][Locked] = 0; HouseInfo[myhouseid][Interior] = interior; HouseInfo[myhouseid][World] = GetPlayerVirtualWorld(playerid);
  671.     HouseInfo[myhouseid][Price] = price; HouseInfo[myhouseid][SPrice] = sprice; HouseInfo[myhouseid][HX] = X;
  672.     HouseInfo[myhouseid][HY] = Y; HouseInfo[myhouseid][HZ] = Z; HouseInfo[myhouseid][IX] = interiorx;
  673.     HouseInfo[myhouseid][IY] = interiory;  HouseInfo[myhouseid][IZ] = interiorz;
  674.     HousePickup[myhouseid] = CreateDynamicPickup(1273, 23, X, Y, Z);
  675.     housemapicon[myhouseid] = CreateDynamicMapIcon(X, Y, Z,31,0xFFFF00AA);
  676.     hTextInfo[myhouseid] = CreateDynamic3DTextLabel("Not Owned", 0x00FF00FF, X, Y, Z+0.75, 40, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, STREAMER_3D_TEXT_LABEL_SD);
  677.     myhouseid ++; removeh ++;
  678.     } else return SendClientMessage(playerid, 0xDC143CAA, "ERROR: You need to be rcon to use this command");
  679.   return 1;
  680. }
  681.  
  682. CMD:removeh(playerid,params[]) {
  683.   if(IsPlayerAdmin(playerid)) {
  684.     new i; i = GetHouseID(playerid);
  685.     if(i == -255) return SendClientMessage(playerid, 0xDC143CAA, "ERROR: You need to be on house icon to remove it");
  686.     new Query[128],string[128];
  687.     format(Query, 128, "DELETE FROM `houses` WHERE `ID` = '%d'", i);
  688.     mysql_tquery(mysql, Query, "", "");
  689.     DestroyDynamicPickup(HousePickup[i]);
  690.     DestroyDynamic3DTextLabel(hTextInfo[i]);
  691.     DestroyDynamicMapIcon(housemapicon[i]);
  692.     if(HouseInfo[i][Owned] == 1) {
  693.     format(Query, sizeof(Query),"UPDATE `accounts` SET `hID` = 0,`HOwned` = 0 WHERE `Name` = '%s'",HouseInfo[i][Owner]);
  694.     mysql_tquery(mysql, Query, "", "");}
  695.     if(i < removeh) {
  696.     DestroyDynamicPickup(HousePickup[removeh]);
  697.     DestroyDynamicMapIcon(housemapicon[removeh]);
  698.     DestroyDynamic3DTextLabel(hTextInfo[removeh]);
  699.     format(Query, sizeof(Query),"UPDATE `houses` SET `ID` = %d WHERE `ID` = '%d'",i,removeh);
  700.     mysql_tquery(mysql, Query, "", "");
  701.     strmid(HouseInfo[i][Owner],HouseInfo[removeh][Owner], 0, strlen(pName(playerid)), 255);
  702.     HouseInfo[removeh][Houseid] = i; HouseInfo[i][Locked]= HouseInfo[removeh][Locked];
  703.     HouseInfo[i][Owned] = HouseInfo[removeh][Owned]; HouseInfo[i][Interior] = HouseInfo[removeh][Interior];
  704.     HouseInfo[i][Price] = HouseInfo[removeh][Price]; HouseInfo[i][World] = HouseInfo[removeh][World];
  705.     HouseInfo[i][SPrice] = HouseInfo[removeh][SPrice];HouseInfo[i][HX]= HouseInfo[removeh][HX];
  706.     HouseInfo[i][HY] = HouseInfo[removeh][HY];  HouseInfo[i][HZ]= HouseInfo[removeh][HZ];
  707.     HouseInfo[i][IX] = HouseInfo[removeh][IX]; HouseInfo[i][IY] = HouseInfo[removeh][IY];
  708.     HouseInfo[i][IZ] = HouseInfo[removeh][IZ];
  709.     if(HouseInfo[i][Owned] == 0) {
  710.       HousePickup[i] = CreateDynamicPickup(1273, 23, HouseInfo[i][HX], HouseInfo[i][HY], HouseInfo[i][HZ]);
  711.       hTextInfo[i] = CreateDynamic3DTextLabel("Not Owned", 0x00FF00FF, HouseInfo[i][HX], HouseInfo[i][HY], HouseInfo[i][HZ]+0.75, 40, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, STREAMER_3D_TEXT_LABEL_SD);
  712.       housemapicon[i] = CreateDynamicMapIcon(HouseInfo[i][HX], HouseInfo[i][HY], HouseInfo[i][HZ],31,0xFFFF00AA);
  713.     } if(HouseInfo[i][Owned] == 1) {
  714.         HousePickup[i] = CreateDynamicPickup(1272, 23, HouseInfo[i][HX], HouseInfo[i][HY], HouseInfo[i][HZ]);
  715.         new oname[MAX_PLAYER_NAME+1]; format(oname,sizeof oname,"%s",HouseInfo[i][Owner]);
  716.         hTextInfo[i] = CreateDynamic3DTextLabel(oname, 0xFF0000FF, HouseInfo[i][HX], HouseInfo[i][HY], HouseInfo[i][HZ]+0.75, 40, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, STREAMER_3D_TEXT_LABEL_SD);
  717.         housemapicon[i] = CreateDynamicMapIcon(HouseInfo[i][HX], HouseInfo[i][HY], HouseInfo[i][HZ],32,0xFFFF00AA);
  718.         }
  719.     }
  720.     if(HouseInfo[i][Owned] == 1) {
  721.     format(Query, sizeof(Query),"UPDATE `accounts` SET `hID` = %d WHERE `Name` = '%s'",i,HouseInfo[i][Owner]);
  722.     mysql_tquery(mysql, Query, "", "");}
  723.     format(string,sizeof string,"You've Successfully Removed This house [ ID: %d ]",i);
  724.     SendClientMessage(playerid, 0x33AA33AA, string);
  725.     for(new i2 = 0; i2 < MAX_PLAYERS; i2++) {
  726.       if(IsPlayerConnected(i2)) {
  727.         if(strcmp(HouseInfo[i2][Owner],pName(i2),false )== 0) {
  728.             PlayerInfo[i2][hOwned] = 0; PlayerInfo[i2][hID] = 0;
  729.             format(string,sizeof string,"Administrator %s Has Fully Removed Your House",pName(playerid));
  730.             SendClientMessage(i2,0x33AA33AA,string);
  731.              }
  732.          }
  733.     }
  734.     myhouseid --; removeh --;
  735.    } else return SendClientMessage(playerid, 0xDC143CAA, "ERROR: You need to be rcon to use this command");
  736.   return 1;
  737. }
  738. CMD:deleteallhouses(playerid,params[]) {
  739.     if(IsPlayerAdmin(playerid)) {
  740.     new Query[128];
  741.     format(Query, 128, "DELETE FROM `houses`");
  742.     mysql_tquery(mysql, Query, "", "");
  743.     SendClientMessageToAll(0x33AA33AA,"All houses has been Successfully Removed");
  744.     return SendRconCommand("gmx");
  745.     } else return SendClientMessage(playerid,0xFF0000AA,"ERROR: You are not a high enough level to use this command");
  746. }
  747. CMD:asellh(playerid,params[]) {
  748.   if(IsPlayerAdmin(playerid)) {
  749.     new i;
  750.     i = GetHouseID(playerid);
  751.     if(i == -255) return SendClientMessage(playerid, 0xDC143CAA, "ERROR: You need to be on house icon to remove it");
  752.     new Query[128],string[128];
  753.     format(Query, sizeof(Query), "UPDATE `houses` SET `Owner` = '%d', `Owned` = '%d'  WHERE `ID` = '%d'",0,0,HouseInfo[i][Houseid]);
  754.     mysql_tquery(mysql, Query, "", "");
  755.     if(HouseInfo[i][Owned] == 1) {
  756.     format(Query, sizeof(Query),"UPDATE `accounts` SET `hID` = 0,`HOwned` = 0 WHERE `Name` = '%s'",pName(playerid));
  757.     mysql_tquery(mysql, Query, "", "");
  758.     for(new i2 = 0; i2 < MAX_PLAYERS; i2++) {
  759.        if(IsPlayerConnected(i2)) {
  760.          if(strcmp(HouseInfo[i2][Owner],pName(i2),false )== 0) {
  761.              PlayerInfo[i2][hOwned] = 0; PlayerInfo[i2][hID] = 0;
  762.              format(string,sizeof string,"Administrator %s Has Reseted Your House",pName(playerid));
  763.              SendClientMessage(i2,0x33AA33AA,string);
  764.              }
  765.          }
  766.     }
  767.     HouseInfo[i][Owned] = 0; strmid(HouseInfo[i][Owner],"NULL", 0, strlen(pName(playerid)), 255);
  768.     }
  769.     DestroyDynamicPickup(HousePickup[HouseInfo[i][Houseid]]);
  770.     HousePickup[HouseInfo[i][Houseid]] = CreateDynamicPickup(1273, 23, HouseInfo[i][HX], HouseInfo[i][HY], HouseInfo[i][HZ]);
  771.     UpdateDynamic3DTextLabelText(hTextInfo[HouseInfo[i][Houseid]],0x00FF00FF,"Not Owned");
  772.     DestroyDynamicMapIcon(housemapicon[HouseInfo[i][Houseid]]);
  773.     housemapicon[HouseInfo[i][Houseid]] = CreateDynamicMapIcon(HouseInfo[i][HX], HouseInfo[i][HY], HouseInfo[i][HZ],31,0xFFFF00AA);
  774.     format(string,sizeof string,"You've Successfully Sold This house [ ID: %d ]",i);
  775.     SendClientMessage(playerid, 0x33AA33AA, string);
  776.    } else return SendClientMessage(playerid, 0xDC143CAA, "ERROR: You need to be rcon to use this command");
  777.   return 1;
  778. }
  779. CMD:aresetallhs(playerid,params[]) {
  780.   if(IsPlayerAdmin(playerid)) {
  781.     new Query[128];
  782.     format(Query, sizeof(Query), "UPDATE `houses` SET `Owner` = '%s', `Owned` = '%d'","NULL",0);
  783.     mysql_tquery(mysql, Query, "", "");
  784.     for(new i = 0; i < MAX_HOUSES; i++) {
  785.     if(HouseInfo[i][Owned] == 1) {
  786.     format(Query, sizeof(Query),"UPDATE `accounts` SET `hID` = 0,`HOwned` = 0");
  787.     mysql_tquery(mysql, Query, "", "");}
  788.     HouseInfo[i][Owned] = 0; strmid(HouseInfo[i][Owner],"NULL", 0, strlen(pName(playerid)), 255);
  789.     if(IsValidDynamicPickup(HousePickup[HouseInfo[i][Houseid]])) {
  790.     DestroyDynamicPickup(HousePickup[HouseInfo[i][Houseid]]);}
  791.     if(IsValidDynamic3DTextLabel(hTextInfo[HouseInfo[i][Houseid]])) {
  792.     DestroyDynamic3DTextLabel(hTextInfo[HouseInfo[i][Houseid]]);}
  793.     if(IsValidDynamicMapIcon(housemapicon[HouseInfo[i][Houseid]])) {
  794.     DestroyDynamicMapIcon(housemapicon[HouseInfo[i][Houseid]]);}
  795.     strmid(HouseInfo[i][Owner], "NULL", 0, strlen(pName(playerid)), 255);  HouseInfo[i][Owned] = 0;
  796.     }
  797.     SendClientMessageToAll(0x33AA33AA,"All houses has been Successfully Rested");
  798.     SendRconCommand("gmx");
  799.    } else return SendClientMessage(playerid, 0xDC143CAA, "ERROR: You need to be rcon to use this command");
  800.   return 1;
  801. }
  802. CMD:sellh(playerid,params[]) {
  803.   new i; i = GetHouseID(playerid);
  804.   if(i == -255) return SendClientMessage(playerid, 0xDC143CAA, "ERROR: You need to be on house icon to sell it");
  805.   if(HouseInfo[i][Owned] == 1) {
  806.     if(strcmp(HouseInfo[i][Owner],pName(playerid),false )== 0 || IsPlayerAdmin(playerid)) {
  807.       new Query[128];
  808.       format(Query, sizeof(Query),"UPDATE `houses` SET `Owned` = 0,`Owner` = %s WHERE `ID` = '%d'","NULL",HouseInfo[i][Houseid]);
  809.       mysql_tquery(mysql, Query, "", "");
  810.       format(Query, sizeof(Query),"UPDATE `accounts` SET `hID` = 0,`HOwner` = 0 WHERE `Name` = '%d'",pName(playerid));
  811.       mysql_tquery(mysql, Query, "", "");
  812.       DestroyDynamicPickup(HousePickup[HouseInfo[i][Houseid]]);
  813.       HousePickup[HouseInfo[i][Houseid]] = CreateDynamicPickup(1273, 23, HouseInfo[i][HX], HouseInfo[i][HY], HouseInfo[i][HZ]);
  814.       UpdateDynamic3DTextLabelText(hTextInfo[HouseInfo[i][Houseid]],0x00FF00FF,"Not Owned");
  815.       DestroyDynamicMapIcon(housemapicon[HouseInfo[i][Houseid]]);
  816.       housemapicon[HouseInfo[i][Houseid]] = CreateDynamicMapIcon(HouseInfo[i][HX], HouseInfo[i][HY], HouseInfo[i][HZ],31,0xFFFF00AA);
  817.       strmid(HouseInfo[i][Owner], "NULL", 0, strlen(pName(playerid)), 255); GivePlayerMoney(playerid,HouseInfo[i][SPrice]); HouseInfo[i][Owned] = 0;
  818.       PlayerInfo[playerid][hOwned] = 0; PlayerInfo[playerid][hID] = 0;
  819.       new string[70];
  820.       format(string,sizeof string,"You've Successfully Sold This house [ ID: %d ]",i);
  821.       SendClientMessage(playerid, 0x33AA33AA, string);
  822.       } else return SendClientMessage(playerid, 0xDC143CAA, "ERROR: You need to own this house to sell it");
  823.     } else return SendClientMessage(playerid, 0xDC143CAA,"ERROR: This House is already for sale");
  824.   return 1;
  825. }
  826.  
  827. CMD:lockh(playerid,params[]) {
  828.   new i; i = GetHouseID(playerid);
  829.   if(i == -255) return SendClientMessage(playerid, 0xDC143CAA, "ERROR: You need to be on house icon to lock it");
  830.   if(strcmp(HouseInfo[i][Owner],pName(playerid),false )== 0 || IsPlayerAdmin(playerid)) {
  831.       if(HouseInfo[i][Locked] == 0) {
  832.          HouseInfo[i][Locked] = 1;
  833.          new Query[128];
  834.          format(Query, sizeof(Query),"UPDATE `houses` SET `Locked` = 1 WHERE `ID` = '%d'",HouseInfo[i][Houseid]);
  835.          mysql_tquery(mysql, Query, "", "");
  836.          SendClientMessage(playerid,0x33FF33AA,"You have Successfully Locked this house");
  837.       } else return SendClientMessage(playerid, 0xDC143CAA, "ERROR: This house is already locked");
  838.     } else return SendClientMessage(playerid, 0xDC143CAA, "ERROR: You need to own this house to lock it");
  839.   return 1;
  840. }
  841.  
  842. CMD:unlockh(playerid,params[]) {
  843.   new i; i = GetHouseID(playerid);
  844.   if(i == -255) return SendClientMessage(playerid, 0xDC143CAA, "ERROR: You need to be on house icon to unlock it");
  845.   if(strcmp(HouseInfo[i][Owner],pName(playerid),false )== 0 || IsPlayerAdmin(playerid)) {
  846.       if(HouseInfo[i][Locked] == 1) {
  847.          HouseInfo[i][Locked] = 0;
  848.          new Query[128];
  849.          format(Query, sizeof(Query),"UPDATE `houses` SET `Locked` = 0 WHERE `ID` = '%d'",HouseInfo[i][Houseid]);
  850.          mysql_tquery(mysql, Query, "", "");
  851.          SendClientMessage(playerid,0x33FF33AA,"You have Successfully UnLocked this house");
  852.       } else return SendClientMessage(playerid, 0xDC143CAA, "ERROR: This house is already unlocked");
  853.     } else return SendClientMessage(playerid, 0xDC143CAA, "ERROR: You need to own this house to unlock it");
  854.   return 1;
  855. }
  856.  
  857. CMD:enterh(playerid,params[]) {
  858.   new i; i = GetHouseID(playerid);
  859.   if(i == -255) return SendClientMessage(playerid, 0xDC143CAA, "ERROR: You need to be on house icon to enter it");
  860.   if(HouseInfo[i][Locked] == 0) {
  861.     if(HouseInfo[i][IX] != 0 && HouseInfo[i][IY] != 0 && HouseInfo[i][IZ] != 0) {
  862.        SetPlayerInterior(playerid,HouseInfo[i][Interior]);
  863.        SetPlayerPos(playerid,HouseInfo[i][IX],HouseInfo[i][IY],HouseInfo[i][IZ]);
  864.     }
  865.     if(HouseInfo[i][IX] == 0 && HouseInfo[i][IY] == 0 && HouseInfo[i][IZ] == 0) {
  866.       if(HouseInfo[i][Interior] == 1) {
  867.         SetPlayerInterior(playerid,1);
  868.         SetPlayerPos(playerid, 2527.654052,-1679.388305,1015.498596);
  869.     }
  870.       if(HouseInfo[i][Interior] == 2) {
  871.         SetPlayerInterior(playerid,2);
  872.         SetPlayerPos(playerid, 2451.77,-1699.80,1013.51);
  873.  
  874.     }
  875.       if(HouseInfo[i][Interior] == 3) {
  876.         SetPlayerInterior(playerid,3);
  877.         SetPlayerPos(playerid,2496.65,-1696.55,1014.74);
  878.     }
  879.       if(HouseInfo[i][Interior] == 4) {
  880.         SetPlayerInterior(playerid,5);
  881.         SetPlayerPos(playerid,1299.14,-794.77,1084.00);
  882.     }
  883.       if(HouseInfo[i][Interior] == 5) {
  884.         SetPlayerInterior(playerid,6);
  885.         SetPlayerPos(playerid,-2240.00,131.00,1035.40);
  886.     }
  887.       if(HouseInfo[i][Interior] == 6) {
  888.         SetPlayerInterior(playerid,8);
  889.         SetPlayerPos(playerid,2365.42,-1131.85,1050.88);
  890.     }
  891.       if(HouseInfo[i][Interior] == 7) {
  892.         SetPlayerInterior(playerid,10);
  893.         SetPlayerPos(playerid,2260.76,-1210.45,1049.02);
  894.     }
  895.    }
  896.     pinterior[playerid] = GetPlayerInterior(playerid);
  897.     GetPlayerPos(playerid, posx[playerid], posy[playerid], posz[playerid]);
  898.     inhouse[playerid] = 1;
  899.     SendClientMessage(playerid,-1,"NOTE: Please use /exith for exit from house don't use the DOOR");
  900.   } else return SendClientMessage(playerid,0xDC143CAA,"ERROR: This house is locked and you're not able to enter it");
  901.   return 1;
  902. }
  903.  
  904. CMD:exith(playerid,params[]) {
  905.     if(inhouse[playerid] == 1) {
  906.       SetPlayerPos(playerid, posx[playerid], posy[playerid], posz[playerid]);
  907.       SetPlayerInterior(playerid,pinterior[playerid]);
  908.       inhouse[playerid] = 0;
  909.     } else return SendClientMessage(playerid, 0xDC143CAA, "ERROR: You're not in house to exit");
  910.     return 1;
  911. }
  912.  
  913. CMD:gotoh(playerid,params[]) {
  914.     if(PlayerInfo[playerid][hOwned] == 1) {
  915.        teleporth[playerid] = 5;
  916.        htimer[playerid] = SetTimerEx("Teleporth", 1000, 1, "i", playerid);
  917.        SendClientMessage(playerid, 0x33AA33AA, "You will be teleported to your house in 5 seconds...");
  918.      } else return SendClientMessage(playerid,0xDC143CAA,"ERROR: You don't own house to go to it");
  919.     return 1;
  920. }
  921. //=============================The End==========================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement