123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330 |
- /*
- 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, concat("Used ", skill_name, ". New amount: ", text.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, concat(tech_name, ".active"), true);
- }
- function skill.setActivated(player_or_id, tech_name, bool) {
- config = playerdata.getSurvival(player_or_id);
- config.set(config, 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 item.getAir();
- }
- skill = skill.get(tech_name);
- amount = skill.getAmount(player_or_id, tech_name);
- permanent = skill[5];
- if(permanent) {
- if(amount == 0) {
- text_property = concat("§fBought: §cNo §f(Permanent)");
- } else {
- text_property = concat("§fBought: §aYes §f(Permanent)");
- }
- } else {
- text_property = concat("§fAmount you have: §e", text.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);
- item = read.item(skill[2], 1, concat("§e§o", skill_name), concat("§fCost: §e", text.number(skill[4])), skill[3], type, tog, text_property);
- 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(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[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("333333333333333333");
- inv.setItem(inv, 0, skill.getShopItem(player, tech_name1));
- inv.setItem(inv, 1, skill.getShopItem(player, tech_name2));
- inv.setItem(inv, 2, skill.getShopItem(player, tech_name3));
- inv.setItem(inv, 3, skill.getShopItem(player, tech_name4));
- inv.setItem(inv, 4, skill.getShopItem(player, tech_name5));
- inv.setItem(inv, 5, skill.getShopItem(player, tech_name6));
- inv.setItem(inv, 6, skill.getShopItem(player, tech_name7));
- inv.setItem(inv, 7, skill.getShopItem(player, tech_name8));
- inv.setItem(inv, 8, skill.getShopItem(player, tech_name9));
- inv.setItem(inv, 9, skill.getShopItem(player, tech_name10));
- inv.setItem(inv, 10, skill.getShopItem(player, tech_name11));
- inv.setItem(inv, 11, skill.getShopItem(player, tech_name12));
- inv.setItem(inv, 12, skill.getShopItem(player, tech_name13));
- inv.setItem(inv, 13, skill.getShopItem(player, tech_name14));
- inv.setItem(inv, 14, skill.getShopItem(player, tech_name15));
- inv.setItem(inv, 15, skill.getShopItem(player, tech_name16));
- inv.setItem(inv, 16, skill.getShopItem(player, tech_name17));
- inv.setItem(inv, 17, skill.getShopItem(player, tech_name18));
- inv.open(inv, player, "Skillshop");
- }
- function skill.showAll(from_player_or_id, to_player) {
- inv = inv.new("333333333333333333333333333");
- skill_list = skill.getList()
- for(i = 0; i < list.getSize(skill_list); i++) {
- a = list.getIndex(skill_list, i);
- tech_name = a[1];
- inv.setItem(inv, i, skill.getShopItem(from_player_or_id, tech_name));
- }
- from_player_id = player.getValidId(from_player_or_id);
- if(from_player_id == player.getValidId(to_player)) {
- inv_name = "Skills";
- } else {
- inv_name = concat("Skills von ", player.getNameFromId(from_player_id));
- }
- inv.open(inv, to_player, inv_name);
- }
|