My initial plan was to port the Homunculus system from Live 502 to ClassicAden 502. But, when the interface for Homunculus is enabled, it has some hardcoded function that tries to load the dat files which leads to a crash since those files dont exist in ClassicAden. I was hoping to do some injection hoping, forcing the client to load the files.
Question
OldTrue14
Kalhspera exo ena problima me ena java code mipos mpwrite na me voithisete exo perasi auto to kodika pou exo vri edw
Index: config/functions/l2jfrozen.properties =================================================================== --- config/functions/l2jfrozen.properties (wersja 669) +++ config/functions/l2jfrozen.properties (kopia robocza) @@ -275,4 +275,8 @@ ProtectorSkillLevel = 13 ProtectorSkillTime = 600 # Npc Protector Message -ProtectorMessage = Hey You!, Never Kill On This Area, Go Read The Rules! \ No newline at end of file +ProtectorMessage = Hey You!, Never Kill On This Area, Go Read The Rules! + +# Show clan, alliance crests for territory NPC's. +# Default: False +ShowNpcCrest = False \ No newline at end of file Index: head-src/com/l2jfrozen/gameserver/network/serverpackets/NpcInfo.java =================================================================== --- head-src/com/l2jfrozen/gameserver/network/serverpackets/NpcInfo.java (wersja 669) +++ head-src/com/l2jfrozen/gameserver/network/serverpackets/NpcInfo.java (kopia robocza) @@ -19,11 +19,15 @@ package com.l2jfrozen.gameserver.network.serverpackets; import com.l2jfrozen.Config; +import com.l2jfrozen.gameserver.datatables.sql.ClanTable; +import com.l2jfrozen.gameserver.managers.TownManager; import com.l2jfrozen.gameserver.model.L2Character; +import com.l2jfrozen.gameserver.model.L2Clan; import com.l2jfrozen.gameserver.model.L2Summon; import com.l2jfrozen.gameserver.model.actor.instance.L2MonsterInstance; import com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance; import com.l2jfrozen.gameserver.model.actor.instance.L2PetInstance; +import com.l2jfrozen.gameserver.model.zone.type.L2TownZone; /** * This class ... @@ -46,6 +50,10 @@ private int _collisionHeight, _collisionRadius; private String _name = ""; private String _title = ""; + int _clanCrest = 0; + int _allyCrest = 0; + int _allyId = 0; + int _clanId = 0; /** * @param _characters @@ -99,6 +107,32 @@ _title = t; } + if(Config.SHOW_NPC_CREST) + { + if(cha instanceof L2NpcInstance && cha.isInsideZone(L2Character.ZONE_PEACE) && cha.getCastle().getOwnerId() != 0) + { + int _x,_y,_z; + _x = cha.getX(); + _y = cha.getY(); + _z = cha.getZ(); + L2TownZone Town; + Town = TownManager.getInstance().getTown(_x, _y, _z); + if(Town != null) + { + int townId = Town.getTownId(); + if(townId != 33 && townId != 22) + { + L2Clan clan; + clan = ClanTable.getInstance().getClan(cha.getCastle().getOwnerId()); + _clanCrest = clan.getCrestId(); + _clanId = clan.getClanId(); + _allyCrest = clan.getAllyCrestId(); + _allyId = clan.getAllyId(); + } + } + } + } + _x = _activeChar.getX(); _y = _activeChar.getY(); _z = _activeChar.getZ(); @@ -187,12 +221,23 @@ writeD(0000); // hmm karma ?? writeD(_activeChar.getAbnormalEffect()); // C2 - writeD(0000); // C2 - writeD(0000); // C2 - writeD(0000); // C2 - writeD(0000); // C2 - writeC(0000); // C2 + if(Config.SHOW_NPC_CREST) + { + writeD(_clanId); + writeD(_clanCrest); + writeD(_allyId); + writeD(_allyCrest); + } + else + { + writeD(0000); + writeD(0000); + writeD(0000); + writeD(0000); + writeC(0000); + } + writeC(0x00); // C3 team circle 1-blue, 2-red writeF(_collisionRadius); writeF(_collisionHeight); Index: head-src/com/l2jfrozen/gameserver/model/entity/siege/Castle.java =================================================================== --- head-src/com/l2jfrozen/gameserver/model/entity/siege/Castle.java (wersja 669) +++ head-src/com/l2jfrozen/gameserver/model/entity/siege/Castle.java (kopia robocza) @@ -90,6 +90,7 @@ private int _taxPercent = 0; private double _taxRate = 0; private int _treasury = 0; + private boolean _showNpcCrest = false; private L2CastleZone _zone; private L2CastleTeleportZone _teleZone; private L2Clan _formerOwner = null; @@ -364,6 +365,7 @@ } updateOwnerInDB(clan); // Update in database + setShowNpcCrest(false); if(getSiege().getIsInProgress()) { @@ -552,6 +554,7 @@ _taxPercent = rs.getInt("taxPercent"); _treasury = rs.getInt("treasury"); + _showNpcCrest = rs.getBoolean("showNpcCrest"); } rs.close(); @@ -854,6 +857,20 @@ return _treasury; } + public final boolean getShowNpcCrest() + { + return _showNpcCrest; + } + + public final void setShowNpcCrest(boolean showNpcCrest) + { + if(_showNpcCrest != showNpcCrest) + { + _showNpcCrest = showNpcCrest; + updateShowNpcCrest(); + } + } + public FastList<SeedProduction> getSeedProduction(int period) { return period == CastleManorManager.PERIOD_CURRENT ? _production : _productionNext; @@ -1324,6 +1341,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 boolean isNextPeriodApproved() { return _isNextPeriodApproved;Einai gia Clan crest sta Npc alla mou vgazi auto to provlima mipos kseri kaneis gt
5 answers to this question
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now