Jump to content

Recommended Posts

Posted

Add this to GS/java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java

 

if (activeChar.getPvpKills()>= 100)

{

activeChar.getAppearance().setNameColor(99FFFF);

}

if (activeChar.getPvpKills()>= 500)

{

activeChar.getAppearance().setNameColor(0099FF);

}

if (activeChar.getPvpKills()>= 1000)

{

activeChar.getAppearance().setNameColor(FF00FF);

}

if (activeChar.getPvpKills()>= 5000)

{

activeChar.getAppearance().setNameColor(000000);

}

 

Credits to Corey from l2jserver forum

Posted

I had some truble getting that work and I was getting all kind of erros...I still havent tested it but I share you the entire code of EnterWorld.java file with no errors...Just in case any of you cant manage it

 

/*

* 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 2, 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, write to the Free Software

* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA

* 02111-1307, USA.

*

* http://www.gnu.org/copyleft/gpl.html

*/

package net.sf.l2j.gameserver.clientpackets;

 

import java.util.logging.Logger;

 

import net.sf.l2j.Config;

import net.sf.l2j.gameserver.datatables.SkillSpellbookTable;

import net.sf.l2j.gameserver.datatables.SkillTable;

import net.sf.l2j.gameserver.datatables.SkillTreeTable;

import net.sf.l2j.gameserver.model.L2ItemInstance;

import net.sf.l2j.gameserver.model.L2PledgeSkillLearn;

import net.sf.l2j.gameserver.model.L2ShortCut;

import net.sf.l2j.gameserver.model.L2Skill;

import net.sf.l2j.gameserver.model.L2SkillLearn;

import net.sf.l2j.gameserver.model.actor.instance.L2FishermanInstance;

import net.sf.l2j.gameserver.model.actor.instance.L2FolkInstance;

import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance;

import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;

import net.sf.l2j.gameserver.model.actor.instance.L2VillageMasterInstance;

import net.sf.l2j.gameserver.network.SystemMessageId;

import net.sf.l2j.gameserver.serverpackets.ExStorageMaxCount;

import net.sf.l2j.gameserver.serverpackets.PledgeSkillList;

import net.sf.l2j.gameserver.serverpackets.ShortCutRegister;

import net.sf.l2j.gameserver.serverpackets.StatusUpdate;

import net.sf.l2j.gameserver.serverpackets.SystemMessage;

import net.sf.l2j.gameserver.util.IllegalPlayerAction;

import net.sf.l2j.gameserver.util.Util;

 

/**

* This class ...

*

* @version $Revision: 1.7.2.1.2.4 $ $Date: 2005/03/27 15:29:30 $

*/

public class RequestAquireSkill extends L2GameClientPacket

{

private static final String _C__6C_REQUESTAQUIRESKILL = "[C] 6C RequestAquireSkill";

 

private static Logger _log = Logger.getLogger(RequestAquireSkill.class.getName());

 

private int _id;

 

private int _level;

 

private int _skillType;

 

@Override

protected void readImpl()

{

_id = readD();

_level = readD();

_skillType = readD();

}

 

@Override

protected void runImpl()

{

 

L2PcInstance player = getClient().getActiveChar();

if (player == null)

return;

 

L2FolkInstance trainer = player.getLastFolkNPC();

if (trainer == null)

return;

 

int npcid = trainer.getNpcId();

 

if (!player.isInsideRadius(trainer, L2NpcInstance.INTERACTION_DISTANCE, false, false)

&& !player.isGM())

return;

 

if (!Config.ALT_GAME_SKILL_LEARN) player.setSkillLearningClassId(player.getClassId());

 

if (player.getSkillLevel(_id) >= _level)

{

// already knows the skill with this level

return;

}

 

L2Skill skill = SkillTable.getInstance().getInfo(_id, _level);

 

int counts = 0;

int _requiredSp = 10000000;

 

if (_skillType == 0)

{

 

L2SkillLearn[] skills = SkillTreeTable.getInstance()

.getAvailableSkills(player, player.getSkillLearningClassId());

 

for (L2SkillLearn s : skills)

{

L2Skill sk = SkillTable.getInstance().getInfo(s.getId(),

s.getLevel());

if (sk == null || sk != skill

|| !sk.getCanLearn(player.getSkillLearningClassId())

|| !sk.canTeachBy(npcid))

continue;

counts++;

_requiredSp = SkillTreeTable.getInstance().getSkillCost(player,

skill);

}

 

if (counts == 0 && !Config.ALT_GAME_SKILL_LEARN)

{

player

.sendMessage("You are trying to learn skill that u can't..");

Util.handleIllegalPlayerAction(player, "Player "

+ player.getName()

+ " tried to learn skill that he can't!!!",

IllegalPlayerAction.PUNISH_KICK);

return;

}

 

if (player.getSp() >= _requiredSp)

{

if (Config.SP_BOOK_NEEDED)

{

int spbId = SkillSpellbookTable.getInstance()

.getBookForSkill(skill);

 

if (skill.getLevel() == 1 && spbId > -1)

{

L2ItemInstance spb = player.getInventory()

.getItemByItemId(spbId);

 

if (spb == null)

{

// Haven't spellbook

player.sendPacket(new SystemMessage(

SystemMessageId.ITEM_MISSING_TO_LEARN_SKILL));

return;

}

 

// ok

player.destroyItem("Consume", spb, trainer, true);

}

}

} else

{

SystemMessage sm = new SystemMessage(

SystemMessageId.NOT_ENOUGH_SP_TO_LEARN_SKILL);

player.sendPacket(sm);

sm = null;

 

return;

}

} else if (_skillType == 1)

{

int costid = 0;

int costcount = 0;

// Skill Learn bug Fix

L2SkillLearn[] skillsc = SkillTreeTable.getInstance()

.getAvailableSkills(player);

 

for (L2SkillLearn s : skillsc)

{

L2Skill sk = SkillTable.getInstance().getInfo(s.getId(),

s.getLevel());

 

if (sk == null || sk != skill)

continue;

 

counts++;

costid = s.getIdCost();

costcount = s.getCostCount();

_requiredSp = s.getSpCost();

}

 

if (counts == 0)

{

player

.sendMessage("You are trying to learn skill that u can't..");

Util.handleIllegalPlayerAction(player, "Player "

+ player.getName()

+ " tried to learn skill that he can't!!!",

IllegalPlayerAction.PUNISH_KICK);

return;

}

 

if (player.getSp() >= _requiredSp)

{

if (!player.destroyItemByItemId("Consume", costid, costcount,

trainer, false))

{

// Haven't spellbook

player.sendPacket(new SystemMessage(

SystemMessageId.ITEM_MISSING_TO_LEARN_SKILL));

return;

}

 

SystemMessage sm = new SystemMessage(

SystemMessageId.DISSAPEARED_ITEM);

sm.addNumber(costcount);

sm.addItemName(costid);

sendPacket(sm);

sm = null;

} else

{

SystemMessage sm = new SystemMessage(

SystemMessageId.NOT_ENOUGH_SP_TO_LEARN_SKILL);

player.sendPacket(sm);

sm = null;

return;

}

}

else if (_skillType == 2) //pledgeskills TODO: Find appropriate system messages.

        {

            if (!player.isClanLeader())

            {

            // TODO: Find and add system msg

            player.sendMessage("This feature is available only for the clan leader");

            return;

            }

 

int itemId = 0;

            int repCost = 100000000;

            // Skill Learn bug Fix

            L2PledgeSkillLearn[] skills = SkillTreeTable.getInstance().getAvailablePledgeSkills(player);

 

            for (L2PledgeSkillLearn s : skills)

            {

                L2Skill sk = SkillTable.getInstance().getInfo(s.getId(), s.getLevel());

 

                if (sk == null || sk != skill)

                    continue;

 

                counts++;

                itemId = s.getItemId();

                repCost = s.getRepCost();

            }

 

            if (counts == 0)

            {

                player.sendMessage("You are trying to learn skill that u can't..");

                Util.handleIllegalPlayerAction(player, "Player " + player.getName()

                                               + " tried to learn skill that he can't!!!", IllegalPlayerAction.PUNISH_KICK);

                return;

            }

 

            if (player.getClan().getReputationScore() >= repCost)

            {

            if (Config.LIFE_CRYSTAL_NEEDED)

            {

            if (!player.destroyItemByItemId("Consume", itemId, 1, trainer, false))

            {

            // Haven't spellbook

            player.sendPacket(new SystemMessage(SystemMessageId.ITEM_MISSING_TO_LEARN_SKILL));

            return;

            }

 

            SystemMessage sm = new SystemMessage(SystemMessageId.DISSAPEARED_ITEM);

            sm.addItemName(itemId);

            sm.addNumber(1);

            sendPacket(sm);

            sm = null;

            }

            }

            else

            {

                SystemMessage sm = new SystemMessage(SystemMessageId.ACQUIRE_SKILL_FAILED_BAD_CLAN_REP_SCORE);

                player.sendPacket(sm);

                //sm = null;

                return;

            }

            player.getClan().setReputationScore(player.getClan().getReputationScore()-repCost, true);

            player.getClan().addNewSkill(skill);

 

            if (Config.DEBUG)

                _log.fine("Learned pledge skill " + _id + " for " + _requiredSp + " SP.");

 

            SystemMessage cr = new SystemMessage(SystemMessageId.S1_DEDUCTED_FROM_CLAN_REP);

            cr.addNumber(repCost);

            player.sendPacket(cr);

            SystemMessage sm = new SystemMessage(SystemMessageId.CLAN_SKILL_S1_ADDED);

            sm.addSkillName(_id);

            player.sendPacket(sm);

            sm = null;

           

            player.getClan().broadcastToOnlineMembers(new PledgeSkillList(player.getClan()));

           

            for(L2PcInstance member: player.getClan().getOnlineMembers(""))

            {

            member.sendSkillList();

            }

            ((L2VillageMasterInstance)trainer).showPledgeSkillList(player); //Maybe we shoud add a check here...

           

            return;

        }

 

else

{

_log.warning("Recived Wrong Packet Data in Aquired Skill - unk1:"

+ _skillType);

return;

}

 

player.addSkill(skill, true);

 

if (Config.DEBUG)

_log.fine("Learned skill " + _id + " for " + _requiredSp + " SP.");

 

player.setSp(player.getSp() - _requiredSp);

 

StatusUpdate su = new StatusUpdate(player.getObjectId());

su.addAttribute(StatusUpdate.SP, player.getSp());

player.sendPacket(su);

 

        SystemMessage sp = new SystemMessage(SystemMessageId.SP_DECREASED_S1);

        sp.addNumber(_requiredSp);

        sendPacket(sp);

 

SystemMessage sm = new SystemMessage(SystemMessageId.LEARNED_SKILL_S1);

sm.addSkillName(_id);

player.sendPacket(sm);

sm = null;

 

// update all the shortcuts to this skill

if (_level > 1)

{

L2ShortCut[] allShortCuts = player.getAllShortCuts();

 

for (L2ShortCut sc : allShortCuts)

{

if (sc.getId() == _id && sc.getType() == L2ShortCut.TYPE_SKILL)

{

L2ShortCut newsc = new L2ShortCut(sc.getSlot(), sc

.getPage(), sc.getType(), sc.getId(), _level, 1);

player.sendPacket(new ShortCutRegister(newsc));

player.registerShortCut(newsc);

}

}

}

 

if (trainer instanceof L2FishermanInstance)

((L2FishermanInstance) trainer).showSkillList(player);

else

trainer.showSkillList(player, player.getSkillLearningClassId());

 

if (_id >= 1368 && _id <= 1372) // if skill is expand sendpacket :)

{

ExStorageMaxCount esmc = new ExStorageMaxCount(player);

player.sendPacket(esmc);

}

}

 

/*

* (non-Javadoc)

*

* @see net.sf.l2j.gameserver.clientpackets.ClientBasePacket#getType()

*/

@Override

public String getType()

{

return _C__6C_REQUESTAQUIRESKILL;

}

}

 

I added it to the ClanNotify ...Probablly you can move that where-ever else...Thats where I got it errorless :)

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.




  • Posts

    • Opening December 6th at 19:00 (GMT +3)! Open Beta Test from November 30th!   https://l2soe.com/   🌟 Introducing L2 Saga of Eternia: A Revolution in Lineage 2 High Five! 🌟   Dear Lineage 2 enthusiasts, Prepare to witness the future of private servers! L2 Saga of Eternia is not just another High Five project—it’s a game-changing experience designed to compete with the giants of the Lineage 2 private server scene. Built for the community, by the community, we’re here to raise the bar in quality, innovation, and longevity. What Sets Us Apart? 💎 No Wipes, Ever Say goodbye to the fear of losing your progress. Our server is built to last and will never close. Stability and consistency are our promises to you. ⚔️ Weekly New Content Our dedicated development team ensures fresh challenges, events, and updates every week. From custom quests to exclusive features, there will always be something exciting to explore. 💰 No Pay-to-Win Skill and strategy matter most here. Enjoy a balanced gameplay environment where your achievements come from effort, not your wallet. 🌍 A Massive Community With 2000+ players expected, join a vibrant and active community of like-minded adventurers ready to conquer the world of Aden. 🏆 Fair and Competitive Gameplay Our systems are designed to promote healthy competition while avoiding abusive mechanics and exploits. 🔧 Professional Development From advanced bug fixes to carefully curated content, we pride ourselves on smooth performance, no lag, and unparalleled server quality. Key Features Chronicle: High Five with unique interface Rate: Dynamic x10 rates Class Balance: Carefully fine-tuned for a fair experience PvP Focused: PvP Ranking & aura display effect for 3 Top PvPers every week Custom Events: Seasonal and permanent events to keep you engaged Additional Features:   Custom Endgame Content: Introduce unique dungeons, raids, or zones unavailable in other servers. Player-Driven Economy: Implement a strong market system and avoid overinflated drops or rewards. Epic Siege Battles: Announce special large-scale sieges and PvP events. Incentives for Streamers and Clans: Attract influencers and big clans to boost server publicity. Roadmap Transparency: Share a public roadmap of planned updates to build trust and excitemen   Here you can read all the features: https://l2soe.com/features   [youtube]https://youtu.be/3DI3Rf4lTVQ?si=EQJ34gK-GazOhC32[/youtube] Join the Revolution! This is your chance to be part of something legendary. L2 Saga of Eternia is not just a server; it’s a movement to redefine what Lineage 2 can be. Whether you’re a seasoned veteran or a newcomer to the world of Aden, we invite you to experience Lineage 2 at its finest.   Official Launch Date: December 6th 2024 Website: https://l2soe.com/ Facebook: https://www.facebook.com/l2soe Discord: https://discord.com/invite/l2eternia   Let’s build the ultimate Lineage 2 experience together. See you in-game! 🎮
    • That's like a tutorial on how to run l2 on MacOS Xd but good job for the investigation. 
    • small update: dc robe set sold   wts adena 1kk = 1.5$ 
    • DISCORD : utchiha_market telegram : https://t.me/utchiha_market SELLIX STORE : https://utchihamkt.mysellix.io/ Join our server for more products : https://discord.gg/hood-services https://campsite.bio/utchihaamkt
    • Why adena in this sever so expensive 🙂
  • Topics

×
×
  • Create New...