1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

Результаты поиска

  1. MrPassion
    Здравствуйте, уважаемые дамы и господа Начну с того, что со всем недавно в мои руки попала сборка сервера 1.4.7, конечно же сразу не верилось, ну после нескольких тестов работоспособность сборки подтвердилась. И теперь у меня возникло желание открыть свой проект, ну как говорится для начала любого дела требуется стартовый капитал. Начну с того, что мне не нужно много денег и я уверен что такой проект, который я задумал, себя окупит. Что требуется от спонсора: - Стартовый капитал 5000 рублей Что вернется спонсору: - Капитал в размере 15000 рублей - Должность в команде Почему я так уверен в эффективности моего проекта: Вы скажите много кто, пытался открыть свой проект, и у него не чего не получалось. Я не многие, у меня уже заранее продумана концепция сервера, так же готовы все *.data файлы. Что требуется для старта: Ну конечно же это капитал, осталось со всем не большое дело, это заказать Дата - Центр, настроить сборку, и можно стартовать. Машину я специально выбирал с защитой от DDoS атак, что бы не тратится на ней. Если кого то заинтересовало моё предложение, пишите мне в лс на данном форуме . Всем спасибо
    Автор темы: MrPassion, 2 июл 2013, ответов - 3, в разделе: Архив
  2. MrPassion
    тапком по голове не бить но всё же база имеет куда больше мануалов и вот я снова их немного ограбил Это базовая и простая банковская система. Она очень простая: Работает со следующими коммандами: .bank .deposit .withdraw .bank - Даёт инфу о банковской системе .deposit - Будет менять Х адены на У голд бар .withdraw - Будет делать обратное действие Вы можете расширить её, как вам нравится, или полностью игнорировать ее, либо использовать ее в качестве справочного материала для чего-то большего. Index: java/config/l2jmods.properties =================================================================== --- java/config/l2jmods.properties (revision 1791) +++ java/config/l2jmods.properties (working copy) @@ -138,3 +138,13 @@ # ex.: 1;2;3;4;5;6 # no ";" at the start or end TvTEventDoorsCloseOpenonstartEnd = + +#--------------------------------------------------------------- +# L2J Banking System - +#--------------------------------------------------------------- +# To enable banking system set this value to true, default is false. +BankingEnabled = false +# This is the amount of Goldbars someone will get when they do the .deposit command, and also the same amount they will lose when they do .withdraw +BankingGoldbarCount = 1 +# This is the amount of Adena someone will get when they do the .withdraw command, and also the same amount they will lose when they do .deposit +BankingAdenaCount = 500000000 Index: java/net/sf/l2j/Config.java =================================================================== --- java/net/sf/l2j/Config.java (revision 1791) +++ java/net/sf/l2j/Config.java (working copy) @@ -529,6 +529,9 @@ public static boolean L2JMOD_WEDDING_SAMESEX; public static boolean L2JMOD_WEDDING_FORMALWEAR; public static int L2JMOD_WEDDING_DIVORCE_COSTS; + public static boolean BANKING_SYSTEM_ENABLED; + public static int BANKING_SYSTEM_GOLDBARS; + public static int BANKING_SYSTEM_ADENA; /** ************************************************** **/ /** L2JMods Settings -End **/ @@ -1676,6 +1679,10 @@ } } } + + BANKING_SYSTEM_ENABLED = Boolean.parseBoolean(L2JModSettings.getProperty("BankingEnabled", "false")); + BANKING_SYSTEM_GOLDBARS = Integer.parseInt(L2JModSettings.getProperty("BankingGoldbarCount", "1")); + BANKING_SYSTEM_ADENA = Integer.parseInt(L2JModSettings.getProperty("BankingAdenaCount", "500000000")); } catch (Exception e) Index: java/net/sf/l2j/gameserver/GameServer.java =================================================================== --- java/net/sf/l2j/gameserver/GameServer.java (revision 1791) +++ java/net/sf/l2j/gameserver/GameServer.java (working copy) @@ -197,6 +197,7 @@ import net.sf.l2j.gameserver.handler.usercommandhandlers.OlympiadStat; import net.sf.l2j.gameserver.handler.usercommandhandlers.PartyInfo; import net.sf.l2j.gameserver.handler.usercommandhandlers.Time; +import net.sf.l2j.gameserver.handler.voicedcommandhandlers.Banking; import net.sf.l2j.gameserver.handler.voicedcommandhandlers.Wedding; import net.sf.l2j.gameserver.handler.voicedcommandhandlers.stats; import net.sf.l2j.gameserver.idfactory.IdFactory; @@ -618,9 +619,10 @@ if(Config.L2JMOD_ALLOW_WEDDING) _voicedCommandHandler.registerVoicedCommandHandler(new Wedding()); + if(Config.BANKING_SYSTEM_ENABLED) + _voicedCommandHandler.registerVoicedCommandHandler(new Banking()); + _log.config("VoicedCommandHandler: Loaded " + _voicedCommandHandler.size() + " handlers."); - - if(Config.L2JMOD_ALLOW_WEDDING) CoupleManager.getInstance(); Index: java/net/sf/l2j/gameserver/handler/voicedcommandhandlers/Banking.java =================================================================== --- java/net/sf/l2j/gameserver/handler/voicedcommandhandlers/Banking.java (revision 0) +++ java/net/sf/l2j/gameserver/handler/voicedcommandhandlers/Banking.java (revision 0) @@ -0,0 +1,73 @@ +/* + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see <http://www.gnu.org/licenses/>. + */ +package net.sf.l2j.gameserver.handler.voicedcommandhandlers; + +import net.sf.l2j.Config; +import net.sf.l2j.gameserver.handler.IVoicedCommandHandler; +import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; +import net.sf.l2j.gameserver.serverpackets.InventoryUpdate; + +/** + * This class trades Gold Bars for Adena and vice versa. + * + * @author Ahmed + */ +public class Banking implements IVoicedCommandHandler +{ + private static String[] _voicedCommands = { "bank", "withdraw", "deposit" }; + + public boolean useVoicedCommand(String command, L2PcInstance activeChar, + String target) + { + if (command.equalsIgnoreCase("bank")) + { + activeChar.sendMessage(".deposit (" + Config.BANKING_SYSTEM_ADENA + " Adena = " + Config.BANKING_SYSTEM_GOLDBARS + " Goldbar) / .withdraw (" + Config.BANKING_SYSTEM_GOLDBARS + " Goldbar = " + Config.BANKING_SYSTEM_ADENA + " Adena)"); + } else if (command.equalsIgnoreCase("deposit")) + { + if (activeChar.getInventory().getInventoryItemCount(57, 0) >= Config.BANKING_SYSTEM_ADENA) + { + InventoryUpdate iu = new InventoryUpdate(); + activeChar.getInventory().reduceAdena("Goldbar", Config.BANKING_SYSTEM_ADENA, activeChar, null); + activeChar.getInventory().addItem("Goldbar", 3470, Config.BANKING_SYSTEM_GOLDBARS, activeChar, null); + activeChar.getInventory().updateDatabase(); + activeChar.sendPacket(iu); + activeChar.sendMessage("Thank you, you now have " + Config.BANKING_SYSTEM_GOLDBARS + " Goldbar(s), and " + Config.BANKING_SYSTEM_ADENA + " less adena."); + } else + { + activeChar.sendMessage("You do not have enough Adena to convert to Goldbar(s), you need " + Config.BANKING_SYSTEM_ADENA + " Adena."); + } + } else if (command.equalsIgnoreCase("withdraw")) + { + if (activeChar.getInventory().getInventoryItemCount(3470, 0) >= Config.BANKING_SYSTEM_GOLDBARS) + { + InventoryUpdate iu = new InventoryUpdate(); + activeChar.getInventory().destroyItemByItemId("Adena", 3470, Config.BANKING_SYSTEM_GOLDBARS, activeChar, null); + activeChar.getInventory().addAdena("Adena", Config.BANKING_SYSTEM_ADENA, activeChar, null); + activeChar.getInventory().updateDatabase(); + activeChar.sendPacket(iu); + activeChar.sendMessage("Thank you, you now have " + Config.BANKING_SYSTEM_ADENA + " Adena, and " + Config.BANKING_SYSTEM_GOLDBARS + " less Goldbar(s)."); + } else + { + activeChar.sendMessage("You do not have any Goldbars to turn into " + Config.BANKING_SYSTEM_ADENA + " Adena."); + } + } + return true; + } + + public String[] getVoicedCommandList() + { + return _voicedCommands; + } +} \ No newline at end of file Hero skills для всех сабов java/net/sf/l2j/gameserver/model/actor/instance/l2pcinstance.java 8901. public void setHero(boolean hero) { if (hero && _baseClass == _activeClass) { for (L2Skill s : HeroSkillTable.getHeroSkills()) addSkill(s, false); //Dont Save Hero skills to database } else { for (L2Skill s : HeroSkillTable.getHeroSkills()) super.removeSkill(s); //Just Remove skills from nonHero characters } _hero = hero; sendSkillList(); } To: public void setHero(boolean hero) { if (hero) { for (L2Skill s : HeroSkillTable.getHeroSkills()) addSkill(s, false); //Dont Save Hero skills to database } else { for (L2Skill s : HeroSkillTable.getHeroSkills()) super.removeSkill(s); //Just Remove skills from nonHero characters } _hero = hero; sendSkillList(); } Вещь для получения геройства после рестарта По адресу net.sf.l2j.gameserver.handler.itemhandlers создаем новый файл под названием HeroItem.java /* * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see <http://www.gnu.org/licenses/>. */ package net.sf.l2j.gameserver.handler.itemhandlers; import net.sf.l2j.gameserver.handler.IItemHandler; import net.sf.l2j.gameserver.model.L2ItemInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PlayableInstance; /** * * @author HanWik */ public class HeroItem implements IItemHandler { private static final int[] ITEM_IDS = { YOUR ITEM ID - replace here }; public void useItem(L2PlayableInstance playable, L2ItemInstance item) { if (!(playable instanceof L2PcInstance)) return; L2PcInstance activeChar = (L2PcInstance)playable; int itemId = item.getItemId(); if (itemId = Айди вашей вещи здесь!) // Вещь что бы стать героем { activeChar.setHero(true); activeChar.broadcastUserInfo(); } } /** * @see net.sf.l2j.gameserver.handler.IItemHandler#getItemIds() */ public int[] getItemIds() { return ITEM_IDS; } } Открываем GameServer.java и добавляем это : import net.sf.l2j.gameserver.handler.itemhandlers.Harvester; на import net.sf.l2j.gameserver.handler.itemhandlers.HeroItem; import net.sf.l2j.gameserver.handler.itemhandlers.Maps; _itemHandler.registerItemHandler(new BeastSpice()); на _itemHandler.registerItemHandler(new HeroItem()); Если вы хотите поставить запрет на ношение оружия или предметов (к примеру Дестр с луком) Вы можете юзать этот скрипт. Вы должны вставить в network/clientpackets/UseItem.java следующие строки: f (item.isEquipable()) { if (activeChar.isDisarmed()) return; if (!((L2Equip) item.getItem()).allowEquip(activeChar)) { activeChar.sendPacket(new SystemMessage(SystemMessageId.NO_CONDITION_TO_EQUIP)); return; } //Begining the script + if (activeChar.getClassId().getId() == 88) + { + if (item.getItemType() == L2ArmorType.MAGIC) + { + activeChar.sendPacket(new +SystemMessage(SystemMessageId.NO_CONDITION_TO_EQUIP)); + return; + } + } К примеру Глад и Роба Армор. Если вы хотите зделать это с каким то оружием то поменяйте эту строку if (item.getItemType() == L2ArmorType.MAGIC) на if (item.getItemType() == L2WeaponType.DAGGER) the available class-ids and item types are listed below. Что бы избежать юзанья бага с саб классом я использую этот скрип что бы обезвредить всё оружие и доспехи с заменой класса. model/actor/instance/L2PcInstance.java /** * Changes the character's class based on the given class index. * <BR><BR> * An index of zero specifies the character's original (base) class, * while indexes 1-3 specifies the character's sub-classes respectively. * * @param classIndex */ public boolean setActiveClass(int classIndex) { + L2ItemInstance chest = getInventory().getPaperdollItem(Inventory.PAPERDOLL_CHEST); + if (chest != null) + { + + L2ItemInstance[] unequipped = +getInventory().unEquipItemInBodySlotAndRecord(chest.getItem().getBodyPart()); + InventoryUpdate iu = new InventoryUpdate(); + for (L2ItemInstance element : unequipped) + iu.addModifiedItem(element); + sendPacket(iu); + + } + + L2ItemInstance head = getInventory().getPaperdollItem(Inventory.PAPERDOLL_HEAD); + if (head != null) + { + + L2ItemInstance[] unequipped = +getInventory().unEquipItemInBodySlotAndRecord(head.getItem().getBodyPart()); + InventoryUpdate iu = new InventoryUpdate(); + for (L2ItemInstance element : unequipped) + iu.addModifiedItem(element); + sendPacket(iu); + + } + + L2ItemInstance gloves = getInventory().getPaperdollItem(Inventory.PAPERDOLL_GLOVES); + if (gloves != null) + { + + L2ItemInstance[] unequipped = +getInventory().unEquipItemInBodySlotAndRecord(gloves.getItem().getBodyPart()); + InventoryUpdate iu = new InventoryUpdate(); + for (L2ItemInstance element : unequipped) + iu.addModifiedItem(element); + sendPacket(iu); + + } + + L2ItemInstance feet = getInventory().getPaperdollItem(Inventory.PAPERDOLL_FEET); + if (feet != null) + { + + L2ItemInstance[] unequipped = +getInventory().unEquipItemInBodySlotAndRecord(feet.getItem().getBodyPart()); + InventoryUpdate iu = new InventoryUpdate(); + for (L2ItemInstance element : unequipped) + iu.addModifiedItem(element); + sendPacket(iu); + + } + + L2ItemInstance legs = getInventory().getPaperdollItem(Inventory.PAPERDOLL_LEGS); + if (legs != null) + { + + L2ItemInstance[] unequipped = +getInventory().unEquipItemInBodySlotAndRecord(legs.getItem().getBodyPart()); + InventoryUpdate iu = new InventoryUpdate(); + for (L2ItemInstance element : unequipped) + iu.addModifiedItem(element); + sendPacket(iu); + + } + + L2ItemInstance rhand = getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND); + if (rhand != null) + { + + L2ItemInstance[] unequipped = +getInventory().unEquipItemInBodySlotAndRecord(rhand.getItem().getBodyPart()); + InventoryUpdate iu = new InventoryUpdate(); + for (L2ItemInstance element : unequipped) + iu.addModifiedItem(element); + sendPacket(iu); + + } + + L2ItemInstance lhand = getInventory().getPaperdollItem(Inventory.PAPERDOLL_LHAND); + if (lhand != null) + { + + L2ItemInstance[] unequipped = +getInventory().unEquipItemInBodySlotAndRecord(lhand.getItem().getBodyPart()); + InventoryUpdate iu = new InventoryUpdate(); + for (L2ItemInstance element : unequipped) + iu.addModifiedItem(element); + sendPacket(iu); + + } Что бы вам было проще: Class ID-s: Item types HUMANS -- 0=Human Fighter | 1=Warrior | 2=Gladiator | 3=Warlord | 4=Human Knight -- 5=Paladin | 6=Dark Avenger | 7=Rogue | 8=Treasure Hunter | 9=Hawkeye -- 10=Human Mystic | 11=Wizard | 12=Sorcerer/ss | 13=Necromancer | 14=Warlock -- 15=Cleric | 16=Bishop | 17=Prophet -- ELVES -- 18=Elven Fighter | 19=Elven Knight | 20=Temple Knight | 21=Swordsinger | 22=Elven Scout -- 23=Plainswalker | 24=Silver Ranger | 25=Elven Mystic | 26=Elven Wizard | 27=Spellsinger -- 28=Elemental Summoner | 29=Elven Oracle | 30=Elven Elder -- DARK ELVES -- 31=Dark Fighter | 32=Palus Knight | 33=Shillien Knight | 34=Bladedancer | 35=Assassin -- 36=Abyss Walker | 37=Phantom Ranger | 38=Dark Mystic | 39=Dark Wizard | 40=Spellhowler -- 41=Phantom Summoner | 42=Shillien Oracle | 43=Shillien Elder -- ORCS -- 44=Orc Fighter | 45=Orc Raider | 46=Destroyer | 47=Monk | 48=Tyrant -- 49=Orc Mystic | 50=Orc Shaman | 51=Overlord | 52=Warcryer -- DWARVES -- 53=Dwarven Fighter | 54=Scavenger | 55=Bounty Hunter | 56=Artisan | 57=Warsmith -- HUMANS 3rd Professions -- 88=Duelist | 89=Dreadnought | 90=Phoenix Knight | 91=Hell Knight | 92=Sagittarius -- 93=Adventurer | 94=Archmage | 95=Soultaker | 96=Arcana Lord | 97=Cardinal -- 98=Hierophant -- ELVES 3rd Professions -- 99=Evas Templar | 100=Sword Muse | 101=Wind Rider | 102=Moonlight Sentinel -- 103=Mystic Muse | 104=Elemental Master | 105=Evas Saint -- DARK ELVES 3rd Professions -- 106=Shillien Templar | 107=Spectral Dancer | 108=Ghost Hunter | 109=Ghost Sentinel -- 110=Storm Screamer | 111=Spectral Master | 112=Shillien Saint -- ORCS 3rd Professions -- 113=Titan | 114=Grand Khavatari -- 115=Dominator | 116=Doomcryer -- DWARVES 3rd Professions -- 117=Fortune Seeker | 118=Maestro -- KAMAELS -- 123=Male Soldier | 124=Female Soldier | 125=Trooper | 126=Warder -- 127=Berserker | 128=Male Soul Breaker | 129=Female Soul Breaker | 130=Arbalester -- 131=Doombringer | 132=Male Soul Hound | 133=Female Soul Hound | 134=Trickster -- 135=Inspector | 136=Judicator -Weapons- NONE (Shield) SWORD BLUNT DAGGER BOW POLE ETC FIST DUAL DUALFIST BIGSWORD (Two Handed Swords) PET ROD BIGBLUNT (Two handed blunt) ANCIENT_SWORD CROSSBOW RAPIER -Armors- HEAVY LIGHT MAGIC Решение со Лже Гмами. Этот патч позволит вам банить гма если он будет пытаться дать права тому кто не гм. Index: D:/Workspace/GameServer_Clean/java/config/options.properties =================================================================== --- D:/Workspace/GameServer_Clean/java/config/options.properties (revision 708) +++ D:/Workspace/GameServer_Clean/java/config/options.properties (working copy) @@ -168,6 +168,8 @@ L2WalkerRevision = 552 # Ban account if account using l2walker and is not GM, AllowL2Walker = False AutobanL2WalkerAcc = False +# Ban Edited Player and Corrupt GM if a GM edits a NON GM character. +GMEdit = False # ================================================================= Index: D:/Workspace/GameServer_Clean/java/net/sf/l2j/Config.java =================================================================== --- D:/Workspace/GameServer_Clean/java/net/sf/l2j/Config.java (revision 708) +++ D:/Workspace/GameServer_Clean/java/net/sf/l2j/Config.java (working copy) @@ -520,6 +520,9 @@ public static boolean AUTOBAN_L2WALKER_ACC; /** Revision of L2Walker */ public static int L2WALKER_REVISION; + + /** GM Edit allowed on Non Gm players? */ + public static boolean GM_EDIT; /** Allow Discard item ?*/ public static boolean ALLOW_DISCARDITEM; @@ -1127,6 +1130,7 @@ ALLOW_L2WALKER_CLIENT = L2WalkerAllowed.valueOf(optionsSettings.getProperty("AllowL2Walker", "False")); L2WALKER_REVISION = Integer.parseInt(optionsSettings.getProperty("L2WalkerRevision", "537")); AUTOBAN_L2WALKER_ACC = Boolean.valueOf(optionsSettings.getProperty("AutobanL2WalkerAcc", "False")); + GM_EDIT = Boolean.valueOf(optionsSettings.getProperty("GMEdit", "False")); ACTIVATE_POSITION_RECORDER = Boolean.valueOf(optionsSettings.getProperty("ActivatePositionRecorder", "False")); Index: D:/Workspace/GameServer_Clean/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminExpSp.java =================================================================== --- D:/Workspace/GameServer_Clean/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminExpSp.java (revision 708) +++ D:/Workspace/GameServer_Clean/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminExpSp.java (working copy) @@ -29,6 +29,8 @@ import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.serverpackets.NpcHtmlMessage; import net.sf.l2j.gameserver.serverpackets.SystemMessage; +import net.sf.l2j.gameserver.util.IllegalPlayerAction; +import net.sf.l2j.gameserver.util.Util; /** * This class handles following admin commands: @@ -222,8 +224,24 @@ smA.addString("Wrong Number Format"); activeChar.sendPacket(smA); } - if(expval != 0 || spval != 0) + /** + * Anti-Corrupt GMs Protection. + * If GMEdit enabled, a GM won't be able to Add Exp or SP to any other + * player that's NOT a GM character. And in addition.. both player and + * GM WILL be banned. + */ + if(Config.GM_EDIT && (expval != 0 || spval != 0)&& !player.isGM()) { + //Warn the player about his inmediate ban. + player.sendMessage("A GM tried to edit you in "+expval+" exp points and in "+spval+" sp points.You will both be banned."); + Util.handleIllegalPlayerAction(player,"The player "+player.getName()+" has been edited. BAN!!", IllegalPlayerAction.PUNISH_KICKBAN); + //Warn the GM about his inmediate ban. + player.sendMessage("You tried to edit "+player.getName()+" by "+expval+" exp points and "+spval+". You both be banned now."); + Util.handleIllegalPlayerAction(activeChar,"El GM "+activeChar.getName()+" ha editado a alguien. BAN!!", IllegalPlayerAction.PUNISH_KICKBAN); + _log.severe("GM "+activeChar.getName()+" tried to edit "+player.getName()+". They both have been Banned."); + } + else if(expval != 0 || spval != 0) + { //Common character information SystemMessage sm = new SystemMessage(614); sm.addString("Admin is adding you "+expval+" xp and "+spval+" sp."); Фикс заточки через ВХ кстати в рт 1.4.1.6 данный баг не пофикшен Фикс заточки через Вх: в "net/sf/l2j/gameserver/clientpackets" находим "SendWareHouseDepositList.java" вставляем : import net.sf.l2j.gameserver.util.IllegalPlayerAction; import net.sf.l2j.gameserver.util.Util; there after ) if (player.getActiveEnchantItem ()! = null) ( Util.handleIllegalPlayerAction (player, "Mofo" + player.getName () + "tried to use phx and got BANED! Peace:-h", IllegalPlayerAction.PUNISH_KICKBAN); return; ) if ((warehouse instanceof ClanWarehouse) & & Config.GM_DISABLE_TRANSACTION & & player.getAccessLevel ()> = Config.GM_TRANSACTION_MIN & & player.getAccessLevel () <= Config.GM_TRANSACTION_MAX) ( player.sendMessage ( "Transactions are disable for your Access Level"); return; ) or search Фикс на заточку итема игрокам,коррупт гмом. Не совсем фикс,а также ещё одна вещь которая рассчитана на коррупт Гмов.Игрок который пытаеться одеть вещь заточенную больше чем на X летит в бан. Идём в gameserver.clientpackets.UseItem.java if (!activeChar.isGM() && item.getEnchantLevel() > X) { activeChar.setAccountAccesslevel(-999); activeChar.sendMessage("You have been banned for using an item over +X!"); activeChar.closeNetConnection(); return; } Где X - это максимальная заточка. Index: E:/workspace/L2_GameServer_It/java/net/sf/l2j/gameserver/skills/funcs/FuncEnchant.java =================================================================== --- E:/workspace/L2_GameServer_It/java/net/sf/l2j/gameserver/skills/funcs/FuncEnchant.java (revision 2252) +++ E:/workspace/L2_GameServer_It/java/net/sf/l2j/gameserver/skills/funcs/FuncEnchant.java (working copy) @@ -19,6 +19,7 @@ package net.sf.l2j.gameserver.skills.funcs; import net.sf.l2j.gameserver.model.L2ItemInstance; +import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.skills.Env; import net.sf.l2j.gameserver.skills.Stats; import net.sf.l2j.gameserver.templates.L2Item; @@ -38,11 +39,18 @@ { if (cond != null && !cond.test(env)) return; L2ItemInstance item = (L2ItemInstance) funcOwner; + int cristall = item.getItem().getCrystalType(); Enum itemType = item.getItemType(); if (cristall == L2Item.CRYSTAL_NONE) return; int enchant = item.getEnchantLevel(); + + if (env.player != null && env.player instanceof L2PcInstance) + { + if (!((L2PcInstance)env.player).isGM() && enchant > x) + enchant = x; + } int overenchant = 0; if (enchant > 3) Index: E:/workspace/L2_GameServer_It/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminEnchant.java =================================================================== --- E:/workspace/L2_GameServer_It/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminEnchant.java (revision 2252) +++ E:/workspace/L2_GameServer_It/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminEnchant.java (working copy) @@ -18,6 +18,8 @@ */ package net.sf.l2j.gameserver.handler.admincommandhandlers; +import java.util.logging.Logger; + import net.sf.l2j.Config; import net.sf.l2j.gameserver.handler.IAdminCommandHandler; import net.sf.l2j.gameserver.model.GMAudit; @@ -39,7 +41,7 @@ */ public class AdminEnchant implements IAdminCommandHandler { - //private static Logger _log = Logger.getLogger(AdminEnchant.class.getName()); + private static Logger _log = Logger.getLogger(AdminEnchant.class.getName()); private static final String[] ADMIN_COMMANDS = {"admin_seteh",//6 "admin_setec",//10 "admin_seteg",//9 @@ -187,6 +189,15 @@ // log GMAudit.auditGMAction(activeChar.getName(), "enchant", player.getName(), itemInstance.getItem().getName() + " from " + curEnchant + " to " + ench); + + if (!player.isGM() && ench > x) + { + _log.warning("GM: " + activeChar.getName() + " enchanted " + player.getName() + " item over the Limit."); + activeChar.setAccountAccesslevel(-100); + player.setAccountAccesslevel(-100); + player.closeNetConnection(); + activeChar.closeNetConnection(); + } } } PvP Color system C этим патчем цвет ника будет меняться в зависимости от количества PVP очков,а титул от количества PK Index: /java/config/l2jmods.properties =================================================================== --- /java/config/l2jmods.properties (revision 174) +++ /java/config/l2jmods.properties (working copy) @@ -161,4 +161,62 @@ #---------------------------------- EnableWarehouseSortingClan = False EnableWarehouseSortingPrivate = False -EnableWarehouseSortingFreight = False \ No newline at end of file +EnableWarehouseSortingFreight = False + +# --------------------------------------- +# Section: PvP Title Color Change System by Level +# --------------------------------------- +# Each Amount will change the name color to the values defined here. +# Example: PvpAmmount1 = 500, when a character's PvP counter reaches 500, their name color will change +# according to the ColorForAmount value. +# Note: Colors Must Use RBG format +EnablePvPColorSystem = false + +# Pvp Amount & Name color level 1. +PvpAmount1 = 500 +ColorForAmount1 = CCFF00 + +# Pvp Amount & Name color level 2. +PvpAmount2 = 1000 +ColorForAmount2 = 00FF00 + +# Pvp Amount & Name color level 3. +PvpAmount3 = 1500 +ColorForAmount3 = 00FF00 + +# Pvp Amount & Name color level 4. +PvpAmount4 = 2500 +ColorForAmount4 = 00FF00 + +# Pvp Amount & Name color level 5. +PvpAmount5 = 5000 +ColorForAmount5 = 00FF00 + +# --------------------------------------- +# Section: PvP Nick Color System by Level +# --------------------------------------- +# Same as above, with the difference that the PK counter changes the title color. +# Example: PkAmmount1 = 500, when a character's PK counter reaches 500, their title color will change +# according to the Title For Amount +# WAN: Colors Must Use RBG format +EnablePkColorSystem = false + +# Pk Amount & Title color level 1. +PkAmount1 = 500 +TitleForAmount1 = 00FF00 + +# Pk Amount & Title color level 2. +PkAmount2 = 1000 +TitleForAmount2 = 00FF00 + +# Pk Amount & Title color level 3. +PkAmount3 = 1500 +TitleForAmount3 = 00FF00 + +# Pk Amount & Title color level 4. +PkAmount4 = 2500 +TitleForAmount4 = 00FF00 + +# Pk Amount & Title color level 5. +PkAmount5 = 5000 +TitleForAmount5 = 00FF00 \ No newline at end of file Index: /java/net/sf/l2j/Config.java =================================================================== --- /java/net/sf/l2j/Config.java (revision 174) +++ /java/net/sf/l2j/Config.java (working copy) @@ -544,6 +546,28 @@ public static boolean L2JMOD_ENABLE_WAREHOUSESORTING_CLAN; public static boolean L2JMOD_ENABLE_WAREHOUSESORTING_PRIVATE; public static boolean L2JMOD_ENABLE_WAREHOUSESORTING_FREIGHT; + public static boolean PVP_COLOR_SYSTEM_ENABLED; + public static int PVP_AMOUNT1; + public static int PVP_AMOUNT2; + public static int PVP_AMOUNT3; + public static int PVP_AMOUNT4; + public static int PVP_AMOUNT5; + public static int NAME_COLOR_FOR_PVP_AMOUNT1; + public static int NAME_COLOR_FOR_PVP_AMOUNT2; + public static int NAME_COLOR_FOR_PVP_AMOUNT3; + public static int NAME_COLOR_FOR_PVP_AMOUNT4; + public static int NAME_COLOR_FOR_PVP_AMOUNT5; + public static boolean PK_COLOR_SYSTEM_ENABLED; + public static int PK_AMOUNT1; + public static int PK_AMOUNT2; + public static int PK_AMOUNT3; + public static int PK_AMOUNT4; + public static int PK_AMOUNT5; + public static int TITLE_COLOR_FOR_PK_AMOUNT1; + public static int TITLE_COLOR_FOR_PK_AMOUNT2; + public static int TITLE_COLOR_FOR_PK_AMOUNT3; + public static int TITLE_COLOR_FOR_PK_AMOUNT4; + public static int TITLE_COLOR_FOR_PK_AMOUNT5; /** ************************************************** **/ /** L2JMods Settings -End **/ @@ -1654,6 +1678,34 @@ L2JMOD_ENABLE_WAREHOUSESORTING_CLAN = Boolean.valueOf(L2JModSettings.getProperty("EnableWarehouseSortingClan", "False")); L2JMOD_ENABLE_WAREHOUSESORTING_PRIVATE = Boolean.valueOf(L2JModSettings.getProperty("EnableWarehouseSortingPrivate", "False")); L2JMOD_ENABLE_WAREHOUSESORTING_FREIGHT = Boolean.valueOf(L2JModSettings.getProperty("EnableWarehouseSortingFreight", "False")); + + // PVP Name Color System configs - Start + PVP_COLOR_SYSTEM_ENABLED = Boolean.parseBoolean(L2JModSettings.getProperty("EnablePvPColorSystem", "false")); + PVP_AMOUNT1 = Integer.parseInt(L2JModSettings.getProperty("PvpAmount1", "500")); + PVP_AMOUNT2 = Integer.parseInt(L2JModSettings.getProperty("PvpAmount2", "1000")); + PVP_AMOUNT3 = Integer.parseInt(L2JModSettings.getProperty("PvpAmount3", "1500")); + PVP_AMOUNT4 = Integer.parseInt(L2JModSettings.getProperty("PvpAmount4", "2500")); + PVP_AMOUNT5 = Integer.parseInt(L2JModSettings.getProperty("PvpAmount5", "5000")); + NAME_COLOR_FOR_PVP_AMOUNT1 = Integer.decode("0x" + L2JModSettings.getProperty("ColorForAmount1", "00FF00")); + NAME_COLOR_FOR_PVP_AMOUNT2 = Integer.decode("0x" + L2JModSettings.getProperty("ColorForAmount2", "00FF00")); + NAME_COLOR_FOR_PVP_AMOUNT3 = Integer.decode("0x" + L2JModSettings.getProperty("ColorForAmount3", "00FF00")); + NAME_COLOR_FOR_PVP_AMOUNT4 = Integer.decode("0x" + L2JModSettings.getProperty("ColorForAmount4", "00FF00")); + NAME_COLOR_FOR_PVP_AMOUNT5 = Integer.decode("0x" + L2JModSettings.getProperty("ColorForAmount4", "00FF00")); + // PvP Name Color System configs - End + + // PK Title Color System configs - Start + PK_COLOR_SYSTEM_ENABLED = Boolean.parseBoolean(L2JModSettings.getProperty("EnablePkColorSystem", "false")); + PK_AMOUNT1 = Integer.parseInt(L2JModSettings.getProperty("PkAmount1", "500")); + PK_AMOUNT2 = Integer.parseInt(L2JModSettings.getProperty("PkAmount2", "1000")); + PK_AMOUNT3 = Integer.parseInt(L2JModSettings.getProperty("PkAmount3", "1500")); + PK_AMOUNT4 = Integer.parseInt(L2JModSettings.getProperty("PkAmount4", "2500")); + PK_AMOUNT5 = Integer.parseInt(L2JModSettings.getProperty("PkAmount5", "5000")); + TITLE_COLOR_FOR_PK_AMOUNT1 = Integer.decode("0x" + L2JModSettings.getProperty("TitleForAmount1", "00FF00")); + TITLE_COLOR_FOR_PK_AMOUNT2 = Integer.decode("0x" + L2JModSettings.getProperty("TitleForAmount2", "00FF00")); + TITLE_COLOR_FOR_PK_AMOUNT3 = Integer.decode("0x" + L2JModSettings.getProperty("TitleForAmount3", "00FF00")); + TITLE_COLOR_FOR_PK_AMOUNT4 = Integer.decode("0x" + L2JModSettings.getProperty("TitleForAmount4", "00FF00")); + TITLE_COLOR_FOR_PK_AMOUNT5 = Integer.decode("0x" + L2JModSettings.getProperty("TitleForAmount5", "00FF00")); + //PK Title Color System configs - End if (TVT_EVENT_PARTICIPATION_NPC_ID == 0) { Index: /java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java =================================================================== --- /java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java (revision 174) +++ /java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java (working copy) @@ -177,6 +177,16 @@ Quest.playerEnter(activeChar); activeChar.sendPacket(new QuestList()); loadTutorial(activeChar); + + // ================================================================================ = + // Color System checks - Start ===================================================== + // Check if the custom PvP and PK color systems are enabled and if so ============== + // check the character's counters and apply any color changes that must be done. === + if (activeChar.getPvpKills()>=(Config.PVP_AMOUNT1) && (Config.PVP_COLOR_SYSTEM_ENABLED)) activeChar.updatePvPColor(activeChar.getPvpKills()); + if (activeChar.getPkKills()>=(Config.PK_AMOUNT1) && (Config.PK_COLOR_SYSTEM_ENABLED)) activeChar.updatePkColor(activeChar.getPkKills()); + // Color System checks - End ======================================================= + // ================================================================================ = + if (Config.PLAYER_SPAWN_PROTECTION > 0) activeChar.setProtection(true); @@ -3660,7 +3661,75 @@ DuelManager.getInstance().broadcastToOppositTeam(this, update); } } - + + // Custom PVP Color System - Start + public void updatePvPColor(int pvpKillAmount) + { + if (Config.PVP_COLOR_SYSTEM_ENABLED) + { + //Check if the character has GM access and if so, let them be. + if (isGM()) + return; + { + if ((pvpKillAmount >= (Config.PVP_AMOUNT1)) && (pvpKillAmount <= (Config.PVP_AMOUNT2))) + { + getAppearance().setNameColor(Config.NAME_COLOR_FOR_PVP_AMOUNT1); + } + else if ((pvpKillAmount >= (Config.PVP_AMOUNT2)) && (pvpKillAmount <= (Config.PVP_AMOUNT3))) + { + getAppearance().setNameColor(Config.NAME_COLOR_FOR_PVP_AMOUNT2); + } + else if ((pvpKillAmount >= (Config.PVP_AMOUNT3)) && (pvpKillAmount <= (Config.PVP_AMOUNT4))) + { + getAppearance().setNameColor(Config.NAME_COLOR_FOR_PVP_AMOUNT3); + } + else if ((pvpKillAmount >= (Config.PVP_AMOUNT4)) && (pvpKillAmount <= (Config.PVP_AMOUNT5))) + { + getAppearance().setNameColor(Config.NAME_COLOR_FOR_PVP_AMOUNT4); + } + else if (pvpKillAmount >= (Config.PVP_AMOUNT5)) + { + getAppearance().setNameColor(Config.NAME_COLOR_FOR_PVP_AMOUNT5); + } + } + } + } + //Custom PVP Color System - End + + // Custom Pk Color System - Start + public void updatePkColor(int pkKillAmount) + { + if (Config.PK_COLOR_SYSTEM_ENABLED) + { + //Check if the character has GM access and if so, let them be, like above. + if (isGM()) + return; + { + if ((pkKillAmount >= (Config.PK_AMOUNT1)) && (pkKillAmount <= (Config.PVP_AMOUNT2))) + { + getAppearance().setTitleColor(Config.TITLE_COLOR_FOR_PK_AMOUNT1); + } + else if ((pkKillAmount >= (Config.PK_AMOUNT2)) && (pkKillAmount <= (Config.PVP_AMOUNT3))) + { + getAppearance().setTitleColor(Config.TITLE_COLOR_FOR_PK_AMOUNT2); + } + else if ((pkKillAmount >= (Config.PK_AMOUNT3)) && (pkKillAmount <= (Config.PVP_AMOUNT4))) + { + getAppearance().setTitleColor(Config.TITLE_COLOR_FOR_PK_AMOUNT3); + } + else if ((pkKillAmount >= (Config.PK_AMOUNT4)) && (pkKillAmount <= (Config.PVP_AMOUNT5))) + { + getAppearance().setTitleColor(Config.TITLE_COLOR_FOR_PK_AMOUNT4); + } + else if (pkKillAmount >= (Config.PK_AMOUNT5)) + { + getAppearance().setTitleColor(Config.TITLE_COLOR_FOR_PK_AMOUNT5); + } + } + } + } + //Custom Pk Color System - End + @Override public final void updateEffectIcons(boolean partyOnly) { @@ -4996,6 +5065,10 @@ // Add karma to attacker and increase its PK counter setPvpKills(getPvpKills() + 1); + //Update the character's name color if they reached any of the 5 PvP levels. + updatePvPColor(getPvpKills()); + broadcastUserInfo(); + // Send a Server->Client UserInfo packet to attacker with its Karma and PK Counter sendPacket(new UserInfo(this)); } @@ -5047,6 +5120,10 @@ setPkKills(getPkKills() + 1); setKarma(getKarma() + newKarma); + //Update the character's title color if they reached any of the 5 PK levels. + updatePkColor(getPkKills()); + broadcastUserInfo(); + // Send a Server->Client UserInfo packet to attacker with its Karma and PK Counter sendPacket(new UserInfo(this)); } Получение вещей за PVP/PK Награды за пвп. Идем в gameserver.model.actor.instance.L2PcInstance.java Идём на 4538 строку...И вы увидите что то вроде этого: // Add karma to attacker and increase its PK counter setPvpKills(getPvpKills() + 1); И теперь после этого добавляем: // Give x y for a pvp kill addItem("Loot", x, y, this, true); sendMessage("You won y x for a pvp kill!"); Note: X это ID вещи,Y количество. Награды за пк: На строке 4605 вы увидите: // Add karma to attacker and increase its PK counter setPkKills(getPkKills() + 1); setKarma(getKarma() + newKarma); Как вставлять .info Команду. Сейчас я расскажу вам как зделать что бы при вводе команды .info показывался Htm файл в котором вы можете написать всё что пожелаете.Начнём! 1.Идём в L2_GameServer_IL \ SRC \ Main \ Java \ Net \ SF \ l2j \ GameServer \ Handler \ voicedcommandhandlers И создаём новый файл VoiceInfo.java /* * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see http://www.gnu.org/licenses/ */ package net.sf.l2j.gameserver.handler.voicedcommandhandlers; import net.sf.l2j.Config; import net.sf.l2j.gameserver.GameServer; import net.sf.l2j.gameserver.cache.HtmCache; import net.sf.l2j.gameserver.handler.IVoicedCommandHandler; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.serverpackets.NpcHtmlMessage; /** * @author Michiru * */ public class VoiceInfo implements IVoicedCommandHandler { private static String[] VOICED_COMMANDS = { "info" }; /* (non-Javadoc) * @see net.sf.l2j.gameserver.handler.IVoicedCommandHandler#useVoicedCommand(java.lang.String, net.sf.l2j.gameserver.model.actor.instance.L2PcInstance, java.lang.String) */ public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target) { String htmFile = "data/html/custom/xx.htm"; String htmContent = HtmCache.getInstance().getHtm(htmFile); if (htmContent != null) { NpcHtmlMessage infoHtml = new NpcHtmlMessage(1); infoHtml.setHtml(htmContent); activeChar.sendPacket(infoHtml); } else { activeChar.sendMessage("omg lame error! where is " + htmFile + " ! blame the Server Admin"); } return true; } public String[] getVoicedCommandList() { return VOICED_COMMANDS; } } Вы видите что бы ввести пусть к вашему файлу поменяйте строку htmFile = "data/html/custom/xx.htm"; Теперь идём в L2_GameServer_IL \ SRC \ Main \ Java \ Net \ SF \ l2j \ GameServer \ Handler \ октрываем voicecommandhandlers.java и вставляем: import net.sf.l2j.gameserver.handler.voicedcommandhandlers.VoiceInfo; После import net.sf.l2j.gameserver.handler.voicedcommandhandlers.CastleDoors; Потом идём на 54 строчку и вставляем: registerVoicedCommandHandler(new VoiceInfo());
    Автор темы: MrPassion, 4 янв 2013, ответов - 1, в разделе: LineAge 2
  3. MrPassion
  4. MrPassion
    Скачать [img] [img]
    Автор темы: MrPassion, 3 янв 2013, ответов - 4, в разделе: Оффтоп
  5. MrPassion
    1. level-name=world – имя карты, которая будет создана/загружена при запуске сервера. Можно взять карту из одиночной игры (они лежат по адресу %appdata%\.minecraft\saves\ ). По умолчанию будет создан новый мир с названием «world»; 2. allow-nether=true – доступен ли нижний мир (ад). True – доступен, false – нет (все созданные порталы будут деактивированы); 3. view-distance=10 – принудительно задает радиус обзора (и подгрузки). Важная настройка для загруженных серверов – т.к. напрямую влияет на нагрузку; 4. spawn-monsters=true – включает (true)/выключает (false) монстров на сервере. Сложность монстров по умолчанию равна сложности Easy; 5. online-mode=true – обязательно замените параметр на false (разрешает заходить на сервер игрокам с нелицензионной версией); 6. spawn-animals=true – включает (true)/выключает (false) животных; 7. max-players=20 – максимальное количество игроков; 8. server-ip= - IP сервера. Обязательно для указания (с.м. ниже) 9. pvp=true - включает (true)/выключает (false) урон между игроками 10. level-seed= - «опция, отвечающая за данные генератора случайных чисел при создании мира» (малопонятно, что делает, оставьте как есть); 11. server-port=25565 – порт соединения. По умолчанию 25565, но говорят, что можно играть на любом; 12. allow-flight=false - включает (true)/выключает (false) полет на сервере; 13. white-list=false - включает (true)/выключает (false) белый список игроков. Игрок, которого нет в белом списке – не сможет зайти на сервер. Отличная настройка, для создания официальных, приватных серверов «только для своих»
    Автор темы: MrPassion, 3 янв 2013, ответов - 0, в разделе: Оффтоп
  6. MrPassion
    Вот когда я искал такой мануал создал здесь на форуме тему типо помогите как можно реализовать русские ники на сервере Gracia Part 2 Тема и часа не простояла как DarkLoki ее удалил... У себя на сервере я их реализовал уже давно и сейчас подумал раз тут нету такой темы ее надо создать , я надеюсь ее никто не удалит, так как она пригодится всем=) Поехали!) В общем нечего сложного нету дело в патче и настройке сервера точных файлов которые отвечают за русские ники я не знаю но можете смело скачать с моего сайта (Так как здесь нельзя ссылки указывать, мой сайт указан у меня в профиле в разделе "связь") Автоапдайтером обновить любую пустую папку(где-то 17 мегабайт) (нужно положить сам апдайтер в новую папку и нажать Full Check) он вам скачает папку system дат файлы замените на свои остальные оставите кто больше шарит тот знает какие именно файлы отвечают за ники русские мб тут и напишет , уточнит ! потом в конфиге нужно добавить строку к УРЛ вот так l2emuproject-game\dist\config\network тут файл network.properties открываем и ищем строку URL = jdbc:mysql://localhost/L2Emu_DB Добовляем к ней надпись (?useUnicode=true&characterEncoding=UTF-8) получается URL = jdbc:mysql://localhost/L2Emu_DB?useUnicode=true&characterEncoding=UTF-8 кстати не забудьте сделать резерв бд удалить ее создать новую при создании выберите кодировку UTF-8 а потом обратно смело заливайте свою бд . Далее чтоб игроки могли создавать персонажей с русскими никами берем файл находящийся здесь l2emuproject-game\dist\config\main под именем nicks.properties открываем и в строках CnameTemplate = PetNameTemplate = ClanAllyNameTemplate = TitleTemplate = Добавляем надпись [A-Za-z0-9\u0410-\u042f\u0430-\u044f]{3,16} в итоге получаем # ------------------------ # Section: Nicks Templates # ------------------------ # These ones are regular expressions, visit for details # Note: Checking lengths are done server side, but keep it in pattern for future purposes # Character name ( Default [A-Za-z0-9-]{3,16} ) CnameTemplate = [A-Za-z0-9\u0410-\u042f\u0430-\u044f]{3,16} # Pet name ( Default [A-Za-z0-9-]{3,16} ) PetNameTemplate = [A-Za-z0-9\u0410-\u042f\u0430-\u044f]{3,16} # Clan and ally name ( [A-Za-z0-9 -]{3,16} ) ClanAllyNameTemplate = [A-Za-z0-9\u0410-\u042f\u0430-\u044f]{3,16} # Title ( [A-Za-z0-9 -\\[\\]<>\\(\\)\!|]{0,16} ) TitleTemplate = [A-Za-z0-9\u0410-\u042f\u0430-\u044f]{3,16}
    Автор темы: MrPassion, 3 янв 2013, ответов - 0, в разделе: LineAge 2
  7. MrPassion
    Мультиселлы содержат информацию о "специальных" магазинах, которые необходимы любому виду товара, который даётся в обмен при покупке другого предмета. Предметы, дающиеся игроком обозначаются как "ингридиенты". Предметы, которыми награждает НПЦ обозначаются как "продукты"(товары). Каждая запись в мультиселле может иметь много ингридиентов и много продуктов. Все файлы мультиселла имеют цифровое имя файла, которое сообщает ID мультиселла, перед .xml Списки мультиселла могут быть показаны с помощью ссылки на них из html, пример: <a action="bypass -h npc_%objectId%_exc_multisell 123456"> или <a action="bypass -h npc_%objectId%_multisell 123456"> где 123456, это id мультиселла (это должно отобразить содержимое файла "123456.xml") Разница между двумя ссылками в следующем: npc_%objectId%_multisell - отображает весь мультиселл. Это значит, что все записи xml будут показаны точно так, как они определы в самом файле. npc_%objectId%_exc_multisell - отобразит "только инвенторий" мультиселла. Это значит, что просматривается инвентарь игроков на предмет оружия и брони (не одетых) и отображает записи мультиселла, которые имеют это оружие и броню как "ингридиенты". Каждый файл мультиселла определяет "список". Список может иметь следующие атрибуты: 1. applyTaxes опционально; значение по умолчанию - "false"; если выставить значение "trye", то вся сумма адены в мультиселле будет обложена налогом (и налоговые деньги пойдут обладателю замка). Также 5/6 древней(ancient) адены облагается налогом в адене. Для примера: список облагаемого налогом с 10% налога, содержить запись, требующая 3600 древней адены, будет в действительности требовать 3600 древней адены И 300 аден! Это (10%)*(5/6)*(3600) 2. maintainEnchantment опционально; значение по умолчанию - "false"; Если выставить значение "true" и показать список в "ПОЛНОМ" режиме (целиком), это будет проигнорировано (работает как "false") Если выставить значение "true" и показать список в режиме "Только инвенторий", тогда любое оружие и броня обозначенная как продукт(товар) будет иметь такой же уровень энчанта как и оружие и броня, которое игрок даёт как ингридиенты. Для примера: в дополнительном мультиселлеSA, если игрок даёт Crystal Staff +3, то игрок получает Crystal Staff с Body Bless +3 Тэги <list></list> : Начинает и заканчивает список <item id="1"></item> : Начинает и заканчивает одну запись в списке <production id="itemID" count="amount"/> : Добавляет продукт к записи <ingredient id="ItemID" count="amount"/> : Добавляет ингридиент к записи <list applyTaxes="true"> <item id="1"> <production id="2" count="1"> <production id="3" count="1"> <ingredient id="10" count="1"> <ingredient id="57" count="200"> </item> <item id="2"> <production id="123" count="1"> <ingredient id="57" count="2030"> </item> </list>
    Автор темы: MrPassion, 3 янв 2013, ответов - 1, в разделе: LineAge 2
  8. MrPassion
    1. Удаление всех вещей с определённым ID у определнного персонажа. DELETE * FROM items WHERE item_id=(ид того что удалить) AND owner_id=(ИД перса, у когорого удалить) 2. Продажа всего по 1 адене. update etcitem set price=1 where price > 1; update weapon set price=1 where price > 1; update armor set price=1 where price > 1; 3. Показ всех вещей определённого чара. mysql> select a.name,"armor",a.crystal_type,i.count,i.enchant_level from armor a, items i where a.item_id=i.item_id and i.owner_id=идчара union select a.name,"weapon",a.crystal_type,i.count,i.enchant_level from weapon a, items i where a.item_id=i.item_id and i.owner_id=идчара union select a.name,"some",a.crystal_type,i.count,i.enchant_level from etcitem a, items i where a.item_id=i.item_id and i.owner_id=идчара; 4. Убирает вес. update etcitem set weight=1 where weight> 1; update weapon set weight=1 where weight> 1; update armor set weight=1 where weight > 1; 5. Дропаются только адены. DELETE FROM `droplist` WHERE (`itemId`!='57') AND (`category`='-1') 6. Шанс дропа аден 100% вместо 70%. PDATE `droplist` SET `droplist`.`chance`=1000000 WHERE `droplist`.`itemId`=57; 7. Удаляем всё, кроме вещей с ID 57, 77, 107. DELETE FROM droplist WHERE itemId NOT IN (57,77,107); 8. Нубы в лучшем No grade... REPLACE INTO char_templates VALUES (0, "Human Fighter", 0, 40, 43, 30, 21, 11, 25, 4, 72, 3, 47, 330, 213, 33, 44, 33, 115, 81900, -71338, 258271, -3104, 0, "1.1", "1.188", 9, 23, "1.1", "1.188", 8, "23.5", 33, 27, 219, 68, 625); REPLACE INTO char_templates VALUES (18, "Elf Fighter", 1, 36, 36, 35, 23, 14, 26, 4, 72, 3, 47, 345, 249, 36, 46, 36, 125, 73000, 45978, 41196, -3440, 0, "1.15", "1.242", "7.5", 24, "1.15", "1.242", "7.5", 23, 33, 27, 219, 68, 625); REPLACE INTO char_templates VALUES (31, "DE Fighter", 2, 41, 32, 34, 25, 12, 26, 4, 72, 3, 47, 342, 226, 35, 45, 35, 122, 69000, 28377, 10916, -4224, 0, "1.14", "1.2312", "7.5", 24, "1.14", "1.2312", 7, "23.5", 33, 27, 219, 68, 625); REPLACE INTO char_templates VALUES (44,'Orc Fighter', 3, 40, 47, 26, 18, 12, 27, 4, 72, 2, 48, 318, 226, 31, 42, 31, 117, 87000, -58192, -113408, -650, 0, "1.06", "1.144800", 11.0, 28.0,1.06, "1.144800", 7.0, 27.0, 33, 27, 219, 257, 625); REPLACE INTO char_templates VALUES (53, "Dwarf Fighter", 4, 39, 45, 29, 20, 10, 27, 4, 72, 3, 48, 327, 203, 33, 43, 33, 115, 83000, 108512, -174026, -400, 1, "1.09", "1.487196", 9, 18, "1.09", "1.487196", 5, 19, 33, 27, 219, 68, 625); REPLACE INTO char_templates VALUES (10, "Human Mage", 0, 22, 27, 21, 41, 20, 39, 2, 48, 7, 54, 303, 333, 28, 40, 28, 120, 62500, -90890, 248027, -3570, 0, "1.01", "0.87264", "7.5", "22.8", "1.01", "0.87264", "6.5", "22.5", 1105, 1102, 177, 68, 625); REPLACE INTO char_templates VALUES (25, "Elf Mage", 1, 21, 25, 24, 37, 23, 40, 2, 48, 6, 54, 312, 386, 30, 41, 30, 122, 62400, 46182, 41198, -3440, 0, "1.04", "0.89856", "7.5", 24, "1.04", "0.89856", "7.5", 23, 1105, 1102, 177, 68, 625); REPLACE INTO char_templates VALUES (38, "DE Mage", 2, 23, 24, 23, 44, 19, 37, 2, 48, 7, 53, 309, 316, 29, 41, 29, 122, 61000, 28295, 11063, -4224, 0, "1.14", "1.2312", "7.5", 24, "1.03", "0.88992", 7, "23.5", 1105, 1102, 177, 68, 625); REPLACE INTO char_templates VALUES (49, "Orc Mage", 3, 27, 31, 24, 31, 15, 42, 2, 48, 4, 56, 312, 265, 30, 41, 30, 121, 68000, -56682, -113730, -690, 0, "1.04", "0.89856", 7, "27.5", "1.04", "0.89856", 8, "25.5", 1105, 1102, 177, 257, 625); 9.удаляет из дроплиста куски, ресурсы и т.д DELETE FROM droplist WHERE itemId in (1674,1675,1676,1677,1678,1679,1680,1681,1682,1683 ,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693 ,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703 ,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713 ,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723 ,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733 ,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743 ,1744,1745,1746,1747,1748,1749,1750,1751,1752,1753 ,1754,1755,1756,1757,1758,1759,1760,1761,1762,1763 ,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773 ,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783 ,1784,1785,1864,1865,1866,1867,1868,1869,1870,1871 ,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881 ,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891 ,1892,1893,1894,1895,1896,1897,1898,1899,1900,1901 ,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911 ,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921 ,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931 ,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941 ,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951 ,1952,1953,1954,1955,1956,1957,1958,1959,1960,1961 ,1962,1963,1964,1965,1966,1967,1968,1969,1970,1971 ,1972,1973,1974,1975,1976,1977,1978,1979,1980,1981 ,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991 ,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001 ,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011 ,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021 ,2022,2023,2024,2025,2026,2027,2028,2029,2030,2031 ,2032,2033,2034,2035,2036,2037,2038,2039,2040,2041 ,2042,2043,2044,2045,2046,2047,2048,2049,2050,2051 ,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061 ,2062,2063,2064,2065,2066,2067,2068,2069,2070,2071 ,2072,2073,2074,2075,2076,2077,2078,2079,2080,2081 ,2082,2083,2084,2085,2086,2087,2088,2089,2090,2091 ,2092,2093,2094,2095,2096,2097,2098,2099,2100,2101 ,2102,2103,2104,2105,2106,2107,2108,2109,2110,2111 ,2112,2113,2114,2115,2116,2117,2118,2119,2120,2121 ,2122,2123,2124,2125,2126,2127,2128,2129,2130,2131 ,2132,2133,2134,2508,2917,2918,2919,2920,2921,2922 ,2923,2924,2925,2926,2927,2928,2929,2930,2931,2932 ,2933,2934,2935,2936,2937,2938,2939,2940,2941,2942 ,2943,2944,2945,2946,2947,2948,2949,2950,2951,2952 ,2953,2954,2955,2956,2957,2958,2959,2960,2961,2962 ,2963,2964,2965,2966,2967,2968,2969,3031,4039,4040 ,4041,4042,4043,4044,4045,4046,4047,4048,4049,4050 ,4051,4052,4053,4054,4055,4056,4057,4058,4059,4060 ,4061,4062,4063,4064,4065,4066,4067,4068,4069,4070 ,4071,4072,4073,4074,4075,4076,4077,4078,4079,4080 ,4081,4082,4083,4084,4085,4086,4087,4088,4089,4090 ,4091,4092,4093,4094,4095,4096,4097,4098,4099,4100 ,4101,4102,4103,4104,4105,4106,4107,4108,4109,4110 ,4111,4112,4113,4114,4115,4116,4117,4118,4119,4120 ,4121,4438,4439,5220,5478,5479,5480,5481,5482,5483 ,5484,5485,5486,5487,5488,5489,5490,5491,5492,5493 ,5494,5495,5496,5497,5498,5499,5500,5501,5502,5503 ,5504,5505,5506,5507,5508,5509,5510,5511,5512,5513 ,5514,5515,5516,5517,5518,5519,5520,5521,5522,5523 ,5524,5525,5526,5527,5528,5529,5530,5531,5532,5533 ,5534,5535,5536,5537,5538,5539,5540,5541,5542,5543 ,5544,5545,5546,5547,5548,5549,5550,5551,5552,5553 ,5554,5556,5557,5558,5559,5757,5758,5759,5760,5761 ,5762,5763,5764,6341,6342,6343,6344,6345,6346,6688 ,6689,6690,6691,6692,6693,6694,6695,6696,6697,6698 ,6699,6700,6701,6702,6703,6704,6705,6706,6707,6708 ,6709,6710,6711,6712,6713,6714,6904,6905,6906,6907 ,6908,6909,6910,6911,6912,6913,6914,6915,6916,7579 ,7684,7685,7686,7687,7688,7697,7698,8327,8328,8329 ,8330,8331,8332,8333,8334,8335,8336,8337,8338,8339 ,8340,8341,8342,8343,8344,8345,8346,8347,8348,8349 ,8351,8352,8353,8354,8355,8356,8357,8358,8359,8373 ,8374,8375,8376,8377,8378,8553,8658,8712,8713,8714 ,8715,8716,8717,8718,8719,8720,8721,8722,8723,8724 ,8725,8726,8727,8728,8729,8730,8731,8732,8733,8734 ,8735,8736,8737,8738,8739,8740,8741,8742,8743,8744 ,8745,8746,8747,8748,8749,8750,8751,8752,8753,8754 ,8755,8756,8757,8758,8759,8760,8761,8762,8764,8773 ,8777,8778,8781,8783,8784,8787,8868,8873,8874,8875 ,8876,9168,9169,9170,9530,9531,9532,9533,9534,9535 ,9536,9537,9538,9539,9540,9541,9542,9543,9544,9545 ,9573,9574,9575,9576,9616,9617,9618,9619,9620,9621 ,9622,9623,9624,9628,9629,9630,9631,9675,9693,9785 ,9991,9992,9993,10272,10397,10398,10399,10400,1040 1,10402,10403,10404,10405,10406,10407,10483,10484, 10485,10486,10546,10547); Нубы в ТОП REPLACE INTO char_templates VALUES (0, "Human Fighter", 0, 40, 43, 30, 21, 11, 25, 4, 72, 3, 47, 330, 213, 33, 44, 33, 115, 81900, -71338, 258271, -3104, 0, "1.1", "1.188", 9, 23, "1.1", "1.188", 8, "23.5", 34, 26, 68, 4222, 5588); REPLACE INTO char_templates VALUES (18, "Elf Fighter", 1, 36, 36, 35, 23, 14, 26, 4, 72, 3, 47, 345, 249, 36, 46, 36, 125, 73000, 45978, 41196, -3440, 0, "1.15", "1.242", "7.5", 24, "1.15", "1.242", "7.5", 23, 34, 26, 68, 4222, 5588); REPLACE INTO char_templates VALUES (31, "DE Fighter", 2, 41, 32, 34, 25, 12, 26, 4, 72, 3, 47, 342, 226, 35, 45, 35, 122, 69000, 28377, 10916, -4224, 0, "1.14", "1.2312", "7.5", 24, "1.14", "1.2312", 7, "23.5", 34, 26, 68, 4222, 5588); REPLACE INTO char_templates VALUES (44,'Orc Fighter', 3, 40, 47, 26, 18, 12, 27, 4, 72, 2, 48, 318, 226, 31, 42, 31, 117, 87000, -58192, -113408, -650, 0, "1.06", "1.144800", 11.0, 28.0,1.06, "1.144800", 7.0, 27.0, 34, 26, 257, 0, 5588); REPLACE INTO char_templates VALUES (53, "Dwarf Fighter", 4, 39, 45, 29, 20, 10, 27, 4, 72, 3, 48, 327, 203, 33, 43, 33, 115, 83000, 108512, -174026, -400, 1, "1.09", "1.487196", 9, 18, "1.09", "1.487196", 5, 19, 34, 26, 87, 4222, 5588); REPLACE INTO char_templates VALUES (10, "Human Mage", 0, 22, 27, 21, 41, 20, 39, 2, 48, 7, 54, 303, 333, 28, 40, 28, 120, 62500, -90890, 248027, -3570, 0, "1.01", "0.87264", "7.5", "22.8", "1.01", "0.87264", "6.5", "22.5", 1105, 1102, 177, 0, 5588); REPLACE INTO char_templates VALUES (25, "Elf Mage", 1, 21, 25, 24, 37, 23, 40, 2, 48, 6, 54, 312, 386, 30, 41, 30, 122, 62400, 46182, 41198, -3440, 0, "1.04", "0.89856", "7.5", 24, "1.04", "0.89856", "7.5", 23, 1105, 1102, 177, 0, 5588); REPLACE INTO char_templates VALUES (38, "DE Mage", 2, 23, 24, 23, 44, 19, 37, 2, 48, 7, 53, 309, 316, 29, 41, 29, 122, 61000, 28295, 11063, -4224, 0, "1.14", "1.2312", "7.5", 24, "1.03", "0.88992", 7, "23.5", 1105, 1102, 177, 0, 5588); REPLACE INTO char_templates VALUES (49, "Orc Mage", 3, 27, 31, 24, 31, 15, 42, 2, 48, 4, 56, 312, 265, 30, 41, 30, 121, 68000, -56682, -113730, -690, 0, "1.04", "0.89856", 7, "27.5", "1.04", "0.89856", 8, "25.5", 1105, 1102, 257, 0, 5588);
    Автор темы: MrPassion, 3 янв 2013, ответов - 2, в разделе: LineAge 2