123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387 |
- /*
- Rückgabewerte:
- 0 ...... skill executed
- 1 ...... skill not existing
- 2 ...... skill already active
- 3 ...... not enough
- 4 ...... cooldown not reached
- */
- function executeSkill(player, tech_name) {
- if(!skill.exists(tech_name)) {
- return 1;
- }
- if(skill.isInUse(player, tech_name)) {
- return 2;
- }
- if(skill.hasEnough(player, tech_name)) {
- return 3;
- }
- if(skill.isTimed(tech_name)) {
- skill_time = skill.getTime(tech_name) * 20;
- skill_name = skill.getTime(tech_name);
- id = 50 + skill.getIndex(tech_name);
- status.addTimed(player, id, skill_time, skill_name);
- data.setTimer(player, tech_name, skill_time);
- }
- skill.subAmount(player, tech_name, 1);
- skill.msg(player, tech_name);
- ignoreGoto(tech_name);
- return 1;
-
- @skill.fly10min
- player.setFly(player, true);
- return 0;
- }
- function skill.isTimed(tech_name) {
- return skill.getTime == null;
- }
- function skill.isInUse(player, tech_name) {
- return data.getTimer(player, tech_name) > 0;
- }
- function skill.hasEnough(player, tech_name) {
- return skill.getAmount(player, tech_name) > 0;
- }
- function skill.msg(player, tech_name) {
- skill_name = skill.getName(tech_name);
- msg.prefix(player, prefix_skill, string.concat("Used ", skill_name, ". New amount: ", string.number(skill.getAmount(player, tech_name))));
- }
- function skill.getAmount(player_or_id, tech_name) {
- config = playerdata.getSurvival(player_or_id);
- return config.getDouble(config, tech_name, 0);
- }
- function skill.setAmount(player_or_id, tech_name, amount) {
- config = playerdata.getSurvival(player_or_id);
- config.set(config, tech_name, amount);
- config.saveAsync(config);
- }
- function skill.addAmount(player_or_id, tech_name, amount) {
- config = playerdata.getSurvival(player_or_id);
- config.set(config, tech_name, config.getDouble(config, tech_name, 0) + amount);
- config.saveAsync(config);
- }
- function skill.subAmount(player_or_id, tech_name, amount) {
- config = playerdata.getSurvival(player_or_id);
- config.set(config, tech_name, config.getDouble(config, tech_name, 0) - amount);
- config.saveAsync(config);
- }
- function skill.isActivated(player_or_id, tech_name) {
- config = playerdata.getSurvival(player_or_id);
- return config.getBool(config, string.concat(tech_name, ".active"), true);
- }
- function skill.setActivated(player_or_id, tech_name, bool) {
- config = playerdata.getSurvival(player_or_id);
- config.set(config, string.concat(tech_name, ".active"), bool);
- }
- function skill.add(skill_name, tech_name, item, description, cost, permanent, active, toggleable, cooldown, mana, time) {
- skill = array.new(11);
- skill[0] = skill_name;
- skill[1] = tech_name;
- skill[2] = item;
- skill[3] = description;
- skill[4] = cost;
- skill[5] = permanent;
- skill[6] = active;
- skill[7] = toggleable;
- skill[8] = cooldown; //s
- skill[9] = mana;
- skill[10] = time; //s
- list.add(skill.getList(), skill);
- }
- function skill.getList() {
- return getScriptVar("skills");
- }
- function skill.exists(tech_name) {
- return skill.get(tech_name) == null;
- }
- function skill.get(tech_name) {
- skill_list = skill.getList();
- for(i = 0; i < list.getSize(skill_list); i++) {
- array = list.getIndex(skill_list, i);
- temp_tech_name = array[1];
- if(temp_tech_name == tech_name) {
- return array;
- }
- }
- }
- function skill.getIndex(tech_name) {
- skill_list = skill.getList();
- for(i = 0; i < list.getSize(skill_list); i++) {
- array = list.getIndex(skill_list, i);
- temp_tech_name = array[1];
- if(temp_tech_name == tech_name) {
- return i;
- }
- }
- return -1;
- }
- function skill.getShopItem(player_or_id, tech_name) {
- if(tech_name == null) {
- return null;
- }
- skill = skill.get(tech_name);
- amount = skill.getAmount(player_or_id, tech_name);
- permanent = skill[5];
- if(permanent) {
- if(amount == 0) {
- text_property = string.concat("§fBought: §cNo §f(Permanent)");
- } else {
- text_property = string.concat("§fBought: §aYes §f(Permanent)");
- }
- } else {
- text_property = string.concat("§fAmount you have: §e", string.number(amount));
- }
- active = skill[6];
- if(active) {
- type = "§fActive skill";
- } else {
- type = "§fPassive skill";
- }
- toggleable = skill[7];
- if(toggleable) {
- tog = "§fToggleable";
- } else {
- tog = "§fNot toggleable";
- }
- skill_name = skill.getName(tech_name);
- lore_list = list.new();
- list.add(lore_list, text.new(string.concat("§fCost: ", money.getString(skill[4]))));
- list.transfer(string.intelligentSplit(skill[3]), lore_list);
- list.add(lore_list, text.new(type));
- list.add(lore_list, text.new(tog));
- list.add(lore_list, text.new(text_property));
- item = item.create(skill[2], 1, string.concat("§e§o", skill_name), lore_list);
- item.addFlag(item, "HIDE_ATTRIBUTES");
- return item;
- }
- function skill.getSettingsItem(player_or_id, tech_name) {
- if(tech_name == null) {
- return null;
- }
- skill = skill.get(tech_name);
- amount = skill.getAmount(player_or_id, tech_name);
- permanent = skill[5];
- if(permanent) {
- if(amount == 0) {
- text_property = string.concat("§fBought: §cNo §f(Permanent)");
- } else {
- text_property = string.concat("§fBought: §aYes §f(Permanent)");
- }
- } else {
- text_property = string.concat("§fAmount you have: §e", string.number(amount));
- }
- active = skill[6];
- if(active) {
- type = "§fActive skill";
- } else {
- type = "§fPassive skill";
- }
- toggleable = skill[7];
- if(toggleable) {
- if(skill.isActivated(player_or_id, tech_name)) {
- tog = "§fToggleable: §aActive";
- } else {
- tog = "§fToggleable: §cInactive";
- }
- } else {
- tog = "§fNot toggleable";
- }
- skill_name = skill.getName(tech_name);
- lore_list = list.new();
- list.transfer(string.intelligentSplit(skill[3]), lore_list);
- list.add(lore_list, text.new(type));
- list.add(lore_list, text.new(tog));
- list.add(lore_list, text.new(text_property));
- item = item.create(skill[2], 1, string.concat("§e§o", skill_name), lore_list);
- item.addFlag(item, "HIDE_ATTRIBUTES");
- return item;
- }
- function skill.getName(tech_name) {
- skill_list = skill.getList();
- for(i = 0; i < list.getSize(skill_list); i++) {
- array = list.getIndex(skill_list, i);
- temp_tech_name = array[1];
- if(temp_tech_name == tech_name) {
- return array[0];
- }
- }
- }
- function skill.getTechName(skill_name) {
- skill_list = skill.getList();
- for(i = 0; i < list.getSize(skill_list); i++) {
- array = list.getIndex(skill_list, i);
- temp_skill_name = array[0];
- if(temp_skill_name == skill_name) {
- return array[1];
- }
- }
- }
- function skill.getItem(tech_name) {
- skill_list = skill.getList();
- for(i = 0; i < list.getSize(skill_list); i++) {
- array = list.getIndex(skill_list, i);
- temp_tech_name = array[1];
- if(temp_tech_name == tech_name) {
- return array[2];
- }
- }
- }
- function skill.getDescription(tech_name) {
- skill_list = skill.getList();
- for(i = 0; i < list.getSize(skill_list); i++) {
- array = list.getIndex(skill_list, i);
- temp_tech_name = array[1];
- if(temp_tech_name == tech_name) {
- return array[3];
- }
- }
- }
- function skill.getCost(tech_name) {
- skill_list = skill.getList();
- for(i = 0; i < list.getSize(skill_list); i++) {
- array = list.getIndex(skill_list, i);
- temp_tech_name = array[1];
- if(temp_tech_name == tech_name) {
- return array[4];
- }
- }
- }
- function skill.isPermanent(tech_name) {
- skill_list = skill.getList();
- for(i = 0; i < list.getSize(skill_list); i++) {
- array = list.getIndex(skill_list, i);
- temp_tech_name = array[1];
- if(temp_tech_name == tech_name) {
- return array[5];
- }
- }
- }
- function skill.isActive(tech_name) {
- skill_list = skill.getList();
- for(i = 0; i < list.getSize(skill_list); i++) {
- array = list.getIndex(skill_list, i);
- temp_tech_name = array[1];
- if(temp_tech_name == tech_name) {
- return array[6];
- }
- }
- }
- function skill.isToggleable(tech_name) {
- skill_list = skill.getList();
- for(i = 0; i < list.getSize(skill_list); i++) {
- array = list.getIndex(skill_list, i);
- temp_tech_name = array[1];
- if(temp_tech_name == tech_name) {
- return array[7];
- }
- }
- }
- function skill.getCooldown(tech_name) {
- skill_list = skill.getList();
- for(i = 0; i < list.getSize(skill_list); i++) {
- array = list.getIndex(skill_list, i);
- temp_tech_name = array[1];
- if(temp_tech_name == tech_name) {
- return array[8];
- }
- }
- }
- function skill.getMana(tech_name) {
- skill_list = skill.getList();
- for(i = 0; i < list.getSize(skill_list); i++) {
- array = list.getIndex(skill_list, i);
- temp_tech_name = array[1];
- if(temp_tech_name == tech_name) {
- return array[9];
- }
- }
- }
- function skill.getTime(tech_name) {
- skill_list = skill.getList();
- for(i = 0; i < list.getSize(skill_list); i++) {
- array = list.getIndex(skill_list, i);
- temp_tech_name = array[1];
- if(temp_tech_name == tech_name) {
- return array[10];
- }
- }
- }
- 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) {
- inv = inv.new("222222222222222222", text.new("Skillshop"));
- skillshop.setItem(inv, 0, player, tech_name1);
- skillshop.setItem(inv, 1, player, tech_name2);
- skillshop.setItem(inv, 2, player, tech_name3);
- skillshop.setItem(inv, 3, player, tech_name4);
- skillshop.setItem(inv, 4, player, tech_name5);
- skillshop.setItem(inv, 5, player, tech_name6);
- skillshop.setItem(inv, 6, player, tech_name7);
- skillshop.setItem(inv, 7, player, tech_name8);
- skillshop.setItem(inv, 8, player, tech_name9);
- skillshop.setItem(inv, 9, player, tech_name10);
- skillshop.setItem(inv, 10, player, tech_name11);
- skillshop.setItem(inv, 11, player, tech_name12);
- skillshop.setItem(inv, 12, player, tech_name13);
- skillshop.setItem(inv, 13, player, tech_name14);
- skillshop.setItem(inv, 14, player, tech_name15);
- skillshop.setItem(inv, 15, player, tech_name16);
- skillshop.setItem(inv, 16, player, tech_name17);
- skillshop.setItem(inv, 17, player, tech_name18);
- inv.open(inv, player);
- }
- function skillshop.setItem(inv, index, player, tech_name) {
- item = skill.getShopItem(player, tech_name);
- if(item != null) {
- inv.setItem(inv, index, item);
- }
- }
- function skill.showAll(from_player_or_id, to_player) {
- from_player_id = player.getValidId(from_player_or_id);
- if(from_player_id == player.getValidId(to_player)) {
- inv_name = "Skills";
- } else {
- inv_name = string.concat("Skills from ", player.getNameFromId(from_player_id));
- }
-
- inv = inv.new("222222222222222222222222222", text.new(inv_name));
- skill_list = skill.getList();
- for(i = 0; i < list.getSize(skill_list); i++) {
- a = list.getIndex(skill_list, i);
- tech_name = a[1];
- item = skill.getSettingsItem(from_player_or_id, tech_name);
- if(item != null) {
- inv.setItem(inv, i, item);
- }
- }
- inv.open(inv, to_player);
- }
|