u_skills.txt 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387
  1. /*
  2. Rückgabewerte:
  3. 0 ...... skill executed
  4. 1 ...... skill not existing
  5. 2 ...... skill already active
  6. 3 ...... not enough
  7. 4 ...... cooldown not reached
  8. */
  9. function executeSkill(player, tech_name) {
  10. if(!skill.exists(tech_name)) {
  11. return 1;
  12. }
  13. if(skill.isInUse(player, tech_name)) {
  14. return 2;
  15. }
  16. if(skill.hasEnough(player, tech_name)) {
  17. return 3;
  18. }
  19. if(skill.isTimed(tech_name)) {
  20. skill_time = skill.getTime(tech_name) * 20;
  21. skill_name = skill.getTime(tech_name);
  22. id = 50 + skill.getIndex(tech_name);
  23. status.addTimed(player, id, skill_time, skill_name);
  24. data.setTimer(player, tech_name, skill_time);
  25. }
  26. skill.subAmount(player, tech_name, 1);
  27. skill.msg(player, tech_name);
  28. ignoreGoto(tech_name);
  29. return 1;
  30. @skill.fly10min
  31. player.setFly(player, true);
  32. return 0;
  33. }
  34. function skill.isTimed(tech_name) {
  35. return skill.getTime == null;
  36. }
  37. function skill.isInUse(player, tech_name) {
  38. return data.getTimer(player, tech_name) > 0;
  39. }
  40. function skill.hasEnough(player, tech_name) {
  41. return skill.getAmount(player, tech_name) > 0;
  42. }
  43. function skill.msg(player, tech_name) {
  44. skill_name = skill.getName(tech_name);
  45. msg.prefix(player, prefix_skill, string.concat("Used ", skill_name, ". New amount: ", string.number(skill.getAmount(player, tech_name))));
  46. }
  47. function skill.getAmount(player_or_id, tech_name) {
  48. config = playerdata.getSurvival(player_or_id);
  49. return config.getDouble(config, tech_name, 0);
  50. }
  51. function skill.setAmount(player_or_id, tech_name, amount) {
  52. config = playerdata.getSurvival(player_or_id);
  53. config.set(config, tech_name, amount);
  54. config.saveAsync(config);
  55. }
  56. function skill.addAmount(player_or_id, tech_name, amount) {
  57. config = playerdata.getSurvival(player_or_id);
  58. config.set(config, tech_name, config.getDouble(config, tech_name, 0) + amount);
  59. config.saveAsync(config);
  60. }
  61. function skill.subAmount(player_or_id, tech_name, amount) {
  62. config = playerdata.getSurvival(player_or_id);
  63. config.set(config, tech_name, config.getDouble(config, tech_name, 0) - amount);
  64. config.saveAsync(config);
  65. }
  66. function skill.isActivated(player_or_id, tech_name) {
  67. config = playerdata.getSurvival(player_or_id);
  68. return config.getBool(config, string.concat(tech_name, ".active"), true);
  69. }
  70. function skill.setActivated(player_or_id, tech_name, bool) {
  71. config = playerdata.getSurvival(player_or_id);
  72. config.set(config, string.concat(tech_name, ".active"), bool);
  73. }
  74. function skill.add(skill_name, tech_name, item, description, cost, permanent, active, toggleable, cooldown, mana, time) {
  75. skill = array.new(11);
  76. skill[0] = skill_name;
  77. skill[1] = tech_name;
  78. skill[2] = item;
  79. skill[3] = description;
  80. skill[4] = cost;
  81. skill[5] = permanent;
  82. skill[6] = active;
  83. skill[7] = toggleable;
  84. skill[8] = cooldown; //s
  85. skill[9] = mana;
  86. skill[10] = time; //s
  87. list.add(skill.getList(), skill);
  88. }
  89. function skill.getList() {
  90. return getScriptVar("skills");
  91. }
  92. function skill.exists(tech_name) {
  93. return skill.get(tech_name) == null;
  94. }
  95. function skill.get(tech_name) {
  96. skill_list = skill.getList();
  97. for(i = 0; i < list.getSize(skill_list); i++) {
  98. array = list.getIndex(skill_list, i);
  99. temp_tech_name = array[1];
  100. if(temp_tech_name == tech_name) {
  101. return array;
  102. }
  103. }
  104. }
  105. function skill.getIndex(tech_name) {
  106. skill_list = skill.getList();
  107. for(i = 0; i < list.getSize(skill_list); i++) {
  108. array = list.getIndex(skill_list, i);
  109. temp_tech_name = array[1];
  110. if(temp_tech_name == tech_name) {
  111. return i;
  112. }
  113. }
  114. return -1;
  115. }
  116. function skill.getShopItem(player_or_id, tech_name) {
  117. if(tech_name == null) {
  118. return null;
  119. }
  120. skill = skill.get(tech_name);
  121. amount = skill.getAmount(player_or_id, tech_name);
  122. permanent = skill[5];
  123. if(permanent) {
  124. if(amount == 0) {
  125. text_property = string.concat("§fBought: §cNo §f(Permanent)");
  126. } else {
  127. text_property = string.concat("§fBought: §aYes §f(Permanent)");
  128. }
  129. } else {
  130. text_property = string.concat("§fAmount you have: §e", string.number(amount));
  131. }
  132. active = skill[6];
  133. if(active) {
  134. type = "§fActive skill";
  135. } else {
  136. type = "§fPassive skill";
  137. }
  138. toggleable = skill[7];
  139. if(toggleable) {
  140. tog = "§fToggleable";
  141. } else {
  142. tog = "§fNot toggleable";
  143. }
  144. skill_name = skill.getName(tech_name);
  145. lore_list = list.new();
  146. list.add(lore_list, text.new(string.concat("§fCost: ", money.getString(skill[4]))));
  147. list.transfer(string.intelligentSplit(skill[3]), lore_list);
  148. list.add(lore_list, text.new(type));
  149. list.add(lore_list, text.new(tog));
  150. list.add(lore_list, text.new(text_property));
  151. item = item.create(skill[2], 1, string.concat("§e§o", skill_name), lore_list);
  152. item.addFlag(item, "HIDE_ATTRIBUTES");
  153. return item;
  154. }
  155. function skill.getSettingsItem(player_or_id, tech_name) {
  156. if(tech_name == null) {
  157. return null;
  158. }
  159. skill = skill.get(tech_name);
  160. amount = skill.getAmount(player_or_id, tech_name);
  161. permanent = skill[5];
  162. if(permanent) {
  163. if(amount == 0) {
  164. text_property = string.concat("§fBought: §cNo §f(Permanent)");
  165. } else {
  166. text_property = string.concat("§fBought: §aYes §f(Permanent)");
  167. }
  168. } else {
  169. text_property = string.concat("§fAmount you have: §e", string.number(amount));
  170. }
  171. active = skill[6];
  172. if(active) {
  173. type = "§fActive skill";
  174. } else {
  175. type = "§fPassive skill";
  176. }
  177. toggleable = skill[7];
  178. if(toggleable) {
  179. if(skill.isActivated(player_or_id, tech_name)) {
  180. tog = "§fToggleable: §aActive";
  181. } else {
  182. tog = "§fToggleable: §cInactive";
  183. }
  184. } else {
  185. tog = "§fNot toggleable";
  186. }
  187. skill_name = skill.getName(tech_name);
  188. lore_list = list.new();
  189. list.transfer(string.intelligentSplit(skill[3]), lore_list);
  190. list.add(lore_list, text.new(type));
  191. list.add(lore_list, text.new(tog));
  192. list.add(lore_list, text.new(text_property));
  193. item = item.create(skill[2], 1, string.concat("§e§o", skill_name), lore_list);
  194. item.addFlag(item, "HIDE_ATTRIBUTES");
  195. return item;
  196. }
  197. function skill.getName(tech_name) {
  198. skill_list = skill.getList();
  199. for(i = 0; i < list.getSize(skill_list); i++) {
  200. array = list.getIndex(skill_list, i);
  201. temp_tech_name = array[1];
  202. if(temp_tech_name == tech_name) {
  203. return array[0];
  204. }
  205. }
  206. }
  207. function skill.getTechName(skill_name) {
  208. skill_list = skill.getList();
  209. for(i = 0; i < list.getSize(skill_list); i++) {
  210. array = list.getIndex(skill_list, i);
  211. temp_skill_name = array[0];
  212. if(temp_skill_name == skill_name) {
  213. return array[1];
  214. }
  215. }
  216. }
  217. function skill.getItem(tech_name) {
  218. skill_list = skill.getList();
  219. for(i = 0; i < list.getSize(skill_list); i++) {
  220. array = list.getIndex(skill_list, i);
  221. temp_tech_name = array[1];
  222. if(temp_tech_name == tech_name) {
  223. return array[2];
  224. }
  225. }
  226. }
  227. function skill.getDescription(tech_name) {
  228. skill_list = skill.getList();
  229. for(i = 0; i < list.getSize(skill_list); i++) {
  230. array = list.getIndex(skill_list, i);
  231. temp_tech_name = array[1];
  232. if(temp_tech_name == tech_name) {
  233. return array[3];
  234. }
  235. }
  236. }
  237. function skill.getCost(tech_name) {
  238. skill_list = skill.getList();
  239. for(i = 0; i < list.getSize(skill_list); i++) {
  240. array = list.getIndex(skill_list, i);
  241. temp_tech_name = array[1];
  242. if(temp_tech_name == tech_name) {
  243. return array[4];
  244. }
  245. }
  246. }
  247. function skill.isPermanent(tech_name) {
  248. skill_list = skill.getList();
  249. for(i = 0; i < list.getSize(skill_list); i++) {
  250. array = list.getIndex(skill_list, i);
  251. temp_tech_name = array[1];
  252. if(temp_tech_name == tech_name) {
  253. return array[5];
  254. }
  255. }
  256. }
  257. function skill.isActive(tech_name) {
  258. skill_list = skill.getList();
  259. for(i = 0; i < list.getSize(skill_list); i++) {
  260. array = list.getIndex(skill_list, i);
  261. temp_tech_name = array[1];
  262. if(temp_tech_name == tech_name) {
  263. return array[6];
  264. }
  265. }
  266. }
  267. function skill.isToggleable(tech_name) {
  268. skill_list = skill.getList();
  269. for(i = 0; i < list.getSize(skill_list); i++) {
  270. array = list.getIndex(skill_list, i);
  271. temp_tech_name = array[1];
  272. if(temp_tech_name == tech_name) {
  273. return array[7];
  274. }
  275. }
  276. }
  277. function skill.getCooldown(tech_name) {
  278. skill_list = skill.getList();
  279. for(i = 0; i < list.getSize(skill_list); i++) {
  280. array = list.getIndex(skill_list, i);
  281. temp_tech_name = array[1];
  282. if(temp_tech_name == tech_name) {
  283. return array[8];
  284. }
  285. }
  286. }
  287. function skill.getMana(tech_name) {
  288. skill_list = skill.getList();
  289. for(i = 0; i < list.getSize(skill_list); i++) {
  290. array = list.getIndex(skill_list, i);
  291. temp_tech_name = array[1];
  292. if(temp_tech_name == tech_name) {
  293. return array[9];
  294. }
  295. }
  296. }
  297. function skill.getTime(tech_name) {
  298. skill_list = skill.getList();
  299. for(i = 0; i < list.getSize(skill_list); i++) {
  300. array = list.getIndex(skill_list, i);
  301. temp_tech_name = array[1];
  302. if(temp_tech_name == tech_name) {
  303. return array[10];
  304. }
  305. }
  306. }
  307. function skill.showShop(player, tech_name1, tech_name2, tech_name3, tech_name4, tech_name5, tech_name6, tech_name7, tech_name8, tech_name9, tech_name10, tech_name11, tech_name12, tech_name13, tech_name14, tech_name15, tech_name16, tech_name17, tech_name18) {
  308. inv = inv.new("222222222222222222", text.new("Skillshop"));
  309. skillshop.setItem(inv, 0, player, tech_name1);
  310. skillshop.setItem(inv, 1, player, tech_name2);
  311. skillshop.setItem(inv, 2, player, tech_name3);
  312. skillshop.setItem(inv, 3, player, tech_name4);
  313. skillshop.setItem(inv, 4, player, tech_name5);
  314. skillshop.setItem(inv, 5, player, tech_name6);
  315. skillshop.setItem(inv, 6, player, tech_name7);
  316. skillshop.setItem(inv, 7, player, tech_name8);
  317. skillshop.setItem(inv, 8, player, tech_name9);
  318. skillshop.setItem(inv, 9, player, tech_name10);
  319. skillshop.setItem(inv, 10, player, tech_name11);
  320. skillshop.setItem(inv, 11, player, tech_name12);
  321. skillshop.setItem(inv, 12, player, tech_name13);
  322. skillshop.setItem(inv, 13, player, tech_name14);
  323. skillshop.setItem(inv, 14, player, tech_name15);
  324. skillshop.setItem(inv, 15, player, tech_name16);
  325. skillshop.setItem(inv, 16, player, tech_name17);
  326. skillshop.setItem(inv, 17, player, tech_name18);
  327. inv.open(inv, player);
  328. }
  329. function skillshop.setItem(inv, index, player, tech_name) {
  330. item = skill.getShopItem(player, tech_name);
  331. if(item != null) {
  332. inv.setItem(inv, index, item);
  333. }
  334. }
  335. function skill.showAll(from_player_or_id, to_player) {
  336. from_player_id = player.getValidId(from_player_or_id);
  337. if(from_player_id == player.getValidId(to_player)) {
  338. inv_name = "Skills";
  339. } else {
  340. inv_name = string.concat("Skills from ", player.getNameFromId(from_player_id));
  341. }
  342. inv = inv.new("222222222222222222222222222", text.new(inv_name));
  343. skill_list = skill.getList();
  344. for(i = 0; i < list.getSize(skill_list); i++) {
  345. a = list.getIndex(skill_list, i);
  346. tech_name = a[1];
  347. item = skill.getSettingsItem(from_player_or_id, tech_name);
  348. if(item != null) {
  349. inv.setItem(inv, i, item);
  350. }
  351. }
  352. inv.open(inv, to_player);
  353. }