Данный сервис позволяет получить геройство. Код: package services.Hero; package services.Hero; import tenjs.common.ThreadPoolManager; import tenjs.config.ConfigValue; import tenjs.extensions.multilang.CustomMessage; import tenjs.extensions.scripts.Functions; import tenjs.extensions.scripts.ScriptFile; import tenjs.gameserver.common.DifferentMethods; import tenjs.gameserver.model.L2ObjectTasks; import tenjs.gameserver.model.L2Player; import tenjs.gameserver.model.entity.Hero; import tenjs.gameserver.serverpackets.SkillList; import tenjs.gameserver.serverpackets.SocialAction; import tenjs.gameserver.tables.SkillTable; import tenjs.gameserver.templates.StatsSet; import tenjs.util.Files; import tenjs.util.GArray; import tenjs.util.Util; public class BuyHero extends Functions implements ScriptFile { public void list() { L2Player player = (L2Player) getSelf(); String html; if(!player.isHero() && !player.getVarB("HeroPremium")) { html = Files.read("data/scripts/services/Hero/index.htm", player); String add = new String(); for(int i = 0; i < ConfigValue.CBHeroItem.length; i++) add += "<button value=\"" + new CustomMessage("communityboard.cabinet.hero.button", player).addNumber(ConfigValue.CBHeroTime[i]).addString(DifferentMethods.declension(player, ConfigValue.CBHeroTime[i], "Days")) + "\" action=\"bypass -h scripts_services.Hero.BuyHero:get " + i + "\" width=200 height=29 back=\"L2UI_CT1.OlympiadWnd_DF_HeroConfirm_Down\" fore=\"L2UI_CT1.OlympiadWnd_DF_HeroConfirm\"><br1>" + new CustomMessage("scripts.services.cost", player).addString(String.valueOf(Util.formatAdena(ConfigValue.CBHeroItemPrice[i]))).addItemName(ConfigValue.CBHeroItem[i]) + ""; html = html.replaceFirst("%toreplace%", add); } else { html = Files.read("data/scripts/services/Hero/already.htm", player); player.sendMessage(new CustomMessage("scripts.services.Hero.ishero", player)); } show(html, player); } public void get(String[] param) { L2Player player = (L2Player) getSelf(); int var = Integer.parseInt(param[0]); if(!player.isHero() && !player.getVarB("HeroPremium")) { if(DifferentMethods.getPay(player, ConfigValue.CBHeroItem[var], ConfigValue.CBHeroItemPrice[var], true)) { StatsSet hero = new StatsSet(); hero.set("class_id", player.getBaseClassId()); hero.set("char_id", player.getObjectId()); hero.set("char_name", player.getName()); /*GArray<StatsSet> heroesToBe = new GArray<StatsSet>(); heroesToBe.add(hero); Hero.getInstance().computeNewHeroes(heroesToBe);*/ player.setHero(true, 2); long CBHeroTime = ConfigValue.CBHeroTime[var]; long expire = System.currentTimeMillis() + (1000L * 60 * 60 * 24 * CBHeroTime); player.setVar("HeroPremium", String.valueOf(expire), expire); player.addSkill(SkillTable.getInstance().getInfo(395, 1)); player.addSkill(SkillTable.getInstance().getInfo(396, 1)); player.addSkill(SkillTable.getInstance().getInfo(1374, 1)); player.addSkill(SkillTable.getInstance().getInfo(1375, 1)); player.addSkill(SkillTable.getInstance().getInfo(1376, 1)); player.sendPacket(new SkillList(player)); if(player.isHero()) player.broadcastPacket2(new SocialAction(player.getObjectId(), 16)); player.broadcastUserInfo(true); player._heroTask = ThreadPoolManager.getInstance().schedule(new L2ObjectTasks.UnsetHero(player, 2), 1000L * 60 * 60 * 24 * CBHeroTime); } } } public void howtogetcol() { show("data/scripts/services/howtogetcol.htm", (L2Player) getSelf()); } public void onLoad() { _log.info("Loaded Service: Rate bonus"); } public void onReload() {} public void onShutdown() {} }
не знаю как у Вас, но в first-team например вот так это реализовано Код: Hero.addSkills(player); Вопрос, зачем 5 раз подряд вызывать данный метод?
по факту всё то делают эти дауны тем или иным образом не писалось ими никак)) а по факту Hero.addSkills(player); вызовет всё те же вызовы, пять раз одной функции с разными параметрами)
Зачем выдавать за своё то что в шаре овер дохрена времени? И написано так что глаз начинает дёргаться?