Focus 17 Опубликовано 23 мая, 2015 Под фрозен кто сможет переделать? 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 - NONEprivate 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{@Overridepublic 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);}@Overridepublic 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() + " запрщен в этой зоне!");}} Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
savormix 8 Опубликовано 24 мая, 2015 За бесплатно?) Если нет, то пиши в личку) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты