Advertisement
shourya90

Untitled

Apr 22nd, 2021
752
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 13.71 KB | None | 0 0
  1. using Crazy_CnR.PlayerData;
  2. using GTANetworkAPI;
  3. using MySql.Data.MySqlClient;
  4. using System.Threading;
  5. using System.Collections.Generic;
  6. using System;
  7. using Crazy_CnR.Functions;
  8. using Crazy_CnR.Colors;
  9.  
  10. namespace Crazy_CnR.Business
  11. {
  12.     class Business : Script
  13.     {
  14.         public static List<BusinessVar> BUSINESS_LIST = new List<BusinessVar>();
  15.         [ServerEvent(Event.ResourceStart)]
  16.         public void OnResourceStart()
  17.         {
  18.             LoadAllBusiness();
  19.         }
  20.         public static void LoadAllBusiness()
  21.         {
  22.             string Query = "SELECT a.*, b.name FROM business a LEFT JOIN accounts b ON a.owner = b.id";
  23.             using MySqlCommand command = new MySqlCommand(Query, Database.BussConn);
  24.             {
  25.  
  26.                 using (MySqlDataReader reader = command.ExecuteReader())
  27.                 {
  28.                     while (reader.Read())
  29.                     {
  30.  
  31.                         BusinessVar buss = new BusinessVar();
  32.                         buss.BussID = reader.GetInt32("id");
  33.                         buss.BussName = reader.GetString("bussname");
  34.                         buss.BussOwner = reader.GetInt32("owner");
  35.                         buss.BussPosX = reader.GetFloat("x");
  36.                         buss.BussPosY = reader.GetFloat("y");
  37.                         buss.BussPosZ = reader.GetFloat("z");
  38.                         buss.BussCost = reader.GetInt32("busscost");
  39.                         buss.BussValidity = reader.GetInt32("validity");
  40.                         buss.BussMoney = reader.GetInt32("money");
  41.                         buss.BussCol = NAPI.ColShape.CreateCylinderColShape(new Vector3(buss.BussPosX, buss.BussPosY, buss.BussPosZ), 1.5f, 1, 0);
  42.                         buss.BussMarker = NAPI.Marker.CreateMarker(1, new Vector3(buss.BussPosX, buss.BussPosY, buss.BussPosZ - 1), new Vector3(), new Vector3(), 1.5f, new Color(60, 224, 0, 100), false, 0);
  43.                         buss.BussBlip = NAPI.Blip.CreateBlip(374, new Vector3(buss.BussPosX, buss.BussPosY, buss.BussPosZ), 1, 1, "Business", 255, 2000, true, 0, 0);
  44.  
  45.                         string str = "";
  46.                         if (buss.BussOwner == 0)
  47.                         {
  48.                             str = $"Business: {buss.BussName}\nCost: {buss.BussCost}\nOwner: Unowned";
  49.                         }
  50.                         else
  51.                         {
  52.                             string ownername = reader.GetString("name");
  53.                             str = $"Business: {buss.BussName}\nOwner: {ownername}";
  54.                         }
  55.  
  56.                         buss.BussLabel = NAPI.TextLabel.CreateTextLabel(str, new Vector3(buss.BussPosX, buss.BussPosY, buss.BussPosZ), 5, 1, 0, new Color(255, 255, 255), false, 0);
  57.                         BUSINESS_LIST.Add(buss);
  58.                     }
  59.                     reader.Close();
  60.                     BussGlobalTimer();
  61.                 }
  62.             }
  63.         }
  64.         [Command("addbuss", "Usage: /addbuss [business name] [cost]", SensitiveInfo = true)]
  65.         public void CMD_CreateBusiness(Player player, string bussname, int cost)
  66.         {
  67.             string location = Fun.GetPlayerLocName(player);
  68.             int Level = player.GetData<int>(EntityData.PLAYER_LEVEL);
  69.  
  70.             if (Level > 4)
  71.             {
  72.  
  73.                 string Query = $"INSERT INTO `business` (`bussname`, `owner`, `x`, `y`, `z`, `busscost`, `validity`, `money`) VALUES(@bussname, @owner, @x, @y, @z, @busscost, @validity, @money)";
  74.                 using (MySqlCommand command = new MySqlCommand(Query, Database.BussConn))
  75.                 {
  76.  
  77.                     command.Parameters.AddWithValue("@bussname", bussname);
  78.                     command.Parameters.AddWithValue("@owner", 0);
  79.                     command.Parameters.AddWithValue("@x", player.Position.X);
  80.                     command.Parameters.AddWithValue("@y", player.Position.Y);
  81.                     command.Parameters.AddWithValue("@z", player.Position.Z);
  82.                     command.Parameters.AddWithValue("@busscost", cost);
  83.                     command.Parameters.AddWithValue("@validity", 0);
  84.                     command.Parameters.AddWithValue("@money", 0);
  85.  
  86.  
  87.                     try
  88.                     {
  89.                         command.ExecuteNonQuery();
  90.                         BusinessVar buss = new BusinessVar();
  91.                         buss.BussID = (int)command.LastInsertedId;
  92.                         buss.BussOwner = 0;
  93.                         buss.BussName = bussname;
  94.                         buss.BussPosX = player.Position.X;
  95.                         buss.BussPosY = player.Position.Y;
  96.                         buss.BussPosZ = player.Position.Z;
  97.                         buss.BussCost = cost;
  98.                         buss.BussValidity = 0;
  99.                         buss.BussMoney = 0;
  100.                         buss.BussCol = NAPI.ColShape.CreateCylinderColShape(new Vector3(buss.BussPosX, buss.BussPosY, buss.BussPosZ), 1.5f, 1, 0);
  101.                         buss.BussMarker = NAPI.Marker.CreateMarker(1, new Vector3(buss.BussPosX, buss.BussPosY, buss.BussPosZ - 1), new Vector3(), new Vector3(), 1.5f, new Color(60, 224, 0, 100), false, 0);
  102.                         buss.BussBlip = NAPI.Blip.CreateBlip(374, new Vector3(buss.BussPosX, buss.BussPosY, buss.BussPosZ), 1, 1, "Business", 255, 1000, true, 0, 0);
  103.                         buss.BussLabel = NAPI.TextLabel.CreateTextLabel($"Business: { buss.BussName}\nCost: { buss.BussCost}\nOwner: Unowned", new Vector3(buss.BussPosX, buss.BussPosY, buss.BussPosZ), 5, 1, 0, new Color(255, 255, 255), false, 0);
  104.  
  105.  
  106.                         BUSINESS_LIST.Add(buss);
  107.  
  108.                     }
  109.                     catch (Exception ex)
  110.                     {
  111.                         NAPI.Util.ConsoleOutput("[EXCEPTION CMD_CreateBusiness] " + ex.Message);
  112.                         NAPI.Util.ConsoleOutput("[EXCEPTION CMD_CreateBusiness] " + ex.StackTrace);
  113.                     }
  114.  
  115.                 }
  116.             }
  117.         }
  118.         [ServerEvent(Event.PlayerEnterColshape)]
  119.         public void OnPlayerEnterColshape(ColShape shape, Player player)
  120.         {
  121.             foreach (BusinessVar Busslist in BUSINESS_LIST)
  122.             {
  123.                 if (shape == Busslist.BussCol)
  124.                 {
  125.                     if (Busslist.BussOwner == 0)
  126.                     {
  127.                         player.TriggerEvent("ShowBusinessInfo", Busslist.BussName, Busslist.BussCost);
  128.                     }
  129.                     else if (Busslist.BussOwner != 0 && Busslist.BussOwner != Fun.GetPlayerSqlID(player))
  130.                     {
  131.                         return;
  132.                     }
  133.                     else
  134.                     {
  135.                         player.TriggerEvent("ShowPlayerOwnBusinessInfo", Busslist.BussName, Busslist.BussValidity, Busslist.BussMoney);
  136.                     }
  137.                 }
  138.             }
  139.         }
  140.         [RemoteEvent("BuyBusinessServer")]
  141.         public static void BuyBusinessServer(Player player, string bussname)
  142.         {
  143.             BusinessVar Buss = null;
  144.             foreach (BusinessVar Busslist in BUSINESS_LIST)
  145.             {
  146.                 if (Busslist.BussName == bussname)
  147.                 {
  148.                     Buss = Busslist;
  149.                     break;
  150.                 }
  151.             }
  152.             if(Buss != null)
  153.             {
  154.                 if(NAPI.ColShape.IsPointWithinColshape(Buss.BussCol, player.Position))
  155.                 {
  156.                     if(Buss.BussOwner == 0)
  157.                     {
  158.                         if(CountPlayerBusiness(player) > 0)
  159.                         {
  160.                             Fun.SendNotification(player, "You can not own more then 1 business");
  161.                             return;
  162.                         }
  163.                         if(Fun.GetPlayerLevel(player) < 6)
  164.                         {
  165.                             Fun.SendNotification(player, "A player with level 6 or above can own the business.");
  166.                             return;
  167.                         }
  168.                         if(Fun.GetPlayerMoney(player) < Buss.BussCost)
  169.                         {
  170.                             Fun.SendNotification(player, "Insufficient money");
  171.                             return;
  172.                         }
  173.                         Buss.BussOwner = Fun.GetPlayerSqlID(player);
  174.                         Buss.BussValidity = 604800;
  175.                         string str = $"Business: {Buss.BussName}\nOwner: {player.Name}";
  176.                         NAPI.TextLabel.SetTextLabelText(Buss.BussLabel, str);
  177.                         try
  178.                         {
  179.  
  180.  
  181.                             string Query = "UPDATE bussname SET owner = @owner, validity = @validity WHERE id = @id";
  182.                             using (MySqlCommand command = new MySqlCommand(Query, Database.BussConn))
  183.                             {
  184.  
  185.                                 command.Parameters.AddWithValue("@owner", Buss.BussOwner);
  186.                                 command.Parameters.AddWithValue("@validity", Buss.BussValidity);
  187.                                 command.Parameters.AddWithValue("@id", Buss.BussID);
  188.                                 command.ExecuteNonQuery();
  189.  
  190.                             }
  191.                             Fun.SendNotification(player, $"You have successfully bought ~y~{Buss.BussName}");
  192.                             Fun.SendInfoText($"{color.DARK_PURPLE}{player.Name} has bought {color.YELLOW}{Buss.BussName}");
  193.                         }
  194.                         catch (Exception ex)
  195.                         {
  196.                             NAPI.Util.ConsoleOutput("[EXCEPTION BuyBusinessServer] " + ex.Message);
  197.                             NAPI.Util.ConsoleOutput("[EXCEPTION BuyBusinessServer] " + ex.StackTrace);
  198.                         }
  199.                     }
  200.                 }
  201.             }
  202.         }
  203.         public static int CountPlayerBusiness(Player player)
  204.         {
  205.             int count = 0;
  206.             foreach (BusinessVar Busslist in BUSINESS_LIST)
  207.             {
  208.                 if (Busslist.BussOwner == Fun.GetPlayerSqlID(player))
  209.                 {
  210.                     count++;
  211.                 }
  212.             }
  213.             return count;
  214.         }
  215.         public static void AddBusinessFunds(string bussname, int amount)
  216.         {
  217.             foreach (BusinessVar Busslist in BUSINESS_LIST)
  218.             {
  219.                 if(Busslist.BussName == bussname)
  220.                 {
  221.                     if(Busslist.BussOwner != 0)
  222.                     {
  223.                         if(Busslist.BussMoney >= 200000)
  224.                         {
  225.                             return;
  226.                         }
  227.                         Busslist.BussMoney += amount;
  228.                         try
  229.                         {
  230.  
  231.  
  232.                             string Query = "UPDATE bussname SET money = @money WHERE id = @id";
  233.                             using (MySqlCommand command = new MySqlCommand(Query, Database.BussConn))
  234.                             {
  235.  
  236.                                 command.Parameters.AddWithValue("@money", Busslist.BussMoney);
  237.                                 command.Parameters.AddWithValue("@id", Busslist.BussID);
  238.                                 command.ExecuteNonQuery();
  239.  
  240.                             }
  241.  
  242.                         }
  243.                         catch (Exception ex)
  244.                         {
  245.                             NAPI.Util.ConsoleOutput("[EXCEPTION AddBusinessFunds] " + ex.Message);
  246.                             NAPI.Util.ConsoleOutput("[EXCEPTION AddBusinessFunds] " + ex.StackTrace);
  247.                         }
  248.                     }
  249.                 }
  250.             }
  251.         }
  252.         public static void BussGlobalTimer()
  253.         {
  254.             new Timer(obj =>
  255.             {
  256.                 NAPI.Task.Run(() =>
  257.                 {
  258.                     foreach (BusinessVar Busslist in BUSINESS_LIST)
  259.                     {
  260.                         if (Busslist.BussOwner != 0)
  261.                         {
  262.                             if(Busslist.BussValidity > 0)
  263.                             {
  264.                                 Busslist.BussValidity--;
  265.                             }
  266.                             else
  267.                             {
  268.                                 Busslist.BussOwner = 0;
  269.                                 string str = $"Business: {Busslist.BussName}\nCost: {Busslist.BussCost}\nOwner: Unowned";
  270.                                 NAPI.TextLabel.SetTextLabelText(Busslist.BussLabel, str);
  271.                                 try
  272.                                 {
  273.  
  274.  
  275.                                     string Query = "UPDATE bussname SET owner = @owner, validity = @validity WHERE id = @id";
  276.                                     using (MySqlCommand command = new MySqlCommand(Query, Database.BussConn))
  277.                                     {
  278.  
  279.                                         command.Parameters.AddWithValue("@owner", Busslist.BussOwner);
  280.                                         command.Parameters.AddWithValue("@validity", 0);
  281.                                         command.Parameters.AddWithValue("@id", Busslist.BussID);
  282.                                         command.ExecuteNonQuery();
  283.  
  284.                                     }
  285.                                    
  286.                                 }
  287.                                 catch (Exception ex)
  288.                                 {
  289.                                     NAPI.Util.ConsoleOutput("[EXCEPTION BussGlobalTimer] " + ex.Message);
  290.                                     NAPI.Util.ConsoleOutput("[EXCEPTION BussGlobalTimer] " + ex.StackTrace);
  291.                                 }
  292.                             }
  293.                         }
  294.                     }
  295.                 });
  296.  
  297.             }, null, 1000, 1000);
  298.         }
  299.     }
  300. }
  301.  
  302.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement