CaribStyle 25 Опубликовано 7 марта, 2016 Ребята кто может помочь под ПВ переделать? Попробовал, но сантаксические ошибки... package events.FarmZones; import java.util.logging.Logger; import fpr.common.ThreadPoolManager; import fpr.extensions.listeners.L2ZoneEnterLeaveListener; import fpr.gameserver.instancemanager.ZoneManager; import fpr.gameserver.model.L2Character; import fpr.gameserver.model.L2Object; import fpr.gameserver.model.L2Player; import fpr.gameserver.model.L2Summon; import fpr.gameserver.model.L2Zone; import fpr.gameserver.model.L2Zone.ZoneType; import fpr.gameserver.model.items.L2ItemInstance; import fpr.gameserver.templates.L2Item; /** * @author Calypso */ public class FarmZone { private static Logger _log = Logger.getLogger(FarmZone.class.getName()); // Вкл/Выкл скрипт private boolean enable = false; // Максимально возможный уровень заточки для Армора/Бижутерии/Оружия private int maxEnchArmor = 10; private int maxEnchAccessory = 10; private int maxEnchWeapon = 10; // Грейд вещей, который запрещен в данной зоне. NG - NONE private String [] nonAllowedGradeArmor = {"S84", "S80"}; private String [] nonAllowedGradeAccessory = {"S84", "S80"}; private String [] nonAllowedGradeWeapon = {"S84", "S80"}; // Список ID предметов, которые будут запрещены в этой зоне private int [] notAllowedItems = {6578, 6577}; // Через сколько секунд, после входа в зону, телепортировать в город игрока, который не прошел проверку private int tpDelay = 5; // Здесь указывается зона, сейчас это колизей private static L2Zone _Zone = ZoneManager.getInstance().getZoneByIndex(ZoneType.battle_zone, 4, true); L2Item.Grade cryType; ZoneListener _ZoneListener = new ZoneListener(); public void onLoad() { if(enable) { _Zone.getListenerEngine().addMethodInvokedListener(_ZoneListener); _log.info("Loaded Script-Event: Zone with conditions."); } } public void onReload() { if(enable) { _Zone.getListenerEngine().removeMethodInvokedListener(_ZoneListener); _Zone.getListenerEngine().addMethodInvokedListener(_ZoneListener); } } public void onShutdown() { if(enable) _Zone.getListenerEngine().removeMethodInvokedListener(_ZoneListener); } private class ZoneListener extends L2ZoneEnterLeaveListener { @Override public void objectEntered(L2Zone zone, L2Object object) { if(object == null || !object.isPlayer() || !enable) return; L2Player player = object.getPlayer(); if(!canEnterToZone(player)) ThreadPoolManager.getInstance().scheduleGeneral(new TeleToTown((L2Character) object), tpDelay * 1000); } @Override public void objectLeaved(L2Zone zone, L2Object object) {} } /** * Определяет, может ли игрок войти в эту зону * Так же проверяем инвентарь пета * * @param player * @return true, если может */ private boolean canEnterToZone(L2Player player) { L2ItemInstance[] inv = player.getInventory().getItems(); for (L2ItemInstance item : inv) { if(item.canBeEnchanted()) { cryType = item.getItem().getCrystalType(); // Если это броня if(item.isArmor()) { if(item.getEnchantLevel() > maxEnchArmor) { NotifyPlayer(player, item, 1, 1, cryType); return false; } for(String abort : nonAllowedGradeArmor) { if(cryType.toString() == abort) { NotifyPlayer(player, item, 1, 2, cryType); return false; } } } // Если это оружие else if(item.isWeapon()) { if(item.getEnchantLevel() > maxEnchWeapon) { NotifyPlayer(player, item, 2, 1, cryType); return false; } for(String abort : nonAllowedGradeWeapon) { if(cryType.toString() == abort) { NotifyPlayer(player, item, 2, 2, cryType); return false; } } } // Если это бижутерия else if(item.getItem().getType2() == L2Item.TYPE2_ACCESSORY || cryType.equals(nonAllowedGradeAccessory)) { if(item.getEnchantLevel() > maxEnchAccessory) { NotifyPlayer(player, item, 3, 1, cryType); return false; } for(String abort : nonAllowedGradeAccessory) { if(cryType.toString() == abort) { NotifyPlayer(player, item, 3, 2, cryType); return false; } } } } if(notAllowedItems.length > 1) for(int id : notAllowedItems) { if(item.getItemId() == id) { NotifyPlayer(player, item, 0, 3, L2Item.Grade.NONE); return false; } } } L2Summon pet = player.getPet(); if(pet != null) { L2ItemInstance[] petInv = pet.getInventory().getItems(); for (L2ItemInstance item : petInv) { if(item.canBeEnchanted()) { L2Item.Grade cryType = item.getItem().getCrystalType(); // Если это броня if(item.isArmor()) { if(item.getEnchantLevel() > maxEnchArmor) { NotifyPlayer(player, item, 1, 1, cryType); return false; } for(String abort : nonAllowedGradeArmor) { if(cryType.toString() == abort) { NotifyPlayer(player, item, 1, 2, cryType); return false; } } } // Если это оружие else if(item.isWeapon()) { if(item.getEnchantLevel() > maxEnchWeapon) { NotifyPlayer(player, item, 2, 1, cryType); return false; } for(String abort : nonAllowedGradeWeapon) { if(cryType.toString() == abort) { NotifyPlayer(player, item, 2, 2, cryType); return false; } } } // Если это бижутерия else if(item.getItem().getType2() == L2Item.TYPE2_ACCESSORY || cryType.equals(nonAllowedGradeAccessory)) { if(item.getEnchantLevel() > maxEnchAccessory) { NotifyPlayer(player, item, 3, 1, cryType); return false; } for(String abort : nonAllowedGradeAccessory) { if(cryType.toString() == abort) { NotifyPlayer(player, item, 3, 2, cryType); return false; } } } } if(notAllowedItems.length > 1) for(int id : notAllowedItems) { if(item.getItemId() == id) { NotifyPlayer(player, item, 0, 3, L2Item.Grade.NONE); return false; } } } } return true; } private class TeleToTown implements Runnable { L2Character target; /** * Телепорт игрока в ближайший город * * @param target - игрок, который будет телепортирован * */ public TeleToTown(L2Character target) { this.target = target; } public void run() { target.teleToClosestTown(); } } /** * Отсылает уведомление игроку о том, какая вещь не прошла проверку * * @param player * @param item * @param equipType: 1 - броня, 2 - оружие, 3 - бижутерия * @param failType: 1 - не подходит по заточке, 2 - по грейду, 3 - запрещенный предмет * @param grade */ private void NotifyPlayer (L2Player player, L2ItemInstance item, int equipType, int failType, L2Item.Grade grade) { if(equipType == 1 && failType == 1) player.sendMessage("Уровень заточки предмета " + item.getName() + " (+" + item.getEnchantLevel() + ") превышает максимально допустимый для этой зоны. Допустимый уровень заточки брони: +" + maxEnchArmor); if(equipType == 2 && failType == 1) player.sendMessage("Уровень заточки предмета " + item.getName() + " (+" + item.getEnchantLevel() + ") превышает максимально допустимый для этой зоны. Допустимый уровень заточки оружия: +" + maxEnchWeapon); if(equipType == 3 && failType == 1) player.sendMessage("Уровень заточки предмета " + item.getName() + " (+" + item.getEnchantLevel() + ") превышает максимально допустимый для этой зоны. Допустимый уровень заточки бижутерии: +" + maxEnchAccessory); if(failType == 2) player.sendMessage("Предметы, с таким грейдом как " + item.getName() + " (" + grade.toString() + "), запрщены в этой зоне!"); if(failType == 3) player.sendMessage("Предмет " + item.getName() + " запрщен в этой зоне!"); } } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
LetsGetWild 17 Опубликовано 7 марта, 2016 кажется такое на пв викладовали в шару. посмотри гдето в клиентсом дополнение. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
T1TaH 3 Опубликовано 7 марта, 2016 ап Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
CaribStyle 25 Опубликовано 7 марта, 2016 (изменено) Хелп Изменено 8 марта, 2016 пользователем CaribStyle Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты