Advertisement
Guest User

Untitled

a guest
Feb 24th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 44.84 KB | None | 0 0
  1. using Oxide.Core;
  2. using Random = UnityEngine.Random;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using System.Linq;
  6. using System.Text.RegularExpressions;
  7. using System;
  8.  
  9. namespace Oxide.Plugins
  10. {
  11. // Spolszczył Mroczny
  12. [Info("RankFermix", "Kaidoz", "2.0.1")]
  13.  
  14. class RankFermix : HurtworldPlugin
  15. {
  16. Dictionary<string, object> Abilities = new Dictionary<string, object>();
  17. Dictionary<string, object> Levels = new Dictionary<string, object>();
  18.  
  19. protected override void LoadDefaultConfig()
  20. {
  21. Config.Clear();
  22. Abilities.Add("Thorns1", 18);
  23. Abilities.Add("Thorns2", 38);
  24. Abilities.Add("Thorns3", 50);
  25. Abilities.Add("Thorns4", 65);
  26. Abilities.Add("Thorns5", 80);
  27. if (Config["Abilities"] == null) Config["Abilities"] = Abilities;
  28. Levels.Add("01", 0);
  29. Levels.Add("02", 300);
  30. Levels.Add("03", 600);
  31. Levels.Add("04", 1000);
  32. Levels.Add("05", 1500);
  33. Levels.Add("06", 2000);
  34. Levels.Add("07", 2500);
  35. Levels.Add("08", 3000);
  36. Levels.Add("09", 4000);
  37. Levels.Add("10", 5000);
  38. Levels.Add("11", 6500);
  39. Levels.Add("12", 8000);
  40. Levels.Add("13", 9500);
  41. Levels.Add("14", 11000);
  42. Levels.Add("15", 13000);
  43. Levels.Add("16", 15000);
  44. Levels.Add("17", 18000);
  45. Levels.Add("18", 21500);
  46. Levels.Add("19", 25000);
  47. Levels.Add("20", 30000);
  48. Levels.Add("21", 38000);
  49. Levels.Add("22", 46000);
  50. Levels.Add("23", 56000);
  51. Levels.Add("24", 66000);
  52. Levels.Add("25", 76000);
  53. Levels.Add("26", 88000);
  54. Levels.Add("27", 98500);
  55. Levels.Add("28", 105000);
  56. Levels.Add("29", 120000);
  57. Levels.Add("30", 135000);
  58. Levels.Add("31", 150000);
  59. Levels.Add("32", 175000);
  60. Levels.Add("33", 200000);
  61. Levels.Add("34", 230000);
  62. Levels.Add("35", 260000);
  63. Levels.Add("36", 295000);
  64. Levels.Add("37", 330000);
  65. Levels.Add("38", 365000);
  66. Levels.Add("39", 400000);
  67. Levels.Add("40", 440000);
  68. Levels.Add("41", 480000);
  69. Levels.Add("42", 520000);
  70. Levels.Add("43", 560000);
  71. Levels.Add("44", 600000);
  72. Levels.Add("45", 650000);
  73. Levels.Add("46", 700000);
  74. Levels.Add("47", 750000);
  75. Levels.Add("48", 800000);
  76. Levels.Add("49", 860000);
  77. Levels.Add("50", 920000);
  78. Levels.Add("51", 1000000);
  79. Levels.Add("52", 1060000);
  80. Levels.Add("53", 1120002);
  81. Levels.Add("54", 1200003);
  82. Levels.Add("55", 1260004);
  83. Levels.Add("56", 1320005);
  84. Levels.Add("57", 1400006);
  85. Levels.Add("58", 1420007);
  86. Levels.Add("59", 1500008);
  87. Levels.Add("60", 1520009);
  88. Levels.Add("61", 1600010);
  89. Levels.Add("62", 1620011);
  90. Levels.Add("63", 1700012);
  91. Levels.Add("64", 1720013);
  92. Levels.Add("65", 1800014);
  93. Levels.Add("66", 1820015);
  94. Levels.Add("67", 1900016);
  95. Levels.Add("68", 1920017);
  96. Levels.Add("69", 2000000);
  97. Levels.Add("70", 2200000);
  98. Levels.Add("71", 3000000);
  99. Levels.Add("72", 3200000);
  100. Levels.Add("73", 3800000);
  101. Levels.Add("74", 4200000);
  102. Levels.Add("75", 4800000);
  103. Levels.Add("76", 4000000);
  104. Levels.Add("77", 4200000);
  105. Levels.Add("78", 4800000);
  106. Levels.Add("79", 4000000);
  107. Levels.Add("80", 4200000);
  108. Levels.Add("81", 4800000);
  109. Levels.Add("82", 5000000);
  110. Levels.Add("83", 5200000);
  111. Levels.Add("84", 5900000);
  112. Levels.Add("85", 6000000);
  113. Levels.Add("86", 6200000);
  114. Levels.Add("87", 7000000);
  115. Levels.Add("88", 7200000);
  116. Levels.Add("89", 7900000);
  117. Levels.Add("90", 7200000);
  118. Levels.Add("91", 7400000);
  119. Levels.Add("92", 7600000);
  120. Levels.Add("93", 7900000);
  121. Levels.Add("94", 8200000);
  122. Levels.Add("95", 8500000);
  123. Levels.Add("96", 8800000);
  124. Levels.Add("97", 9000000);
  125. Levels.Add("98", 9400000);
  126. Levels.Add("99", 9900000);
  127. Levels.Add("100", 10000000);
  128. if (Config["Levels"] == null) Config["Levels"] = Levels;
  129.  
  130. SaveConfig();
  131. }
  132.  
  133. void Init()
  134. {
  135. var save = timer.Repeat(1800f, 0, delegate
  136. {
  137. SaveData();
  138. });
  139. var sessions = GameManager.Instance.GetSessions();
  140. PlayerSession session = null;
  141. foreach (var i in sessions)
  142. {
  143. session = i.Value;
  144. CheckLvl(session);
  145.  
  146. }
  147. var prov = timer.Repeat(30f, 0, delegate
  148. {
  149. foreach (var i in sessions)
  150. {
  151. session = i.Value;
  152. CheckLvl(session);
  153.  
  154. }
  155. });
  156. permission.RegisterPermission("rankfermix.x2", this);
  157. permission.RegisterPermission("rankfermix.x3", this);
  158. permission.RegisterPermission("rankfermix.x4", this);
  159. permission.RegisterPermission("rankfermix.x100", this);
  160. LoadData();
  161. }
  162.  
  163.  
  164. private void OnPlayerRespawn(PlayerSession session)
  165. {
  166. int nfd = 0;
  167. timer.Once(0.1f, delegate
  168. {
  169. UserData con = (from x in Tops where x.SteamId == (ulong)session.SteamId select x).FirstOrDefault();
  170.  
  171. foreach (var cmd in Config["Abilities"] as Dictionary<string, object>)
  172. {
  173. if (cmd.Key == "NoFallDamage") nfd = (int)cmd.Value;
  174. }
  175. if (con.Lvl >= nfd)
  176. {
  177. var motor = session.WorldPlayerEntity.GetComponent<CharacterMotorSimple>();
  178. motor.FallDamageMultiplier = 0;
  179. }
  180.  
  181. session.WorldPlayerEntity.GetComponent<EntityStats>().GetFluidEffect(EEntityFluidEffectType.StorageCapacity).RemoveContinuousEffect(this);
  182. session.WorldPlayerEntity.GetComponent<EntityStats>().GetFluidEffect(EEntityFluidEffectType.StorageCapacity).AddContinuousEffect(this, con.Lvl / 2);
  183. session.WorldPlayerEntity.GetComponent<EntityStats>().GetFluidEffect(EEntityFluidEffectType.Pace).RemoveContinuousEffect(this);
  184. session.WorldPlayerEntity.GetComponent<EntityStats>().GetFluidEffect(EEntityFluidEffectType.Pace).AddContinuousEffect(this, con.Lvl / 100f);
  185.  
  186. });
  187.  
  188. }
  189. private void OnPlayerConnected(PlayerSession session)
  190. {
  191.  
  192. int nfd = 0;
  193. CheckLvl(session);
  194. UserData con = (from x in Tops where x.SteamId == (ulong)session.SteamId select x).FirstOrDefault();
  195. con.TimeLastConnect = Convert.ToString(DateTime.Now);
  196. con.Ip = Convert.ToString(session.Player.ipAddress);
  197. con.Name = Convert.ToString(session.Name);
  198. foreach (var cmd in Config["Abilities"] as Dictionary<string, object>)
  199. {
  200. if (cmd.Key == "NoFallDamage") nfd = (int)cmd.Value;
  201. }
  202. if (con.Lvl >= nfd)
  203. {
  204. var motor = session.WorldPlayerEntity.GetComponent<CharacterMotorSimple>();
  205. motor.FallDamageMultiplier = 0;
  206. }
  207.  
  208. session.WorldPlayerEntity.GetComponent<EntityStats>().GetFluidEffect(EEntityFluidEffectType.StorageCapacity).RemoveContinuousEffect(this);
  209. session.WorldPlayerEntity.GetComponent<EntityStats>().GetFluidEffect(EEntityFluidEffectType.StorageCapacity).AddContinuousEffect(this, con.Lvl / 2);
  210. session.WorldPlayerEntity.GetComponent<EntityStats>().GetFluidEffect(EEntityFluidEffectType.Pace).RemoveContinuousEffect(this);
  211. session.WorldPlayerEntity.GetComponent<EntityStats>().GetFluidEffect(EEntityFluidEffectType.Pace).AddContinuousEffect(this, con.Lvl / 100f);
  212.  
  213. }
  214.  
  215. public Vector3 StringToVector3(string v3)
  216. {
  217. var split = v3.Split(',').Select(Convert.ToSingle).ToArray();
  218. return split.Length == 3 ? new Vector3(split[0], split[1], split[2]) : Vector3.zero;
  219. }
  220.  
  221.  
  222. [ConsoleCommand("rank.clear")]
  223. private void cmdranlkHealStats(string commandString)
  224. {
  225.  
  226. var TopSuicide = (from x in Tops select x).OrderByDescending(x => x.Suicide).Take(10000);
  227. foreach (var top in TopSuicide)
  228. {
  229. DateTime date1 = new DateTime(2017, 5, 31, 12, 0, 0);
  230. DateTime time2 = Convert.ToDateTime(top.TimeLastConnect);
  231. if (date1 > time2)
  232. {
  233. Tops.Remove(top);
  234. }
  235. }
  236. SaveData();
  237. }
  238.  
  239.  
  240.  
  241. private void OnDispenserGather(GameObject resourceNode, HurtMonoBehavior player, List<ItemInstance> items)
  242. {
  243. if (resourceNode == null || player == null || items == null) return;
  244.  
  245. string tmpName = Convert.ToString(GetNameOfObject(resourceNode));
  246. var KillerName = tmpName.Remove(tmpName.Length - 3);
  247. var session = getSession(KillerName);
  248. UserData con = (from x in Tops where x.SteamId == (ulong)session.SteamId select x).FirstOrDefault();
  249. var ItemMgr = Singleton<GlobalItemManager>.Instance;
  250. int oput = 0;
  251. if (Convert.ToString(player.name).Contains("Metal4ResourceNodeServer"))
  252. {
  253. oput = 35;
  254. }
  255. else if (Convert.ToString(player.name).Contains("Metal3ResourceNodeServer"))
  256. {
  257. oput = 30;
  258. }
  259. else if (Convert.ToString(player.name).Contains("Metal2ResourceNodeServer"))
  260. {
  261. oput = 20;
  262. }
  263. else if (Convert.ToString(player.name).Contains("SandstoneResourceNodeServer"))
  264. {
  265. oput = 12;
  266. }
  267. else if (Convert.ToString(player.name).Contains("Deadtree1ResourceNodeServer") || Convert.ToString(player.name).Contains("Deadtree2ResourceNodeServer") ||
  268. Convert.ToString(player.name).Contains("Deadtree3ResourceNodeServer") || Convert.ToString(player.name).Contains("LogResourceNodeServer"))
  269. {
  270. oput = 20;
  271. }
  272. else if (Convert.ToString(player.name).Contains("IronRockResourceNodeServer"))
  273. {
  274. oput = 8;
  275. }
  276. else if (Convert.ToString(player.name).Contains("CoalRockResourceNodeServer"))
  277. {
  278. oput = 5;
  279. }
  280. if (oput > 0)
  281. {
  282. if (Convert.ToString(player.name).Contains("Deadtree1ResourceNodeServer(Clone)") || Convert.ToString(player.name).Contains("Deadtree2ResourceNodeServer(Clone)") ||
  283. Convert.ToString(player.name).Contains("Deadtree3ResourceNodeServer(Clone)") || Convert.ToString(player.name).Contains("LogResourceNodeServer(Clone)"))
  284. {
  285. con.Wood = con.Wood + oput;
  286. }
  287. else
  288. {
  289. con.Ore = con.Ore + oput;
  290. }
  291. for (int index = 0; index < items.Count; ++index) Singleton<GlobalItemManager>.Instance.GiveItem(session.Player, items[index].Item, Convert.ToInt32(items[index].StackSize * con.Lvl / 100));
  292. if (permission.UserHasPermission(session.SteamId.ToString(), "rankfermix.x2"))
  293. {
  294. oput = oput * 2;
  295. }
  296.  
  297. Singleton<AlertManager>.Instance.GenericTextNotificationServer("EXP: +" + oput, session.Player);
  298. con.Exp = con.Exp + oput;
  299.  
  300.  
  301. }
  302.  
  303. }
  304.  
  305. private void CheckLvl(PlayerSession session)
  306. {
  307. var check = (from x in Tops where x.SteamId == (ulong)session.SteamId select x).Count();
  308. if (check == 0)
  309. {
  310. Tops.Add(new UserData((ulong)session.SteamId, Convert.ToString(session.Name), Convert.ToString(session.Player.ipAddress), Convert.ToString(DateTime.Now), Convert.ToString("0"), 0, 0, 0, 0, 0, 0, 1, 0));
  311. //SaveData();
  312. }
  313. UserData con = (from x in Tops where x.SteamId == (ulong)session.SteamId select x).FirstOrDefault();
  314. int oput = 0;
  315. int nfd = 0;
  316. int dj = 0;
  317. int nextlvl = con.Lvl + 1;
  318. foreach (var cmd in Config["Levels"] as Dictionary<string, object>)
  319. {
  320. if (cmd.Key == nextlvl.ToString() || cmd.Key == "01" && nextlvl == 1 || cmd.Key == "02" && nextlvl == 2 || cmd.Key == "03" && nextlvl == 3 ||
  321. cmd.Key == "04" && nextlvl == 4 || cmd.Key == "05" && nextlvl == 5 || cmd.Key == "06" && nextlvl == 6 ||
  322. cmd.Key == "07" && nextlvl == 7 || cmd.Key == "08" && nextlvl == 8 || cmd.Key == "09" && nextlvl == 9) oput = (int)cmd.Value;
  323. }
  324. if (con.Exp >= oput)
  325. {
  326. con.Lvl++;
  327. foreach (var cmd in Config["Abilities"] as Dictionary<string, object>)
  328. {
  329. if (cmd.Key == "NoFallDamage") nfd = (int)cmd.Value;
  330. }
  331. if (con.Lvl >= nfd)
  332. {
  333. var motor = session.WorldPlayerEntity.GetComponent<CharacterMotorSimple>();
  334. motor.FallDamageMultiplier = 0;
  335. }
  336. Singleton<AlertManager>.Instance.GenericTextNotificationServer($"Podniosłeś swój poziom do: {con.Lvl}", session.Player);
  337. }
  338. }
  339.  
  340.  
  341.  
  342. private void OnEntityDeath(object animal, EntityEffectSourceData dataSource)
  343. {
  344. string tmpName = GetNameOfObject(dataSource.EntitySource);
  345. string KillerName = tmpName.Remove(tmpName.Length - 3);
  346. int oput = 0;
  347. string anim = Convert.ToString(animal);
  348. UserData pakill = (from x in Tops where x.SteamId == (ulong)getSession(KillerName).SteamId select x).FirstOrDefault();
  349. if (anim.Contains("AIRafagaServer"))
  350. {
  351. oput = 20;
  352. }
  353. else if (anim.Contains("AIBorServer"))
  354. {
  355. oput = 10;
  356. }
  357. else if (anim.Contains("AIBorRadServer"))
  358. {
  359. oput = 12;
  360. }
  361. else if (anim.Contains("AIShepherdServer"))
  362. {
  363. oput = 6;
  364. }
  365. else if (anim.Contains("AIShigiArcticServer"))
  366. {
  367. oput = 14;
  368. }
  369. else if (anim.Contains("AIShigiForestServer"))
  370. {
  371. oput = 4;
  372. }
  373. else if (anim.Contains("AIShigiServer"))
  374. {
  375. oput = 2;
  376. }
  377. else if (anim.Contains("AIShigiWolfServer"))
  378. {
  379. oput = 8;
  380. }
  381. else if (anim.Contains("AITokarAlbinoServer"))
  382. {
  383. oput = 14;
  384. }
  385. else if (anim.Contains("AITokarBlueServer"))
  386. {
  387. oput = 14;
  388. }
  389. else if (anim.Contains("AITokarParrotServer"))
  390. {
  391. oput = 14;
  392. }
  393. else if (anim.Contains("AITokarServer"))
  394. {
  395. oput = 10;
  396. }
  397. else if (anim.Contains("AIYetiForestServer"))
  398. {
  399. oput = 40;
  400. }
  401. else if (anim.Contains("AIYetiServer"))
  402. {
  403. oput = 50;
  404. }
  405.  
  406.  
  407. if (permission.UserHasPermission(getSession(KillerName).SteamId.ToString(), "rankfermix.x2"))
  408. {
  409. oput = oput * 2;
  410. }
  411.  
  412. Singleton<AlertManager>.Instance.GenericTextNotificationServer($"EXP: + {oput}", getSession(KillerName).Player);
  413.  
  414. pakill.KillsAnimal = pakill.KillsAnimal + 1;
  415. pakill.Exp = pakill.Exp + oput;
  416.  
  417.  
  418.  
  419. }
  420.  
  421. [ConsoleCommand("rank.exp")]
  422. private void cmdrankexp(string commandString, string[] args)
  423. {
  424. if (args.Length == 2)
  425. {
  426. var sessions = GameManager.Instance.GetSessions().Values.ToList();
  427. foreach (var player in sessions)
  428. {
  429. if (player.SteamId.ToString().Contains(args[0]))
  430. {
  431. UserData con = (from x in Tops where x.SteamId == (ulong)player.SteamId select x).FirstOrDefault();
  432. int oput = 0;
  433. int nextlvl = con.Lvl + Convert.ToInt32(args[1]);
  434.  
  435. foreach (var cmd in Config["Levels"] as Dictionary<string, object>)
  436. {
  437. if (cmd.Key == nextlvl.ToString() || cmd.Key == "01" && nextlvl == 1 || cmd.Key == "02" && nextlvl == 2 || cmd.Key == "03" && nextlvl == 3 ||
  438. cmd.Key == "04" && nextlvl == 4 || cmd.Key == "05" && nextlvl == 5 || cmd.Key == "06" && nextlvl == 6 ||
  439. cmd.Key == "07" && nextlvl == 7 || cmd.Key == "08" && nextlvl == 8 || cmd.Key == "09" && nextlvl == 9) oput = (int)cmd.Value;
  440. }
  441. con.Exp = oput;
  442. con.Lvl += Convert.ToInt32(args[1]);
  443. Puts($"[Score] {player.Name} increased its level to {con.Lvl}");
  444. return;
  445. }
  446. }
  447. }
  448. }
  449.  
  450. [ChatCommand("exp")]
  451. void cmdsetexp(PlayerSession session, string command, string[] args)
  452. {
  453. if (!session.IsAdmin) return;
  454. UserData con = (from x in Tops where x.SteamId == (ulong)session.SteamId select x).FirstOrDefault();
  455. con.Exp += Convert.ToInt32(args[0]);
  456. hurt.SendChatMessage(session, null, $"<color=#FF7F00>[EXP]</color> <color=#98FB98>Successfully</color>");
  457. }
  458.  
  459. [ChatCommand("jump")]
  460. void cmdsetjump(PlayerSession session, string command, string[] args)
  461. {
  462. int lvl = 0;
  463. foreach (var cmd in Config["Abilities"] as Dictionary<string, object>)
  464. {
  465. if (cmd.Key == "DoubleJump") lvl = (int)cmd.Value;
  466. }
  467. UserData con = (from x in Tops where x.SteamId == (ulong)session.SteamId select x).FirstOrDefault();
  468. var motor = session.WorldPlayerEntity.GetComponent<CharacterMotorSimple>();
  469. if (!motor || con == null || lvl == 0) return;
  470. if (con.Lvl < lvl)
  471. {
  472. hurt.SendChatMessage(session, null, $"<color=#FF7F00>[Rank]</color> <color=#FF6347>Skakanie jest dostepne od {lvl} poziomu</color>");
  473. return;
  474. }
  475. if (args[0] == "on")
  476. {
  477. if (permission.UserHasPermission(session.SteamId.ToString(), "ezconsole.flash") && Convert.ToString(motor.GravityVector) == "(0.0, -15.0, 0.0)")
  478. {
  479. session.WorldPlayerEntity.GetComponent<EntityStats>().GetFluidEffect(EEntityFluidEffectType.Pace).RemoveContinuousEffect(this);
  480. session.WorldPlayerEntity.GetComponent<EntityStats>().GetFluidEffect(EEntityFluidEffectType.Pace).AddContinuousEffect(this, -3f);
  481. hurt.SendChatMessage(session, null, $"<color=red>[Ability]</color> <color=#98FB98>Flash is on</color>");
  482. }
  483. hurt.SendChatMessage(session, null, $"<color=#FF7F00>[Ability]</color> <color=#98FB98>Aktywowano skakanie</color>");
  484. motor.GravityVector = new Vector3(0f, -15f, 0f);
  485. motor.FallDamageMultiplier = 0;
  486. }
  487. else
  488. {
  489. if (permission.UserHasPermission(session.SteamId.ToString(), "ezconsole.flash") && Convert.ToString(motor.GravityVector) == "(0.0, -25.0, 0.0)")
  490. {
  491. session.WorldPlayerEntity.GetComponent<EntityStats>().GetFluidEffect(EEntityFluidEffectType.Pace).RemoveContinuousEffect(this);
  492. session.WorldPlayerEntity.GetComponent<EntityStats>().GetFluidEffect(EEntityFluidEffectType.Pace).AddContinuousEffect(this, 3f);
  493. hurt.SendChatMessage(session, null, $"<color=#FF7F00>[Ability]</color> <color=#98FB98>Flash is on</color>");
  494. }
  495. hurt.SendChatMessage(session, null, $"<color=#FF7F00>[Rank]</color> <color=#FF6347>Wyłączono skakanie</color>");
  496. motor.GravityVector = new Vector3(0f, -25f, 0f);
  497. motor.FallDamageMultiplier = 0;
  498. }
  499. return;
  500. }
  501. private int IsLvl(PlayerSession session)
  502. {
  503. UserData con = (from x in Tops where x.SteamId == (ulong)session.SteamId select x).FirstOrDefault();
  504. int lvl = (int)con.Lvl;
  505. return lvl;
  506. }
  507.  
  508. private void OnPlayerTakeDamage(PlayerSession session, EntityEffectSourceData dataSource)
  509. {
  510. string tmpName = GetNameOfObject(dataSource.EntitySource);
  511. if (tmpName == "" || tmpName.Contains("Creatures") || session == null) return;
  512. string KillerName = tmpName.Remove(tmpName.Length - 3);
  513. var session2 = getSession(KillerName);
  514. if (session2 == null) return;
  515. var p = Random.Range(1, 100);
  516. UserData con = (from x in Tops where x.SteamId == (ulong)session.SteamId select x).FirstOrDefault();
  517. UserData con2 = (from x in Tops where x.SteamId == (ulong)session2.SteamId select x).FirstOrDefault();
  518. int th1 = 0; int th2 = 0; int th3 = 0; int th4 = 0; int th5 = 0;
  519. int rg1 = 0; int rg2 = 0; int rg3 = 0; int rg4 = 0; int rg5 = 0;
  520. int dd1 = 0; int dd2 = 0; int dd3 = 0; int dd4 = 0; int dd5 = 0;
  521. int bonusdd = 0; int bonusrg = 0; int bonusth = 0;
  522. foreach (var cmd in Config["Abilities"] as Dictionary<string, object>)
  523. {
  524. if (cmd.Key == "Thorns1") th1 = (int)cmd.Value;
  525. if (cmd.Key == "Thorns2") th2 = (int)cmd.Value;
  526. if (cmd.Key == "Thorns3") th3 = (int)cmd.Value;
  527. if (cmd.Key == "Thorns4") th4 = (int)cmd.Value;
  528. if (cmd.Key == "Thorns5") th5 = (int)cmd.Value;
  529. }
  530.  
  531. if (con2.Lvl >= rg1)
  532. {
  533. if (con2.Lvl >= rg1) bonusrg = 1;
  534. if (con2.Lvl >= rg2) bonusrg = 2;
  535. if (con2.Lvl >= rg3) bonusrg = 3;
  536. if (con2.Lvl >= rg4) bonusrg = 4;
  537. if (con2.Lvl >= rg5) bonusrg = 5;
  538. if (bonusrg >= p)
  539. {
  540. dataSource.Value = dataSource.Value * 2;
  541. Singleton<AlertManager>.Instance.GenericTextNotificationServer("\n Zadałeś podwójne obrażenia! \n", session2.Player);
  542. Singleton<AlertManager>.Instance.GenericTextNotificationServer($"\n {session2.Name} zadałeś podwójne obrażenia! \n", session.Player);
  543. }
  544. }
  545.  
  546. if (con.Lvl >= dd1)
  547. {
  548. if (con.Lvl >= dd1) bonusdd = 2;
  549. if (con.Lvl >= dd2) bonusdd = 4;
  550. if (con.Lvl >= dd3) bonusdd = 6;
  551. if (con.Lvl >= dd4) bonusdd = 8;
  552. if (con.Lvl >= dd5) bonusdd = 10;
  553. if (bonusdd >= p)
  554. {
  555. dataSource.Value = 0;
  556. Singleton<AlertManager>.Instance.GenericTextNotificationServer("\n Uniknąłeś strzału! \n", session.Player);
  557. Singleton<AlertManager>.Instance.GenericTextNotificationServer($"\n {session.Name}\nuniknął strzału! \n", session2.Player);
  558. }
  559. }
  560.  
  561. if (con.Lvl >= th1)
  562. {
  563. if (con.Lvl >= th1) bonusth = 1;
  564. if (con.Lvl >= th2) bonusth = 2;
  565. if (con.Lvl >= th3) bonusth = 3;
  566. if (con.Lvl >= th4) bonusth = 4;
  567. if (con.Lvl >= th5) bonusth = 5;
  568. var p3 = Random.Range(1, 100);
  569. if (bonusth >= p)
  570. {
  571. var effect = new EntityEffectFluid(EEntityFluidEffectType.Damage, EEntityEffectFluidModifierType.AddValuePure, dataSource.Value);
  572. var stats = session2.WorldPlayerEntity.GetComponent<EntityStats>();
  573. effect.Apply(stats);
  574. Singleton<AlertManager>.Instance.GenericTextNotificationServer("\n Odbiłeś obrażenia! \n", session.Player);
  575. Singleton<AlertManager>.Instance.GenericTextNotificationServer($"\n {session.Name} zadał obrażenia odwetowe kolcami! \n", session2.Player);
  576. }
  577. }
  578. }
  579.  
  580.  
  581. [ChatCommand("rank")]
  582. void cmdrankplayer(PlayerSession session, string command, string[] args)
  583. {
  584.  
  585. int newlvl = 0;
  586.  
  587. var motor = session.WorldPlayerEntity.GetComponent<CharacterMotorSimple>();
  588. EntityStats stats = session.WorldPlayerEntity.GetComponent<EntityStats>();
  589. CheckLvl(session);
  590. UserData con = (from x in Tops where x.SteamId == (ulong)session.SteamId select x).FirstOrDefault();
  591.  
  592. string falldamage = "";
  593. string doublejump = "";
  594. string lst = "";
  595. string dodge = "";
  596. string rage = "";
  597. string thorns = "";
  598. int ls1 = 0;
  599. int ls2 = 0;
  600. int ls3 = 0;
  601. int ls4 = 0;
  602. int ls5 = 0;
  603. int dd1 = 0;
  604. int dd2 = 0;
  605. int dd3 = 0;
  606. int dd4 = 0;
  607. int dd5 = 0;
  608. int rg1 = 0;
  609. int rg2 = 0;
  610. int rg3 = 0;
  611. int rg4 = 0;
  612. int rg5 = 0;
  613. int th1 = 0;
  614. int th2 = 0;
  615. int th3 = 0;
  616. int th4 = 0;
  617. int th5 = 0;
  618. int oput = 0;
  619. int nextlvl = con.Lvl + 1;
  620. int nflvl = 0;
  621. int nfdlvl = 0;
  622. foreach (var cmd in Config["Levels"] as Dictionary<string, object>)
  623. {
  624. if (cmd.Key == nextlvl.ToString() || cmd.Key == "01" && nextlvl == 1 || cmd.Key == "02" && nextlvl == 2 || cmd.Key == "03" && nextlvl == 3 ||
  625. cmd.Key == "04" && nextlvl == 4 || cmd.Key == "05" && nextlvl == 5 || cmd.Key == "06" && nextlvl == 6 ||
  626. cmd.Key == "07" && nextlvl == 7 || cmd.Key == "08" && nextlvl == 8 || cmd.Key == "09" && nextlvl == 9) oput = (int)cmd.Value;
  627. }
  628. foreach (var cmd in Config["Abilities"] as Dictionary<string, object>)
  629. {
  630. if (cmd.Key == "Thorns1") th1 = (int)cmd.Value;
  631. if (cmd.Key == "Thorns2") th2 = (int)cmd.Value;
  632. if (cmd.Key == "Thorns3") th3 = (int)cmd.Value;
  633. if (cmd.Key == "Thorns4") th4 = (int)cmd.Value;
  634. if (cmd.Key == "Thorns5") th5 = (int)cmd.Value;
  635. }
  636.  
  637.  
  638. if (con.Lvl < ls1)
  639. {
  640. lst = $" [<color=#FF6347>c {ls1}lvl.</color>]";
  641. }
  642. else
  643. {
  644. if (con.Lvl >= ls1) lst = $"<color=#98FB98>[1 lvl.]</color>";
  645. if (con.Lvl >= ls2) lst = $"<color=#98FB98>[2 lvl.]</color>";
  646. if (con.Lvl >= ls3) lst = $"<color=#98FB98>[3 lvl.]</color>";
  647. if (con.Lvl >= ls4) lst = $"<color=#98FB98>[4 lvl.]</color>";
  648. if (con.Lvl >= ls5) lst = $"<color=#98FB98>[5 lvl.]</color>";
  649. }
  650.  
  651. if (con.Lvl < dd1)
  652. {
  653. dodge = $" [<color=#FF6347>c {dd1}lvl.</color>]";
  654. }
  655. else
  656. {
  657. if (con.Lvl >= dd1) dodge = $"<color=#98FB98>[1 lvl.]</color>";
  658. if (con.Lvl >= dd2) dodge = $"<color=#98FB98>[2 lvl.]</color>";
  659. if (con.Lvl >= dd3) dodge = $"<color=#98FB98>[3 lvl.]</color>";
  660. if (con.Lvl >= dd4) dodge = $"<color=#98FB98>[4 lvl.]</color>";
  661. if (con.Lvl >= dd5) dodge = $"<color=#98FB98>[5 lvl.]</color>";
  662. }
  663.  
  664. if (con.Lvl < rg1)
  665. {
  666. rage = $" [<color=#FF6347>c {rg1}lvl.</color>]";
  667. }
  668. else
  669. {
  670. if (con.Lvl >= rg1) rage = $"<color=#98FB98>[1 lvl.]</color>";
  671. if (con.Lvl >= rg2) rage = $"<color=#98FB98>[2 lvl.]</color>";
  672. if (con.Lvl >= rg3) rage = $"<color=#98FB98>[3 lvl.]</color>";
  673. if (con.Lvl >= rg4) rage = $"<color=#98FB98>[4 lvl.]</color>";
  674. if (con.Lvl >= rg5) rage = $"<color=#98FB98>[5 lvl.]</color>";
  675. }
  676.  
  677. if (con.Lvl < th1)
  678. {
  679. thorns = $" [<color=#FF6347>c {th1}lvl.</color>]";
  680. }
  681. else
  682. {
  683. if (con.Lvl >= th1) thorns = $"<color=#98FB98>[1 lvl.]</color>";
  684. if (con.Lvl >= th2) thorns = $"<color=#98FB98>[2 lvl.]</color>";
  685. if (con.Lvl >= th3) thorns = $"<color=#98FB98>[3 lvl.]</color>";
  686. if (con.Lvl >= th4) thorns = $"<color=#98FB98>[4 lvl.]</color>";
  687. if (con.Lvl >= th5) thorns = $"<color=#98FB98>[5 lvl.]</color>";
  688. }
  689. if (con.Lvl < nfdlvl)
  690. {
  691. falldamage = $"[<color=#FF6347>{nfdlvl}lvl.</color>]";
  692. }
  693. else if (Convert.ToInt64(motor.FallDamageMultiplier) == 0)
  694. {
  695. falldamage = "[<color=#98FB98>on</color>]";
  696. }
  697. else
  698. {
  699. falldamage = "[<color=#FF6347>off</color>]";
  700. }
  701.  
  702. if (con.Lvl < nflvl)
  703. {
  704. doublejump = $"[<color=#FF6347>c {nflvl}lvl.</color>]";
  705. }
  706. else if (Convert.ToString(motor.GravityVector) == "(0.0, -15.0, 0.0)")
  707. {
  708. doublejump = "[<color=#98FB98>on</color>]";
  709. }
  710. else
  711. {
  712. doublejump = "[<color=#FF6347>off</color>]";
  713. }
  714.  
  715. if (args.Length == 0)
  716. {
  717. hurt.SendChatMessage(session, null, $"<color=#FF6347>--------------------------------------------------</color>");
  718. hurt.SendChatMessage(session, null, $"<color=#FF6347>[❧]</color> <color=#FFA07A>Poziom:</color> <b>{con.Lvl}</b> [{con.Exp}/{oput}]");
  719. hurt.SendChatMessage(session, null, $"<color=#FF6347>[◘]</color> <color=#20B2AA>Pojemność:</color> +{con.Lvl / 2} | <color=#3CB371>Prędkość:</color> +{con.Lvl}% |");
  720. hurt.SendChatMessage(session, null, $"<color=#FF6347>[✚]</color> <color=#FFA500>Premia do kopania:</color> {con.Lvl}%");
  721. hurt.SendChatMessage(session, null, $"<color=#FF6347>[✪]</color> <color=#FFA07A>Zdolności:</color> Kopanie {falldamage} | Ciernie {thorns}");
  722. hurt.SendChatMessage(session, null, $"Wampiryzm {lst} | DoubleJump {doublejump} |");
  723. hurt.SendChatMessage(session, null, $"Wściekłość {rage} | Unik {dodge} ");
  724. hurt.SendChatMessage(session, null, $"<color=#FF6347>------------------- /rank help ------------------</color>");
  725. return;
  726. }
  727.  
  728. if (args[0] == "help")
  729. {
  730. hurt.SendChatMessage(session, null, $"\n");
  731. hurt.SendChatMessage(session, null, $"<color=#FF9A47>---------=== Rank Help ===---------</color>");
  732. hurt.SendChatMessage(session, null, $"<color=#FF6347>[✚]</color><color=#FFA07A> Więcej zdobywa się w klanie!</color>");
  733. hurt.SendChatMessage(session, null, $"<color=#FF6347>[✚]</color><color=#FFA07A> Poziom:</color> <i>/lvl</i>");
  734. hurt.SendChatMessage(session, null, $"<color=#FF6347>[✚]</color><color=#FFA07A> Topka:</color> <i>/top</i>");
  735. hurt.SendChatMessage(session, null, $"<color=#FF6347>[✚]</color><color=#FFA07A> Statystyki:</color> <i>/stats</i>");
  736. hurt.SendChatMessage(session, null, $"<color=#FF6347>[✚]</color><color=#FFA07A> DoubleJump:</color> <i>/jump on</i> <color=#FFA07A>|</color> <i>/jump off</i>");
  737. hurt.SendChatMessage(session, null, $"<color=#FF9A47>--------===| ========= |===--------</color>");
  738. }
  739. else
  740. {
  741. return;
  742. }
  743. }
  744.  
  745.  
  746. [ChatCommand("lvl")]
  747. void cmdlvlplayer(PlayerSession session, string command)
  748. {
  749. int newlvl = 0;
  750.  
  751. var motor = session.WorldPlayerEntity.GetComponent<CharacterMotorSimple>();
  752. EntityStats stats = session.WorldPlayerEntity.GetComponent<EntityStats>();
  753. CheckLvl(session);
  754. UserData con = (from x in Tops where x.SteamId == (ulong)session.SteamId select x).FirstOrDefault();
  755.  
  756. string falldamage = "";
  757. string doublejump = "";
  758. string lst = "";
  759. string dodge = "";
  760. string rage = "";
  761. string thorns = "";
  762. int ls1 = 0;
  763. int ls2 = 0;
  764. int ls3 = 0;
  765. int ls4 = 0;
  766. int ls5 = 0;
  767. int dd1 = 0;
  768. int dd2 = 0;
  769. int dd3 = 0;
  770. int dd4 = 0;
  771. int dd5 = 0;
  772. int rg1 = 0;
  773. int rg2 = 0;
  774. int rg3 = 0;
  775. int rg4 = 0;
  776. int rg5 = 0;
  777. int th1 = 0;
  778. int th2 = 0;
  779. int th3 = 0;
  780. int th4 = 0;
  781. int th5 = 0;
  782. int oput = 0;
  783. int nextlvl = con.Lvl + 1;
  784. int nflvl = 0;
  785. int nfdlvl = 0;
  786. foreach (var cmd in Config["Levels"] as Dictionary<string, object>)
  787. {
  788. if (cmd.Key == nextlvl.ToString() || cmd.Key == "01" && nextlvl == 1 || cmd.Key == "02" && nextlvl == 2 || cmd.Key == "03" && nextlvl == 3 ||
  789. cmd.Key == "04" && nextlvl == 4 || cmd.Key == "05" && nextlvl == 5 || cmd.Key == "06" && nextlvl == 6 ||
  790. cmd.Key == "07" && nextlvl == 7 || cmd.Key == "08" && nextlvl == 8 || cmd.Key == "09" && nextlvl == 9) oput = (int)cmd.Value;
  791. }
  792.  
  793.  
  794. hurt.SendChatMessage(session, null, $"<color=#00FF00>--------------------------------------------------</color>");
  795. hurt.SendChatMessage(session, null, $"<color=#7093DB>|INFO|</color> <color=red>Poziom:</color> <b>{con.Lvl}</b> [{con.Exp}/{oput}]");
  796. hurt.SendChatMessage(session, null, $"<color=#00FF00>--------------------------------------------------</color>");
  797.  
  798. }
  799.  
  800. [ChatCommand("top")]
  801. void cmdtopyolo(PlayerSession session, string command)
  802. {
  803. hurt.SendChatMessage(session, null, "<color=#3299CC>♔ Topka ♔</color>");
  804. var TopPlayer = (from x in Tops select x).OrderByDescending(x => x.Kills).Take(1);
  805. foreach (var top in TopPlayer)
  806. {
  807. hurt.SendChatMessage(session, null, $"<color=#3299CC>[✪] Zabójca:</color> {top.Name} ({top.Kills} zabić)");
  808. }
  809. var TopAnimal = (from x in Tops select x).OrderByDescending(x => x.KillsAnimal).Take(1);
  810. foreach (var top in TopAnimal)
  811. {
  812. hurt.SendChatMessage(session, null, $"<color=#3299CC>[✪] Zwierzęta:</color> {top.Name} ({top.KillsAnimal} upolował zwierząt)");
  813. }
  814. var TopOre = (from x in Tops select x).OrderByDescending(x => x.Ore).Take(1);
  815. foreach (var top in TopOre)
  816. {
  817. hurt.SendChatMessage(session, null, $"<color=#3299CC>[✪] Surowce:</color> {top.Name} ({top.Ore} punkty)");
  818. }
  819. var TopWood = (from x in Tops select x).OrderByDescending(x => x.Wood).Take(1);
  820. foreach (var top in TopWood)
  821. {
  822. hurt.SendChatMessage(session, null, $"<color=#3299CC>[✪] Drewno:</color> {top.Name} ({top.Wood} punkty)");
  823. }
  824.  
  825.  
  826. }
  827.  
  828. [ChatCommand("stats")]
  829. void cmdtopstatsyolo(PlayerSession session, string command)
  830. {
  831. hurt.SendChatMessage(session, null, "<color=#FF7F00><b>✌ Statystyki ✌</b></color>");
  832. var TopOnline = (from x in Tops select x).OrderByDescending(x => x.TimeOnline);
  833. int i4 = 0;
  834. foreach (var top in TopOnline)
  835. {
  836. i4++;
  837. if (top.Name == session.Name)
  838. {
  839. int onl = (Convert.ToInt32(Regex.Replace(top.TimeOnline, @"[^\d]+", "")));
  840. hurt.SendChatMessage(session, null, $"<color=#FF7256>[✪] Spędzony czas na serwerze: {onl} godzin.</color> ({i4} miejsce)");
  841. }
  842.  
  843. }
  844. var TopPlayer = (from x in Tops select x).OrderByDescending(x => x.Kills);
  845. int i = 0;
  846. foreach (var top in TopPlayer)
  847. {
  848. i++;
  849. if (top.Name == session.Name) hurt.SendChatMessage(session, null, $"<color=#FF7256>[✪] Zabójstwa: {top.Kills}</color> ({i} miejsce)");
  850.  
  851. }
  852. int i2 = 0;
  853. var TopAnimal = (from x in Tops select x).OrderByDescending(x => x.KillsAnimal);
  854. foreach (var top in TopAnimal)
  855. {
  856. i2++;
  857. if (top.Name == session.Name) hurt.SendChatMessage(session, null, $"<color=#FF7256>[✪] Upolowane zwierzęta: {top.KillsAnimal}</color> ({i2} miejsce)");
  858.  
  859. }
  860. int i5 = 0;
  861. var TopOre = (from x in Tops select x).OrderByDescending(x => x.Ore);
  862. foreach (var top in TopOre)
  863. {
  864. i5++;
  865. if (top.Name == session.Name) hurt.SendChatMessage(session, null, $"<color=#FF7256>[✪] Wydobyte surowce(exp): {top.Ore}</color> ({i5} miejsce)");
  866.  
  867. }
  868. int i6 = 0;
  869. var TopWood = (from x in Tops select x).OrderByDescending(x => x.Wood);
  870. foreach (var top in TopWood)
  871. {
  872. i6++;
  873. if (top.Name == session.Name) hurt.SendChatMessage(session, null, $"<color=#FF7256>[✪] Wykopane drewno(exp): {top.Wood}</color> ({i6} miejsce)");
  874.  
  875. }
  876. }
  877.  
  878. private void OnPlayerDisconnected(PlayerSession session)
  879. {
  880. var check = (from x in Tops where x.SteamId == (ulong)session.SteamId select x).Count();
  881. if (check == 0)
  882. {
  883. Tops.Add(new UserData((ulong)session.SteamId, Convert.ToString(session.Name), Convert.ToString(session.Player.ipAddress), Convert.ToString(DateTime.Now), Convert.ToString("0"), 0, 0, 0, 0, 0, 0, 0, 0));
  884. return;
  885. }
  886. UserData dis = (from x in Tops where x.SteamId == (ulong)session.SteamId select x).FirstOrDefault();
  887. DateTime date2 = DateTime.Now;
  888. int onl = Convert.ToInt32(date2.Subtract(DateTime.Parse(dis.TimeLastConnect)).TotalHours);
  889. onl = (Convert.ToInt32(Regex.Replace(dis.TimeOnline, @"[^\d]+", "")) + onl);
  890. if (onl < 0) onl = 0;
  891. dis.TimeOnline = Convert.ToString(onl) + " godzin.";
  892. dis.TimeLastConnect = Convert.ToString(DateTime.Now);
  893. }
  894.  
  895. private void OnPlayerDeath(PlayerSession session, EntityEffectSourceData dataSource)
  896. {
  897.  
  898. string name = session.Name;
  899. string tmpName = GetNameOfObject(dataSource.EntitySource);
  900. UserData pdeath = (from x in Tops where x.SteamId == (ulong)session.SteamId select x).FirstOrDefault();
  901.  
  902. if (tmpName.Contains("Creatures"))
  903. {
  904. pdeath.Deaths = pdeath.Deaths + 1;
  905. }
  906. else
  907. {
  908. if (tmpName == "Machines/Medusa Vine") return;
  909. var KillerName = tmpName.Remove(tmpName.Length - 3);
  910.  
  911. UserData con = (from x in Tops where x.SteamId == (ulong)getSession(KillerName).SteamId select x).FirstOrDefault();
  912. int ls1 = 0;
  913. int ls2 = 0;
  914. int ls3 = 0;
  915. int ls4 = 0;
  916. int ls5 = 0;
  917. foreach (var cmd in Config["Abilities"] as Dictionary<string, object>)
  918. {
  919. if (cmd.Key == "LifeSteal1") ls1 = (int)cmd.Value;
  920. if (cmd.Key == "LifeSteal2") ls2 = (int)cmd.Value;
  921. if (cmd.Key == "LifeSteal3") ls3 = (int)cmd.Value;
  922. if (cmd.Key == "LifeSteal4") ls4 = (int)cmd.Value;
  923. if (cmd.Key == "LifeSteal5") ls5 = (int)cmd.Value;
  924. }
  925.  
  926. if (con.Lvl >= ls1)
  927. {
  928. float hl = 5f;
  929. if (con.Lvl >= ls2)
  930. {
  931. hl = 10f;
  932. }
  933. else if (con.Lvl >= ls3)
  934. {
  935. hl = 15f;
  936. }
  937. else if (con.Lvl >= ls4)
  938. {
  939. hl = 20f;
  940. }
  941. else if (con.Lvl >= ls5)
  942. {
  943. hl = 25f;
  944. }
  945.  
  946. var Health = getSession(KillerName).WorldPlayerEntity.GetComponent<EntityStats>().GetFluidEffect(EEntityFluidEffectType.Health);
  947. EntityStats stats = getSession(KillerName).WorldPlayerEntity.GetComponent<EntityStats>();
  948. stats.GetFluidEffect(EEntityFluidEffectType.Health).SetValue(Health.GetValue() + hl);
  949. }
  950.  
  951. Singleton<AlertManager>.Instance.GenericTextNotificationServer("❧ EXP: +3", getSession(KillerName).Player);
  952. con.Exp += 3;
  953. pdeath.Deaths += 1;
  954. con.Kills += 1;
  955. }
  956. return;
  957. }
  958.  
  959. private PlayerSession getSession(string identifier)
  960. {
  961. var sessions = GameManager.Instance.GetSessions();
  962. PlayerSession session = null;
  963. foreach (var i in sessions)
  964. {
  965. if (i.Value.Name.ToLower().Contains(identifier.ToLower()) || identifier.Equals(i.Value.SteamId.ToString()))
  966. {
  967. session = i.Value;
  968. break;
  969. }
  970. }
  971.  
  972. return session;
  973. }
  974. void LoadData()
  975. {
  976. Tops = Interface.Oxide.DataFileSystem.ReadObject<List<UserData>>("UserData");
  977. }
  978. void Unload()
  979. {
  980. SaveData();
  981. }
  982. void SaveData()
  983. {
  984. Interface.Oxide.DataFileSystem.WriteObject("UserData", Tops);
  985. }
  986. string GetNameOfObject(UnityEngine.GameObject obj)
  987. {
  988. var ManagerInstance = GameManager.Instance;
  989. return ManagerInstance.GetDescriptionKey(obj);
  990. }
  991. #region [LISTS]
  992. public List<UserData> Tops = new List<UserData>();
  993. public class UserData
  994. {
  995. public UserData(ulong SteamId, string Name, string Ip, string TimeLastConnect, string TimeOnline, int Kills, int Deaths, int KillsAnimal, int Suicide, int Wood, int Ore, int Lvl, int Exp)
  996. {
  997. this.SteamId = SteamId;
  998. this.Name = Name;
  999. this.Ip = Ip;
  1000. this.TimeLastConnect = TimeLastConnect;
  1001. this.TimeOnline = TimeOnline;
  1002. this.Kills = Kills;
  1003. this.Deaths = Deaths;
  1004. this.KillsAnimal = KillsAnimal;
  1005. this.Suicide = Suicide;
  1006. this.Wood = Wood;
  1007. this.Ore = Ore;
  1008. this.Lvl = Lvl;
  1009. this.Exp = Exp;
  1010. }
  1011.  
  1012. public ulong SteamId { get; set; }
  1013. public string Name { get; set; }
  1014. public string Ip { get; set; }
  1015. public string TimeLastConnect { get; set; }
  1016. public string TimeOnline { get; set; }
  1017. public int Kills { get; set; }
  1018. public int Deaths { get; set; }
  1019. public int KillsAnimal { get; set; }
  1020. public int Suicide { get; set; }
  1021. public int Wood { get; set; }
  1022. public int Ore { get; set; }
  1023. public int Lvl { get; set; }
  1024. public int Exp { get; set; }
  1025. }
  1026. #endregion
  1027. }
  1028. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement