Перейти к содержанию
Авторизация  
««†KENVOOD†»»

Немножко Плюшек Для Ядра

Рекомендуемые сообщения

И так начнем с нескольких svn что бы было что редактировать собсно)

1. L2j server : Ядро и датапак)

 

Компилить : ANT`ом

2. L2j archid : Ядро и датапак)

3. L2jfree : Ядро и датапак)

4. L2 emu : Ядро и датапак)

 

Теперь по теме что же можно сделать с вашим ядром)

 

*Скиллы героев на все сабклассы

 

Меняем по пути 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/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

/ / Alt game - Karma punishment
if (! Config.ALT_GAME_KARMA_PLAYER_CAN_USE_WAREHOUSE & & player.getKarma ()> 0) return;

* Система изменения цвета ника за PvP

(цвет ника будет меняться в зависимости от количества 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 появляется html окошко, содержание которого вы пишите сами

 

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 [url="http://www.gnu.org/licenses/"]http://www.gnu.org/licenses/[/url]
*/
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.S
tring, 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());

* Смена цвета ника клан лидера:

 

Index: L2_GameServer_It/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java

Скрытый текст
===================================================================
--- L2_GameServer_It/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 1434)
+++ L2_GameServer_It/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy)
@@ -1659,6 +1659,21 @@
{
return !_recomChars.contains(target.getObjectId());
}
+
+ public int getNameColor()
+ {
+ if ((getAppearance().getNameColor() == 0xFFFFFF) && (getClan() != null))
+ {
+ if (getClan().getHasCastle() > 0)
+ {
+ if (isClanLeader())
+ return 0xFFFF00; //TODO: fill in Lord's Color
+ else
+ return 0xFF33FF; //TODO: fill in Member's Color
+ }
+ }
+ return getAppearance().getNameColor();
+ }

/**
* Set the exp of the L2PcInstance before a death
Index: L2_GameServer_It/java/net/sf/l2j/gameserver/model/L2Clan.java
===================================================================
--- L2_GameServer_It/java/net/sf/l2j/gameserver/model/L2Clan.java (revision 1434)
+++ L2_GameServer_It/java/net/sf/l2j/gameserver/model/L2Clan.java (working copy)
@@ -34,6 +34,7 @@
import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.instancemanager.CastleManager;
import net.sf.l2j.gameserver.instancemanager.SiegeManager;
+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.serverpackets.ItemList;
@@ -580,6 +581,24 @@
public void setHasCastle(int hasCastle)
{
_hasCastle = hasCastle;
+ // Force online clan members to re-broadcast their info
+ // because castle status has changed. This is due to
+ // new custom name color changes related to a clan's
+ // castle (if any).
+ // This is expected to be an expensive operation though
+ // considering how often this is called it should not
+ // be too bad (called rarely).
+ for (L2ClanMember clanMember: _members.values())
+ {
+ L2PcInstance player = null;
+ try
+ {
+ player = L2World.getInstance().getPlayer(clanMember.getName());
+ }
+ catch(Exception e) {}
+ if (player != null)
+ player.broadcastUserInfo();
+ }
}
/**
* @param hasHideout The hasHideout to set.
Index: L2_GameServer_It/java/net/sf/l2j/gameserver/serverpackets/CharInfo.java
===================================================================
--- L2_GameServer_It/java/net/sf/l2j/gameserver/serverpackets/CharInfo.java (revision 1434)
+++ L2_GameServer_It/java/net/sf/l2j/gameserver/serverpackets/CharInfo.java (working copy)
@@ -332,7 +332,7 @@
writeD(_activeChar.GetFishy());
writeD(_activeChar.GetFishz());

- writeD(_activeChar.getAppearance().getNameColor());
+ writeD(_activeChar.getNameColor());

writeD(0x00); // isRunning() as in UserInfo?

Index: L2_GameServer_It/java/net/sf/l2j/gameserver/serverpackets/UserInfo.java
===================================================================
--- L2_GameServer_It/java/net/sf/l2j/gameserver/serverpackets/UserInfo.java (revision 1434)
+++ L2_GameServer_It/java/net/sf/l2j/gameserver/serverpackets/UserInfo.java (working copy)
@@ -300,7 +300,7 @@
writeD(_activeChar.GetFishx()); //fishing x
writeD(_activeChar.GetFishy()); //fishing y
writeD(_activeChar.GetFishz()); //fishing z
- writeD(_activeChar.getAppearance().getNameColor());
+ writeD(_activeChar.getNameColor());

//new c5
writeC(_activeChar.isRunning() ? 0x01 : 0x00); //changes the Speed display on Status Window

* Геройское свечение за 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

 

 

З.Ы. Спасибо BrainFucker за наводки)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...