Геройское свечение за 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 - Взято с АЧ Вещь для получения геройства после рестарта
По адресу net.sf.l2j.gameserver.handler.itemhandlers создаем новый файл под названием HeroItem.javaКод
/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package net.sf.l2j.gameserver.handler.itemhandlers;
import net.sf.l2j.gameserver.handler.IItemHandler;
import net.sf.l2j.gameserver.model.L2ItemInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PlayableInstance;
/**
*
* @author HanWik
*/
public class HeroItem implements IItemHandler
{
private static final int[] ITEM_IDS = { YOUR ITEM ID - replace here };
public void useItem(L2PlayableInstance playable, L2ItemInstance item)
{
if (!(playable instanceof L2PcInstance))
return;
L2PcInstance activeChar = (L2PcInstance)playable;
int itemId = item.getItemId();
if (itemId = Айди вашей вещи здесь!) // Вещь что бы стать героем
{
activeChar.setHero(true);
activeChar.broadcastUserInfo();
}
}
/**
* @see net.sf.l2j.gameserver.handler.IItemHandler#getItemIds()
*/
public int[] getItemIds()
{
return ITEM_IDS;
}
}
Открываем GameServer.java и добавляем это :
Код
import net.sf.l2j.gameserver.handler.itemhandlers.Harvester;
на
import net.sf.l2j.gameserver.handler.itemhandlers.HeroItem;
import net.sf.l2j.gameserver.handler.itemhandlers.Maps;
Код
_itemHandler.registerItemHandler(new BeastSpice());
на _itemHandler.registerItemHandler(new HeroItem());
© BrainFucker - Взято с АЧ для начала
sqlу кого л2жфри меняйте
com\l2jarchid на net\sf\l2j\ в
com\l2jarchid\gameserver\datatables\ArmorSetsTable.java Код
private void loadData()
{
Connection con;
try
{
con = L2DatabaseFactory.getInstance().getConnection();
PreparedStatement statement = con.prepareStatement("SELECT chest, legs, head, gloves, feet, skill_id, shield, shield_skill_id, enchant6skill, aurahero FROM armorsets");
ResultSet rset = statement.executeQuery();
while(rset.next())
{
int chest = rset.getInt("chest");
int legs = rset.getInt("legs");
int head = rset.getInt("head");
int gloves = rset.getInt("gloves");
int feet = rset.getInt("feet");
int skill_id = rset.getInt("skill_id");
int shield = rset.getInt("shield");
int shield_skill_id = rset.getInt("shield_skill_id");
int enchant6skill = rset.getInt("enchant6skill");
_armorSets.put(chest, new L2ArmorSet(chest, legs, head, gloves, feet,skill_id, shield, shield_skill_id, enchant6skill));
}
_log.config("ArmorSetsTable: Loaded "+_armorSets.size()+" armor sets.");
меняем
Код
private void loadData()
{
Connection con;
try
{
con = L2DatabaseFactory.getInstance().getConnection();
PreparedStatement statement = con.prepareStatement("SELECT chest, legs, head, gloves, feet, skill_id, shield, shield_skill_id, enchant6skill, aurahero FROM armorsets");
ResultSet rset = statement.executeQuery();
while(rset.next())
{
int chest = rset.getInt("chest");
int legs = rset.getInt("legs");
int head = rset.getInt("head");
int gloves = rset.getInt("gloves");
int feet = rset.getInt("feet");
int skill_id = rset.getInt("skill_id");
int shield = rset.getInt("shield");
int shield_skill_id = rset.getInt("shield_skill_id");
int enchant6skill = rset.getInt("enchant6skill");
[b] int aurahero = rset.getInt("aurahero");[/b]
_armorSets.put(chest, new L2ArmorSet(chest, legs, head, gloves, feet,skill_id, shield, shield_skill_id, enchant6skill, [b]aurahero[/b]));
}
_log.config("ArmorSetsTable: Loaded "+_armorSets.size()+" armor sets.");
далее файл
com\l2jarchid\gameserver\model\L2ArmoSet.javaКод
public final class L2ArmorSet
{
private final int _chest;
private final int _legs;
private final int _head;
private final int _gloves;
private final int _feet;
private final int _skillId;
private final int _shield;
private final int _shieldSkillId;
private final int _enchant6Skill;
public L2ArmorSet(int chest, int legs, int head, int gloves, int feet, int skill_id, int shield, int shield_skill_id, int enchant6skill)
{
_chest = chest;
_legs = legs;
_head = head;
_gloves = gloves;
_feet = feet;
_skillId = skill_id;
_shield = shield;
_shieldSkillId = shield_skill_id;
_enchant6Skill = enchant6skill;
}
Добавляем
после Код
public int getEnchant6skillId()
{
return _enchant6Skill;
}
добавляем
public int getauraHero()
{
return _auraHero;
}
следующий файл
com\l2jarchid\gameserver\model\L2ArmoSet.java Код
if(armorSet.containAll(player))
if(armorSet.containAll(player))
{
L2Skill skill = SkillTable.getInstance().getInfo(armorSet.getSkillId(),1);
if(skill != null)
{
player.addSkill(skill, false);
player.sendSkillList();
}
else
меняем
далее
Код
if(slot == PAPERDOLL_CHEST)
{
L2ArmorSet armorSet = ArmorSetsTable.getInstance().getSet(item.getItemId());
if(armorSet == null)
return;
remove = true;
removeSkillId1 = armorSet.getSkillId();
removeSkillId2 = armorSet.getShieldSkillId();
removeSkillId3 = armorSet.getEnchant6skillId();
}
else
{
L2ItemInstance chestItem = getPaperdollItem(PAPERDOLL_CHEST);
if(chestItem == null)
return;
L2ArmorSet armorSet = ArmorSetsTable.getInstance().getSet(chestItem.getItemId());
if(armorSet == null)
return;
if(armorSet.containItem(slot, item.getItemId())) // removed part of set
{
remove = true;
removeSkillId1 = armorSet.getSkillId();
removeSkillId2 = armorSet.getShieldSkillId();
removeSkillId3 = armorSet.getEnchant6skillId();
}
else if(armorSet.containShield(item.getItemId())) // removed shield
{
remove = true;
removeSkillId2 = armorSet.getShieldSkillId();
}
}
if(remove)
добавляем
далее файл
com\l2jarchid\gameserver\model\actor\instance\L2PcInstance.javaищем
Код
private boolean _noble = false;
private boolean _hero = false;
добавляем
Код
private boolean _epic = false;
далее ищем
Код
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();
}
после него добавляем
Код
public void setEpic(boolean epic)
{
if (epic)
{
sendMessage("Вы одели эпический сэт");
sendPacket(new UserInfo(this));
broadcastUserInfo();
}
else
{
sendPacket(new UserInfo(this));
broadcastUserInfo();
}
_epic = epic;
}
далее ищем
Код
public boolean isHero()
{
return _hero;
}
добавляем
Код
public boolean isEpic()
{
return _epic;
}
далее 2 файла пакетов
com\l2jarchid\gameserver\network\serverpackets\UserInfo.java
com\l2jarchid\gameserver\network\serverpackets\CharInfo.javaу обладателей других сборок файлы находятся
net\sf\l2j\gameserver\serverpackets\UserInfo.java
net\sf\l2j\gameserver\serverpackets\CharInfo.javaв обоих файлах ищем строку
Код
writeC((_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA)) ? 1 : 0); // Hero Aura
и заменяем на
Код
writeC((_activeChar.isHero() || (_activeChar.isEpic()) || (_activeChar.isGM() && Config.GM_HERO_AURA)) ? 1 : 0); //0x01: Hero Aura
в теории хватает записи только в юзеринфо, но иногда при одевании сэта аура появляется после любого последующего действия
в базе в таблице арморсетс в поле аурахеро ставьте 1 вместо 0 и ура! сэт светится