Guest User

Garage System

a guest
Oct 19th, 2017
2,296
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 41.48 KB | None | 0 0
  1. #include <a_samp>
  2. #if !defined IsValidVehicle
  3.     native IsValidVehicle(vehicleid);
  4. #endif
  5. #include <dini>
  6. #define COLOR_ERROR 0xA40000FF
  7. #define COLOR_GREEN 0x00D500FF
  8. #define COLOR_WHITE 0xFFFFFFFF
  9. #define COLOR_RED 0xFF0000FF
  10. #define MAX_GARAGES 50
  11. enum gInfo
  12. {
  13.     Float:ExtX,
  14.     Float:ExtY,
  15.     Float:ExtZ,
  16.     Float:ExtA,
  17.     Float:IntX,
  18.     Float:IntY,
  19.     Float:IntZ,
  20.     Float:IntA,
  21.     Price,
  22.     IntID,
  23.     vWorld,
  24.     Status,
  25.     ForSale,
  26.     Pickup,
  27.     Text3D:Label
  28. }
  29. new GarageInfo[MAX_GARAGES][gInfo];
  30. new IsGarageVehicle[MAX_GARAGES][MAX_VEHICLES];
  31. public OnFilterScriptInit()
  32. {
  33.     CreateObject(8378, 608.30280, -75.59090, 996.99127,   0.00000, 0.00000, 90.00000);
  34.     CreateObject(8378, 608.34052, -137.51871, 996.99127,   0.00000, 0.00000, 90.00000);
  35.     CreateObject(8378, 603.00000, -0.42970, 1003.21918,   0.00000, 0.00000, 90.00000);
  36.     for(new g = 0; g <= MAX_GARAGES; g++)
  37.     {
  38.         new string[256], LoadString[256], GarageInterior[128], GarageLocked[128], GarageOwner[MAX_PLAYER_NAME];
  39.         format(LoadString, sizeof(LoadString), "/Garages/%d.dini.save", g);
  40.         if(dini_Exists(LoadString))
  41.         {
  42.             LoadGarages(g);
  43.             IsGarageVehicle[g][5] = 0;
  44.             format(GarageOwner, MAX_PLAYER_NAME, dini_Get(LoadString, "Owner"));
  45.             if(GarageInfo[g][IntID] == 0) GarageInterior = "{FFFF00}Small";
  46.             if(GarageInfo[g][IntID] == 2) GarageInterior = "{00FF00}Medium";
  47.             if(GarageInfo[g][IntID] == 3) GarageInterior = "{00FF00}Medium";
  48.             if(GarageInfo[g][IntID] == 1) GarageInterior = "{FF0000}Big";
  49.             if(GarageInfo[g][Status] == 0) GarageLocked = "{00FF00}Unlocked";
  50.             if(GarageInfo[g][Status] == 1) GarageLocked = "{FF0000}Locked";
  51.             if(GarageInfo[g][Price] == 0) format(string,sizeof(string),"Owner: {FF0000}%s\n{FFFFFF}Price: {00FF00}Free\n{FFFFFF}Status: %s\n{FFFFFF}Interior: %s", GarageOwner, GarageLocked, GarageInterior);
  52.             else format(string,sizeof(string),"Owner: {FF0000}%s\n{FFFFFF}Price: {FF0000}%d\n{FFFFFF}Status: %s\n{FFFFFF}Interior: %s", GarageOwner, GarageInfo[g][Price], GarageLocked, GarageInterior);
  53.             GarageInfo[g][Label] = Create3DTextLabel(string, COLOR_WHITE, GarageInfo[g][ExtX], GarageInfo[g][ExtY], GarageInfo[g][ExtZ]+0.8, 10.0, 0, 0);
  54.             GarageInfo[g][Pickup] = CreatePickup(1318, 1, GarageInfo[g][ExtX], GarageInfo[g][ExtY], GarageInfo[g][ExtZ]);
  55.         }
  56.     }
  57.     return 1;
  58. }
  59. public OnFilterScriptExit()
  60. {
  61.     for(new g = 0; g <= MAX_GARAGES; g++)
  62.     {
  63.         new UnloadString[256];
  64.         format(UnloadString, sizeof(UnloadString), "/Garages/%d.dini.save", g);
  65.         if(dini_Exists(UnloadString))
  66.         {
  67.             Delete3DTextLabel(GarageInfo[g][Label]);
  68.             DestroyPickup(GarageInfo[g][Pickup]);
  69.         }
  70.     }
  71.     return 1;
  72. }
  73. public OnPlayerDisconnect(playerid, reason)
  74. {
  75.     new SaveString[256];
  76.     format(SaveString,sizeof(SaveString),"/MoneySave/%d.dini.save",PlayerName(playerid));
  77.     if(!dini_Exists(SaveString))
  78.     {
  79.         dini_Create(SaveString);
  80.         dini_IntSet(SaveString, "Money", GetPlayerMoney(playerid));
  81.     }
  82.     else
  83.     {
  84.         dini_IntSet(SaveString, "Money", GetPlayerMoney(playerid));
  85.     }
  86.     return 1;
  87. }
  88. public OnPlayerCommandText(playerid, cmdtext[])
  89. {
  90.     new string[256], SaveString[256];
  91.     if(strfind(cmdtext, "/g create", true) == 0)
  92.     {
  93.         if(IsPlayerAdmin(playerid))
  94.         {
  95.             new gID = ReturnNextUnusedGarageID();
  96.             format(SaveString,sizeof(SaveString),"/Garages/%d.dini.save",gID);
  97.             if(!dini_Exists(SaveString))
  98.             {
  99.                 new where = -1;
  100.                 if(strlen(cmdtext) > 10 && (where = strfind(cmdtext, " ", true, 10)) != -1)
  101.                 {
  102.                     new Garage[32];
  103.                     strmid(Garage, cmdtext, 10, where);
  104.                     if(strcmp(Garage, "Small", true) == 0)
  105.                     {
  106.                         new GarageOwner[MAX_PLAYER_NAME];
  107.                         format(GarageOwner, MAX_PLAYER_NAME, "No");
  108.                         new StringPrice[24];
  109.                         strmid(StringPrice, cmdtext, where, strlen(cmdtext));
  110.                         GarageInfo[gID][Price] = strval(StringPrice);
  111.                         GetPlayerPos(playerid, GarageInfo[gID][ExtX], GarageInfo[gID][ExtY], GarageInfo[gID][ExtZ]);
  112.                         GetPlayerFacingAngle(playerid,GarageInfo[gID][ExtA]);
  113.                         GarageInfo[gID][vWorld] = ReturnNextUnusedVirtualWorld();
  114.                         GarageInfo[gID][IntID] = 0;
  115.                         GarageInfo[gID][Status] = 0;
  116.                         GarageInfo[gID][ForSale] = 1;
  117.                         GarageInfo[gID][IntX] = 1643.6659;
  118.                         GarageInfo[gID][IntY] = -1517.0594;
  119.                         GarageInfo[gID][IntZ] = 13.5688;
  120.                         GarageInfo[gID][IntA] = 0.0000;
  121.                         GarageInfo[gID][Pickup] = CreatePickup(1318, 1, GarageInfo[gID][ExtX], GarageInfo[gID][ExtY], GarageInfo[gID][ExtZ]);
  122.                         if(GarageInfo[gID][Price] == 0) format(string,sizeof(string),"Owner: {FF0000}No\n{FFFFFF}Price: {00FF00}Free\n{FFFFFF}Status: {00FF00}Unlocked\n{FFFFFF}Interior: {FFFF00}Small");
  123.                         else format(string,sizeof(string),"Owner: {FF0000}No\n{FFFFFF}Price: {FF0000}%d\n{FFFFFF}Status: {00FF00}Unlocked\n{FFFFFF}Interior: {FFFF00}Small", GarageInfo[gID][Price]);
  124.                         GarageInfo[gID][Label] = Create3DTextLabel(string, COLOR_WHITE, GarageInfo[gID][ExtX], GarageInfo[gID][ExtY], GarageInfo[gID][ExtZ]+0.8, 10.0, 0, 0);
  125.                         //Saving garage
  126.                         dini_Create(SaveString);
  127.                         dini_Set(SaveString, "\nOwner", GarageOwner);
  128.                         dini_FloatSet(SaveString,"Ext:X", GarageInfo[gID][ExtX]);
  129.                         dini_FloatSet(SaveString,"Ext:Y", GarageInfo[gID][ExtY]);
  130.                         dini_FloatSet(SaveString,"Ext:Z", GarageInfo[gID][ExtZ]);
  131.                         dini_FloatSet(SaveString,"Ext:A", GarageInfo[gID][ExtA]);
  132.                         dini_FloatSet(SaveString,"Int:X", GarageInfo[gID][IntX]);
  133.                         dini_FloatSet(SaveString,"Int:Y", GarageInfo[gID][IntY]);
  134.                         dini_FloatSet(SaveString,"Int:Z", GarageInfo[gID][IntZ]);
  135.                         dini_FloatSet(SaveString,"Int:A", GarageInfo[gID][IntA]);
  136.                         dini_IntSet(SaveString, "VirtualWorld", GarageInfo[gID][vWorld]);
  137.                         dini_IntSet(SaveString, "Interior", GarageInfo[gID][IntID]);
  138.                         dini_IntSet(SaveString, "Status", GarageInfo[gID][Status]);
  139.                         dini_IntSet(SaveString, "ForSale", GarageInfo[gID][ForSale]);
  140.                         dini_IntSet(SaveString, "Price", GarageInfo[gID][Price]);
  141.                         for(new v = 0; v <= MAX_VEHICLES; v++)
  142.                         {
  143.                             if(IsValidVehicle(v))
  144.                             {
  145.                                 IsGarageVehicle[gID][v] = 0;
  146.                             }
  147.                         }
  148.                         //Message
  149.                         SendClientMessage(playerid,COLOR_GREEN,"Garage was successfully created!");
  150.                         return 1;
  151.                     }
  152.                     else if(strcmp(Garage, "Medium1", true) == 0)
  153.                     {
  154.                         new GarageOwner[MAX_PLAYER_NAME];
  155.                         format(GarageOwner, MAX_PLAYER_NAME, "No");
  156.                         new StringPrice[24];
  157.                         strmid(StringPrice, cmdtext, where, strlen(cmdtext));
  158.                         GarageInfo[gID][Price] = strval(StringPrice);
  159.                         GetPlayerPos(playerid, GarageInfo[gID][ExtX], GarageInfo[gID][ExtY], GarageInfo[gID][ExtZ]);
  160.                         GetPlayerFacingAngle(playerid,GarageInfo[gID][ExtA]);
  161.                         GarageInfo[gID][vWorld] = ReturnNextUnusedVirtualWorld();
  162.                         GarageInfo[gID][IntID] = 2;
  163.                         GarageInfo[gID][Status] = 0;
  164.                         GarageInfo[gID][ForSale] = 1;
  165.                         GarageInfo[gID][IntX] = 612.4073;
  166.                         GarageInfo[gID][IntY] = -76.4425;
  167.                         GarageInfo[gID][IntZ] = 997.9922;
  168.                         GarageInfo[gID][IntA] = 270.0000;
  169.                         GarageInfo[gID][Pickup] = CreatePickup(1318, 1, GarageInfo[gID][ExtX], GarageInfo[gID][ExtY], GarageInfo[gID][ExtZ]);
  170.                         if(GarageInfo[gID][Price] == 0) format(string,sizeof(string),"Owner: {FF0000}No\n{FFFFFF}Price: {00FF00}Free\n{FFFFFF}Status: {00FF00}Unlocked\n{FFFFFF}Interior: {00FF00}Medium");
  171.                         else format(string,sizeof(string),"Owner: {FF0000}No\n{FFFFFF}Price: {FF0000}%d\n{FFFFFF}Status: {00FF00}Unlocked\n{FFFFFF}Interior: {00FF00}Medium", GarageInfo[gID][Price]);
  172.                         GarageInfo[gID][Label] = Create3DTextLabel(string, COLOR_WHITE, GarageInfo[gID][ExtX], GarageInfo[gID][ExtY], GarageInfo[gID][ExtZ]+0.8, 10.0, 0, 0);
  173.                         //Saving garage
  174.                         dini_Create(SaveString);
  175.                         dini_Set(SaveString, "\nOwner", GarageOwner);
  176.                         dini_FloatSet(SaveString,"Ext:X", GarageInfo[gID][ExtX]);
  177.                         dini_FloatSet(SaveString,"Ext:Y", GarageInfo[gID][ExtY]);
  178.                         dini_FloatSet(SaveString,"Ext:Z", GarageInfo[gID][ExtZ]);
  179.                         dini_FloatSet(SaveString,"Ext:A", GarageInfo[gID][ExtA]);
  180.                         dini_FloatSet(SaveString,"Int:X", GarageInfo[gID][IntX]);
  181.                         dini_FloatSet(SaveString,"Int:Y", GarageInfo[gID][IntY]);
  182.                         dini_FloatSet(SaveString,"Int:Z", GarageInfo[gID][IntZ]);
  183.                         dini_FloatSet(SaveString,"Int:A", GarageInfo[gID][IntA]);
  184.                         dini_IntSet(SaveString, "VirtualWorld", GarageInfo[gID][vWorld]);
  185.                         dini_IntSet(SaveString, "Interior", GarageInfo[gID][IntID]);
  186.                         dini_IntSet(SaveString, "Status", GarageInfo[gID][Status]);
  187.                         dini_IntSet(SaveString, "ForSale", GarageInfo[gID][ForSale]);
  188.                         dini_IntSet(SaveString, "Price", GarageInfo[gID][Price]);
  189.                         for(new v = 0; v <= MAX_VEHICLES; v++)
  190.                         {
  191.                             if(IsValidVehicle(v))
  192.                             {
  193.                                 IsGarageVehicle[gID][v] = 0;
  194.                             }
  195.                         }
  196.                         //Message
  197.                         SendClientMessage(playerid,COLOR_GREEN,"Garage was successfully created!");
  198.                         return 1;
  199.                     }
  200.                     else if(strcmp(Garage, "Medium2", true) == 0)
  201.                     {
  202.                         new GarageOwner[MAX_PLAYER_NAME];
  203.                         format(GarageOwner, MAX_PLAYER_NAME, "No");
  204.                         new StringPrice[24];
  205.                         strmid(StringPrice, cmdtext, where, strlen(cmdtext));
  206.                         GarageInfo[gID][Price] = strval(StringPrice);
  207.                         GetPlayerPos(playerid, GarageInfo[gID][ExtX], GarageInfo[gID][ExtY], GarageInfo[gID][ExtZ]);
  208.                         GetPlayerFacingAngle(playerid,GarageInfo[gID][ExtA]);
  209.                         GarageInfo[gID][vWorld] = ReturnNextUnusedVirtualWorld();
  210.                         GarageInfo[gID][IntID] = 3;
  211.                         GarageInfo[gID][Status] = 0;
  212.                         GarageInfo[gID][ForSale] = 1;
  213.                         GarageInfo[gID][IntX] = 613.3256;
  214.                         GarageInfo[gID][IntY] = -125.1266;
  215.                         GarageInfo[gID][IntZ] = 997.9922;
  216.                         GarageInfo[gID][IntA] = 270.0000;
  217.                         GarageInfo[gID][Pickup] = CreatePickup(1318, 1, GarageInfo[gID][ExtX], GarageInfo[gID][ExtY], GarageInfo[gID][ExtZ]);
  218.                         if(GarageInfo[gID][Price] == 0) format(string,sizeof(string),"Owner: {FF0000}No\n{FFFFFF}Price: {00FF00}Free\n{FFFFFF}Status: {00FF00}Unlocked\n{FFFFFF}Interior: {00FF00}Medium");
  219.                         else format(string,sizeof(string),"Owner: {FF0000}No\n{FFFFFF}Price: {FF0000}%d\n{FFFFFF}Status: {00FF00}Unlocked\n{FFFFFF}Interior: {00FF00}Medium", GarageInfo[gID][Price]);
  220.                         GarageInfo[gID][Label] = Create3DTextLabel(string, COLOR_WHITE, GarageInfo[gID][ExtX], GarageInfo[gID][ExtY], GarageInfo[gID][ExtZ]+0.8, 10.0, 0, 0);
  221.                         //Saving garage
  222.                         dini_Create(SaveString);
  223.                         dini_Set(SaveString, "\nOwner", GarageOwner);
  224.                         dini_FloatSet(SaveString,"Ext:X", GarageInfo[gID][ExtX]);
  225.                         dini_FloatSet(SaveString,"Ext:Y", GarageInfo[gID][ExtY]);
  226.                         dini_FloatSet(SaveString,"Ext:Z", GarageInfo[gID][ExtZ]);
  227.                         dini_FloatSet(SaveString,"Ext:A", GarageInfo[gID][ExtA]);
  228.                         dini_FloatSet(SaveString,"Int:X", GarageInfo[gID][IntX]);
  229.                         dini_FloatSet(SaveString,"Int:Y", GarageInfo[gID][IntY]);
  230.                         dini_FloatSet(SaveString,"Int:Z", GarageInfo[gID][IntZ]);
  231.                         dini_FloatSet(SaveString,"Int:A", GarageInfo[gID][IntA]);
  232.                         dini_IntSet(SaveString, "VirtualWorld", GarageInfo[gID][vWorld]);
  233.                         dini_IntSet(SaveString, "Interior", GarageInfo[gID][IntID]);
  234.                         dini_IntSet(SaveString, "Status", GarageInfo[gID][Status]);
  235.                         dini_IntSet(SaveString, "ForSale", GarageInfo[gID][ForSale]);
  236.                         dini_IntSet(SaveString, "Price", GarageInfo[gID][Price]);
  237.                         for(new v = 0; v <= MAX_VEHICLES; v++)
  238.                         {
  239.                             if(IsValidVehicle(v))
  240.                             {
  241.                                 IsGarageVehicle[gID][v] = 0;
  242.                             }
  243.                         }
  244.                         //Message
  245.                         SendClientMessage(playerid,COLOR_GREEN,"Garage was successfully created!");
  246.                         return 1;
  247.                     }
  248.                     else if(strcmp(Garage, "Big", true) == 0)
  249.                     {
  250.                         new GarageOwner[MAX_PLAYER_NAME];
  251.                         format(GarageOwner, MAX_PLAYER_NAME, "No");
  252.                         new StringPrice[24];
  253.                         strmid(StringPrice, cmdtext, where, strlen(cmdtext));
  254.                         GarageInfo[gID][Price] = strval(StringPrice);
  255.                         GetPlayerPos(playerid, GarageInfo[gID][ExtX], GarageInfo[gID][ExtY], GarageInfo[gID][ExtZ]);
  256.                         GetPlayerFacingAngle(playerid,GarageInfo[gID][ExtA]);
  257.                         GarageInfo[gID][vWorld] = ReturnNextUnusedVirtualWorld();
  258.                         GarageInfo[gID][IntID] = 1;
  259.                         GarageInfo[gID][Status] = 0;
  260.                         GarageInfo[gID][ForSale] = 1;
  261.                         GarageInfo[gID][IntX] = 608.6567;
  262.                         GarageInfo[gID][IntY] = -10.2052;
  263.                         GarageInfo[gID][IntZ] = 1000.9206;
  264.                         GarageInfo[gID][IntA] = 270.0000;
  265.                         GarageInfo[gID][Pickup] = CreatePickup(1318, 1, GarageInfo[gID][ExtX], GarageInfo[gID][ExtY], GarageInfo[gID][ExtZ]);
  266.                         if(GarageInfo[gID][Price] == 0) format(string,sizeof(string),"Owner: {FF0000}No\n{FFFFFF}Price: {00FF00}Free\n{FFFFFF}Status: {00FF00}Unlocked\n{FFFFFF}Interior: {FFFF00}Big");
  267.                         else format(string,sizeof(string),"Owner: {FF0000}No\n{FFFFFF}Price: {FF0000}%d\n{FFFFFF}Status: {00FF00}Unlocked\n{FFFFFF}Interior: {FFFF00}Big", GarageInfo[gID][Price]);
  268.                         GarageInfo[gID][Label] = Create3DTextLabel(string, COLOR_WHITE, GarageInfo[gID][ExtX], GarageInfo[gID][ExtY], GarageInfo[gID][ExtZ]+0.8, 10.0, 0, 0);
  269.                         //Saving garage
  270.                         dini_Create(SaveString);
  271.                         dini_Set(SaveString, "\nOwner", GarageOwner);
  272.                         dini_FloatSet(SaveString,"Ext:X", GarageInfo[gID][ExtX]);
  273.                         dini_FloatSet(SaveString,"Ext:Y", GarageInfo[gID][ExtY]);
  274.                         dini_FloatSet(SaveString,"Ext:Z", GarageInfo[gID][ExtZ]);
  275.                         dini_FloatSet(SaveString,"Ext:A", GarageInfo[gID][ExtA]);
  276.                         dini_FloatSet(SaveString,"Int:X", GarageInfo[gID][IntX]);
  277.                         dini_FloatSet(SaveString,"Int:Y", GarageInfo[gID][IntY]);
  278.                         dini_FloatSet(SaveString,"Int:Z", GarageInfo[gID][IntZ]);
  279.                         dini_FloatSet(SaveString,"Int:A", GarageInfo[gID][IntA]);
  280.                         dini_IntSet(SaveString, "VirtualWorld", GarageInfo[gID][vWorld]);
  281.                         dini_IntSet(SaveString, "Interior", GarageInfo[gID][IntID]);
  282.                         dini_IntSet(SaveString, "Status", GarageInfo[gID][Status]);
  283.                         dini_IntSet(SaveString, "ForSale", GarageInfo[gID][ForSale]);
  284.                         dini_IntSet(SaveString, "Price", GarageInfo[gID][Price]);
  285.                         for(new v = 0; v <= MAX_VEHICLES; v++)
  286.                         {
  287.                             if(IsValidVehicle(v))
  288.                             {
  289.                                 IsGarageVehicle[gID][v] = 0;
  290.                             }
  291.                         }
  292.                         //Message
  293.                         SendClientMessage(playerid,COLOR_GREEN,"Garage was successfully created!");
  294.                         return 1;
  295.                     }
  296.                     else SendClientMessage(playerid, COLOR_ERROR, "Wrong garage interior.");
  297.                 } else SendClientMessage(playerid, COLOR_WHITE, "Usage: /g create [InteriorType] [Price]");
  298.             }
  299.         } else SendClientMessage(playerid, COLOR_ERROR, "You are not a RCON Administrator.");
  300.         return 1;
  301.     }
  302.     if(strcmp(cmdtext, "/g delete", true) == 0)
  303.     {
  304.         if(IsPlayerAdmin(playerid))
  305.         {
  306.             for(new g = 0; g <= MAX_GARAGES; g++)
  307.             {
  308.                 new Garage[64];
  309.                 format(Garage, sizeof(Garage), "/Garages/%d.dini.save", g);
  310.                 if(dini_Exists(Garage))
  311.                 {
  312.                     LoadGarages(g);
  313.                     if(IsPlayerInRangeOfPoint(playerid, 3.0, GarageInfo[g][ExtX], GarageInfo[g][ExtY], GarageInfo[g][ExtZ]))
  314.                     {
  315.                         format(Garage, sizeof(Garage), "/Garages/%d.dini.save", g);
  316.                         if(dini_Exists(Garage))
  317.                         {
  318.                             Delete3DTextLabel(GarageInfo[g][Label]);
  319.                             DestroyPickup(GarageInfo[g][Pickup]);
  320.                             DestroyPickup(GarageInfo[g][Pickup]);
  321.                             DestroyPickup(GarageInfo[g][Pickup]);
  322.                             dini_Remove(Garage);
  323.                             SendClientMessage(playerid,COLOR_GREEN,"Garage was successfully deleted!");
  324.                         }
  325.                     }
  326.                 }
  327.             }
  328.         } else SendClientMessage(playerid, COLOR_ERROR, "You are not a RCON Administrator.");
  329.         return 1;
  330.     }
  331.     if(strcmp(cmdtext, "/g enter", true) == 0)
  332.     {
  333.         for(new g = 0; g <= MAX_GARAGES; g++)
  334.         {
  335.             new Garage[64];
  336.             format(Garage, sizeof(Garage), "/Garages/%d.dini.save", g);
  337.             if(dini_Exists(Garage))
  338.             {
  339.                 LoadGarages(g);
  340.                 if(IsPlayerInRangeOfPoint(playerid, 3.0, GarageInfo[g][ExtX], GarageInfo[g][ExtY], GarageInfo[g][ExtZ]))
  341.                 {
  342.                     if(dini_Exists(Garage))
  343.                     {
  344.                         if(GarageInfo[g][Status] == 0)
  345.                         {
  346.                             if(!IsPlayerInAnyVehicle(playerid))
  347.                             {
  348.                                 SetPlayerPos(playerid,GarageInfo[g][IntX],GarageInfo[g][IntY],GarageInfo[g][IntZ]);
  349.                                 SetPlayerInterior(playerid,GarageInfo[g][IntID]);
  350.                                 SetPlayerVirtualWorld(playerid,GarageInfo[g][vWorld]);
  351.                                 SetPlayerFacingAngle(playerid,GarageInfo[g][IntA]);
  352.                                 SetCameraBehindPlayer(playerid);
  353.                             }
  354.                             if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  355.                             {
  356.                                 new vehicleid = GetPlayerVehicleID(playerid);
  357.                                 SetPlayerPos(playerid,GarageInfo[g][IntX],GarageInfo[g][IntY],GarageInfo[g][IntZ]);
  358.                                 SetPlayerInterior(playerid,GarageInfo[g][IntID]);
  359.                                 SetPlayerVirtualWorld(playerid,GarageInfo[g][vWorld]);
  360.                                 SetPlayerFacingAngle(playerid,GarageInfo[g][IntA]);
  361.                                 SetVehiclePos(vehicleid, GarageInfo[g][IntX],GarageInfo[g][IntY],GarageInfo[g][IntZ]);
  362.                                 SetVehicleVirtualWorld(vehicleid,GarageInfo[g][vWorld]);
  363.                                 LinkVehicleToInterior(vehicleid,GarageInfo[g][IntID]);
  364.                                 SetVehicleZAngle(vehicleid,GarageInfo[g][IntA]);
  365.                                 PutPlayerInVehicle(playerid,vehicleid,0);
  366.                                 IsGarageVehicle[g][vehicleid] = 1;
  367.                                 SetCameraBehindPlayer(playerid);
  368.                                 for(new i = 0; i < MAX_PLAYERS; i++)
  369.                                 {
  370.                                     if(IsPlayerInVehicle(i, vehicleid) && GetPlayerVehicleSeat(i) == 1)
  371.                                     {
  372.                                         SetPlayerPos(i,GarageInfo[g][IntX],GarageInfo[g][IntY],GarageInfo[g][IntZ]);
  373.                                         SetPlayerInterior(i,GarageInfo[g][IntID]);
  374.                                         SetPlayerVirtualWorld(i,GarageInfo[g][vWorld]);
  375.                                         SetPlayerFacingAngle(i,GarageInfo[g][IntA]);
  376.                                         PutPlayerInVehicle(i,vehicleid,1);
  377.                                         SetCameraBehindPlayer(i);
  378.                                     }
  379.                                     if(IsPlayerInVehicle(i, vehicleid) && GetPlayerVehicleSeat(i) == 2)
  380.                                     {
  381.                                         SetPlayerPos(i,GarageInfo[g][IntX],GarageInfo[g][IntY],GarageInfo[g][IntZ]);
  382.                                         SetPlayerInterior(i,GarageInfo[g][IntID]);
  383.                                         SetPlayerVirtualWorld(i,GarageInfo[g][vWorld]);
  384.                                         SetPlayerFacingAngle(i,GarageInfo[g][IntA]);
  385.                                         PutPlayerInVehicle(i,vehicleid,2);
  386.                                         SetCameraBehindPlayer(i);
  387.                                     }
  388.                                     if(IsPlayerInVehicle(i, vehicleid) && GetPlayerVehicleSeat(i) == 3)
  389.                                     {
  390.                                         SetPlayerPos(i,GarageInfo[g][IntX],GarageInfo[g][IntY],GarageInfo[g][IntZ]);
  391.                                         SetPlayerInterior(i,GarageInfo[g][IntID]);
  392.                                         SetPlayerVirtualWorld(i,GarageInfo[g][vWorld]);
  393.                                         SetPlayerFacingAngle(i,GarageInfo[g][IntA]);
  394.                                         PutPlayerInVehicle(i,vehicleid,3);
  395.                                         SetCameraBehindPlayer(i);
  396.                                     }
  397.                                 }
  398.                             }
  399.                         } else GameTextForPlayer(playerid, "~r~LOCKED", 600, 1);
  400.                     }
  401.                 }
  402.             }
  403.         }
  404.         return 1;
  405.     }
  406.     if(strcmp(cmdtext, "/g exit", true) == 0)
  407.     {
  408.         for(new g = 0; g <= MAX_GARAGES; g++)
  409.         {
  410.             new Garage[64];
  411.             format(Garage, sizeof(Garage), "/Garages/%d.dini.save", g);
  412.             if(dini_Exists(Garage))
  413.             {
  414.                 LoadGarages(g);
  415.                 if(IsPlayerInRangeOfPoint(playerid, 3.0, GarageInfo[g][IntX], GarageInfo[g][IntY], GarageInfo[g][IntZ]) && GetPlayerVirtualWorld(playerid) == GarageInfo[g][vWorld])
  416.                 {
  417.                     if(GarageInfo[g][Status] == 0)
  418.                     {
  419.                         if(!IsPlayerInAnyVehicle(playerid))
  420.                         {
  421.                             SetPlayerPos(playerid,GarageInfo[g][ExtX],GarageInfo[g][ExtY],GarageInfo[g][ExtZ]);
  422.                             SetPlayerInterior(playerid,0);
  423.                             SetPlayerVirtualWorld(playerid,0);
  424.                             SetPlayerFacingAngle(playerid,GarageInfo[g][ExtA]);
  425.                             SetCameraBehindPlayer(playerid);
  426.                             return 1;
  427.                         }
  428.                         if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  429.                         {
  430.                             new vehicleid = GetPlayerVehicleID(playerid);
  431.                             SetPlayerPos(playerid,GarageInfo[g][ExtX],GarageInfo[g][ExtY],GarageInfo[g][ExtZ]);
  432.                             SetPlayerInterior(playerid,0);
  433.                             SetPlayerVirtualWorld(playerid,0);
  434.                             SetPlayerFacingAngle(playerid,GarageInfo[g][ExtA]);
  435.                             SetVehiclePos(vehicleid, GarageInfo[g][ExtX],GarageInfo[g][ExtY],GarageInfo[g][ExtZ]);
  436.                             SetVehicleVirtualWorld(vehicleid,0);
  437.                             LinkVehicleToInterior(vehicleid,0);
  438.                             SetVehicleZAngle(vehicleid,GarageInfo[g][ExtA]);
  439.                             PutPlayerInVehicle(playerid,vehicleid,0);
  440.                             IsGarageVehicle[g][vehicleid] = 0;
  441.                             SetCameraBehindPlayer(playerid);
  442.                             for(new i = 0; i < MAX_PLAYERS; i++)
  443.                             {
  444.                                 if(IsPlayerInVehicle(i, vehicleid) && GetPlayerVehicleSeat(i) == 1)
  445.                                 {
  446.                                     SetPlayerPos(playerid,GarageInfo[g][ExtX],GarageInfo[g][ExtY],GarageInfo[g][ExtZ]);
  447.                                     SetPlayerInterior(playerid,0);
  448.                                     SetPlayerVirtualWorld(playerid,0);
  449.                                     SetPlayerFacingAngle(playerid,GarageInfo[g][ExtA]);
  450.                                     PutPlayerInVehicle(i,vehicleid,1);
  451.                                     SetCameraBehindPlayer(i);
  452.                                 }
  453.                                 if(IsPlayerInVehicle(i, vehicleid) && GetPlayerVehicleSeat(i) == 2)
  454.                                 {
  455.                                     SetPlayerPos(playerid,GarageInfo[g][ExtX],GarageInfo[g][ExtY],GarageInfo[g][ExtZ]);
  456.                                     SetPlayerInterior(playerid,0);
  457.                                     SetPlayerVirtualWorld(playerid,0);
  458.                                     SetPlayerFacingAngle(playerid,GarageInfo[g][ExtA]);
  459.                                     PutPlayerInVehicle(i,vehicleid,2);
  460.                                     SetCameraBehindPlayer(i);
  461.                                 }
  462.                                 if(IsPlayerInVehicle(i, vehicleid) && GetPlayerVehicleSeat(i) == 3)
  463.                                 {
  464.                                     SetPlayerPos(playerid,GarageInfo[g][ExtX],GarageInfo[g][ExtY],GarageInfo[g][ExtZ]);
  465.                                     SetPlayerInterior(playerid,0);
  466.                                     SetPlayerVirtualWorld(playerid,0);
  467.                                     SetPlayerFacingAngle(playerid,GarageInfo[g][ExtA]);
  468.                                     PutPlayerInVehicle(i,vehicleid,3);
  469.                                     SetCameraBehindPlayer(i);
  470.                                 }
  471.                             }
  472.                             return 1;
  473.                         }
  474.                     } else GameTextForPlayer(playerid, "~r~LOCKED", 600, 1);
  475.                 }
  476.             }
  477.         }
  478.         return 1;
  479.     }
  480.     if(strcmp(cmdtext, "/g", true) == 0)
  481.     {
  482.         if(IsPlayerAdmin(playerid))
  483.         {
  484.             SendClientMessage(playerid,0xFFFF00FF,"All Garage Commands:");
  485.             SendClientMessage(playerid,COLOR_WHITE,"    Only for RCON ADMINS: /g create | /g delete | /g changeowner | /g changeinterior");
  486.             SendClientMessage(playerid,COLOR_WHITE,"    Only for garages owners: /g lock | /g sell ");
  487.             SendClientMessage(playerid,COLOR_WHITE,"    For all players: /g enter | /g exit | /g buy");
  488.         }
  489.         else
  490.         {
  491.             SendClientMessage(playerid,0xFFFF00FF,"Commands for garages:");
  492.             SendClientMessage(playerid,COLOR_WHITE,"    Only for garages owners: /g lock | /g sell");
  493.             SendClientMessage(playerid,COLOR_WHITE,"    For all players: /g enter | /g exit | /g buy");
  494.         }
  495.         return 1;
  496.     }
  497.     if(strfind(cmdtext, "/g changeowner", true) == 0)
  498.     {
  499.         if(IsPlayerAdmin(playerid))
  500.         {
  501.             for(new g = 0; g <= MAX_GARAGES; g++)
  502.             {
  503.                 new Garage[64];
  504.                 format(Garage, sizeof(Garage), "/Garages/%d.dini.save", g);
  505.                 if(dini_Exists(Garage))
  506.                 {
  507.                     LoadGarages(g);
  508.                     if(IsPlayerInRangeOfPoint(playerid, 3.0, GarageInfo[g][ExtX], GarageInfo[g][ExtY], GarageInfo[g][ExtZ]))
  509.                     {
  510.                         new GarageOwner[MAX_PLAYER_NAME], GarageLocked[128], GarageInterior[128], Garage2[64];
  511.                         format(Garage2, sizeof(Garage2), "/Garages/%d.dini.save", g);
  512.                         if(dini_Exists(Garage2))
  513.                         {
  514.                             if(strlen(cmdtext) > 15)
  515.                             {
  516.                                 strmid(GarageOwner, cmdtext, 15, strlen(cmdtext));
  517.                                 if(GarageInfo[g][IntID] == 0) GarageInterior = "{FFFF00}Small";
  518.                                 if(GarageInfo[g][IntID] == 2) GarageInterior = "{00FF00}Medium";
  519.                                 if(GarageInfo[g][IntID] == 3) GarageInterior = "{00FF00}Medium";
  520.                                 if(GarageInfo[g][IntID] == 1) GarageInterior = "{FF0000}Big";
  521.                                 if(GarageInfo[g][Status] == 0) GarageLocked = "{00FF00}Unlocked";
  522.                                 if(GarageInfo[g][Status] == 1) GarageLocked = "{FF0000}Locked";
  523.                                 if(GarageInfo[g][Price] == 0) format(string,sizeof(string),"Owner: {FF0000}%s\n{FFFFFF}Price: {00FF00}Free\n{FFFFFF}Status: %s\n{FFFFFF}Interior: %s", GarageOwner, GarageLocked, GarageInterior);
  524.                                 else format(string,sizeof(string),"Owner: {FF0000}%s\n{FFFFFF}Price: {FF0000}%d\n{FFFFFF}Status: %s\n{FFFFFF}Interior: %s", GarageOwner, GarageInfo[g][Price], GarageLocked, GarageInterior);
  525.                                 Update3DTextLabelText(GarageInfo[g][Label], COLOR_WHITE, string);
  526.                                 dini_Set(Garage2,"Owner", GarageOwner);
  527.                                 dini_IntSet(Garage2, "ForSale", 0);
  528.                                 SendClientMessage(playerid,COLOR_GREEN,"You successfully changed the owner!");
  529.                             } else SendClientMessage(playerid, COLOR_WHITE, "Usage: /g changeowner [Owner]");
  530.                         }
  531.                     }
  532.                 }
  533.             }
  534.  
  535.         } else SendClientMessage(playerid, COLOR_ERROR, "You are not a RCON Administrator.");
  536.         return 1;
  537.     }
  538.     if(strfind(cmdtext, "/g changeinterior", true) == 0)
  539.     {
  540.         if(IsPlayerAdmin(playerid))
  541.         {
  542.             for(new g = 0; g <= MAX_GARAGES; g++)
  543.             {
  544.                 new Garage[64], GarageLocked[64];
  545.                 format(Garage, sizeof(Garage), "/Garages/%d.dini.save", g);
  546.                 if(dini_Exists(Garage))
  547.                 {
  548.                     LoadGarages(g);
  549.                     if(IsPlayerInRangeOfPoint(playerid, 3.0, GarageInfo[g][ExtX], GarageInfo[g][ExtY], GarageInfo[g][ExtZ]))
  550.                     {
  551.                         if(strlen(cmdtext) > 18)
  552.                         {
  553.                             new Garages[32];
  554.                             strmid(Garages, cmdtext, 18, strlen(cmdtext));
  555.                             if(strcmp(Garages, "Small", true) == 0)
  556.                             {
  557.                                 if(GarageInfo[g][IntID] != 0)
  558.                                 {
  559.                                     GarageInfo[g][IntID] = 0;
  560.                                     GarageInfo[g][IntX] = 1643.6659;
  561.                                     GarageInfo[g][IntY] = -1517.0594;
  562.                                     GarageInfo[g][IntZ] = 13.5688;
  563.                                     GarageInfo[g][IntA] = 0.0000;
  564.                                     dini_IntSet(Garage, "Interior", GarageInfo[g][IntID]);
  565.                                     dini_FloatSet(Garage,"Int:X", GarageInfo[g][IntX]);
  566.                                     dini_FloatSet(Garage,"Int:Y", GarageInfo[g][IntY]);
  567.                                     dini_FloatSet(Garage,"Int:Z", GarageInfo[g][IntZ]);
  568.                                     dini_FloatSet(Garage,"Int:A", GarageInfo[g][IntA]);
  569.                                     if(GarageInfo[g][Status] == 0) GarageLocked = "{00FF00}Unlocked";
  570.                                     if(GarageInfo[g][Status] == 1) GarageLocked = "{FF0000}Locked";
  571.                                     if(GarageInfo[g][Price] == 0) format(string,sizeof(string),"Owner: {FF0000}%s\n{FFFFFF}Price: {00FF00}Free\n{FFFFFF}Status: %s\n{FFFFFF}Interior: {FFFF00}Small", dini_Get(Garage, "Owner"), GarageLocked);
  572.                                     else format(string,sizeof(string),"Owner: {FF0000}%s\n{FFFFFF}Price: {FF0000}%d\n{FFFFFF}Status: %s\n{FFFFFF}Interior: {FFFF00}Small", dini_Get(Garage, "Owner"), GarageInfo[g][Price], GarageLocked);
  573.                                     Update3DTextLabelText(GarageInfo[g][Label], COLOR_WHITE, string);
  574.                                     SendClientMessage(playerid,COLOR_GREEN,"You successfully changed the garage's interior to Small!");
  575.                                 } else SendClientMessage(playerid, COLOR_ERROR, "This garage is already with this interior.");
  576.                             }
  577.                             else if(strcmp(Garages, "Medium1", true) == 0)
  578.                             {
  579.                                 if(GarageInfo[g][IntID] != 2)
  580.                                 {
  581.                                     GarageInfo[g][IntID] = 2;
  582.                                     GarageInfo[g][IntX] = 612.4073;
  583.                                     GarageInfo[g][IntY] = -76.4425;
  584.                                     GarageInfo[g][IntZ] = 997.9922;
  585.                                     GarageInfo[g][IntA] = 270.0000;
  586.                                     dini_IntSet(Garage, "Interior", GarageInfo[g][IntID]);
  587.                                     dini_FloatSet(Garage,"Int:X", GarageInfo[g][IntX]);
  588.                                     dini_FloatSet(Garage,"Int:Y", GarageInfo[g][IntY]);
  589.                                     dini_FloatSet(Garage,"Int:Z", GarageInfo[g][IntZ]);
  590.                                     dini_FloatSet(Garage,"Int:A", GarageInfo[g][IntA]);
  591.                                     if(GarageInfo[g][Status] == 0) GarageLocked = "{00FF00}Unlocked";
  592.                                     if(GarageInfo[g][Status] == 1) GarageLocked = "{FF0000}Locked";
  593.                                     if(GarageInfo[g][Price] == 0)format(string,sizeof(string),"Owner: {FF0000}%s\n{FFFFFF}Price: {00FF00}Free\n{FFFFFF}Status: %s\n{FFFFFF}Interior: {00FF00}Medium", dini_Get(Garage, "Owner"), GarageLocked);
  594.                                     else format(string,sizeof(string),"Owner: {FF0000}%s\n{FFFFFF}Price: {FF0000}%d\n{FFFFFF}Status: %s\n{FFFFFF}Interior: {00FF00}Medium", dini_Get(Garage, "Owner"), GarageInfo[g][Price], GarageLocked);
  595.                                     Update3DTextLabelText(GarageInfo[g][Label], COLOR_WHITE, string);
  596.                                     SendClientMessage(playerid,COLOR_GREEN,"You successfully changed the garage's interior to Medium(Type:1)!");
  597.                                 } else SendClientMessage(playerid, COLOR_ERROR, "This garage is already with this interior.");
  598.                             }
  599.                             else if(strcmp(Garages, "Medium2", true) == 0)
  600.                             {
  601.                                 if(GarageInfo[g][IntID] != 3)
  602.                                 {
  603.                                     GarageInfo[g][IntID] = 3;
  604.                                     GarageInfo[g][IntX] = 613.3256;
  605.                                     GarageInfo[g][IntY] = -125.1266;
  606.                                     GarageInfo[g][IntZ] = 997.9922;
  607.                                     GarageInfo[g][IntA] = 270.0000;
  608.                                     dini_IntSet(Garage, "Interior", GarageInfo[g][IntID]);
  609.                                     dini_FloatSet(Garage,"Int:X", GarageInfo[g][IntX]);
  610.                                     dini_FloatSet(Garage,"Int:Y", GarageInfo[g][IntY]);
  611.                                     dini_FloatSet(Garage,"Int:Z", GarageInfo[g][IntZ]);
  612.                                     dini_FloatSet(Garage,"Int:A", GarageInfo[g][IntA]);
  613.                                     if(GarageInfo[g][Status] == 0) GarageLocked = "{00FF00}Unlocked";
  614.                                     if(GarageInfo[g][Status] == 1) GarageLocked = "{FF0000}Locked";
  615.                                     if(GarageInfo[g][Price] == 0)format(string,sizeof(string),"Owner: {FF0000}%s\n{FFFFFF}Price: {00FF00}Free\n{FFFFFF}Status: %s\n{FFFFFF}Interior: {00FF00}Medium", dini_Get(Garage, "Owner"), GarageLocked);
  616.                                     else format(string,sizeof(string),"Owner: {FF0000}%s\n{FFFFFF}Price: {FF0000}%d\n{FFFFFF}Status: %s\n{FFFFFF}Interior: {00FF00}Medium", dini_Get(Garage, "Owner"), GarageInfo[g][Price], GarageLocked);
  617.                                     Update3DTextLabelText(GarageInfo[g][Label], COLOR_WHITE, string);
  618.                                     SendClientMessage(playerid,COLOR_GREEN,"You successfully changed the garage's interior to Medium(Type:2)!");
  619.                                 } else SendClientMessage(playerid, COLOR_ERROR, "This garage is already with this interior.");
  620.                             }
  621.                             else if(strcmp(Garages, "Big", true) == 0)
  622.                             {
  623.                                 if(GarageInfo[g][IntID] != 1)
  624.                                 {
  625.                                     GarageInfo[g][IntID] = 1;
  626.                                     GarageInfo[g][IntX] = 608.6567;
  627.                                     GarageInfo[g][IntY] = -10.2052;
  628.                                     GarageInfo[g][IntZ] = 1000.9206;
  629.                                     GarageInfo[g][IntA] = 270.0000;
  630.                                     dini_IntSet(Garage, "Interior", GarageInfo[g][IntID]);
  631.                                     dini_FloatSet(Garage,"Int:X", GarageInfo[g][IntX]);
  632.                                     dini_FloatSet(Garage,"Int:Y", GarageInfo[g][IntY]);
  633.                                     dini_FloatSet(Garage,"Int:Z", GarageInfo[g][IntZ]);
  634.                                     dini_FloatSet(Garage,"Int:A", GarageInfo[g][IntA]);
  635.                                     if(GarageInfo[g][Status] == 0) GarageLocked = "{00FF00}Unlocked";
  636.                                     if(GarageInfo[g][Status] == 1) GarageLocked = "{FF0000}Locked";
  637.                                     if(GarageInfo[g][Price] == 0)format(string,sizeof(string),"Owner: {FF0000}%s\n{FFFFFF}Price: {00FF00}Free\n{FFFFFF}Status: %s\n{FFFFFF}Interior: {FF0000}Big", dini_Get(Garage, "Owner"), GarageLocked);
  638.                                     else format(string,sizeof(string),"Owner: {FF0000}%s\n{FFFFFF}Price: {FF0000}%d\n{FFFFFF}Status: %s\n{FFFFFF}Interior: {FF0000}Big", dini_Get(Garage, "Owner"), GarageInfo[g][Price], GarageLocked);
  639.                                     Update3DTextLabelText(GarageInfo[g][Label], COLOR_WHITE, string);
  640.                                     SendClientMessage(playerid,COLOR_GREEN,"You successfully changed the garage's interior to Big!");
  641.                                 } else SendClientMessage(playerid, COLOR_ERROR, "This garage is already with this interior.");
  642.                             }
  643.                             else SendClientMessage(playerid, COLOR_ERROR, "Wrong garage interior.");
  644.                         } else SendClientMessage(playerid, COLOR_WHITE, "Usage: /g changeinterior [InteriorType]");
  645.                     }
  646.                 }
  647.             }
  648.         } else SendClientMessage(playerid, COLOR_ERROR, "You are not a RCON Administrator.");
  649.         return 1;
  650.     }
  651.     if(strcmp(cmdtext, "/g buy", true) == 0)
  652.     {
  653.         new Garage2[64], GarageOwner[MAX_PLAYER_NAME], GarageInterior[128], GarageLocked[128];
  654.         for(new g = 0; g <= MAX_GARAGES; g++)
  655.         {
  656.             format(Garage2, sizeof(Garage2), "/Garages/%d.dini.save", g);
  657.             if(dini_Exists(Garage2))
  658.             {
  659.                 LoadGarages(g);
  660.                 if(IsPlayerInRangeOfPoint(playerid, 3.0, GarageInfo[g][ExtX], GarageInfo[g][ExtY], GarageInfo[g][ExtZ]))
  661.                 {
  662.                     if(strcmp(dini_Get(Garage2, "Owner"),PlayerName(playerid), false) == 1)
  663.                     {
  664.                         if(GarageInfo[g][ForSale] == 1)
  665.                         {
  666.                             if(GetPlayerMoney(playerid) >= GarageInfo[g][Price])
  667.                             {
  668.                                 if(GarageInfo[g][IntID] == 0) GarageInterior = "{FFFF00}Small";
  669.                                 if(GarageInfo[g][IntID] == 2) GarageInterior = "{00FF00}Medium";
  670.                                 if(GarageInfo[g][IntID] == 3) GarageInterior = "{00FF00}Medium";
  671.                                 if(GarageInfo[g][IntID] == 1) GarageInterior = "{FF0000}Big";
  672.                                 if(GarageInfo[g][Status] == 0) GarageLocked = "{00FF00}Unlocked";
  673.                                 if(GarageInfo[g][Status] == 1) GarageLocked = "{FF0000}Locked";
  674.                                 GarageInfo[g][ForSale] = 0;
  675.                                 format(GarageOwner, MAX_PLAYER_NAME, "%s", PlayerName(playerid));
  676.                                 dini_Set(Garage2,"Owner", GarageOwner);
  677.                                 GivePlayerMoney(playerid,-GarageInfo[g][Price]);
  678.                                 dini_IntSet(Garage2, "ForSale", GarageInfo[g][ForSale]);
  679.                                 if(GarageInfo[g][Price] == 0) format(string,sizeof(string),"Owner: {FF0000}%s\n{FFFFFF}Price: {00FF00}Free\n{FFFFFF}Status: %s\n{FFFFFF}Interior: %s", dini_Get(Garage2, "Owner"), GarageLocked, GarageInterior);
  680.                                 else format(string,sizeof(string),"Owner: {FF0000}%s\n{FFFFFF}Price: {FF0000}%d\n{FFFFFF}Status: %s\n{FFFFFF}Interior: %s", dini_Get(Garage2, "Owner"), GarageInfo[g][Price], GarageLocked, GarageInterior);
  681.                                 Update3DTextLabelText(GarageInfo[g][Label], COLOR_WHITE, string);
  682.                                 SendClientMessage(playerid, COLOR_GREEN, "Congratulations, You have bought a new garage!");
  683.                             } else SendClientMessage(playerid, COLOR_ERROR, "You don't have enough money to buy this garage!");
  684.                         } else SendClientMessage(playerid, COLOR_ERROR, "This garage is not For Sale!");
  685.                     } else SendClientMessage(playerid, COLOR_ERROR, "This garage is already Yours!");
  686.                 }
  687.             }
  688.         }
  689.         return 1;
  690.     }
  691.     if(strcmp(cmdtext, "/g sell", true) == 0)
  692.     {
  693.         new Garage[64], Garage2[64], GarageOwner[MAX_PLAYER_NAME], GarageInterior[128], GarageLocked[128];
  694.         for(new g = 0; g <= MAX_GARAGES; g++)
  695.         {
  696.             format(Garage, sizeof(Garage), "/Garages/%d.dini.save", g);
  697.             if(dini_Exists(Garage))
  698.             {
  699.                 LoadGarages(g);
  700.                 if(IsPlayerInRangeOfPoint(playerid, 3.0, GarageInfo[g][ExtX], GarageInfo[g][ExtY], GarageInfo[g][ExtZ]))
  701.                 {
  702.                     format(Garage2, sizeof(Garage2), "/Garages/%d.dini.save", g);
  703.                     if(dini_Exists(Garage2))
  704.                     {
  705.                         if(strcmp(dini_Get(Garage2, "Owner"),PlayerName(playerid), false) == 0)
  706.                         {
  707.                             if(GarageInfo[g][IntID] == 0) GarageInterior = "{FFFF00}Small";
  708.                             if(GarageInfo[g][IntID] == 2) GarageInterior = "{00FF00}Medium";
  709.                             if(GarageInfo[g][IntID] == 3) GarageInterior = "{00FF00}Medium";
  710.                             if(GarageInfo[g][IntID] == 1) GarageInterior = "{FF0000}Big";
  711.                             if(GarageInfo[g][Status] == 0) GarageLocked = "{00FF00}Unlocked";
  712.                             if(GarageInfo[g][Status] == 1) GarageLocked = "{FF0000}Locked";
  713.                             GarageInfo[g][ForSale] = 1;
  714.                             format(GarageOwner, MAX_PLAYER_NAME, "No");
  715.                             dini_Set(Garage2,"Owner", GarageOwner);
  716.                             GivePlayerMoney(playerid,GarageInfo[g][Price]);
  717.                             dini_IntSet(Garage2, "ForSale", GarageInfo[g][ForSale]);
  718.                             if(GarageInfo[g][Price] == 0) format(string,sizeof(string),"Owner: {FF0000}%s\n{FFFFFF}Price: {00FF00}Free\n{FFFFFF}Status: %s\n{FFFFFF}Interior: %s", dini_Get(Garage2, "Owner"), GarageLocked, GarageInterior);
  719.                             else format(string,sizeof(string),"Owner: {FF0000}%s\n{FFFFFF}Price: {FF0000}%d\n{FFFFFF}Status: %s\n{FFFFFF}Interior: %s", dini_Get(Garage2, "Owner"), GarageInfo[g][Price], GarageLocked, GarageInterior);
  720.                             Update3DTextLabelText(GarageInfo[g][Label], COLOR_WHITE, string);
  721.                             SendClientMessage(playerid, COLOR_GREEN, "You have successfully selled Your garage!");
  722.                         } else SendClientMessage(playerid, COLOR_ERROR, "This garage is not Yours!");
  723.                     }
  724.                 }
  725.             }
  726.         }
  727.         return 1;
  728.     }
  729.     if(strcmp(cmdtext, "/g lock", true) == 0)
  730.     {
  731.         new GarageOwner[MAX_PLAYER_NAME], GarageInterior[64], Garage2[64];
  732.         for(new g = 0; g <= MAX_GARAGES; g++)
  733.         {
  734.             new Garage[64];
  735.             format(Garage, sizeof(Garage), "/Garages/%d.dini.save", g);
  736.             if(dini_Exists(Garage))
  737.             {
  738.                 LoadGarages(g);
  739.                 if(IsPlayerInRangeOfPoint(playerid, 3.0, GarageInfo[g][ExtX], GarageInfo[g][ExtY], GarageInfo[g][ExtZ]) || IsPlayerInRangeOfPoint(playerid, 3.0, GarageInfo[g][IntX], GarageInfo[g][IntY], GarageInfo[g][IntZ]) && GetPlayerVirtualWorld(playerid) == GarageInfo[g][vWorld])
  740.                 {
  741.                     format(Garage2, sizeof(Garage2), "/Garages/%d.dini.save", g);
  742.                     if(dini_Exists(Garage2))
  743.                     {
  744.                         format(GarageOwner, MAX_PLAYER_NAME, dini_Get(Garage2, "Owner"));
  745.                         if(strcmp(GarageOwner,PlayerName(playerid), false) == 0 && GarageInfo[g][ForSale] != 1)
  746.                         {
  747.                             if(GarageInfo[g][Status] == 0)
  748.                             {
  749.                                 if(GarageInfo[g][IntID] == 0) GarageInterior = "{FFFF00}Small";
  750.                                 if(GarageInfo[g][IntID] == 2) GarageInterior = "{00FF00}Medium";
  751.                                 if(GarageInfo[g][IntID] == 3) GarageInterior = "{00FF00}Medium";
  752.                                 if(GarageInfo[g][IntID] == 1) GarageInterior = "{FF0000}Big";
  753.                                 GarageInfo[g][Status] = 1;
  754.                                 if(GarageInfo[g][Price] == 0) format(string,sizeof(string),"Owner: {FF0000}%s\n{FFFFFF}Price: {00FF00}Free\n{FFFFFF}Status: {FF0000}Locked\n{FFFFFF}Interior: %s", dini_Get(Garage, "Owner"), GarageInterior);
  755.                                 else format(string,sizeof(string),"Owner: {FF0000}%s\n{FFFFFF}Price: {FFFF00}%d\n{FFFFFF}Status: {FF0000}Locked\n{FFFFFF}Interior: %s", dini_Get(Garage, "Owner"), GarageInfo[g][Price], GarageInterior);
  756.                                 Update3DTextLabelText(GarageInfo[g][Label], COLOR_WHITE, string);
  757.                                 GameTextForPlayer(playerid, "~w~GARAGE ~r~LOCKED", 1500, 4);
  758.                                 dini_IntSet(Garage2, "Status", GarageInfo[g][Status]);
  759.                             }
  760.                             else if(GarageInfo[g][Status] == 1)
  761.                             {
  762.                                 if(GarageInfo[g][IntID] == 0) GarageInterior = "{FFFF00}Small";
  763.                                 if(GarageInfo[g][IntID] == 2) GarageInterior = "{00FF00}Medium";
  764.                                 if(GarageInfo[g][IntID] == 3) GarageInterior = "{00FF00}Medium";
  765.                                 if(GarageInfo[g][IntID] == 1) GarageInterior = "{FF0000}Big";
  766.                                 GarageInfo[g][Status] = 0;
  767.                                 if(GarageInfo[g][Price] == 0) format(string,sizeof(string),"Owner: {FF0000}%s\n{FFFFFF}Price: {00FF00}Free\n{FFFFFF}Status: {00FF00}Unlocked\n{FFFFFF}Interior: %s", dini_Get(Garage, "Owner"), GarageInterior);
  768.                                 else format(string,sizeof(string),"Owner: {FF0000}%s\n{FFFFFF}Price: {FFFF00}%d\n{FFFFFF}Status: {00FF00}Unlocked\n{FFFFFF}Interior: %s", dini_Get(Garage, "Owner"), GarageInfo[g][Price], GarageInterior);
  769.                                 Update3DTextLabelText(GarageInfo[g][Label], COLOR_WHITE, string);
  770.                                 GameTextForPlayer(playerid, "~w~GARAGE ~g~UNLOCKED", 1500, 4);
  771.                                 dini_IntSet(Garage2, "Status", GarageInfo[g][Status]);
  772.                             }
  773.  
  774.                         } else SendClientMessage(playerid, COLOR_ERROR, "This garage is not Yours.");
  775.                     }
  776.                 }
  777.             }
  778.         }
  779.         return 1;
  780.     }
  781.     return 0;
  782. }
  783. forward LoadGarages(gID);
  784. public LoadGarages(gID)
  785. {
  786.     new LoadString[256];
  787.     format(LoadString, sizeof(LoadString), "/Garages/%d.dini.save", gID);
  788.     if(dini_Exists(LoadString))
  789.     {
  790.         GarageInfo[gID][ExtX] = dini_Float(LoadString,"Ext:X");
  791.         GarageInfo[gID][ExtY] = dini_Float(LoadString,"Ext:Y");
  792.         GarageInfo[gID][ExtZ] = dini_Float(LoadString,"Ext:Z");
  793.         GarageInfo[gID][ExtA] = dini_Float(LoadString,"Ext:A");
  794.         GarageInfo[gID][IntX] = dini_Float(LoadString,"Int:X");
  795.         GarageInfo[gID][IntY] = dini_Float(LoadString,"Int:Y");
  796.         GarageInfo[gID][IntZ] = dini_Float(LoadString,"Int:Z");
  797.         GarageInfo[gID][IntA] = dini_Float(LoadString,"Int:A");
  798.         GarageInfo[gID][vWorld] = dini_Int(LoadString, "VirtualWorld");
  799.         GarageInfo[gID][IntID] = dini_Int(LoadString, "Interior");
  800.         GarageInfo[gID][Status] = dini_Int(LoadString, "Status");
  801.         GarageInfo[gID][ForSale] = dini_Int(LoadString, "ForSale");
  802.         GarageInfo[gID][Price] = dini_Int(LoadString, "Price");
  803.     }
  804.     return 1;
  805. }
  806. //Stocks
  807. stock ReturnNextUnusedGarageID()
  808. {
  809.     new Garages[64];
  810.     for(new g = 0; g <= MAX_GARAGES; g++)
  811.     {
  812.         format(Garages, sizeof(Garages), "/Garages/%d.dini.save", g);
  813.         if(!dini_Exists(Garages)) return g;
  814.     }
  815.     return 1;
  816. }
  817. stock ReturnNextUnusedVirtualWorld()
  818. {
  819.     new Garages[64];
  820.     format(Garages, sizeof(Garages), "/Garages/%d.dini.save", ReturnNextUnusedGarageID()-1);
  821.     return dini_Int(Garages, "VirtualWorld")+1;
  822. }
  823. stock PlayerName(playerid)
  824. {
  825.     new name[MAX_PLAYER_NAME];
  826.     GetPlayerName(playerid, name, sizeof(name));
  827.     return name;
  828. }
Add Comment
Please, Sign In to add comment