evillord 14 Опубликовано 11 июля, 2013 Ребят на сборке есть отличная комюнька с бафером , но как мне добавить пару бафов туда ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
mwmkr 268 Опубликовано 11 июля, 2013 сборка, конфиги? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
evillord 14 Опубликовано 11 июля, 2013 Сборка - Rebellion High-Five rev 688 . Имеются исходы Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
whаtever 203 Опубликовано 11 июля, 2013 Если я не ошибаюсь, то делается это через байпасс в той же камьюнити. Скинь строку какого нибудь бафа из камьюнити и конфиг связанный с ней Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
evillord 14 Опубликовано 11 июля, 2013 (изменено) Взял с html --> <button value="Song of Earth" action="bypass _bbsbuff;buff;264;1; $tvari" width=150 height=18 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"> Конфиг #====================================================== # Настройки Community Board #====================================================== AllowCommunityBoard = True BBSDefault = _bbshome # Дефолт link комьюнити (Расширитель под ПВП - "communityPVP") # или другой по вашему желанию BBSHomeDir = scripts/services/communityPVP/ #====================================================== Изменено 11 июля, 2013 пользователем evillord Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
whаtever 203 Опубликовано 11 июля, 2013 <button value="Song of Earth" action="bypass _bbsbuff;buff;264;1; $tvari" width=150 height=18 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"> 264 - id бафа 1 - уровень Еще, если не ошибаюсь, то нужно в конфиг ввести список допустимых бафов в камьюнити 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
mwmkr 268 Опубликовано 11 июля, 2013 <button value="название скила" action="bypass _bbsbuff;buff; id скила ; lvl скила ; $tvari" width=150 height=18 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"> копируй и добавляй по своему усмотрению нужные бафы 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
evillord 14 Опубликовано 11 июля, 2013 Спасибо . А то бухал , забыл многое уже . Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
evillord 14 Опубликовано 12 июля, 2013 (изменено) Пошарил я в html так толком не нашёл что искал . В 1 нашёл только пару сонгов и денсов и все у меня в бафере комюнити есть раздел "Все бафы" , "Атака","Защита","Разное" мне нужно добавить баф в "Разное" но в Html нет такого . Я поискал и нашёл в скриптах в разделе комюнити вот такой файлик CommunityBuffer.java package services.community; import l2r.commons.dbutils.DbUtils; import l2r.commons.lang.ArrayUtils; import l2r.gameserver.Config; import l2r.gameserver.data.htm.HtmCache; import l2r.gameserver.database.DatabaseFactory; import l2r.gameserver.handler.bbs.CommunityBoardManager; import l2r.gameserver.handler.bbs.ICommunityBoardHandler; import l2r.gameserver.model.Effect; import l2r.gameserver.model.Playable; import l2r.gameserver.model.Player; import l2r.gameserver.model.Skill; import l2r.gameserver.network.serverpackets.ShowBoard; import l2r.gameserver.network.serverpackets.components.SystemMsg; import l2r.gameserver.scripts.Functions; import l2r.gameserver.scripts.ScriptFile; import l2r.gameserver.tables.SkillTable; import l2r.gameserver.utils.HtmlUtils; import l2r.gameserver.utils.Log; import l2r.gameserver.utils.Strings; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.*; import java.util.concurrent.CopyOnWriteArrayList; public class CommunityBuffer implements ScriptFile, ICommunityBoardHandler { private static final Logger _log = LoggerFactory.getLogger(CommunityBuffer.class); public static class BuffSet { public final CopyOnWriteArrayList skills = new CopyOnWriteArrayList(); public void addSkill(int skillid) { if(buffs.containsKey(skillid)) skills.add(buffs.get(skillid)); } } public static class Buff { public final Skill skill; public final String icon; public final int skill_id; public Buff(int id) { int lvl = SkillTable.getInstance().getBaseLevel(id); skill_id = id; skill = SkillTable.getInstance().getInfo(id, lvl); icon = skill.getIcon(); } } private static final HashMap> playerBuffSets = new HashMap>(); private static final HashMap buffs = new HashMap(); private static final BuffSet all = new BuffSet(); @Override public void onLoad() { playerBuffSets.clear(); buffs.clear(); all.skills.clear(); cleanUP(); for(int id : buff_ids) { buffs.put(id, new Buff(id)); all.addSkill(id); } _log.info("CommunityBuffer: Loaded " + buffs.size() + " buffs count.]"); if(Config.COMMUNITYBOARD_ENABLED && Config.BBS_BUFFER_ENABLED) CommunityBoardManager.getInstance().registerHandler(this); } @Override public void onReload() { playerBuffSets.clear(); buffs.clear(); all.skills.clear(); if(Config.COMMUNITYBOARD_ENABLED && Config.BBS_BUFFER_ENABLED) CommunityBoardManager.getInstance().removeHandler(this); } @Override public void onShutdown() {} @Override public String[] getBypassCommands() { return new String[] { "_cbbsbuffer" }; } @Override public void onBypassCommand(Player player, String bypass) { if (!checkPlayer(player)) return; String html = HtmCache.getInstance().getNotNull("scripts/services/communityPVP/pages/buffer/buff2.htm", player); String content = ""; if(bypass.startsWith("_cbbsbuffer")) { StringTokenizer bf = new StringTokenizer(bypass, " "); bf.nextToken(); String[] arg = new String[0]; while(bf.hasMoreTokens()) arg = ArrayUtils.add(arg, bf.nextToken()); content = BuffList(arg, player); } html = html.replace("%content%", content); ShowBoard.separateAndSend(html, player); } public static boolean checkPlayer(Player player) { if (!Config.BBS_BUFF_DEATH && (player.isDead() || player.isAlikeDead() || player.isFakeDeath())) { player.sendMessage(player.isLangRus() ? "В данный момент нельзя использовать Community Buffer" : "At this point you can not use Community Buffer"); return false; } if (!Config.BBS_BUFF_ACTION && (player.isCastingNow() || player.isInCombat() || player.isAttackingNow()) && (!player.isGM() && player.isInvisible())) { player.sendMessage(player.isLangRus() ? "В данный момент нельзя использовать Community Buffer" : "At this point you can not use Community Buffer"); return false; } if (!Config.BBS_BUFF_OLY && player.isInOlympiadMode()) { player.sendMessage(player.isLangRus() ? "Нельзя использовать Community Buffer находясь на стадионе Олимпиады" : "You can not use Community Buffer being on the Olympic Stadium"); return false; } if (!Config.BBS_BUFF_FLY && (player.isFlying() || player.isInFlyingTransform())) { player.sendMessage(player.isLangRus() ? "Нельзя использовать Community Buffer находясь в полёте" : "You can not use Community Buffer while in flight"); return false; } if (!Config.BBS_BUFF_VEICHLE && player.isInBoat()) { player.sendMessage(player.isLangRus() ? "Нельзя использовать Community Buffer находясь на борту корабля" : "You can not use Community Buffer while on board ship"); return false; } if (!Config.BBS_BUFF_MOUNTED && player.isMounted()) { player.sendMessage(player.isLangRus() ? "Нельзя использовать Community Buffer сидя на животном" : "You can not use Community Buffer sitting on the animal"); return false; } if (!Config.BBS_BUFF_CANT_MOVE && (player.isMovementDisabled() || player.isParalyzed() || player.isStunned() || player.isSleeping() || player.isRooted() || player.isImmobilized())) { player.sendMessage(player.isLangRus() ? "В данный момент нельзя использовать Community Buffer" : "At this point you can not use Community Buffer"); return false; } if (!Config.BBS_BUFF_STORE_MODE && (player.isInStoreMode() || player.isInTrade() || player.isInOfflineMode())) { player.sendMessage(player.isLangRus() ? "Во время трейда нельзя использовать Community Buffer" : "While trades can not use the Community Buffer"); return false; } if (!Config.BBS_BUFF_FISHING && player.isFishing()) { player.sendMessage(player.isLangRus() ? "Нельзя во время рыбалки использовать Community Buffer" : "Do not use while fishing Community Buffer"); return false; } if (!Config.BBS_BUFF_TEMP_ACTION && (player.isLogoutStarted() || player.isTeleporting())) { player.sendMessage(player.isLangRus() ? "В данный момент нельзя использовать Community Buffer" : "At this point you can not use Community Buffer"); return false; } if (!Config.BBS_BUFF_DUEL && player.isInDuel()) { player.sendMessage(player.isLangRus() ? "Во время дуэли нельзя использовать Community Buffer" : "During the duel, you can not use Community Buffer"); return false; } if (!Config.BBS_BUFF_CURSED && player.isCursedWeaponEquipped()) { player.sendMessage(player.isLangRus() ? "Владелец проклятого оружия не может использовать Community Buffer" : "The owner of the cursed weapons can not use the Community Buffer"); return false; } if (!Config.BBS_BUFF_PK && player.getKarma() > 0) { player.sendMessage(player.isLangRus() ? "Убийца игроков не может использовать Community Buffer" : "Killer players can not use the Community Buffer"); return false; } if (Config.BBS_BUFF_LEADER && !player.isClanLeader()) { player.sendMessage(player.isLangRus() ? "Community Buffer может использовать только лидер клана" : "Community Buffer can use only the clan leader"); return false; } if (Config.BBS_BUFF_NOBLE && !player.isNoble()) { player.sendMessage(player.isLangRus() ? "Community Buffer может использовать только Дворянин" : "Community Buffer can only use the Noble"); return false; } if (!Config.BBS_BUFF_TERITORY && player.isOnSiegeField()) { player.sendMessage(player.isLangRus() ? "Community Buffer нельзя использовать во время осады" : "Community Buffer can not be used during the siege"); return false; } if (Config.BBS_BUFF_PEACEZONE_ONLY && !player.isInZonePeace()) { player.sendMessage(player.isLangRus() ? "Community Buffer можно использовать только в мирной зоне" : "Community Buffer can be used only in a peaceful area"); return false; } if(player.getVarInt("jailed") > 0) { player.sendMessage(player.isLangRus() ? "Community Buffer нельзя использовать в тюрьме" : "Community Buffer can not be used in prison"); return false; } return true; } @Override public void onWriteCommand(Player player, String bypass, String arg1, String arg2, String arg3, String arg4, String arg5) {} public static String htmlButton(String value, int width, int height, Object... args) { String action = "bypass _cbbsbuffer"; for(Object arg : args) action += " " + arg.toString(); return HtmlUtils.htmlButton(value, action, width, height); } private static boolean takeItemsAndBuff(Playable player, List buffs, boolean toPet) { int needCount = Config.BBS_BUFF_ITEM_COUNT * buffs.size(); if(player.getLevel() > Config.BBS_BUFF_FREE_LVL && Functions.getItemCount(player, Config.BBS_BUFF_ITEM_ID) < needCount) return false; Playable target = toPet ? player.getPet() : player; if(target != null) { try { if(player.getLevel() > Config.BBS_BUFF_FREE_LVL) Functions.removeItem(player, Config.BBS_BUFF_ITEM_ID, needCount); } catch(Exception e) { return false; } for(Buff nextbuff : buffs) { if(nextbuff.skill.isMusic()) //songs and dances nextbuff.skill.getEffects(target, target, false, false, Config.BBS_BUFF_TIME_MUSIC * 1000, Config.BBS_BUFF_TIME_MOD_MUSIC, false); //for special skill that last less than 20min else if(nextbuff.skill.getId() == 1355 || nextbuff.skill.getId() == 1356 || nextbuff.skill.getId() == 1357 || nextbuff.skill.getId() == 1363 || nextbuff.skill.getId() == 1413 || nextbuff.skill.getId() == 1414) nextbuff.skill.getEffects(target, target, false, false, Config.BBS_BUFF_TIME_SPECIAL * 1000, Config.BBS_BUFF_TIME_MOD_SPECIAL, false); //normal buff else nextbuff.skill.getEffects(target, target, false, false, Config.BBS_BUFF_TIME * 1000, Config.BBS_BUFF_TIME_MOD, false); } } return true; } private static int getSkillIdx(BuffSet set, int skill_id) { for(int i = 0; i < set.skills.size(); i++) if(set.skills.get(i).skill_id == skill_id) return i; return -1; } private static String pageGet(Player player, String[] var) { boolean buffallset = var[1].equalsIgnoreCase("0") || var[1].equalsIgnoreCase("2"); String[] var2 = new String[var.length - (buffallset ? 1 : 2)]; System.arraycopy(var, var.length - var2.length, var2, 0, var2.length); List buffs_to_buff = new ArrayList(); if(buffallset) { String[] a = var[2].split("_"); int listid = a[0].equalsIgnoreCase("2") ? player.getObjectId() : 0; String name = Strings.joinStrings(" ", var, 3); String localized_name = name; HashMap sets = getBuffSets(listid); if(listid == 0) { String[] langs = name.split(";"); if(langs.length == 2) localized_name = langs[player.isLangRus() ? 1 : 0]; } if(!sets.containsKey(name)) if(player.isLangRus()) return " Набор '" + localized_name + "' не найден "; else return " '" + localized_name + "' set not found "; buffs_to_buff.addAll(sets.get(name).skills); } else buffs_to_buff.add(buffs.get(Integer.parseInt(var[2]))); if(!takeItemsAndBuff(player, buffs_to_buff, var[1].equalsIgnoreCase("2"))) player.sendPacket(SystemMsg.YOU_DO_NOT_HAVE_ENOUGH_REQUIRED_ITEMS); return pageList(player, var2); } private static final int pageRows = Config.BUFF_PAGE_ROWS; private static final int pageCols = Config.MAX_BUFF_PER_SET; private static final int pageMax = pageRows * pageCols; private static String pageList(Player player, String[] var) { String[] a = var[1].split("_"); int pageIdx = Integer.parseInt(a[1]); boolean _all = a[0].equalsIgnoreCase("0"); int listid = a[0].equalsIgnoreCase("2") ? player.getObjectId() : 0; String name = "Все баффы"; if(!player.isLangRus()) name = "All buffs"; String param1 = Strings.joinStrings(" ", var, 1); BuffSet set = all; String localized_name = name; if(!_all) { HashMap sets = getBuffSets(listid); name = Strings.joinStrings(" ", var, 2); localized_name = name; if(listid == 0) { String[] langs = name.split(";"); if(langs.length == 2) localized_name = langs[player.isLangRus() ? 1 : 0]; } if(!sets.containsKey(name)) if(player.isLangRus()) return " Набор '" + localized_name + "' не найден "; else return " '" + localized_name + "' set not found "; set = sets.get(name); } String pagePrev = pageIdx == 0 ? "" : htmlButton("&$543;", 80, 22, "list", param1.replaceFirst(var[1], a[0] + "_" + (pageIdx - 1))); String pageNext = ""; List tds = new ArrayList(); for(int i = pageIdx * pageMax; i < set.skills.size(); i++) { if(tds.size() == pageMax) { pageNext = htmlButton("&$544;", 80, 22, "list", param1.replaceFirst(var[1], a[0] + "_" + (pageIdx + 1))); break; } Buff _buff = set.skills.get(i); String buff_str = ""; buff_str += "" + htmlButton("$", 22, 32, "get", 1, _buff.skill_id, param1) + ""; if(player.isLangRus()) buff_str += "" + _buff.skill.getName() + " Уровень " + _buff.skill.getLevel() + ""; else buff_str += "" + _buff.skill.getName() + " Level " + _buff.skill.getLevel() + ""; tds.add(buff_str); } String result = ""; int cost; if(player.getLevel() > Config.BBS_BUFF_FREE_LVL) cost = set.skills.size() * Config.BBS_BUFF_ITEM_COUNT; else cost = 0; result += ""; String all = "All"; if(player.isLangRus()) all = "Все"; result += ""; if(!_all && pageNext.isEmpty() && pagePrev.isEmpty()) { if(player.isLangRus()) { result += ""; result += ""; } if(listid != 0) if(player.isLangRus()) result += ""; else result += ""; if(!pagePrev.isEmpty() || !pageNext.isEmpty()) { result += ""; result += ""; result += ""; } result += " " + localized_name + (!_all && pageNext.isEmpty() && pagePrev.isEmpty() ? " [" + all +": " + cost + " " + HtmlUtils.htmlItemName(Config.BBS_BUFF_ITEM_ID) + "]" : "") + " Себе: "; if(player.getPet() != null) result += " Питомцу: "; } else { result += " For me: "; if(player.getPet() != null) result += " For pet: "; } result += " "; if(player.isLangRus()) { result += htmlButton("Все", 50, 22, "get", 0, param1); if(player.getPet() != null) result += " " + htmlButton("Все", 50, 22, "get", 2, param1); } else { result += htmlButton("All", 50, 22, "get", 0, param1); if(player.getPet() != null) result += " " + htmlButton("All", 50, 22, "get", 2, param1); } result += " " + htmlButton("Редактировать", 125, 22, "editset", "edit", name) + " " + htmlButton("Edit", 125, 22, "editset", "edit", name) + " " + pagePrev + " Page: " + (pageIdx + 1) + " " + pageNext + " "; if(tds.size() > 0) { result += " "; result += formatTable(tds, pageCols, false); result += " "; } return result; } private static String pageEdit(Player player, String[] var) { int charId = player.getObjectId(); HashMap sets = getBuffSets(charId); String name = ""; if(var[1].equalsIgnoreCase("del")) { Log.add("BUFF\tУдален набор: " + name, "service_buff", player); name = Strings.joinStrings(" ", var, 2); deleteBuffSet(charId, name); sets.remove(name); return pageMain(player); } String result = ""; List tds = new ArrayList(); if(var[1].equalsIgnoreCase("delconf")) { name = Strings.joinStrings(" ", var, 2); if(player.isLangRus()) { tds.add(htmlButton("ДА", 50, 22, "editset", "del", name)); tds.add(htmlButton("НЕТ", 50, 22, "editset", "edit", name)); } else { tds.add(htmlButton("YES", 50, 22, "editset", "del", name)); tds.add(htmlButton("NO", 50, 22, "editset", "edit", name)); } if(player.isLangRus()) result += " Вы действительно желаете удалить набор: " + name + "? "; else result += " Are you sure you want to delete a set: " + name + "? "; result += formatTable(tds, 2, true); result += " "; return result; } BuffSet set = null; if(var[1].equalsIgnoreCase("new")) { if(sets.size() >= Config.MAX_SETS_PER_CHAR) if(player.isLangRus()) return " Вы достигли лимита наборов "; else return " You have reached the limit set "; name = trimHtml(Strings.joinStrings(" ", var, 2)); if(name.length() > 16) name = name.substring(0, 15); if(name.isEmpty() || name.equalsIgnoreCase(" ")) if(player.isLangRus()) return " Необходимо указать имя набора "; else return " You must specify the name of the set "; set = new BuffSet(); sets.put(name, set); updateBuffSet(charId, name, set); Log.add("BUFF\tСоздан набор: " + name, "service_buff", player); } else if(var[1].equalsIgnoreCase("edit")) { name = Strings.joinStrings(" ", var, 2); if(!sets.containsKey(name)) if(player.isLangRus()) return " Набор '" + name + "' не найден "; else return " '" + name + "' set not found "; set = sets.get(name); } else if(var[1].equalsIgnoreCase("rem")) { name = Strings.joinStrings(" ", var, 3); if(!sets.containsKey(name)) if(player.isLangRus()) return " Набор '" + name + "' не найден "; else return " '" + name + "' set not found "; set = sets.get(name); int skill_to_remove = Integer.valueOf(var[2]); int idx = getSkillIdx(set, skill_to_remove); if(idx != -1) set.skills.remove(idx); updateBuffSet(charId, name, set); } else if(var[1].equalsIgnoreCase("add")) { name = Strings.joinStrings(" ", var, var[2].equalsIgnoreCase("x") ? 4 : 3); if(!sets.containsKey(name)) if(player.isLangRus()) return " Набор '" + name + "' не найден "; else return " '" + name + "' set not found "; set = sets.get(name); if(var[2].equalsIgnoreCase("x")) { set.addSkill(Integer.valueOf(var[3])); updateBuffSet(charId, name, set); } else { int pageIdx = Integer.valueOf(var[2]); String pagePrev = pageIdx == 0 ? "" : htmlButton("&$543;", 80, 22, "editset", "add", pageIdx - 1, name); String pageNext = ""; for(int i = pageIdx * pageMax; i < all.skills.size(); i++) { if(tds.size() == pageMax) { pageNext = htmlButton("&$544;", 80, 22, "editset", "add", pageIdx + 1, name); break; } Buff _buff = all.skills.get(i); int idx = getSkillIdx(set, _buff.skill_id); if(idx != -1) continue; String buff_str = ""; buff_str += "" + htmlButton(">", 22, 32, "editset", "add", "x", _buff.skill_id, name) + ""; if(player.isLangRus()) buff_str += "" + _buff.skill.getName() + " Уровень " + _buff.skill.getLevel() + ""; else buff_str += "" + _buff.skill.getName() + " Level " + _buff.skill.getLevel() + ""; tds.add(buff_str); } result += ""; if(player.isLangRus()) result += ""; else result += ""; if(!pagePrev.isEmpty() || !pageNext.isEmpty()) { result += ""; result += ""; result += ""; } result += " Редактирование набора: " + name + " Set editing: " + name + " " + pagePrev + " Page: " + (pageIdx + 1) + " " + pageNext + " "; result += " "; result += formatTable(tds, pageCols, false); result += " "; return result; } } else return pageMain(player); for(int i = 0; i < set.skills.size(); i++) { Buff _buff = set.skills.get(i); String buff_str = ""; buff_str += "" + htmlButton("<", 22, 32, "editset", "rem", _buff.skill_id, name) + ""; if(player.isLangRus()) buff_str += "" + _buff.skill.getName() + " Уровень " + _buff.skill.getLevel() + ""; else buff_str += "" + _buff.skill.getName() + " Level " + _buff.skill.getLevel() + ""; tds.add(buff_str); } result += ""; if(player.isLangRus()) { result += ""; if(set.skills.size() < pageMax) result += ""; result += ""; result += ""; result += " Редактирование: " + name + " " + htmlButton("Добавить бафф", 130, 22, "editset", "add", 0, name) + " " + htmlButton("Удалить набор", 130, 22, "editset", "delconf", name) + " " + htmlButton("Возврат", 80, 22, "list", "2_0", name) + " "; } else { result += "Editing: " + name + ""; if(set.skills.size() < pageMax) result += "" + htmlButton("Add buff", 130, 22, "editset", "add", 0, name) + ""; result += "" + htmlButton("Delete set", 130, 22, "editset", "delconf", name) + ""; result += "" + htmlButton("Return", 80, 22, "list", "2_0", name) + ""; result += ""; } if(tds.size() > 0) { result += " "; result += formatTable(tds, pageCols, false); result += " "; } return result; } private static String pageMain(Player player) { String result = ""; result += ""; result += ""; result += " Выберите категорию: "; result += htmlButton(player.isLangRus() ? "Все Баффы" : "All Buffs", 175, 25, "list", "0_0") + " "; HashMap sets = getBuffSets(0); for(String setname : sets.keySet()) { String name = setname; String[] langs = setname.split(";"); if(langs.length == 2) name = langs[player.isLangRus() ? 1 : 0]; result += htmlButton(name, 175, 25, "list", "1_0", setname) + " "; } if (Config.BBS_BUFF_ALLOW_CANCEL || Config.BBS_BUFF_ALLOW_HEAL) { result += " Выберите действие: "; if (Config.BBS_BUFF_ALLOW_HEAL) result += htmlButton(player.isLangRus() ? "Восстановить статы" : "Reset stats", 175, 25, "heal") + " "; if (Config.BBS_BUFF_ALLOW_CANCEL) result += htmlButton(player.isLangRus() ? "Сбросить бафы" : "Cancel", 175, 25, "cancel") + " "; } result += " "; result += player.isLangRus() ? "Новый профиль: " : "New profile: "; result += player.isLangRus() ? "Введите название: " : "Enter name: "; result += " "; result += htmlButton(player.isLangRus() ? "Сохранить" : "Save", 75, 25, "save", "$name") + " "; result += " "; result += player.isLangRus() ? "Ваши наборы" : "Your sets"; result += " "; result += player.isLangRus() ? "Выберите цель: " : "Select target: "; if (player.getPet() != null) result += " "; else result += " "; result += " "; result += player.isLangRus() ? "Выберите набор:" : "Select set:"; sets = getBuffSets(player.getObjectId()); String sets_text = ""; int i = 0; for(String setname : sets.keySet()) { sets_text = (i != 0 ? sets_text + ";" : "") + setname; i++; } result += " "; result += player.isLangRus() ? "Выберите действие: " : "Select action: "; result += " "; result += htmlButton(player.isLangRus() ? "Наложить" : "Apply", 75, 25, "apply", "$cheme", "$trg"); result += " "; result += htmlButton(player.isLangRus() ? "Удалить" : "Delete", 75, 25, "delete", "$cheme"); result += " "; return result; } public String BuffList(String[] var, Player player) { if(player.isLangRus()) { if(player.isInOlympiadMode()) return "Эта функция недоступна на олимпиаде"; if(player.isInCombat()) return "Эта функция недоступна во время боя"; } else { if(player.isInOlympiadMode()) return "This feature is not available at the Olympiad Game"; if(player.isInCombat()) return "This feature is not available during the battle"; } if(var[0].equalsIgnoreCase("get")) return pageGet(player, var); if(var[0].equalsIgnoreCase("list")) return pageList(player, var); if(var[0].equalsIgnoreCase("editset") && var.length > 1) return pageEdit(player, var); if(var[0].equalsIgnoreCase("save") && var.length > 1) { int charId = player.getObjectId(); HashMap sets = getBuffSets(charId); String name = ""; BuffSet set = null; if(sets.size() >= Config.MAX_SETS_PER_CHAR) if(player.isLangRus()) return " Вы достигли лимита наборов "; else return " You have reached the limit set "; name = var[1].replace(" ", ""); if(name.length() > 16) name = name.substring(0, 15); if(name.isEmpty() || name.equalsIgnoreCase(" ")) if(player.isLangRus()) return " Необходимо указать имя набора "; else return " You must specify the name of the set "; if(sets.containsKey(name)) if(player.isLangRus()) return " Набор '" + name + "' уже существует "; else return " Set '" + name + "' already exists "; set = new BuffSet(); if (!Config.BUFF_MANUAL_EDIT_SETS) for(Effect e : player.getEffectList().getAllEffects()) set.addSkill(e.getSkill().getId()); sets.put(name, set); updateBuffSet(charId, name, set); Log.add("BUFF\tСоздан набор: " + name, "service_buff", player); return pageMain(player); } if(var[0].equalsIgnoreCase("apply") && var.length > 1) { List buffs_to_buff = new ArrayList(); String name; String trg; try { name = var[1].trim(); trg = var[2].trim(); } catch (ArrayIndexOutOfBoundsException error) { return " Неверное имя набора } HashMap sets = getBuffSets(player.getObjectId()); if(!sets.containsKey(name)) if(player.isLangRus()) return " Набор '" + name + "' не найден "; else return " '" + name + "' set not found "; buffs_to_buff.addAll(sets.get(name).skills); if(!takeItemsAndBuff(player, buffs_to_buff, trg.equalsIgnoreCase("питомец") || trg.equalsIgnoreCase("pet"))) player.sendPacket(SystemMsg.YOU_DO_NOT_HAVE_ENOUGH_REQUIRED_ITEMS); return pageMain(player); } if(var[0].equalsIgnoreCase("delete") && var.length > 1) { int charId = player.getObjectId(); HashMap sets = getBuffSets(charId); String name = ""; Log.add("BUFF\tУдален набор: " + name, "service_buff", player); name = Strings.joinStrings(" ", var, 1); deleteBuffSet(charId, name); sets.remove(name); return pageMain(player); } if(var[0].equalsIgnoreCase("heal")) { if (Config.BBS_BUFF_ALLOW_HEAL) if (player.isInZonePeace()) { player.setCurrentCp(player.getMaxCp()); player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); player.sendMessage(player.isLangRus() ? "Статы успешно восстановлены" : "Stats successfully restored"); } else player.sendMessage(player.isLangRus() ? "Восстанавливать статы можно только в мирной зоне" : "To restore stats can only be in a peaceful area"); else player.sendMessage(player.isLangRus() ? "Функция восстановления статов недоступна" : "Function recovery stats available"); return pageMain(player); } if(var[0].equalsIgnoreCase("cancel")) { if (Config.BBS_BUFF_ALLOW_CANCEL) { player.getEffectList().stopAllEffects(); player.sendMessage(player.isLangRus() ? "Эффекты успешно сброшены" : "Effects of successful reset"); } else player.sendMessage(player.isLangRus() ? "Функция сброса баффов недоступна" : "The reset function is not available buffs"); return pageMain(player); } return pageMain(player); } private static synchronized HashMap getBuffSets(int charId) { if(playerBuffSets.containsKey(charId)) return playerBuffSets.get(charId); HashMap _new = loadBuffSets(charId); playerBuffSets.put(charId, _new); return _new; } private static void updateBuffSet(int charId, String setname, BuffSet _set) { String skills = _set.skills.size() == 0 ? "" : String.valueOf(_set.skills.get(0).skill_id); for(int i = 1; i < _set.skills.size(); i++) skills += "," + _set.skills.get(i).skill_id; Connection con = null; PreparedStatement statement = null; try { con = DatabaseFactory.getInstance().getConnection(); statement = con.prepareStatement("REPLACE INTO bbs_buffs (char_id,name,skills) VALUES (?,?,?)"); statement.setInt(1, charId); statement.setString(2, setname); statement.setString(3, skills); statement.execute(); } catch(Exception e) { e.printStackTrace(); } finally { DbUtils.closeQuietly(con, statement); } } private static void deleteBuffSet(int charId, String setname) { Connection con = null; PreparedStatement statement = null; try { con = DatabaseFactory.getInstance().getConnection(); statement = con.prepareStatement("DELETE FROM bbs_buffs WHERE char_id=? AND name=?"); statement.setInt(1, charId); statement.setString(2, setname); statement.execute(); } catch(Exception e) { e.printStackTrace(); } finally { DbUtils.closeQuietly(con, statement); } } private static HashMap loadBuffSets(int charId) { HashMap result = new HashMap(); Connection con = null; PreparedStatement statement = null; ResultSet rset = null; try { con = DatabaseFactory.getInstance().getConnection(); statement = con.prepareStatement("SELECT name,skills FROM bbs_buffs WHERE char_id=?"); statement.setInt(1, charId); rset = statement.executeQuery(); while(rset.next()) { BuffSet next_set = new BuffSet(); String skills = rset.getString("skills"); if(skills != null && !skills.isEmpty()) if(!skills.contains(",")) next_set.addSkill(Integer.parseInt(skills)); else { String[] skill_ids = skills.split(","); for(String skill_id : skill_ids) if(!skill_id.isEmpty()) next_set.addSkill(Integer.parseInt(skill_id)); } result.put(rset.getString("name"), next_set); } } catch(Exception e) { e.printStackTrace(); } finally { DbUtils.closeQuietly(con, statement, rset); } return result; } private static void cleanUP() { Connection con = null; PreparedStatement statement = null; try { con = DatabaseFactory.getInstance().getConnection(); statement = con.prepareStatement("DELETE FROM `bbs_buffs` WHERE char_id != 0 AND char_id NOT IN(SELECT obj_id FROM characters);"); statement.executeUpdate(); } catch(Exception e) { e.printStackTrace(); } finally { DbUtils.closeQuietly(con, statement); } } private static String formatTable(Collection tds, int rows, boolean appendTD) { String result = ""; int i = 0; for(String td : tds) { if(i == 0) result += ""; result += appendTD ? "" + td + "" : td; i++; if(i == rows) { result += ""; i = 0; } } if(i > 0 && i < rows) { while(i < rows) { result += ""; i++; } result += ""; } return result; } /** * кроме обычного trim, заменяет кавычки на нестандартные UTF-8, удяляет ВСЕ двойные пробелы, убирает символы <> */ private static String trimHtml(String s) { int i; s = s.trim().replaceAll("\"", "?").replaceAll("'", "?").replaceAll("<", "").replaceAll(">", ""); do { i = s.length(); s = s.replaceAll(" ", " "); } while(i > s.length()); return s; } private static int buff_ids[] = { 1499, 1500, 1501, 1502, 1503, 1504, 1519, 1040, 4345, 4355, 4356, 4357, 4358, 4359, 4360, 1303, 1388, 1389, 4349, 1087, 1243, 1542, 1364, 1461, 4346, 4350, 1032, 1548, 1033, 1182, 1189, 1191, 1352, 1353, 1354, 1392, 1393, 4342, 4347, 4348, 4351, 4352, 4354, 1284, 1397, 1257, 1044, 1460, 1073, 264, 265, 266, 267, 268, 269, 270, 304, 305, 306, 308, 349, 363, 364, 529, 271, 272, 273, 274, 275, 276, 277, 307, 309, 310, 311, 365, 366, 530, 915, 1355, 1356, 1357, 1363, 1413, 1414, 4699, 4700, 4702, 4703, 825, 826, 827, 828, 829, 830 }; } Изменено 12 июля, 2013 пользователем evillord Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
evillord 14 Опубликовано 12 июля, 2013 Я уже разобрался , можно же через базу я тупанул . Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты