Beispiel #1
0
        public static void OnCraftingElementSelected(Client sender, int craftingModelID, int index)
        {
            if (!InventoryManager.DoesInventoryHasSpace(sender))
            {
                API.shared.sendChatMessageToPlayer(sender, "~r~HATA: ~s~Envanterinizde yeterli alan yok."); return;
            }
            try
            {
                var _tableModel = db_Craftings.GetCraftingTableModel(craftingModelID);
                var crafting    = _tableModel.Craftings[index];
                API.shared.consoleOutput(crafting.ToString() + "  " + db_Items.GetItemById(crafting.CraftedGameItemId).Name);
                if (crafting.RequiredMetalPart > InventoryManager.GetPlayerMetalParts(sender))
                {
                    API.shared.sendChatMessageToPlayer(sender, "~r~UYARI: ~s~Bu üretim için yeterli metal parçanız bulunmuyor."); return;
                }
                foreach (var item in crafting.RequredItemIds)
                {
                    API.shared.consoleOutput(InventoryManager.DoesPlayerHasItemById(sender, item).ToString());
                    if (!InventoryManager.DoesPlayerHasItemById(sender, item))
                    {
                        API.shared.sendChatMessageToPlayer(sender, "~r~UYARI: ~s~Bu eşyayı üretmek için üzerinizde yeterli eşya bulunmuyor.");
                        return;
                    }
                }

                if (InventoryManager.AddItemToPlayerInventory(sender, new Models.ClientItem {
                    Count = 1, Equipped = false, ItemId = crafting.CraftedGameItemId
                }))
                {
                    foreach (var item in crafting.RequredItemIds)
                    {
                        InventoryManager.RemoveItemFromPlayerInventory(sender, item);
                    }
                    InventoryManager.AddMetalPartsToPlayer(sender, -1 * crafting.RequiredMetalPart);
                    API.shared.sendChatMessageToPlayer(sender, "~g~BAŞARILI: ~s~Üretimi başarıyla tamamladınız.");
                    JobManager.PlayerJobComplete(sender, crafting.RequiredJob);
                    return;
                }
                API.shared.sendChatMessageToPlayer(sender, "~r~HATA: ~e~Envanterinizde bu eşya için yetrli yer yok.");
            }
            catch (Exception ex)
            {
                if (ex.GetType() == typeof(ArgumentOutOfRangeException) || ex.GetType() == typeof(IndexOutOfRangeException))
                {
                    API.shared.sendChatMessageToPlayer(sender, "~r~HATA: ~s~Index hatası. ~y~/rapor ~s~ile bildiriniz.");
                }
                else
                {
                    API.shared.consoleOutput(LogCat.Fatal, ex.ToString());
                }
            }
        }
        public void RepairVehicleOnJob(Client sender, string type)
        {
            if ("basla".StartsWith(type.ToLower()))
            {
                #region Basla
                if (API.getEntityData(sender, "JobId") != 3)
                {
                    API.sendChatMessageToPlayer(sender, "~r~HATA: ~s~Doğru meslekte değilsiniz."); return;
                }
                if (API.hasEntityData(sender, JOB_ON))
                {
                    API.sendChatMessageToPlayer(sender, "~r~HATA: ~s~Zaten mesleğe başlamışsınız.");
                }
                var _vehicle = db_Vehicles.FindNearestVehicle(sender.position);
                if (_vehicle == null)
                {
                    return;
                }
                if (Vector3.Distance(sender.position, _vehicle.VehicleOnMap.position) < 2)
                {
                    if (_vehicle.JobId == 3)
                    {
                        API.setEntityData(sender, JOB_ON, -1);
                        var loadingPoint = Jobs.db_Jobs.currentJobsList.FirstOrDefault(x => x.Item1.JobId == 3).Item1.TakingPosition;
                        API.setEntityData(sender.vehicle, "JOB_VEHICLE_OWNERID", API.getEntityData(sender, "ID"));
                        API.triggerClientEvent(sender, "create_marker", loadingPoint.X, loadingPoint.Y, loadingPoint.Z - 1);
                        API.sendChatMessageToPlayer(sender, "~y~Yük alma noktasına gidip ~s~((/kamyon yukal)) ~y~komutunu kullanabilirsiniz.");
                    }
                    else
                    {
                        API.sendChatMessageToPlayer(sender, "~r~HATA: ~s~Meslek kamyonunda olmalısınız.");
                    }
                    return;
                }

                #endregion
            }
            else
            if ("yukal".StartsWith(type.ToLower()))
            {
                #region yukal
                if (API.getEntityData(sender, "JobId") != 3)
                {
                    API.sendChatMessageToPlayer(sender, "~r~HATA: ~s~Doğru meslekte değilsiniz."); return;
                }
                if (API.hasEntityData(sender, JOB_ON) && API.getEntityData(sender, JOB_ON) != -1)
                {
                    API.sendChatMessageToPlayer(sender, "~r~UYARI: ~s~Zaten mesleğe başlamışsınız."); return;
                }

                var _vehicle = db_Vehicles.FindNearestVehicle(sender.position);
                if (_vehicle == null)
                {
                    return;
                }
                if (Vector3.Distance(sender.position, _vehicle.VehicleOnMap.position) < 2)
                {
                    if (_vehicle.JobId == 3)
                    {
                        if (Vector3.Distance(sender.position, db_Jobs.currentJobsList.FirstOrDefault(x => x.Item1.JobId == 3).Item1.TakingPosition) < 3)
                        {
                            API.setEntityData(sender.vehicle, JOB_VEHICLE, API.getEntityData(sender, "ID"));
                            List <string> names        = new List <string>();
                            List <string> descriptions = new List <string>();
                            foreach (var item in db_KamyonJob.CurrentDeliveryPoints.Item1)
                            {
                                names.Add("(" + item.ID + ")" + item.Name + " | " + item.CompletedValue + (item.Type == Models.DeliveryType.Money ? "$" : "Metal"));
                                descriptions.Add("Uzaklık: " + Vector3.Distance(sender.position, item.DeliveryPoint));
                            }
                            API.triggerClientEvent(sender, "open_kamyon_selector", names.Count, names.ToArray(), descriptions.ToArray());
                            return;
                        }
                        else
                        {
                            API.sendChatMessageToPlayer(sender, "~r~HATA: ~s~Yük alma noktasında değilsiniz.");
                        }
                    }
                    else
                    {
                        API.sendChatMessageToPlayer(sender, "~r~HATA: ~s~Meslek kamyonunda olmalısınız.");
                    }
                    return;
                }

                #endregion
            }
            else
            if ("bitir".StartsWith(type.ToLower()))
            {
                #region bitir
                if (API.hasEntityData(sender, JOB_ON))
                {
                    if (API.getEntityData(sender, JOB_ON) != 0)
                    {
                        API.triggerClientEvent(sender, "remove_marker");
                        API.resetEntityData(sender, JOB_ON);
                    }
                    else
                    {
                        if (Vector3.Distance(sender.position, db_Jobs.currentJobsList.FirstOrDefault(x => x.Item1.JobId == 3).Item1.TakingPosition) < 6)
                        {
                            var _vehicle = db_Vehicles.FindNearestVehicle(sender.position);
                            if (_vehicle == null)
                            {
                                return;
                            }
                            if (Vector3.Distance(sender.position, _vehicle.VehicleOnMap.position) < 2)
                            {
                                if (API.getEntityData(_vehicle.VehicleOnMap, JOB_VEHICLE) == API.getEntityData(sender, "ID"))
                                {
                                    API.triggerClientEvent(sender, "remove_marker");
                                    if (API.hasEntityData(sender, JOB_MONEY))
                                    {
                                        API.resetEntityData(sender, JOB_ON);
                                        JobManager.PlayerJobComplete(sender, 3);
                                        int savedMoney = (API.hasEntityData(sender, JOB_MONEY) ? API.getEntityData(sender, JOB_MONEY) : 0);
                                        InventoryManager.AddMoneyToPlayer(sender, savedMoney);
                                        API.resetEntityData(sender, JOB_MONEY);
                                        API.sendNotificationToPlayer(sender, "~g~$" + savedMoney + " ~s~kazandınız.");
                                    }
                                    if (API.hasEntityData(sender, JOB_METALPART))
                                    {
                                        API.resetEntityData(sender, JOB_ON);
                                        int savedMetalPart = API.getEntityData(sender, JOB_METALPART);
                                        JobManager.PlayerJobComplete(sender, 3);
                                        InventoryManager.AddMetalPartsToPlayer(sender, savedMetalPart);
                                        API.resetEntityData(sender, JOB_METALPART);
                                        API.sendNotificationToPlayer(sender, "~y~$" + savedMetalPart + " ~s~ adet metal parça kazandınız.");
                                    }

                                    db_Vehicles.Respawn(_vehicle.VehicleId);

                                    // API.sendChatMessageToPlayer(sender, "~y~Paranizi almak için ~s~(( /kamyon paramial ))");
                                }
                                else
                                {
                                    API.sendChatMessageToPlayer(sender, "~r~HATA: ~s~Bu mesleğe başladığınız araç değil!");
                                }
                            }
                        }
                        else
                        {
                            if (type.ToLower().Split(' ').LastOrDefault() == "onayla")
                            {
                                API.triggerClientEvent(sender, "remove_marker");
                                API.resetEntityData(sender, JOB_ON);
                                API.resetEntityData(sender, JOB_MONEY);
                            }
                            else
                            {
                                API.sendChatMessageToPlayer(sender, "~r~UYARI: ~s~Mesleğinizi teslim etmeden bitirseniz paranızı alamayacaksınız.\nYine de bitirmek için (( ~y~/kamyon bitir [onayla]~s~))\n ~y~Yükü aldığınız oktaya geldiğinizde ~s~/kamyoncu bitir ~y~komutunu kullanabilirsiniz.");
                            }
                        }
                    }
                }
                else
                {
                    API.sendChatMessageToPlayer(sender, "~r~Zaten mesleğe başlamamışsınız.");
                }
                #endregion
            }
            else
            if ("paramial".StartsWith(type.ToLower()))
            {
                #region paramial
                if ((API.hasEntityData(sender, JOB_MONEY) || API.hasEntityData(sender, JOB_METALPART)) && !API.hasEntityData(sender, JOB_ON))
                {
                    foreach (var item in db_Jobs.currentJobsList)
                    {
                        if (item.Item1.JobId == 3 && item.Item1.Dimension == sender.dimension && Vector3.Distance(sender.position, item.Item1.Position) < item.Item1.Range)
                        {
                            if (API.hasEntityData(sender, JOB_MONEY))
                            {
                                API.shared.consoleOutput("SAVED MONEY: " + API.getEntityData(sender, JOB_MONEY));
                                int savedMoney  = (API.hasEntityData(sender, JOB_MONEY) ? API.getEntityData(sender, JOB_MONEY) : 0);
                                int playerMoney = API.getEntityData(sender, "Money");
                                playerMoney += savedMoney;
                                API.setEntityData(sender, "Money", playerMoney);
                                API.resetEntityData(sender, JOB_MONEY);
                                API.triggerClientEvent(sender, "update_money_display", playerMoney);
                                API.sendNotificationToPlayer(sender, "~g~$" + savedMoney + " ~s~kazandınız.");
                                return;
                            }
                            if (API.hasEntityData(sender, JOB_METALPART))
                            {
                                int savedMetalPart = API.getEntityData(sender, JOB_METALPART);
                                var _inventory     = (Inventory)API.getEntityData(sender, "inventory");
                                _inventory.MetalParts += savedMetalPart;
                                API.setEntityData(sender, "inventory", _inventory);
                                API.resetEntityData(sender, JOB_METALPART);
                                API.sendNotificationToPlayer(sender, "~y~$" + savedMetalPart + " ~s~ adet metal parça kazandınız.");
                                return;
                            }
                        }
                    }
                }
                else
                {
                    API.sendNotificationToPlayer(sender, "~y~Önce mesainizi bitirmelisiniz.");
                    return;
                }
                API.sendChatMessageToPlayer(sender, "~y~Önce işi aldığınız yere gitmelisiniz.");
                #endregion
            }
        }
Beispiel #3
0
        public void AcceptSellTrade(Client sender)
        {
            if (API.shared.hasEntityData(sender, SELL_KEY))
            {
                TradeSellModel _trade = (TradeSellModel)API.shared.getEntityData(sender, SELL_KEY);
                if (!InventoryManager.IsEnoughMoney(sender, _trade.OfferedPrice))
                {
                    API.shared.sendChatMessageToPlayer(sender, $"~r~UYARI: ~s~Bu alışveriş için en az ~r~{_trade.OfferedPrice}$ ~s~paranız olmalı."); API.shared.resetEntityData(sender, SELL_KEY); return;
                }

                switch (_trade.Type)
                {
                case SellType.vehicle:
                    #region vehicle
                    var sellerPlayer = db_Accounts.IsPlayerOnline(_trade.SellerSocialClubID);
                    if (sellerPlayer != null)
                    {
                        if (VehicleManager.SetVehicleOwner(_trade.SellingObjId, sender.socialClubName))
                        {
                            InventoryManager.AddMoneyToPlayer(sellerPlayer, _trade.OfferedPrice);
                            InventoryManager.AddMoneyToPlayer(sender, -1 * _trade.OfferedPrice);
                            API.shared.sendChatMessageToPlayer(sellerPlayer, "~y~Alışveriş başarılı bir şekilde gerçekleşti.");
                            API.shared.sendChatMessageToPlayer(sender, "~y~Alışveriş başarılı bir şekilde gerçekleşti. ~s~((/araclarim)) ~y~yazarak yeni aracınızı görebilirsiniz.");
                        }
                        else
                        {
                            API.shared.sendChatMessageToPlayer(sender, "~y~Satılacak araç bulunamadı!");
                            API.shared.sendChatMessageToPlayer(sellerPlayer, "~y~Satılacak araç bulunamadı!");
                        }
                    }
                    else
                    {
                        API.shared.sendChatMessageToPlayer(sender, "~r~HATA: ~s~Satışı yapan oyuncu oyunda değil.");
                        API.shared.resetEntityData(sender, SELL_KEY);
                    }
                    #endregion
                    break;

                case SellType.house:
                    #region house
                    var hSellerPlayer = db_Accounts.IsPlayerOnline(_trade.SellerSocialClubID);
                    if (hSellerPlayer != null)
                    {
                        if (HouseManager.SetHouseOwner(_trade.SellingObjId, _trade.BuyerSocialClubID))
                        {
                            InventoryManager.AddMoneyToPlayer(hSellerPlayer, _trade.OfferedPrice);
                            InventoryManager.AddMoneyToPlayer(sender, -1 * _trade.OfferedPrice);
                            API.shared.sendChatMessageToPlayer(hSellerPlayer, "~y~Alışveriş başarılı bir şekilde gerçekleşti.");
                            API.shared.sendChatMessageToPlayer(sender, "~y~Alışveriş başarılı bir şekilde gerçekleşti.");
                        }
                        else
                        {
                            API.shared.sendChatMessageToPlayer(sender, "~y~Satılacak ev bulunamadı!");
                            API.shared.sendChatMessageToPlayer(hSellerPlayer, "~y~Satılacak ev bulunamadı!");
                        }
                    }
                    else
                    {
                        API.shared.sendChatMessageToPlayer(sender, "~r~HATA: ~s~Satışı yapan oyuncu oyunda değil.");
                        API.shared.resetEntityData(sender, SELL_KEY);
                    }
                    #endregion
                    break;

                case SellType.metalparts:
                    #region metalpart
                    var mSellerPlayer = db_Accounts.IsPlayerOnline(_trade.SellerSocialClubID);
                    if (mSellerPlayer != null)
                    {
                        InventoryManager.AddMetalPartsToPlayer(sender, _trade.SellingObjId);
                        InventoryManager.AddMetalPartsToPlayer(mSellerPlayer, -1 * _trade.SellingObjId);
                        InventoryManager.AddMoneyToPlayer(sender, -1 * _trade.OfferedPrice);
                        InventoryManager.AddMoneyToPlayer(mSellerPlayer, _trade.OfferedPrice);
                        API.shared.sendChatMessageToPlayer(mSellerPlayer, "~y~Alışveriş başarılı bir şekilde gerçekleşti.");
                        API.shared.sendChatMessageToPlayer(sender, "~y~Alışveriş başarılı bir şekilde gerçekleşti.");
                    }
                    else
                    {
                        API.shared.sendChatMessageToPlayer(sender, "~r~HATA: ~s~Satışı yapan oyuncu oyunda değil.");
                        API.shared.resetEntityData(sender, SELL_KEY);
                    }
                    #endregion
                    break;

                default:
                    break;
                }
            }
        }