Jump to content
  • 0

[Request] NPC Crests


Question

Posted

Hello ....i saw this but is for gracia ....someone to make it for interlude ? can?

 

Index: java/config/NPC.properties

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

--- java/config/NPC.properties (revision 4129)

+++ java/config/NPC.properties (working copy)

@@ -46,6 +46,10 @@

# Default: False

ShowNpcLevel = False

 

+# Show clan, alliance crests for territory NPCs without quests

+# Default: False

+ShowCrestWithoutQuest = False

+

# Do you want mobs to drop Vitality resplenishing herbs?

# Notes:

# Works only if EnableVitality = True

Index: java/net/sf/l2j/gameserver/network/serverpackets/AbstractNpcInfo.java

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

--- java/net/sf/l2j/gameserver/network/serverpackets/AbstractNpcInfo.java (revision 4129)

+++ java/net/sf/l2j/gameserver/network/serverpackets/AbstractNpcInfo.java (working copy)

@@ -15,7 +15,10 @@

package net.sf.l2j.gameserver.network.serverpackets;

 

import net.sf.l2j.Config;

+import net.sf.l2j.gameserver.datatables.ClanTable;

import net.sf.l2j.gameserver.instancemanager.CursedWeaponsManager;

+import net.sf.l2j.gameserver.instancemanager.TownManager;

+import net.sf.l2j.gameserver.model.L2Clan;

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

import net.sf.l2j.gameserver.model.actor.L2Character;

import net.sf.l2j.gameserver.model.actor.L2Decoy;

@@ -86,6 +89,10 @@

    public static class NpcInfo extends AbstractNpcInfo

    {

    private L2Npc _npc;

+    private int _clanCrest = 0;

+ private int _allyCrest = 0;

+ private int _allyId = 0;

+ private int _clanId = 0;

   

    public NpcInfo(L2Npc cha, L2Character attacker)

    {

@@ -108,15 +115,29 @@

        _title = cha.getTitle(); // On every subclass

 

            if (Config.SHOW_NPC_LVL && _npc instanceof L2MonsterInstance)

-        {

-    String t = "Lv " + cha.getLevel() + (cha.getAggroRange() > 0 ? "*" : "");

-    if (_title != null)

-    t += " " + _title;

-

-    _title = t;

-        }

-    }

+ {

+ String t = "Lv " + cha.getLevel() + (cha.getAggroRange() > 0 ? "*" : "");

+ if (_title != null)

+ t += " " + _title;

+

+ _title = t;

+ }

   

+    // npc crest of owning clan/ally of castle

+ if (cha instanceof L2Npc && cha.isInsideZone(L2Character.ZONE_TOWN) && (Config.SHOW_CREST_WITHOUT_QUEST || cha.getCastle().getShowNpcCrest()) && cha.getCastle().getOwnerId() != 0)

+ {

+ int townId = TownManager.getTown(_x, _y, _z).getTownId();

+ if (townId != 33 && townId != 22)

+ {

+ L2Clan clan = ClanTable.getInstance().getClan(cha.getCastle().getOwnerId());

+ _clanCrest = clan.getCrestId();

+ _clanId = clan.getClanId();

+ _allyCrest = clan.getAllyCrestId();

+ _allyId = clan.getAllyId();

+ }

+ }

+ }

+   

    @Override

protected void writeImpl()

{

Index: java/net/sf/l2j/Config.java

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

--- java/net/sf/l2j/Config.java (revision 4129)

+++ java/net/sf/l2j/Config.java (working copy)

@@ -629,6 +629,7 @@

public static boolean DEEPBLUE_DROP_RULES;

public static boolean DEEPBLUE_DROP_RULES_RAID;

public static boolean SHOW_NPC_LVL;

+ public static boolean SHOW_CREST_WITHOUT_QUEST;

public static boolean GUARD_ATTACK_AGGRO_MOB;

public static boolean ALLOW_WYVERN_UPGRADER;

public static String PET_RENT_NPC;

@@ -1669,6 +1670,7 @@

DEEPBLUE_DROP_RULES = Boolean.parseBoolean(NPC.getProperty("UseDeepBlueDropRules", "True"));

DEEPBLUE_DROP_RULES_RAID = Boolean.parseBoolean(NPC.getProperty("UseDeepBlueDropRulesRaid", "True"));

SHOW_NPC_LVL = Boolean.parseBoolean(NPC.getProperty("ShowNpcLevel", "False"));

+ SHOW_CREST_WITHOUT_QUEST = Boolean.parseBoolean(NPC.getProperty("ShowCrestWithoutQuest", "False"));

ENABLE_DROP_VITALITY_HERBS = Boolean.parseBoolean(NPC.getProperty("EnableVitalityHerbs", "True"));

GUARD_ATTACK_AGGRO_MOB = Boolean.parseBoolean(NPC.getProperty("GuardAttackAggroMob", "False"));

ALLOW_WYVERN_UPGRADER = Boolean.parseBoolean(NPC.getProperty("AllowWyvernUpgrader", "False"));

@@ -2270,6 +2272,7 @@

 

else if (pName.equalsIgnoreCase("ShowServerNews")) SERVER_NEWS = Boolean.parseBoolean(pValue);

else if (pName.equalsIgnoreCase("ShowNpcLevel")) SHOW_NPC_LVL = Boolean.parseBoolean(pValue);

+ else if (pName.equalsIgnoreCase("ShowCrestWithoutQuest")) SHOW_CREST_WITHOUT_QUEST = Boolean.parseBoolean(pValue);

 

else if (pName.equalsIgnoreCase("ForceInventoryUpdate")) FORCE_INVENTORY_UPDATE = Boolean.parseBoolean(pValue);

 

Index: java/net/sf/l2j/gameserver/model/entity/Castle.java

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

--- java/net/sf/l2j/gameserver/model/entity/Castle.java (revision 4129)

+++ java/net/sf/l2j/gameserver/model/entity/Castle.java (working copy)

@@ -85,6 +85,7 @@

private int _taxPercent = 0;

private double _taxRate = 0;

private long _treasury = 0;

+ private boolean _showNpcCrest = false;

private L2CastleZone _zone = null;

private L2CastleTeleportZone _teleZone;

private L2Clan _formerOwner = null;

@@ -531,6 +532,7 @@

}

 

updateOwnerInDB(clan); // Update in database

+ setShowNpcCrest(false);

 

// if clan have fortress, remove it

if (clan.getHasFort() > 0)

@@ -707,6 +709,8 @@

 

_taxPercent = rs.getInt("taxPercent");

_treasury = rs.getLong("treasury");

+

+ _showNpcCrest = rs.getBoolean("showNpcCrest");

}

rs.close();

statement.close();

@@ -1129,6 +1133,20 @@

return _treasury;

}

 

+ public final boolean getShowNpcCrest()

+ {

+ return _showNpcCrest;

+ }

+

+ public final void setShowNpcCrest(boolean showNpcCrest)

+ {

+ if (_showNpcCrest != showNpcCrest)

+ {

+ _showNpcCrest = showNpcCrest;

+ updateShowNpcCrest();

+ }

+ }

+

public List<SeedProduction> getSeedProduction(int period)

{

return (period == CastleManorManager.PERIOD_CURRENT ? _production : _productionNext);

@@ -1579,6 +1597,36 @@

}

}

 

+ public void updateShowNpcCrest()

+ {

+ Connection con = null;

+ PreparedStatement statement;

+ try

+ {

+ con = L2DatabaseFactory.getInstance().getConnection();

+

+ statement = con.prepareStatement("UPDATE castle SET showNpcCrest = ? WHERE id = ?");

+ statement.setString(1, String.valueOf(getShowNpcCrest()));

+ statement.setInt(2, getCastleId());

+ statement.execute();

+ statement.close();

+ }

+ catch (Exception e)

+ {

+ _log.info("Error saving showNpcCrest for castle " + getName() + ": " + e.getMessage());

+ }

+ finally

+ {

+ try

+ {

+ con.close();

+ }

+ catch (Exception e)

+ {

+ }

+ }

+ }

+

public FastList<L2Skill> getResidentialSkills()

{

return _residentialSkills;

7 answers to this question

Recommended Posts

  • 0
Posted

On IL, the packet is named NpcInfo, and even if there is the right slots (4 missings infos), I don't think you can activate it, as this packet update came from C2 (from what I rem of remarks).

 

Still you can try.

 

1 - Create a clan with clan crest, note the clanID and crestID.

2 - Edit packet NpcInfo and put fixed infos where they supposed to be, writing in core directly the values.

3 - Then compile and test ingame if you focked it or no.

 

I can't really say it won't work if no one tested it before :).

  • 0
Posted

So you know the answer :P.

 

AbstractNpcInfo > NpcInfo, all other is fine.

 

In your diff patch, it misses the principal information in NpcInfo. Anyway on IL your patch can't work like that.

  • 0
Posted

so u can`t make it ....to help me ? :-? ....

 

Don't expect ready code :)

 

Put some own effort, and with our help, u will manage it.

  • 0
Posted

I got it in my interlude server. I had the same problem, but i fixed it. Well the code is 'fine' but its not completed. If you take a look at the code, there is no code that 'puts' the crest at NPC's name. That was my problem and i solved it.

  • 0
Posted

I got it in my interlude server. I had the same problem, but i fixed it. Well the code is 'fine' but its not completed. If you take a look at the code, there is no code that 'puts' the crest at NPC's name. That was my problem and i solved it.

 

Could you share how you did that?

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • 🔥 HF Rework Multi-Proff x10 is coming! ⚔️ New Samurai Crow Client ⚔️ Reworked Systems & Progression ⚔️ Updated Instances ⚔️ Classic Multeria Atmosphere 🧪 Pre-OBT is already live! 📅 Official OBT: June 29 🚀 Launch: July 3 🐞 Report bugs during testing and earn valuable rewards at launch! See you on the battlefield! https://rework.multeria.world/
    • PlayCMS - это удобная система управления веб-сайтом, разработанная специально для игровых проектов Lineage 2. CMS позволяет быстро запустить полнофункциональный серверный сайт с регистрацией игроков, личным кабинетом, новостями, рейтингами, магазином, модулями и гибкой панелью администратора. Система ориентирована на владельцев серверов Lineage 2, которым нужен красивый, функциональный и понятный сайт без лишних сложностей.  PlayCMS уже предоставляет базовые функции для управления проектами, такие как публикация новостей, настройка страниц, работа с пользователями, подключение шаблонов, а также установка модулей и плагинов. Ключевые особенности PlayCMS: — удобная административная панель; — регистрация и авторизация игроков; — учетная запись пользователя; — новостные и информационные страницы; — рейтинги игроков и кланов; — поддержка шаблонов дизайна; — установка модулей и плагинов через административную панель; — магазин цифровых продуктов; — категории продуктов; — возможность добавить фавикон; — защита лицензии для административной панели; — адаптация для игровых проектов Lineage 2; — возможность расширения функционала в соответствии с потребностями сервера. PlayCMS подходит как для новых игровых проектов, так и для существующих серверов, которым нужен удобный сайт с современным дизайном и интуитивно понятным управлением. Система проста в настройке и поддерживает индивидуальные шаблоны, дополнительные плагины и модули, что позволяет вам развивать свой сайт параллельно с развитием сервера. PlayCMS — это готовое решение для владельцев серверов Lineage 2, которым нужен красивый, быстрый и функциональный сайт. Демоверсия —  https://demo.playcms.ru/ Я разработчик этого чуда. Я готов выслушать конструктивную критику, а также ваши предложения по улучшению движка. Кроме того, я пишу модули любой сложности для этой CMS. Свяжитесь со мной: Telegram — @playcms       EN   PlayCMS is a user-friendly website management system designed specifically for Lineage 2 gaming projects. The CMS allows you to quickly launch a fully functional server website with player registration, personal account, news, ratings, a store, modules, and a flexible admin panel. The system is focused on Lineage 2 server owners who need a beautiful, functional, and clear website without unnecessary complexity. PlayCMS already provides basic features for project management, such as publishing news, customizing pages, working with users, connecting templates, and installing modules and plugins. Key Features of PlayCMS: — a convenient administrative panel; — player registration and authorization; — user account; — news and information pages; — player and clan ratings; — support for design templates; — installation of modules and plugins through the admin panel; — digital product store; — product categories; — ability to add a favicon; — license protection for the admin panel; — adaptation for Lineage 2 game projects; — the ability to expand functionality to meet the needs of the server. PlayCMS is suitable for both new gaming projects and existing servers that require a user-friendly website with a modern appearance and intuitive management. The system is easy to configure and supports individual templates, additional plugins, and modules, allowing you to develop your website alongside your server. PlayCMS is a ready-made solution for Lineage 2 server owners who need a beautiful, fast, and functional website. Demo - https://demo.playcms.ru/ I am the developer of this miracle. I am ready to listen to constructive criticism, as well as your suggestions for improving the engine. I also write modules of any complexity for this cms. Contact me: Telegram - @playcms   Скачать\Download : https://drive.google.com/file/d/15Az9WVDD4SQNyOPAsXMU4-mGHOiA_U_d/view    
    • To increase visibility and make sure your offer reaches the right audience, I'd recommend exploring the tools at CS2WH. They have a Deals Bot that might help you track market prices and adjust your strategy on the fly. I'm finding their resources super helpful for keeping tabs on the trading scene. Plus, they emphasize safety and provide insights on legal skin trading, which is crucial for maintaining credibility.
    • I'm also trying to contact them, and I only have their Telegram contact, probably the same one as yours, and I haven't received a response in months.
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..