u_skills.txt 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330
  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, concat("Used ", skill_name, ". New amount: ", text.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, 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, 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 item.getAir();
  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 = concat("§fBought: §cNo §f(Permanent)");
  126. } else {
  127. text_property = concat("§fBought: §aYes §f(Permanent)");
  128. }
  129. } else {
  130. text_property = concat("§fAmount you have: §e", text.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. if(skill.isActivated(player_or_id, tech_name)) {
  141. tog = "§fToggleable: §aActive";
  142. } else {
  143. tog = "§fToggleable: §cInactive";
  144. }
  145. } else {
  146. tog = "§fNot toggleable";
  147. }
  148. skill_name = skill.getName(tech_name);
  149. item = read.item(skill[2], 1, concat("§e§o", skill_name), concat("§fCost: §e", text.number(skill[4])), skill[3], type, tog, text_property);
  150. return item;
  151. }
  152. function skill.getName(tech_name) {
  153. skill_list = skill.getList()
  154. for(i = 0; i < list.getSize(skill_list); i++) {
  155. array = list.getIndex(skill_list, i);
  156. temp_tech_name = array[1];
  157. if(temp_tech_name == tech_name) {
  158. return array[0];
  159. }
  160. }
  161. }
  162. function skill.getTechName(tech_name) {
  163. skill_list = skill.getList()
  164. for(i = 0; i < list.getSize(skill_list); i++) {
  165. array = list.getIndex(skill_list, i);
  166. temp_tech_name = array[1];
  167. if(temp_tech_name == tech_name) {
  168. return array[1];
  169. }
  170. }
  171. }
  172. function skill.getItem(tech_name) {
  173. skill_list = skill.getList()
  174. for(i = 0; i < list.getSize(skill_list); i++) {
  175. array = list.getIndex(skill_list, i);
  176. temp_tech_name = array[1];
  177. if(temp_tech_name == tech_name) {
  178. return array[2];
  179. }
  180. }
  181. }
  182. function skill.getDescription(tech_name) {
  183. skill_list = skill.getList()
  184. for(i = 0; i < list.getSize(skill_list); i++) {
  185. array = list.getIndex(skill_list, i);
  186. temp_tech_name = array[1];
  187. if(temp_tech_name == tech_name) {
  188. return array[3];
  189. }
  190. }
  191. }
  192. function skill.getCost(tech_name) {
  193. skill_list = skill.getList()
  194. for(i = 0; i < list.getSize(skill_list); i++) {
  195. array = list.getIndex(skill_list, i);
  196. temp_tech_name = array[1];
  197. if(temp_tech_name == tech_name) {
  198. return array[4];
  199. }
  200. }
  201. }
  202. function skill.isPermanent(tech_name) {
  203. skill_list = skill.getList()
  204. for(i = 0; i < list.getSize(skill_list); i++) {
  205. array = list.getIndex(skill_list, i);
  206. temp_tech_name = array[1];
  207. if(temp_tech_name == tech_name) {
  208. return array[5];
  209. }
  210. }
  211. }
  212. function skill.isActive(tech_name) {
  213. skill_list = skill.getList()
  214. for(i = 0; i < list.getSize(skill_list); i++) {
  215. array = list.getIndex(skill_list, i);
  216. temp_tech_name = array[1];
  217. if(temp_tech_name == tech_name) {
  218. return array[6];
  219. }
  220. }
  221. }
  222. function skill.isToggleable(tech_name) {
  223. skill_list = skill.getList()
  224. for(i = 0; i < list.getSize(skill_list); i++) {
  225. array = list.getIndex(skill_list, i);
  226. temp_tech_name = array[1];
  227. if(temp_tech_name == tech_name) {
  228. return array[7];
  229. }
  230. }
  231. }
  232. function skill.getCooldown(tech_name) {
  233. skill_list = skill.getList()
  234. for(i = 0; i < list.getSize(skill_list); i++) {
  235. array = list.getIndex(skill_list, i);
  236. temp_tech_name = array[1];
  237. if(temp_tech_name == tech_name) {
  238. return array[8];
  239. }
  240. }
  241. }
  242. function skill.getMana(tech_name) {
  243. skill_list = skill.getList()
  244. for(i = 0; i < list.getSize(skill_list); i++) {
  245. array = list.getIndex(skill_list, i);
  246. temp_tech_name = array[1];
  247. if(temp_tech_name == tech_name) {
  248. return array[9];
  249. }
  250. }
  251. }
  252. function skill.getTime(tech_name) {
  253. skill_list = skill.getList()
  254. for(i = 0; i < list.getSize(skill_list); i++) {
  255. array = list.getIndex(skill_list, i);
  256. temp_tech_name = array[1];
  257. if(temp_tech_name == tech_name) {
  258. return array[10];
  259. }
  260. }
  261. }
  262. 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) {
  263. inv = inv.new("333333333333333333");
  264. inv.setItem(inv, 0, skill.getShopItem(player, tech_name1));
  265. inv.setItem(inv, 1, skill.getShopItem(player, tech_name2));
  266. inv.setItem(inv, 2, skill.getShopItem(player, tech_name3));
  267. inv.setItem(inv, 3, skill.getShopItem(player, tech_name4));
  268. inv.setItem(inv, 4, skill.getShopItem(player, tech_name5));
  269. inv.setItem(inv, 5, skill.getShopItem(player, tech_name6));
  270. inv.setItem(inv, 6, skill.getShopItem(player, tech_name7));
  271. inv.setItem(inv, 7, skill.getShopItem(player, tech_name8));
  272. inv.setItem(inv, 8, skill.getShopItem(player, tech_name9));
  273. inv.setItem(inv, 9, skill.getShopItem(player, tech_name10));
  274. inv.setItem(inv, 10, skill.getShopItem(player, tech_name11));
  275. inv.setItem(inv, 11, skill.getShopItem(player, tech_name12));
  276. inv.setItem(inv, 12, skill.getShopItem(player, tech_name13));
  277. inv.setItem(inv, 13, skill.getShopItem(player, tech_name14));
  278. inv.setItem(inv, 14, skill.getShopItem(player, tech_name15));
  279. inv.setItem(inv, 15, skill.getShopItem(player, tech_name16));
  280. inv.setItem(inv, 16, skill.getShopItem(player, tech_name17));
  281. inv.setItem(inv, 17, skill.getShopItem(player, tech_name18));
  282. inv.open(inv, player, "Skillshop");
  283. }
  284. function skill.showAll(from_player_or_id, to_player) {
  285. inv = inv.new("333333333333333333333333333");
  286. skill_list = skill.getList()
  287. for(i = 0; i < list.getSize(skill_list); i++) {
  288. a = list.getIndex(skill_list, i);
  289. tech_name = a[1];
  290. inv.setItem(inv, i, skill.getShopItem(from_player_or_id, tech_name));
  291. }
  292. from_player_id = player.getValidId(from_player_or_id);
  293. if(from_player_id == player.getValidId(to_player)) {
  294. inv_name = "Skills";
  295. } else {
  296. inv_name = concat("Skills von ", player.getNameFromId(from_player_id));
  297. }
  298. inv.open(inv, to_player, inv_name);
  299. }