Jump to content
  • 0

[Request] Crest's for NPCs


[DEV]DjSt3rios

Question

Hello everybody, i am looking for a code to make the NPCs in the towns to have the crest of the clan that owns the castle of the town, and if its possible the same with Clan Halls, the NPCs in the clan hall to have the crest of the clan which owns the clan hall. I am looking for interlude client. BTW I tried Ventic's which is for gracia, but i tried it on interlude and its not working :/ Thanks for reading.

Link to comment
Share on other sites

Recommended Posts

  • 0

maybe you need this.

 

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;

Link to comment
Share on other sites

  • 0

Thats for gracia. I need it for Interlude!

Java is java(lol) at all chronicles.

So guess what.

You can use it for interlude too

Link to comment
Share on other sites

  • 0

Well it may not work on Interlude. I dont know, i've seen many interlude having this though, but i dont really understand where they found it, anyway i will test this again, and i will post if i have any problems.

Link to comment
Share on other sites

  • 0

Ok i found it but i have a problem guys, some NPC are inside the ground, and you can see only the chest and the head :/ any idea how to fix this?

Where did you find it?
Link to comment
Share on other sites

  • 0

Ok i found it but i have a problem guys, some NPC are inside the ground, and you can see only the chest and the head :/ any idea how to fix this?

Beacuse I can hardly Understand you,can you upload a picture and post it here?(with this prob)
Link to comment
Share on other sites

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
Answer this question...

×   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.



×
×
  • Create New...