C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System.Collections;
using System.Collections.Generic;
using System;
using System.Linq;
using System.Collections;
using Oxide.Core.Plugins;
using Oxide.Core;
using UnityEngine;
using Newtonsoft.Json;
using ProtoBuf;
namespace Oxide.Plugins {
[Info("CustomTownVending", "Nimant", "1.1.7")]
class CustomTownVending : RustPlugin {
private static readonly List<string> lAEYtZpEUOTnhkXL = new List<string>() {
"Outpost", "Bandit Camp"
}
;
private static readonly Vector3 rFFrIWsLeFNE = new Vector3(-208.7f, 103.6f, -433.6f);
private static bool IlfMERBOFnZCQGiDUX = false;
private void Init() {
pfWumzAnXozRLbRrDXVlYFAElovD();
qtordHYEXIZsXe();
foreach (var BGwNnqDGApwYEbpQwnTebBGuAJATxg in VblVoPXVAZtZcKBVZi.ELMJIhSesYxbUkwZa) {
foreach (var GMJnwoZAPOxygKP in BGwNnqDGApwYEbpQwnTebBGuAJATxg.Value) {
foreach (var hUBYbBWEeGZvroyfMEdnkWmsX in GMJnwoZAPOxygKP.hrVseuPNZbhsQSTtQ) {
if (hUBYbBWEeGZvroyfMEdnkWmsX.SellSkinName == null) hUBYbBWEeGZvroyfMEdnkWmsX.SellSkinName = "";
}
}
}
KsxbLlrMrjVVPkLLelSAdotu(VblVoPXVAZtZcKBVZi);
if (VblVoPXVAZtZcKBVZi.ojQJUsAdNVgZ <= 0) {
VblVoPXVAZtZcKBVZi.ojQJUsAdNVgZ = 30;
KsxbLlrMrjVVPkLLelSAdotu(VblVoPXVAZtZcKBVZi);
}
LoadDefaultMessages();
}
private void OnServerInitialized() {
IlfMERBOFnZCQGiDUX = ConVar.Server.level == "HapisIsland";
var myhCFcWcUT = eOUpGvpWLki.fkAQTNftZpNbeRp();
sgHGEIueLq();
rwfHBAtNJWvZnKOkMAjCzd();
if (VblVoPXVAZtZcKBVZi.AZMTZnrHcygnbsYwVhyGwtX) tiUoMXpLlV(myhCFcWcUT);
timer.Once(VblVoPXVAZtZcKBVZi.ojQJUsAdNVgZ, zylRCQZTeEVCyCUHmUKj);
}
private void Unload() => HbFWbxatitPKllflCWftIw();
private bool? OnNpcGiveSoldItem(NPCVendingMachine mJaIrYXaijgUffeJiAY, Item hUBYbBWEeGZvroyfMEdnkWmsX, BasePlayer EIgTAlXzORLBKKSzMbDJh) {
if (mJaIrYXaijgUffeJiAY == null || hUBYbBWEeGZvroyfMEdnkWmsX == null || EIgTAlXzORLBKKSzMbDJh == null) return null;
var itemNew = ItemManager.Create(hUBYbBWEeGZvroyfMEdnkWmsX.info, hUBYbBWEeGZvroyfMEdnkWmsX.amount, hUBYbBWEeGZvroyfMEdnkWmsX.skin);
itemNew.name = hUBYbBWEeGZvroyfMEdnkWmsX.name;
EIgTAlXzORLBKKSzMbDJh.GiveItem(hUBYbBWEeGZvroyfMEdnkWmsX, BaseEntity.GiveItemReason.PickedUp);
mJaIrYXaijgUffeJiAY.transactionActive = true;
if (!itemNew.MoveToContainer(mJaIrYXaijgUffeJiAY.inventory, -1, true)) itemNew.Remove(0f);
mJaIrYXaijgUffeJiAY.transactionActive = false;
return true;
}
private static Dictionary<string, List<NPCVendingMachine>> IIrpoxkgLINGkxUJ() {
var lnntFrRIGA = BaseNetworkable.serverEntities.OfType<NPCVendingMachine>().Where(x=> x != null && !string.IsNullOrEmpty(x.shopName)).ToList();
var lEMazDtqdBwwboCFAaJBsFoXRcYJuO = new Dictionary<string, List<NPCVendingMachine>>();
foreach(var GMJnwoZAPOxygKP in lnntFrRIGA) {
var BGwNnqDGApwYEbpQwnTebBGuAJATxg = AnWPPXQlCAwMtQmQBbIYPOZqG(GMJnwoZAPOxygKP.transform.position)?.Replace("\n", "");
if (string.IsNullOrEmpty(BGwNnqDGApwYEbpQwnTebBGuAJATxg) || !CoTkYVCwufdXHsDg(BGwNnqDGApwYEbpQwnTebBGuAJATxg)) continue;
BGwNnqDGApwYEbpQwnTebBGuAJATxg = IlfMERBOFnZCQGiDUX ? "HapisIsland " + BGwNnqDGApwYEbpQwnTebBGuAJATxg : BGwNnqDGApwYEbpQwnTebBGuAJATxg;
if (!lEMazDtqdBwwboCFAaJBsFoXRcYJuO.ContainsKey(BGwNnqDGApwYEbpQwnTebBGuAJATxg)) lEMazDtqdBwwboCFAaJBsFoXRcYJuO.Add(BGwNnqDGApwYEbpQwnTebBGuAJATxg, new List<NPCVendingMachine>());
lEMazDtqdBwwboCFAaJBsFoXRcYJuO[BGwNnqDGApwYEbpQwnTebBGuAJATxg].Add(GMJnwoZAPOxygKP);
}
return lEMazDtqdBwwboCFAaJBsFoXRcYJuO;
}
private static eQOkiKPpCXaogpqR bCuBNrtBcPN(NPCVendingMachine GMJnwoZAPOxygKP) {
var lEMazDtqdBwwboCFAaJBsFoXRcYJuO = new eQOkiKPpCXaogpqR();
lEMazDtqdBwwboCFAaJBsFoXRcYJuO.VXuqSGWweKgajlISVurhHh = IlfMERBOFnZCQGiDUX ? GMJnwoZAPOxygKP.shopName + $" {GMJnwoZAPOxygKP.transform.position}" : GMJnwoZAPOxygKP.shopName;
foreach(var AXGSjwneZYetccLKJaeabQNmPx in GMJnwoZAPOxygKP.vendingOrders.orders) {
var noQVBKYEbURjDUNisVMnEzgO = new xYfrWLmXgidZhBZCpPAWpvEgVNiYuF();
noQVBKYEbURjDUNisVMnEzgO.CIGpymgrHWfDpSIfLmN = AXGSjwneZYetccLKJaeabQNmPx.sellItem.shortname;
noQVBKYEbURjDUNisVMnEzgO.YROdllwyJHkQTyDXnXOPmGXImd = AXGSjwneZYetccLKJaeabQNmPx.sellItemAmount;
noQVBKYEbURjDUNisVMnEzgO.nEvnfNdWdmHRABS = AXGSjwneZYetccLKJaeabQNmPx.sellItemAsBP;
noQVBKYEbURjDUNisVMnEzgO.BtCWgYRrCTqgAogTXxLgRd = 0;
noQVBKYEbURjDUNisVMnEzgO.SellSkinName = "";
noQVBKYEbURjDUNisVMnEzgO.VCmVUxvGTugHRQwutrA = AXGSjwneZYetccLKJaeabQNmPx.currencyItem.shortname;
noQVBKYEbURjDUNisVMnEzgO.qlXpUFgCfepvToqmUdvKCvqOrMwUMY = AXGSjwneZYetccLKJaeabQNmPx.currencyAmount;
noQVBKYEbURjDUNisVMnEzgO.CtmfBHQpozCXBEqHUZCEjPe = AXGSjwneZYetccLKJaeabQNmPx.currencyAsBP;
lEMazDtqdBwwboCFAaJBsFoXRcYJuO.hrVseuPNZbhsQSTtQ.Add(noQVBKYEbURjDUNisVMnEzgO);
}
return lEMazDtqdBwwboCFAaJBsFoXRcYJuO;
}
private static void mTIZpNusltAiKxcCUZSxMn(VendingMachine mJaIrYXaijgUffeJiAY, int OMVIkRisURbXwXKuXryIDjvqVV, int sTKVRCrgjFAApldXeFxoMM, int gfmtZtIdmVPCYykc, int EcyKxenDnhMJgbnvgdAn, byte rRNvUDVnBmYSwkflivRsgTrLQYbmzc) {
var VmHPEwDYqSaPswENnEczDSaih = ItemManager.FindItemDefinition(OMVIkRisURbXwXKuXryIDjvqVV);
var ipCdwyKVeVgECp = ItemManager.FindItemDefinition(gfmtZtIdmVPCYykc);
if (VmHPEwDYqSaPswENnEczDSaih == null || ipCdwyKVeVgECp == null) return;
var BISqIsGldmunzNqC = new ProtoBuf.VendingMachine.SellOrder() {
ShouldPool = false, itemToSellID = OMVIkRisURbXwXKuXryIDjvqVV, itemToSellAmount = sTKVRCrgjFAApldXeFxoMM, currencyID = gfmtZtIdmVPCYykc, currencyAmountPerItem = EcyKxenDnhMJgbnvgdAn, currencyIsBP = (rRNvUDVnBmYSwkflivRsgTrLQYbmzc == 3 ? true : rRNvUDVnBmYSwkflivRsgTrLQYbmzc == 2), itemToSellIsBP = (rRNvUDVnBmYSwkflivRsgTrLQYbmzc == 3 ? true : rRNvUDVnBmYSwkflivRsgTrLQYbmzc == 1)
}
;
Interface.CallHook("OnAddVendingOffer", mJaIrYXaijgUffeJiAY, BISqIsGldmunzNqC);
mJaIrYXaijgUffeJiAY.sellOrders.sellOrders.Add(BISqIsGldmunzNqC);
mJaIrYXaijgUffeJiAY.RefreshSellOrderStockLevel(VmHPEwDYqSaPswENnEczDSaih);
mJaIrYXaijgUffeJiAY.UpdateMapMarker();
mJaIrYXaijgUffeJiAY.SendNetworkUpdate(BasePlayer.NetworkQueue.Update);
}
private static void jBoPYWlnSyuLTNMHPsSM(NPCVendingMachine mJaIrYXaijgUffeJiAY, int XuPScYRlvEOdCuGnjmMEMdfSWFUejS, int FuqGYZOjxKURuHzr, int UduCgAdrEcrn, int RisXSCydeTXHLTUtU, byte nKEimOhAMRASWinigqTpOvwL, ulong lvifVVnGKFNYfiojPsOcs, string SellSkinName) {
mTIZpNusltAiKxcCUZSxMn(mJaIrYXaijgUffeJiAY, XuPScYRlvEOdCuGnjmMEMdfSWFUejS, FuqGYZOjxKURuHzr, UduCgAdrEcrn, RisXSCydeTXHLTUtU, nKEimOhAMRASWinigqTpOvwL);
mJaIrYXaijgUffeJiAY.transactionActive = true;
int RaytvEGMdGmMbuSGRvIiXxl = 10;
var itRixVtudpztWHbDGMYPjYNpCuV = "{DarkPluginsID}";
if (nKEimOhAMRASWinigqTpOvwL == 1 || nKEimOhAMRASWinigqTpOvwL == 3) {
var hUBYbBWEeGZvroyfMEdnkWmsX = ItemManager.CreateByItemID(mJaIrYXaijgUffeJiAY.blueprintBaseDef.itemid, FuqGYZOjxKURuHzr * RaytvEGMdGmMbuSGRvIiXxl, lvifVVnGKFNYfiojPsOcs);
hUBYbBWEeGZvroyfMEdnkWmsX.blueprintTarget = XuPScYRlvEOdCuGnjmMEMdfSWFUejS;
if (!string.IsNullOrEmpty(SellSkinName)) hUBYbBWEeGZvroyfMEdnkWmsX.name = SellSkinName;
hUBYbBWEeGZvroyfMEdnkWmsX.MoveToContainer(mJaIrYXaijgUffeJiAY.inventory, -1, false);
}
else {
var hUBYbBWEeGZvroyfMEdnkWmsX = ItemManager.CreateByItemID(XuPScYRlvEOdCuGnjmMEMdfSWFUejS, FuqGYZOjxKURuHzr * RaytvEGMdGmMbuSGRvIiXxl, lvifVVnGKFNYfiojPsOcs);
if (!string.IsNullOrEmpty(SellSkinName)) hUBYbBWEeGZvroyfMEdnkWmsX.name = SellSkinName;
hUBYbBWEeGZvroyfMEdnkWmsX.MoveToContainer(mJaIrYXaijgUffeJiAY.inventory, -1, false);
}
mJaIrYXaijgUffeJiAY.transactionActive = false;
(mJaIrYXaijgUffeJiAY as VendingMachine).RefreshSellOrderStockLevel(null);
}
private void NEICWMMUks(eQOkiKPpCXaogpqR CAeJaqzchEbugoHqhdmauNuw, NPCVendingMachine GMJnwoZAPOxygKP) {
GMJnwoZAPOxygKP.ClearSellOrders();
foreach (var hUBYbBWEeGZvroyfMEdnkWmsX in GMJnwoZAPOxygKP.inventory.itemList.ToList()) {
hUBYbBWEeGZvroyfMEdnkWmsX.RemoveFromContainer();
hUBYbBWEeGZvroyfMEdnkWmsX.Remove(0f);
}
GMJnwoZAPOxygKP.inventory.itemList.Clear();
GMJnwoZAPOxygKP.inventory.Clear();
foreach(var AXGSjwneZYetccLKJaeabQNmPx in CAeJaqzchEbugoHqhdmauNuw.hrVseuPNZbhsQSTtQ) {
var biKUSxkSFntBYdRVtFIWITdkUoi = ItemManager.FindItemDefinition(AXGSjwneZYetccLKJaeabQNmPx.CIGpymgrHWfDpSIfLmN);
if (biKUSxkSFntBYdRVtFIWITdkUoi == null) {
PrintWarning(OvEzGqJWTVGSRWPuTLAMaisSzfZlJ("WARNING.ITEM").Replace("{ITEM}", AXGSjwneZYetccLKJaeabQNmPx.CIGpymgrHWfDpSIfLmN));
continue;
}
var FtYzfnuVorFxxeHKgAOY = ItemManager.FindItemDefinition(AXGSjwneZYetccLKJaeabQNmPx.VCmVUxvGTugHRQwutrA);
if (FtYzfnuVorFxxeHKgAOY == null) {
PrintWarning(OvEzGqJWTVGSRWPuTLAMaisSzfZlJ("WARNING.ITEM").Replace("{ITEM}", AXGSjwneZYetccLKJaeabQNmPx.VCmVUxvGTugHRQwutrA));
continue;
}
if (AXGSjwneZYetccLKJaeabQNmPx.YROdllwyJHkQTyDXnXOPmGXImd <= 0 || AXGSjwneZYetccLKJaeabQNmPx.qlXpUFgCfepvToqmUdvKCvqOrMwUMY <= 0) continue;
jBoPYWlnSyuLTNMHPsSM(GMJnwoZAPOxygKP, biKUSxkSFntBYdRVtFIWITdkUoi.itemid, AXGSjwneZYetccLKJaeabQNmPx.YROdllwyJHkQTyDXnXOPmGXImd, FtYzfnuVorFxxeHKgAOY.itemid, AXGSjwneZYetccLKJaeabQNmPx.qlXpUFgCfepvToqmUdvKCvqOrMwUMY, GMJnwoZAPOxygKP.GetBPState(AXGSjwneZYetccLKJaeabQNmPx.nEvnfNdWdmHRABS, AXGSjwneZYetccLKJaeabQNmPx.CtmfBHQpozCXBEqHUZCEjPe), AXGSjwneZYetccLKJaeabQNmPx.BtCWgYRrCTqgAogTXxLgRd, AXGSjwneZYetccLKJaeabQNmPx.SellSkinName);
}
GMJnwoZAPOxygKP.FullUpdate();
}
private static bool CoTkYVCwufdXHsDg(string BGwNnqDGApwYEbpQwnTebBGuAJATxg) {
foreach(var kYPGAhNbhWzGLuIRfUZ in lAEYtZpEUOTnhkXL) if (BGwNnqDGApwYEbpQwnTebBGuAJATxg.Contains(kYPGAhNbhWzGLuIRfUZ)) return true;
return false;
}
private static string AnWPPXQlCAwMtQmQBbIYPOZqG(Vector3 mAyjPBzeodjOFbyMmJyHCFGRbfw) {
var RkpxYoKUylwUsYrfWROSEGr = TerrainMeta.Path.Monuments.Where(x=> x != null).ToDictionary(x=> Vector3.Distance(x.transform.position, mAyjPBzeodjOFbyMmJyHCFGRbfw), x=> x).OrderBy(x=> x.Key);
if (RkpxYoKUylwUsYrfWROSEGr.Count() == 0) return null;
var kvgobBxnnySvJvCmYnwyhQnur = RkpxYoKUylwUsYrfWROSEGr.FirstOrDefault();
if (kvgobBxnnySvJvCmYnwyhQnur.Key > 75f) return null;
return !string.IsNullOrEmpty(kvgobBxnnySvJvCmYnwyhQnur.Value.displayPhrase.english) ? kvgobBxnnySvJvCmYnwyhQnur.Value.displayPhrase.english : null;
}
private void sgHGEIueLq() {
string BVKzYQSjnJisClbJlLDCWzQ = $"{Rust.Protocol.printable} {Facepunch.BuildInfo.Current.BuildDate}";
bool HyvktfapKldLqRbbLddoBrY = false, skMeQSHBlFNKDOzOfzr = false, TsNqgUwLVRwSQlwZSlVwnhfRT = false;
if (eOUpGvpWLki.ELMJIhSesYxbUkwZa.Count == 0 || string.IsNullOrEmpty(eOUpGvpWLki.GFFDDJkYNZMELB) || eOUpGvpWLki.GFFDDJkYNZMELB != BVKzYQSjnJisClbJlLDCWzQ) HyvktfapKldLqRbbLddoBrY = true;
else if (IlfMERBOFnZCQGiDUX) {
if (eOUpGvpWLki.ELMJIhSesYxbUkwZa.Where(x=> x.Key.Contains("HapisIsland")).Count() == 0) skMeQSHBlFNKDOzOfzr = true;
}
else {
if ((eOUpGvpWLki.ELMJIhSesYxbUkwZa.Where(x=> x.Key == lAEYtZpEUOTnhkXL[0]).Count() == 0) || (eOUpGvpWLki.ELMJIhSesYxbUkwZa.Where(x=> x.Key == lAEYtZpEUOTnhkXL[1]).Count() == 0) ) TsNqgUwLVRwSQlwZSlVwnhfRT = true;
}
if (HyvktfapKldLqRbbLddoBrY || skMeQSHBlFNKDOzOfzr || TsNqgUwLVRwSQlwZSlVwnhfRT) {
if (HyvktfapKldLqRbbLddoBrY) eOUpGvpWLki.ELMJIhSesYxbUkwZa.Clear();
if (skMeQSHBlFNKDOzOfzr) foreach(var BGwNnqDGApwYEbpQwnTebBGuAJATxg in eOUpGvpWLki.ELMJIhSesYxbUkwZa.Where(x=> x.Key.Contains("HapisIsland")).Select(x=> x.Key).ToList()) eOUpGvpWLki.ELMJIhSesYxbUkwZa.Remove(BGwNnqDGApwYEbpQwnTebBGuAJATxg);
if (TsNqgUwLVRwSQlwZSlVwnhfRT) foreach(var BGwNnqDGApwYEbpQwnTebBGuAJATxg in eOUpGvpWLki.ELMJIhSesYxbUkwZa.Where(x=> !x.Key.Contains("HapisIsland")).Select(x=> x.Key).ToList()) eOUpGvpWLki.ELMJIhSesYxbUkwZa.Remove(BGwNnqDGApwYEbpQwnTebBGuAJATxg);
if (string.IsNullOrEmpty(eOUpGvpWLki.GFFDDJkYNZMELB) || eOUpGvpWLki.GFFDDJkYNZMELB != BVKzYQSjnJisClbJlLDCWzQ) eOUpGvpWLki.GFFDDJkYNZMELB = BVKzYQSjnJisClbJlLDCWzQ;
var lnntFrRIGA = IIrpoxkgLINGkxUJ();
if (lnntFrRIGA.Count > 0) {
if (IlfMERBOFnZCQGiDUX) {
foreach(var eiCXKEocLtNiNhYxAUKJxljTdga in lnntFrRIGA) foreach(var GMJnwoZAPOxygKP in eiCXKEocLtNiNhYxAUKJxljTdga.Value) {
if (Vector3.Distance(GMJnwoZAPOxygKP.transform.position, rFFrIWsLeFNE) > 75f) continue;
if (!eOUpGvpWLki.ELMJIhSesYxbUkwZa.ContainsKey(eiCXKEocLtNiNhYxAUKJxljTdga.Key)) eOUpGvpWLki.ELMJIhSesYxbUkwZa.Add(eiCXKEocLtNiNhYxAUKJxljTdga.Key, new List<eQOkiKPpCXaogpqR>());
eOUpGvpWLki.ELMJIhSesYxbUkwZa[eiCXKEocLtNiNhYxAUKJxljTdga.Key].Add(bCuBNrtBcPN(GMJnwoZAPOxygKP));
}
}
else {
foreach(var eiCXKEocLtNiNhYxAUKJxljTdga in lnntFrRIGA) {
var EKtiZmajrPB = default(Vector3);
foreach(var GMJnwoZAPOxygKP in eiCXKEocLtNiNhYxAUKJxljTdga.Value) {
if (EKtiZmajrPB == default(Vector3)) EKtiZmajrPB = GMJnwoZAPOxygKP.transform.position;
if (Vector3.Distance(GMJnwoZAPOxygKP.transform.position, EKtiZmajrPB) > 100f) continue;
if (!eOUpGvpWLki.ELMJIhSesYxbUkwZa.ContainsKey(eiCXKEocLtNiNhYxAUKJxljTdga.Key)) eOUpGvpWLki.ELMJIhSesYxbUkwZa.Add(eiCXKEocLtNiNhYxAUKJxljTdga.Key, new List<eQOkiKPpCXaogpqR>());
if (eOUpGvpWLki.ELMJIhSesYxbUkwZa[eiCXKEocLtNiNhYxAUKJxljTdga.Key].Exists(x=> x.VXuqSGWweKgajlISVurhHh == GMJnwoZAPOxygKP.shopName)) continue;
eOUpGvpWLki.ELMJIhSesYxbUkwZa[eiCXKEocLtNiNhYxAUKJxljTdga.Key].Add(bCuBNrtBcPN(GMJnwoZAPOxygKP));
}
}
}
}
HbFWbxatitPKllflCWftIw();
}
}
private void rwfHBAtNJWvZnKOkMAjCzd() {
bool HyvktfapKldLqRbbLddoBrY = false, skMeQSHBlFNKDOzOfzr = false, TsNqgUwLVRwSQlwZSlVwnhfRT = false;
if (VblVoPXVAZtZcKBVZi.ELMJIhSesYxbUkwZa.Count == 0) HyvktfapKldLqRbbLddoBrY = true;
else if (IlfMERBOFnZCQGiDUX) {
if (VblVoPXVAZtZcKBVZi.ELMJIhSesYxbUkwZa.Where(x=> x.Key.Contains("HapisIsland")).Count() == 0) skMeQSHBlFNKDOzOfzr = true;
}
else {
if ((VblVoPXVAZtZcKBVZi.ELMJIhSesYxbUkwZa.Where(x=> x.Key == lAEYtZpEUOTnhkXL[0]).Count() == 0) || (VblVoPXVAZtZcKBVZi.ELMJIhSesYxbUkwZa.Where(x=> x.Key == lAEYtZpEUOTnhkXL[1]).Count() == 0) ) TsNqgUwLVRwSQlwZSlVwnhfRT = true;
}
if (HyvktfapKldLqRbbLddoBrY || skMeQSHBlFNKDOzOfzr || TsNqgUwLVRwSQlwZSlVwnhfRT) {
if (HyvktfapKldLqRbbLddoBrY) VblVoPXVAZtZcKBVZi.ELMJIhSesYxbUkwZa = eOUpGvpWLki.fkAQTNftZpNbeRp();
if (skMeQSHBlFNKDOzOfzr) foreach(var eiCXKEocLtNiNhYxAUKJxljTdga in eOUpGvpWLki.fkAQTNftZpNbeRp().Where(x=> x.Key.Contains("HapisIsland"))) if (!VblVoPXVAZtZcKBVZi.ELMJIhSesYxbUkwZa.ContainsKey(eiCXKEocLtNiNhYxAUKJxljTdga.Key)) VblVoPXVAZtZcKBVZi.ELMJIhSesYxbUkwZa.Add(eiCXKEocLtNiNhYxAUKJxljTdga.Key, eiCXKEocLtNiNhYxAUKJxljTdga.Value);
if (TsNqgUwLVRwSQlwZSlVwnhfRT) foreach(var eiCXKEocLtNiNhYxAUKJxljTdga in eOUpGvpWLki.fkAQTNftZpNbeRp().Where(x=> !x.Key.Contains("HapisIsland"))) if (!VblVoPXVAZtZcKBVZi.ELMJIhSesYxbUkwZa.ContainsKey(eiCXKEocLtNiNhYxAUKJxljTdga.Key)) VblVoPXVAZtZcKBVZi.ELMJIhSesYxbUkwZa.Add(eiCXKEocLtNiNhYxAUKJxljTdga.Key, eiCXKEocLtNiNhYxAUKJxljTdga.Value);
KsxbLlrMrjVVPkLLelSAdotu(VblVoPXVAZtZcKBVZi);
}
}
private void tiUoMXpLlV(Dictionary<string, List<eQOkiKPpCXaogpqR>> myhCFcWcUT) {
bool OQMERXAPWMkOEZJeOWCwuu = false;
foreach(var eiCXKEocLtNiNhYxAUKJxljTdga in eOUpGvpWLki.fkAQTNftZpNbeRp()) {
if (IlfMERBOFnZCQGiDUX && !eiCXKEocLtNiNhYxAUKJxljTdga.Key.Contains("HapisIsland")) continue;
if (!IlfMERBOFnZCQGiDUX && eiCXKEocLtNiNhYxAUKJxljTdga.Key.Contains("HapisIsland")) continue;
if (!myhCFcWcUT.ContainsKey(eiCXKEocLtNiNhYxAUKJxljTdga.Key)) {
if (!CoTkYVCwufdXHsDg(eiCXKEocLtNiNhYxAUKJxljTdga.Key)) PrintWarning(OvEzGqJWTVGSRWPuTLAMaisSzfZlJ("WARNING.NEW.RADTOWN").Replace("{RADTOWN}", eiCXKEocLtNiNhYxAUKJxljTdga.Key));
continue;
}
if (!VblVoPXVAZtZcKBVZi.ELMJIhSesYxbUkwZa.ContainsKey(eiCXKEocLtNiNhYxAUKJxljTdga.Key)) continue;
foreach(var GMJnwoZAPOxygKP in eiCXKEocLtNiNhYxAUKJxljTdga.Value) {
if (!myhCFcWcUT[eiCXKEocLtNiNhYxAUKJxljTdga.Key].Exists(x=> x.VXuqSGWweKgajlISVurhHh == GMJnwoZAPOxygKP.VXuqSGWweKgajlISVurhHh)) {
if (!VblVoPXVAZtZcKBVZi.ELMJIhSesYxbUkwZa[eiCXKEocLtNiNhYxAUKJxljTdga.Key].Exists(x=> x.VXuqSGWweKgajlISVurhHh == GMJnwoZAPOxygKP.VXuqSGWweKgajlISVurhHh)) {
PrintWarning(OvEzGqJWTVGSRWPuTLAMaisSzfZlJ("WARNING.NEW.SHOP").Replace("{SHOP}", GMJnwoZAPOxygKP.VXuqSGWweKgajlISVurhHh).Replace("{RADTOWN}", eiCXKEocLtNiNhYxAUKJxljTdga.Key));
var qfhICRySQhJfbKHAdO = new eQOkiKPpCXaogpqR();
qfhICRySQhJfbKHAdO.VXuqSGWweKgajlISVurhHh = GMJnwoZAPOxygKP.VXuqSGWweKgajlISVurhHh;
VblVoPXVAZtZcKBVZi.ELMJIhSesYxbUkwZa[eiCXKEocLtNiNhYxAUKJxljTdga.Key].Add(qfhICRySQhJfbKHAdO);
OQMERXAPWMkOEZJeOWCwuu = true;
}
var MrYhmujdPPctpkpJj = new eQOkiKPpCXaogpqR();
MrYhmujdPPctpkpJj.VXuqSGWweKgajlISVurhHh = GMJnwoZAPOxygKP.VXuqSGWweKgajlISVurhHh;
myhCFcWcUT[eiCXKEocLtNiNhYxAUKJxljTdga.Key].Add(MrYhmujdPPctpkpJj);
}
var eYoXJOONVF = myhCFcWcUT[eiCXKEocLtNiNhYxAUKJxljTdga.Key].FirstOrDefault(x=> x.VXuqSGWweKgajlISVurhHh == GMJnwoZAPOxygKP.VXuqSGWweKgajlISVurhHh);
var igCPVUaYIgmsjPiDjWrMhNT = VblVoPXVAZtZcKBVZi.ELMJIhSesYxbUkwZa[eiCXKEocLtNiNhYxAUKJxljTdga.Key].FirstOrDefault(x=> x.VXuqSGWweKgajlISVurhHh == GMJnwoZAPOxygKP.VXuqSGWweKgajlISVurhHh);
foreach(var YXzLXFhnhQIrPCNTvrldy in GMJnwoZAPOxygKP.hrVseuPNZbhsQSTtQ) {
if (!eYoXJOONVF.hrVseuPNZbhsQSTtQ.Exists(x=> x.CIGpymgrHWfDpSIfLmN == YXzLXFhnhQIrPCNTvrldy.CIGpymgrHWfDpSIfLmN && x.VCmVUxvGTugHRQwutrA == YXzLXFhnhQIrPCNTvrldy.VCmVUxvGTugHRQwutrA && x.nEvnfNdWdmHRABS == YXzLXFhnhQIrPCNTvrldy.nEvnfNdWdmHRABS && x.CtmfBHQpozCXBEqHUZCEjPe == YXzLXFhnhQIrPCNTvrldy.CtmfBHQpozCXBEqHUZCEjPe && x.BtCWgYRrCTqgAogTXxLgRd == YXzLXFhnhQIrPCNTvrldy.BtCWgYRrCTqgAogTXxLgRd && x.SellSkinName == YXzLXFhnhQIrPCNTvrldy.SellSkinName)) {
if (!igCPVUaYIgmsjPiDjWrMhNT.hrVseuPNZbhsQSTtQ.Exists(x=> x.CIGpymgrHWfDpSIfLmN == YXzLXFhnhQIrPCNTvrldy.CIGpymgrHWfDpSIfLmN && x.VCmVUxvGTugHRQwutrA == YXzLXFhnhQIrPCNTvrldy.VCmVUxvGTugHRQwutrA && x.nEvnfNdWdmHRABS == YXzLXFhnhQIrPCNTvrldy.nEvnfNdWdmHRABS && x.CtmfBHQpozCXBEqHUZCEjPe == YXzLXFhnhQIrPCNTvrldy.CtmfBHQpozCXBEqHUZCEjPe && x.BtCWgYRrCTqgAogTXxLgRd == YXzLXFhnhQIrPCNTvrldy.BtCWgYRrCTqgAogTXxLgRd && x.SellSkinName == YXzLXFhnhQIrPCNTvrldy.SellSkinName)) {
PrintWarning(OvEzGqJWTVGSRWPuTLAMaisSzfZlJ("WARNING.NEW.ITEM").Replace("{SHOP}", GMJnwoZAPOxygKP.VXuqSGWweKgajlISVurhHh).Replace("{RADTOWN}", eiCXKEocLtNiNhYxAUKJxljTdga.Key).Replace("{ITEM}", YXzLXFhnhQIrPCNTvrldy.CIGpymgrHWfDpSIfLmN));
igCPVUaYIgmsjPiDjWrMhNT.hrVseuPNZbhsQSTtQ.Add(YXzLXFhnhQIrPCNTvrldy);
OQMERXAPWMkOEZJeOWCwuu = true;
}
eYoXJOONVF.hrVseuPNZbhsQSTtQ.Add(YXzLXFhnhQIrPCNTvrldy);
}
}
}
}
if (OQMERXAPWMkOEZJeOWCwuu) KsxbLlrMrjVVPkLLelSAdotu(VblVoPXVAZtZcKBVZi);
}
private void zylRCQZTeEVCyCUHmUKj() {
var lnntFrRIGA = IIrpoxkgLINGkxUJ();
foreach(var eiCXKEocLtNiNhYxAUKJxljTdga in VblVoPXVAZtZcKBVZi.ELMJIhSesYxbUkwZa) {
if (IlfMERBOFnZCQGiDUX && !eiCXKEocLtNiNhYxAUKJxljTdga.Key.Contains("HapisIsland")) continue;
if (!IlfMERBOFnZCQGiDUX && eiCXKEocLtNiNhYxAUKJxljTdga.Key.Contains("HapisIsland")) continue;
foreach(var igCPVUaYIgmsjPiDjWrMhNT in eiCXKEocLtNiNhYxAUKJxljTdga.Value) {
if (lnntFrRIGA.ContainsKey(eiCXKEocLtNiNhYxAUKJxljTdga.Key)) {
foreach(var GMJnwoZAPOxygKP in lnntFrRIGA[eiCXKEocLtNiNhYxAUKJxljTdga.Key]) {
var shopName = IlfMERBOFnZCQGiDUX ? GMJnwoZAPOxygKP.shopName + $" {GMJnwoZAPOxygKP.transform.position}" : GMJnwoZAPOxygKP.shopName;
if (!(igCPVUaYIgmsjPiDjWrMhNT.VXuqSGWweKgajlISVurhHh == shopName)) continue;
NEICWMMUks(igCPVUaYIgmsjPiDjWrMhNT, GMJnwoZAPOxygKP);
}
}
}
}
}
[ConsoleCommand("ctv.reset")]
private void DzeVHfRAwqAOjbWYu(ConsoleSystem.Arg QmySjpwXLNaXzAFlpacduJfv) {
var EIgTAlXzORLBKKSzMbDJh = QmySjpwXLNaXzAFlpacduJfv?.Player();
if (EIgTAlXzORLBKKSzMbDJh != null && !EIgTAlXzORLBKKSzMbDJh.IsAdmin) return;
VblVoPXVAZtZcKBVZi.ELMJIhSesYxbUkwZa = eOUpGvpWLki.fkAQTNftZpNbeRp();
if (IlfMERBOFnZCQGiDUX) foreach(var BGwNnqDGApwYEbpQwnTebBGuAJATxg in VblVoPXVAZtZcKBVZi.ELMJIhSesYxbUkwZa.Where(x=> !x.Key.Contains("HapisIsland")).Select(x=> x.Key).ToList()) VblVoPXVAZtZcKBVZi.ELMJIhSesYxbUkwZa.Remove(BGwNnqDGApwYEbpQwnTebBGuAJATxg);
else foreach(var BGwNnqDGApwYEbpQwnTebBGuAJATxg in VblVoPXVAZtZcKBVZi.ELMJIhSesYxbUkwZa.Where(x=> x.Key.Contains("HapisIsland")).Select(x=> x.Key).ToList()) VblVoPXVAZtZcKBVZi.ELMJIhSesYxbUkwZa.Remove(BGwNnqDGApwYEbpQwnTebBGuAJATxg);
KsxbLlrMrjVVPkLLelSAdotu(VblVoPXVAZtZcKBVZi);
zylRCQZTeEVCyCUHmUKj();
var dIOnKqjPOfUuqgYlNYcWfOVroVCh = OvEzGqJWTVGSRWPuTLAMaisSzfZlJ("INFO.RESET");
if (EIgTAlXzORLBKKSzMbDJh != null) PrintToConsole(EIgTAlXzORLBKKSzMbDJh, dIOnKqjPOfUuqgYlNYcWfOVroVCh);
else Puts(dIOnKqjPOfUuqgYlNYcWfOVroVCh);
}
private void LoadDefaultMessages() {
lang.RegisterMessages(new Dictionary<string, string> {
{
"INFO.RESET", "Товары из магазинов в NPC городах были востановлены до значений по умолчанию."
}
, {
"WARNING.ITEM", "Указанный в конфигурационном файле предмет не существует: '{ITEM}'."
}
, {
"WARNING.NEW.SHOP", "Обнаружен новый магазин '{SHOP}' в городе '{RADTOWN}'."
}
, {
"WARNING.NEW.ITEM", "Добавлен новый товар '{ITEM}' в магазин '{SHOP}' города '{RADTOWN}'."
}
, {
"WARNING.NEW.RADTOWN", "Обнаружен новый город '{RADTOWN}'.Если это не кастомная карта, то сообщите разработчику, что бы он добавил новый город в плагин."
}
}
, this);
}
private string OvEzGqJWTVGSRWPuTLAMaisSzfZlJ(string AozEBQOTCEFMfHqmacHGKTBaCacst, string AtoeKEdijVxOmct = null) => lang.GetMessage(AozEBQOTCEFMfHqmacHGKTBaCacst, this, AtoeKEdijVxOmct);
private static jeHXHdpymixtpslvpVl VblVoPXVAZtZcKBVZi;
private class eQOkiKPpCXaogpqR {
[JsonProperty(PropertyName = "Игровое название магазина (не менять)")]
public string VXuqSGWweKgajlISVurhHh;
[JsonProperty(PropertyName = "Список товаров")]
public List<xYfrWLmXgidZhBZCpPAWpvEgVNiYuF> hrVseuPNZbhsQSTtQ = new List<xYfrWLmXgidZhBZCpPAWpvEgVNiYuF>();
}
private class xYfrWLmXgidZhBZCpPAWpvEgVNiYuF {
[JsonProperty(PropertyName = "Название покупаемого товара")]
public string CIGpymgrHWfDpSIfLmN;
[JsonProperty(PropertyName = "Количество покупаемого товара за раз")]
public int YROdllwyJHkQTyDXnXOPmGXImd;
[JsonProperty(PropertyName = "Покупаемый товар это чертёж")]
public bool nEvnfNdWdmHRABS;
[JsonProperty(PropertyName = "Скин покупаемого товара")]
public ulong BtCWgYRrCTqgAogTXxLgRd;
[JsonProperty(PropertyName = "Свое название покупаемого товара")]
public string SellSkinName;
[JsonProperty(PropertyName = "Название платёжного товара")]
public string VCmVUxvGTugHRQwutrA;
[JsonProperty(PropertyName = "Количество платёжного товара за раз")]
public int qlXpUFgCfepvToqmUdvKCvqOrMwUMY;
[JsonProperty(PropertyName = "Платёжный товар это чертёж")]
public bool CtmfBHQpozCXBEqHUZCEjPe;
}
private class jeHXHdpymixtpslvpVl {
[JsonProperty(PropertyName = "Добавлять новые предметы в магазины")]
public bool AZMTZnrHcygnbsYwVhyGwtX;
[JsonProperty(PropertyName = "Задержка инициализации магазинов (секунды)")]
public int ojQJUsAdNVgZ;
[JsonProperty(PropertyName = "Торговые автоматы в NPC городах")]
public Dictionary<string, List<eQOkiKPpCXaogpqR>> ELMJIhSesYxbUkwZa = new Dictionary<string, List<eQOkiKPpCXaogpqR>>();
}
private void pfWumzAnXozRLbRrDXVlYFAElovD() {
VblVoPXVAZtZcKBVZi = Config.ReadObject<jeHXHdpymixtpslvpVl>();
if (VblVoPXVAZtZcKBVZi == null) VblVoPXVAZtZcKBVZi = new jeHXHdpymixtpslvpVl();
if (VblVoPXVAZtZcKBVZi.ELMJIhSesYxbUkwZa == null) VblVoPXVAZtZcKBVZi.ELMJIhSesYxbUkwZa = new Dictionary<string, List<eQOkiKPpCXaogpqR>>();
KsxbLlrMrjVVPkLLelSAdotu(VblVoPXVAZtZcKBVZi);
}
protected override void LoadDefaultConfig() {
VblVoPXVAZtZcKBVZi = new jeHXHdpymixtpslvpVl {
AZMTZnrHcygnbsYwVhyGwtX = true, ojQJUsAdNVgZ = 30, ELMJIhSesYxbUkwZa = new Dictionary<string, List<eQOkiKPpCXaogpqR>>()
}
;
KsxbLlrMrjVVPkLLelSAdotu(VblVoPXVAZtZcKBVZi);
timer.Once(0.1f, ()=> KsxbLlrMrjVVPkLLelSAdotu(VblVoPXVAZtZcKBVZi));
}
private void KsxbLlrMrjVVPkLLelSAdotu(jeHXHdpymixtpslvpVl wXvtBCHTBeXTGh) => Config.WriteObject(wXvtBCHTBeXTGh, true);
private static wNdACGWHkuZmpHBZgSHMFtJzdAOhC eOUpGvpWLki = new wNdACGWHkuZmpHBZgSHMFtJzdAOhC();
private class wNdACGWHkuZmpHBZgSHMFtJzdAOhC {
[JsonProperty(PropertyName = "Протокол")]
public string GFFDDJkYNZMELB;
[JsonProperty(PropertyName = "Торговые автоматы в NPC городах")]
public Dictionary<string, List<eQOkiKPpCXaogpqR>> ELMJIhSesYxbUkwZa = new Dictionary<string, List<eQOkiKPpCXaogpqR>>();
public Dictionary<string, List<eQOkiKPpCXaogpqR>> fkAQTNftZpNbeRp() => JsonConvert.DeserializeObject<Dictionary<string, List<eQOkiKPpCXaogpqR>>>(JsonConvert.SerializeObject(ELMJIhSesYxbUkwZa));
}
private void qtordHYEXIZsXe() {
eOUpGvpWLki = Interface.GetMod().DataFileSystem.ReadObject<wNdACGWHkuZmpHBZgSHMFtJzdAOhC>("CustomTownVendingData");
if (eOUpGvpWLki == null) eOUpGvpWLki = new wNdACGWHkuZmpHBZgSHMFtJzdAOhC();
if (eOUpGvpWLki.ELMJIhSesYxbUkwZa == null) eOUpGvpWLki.ELMJIhSesYxbUkwZa = new Dictionary<string, List<eQOkiKPpCXaogpqR>>();
}
private void HbFWbxatitPKllflCWftIw() => Interface.GetMod().DataFileSystem.WriteObject("CustomTownVendingData", eOUpGvpWLki);
}
}