L2J_CE

Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.
L2J_CE

L2J_CE Server


+18
Fes
che_
TIESTO
aSteroid
Tolo
De3MoN
kostiapp
Naik
CKA3KA
Hastelo
ConJurer
EGo^S.nova
ArtiShok
rash2x
Sp1tfire
xxxparkourxxx
SarGos
plavik
Участников: 22

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    plavik
    plavik


    Сообщения : 184
    Дата регистрации : 2010-03-08
    Возраст : 32
    Откуда : Дагестан

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  plavik Вт Мар 16, 2010 2:31 am

    Все свои предложенния фиксы и так далее данная тема созданна не для какого нить обсуждения а для "ваших" и моих естевственно фиксов в данной сборке (пишем токо предложения )
    Топик создан потому что в самой теме много мусора и просто ФЛУДА!
    По возможности Буду Реализовать ваши "фиксы" ну конечно с вашей помощью)
    SarGos
    SarGos


    Сообщения : 493
    Дата регистрации : 2010-03-08
    Возраст : 29
    Откуда : Украина

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Re: Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  SarGos Вт Мар 16, 2010 3:00 am

    plavik пишет:Все свои предложенния фиксы и так далее данная тема созданна не для какого нить обсуждения а для "ваших" и моих естевственно фиксов в данной сборке (пишем токо предложения )
    Топик создан потому что в самой теме много мусора и просто ФЛУДА!
    По возможности Буду Реализовать ваши "фиксы" ну конечно с вашей помощью)
    Зделать регистрацию на форт и отмену регистрации, на руских ХТМЛ-ках! Оч прошу Сказка!
    xxxparkourxxx
    xxxparkourxxx


    Сообщения : 26
    Дата регистрации : 2010-03-12
    Возраст : 31

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Re: Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  xxxparkourxxx Вт Мар 16, 2010 3:22 am

    Прошу сделать дофиксить все скилы,затем доделайте наконец квесты на ы80 и ы84 пузхи,доставьте НПС корорые выдают эти квесты.
    Еще если можно сделайте в конфигах отдельно дроп с эпик рб и отдельно дроп с обычных рб.
    Автоизучение скилов дофиксите и скилл заточки.
    В общем то все.Если что забыл,допишу позже
    avatar
    Sp1tfire


    Сообщения : 33
    Дата регистрации : 2010-02-27

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Re: Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  Sp1tfire Вт Мар 16, 2010 4:32 am

    skills 81+-
    test it
    xxxparkourxxx
    xxxparkourxxx


    Сообщения : 26
    Дата регистрации : 2010-03-12
    Возраст : 31

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Re: Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  xxxparkourxxx Вт Мар 16, 2010 4:48 am

    Так еще хотелось бы что бы вы добавили в конфиги определенную заточку.
    Например:
    Шанс заточки оружия от +1 до +15 85%
    Шанс заточки оружия от +15 до +25 60%

    честно говоря видел такой конфиг как одной сборке,не помню какой и если не трудно сделайте пожалуйста.
    plavik
    plavik


    Сообщения : 184
    Дата регистрации : 2010-03-08
    Возраст : 32
    Откуда : Дагестан

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Re: Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  plavik Вт Мар 16, 2010 5:07 pm

    ArtiShok пишет:Сказка, не могли бы вы добавить в сборку:

    Что бы избежать юзанья бага с саб классом я использую этот скрип что бы обезвредить всё оружие и доспехи с заменой класса.
    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);
    +                     
    +              }
    Взято с la2base.ru
    Решение со Лже Гмами.
    Этот патч позволит вам банить гма если он будет пытаться дать права тому кто не гм.

    Код:
    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.");
    Взято с la2base.ru

    ArtiShok пишет:Классно бы было если еще такое добавите с выводом в конфиги:
    Многие возможно помнят сервер Infinity в котором убив определенное количество людей в пвп убийца получал свечение Героя,а когда его убивали оно пропадало.

    Скрипт тестировался и работает 100%

    Код:
    Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
    ===================================================================
    --- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 1901)
    +++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy)
    @@ -488,6 +488,11 @@

    private boolean _noble = false;
    private boolean _hero = false;
    +
    + /** Special hero aura values */
    + private int heroConsecutiveKillCount = 0;
    + private boolean isPermaHero = false;
    + private boolean isPVPHero = false;

    /** The L2FolkInstance corresponding to the last Folk wich one the player talked. */
    private L2FolkInstance _lastFolkNpc = null;
    @@ -1971,6 +1976,13 @@
    public void setPvpKills(int pvpKills)
    {
    _pvpKills = pvpKills;
    +
    + // Set hero aura if pvp kills > 100
    + if (pvpKills > 100)
    + {
    + isPermaHero = true;
    + setHeroAura(true);
    + }
    }

    /**
    @@ -4678,6 +4690,14 @@

    stopRentPet();
    stopWaterTask();
    +
    + // Remove kill count for special hero aura if total pvp < 100
    + heroConsecutiveKillCount = 0;
    + if (!isPermaHero)
    + {
    + setHeroAura(false);
    + sendPacket(new UserInfo(this));
    + }
    return true;
    }

    @@ -4897,6 +4917,13 @@
    {
    // Add karma to attacker and increase its PK counter
    setPvpKills(getPvpKills() + 1);
    +
    + // Increase the kill count for a special hero aura
    + heroConsecutiveKillCount++;
    +
    + // If heroConsecutiveKillCount > 4 (5+ kills) give hero aura
    + if(heroConsecutiveKillCount > 4)
    + setHeroAura(true);

    // Send a Server->Client UserInfo packet to attacker with its Karma and PK Counter
    sendPacket(new UserInfo(this));
    @@ -8715,6 +8742,22 @@
    {
    return _blockList;
    }
    +
    + public void reloadPVPHeroAura()
    + {
    + sendPacket(new UserInfo(this));
    + }
    +
    + public void setHeroAura (boolean heroAura)
    + {
    + isPVPHero = heroAura;
    + return;
    + }
    +
    + public boolean getIsPVPHero()
    + {
    + return isPVPHero;
    + }

    public void setHero(boolean hero)
    {
    Index: java/net/sf/l2j/gameserver/serverpackets/UserInfo.java
    ===================================================================
    --- java/net/sf/l2j/gameserver/serverpackets/UserInfo.java (revision 1901)
    +++ java/net/sf/l2j/gameserver/serverpackets/UserInfo.java (working copy)
    @@ -337,7 +337,7 @@

    writeD(_activeChar.getClanCrestLargeId());
    writeC(_activeChar.isNoble() ? 1 : 0); //0x01: symbol on char menu ctrl+I
    - writeC((_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA)) ? 1 : 0); //0x01: Hero Aura
    + writeC((_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) || _activeChar.getIsPVPHero()) ? 1 : 0); //0x01: Hero Aura

    writeC(_activeChar.isFishing() ? 1 : 0); //Fishing Mode
    writeD(_activeChar.getFishx()); //fishing x

    Дополнительная информация:

    + // Set hero aura if pvp kills > 100
    + if (pvpKills > 100)

    Собрав 100 очков вы получите херо ауру,также как если бы вы зайдёте в игру и будете иметь 100 пвп,то после 101 пвп получите херо ауру

    + // If heroConsecutiveKillCount > 4 (5+ kills) give hero aura
    + if(heroConsecutiveKillCount > 4)
    Взято с la2base.ru

    Если можно то еще:

    Сейчас я вам роскажу как сделать так что бы Вещи которые ломаются ломались не на 0 а на указаное вами значения (+ конфиг)

    и так идем в
    Код:
    javanetsfl2jgameserverclientpackets

    И открываем там Файл: RequestEnchantItem.java
    Ищем там строку: 422423 Ищем такой ТЕКСТ:
    Код:
    item.setEnchantLevel(0);
                                    item.updateDatabase();

    Изменяем текст на такой:
    Код:
    item.setEnchantLevel(Config.Cancel_ENCHANT);
                                    item.updateDatabase();

    Потом идём в
    Код:
     javanetsfl2j

    Открываем Файл: Config.java
    и добавляем там такие строки:
    Код:
    //enchant
            public static int                          Cancel_ENCHANT;

    и ищем ENCHANT_CONFIG_FILE
    и добавляем ниже:
    Код:
    Cancel_ENCHANT = Integer.parseInt(enchantSettings.getProperty("EnchantCancel", "0"));

    и на последок добавляем в файле Configenchant.ini
    Код:
    # При не удачном точении вещь слетает на указаное значение
    # По умолчанию 0
    EnchantCancel = 0

    Где 0 ставим значение к которому хотим что бы слетали вещи к примеру "10"
    Взято с la2base.ru

    Так же есть предложение:
    Хтмл дропа разбивать на несколько страниц(к примеру у гранд боссов я не могу посмотреть потому что слишком длинный хтмл, или не могу посмотреть какой у человека бафф если есть фулл бафф)

    Вот готовое Добавлено от ArtiShok
    plavik
    plavik


    Сообщения : 184
    Дата регистрации : 2010-03-08
    Возраст : 32
    Откуда : Дагестан

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Re: Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  plavik Вт Мар 16, 2010 7:15 pm

    plavik пишет:теперь когда банишь пишет в объявления:
    Выглядит вот так:
    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! C7bf120a0258
    Код:
    /*
     * 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 handlers.admincommandhandlers;

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    import java.util.StringTokenizer;

    import net.sf.l2j.Config;
    import net.sf.l2j.L2DatabaseFactory;
    import net.sf.l2j.gameserver.Announcements;
    import net.sf.l2j.gameserver.LoginServerThread;
    import net.sf.l2j.gameserver.communitybbs.Manager.RegionBBSManager;
    import net.sf.l2j.gameserver.handler.IAdminCommandHandler;
    import net.sf.l2j.gameserver.model.L2World;
    import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
    import net.sf.l2j.gameserver.network.SystemMessageId;
    import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
    import net.sf.l2j.gameserver.util.GMAudit;

    /**
     * This class handles following admin commands:
     * - ban_acc <account_name> = changes account access level to -100 and logs him off. If no account is specified target's account is used.
     * - ban_char <char_name> = changes a characters access level to -100 and logs him off. If no character is specified target is used.
     * - ban_chat <char_name> <duration> = chat bans a character for the specified duration. If no name is specified the target is chat banned indefinitely.
     * - unban_acc <account_name> = changes account access level to 0.
     * - unban_char <char_name> = changes specified characters access level to 0.
     * - unban_chat <char_name> = lifts chat ban from specified player. If no player name is specified current target is used.
     * - jail charname [penalty_time] = jails character. Time specified in minutes. For ever if no time is specified.
     * - unjail charname = Unjails player, teleport him to Floran.
     *
     * @version $Revision: 1.1.6.3 $ $Date: 2005/04/11 10:06:06 $
     */
    public class AdminBan implements IAdminCommandHandler {
       private static final String[] ADMIN_COMMANDS =
       {
          "admin_ban", // returns ban commands
          "admin_ban_acc",
          "admin_ban_char",
          "admin_ban_chat",
          "admin_unban", // returns unban commands
          "admin_unban_acc",
          "admin_unban_char",
          "admin_unban_chat",
          "admin_jail",
          "admin_unjail"
       };

       public boolean useAdminCommand(String command, L2PcInstance activeChar)
       {
          StringTokenizer st = new StringTokenizer(command);
          st.nextToken();
          String player = "";
          int duration = -1;
          L2PcInstance targetPlayer = null;

          if (st.hasMoreTokens())
          {
             player = st.nextToken();
             targetPlayer = L2World.getInstance().getPlayer(player);

               if (st.hasMoreTokens())
               {
                   try
                   {
                       duration = Integer.parseInt(st.nextToken());
                   }
                   catch (NumberFormatException nfe)
                   {
                      activeChar.sendMessage("Invalid number format used: " + nfe);
                      return false;
                   }
               }
          }
          else
          {
             if (activeChar.getTarget() != null && activeChar.getTarget() instanceof L2PcInstance)
             {
                targetPlayer = (L2PcInstance)activeChar.getTarget();
             }
          }
          
          if (targetPlayer != null && targetPlayer.equals(activeChar))
          {
             activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_USE_ON_YOURSELF));
             return false;
          }
          
          if (command.startsWith("admin_ban ") || command.equalsIgnoreCase("admin_ban"))
          {
             activeChar.sendMessage("Available ban commands: //ban_acc, //ban_char, //ban_chat");
             return false;
          }
          else if (command.startsWith("admin_ban_acc"))
          {
             // May need to check usage in admin_ban_menu as well.
             
             if (targetPlayer == null && player.equals(""))
             {
                activeChar.sendMessage("Usage: //ban_acc <account_name> (if none, target char's account gets banned)");
                return false;
             }
             else if (targetPlayer == null)
             {
                LoginServerThread.getInstance().sendAccessLevel(player, -100);
                activeChar.sendMessage("Ban request sent for account "+player);
                auditAction(command, activeChar, player);
             }
             else
             {
                targetPlayer.setAccountAccesslevel(-100);
                targetPlayer.logout();
                RegionBBSManager.getInstance().changeCommunityBoard();
                activeChar.sendMessage("Account "+targetPlayer.getAccountName()+" banned.");
                auditAction(command, activeChar, targetPlayer.getAccountName());
             Announcements.getInstance().announceToAll("Игроку " + (targetPlayer.getName()) + " вписан бан аккаунта! Внимательно читайте правила сервера.");
             Announcements.getInstance().announceToAll("Автор бана: " + (activeChar.getName()) + ".");
             }
          }
          else if (command.startsWith("admin_ban_char"))
          {
             if (targetPlayer == null && player.equals(""))
             {
                activeChar.sendMessage("Usage: //ban_char <char_name> (if none, target char is banned)");
                return false;
             }
             else
             {
             Announcements.getInstance().announceToAll("Игроку " + (targetPlayer.getName()) + " вписан бан персонажа! Внимательно читайте правила сервера.");
             Announcements.getInstance().announceToAll("Автор бана: " + (activeChar.getName()) + ".");
                auditAction(command, activeChar, (targetPlayer == null ? player : targetPlayer.getName()));
                return changeCharAccessLevel(targetPlayer, player, activeChar, -100);
             }
          }
          else if (command.startsWith("admin_ban_chat"))
          {
             if (targetPlayer == null)
             {
                activeChar.sendMessage("Usage: //ban_chat <char_name> [penalty_minutes]");
                return false;
             }
             else if (targetPlayer.getPunishLevel().value() > L2PcInstance.PunishLevel.CHAT.value())
             {
                activeChar.sendMessage(targetPlayer.getName()+" is already jailed or banned.");
                return false;
                

             }
             
             String banLengthStr = "";

             targetPlayer.setPunishLevel(L2PcInstance.PunishLevel.CHAT, duration);
             if (duration > 0) banLengthStr = " for " + duration + " minutes";
                activeChar.sendMessage(targetPlayer.getName() + " is now chat banned" + banLengthStr + ".");
                auditAction(command, activeChar, targetPlayer.getName());
             if (duration > 0) Announcements.getInstance().announceToAll("Забанен чат игроку " + (targetPlayer.getName()) + "! Срок бана состовляет " + (duration) + " минут.");
             if (duration < 0) Announcements.getInstance().announceToAll("Забанен чат игроку " + (targetPlayer.getName()) + "! Навечно, либо до разблокировки.");
             Announcements.getInstance().announceToAll("Автор бана: " + (activeChar.getName()) + ".");
                      
          }
          else if (command.startsWith("admin_unban ") || command.equalsIgnoreCase("admin_unban"))
          {
             activeChar.sendMessage("Available unban commands: //unban_acc, //unban_char, //unban_chat");
             return false;
          }
          else if (command.startsWith("admin_unban_acc"))
          {
             // Need to check admin_unban_menu command as well in AdminMenu.java handler.
             
             if (targetPlayer != null)
             {
                activeChar.sendMessage(targetPlayer.getName()+" is currently online so must not be banned.");
                return false;
             }
             else if (!player.equals(""))
             {
                LoginServerThread.getInstance().sendAccessLevel(player, 0);
                activeChar.sendMessage("Unban request sent for account "+player);
                auditAction(command, activeChar, player);
             }
             else
             {
                activeChar.sendMessage("Usage: //unban_acc <account_name>");
                return false;
             }
          }
          else if (command.startsWith("admin_unban_char"))
          {
             if (targetPlayer == null && player.equals(""))
             {
                activeChar.sendMessage("Usage: //unban_char <char_name>");
                return false;
             }
             else if (targetPlayer != null)
             {
                activeChar.sendMessage(targetPlayer.getName()+" is currently online so must not be banned.");
                return false;
             }
             else
             {
                auditAction(command, activeChar, player);
                return changeCharAccessLevel(null, player, activeChar, 0);
             }
          }
          else if (command.startsWith("admin_unban_chat"))
          {
             if (targetPlayer == null)
             {
                activeChar.sendMessage("Usage: //unban_chat <onlinecharname>");
                return false;
             }
             else if (targetPlayer.isChatBanned())
                {
                   targetPlayer.setPunishLevel(L2PcInstance.PunishLevel.NONE, 0);
                   activeChar.sendMessage(targetPlayer.getName() + "'s chat ban has now been lifted.");
                   auditAction(command, activeChar, targetPlayer.getName());
             Announcements.getInstance().announceToAll("Игроку " + (targetPlayer.getName()) + " снят бан чата. Следите за своим языком, дабы подобного не происходило с вами.");
             Announcements.getInstance().announceToAll("Подобрел: " + (activeChar.getName()) + ".");
             Announcements.getInstance().announceToAll("Играйте только у нас! Сервер L2Supernova.");
                }
                else
                {
                   activeChar.sendMessage(targetPlayer.getName() + " is not currently chat banned.");
                }
          }
          else if (command.startsWith("admin_jail"))
          {
             if (targetPlayer == null && player.equals(""))
             {
                activeChar.sendMessage("Usage: //jail <charname> [penalty_minutes] (if no name is given, selected target is jailed indefinitely)");
                return false;
             }
             if (targetPlayer != null)
             {
                if (targetPlayer.isFlyingMounted())
                   targetPlayer.untransform();
                targetPlayer.setPunishLevel(L2PcInstance.PunishLevel.JAIL, duration);
                activeChar.sendMessage("Character "+targetPlayer.getName()+" jailed for "+(duration>0 ? duration+" minutes." : "ever!"));
                auditAction(command, activeChar, targetPlayer.getName());
             if (duration > 0) Announcements.getInstance().announceToAll("Игрок " + (targetPlayer.getName()) + " отправлен в тюрягу на срок в " + (duration) + " минут.");
             if (duration < 0) Announcements.getInstance().announceToAll("Игрок " + (targetPlayer.getName()) + " отправлен в тюрягу! Навечно, либо до помилования.");
             Announcements.getInstance().announceToAll("Судья: " + (activeChar.getName()) + ".");
             }
             else
             {
                jailOfflinePlayer(activeChar, player, duration);
                auditAction(command, activeChar, player);
             }
          }
          else if (command.startsWith("admin_unjail"))
          {
             if (targetPlayer == null && player.equals(""))
             {
                activeChar.sendMessage("Usage: //unjail <charname> (If no name is given target is used)");
                return false;
             }
             else if (targetPlayer != null)
             {
                targetPlayer.setPunishLevel(L2PcInstance.PunishLevel.NONE, 0);
                activeChar.sendMessage("Character "+targetPlayer.getName()+" removed from jail");
                auditAction(command, activeChar, targetPlayer.getName());
             Announcements.getInstance().announceToAll("Игрок " + (targetPlayer.getName()) + "был освобожден за примерное поведение и пару услуг ;) ");
             Announcements.getInstance().announceToAll("Надзиратель: " + (activeChar.getName()) + ".");
             }
             else
             {
                unjailOfflinePlayer(activeChar, player);
                auditAction(command, activeChar, player);
             }
          }
          return true;
       }
       
       private void auditAction(String fullCommand, L2PcInstance activeChar, String target)
       {
          if (!Config.GMAUDIT)
             return;
          
          String[] command = fullCommand.split(" ");
          
          GMAudit.auditGMAction(activeChar.getName()+" ["+activeChar.getObjectId()+"]", command[0], (target.equals("") ? "no-target" : target), (command.length > 2 ? command[2] : ""));
       }
       
       private void jailOfflinePlayer(L2PcInstance activeChar, String name, int delay)
       {
          Connection con = null;
          try
          {
             con = L2DatabaseFactory.getInstance().getConnection();

             PreparedStatement statement = con.prepareStatement("UPDATE characters SET x=?, y=?, z=?, punish_level=?, punish_timer=? WHERE char_name=?");
             statement.setInt(1, -114356);
             statement.setInt(2, -249645);
             statement.setInt(3, -2984);
             statement.setInt(4, L2PcInstance.PunishLevel.JAIL.value());
             statement.setLong(5, (delay > 0 ? delay * 60000L : 0));
             statement.setString(6, name);
             
             statement.execute();
             int count = statement.getUpdateCount();
             statement.close();
             
             if (count == 0)
                activeChar.sendMessage("Character not found!");
             else
                activeChar.sendMessage("Character " + name + " jailed for " + (delay > 0 ? delay + " minutes." : "ever!"));
          }
          catch (SQLException se)
          {
             activeChar.sendMessage("SQLException while jailing player");
             if (Config.DEBUG)
                se.printStackTrace();
          }
          finally
          {
             try
             {
                con.close();
             }
             catch (Exception e)
             {
                if (Config.DEBUG)
                   e.printStackTrace();
             }
          }
       }
       
       private void unjailOfflinePlayer(L2PcInstance activeChar, String name)
       {
          Connection con = null;
          try
          {
             con = L2DatabaseFactory.getInstance().getConnection();
             PreparedStatement statement = con.prepareStatement("UPDATE characters SET x=?, y=?, z=?, punish_level=?, punish_timer=? WHERE char_name=?");
             statement.setInt(1, 17836);
             statement.setInt(2, 170178);
             statement.setInt(3, -3507);
             statement.setInt(4, 0);
             statement.setLong(5, 0);
             statement.setString(6, name);
             statement.execute();
             int count = statement.getUpdateCount();
             statement.close();
             if (count == 0)
                activeChar.sendMessage("Character not found!");
             else
                activeChar.sendMessage("Character " + name + " removed from jail");
          }
          catch (SQLException se)
          {
             activeChar.sendMessage("SQLException while jailing player");
             if (Config.DEBUG)
                se.printStackTrace();
          }
          finally
          {
             try
             {
                con.close();
             }
             catch (Exception e)
             {
                if (Config.DEBUG)
                   e.printStackTrace();
             }
          }
       }
       
       private boolean changeCharAccessLevel(L2PcInstance targetPlayer, String player, L2PcInstance activeChar, int lvl)
       {
          if (targetPlayer != null)
          {
             targetPlayer.setAccessLevel(lvl);
             targetPlayer.sendMessage("Your character has been banned. Goodbye.");
             targetPlayer.logout();
             RegionBBSManager.getInstance().changeCommunityBoard();
             activeChar.sendMessage("The character " + targetPlayer.getName() + " has now been banned.");
          }
          else
          {
             Connection con = null;
             try
             {
                con = L2DatabaseFactory.getInstance().getConnection();
                PreparedStatement statement = con.prepareStatement("UPDATE characters SET accesslevel=? WHERE char_name=?");
                statement.setInt(1, lvl);
                statement.setString(2, player);
                statement.execute();
                int count = statement.getUpdateCount();
                statement.close();
                if (count == 0)
                {
                   activeChar.sendMessage("Character not found or access level unaltered.");
                   return false;
                }
                else
                   activeChar.sendMessage(player + " now has an access level of " + lvl);
             }
             catch (SQLException se)
             {
                activeChar.sendMessage("SQLException while changing character's access level");
                if (Config.DEBUG)
                   se.printStackTrace();
                return false;
             }
             finally
             {
                try
                {
                   con.close();
                }
                catch (Exception e) {}
             }
          }
          return true;
       }

       public String[] getAdminCommandList() {
          return ADMIN_COMMANDS;
       }
    }
    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! 7386773c5f89.png

    От ArtiShok Совместно С EGo^S.nova


    Последний раз редактировалось: plavik (Ср Мар 17, 2010 4:52 pm), всего редактировалось 4 раз(а)
    rash2x
    rash2x


    Сообщения : 7
    Дата регистрации : 2010-03-11

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Re: Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  rash2x Вт Мар 16, 2010 7:15 pm

    Пожалуйста Настройте Ивент Last Hero и CTF чтобы можно было указывать дату начала ивента ( Как сделан TvT ) Очеееееень прошу
    ArtiShok
    ArtiShok


    Сообщения : 1144
    Дата регистрации : 2010-03-10

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Re: Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  ArtiShok Ср Мар 17, 2010 12:00 am

    Кстати добавьте чтоб админ сервера мог смотреть и редактировать скилы мобов/нпсов

    Так же предлагаю сделать чтоб чампионы были двух видов слабенькие и сильные(настраивает адм) и подсветка у слабых синяя а у сильных красная...

    И чтобы при настройке ChampionPassive = True
    чтоб чампионы были не аграми и не социальны...

    Так же сделать банковскую систему, чтоб можно было настроить ID самому, а не только ГБ менять..
    xxxparkourxxx
    xxxparkourxxx


    Сообщения : 26
    Дата регистрации : 2010-03-12
    Возраст : 31

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Re: Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  xxxparkourxxx Ср Мар 17, 2010 12:15 am

    Еще доработайте ловушки у лукарей и арбалетчиков,они вообще не пашут.
    И еще Masterwork(тоесть желтый шмот при удачном крафте) статы норм поставьте, а то ничего не прибавляют.
    ArtiShok
    ArtiShok


    Сообщения : 1144
    Дата регистрации : 2010-03-10

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Re: Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  ArtiShok Ср Мар 17, 2010 1:55 am

    Доделать Town War чтоб нельзя было ресать и нельзя было прилететь( даже ч-з альт+Б или глобал гк)
    ArtiShok
    ArtiShok


    Сообщения : 1144
    Дата регистрации : 2010-03-10

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Re: Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  ArtiShok Ср Мар 17, 2010 4:04 am

    Так же очень прошу сделать квесты на Ы80 и Ы84... потому что очень не хватает их!!!
    EGo^S.nova
    EGo^S.nova


    Сообщения : 252
    Дата регистрации : 2010-03-06

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Re: Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  EGo^S.nova Ср Мар 17, 2010 5:39 am

    plavik пишет:теперь когда банишь пишет в объявления:
    Выглядит вот так:
    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! C7bf120a0258
    Код:
    /*
     * 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 handlers.admincommandhandlers;

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    import java.util.StringTokenizer;

    import net.sf.l2j.Config;
    import net.sf.l2j.L2DatabaseFactory;
    import net.sf.l2j.gameserver.Announcements;
    import net.sf.l2j.gameserver.LoginServerThread;
    import net.sf.l2j.gameserver.communitybbs.Manager.RegionBBSManager;
    import net.sf.l2j.gameserver.handler.IAdminCommandHandler;
    import net.sf.l2j.gameserver.model.L2World;
    import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
    import net.sf.l2j.gameserver.network.SystemMessageId;
    import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
    import net.sf.l2j.gameserver.util.GMAudit;

    /**
     * This class handles following admin commands:
     * - ban_acc <account_name> = changes account access level to -100 and logs him off. If no account is specified target's account is used.
     * - ban_char <char_name> = changes a characters access level to -100 and logs him off. If no character is specified target is used.
     * - ban_chat <char_name> <duration> = chat bans a character for the specified duration. If no name is specified the target is chat banned indefinitely.
     * - unban_acc <account_name> = changes account access level to 0.
     * - unban_char <char_name> = changes specified characters access level to 0.
     * - unban_chat <char_name> = lifts chat ban from specified player. If no player name is specified current target is used.
     * - jail charname [penalty_time] = jails character. Time specified in minutes. For ever if no time is specified.
     * - unjail charname = Unjails player, teleport him to Floran.
     *
     * @version $Revision: 1.1.6.3 $ $Date: 2005/04/11 10:06:06 $
     */
    public class AdminBan implements IAdminCommandHandler {
       private static final String[] ADMIN_COMMANDS =
       {
          "admin_ban", // returns ban commands
          "admin_ban_acc",
          "admin_ban_char",
          "admin_ban_chat",
          "admin_unban", // returns unban commands
          "admin_unban_acc",
          "admin_unban_char",
          "admin_unban_chat",
          "admin_jail",
          "admin_unjail"
       };

       public boolean useAdminCommand(String command, L2PcInstance activeChar)
       {
          StringTokenizer st = new StringTokenizer(command);
          st.nextToken();
          String player = "";
          int duration = -1;
          L2PcInstance targetPlayer = null;

          if (st.hasMoreTokens())
          {
             player = st.nextToken();
             targetPlayer = L2World.getInstance().getPlayer(player);

               if (st.hasMoreTokens())
               {
                   try
                   {
                       duration = Integer.parseInt(st.nextToken());
                   }
                   catch (NumberFormatException nfe)
                   {
                      activeChar.sendMessage("Invalid number format used: " + nfe);
                      return false;
                   }
               }
          }
          else
          {
             if (activeChar.getTarget() != null && activeChar.getTarget() instanceof L2PcInstance)
             {
                targetPlayer = (L2PcInstance)activeChar.getTarget();
             }
          }
          
          if (targetPlayer != null && targetPlayer.equals(activeChar))
          {
             activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_USE_ON_YOURSELF));
             return false;
          }
          
          if (command.startsWith("admin_ban ") || command.equalsIgnoreCase("admin_ban"))
          {
             activeChar.sendMessage("Available ban commands: //ban_acc, //ban_char, //ban_chat");
             return false;
          }
          else if (command.startsWith("admin_ban_acc"))
          {
             // May need to check usage in admin_ban_menu as well.
             
             if (targetPlayer == null && player.equals(""))
             {
                activeChar.sendMessage("Usage: //ban_acc <account_name> (if none, target char's account gets banned)");
                return false;
             }
             else if (targetPlayer == null)
             {
                LoginServerThread.getInstance().sendAccessLevel(player, -100);
                activeChar.sendMessage("Ban request sent for account "+player);
                auditAction(command, activeChar, player);
             }
             else
             {
                targetPlayer.setAccountAccesslevel(-100);
                targetPlayer.logout();
                RegionBBSManager.getInstance().changeCommunityBoard();
                activeChar.sendMessage("Account "+targetPlayer.getAccountName()+" banned.");
                auditAction(command, activeChar, targetPlayer.getAccountName());
             Announcements.getInstance().announceToAll("Игроку " + (targetPlayer.getName()) + " вписан бан аккаунта! Внимательно читайте правила сервера.");
             Announcements.getInstance().announceToAll("Автор бана: " + (activeChar.getName()) + ".");
             }
          }
          else if (command.startsWith("admin_ban_char"))
          {
             if (targetPlayer == null && player.equals(""))
             {
                activeChar.sendMessage("Usage: //ban_char <char_name> (if none, target char is banned)");
                return false;
             }
             else
             {
             Announcements.getInstance().announceToAll("Игроку " + (targetPlayer.getName()) + " вписан бан персонажа! Внимательно читайте правила сервера.");
             Announcements.getInstance().announceToAll("Автор бана: " + (activeChar.getName()) + ".");
                auditAction(command, activeChar, (targetPlayer == null ? player : targetPlayer.getName()));
                return changeCharAccessLevel(targetPlayer, player, activeChar, -100);
             }
          }
          else if (command.startsWith("admin_ban_chat"))
          {
             if (targetPlayer == null)
             {
                activeChar.sendMessage("Usage: //ban_chat <char_name> [penalty_minutes]");
                return false;
             }
             else if (targetPlayer.getPunishLevel().value() > L2PcInstance.PunishLevel.CHAT.value())
             {
                activeChar.sendMessage(targetPlayer.getName()+" is already jailed or banned.");
                return false;
                

             }
             
             String banLengthStr = "";

             targetPlayer.setPunishLevel(L2PcInstance.PunishLevel.CHAT, duration);
             if (duration > 0) banLengthStr = " for " + duration + " minutes";
                activeChar.sendMessage(targetPlayer.getName() + " is now chat banned" + banLengthStr + ".");
                auditAction(command, activeChar, targetPlayer.getName());
             if (duration > 0) Announcements.getInstance().announceToAll("Забанен чат игроку " + (targetPlayer.getName()) + "! Срок бана состовляет " + (duration) + " минут.");
             if (duration < 0) Announcements.getInstance().announceToAll("Забанен чат игроку " + (targetPlayer.getName()) + "! Навечно, либо до разблокировки.");
             Announcements.getInstance().announceToAll("Автор бана: " + (activeChar.getName()) + ".");
                      
          }
          else if (command.startsWith("admin_unban ") || command.equalsIgnoreCase("admin_unban"))
          {
             activeChar.sendMessage("Available unban commands: //unban_acc, //unban_char, //unban_chat");
             return false;
          }
          else if (command.startsWith("admin_unban_acc"))
          {
             // Need to check admin_unban_menu command as well in AdminMenu.java handler.
             
             if (targetPlayer != null)
             {
                activeChar.sendMessage(targetPlayer.getName()+" is currently online so must not be banned.");
                return false;
             }
             else if (!player.equals(""))
             {
                LoginServerThread.getInstance().sendAccessLevel(player, 0);
                activeChar.sendMessage("Unban request sent for account "+player);
                auditAction(command, activeChar, player);
             }
             else
             {
                activeChar.sendMessage("Usage: //unban_acc <account_name>");
                return false;
             }
          }
          else if (command.startsWith("admin_unban_char"))
          {
             if (targetPlayer == null && player.equals(""))
             {
                activeChar.sendMessage("Usage: //unban_char <char_name>");
                return false;
             }
             else if (targetPlayer != null)
             {
                activeChar.sendMessage(targetPlayer.getName()+" is currently online so must not be banned.");
                return false;
             }
             else
             {
                auditAction(command, activeChar, player);
                return changeCharAccessLevel(null, player, activeChar, 0);
             }
          }
          else if (command.startsWith("admin_unban_chat"))
          {
             if (targetPlayer == null)
             {
                activeChar.sendMessage("Usage: //unban_chat <onlinecharname>");
                return false;
             }
             else if (targetPlayer.isChatBanned())
                {
                   targetPlayer.setPunishLevel(L2PcInstance.PunishLevel.NONE, 0);
                   activeChar.sendMessage(targetPlayer.getName() + "'s chat ban has now been lifted.");
                   auditAction(command, activeChar, targetPlayer.getName());
             Announcements.getInstance().announceToAll("Игроку " + (targetPlayer.getName()) + " снят бан чата. Следите за своим языком, дабы подобного не происходило с вами.");
             Announcements.getInstance().announceToAll("Подобрел: " + (activeChar.getName()) + ".");
             Announcements.getInstance().announceToAll("Играйте только у нас! Сервер L2Supernova.");
                }
                else
                {
                   activeChar.sendMessage(targetPlayer.getName() + " is not currently chat banned.");
                }
          }
          else if (command.startsWith("admin_jail"))
          {
             if (targetPlayer == null && player.equals(""))
             {
                activeChar.sendMessage("Usage: //jail <charname> [penalty_minutes] (if no name is given, selected target is jailed indefinitely)");
                return false;
             }
             if (targetPlayer != null)
             {
                if (targetPlayer.isFlyingMounted())
                   targetPlayer.untransform();
                targetPlayer.setPunishLevel(L2PcInstance.PunishLevel.JAIL, duration);
                activeChar.sendMessage("Character "+targetPlayer.getName()+" jailed for "+(duration>0 ? duration+" minutes." : "ever!"));
                auditAction(command, activeChar, targetPlayer.getName());
             if (duration > 0) Announcements.getInstance().announceToAll("Игрок " + (targetPlayer.getName()) + " отправлен в тюрягу на срок в " + (duration) + " минут.");
             if (duration < 0) Announcements.getInstance().announceToAll("Игрок " + (targetPlayer.getName()) + " отправлен в тюрягу! Навечно, либо до помилования.");
             Announcements.getInstance().announceToAll("Судья: " + (activeChar.getName()) + ".");
             }
             else
             {
                jailOfflinePlayer(activeChar, player, duration);
                auditAction(command, activeChar, player);
             }
          }
          else if (command.startsWith("admin_unjail"))
          {
             if (targetPlayer == null && player.equals(""))
             {
                activeChar.sendMessage("Usage: //unjail <charname> (If no name is given target is used)");
                return false;
             }
             else if (targetPlayer != null)
             {
                targetPlayer.setPunishLevel(L2PcInstance.PunishLevel.NONE, 0);
                activeChar.sendMessage("Character "+targetPlayer.getName()+" removed from jail");
                auditAction(command, activeChar, targetPlayer.getName());
             Announcements.getInstance().announceToAll("Игрок " + (targetPlayer.getName()) + "был освобожден за примерное поведение и пару услуг ;) ");
             Announcements.getInstance().announceToAll("Надзиратель: " + (activeChar.getName()) + ".");
             }
             else
             {
                unjailOfflinePlayer(activeChar, player);
                auditAction(command, activeChar, player);
             }
          }
          return true;
       }
       
       private void auditAction(String fullCommand, L2PcInstance activeChar, String target)
       {
          if (!Config.GMAUDIT)
             return;
          
          String[] command = fullCommand.split(" ");
          
          GMAudit.auditGMAction(activeChar.getName()+" ["+activeChar.getObjectId()+"]", command[0], (target.equals("") ? "no-target" : target), (command.length > 2 ? command[2] : ""));
       }
       
       private void jailOfflinePlayer(L2PcInstance activeChar, String name, int delay)
       {
          Connection con = null;
          try
          {
             con = L2DatabaseFactory.getInstance().getConnection();

             PreparedStatement statement = con.prepareStatement("UPDATE characters SET x=?, y=?, z=?, punish_level=?, punish_timer=? WHERE char_name=?");
             statement.setInt(1, -114356);
             statement.setInt(2, -249645);
             statement.setInt(3, -2984);
             statement.setInt(4, L2PcInstance.PunishLevel.JAIL.value());
             statement.setLong(5, (delay > 0 ? delay * 60000L : 0));
             statement.setString(6, name);
             
             statement.execute();
             int count = statement.getUpdateCount();
             statement.close();
             
             if (count == 0)
                activeChar.sendMessage("Character not found!");
             else
                activeChar.sendMessage("Character " + name + " jailed for " + (delay > 0 ? delay + " minutes." : "ever!"));
          }
          catch (SQLException se)
          {
             activeChar.sendMessage("SQLException while jailing player");
             if (Config.DEBUG)
                se.printStackTrace();
          }
          finally
          {
             try
             {
                con.close();
             }
             catch (Exception e)
             {
                if (Config.DEBUG)
                   e.printStackTrace();
             }
          }
       }
       
       private void unjailOfflinePlayer(L2PcInstance activeChar, String name)
       {
          Connection con = null;
          try
          {
             con = L2DatabaseFactory.getInstance().getConnection();
             PreparedStatement statement = con.prepareStatement("UPDATE characters SET x=?, y=?, z=?, punish_level=?, punish_timer=? WHERE char_name=?");
             statement.setInt(1, 17836);
             statement.setInt(2, 170178);
             statement.setInt(3, -3507);
             statement.setInt(4, 0);
             statement.setLong(5, 0);
             statement.setString(6, name);
             statement.execute();
             int count = statement.getUpdateCount();
             statement.close();
             if (count == 0)
                activeChar.sendMessage("Character not found!");
             else
                activeChar.sendMessage("Character " + name + " removed from jail");
          }
          catch (SQLException se)
          {
             activeChar.sendMessage("SQLException while jailing player");
             if (Config.DEBUG)
                se.printStackTrace();
          }
          finally
          {
             try
             {
                con.close();
             }
             catch (Exception e)
             {
                if (Config.DEBUG)
                   e.printStackTrace();
             }
          }
       }
       
       private boolean changeCharAccessLevel(L2PcInstance targetPlayer, String player, L2PcInstance activeChar, int lvl)
       {
          if (targetPlayer != null)
          {
             targetPlayer.setAccessLevel(lvl);
             targetPlayer.sendMessage("Your character has been banned. Goodbye.");
             targetPlayer.logout();
             RegionBBSManager.getInstance().changeCommunityBoard();
             activeChar.sendMessage("The character " + targetPlayer.getName() + " has now been banned.");
          }
          else
          {
             Connection con = null;
             try
             {
                con = L2DatabaseFactory.getInstance().getConnection();
                PreparedStatement statement = con.prepareStatement("UPDATE characters SET accesslevel=? WHERE char_name=?");
                statement.setInt(1, lvl);
                statement.setString(2, player);
                statement.execute();
                int count = statement.getUpdateCount();
                statement.close();
                if (count == 0)
                {
                   activeChar.sendMessage("Character not found or access level unaltered.");
                   return false;
                }
                else
                   activeChar.sendMessage(player + " now has an access level of " + lvl);
             }
             catch (SQLException se)
             {
                activeChar.sendMessage("SQLException while changing character's access level");
                if (Config.DEBUG)
                   se.printStackTrace();
                return false;
             }
             finally
             {
                try
                {
                   con.close();
                }
                catch (Exception e) {}
             }
          }
          return true;
       }

       public String[] getAdminCommandList() {
          return ADMIN_COMMANDS;
       }
    }
    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! 7386773c5f89.png

    От ArtiShok

    Хотелось бы увидеть себя в авторстве, поскольку этот русский код писал я) Если внимательно его посмотреть - там даже проскакивает рабочее название моего сервака. Хотя согласен, первоначально идея была Artishok'а.




    Вот незнаю как лучше, но лично хотел бы конфиг заточки вынести в отдельный файл enchantItemData.xml ИМХО- довольно удобно, хотя и пропадает разбивка шанса точки на броню/бижу
    ArtiShok
    ArtiShok


    Сообщения : 1144
    Дата регистрации : 2010-03-10

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Re: Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  ArtiShok Ср Мар 17, 2010 11:46 am

    Хотелось бы увидеть заточку в мультиселле:
    В Config.java:

    Код:
    public static boolean ENABLE_MODIFY_ENCHANT_MULTISELL;
        public static Map<Integer, Integer> ENCHANT_MULTISELL_LIST;

    ==================================================

    ENABLE_MODIFY_ENCHANT_MULTISELL = Boolean.parseBoolean(enchantSettings.getProperty("EnableModifyEnchantMultisell", "False"));

                    if (ENABLE_MODIFY_ENCHANT_MULTISELL)
                    {
                        ENCHANT_MULTISELL_LIST = new FastMap<Integer, Integer>();
                        String[] propertySplit;
                        propertySplit = enchantSettings.getProperty("EnchantMultisellList", "").split(";");
                        for (String enchant : propertySplit)
                        {
                            String[] enchantSplit = enchant.split(",");
                            if (enchantSplit.length != 2)
                            {
                                System.out.println("[EnchantMultisellList]: invalid config property -> EnchantMultisellList \"" + enchant + "\"");
                            } else
                            {
                                try
                                {
                                    ENCHANT_MULTISELL_LIST.put(Integer.parseInt(enchantSplit[0]), Integer.parseInt(enchantSplit[1]));
                                } catch (NumberFormatException nfe)
                                {
                                    if (!enchant.equals(""))
                                    {
                                        System.out.println("[EnchantMultisellList]: invalid config property -> EnchantMultisellList \"" + enchantSplit[0] + "\"" + enchantSplit[1]);
                                    }
                                }
                            }
                        }
                    }


    В MultiSellChoose.java:

    Код:
                        if (Config.ENABLE_MODIFY_ENCHANT_MULTISELL)
                        {
                            if (Config.ENCHANT_MULTISELL_LIST.containsKey(_listId))
                            {
                                product.setEnchantLevel(Config.ENCHANT_MULTISELL_LIST.get(_listId));
                            }
                        }

    Ну и добавим строку в конфиги:
    Код:

    # Продавать заточенные вещи через мультиселлы
    EnableModifyEnchantMultisell = False
    # Номера мультиселлов в которых будут затачиваться вещи при продаже
    # Например: EnchantMultisellList=1001,10;1002,5
    # Означает что в мультиселле 1001.xml все вещи при продаже будут точиться на 10
    # и в мультиселле 1002.xml соответственно точиться на 5
    # ВНИМАНИЕ! Не ставьте точку с запятой в самом конце и пишите все без пробелов!
    EnchantMultisellList=1000,0;1001,0
    Взято тоже c la2base.ru

    Кстати можно ли как нибудь улучшить защиту от ботов? потому что сборка не всегда находит ботов.
    plavik
    plavik


    Сообщения : 184
    Дата регистрации : 2010-03-08
    Возраст : 32
    Откуда : Дагестан

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Re: Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  plavik Ср Мар 17, 2010 5:02 pm

    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));
    }
    plavik
    plavik


    Сообщения : 184
    Дата регистрации : 2010-03-08
    Возраст : 32
    Откуда : Дагестан

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Re: Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  plavik Ср Мар 17, 2010 5:06 pm

    Геройское свечение за PVP

    Примечание: Это не будет давать геройские скиллы или давать возможность покупать геройское оружие,только ауру(свечение).

    Код:
    Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
    ===================================================================
    --- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 1901)
    +++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy)
    @@ -488,6 +488,11 @@

    private boolean _noble = false;
    private boolean _hero = false;
    +
    + /** Special hero aura values */
    + private int heroConsecutiveKillCount = 0;
    + private boolean isPermaHero = false;
    + private boolean isPVPHero = false;

    /** The L2FolkInstance corresponding to the last Folk wich one the player talked. */
    private L2FolkInstance _lastFolkNpc = null;
    @@ -1971,6 +1976,13 @@
    public void setPvpKills(int pvpKills)
    {
    _pvpKills = pvpKills;
    +
    + // Set hero aura if pvp kills > 100
    + if (pvpKills > 100)
    + {
    + isPermaHero = true;
    + setHeroAura(true);
    + }
    }

    /**
    @@ -4678,6 +4690,14 @@

    stopRentPet();
    stopWaterTask();
    +
    + // Remove kill count for special hero aura if total pvp < 100
    + heroConsecutiveKillCount = 0;
    + if (!isPermaHero)
    + {
    + setHeroAura(false);
    + sendPacket(new UserInfo(this));
    + }
    return true;
    }

    @@ -4897,6 +4917,13 @@
    {
    // Add karma to attacker and increase its PK counter
    setPvpKills(getPvpKills() + 1);
    +
    + // Increase the kill count for a special hero aura
    + heroConsecutiveKillCount++;
    +
    + // If heroConsecutiveKillCount > 4 (5+ kills) give hero aura
    + if(heroConsecutiveKillCount > 4)
    + setHeroAura(true);

    // Send a Server->Client UserInfo packet to attacker with its Karma and PK Counter
    sendPacket(new UserInfo(this));
    @@ -8715,6 +8742,22 @@
    {
    return _blockList;
    }
    +
    + public void reloadPVPHeroAura()
    + {
    + sendPacket(new UserInfo(this));
    + }
    +
    + public void setHeroAura (boolean heroAura)
    + {
    + isPVPHero = heroAura;
    + return;
    + }
    +
    + public boolean getIsPVPHero()
    + {
    + return isPVPHero;
    + }

    public void setHero(boolean hero)
    {
    Index: java/net/sf/l2j/gameserver/serverpackets/UserInfo.java
    ===================================================================
    --- java/net/sf/l2j/gameserver/serverpackets/UserInfo.java (revision 1901)
    +++ java/net/sf/l2j/gameserver/serverpackets/UserInfo.java (working copy)
    @@ -337,7 +337,7 @@

    writeD(_activeChar.getClanCrestLargeId());
    writeC(_activeChar.isNoble() ? 1 : 0); //0x01: symbol on char menu ctrl+I
    - writeC((_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA)) ? 1 : 0); //0x01: Hero Aura
    + writeC((_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) || _activeChar.getIsPVPHero()) ? 1 : 0); //0x01: Hero Aura

    writeC(_activeChar.isFishing() ? 1 : 0); //Fishing Mode
    writeD(_activeChar.getFishx()); //fishing x
    ConJurer
    ConJurer


    Сообщения : 2
    Дата регистрации : 2010-03-15

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Re: Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  ConJurer Ср Мар 17, 2010 5:15 pm

    Сделайте если не затруднит, вот что:
    Откат скиллов , работает не правильно . На него не должны влиять показатели : скорости атаки и скорости каста! (по оффу)
    Как я думаю или знаю это делается в ядре.

    Вот : http://www.deiceland.org/pag/final.php (не реклама)
    Это в разделе "Изменения в существующих скиллах", самое первое.
    Эта информация есть на многих сайтах.
    Hastelo
    Hastelo


    Сообщения : 39
    Дата регистрации : 2010-03-07
    Возраст : 34
    Откуда : TankoGrad

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Re: Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  Hastelo Ср Мар 17, 2010 5:39 pm

    ConJurer пишет:Сделайте если не затруднит, вот что:
    Откат скиллов , работает не правильно . На него не должны влиять показатели : скорости атаки и скорости каста! (по оффу)
    Как я думаю или знаю это делается в ядре.
    если это не реализовано тогда присоеденяюсь к просьбе,ссылку предоставить не могу но точно знаю что на откат влияет скорость атаки и скорость каста
    CKA3KA
    CKA3KA
    Admin


    Сообщения : 285
    Дата регистрации : 2010-02-09

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Re: Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  CKA3KA Ср Мар 17, 2010 7:37 pm

    plavik пишет:

    в новой сборке

    # ---------------------------------------------------------------------------
    # Hero Aura за PvP
    # ---------------------------------------------------------------------------
    # По умолчанию: False
    AllowHeroAuraPvP = false

    # Количество ПВП после которого дают ауру
    CountPvPHeroAura = 100

    # при убийстве 5 раз подряд дают ауру героя (может быть неточно)
    heroConsecutiveKillCount = 4
    CKA3KA
    CKA3KA
    Admin


    Сообщения : 285
    Дата регистрации : 2010-02-09

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Re: Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  CKA3KA Ср Мар 17, 2010 7:53 pm

    plavik пишет:

    # При не удачном точении вещь слетает на указаное значение
    # По умолчанию 0
    EnchantCancel = 0

    добавлено
    ArtiShok
    ArtiShok


    Сообщения : 1144
    Дата регистрации : 2010-03-10

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Re: Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  ArtiShok Ср Мар 17, 2010 8:13 pm

    Admin пишет:
    plavik пишет:

    # При не удачном точении вещь слетает на указаное значение
    # По умолчанию 0
    EnchantCancel = 0

    добавлено
    огромное спасибо..а на счет ГМов сделаете? чтоб в конфигах выводило включение тех функций...
    ArtiShok
    ArtiShok


    Сообщения : 1144
    Дата регистрации : 2010-03-10

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Re: Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  ArtiShok Ср Мар 17, 2010 8:20 pm

    хотелось бы чтоб реализовали:
    bypass -h npc_%objectId%_Heal - хил
    bypass -h npc_%objectId%_removeBuffs - снятие баффов
    Naik
    Naik


    Сообщения : 307
    Дата регистрации : 2010-03-06

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Re: Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  Naik Ср Мар 17, 2010 11:05 pm

    ConJurer пишет:Сделайте если не затруднит, вот что:
    Откат скиллов , работает не правильно . На него не должны влиять показатели : скорости атаки и скорости каста! (по оффу)
    Как я думаю или знаю это делается в ядре.

    +1, в финале так оно и есть.

    Проше добавить востановление оффлайн трейдеров!!!
    ArtiShok
    ArtiShok


    Сообщения : 1144
    Дата регистрации : 2010-03-10

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Re: Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  ArtiShok Чт Мар 18, 2010 12:29 am

    При
    Код:

    GMShowAnnouncerName = False
    Почему то все равно показывает кто написал анонс... Smile
    kostiapp
    kostiapp


    Сообщения : 8
    Дата регистрации : 2010-03-16
    Возраст : 31
    Откуда : Молдавия,Рыбница

    Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме ! Empty Re: Суда пишем Все Предлогаемые Фиксы на сервер и Свои Добавления! Просьба к Akimm007 удалять флуд не по теме !

    Сообщение  kostiapp Чт Мар 18, 2010 1:25 am

    kostiapp пишет:Предлогаю сделать конфиг.
    Идея его такова:когда убиваеш персонажа в пвп чтоб выдавался определенный итем.И конечно же не будет даваться если персонажи с одного IP.
    Предлогаю еще реализовать евент PC Bang Points

      Текущее время Пт Окт 04, 2024 7:30 am