[help]Нублес при старте
11 ответов230 просмотровСейчас просматривают: 1
· 27.05.2009, 14:13
Всем привет... помогите сделать нублес при старте)
Сборка: Gracia Final, l2jserver, rev 6133
С мну спасибка...
0
· 27.05.2009, 15:16
•••RoMeO•••™: Всем привет... помогите сделать нублес при старте)
Сборка: Gracia Final, l2jserver, rev 6133
С мну спасибка...
в characters nobless столбец измени с дефаулта "0" на "1"
0
· 27.05.2009, 15:20
gameserver\network\clientpackets\EnterWorld.java
Цитата
if (activeChar == null)
{
_log.warning("EnterWorld failed! activeChar is null...");
getClient().closeNow();
return;
}
if (L2World.getInstance().findObject(activeChar.getObjectId()) != null)
{
if(Config.DEBUG)
_log.warning("User already exist in OID map! User "+activeChar.getName()+" is character clone");
//activeChar.closeNetConnection();
}
activeChar.setNoble(true);
if (activeChar.isGM())
{
_log.warning("EnterWorld failed! activeChar is null...");
getClient().closeNow();
return;
}
if (L2World.getInstance().findObject(activeChar.getObjectId()) != null)
{
if(Config.DEBUG)
_log.warning("User already exist in OID map! User "+activeChar.getName()+" is character clone");
//activeChar.closeNetConnection();
}
activeChar.setNoble(true);
if (activeChar.isGM())
0
· 27.05.2009, 15:21
•••RoMeO•••™: Всем привет... помогите сделать нублес при старте)
Сборка: Gracia Final, l2jserver, rev 6133
С мну спасибка...
Абсуждалось и не раз и темы с таким же названием и с такой же сутью. Не плодите одно и тоже.
BullDog: в characters nobless столбец измени с дефаулта "0" на "1"
Так же обсуждалось и это далеко не вариант. Даже я бы сказал пустая трата времени, ибо этот параметр выдаётся только в том случаее если в запросе рпо него ничего не сказано, а в серверах это как раздаки описывается и не помогает.
0
· 27.05.2009, 15:28
Gradesk: Абсуждалось и не раз и темы с таким же названием и с такой же сутью. Не плодите одно и тоже.
Так же обсуждалось и это далеко не вариант. Даже я бы сказал пустая трата времени, ибо этот параметр выдаётся только в том случаее если в запросе рпо него ничего не сказано, а в серверах это как раздаки описывается и не помогает.
Ну уж извините)Сам никогда этого не делал)
А когда я тока начинал с сервеами ла2 один раз поставил 1 вместо нуля и было всё норм...но это было оч давно)
0
· 28.05.2009, 09:51
Апаю темку... в l2jserver со всем другой EnterWorld.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.network.clientpackets;
import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.sf.l2j.Base64;
import net.sf.l2j.Config;
import net.sf.l2j.L2DatabaseFactory;
import net.sf.l2j.gameserver.Announcements;
import net.sf.l2j.gameserver.GmListTable;
import net.sf.l2j.gameserver.SevenSigns;
import net.sf.l2j.gameserver.TaskPriority;
import net.sf.l2j.gameserver.cache.HtmCache;
import net.sf.l2j.gameserver.communitybbs.Manager.RegionBBSManager;
import net.sf.l2j.gameserver.datatables.AdminCommandAccessRights;
import net.sf.l2j.gameserver.datatables.MapRegionTable;
import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.instancemanager.CastleManager;
import net.sf.l2j.gameserver.instancemanager.ClanHallManager;
import net.sf.l2j.gameserver.instancemanager.CoupleManager;
import net.sf.l2j.gameserver.instancemanager.CursedWeaponsManager;
import net.sf.l2j.gameserver.instancemanager.DimensionalRiftManager;
import net.sf.l2j.gameserver.instancemanager.FortManager;
import net.sf.l2j.gameserver.instancemanager.FortSiegeManager;
import net.sf.l2j.gameserver.instancemanager.InstanceManager;
import net.sf.l2j.gameserver.instancemanager.PetitionManager;
import net.sf.l2j.gameserver.instancemanager.SiegeManager;
import net.sf.l2j.gameserver.model.L2Clan;
import net.sf.l2j.gameserver.model.L2ItemInstance;
import net.sf.l2j.gameserver.model.L2World;
import net.sf.l2j.gameserver.model.actor.L2Character;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.entity.ClanHall;
import net.sf.l2j.gameserver.model.entity.Couple;
import net.sf.l2j.gameserver.model.entity.Fort;
import net.sf.l2j.gameserver.model.entity.FortSiege;
import net.sf.l2j.gameserver.model.entity.Hero;
import net.sf.l2j.gameserver.model.entity.L2Event;
import net.sf.l2j.gameserver.model.entity.Siege;
import net.sf.l2j.gameserver.model.entity.TvTEvent;
import net.sf.l2j.gameserver.model.olympiad.Olympiad;
import net.sf.l2j.gameserver.model.quest.Quest;
import net.sf.l2j.gameserver.model.quest.QuestState;
import net.sf.l2j.gameserver.network.SystemMessageId;
import net.sf.l2j.gameserver.network.serverpackets.ClientSetTime;
import net.sf.l2j.gameserver.network.serverpackets.Die;
import net.sf.l2j.gameserver.network.serverpackets.EtcStatusUpdate;
import net.sf.l2j.gameserver.network.serverpackets.ExBasicActionList;
import net.sf.l2j.gameserver.network.serverpackets.ExBrExtraUserInfo;
import net.sf.l2j.gameserver.network.serverpackets.ExGetBookMarkInfoPacket;
import net.sf.l2j.gameserver.network.serverpackets.ExStorageMaxCount;
import net.sf.l2j.gameserver.network.serverpackets.FriendList;
import net.sf.l2j.gameserver.network.serverpackets.HennaInfo;
import net.sf.l2j.gameserver.network.serverpackets.ItemList;
import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
import net.sf.l2j.gameserver.network.serverpackets.PledgeShowMemberListAll;
import net.sf.l2j.gameserver.network.serverpackets.PledgeShowMemberListUpdate;
import net.sf.l2j.gameserver.network.serverpackets.PledgeSkillList;
import net.sf.l2j.gameserver.network.serverpackets.PledgeStatusChanged;
import net.sf.l2j.gameserver.network.serverpackets.QuestList;
import net.sf.l2j.gameserver.network.serverpackets.ShortCutInit;
import net.sf.l2j.gameserver.network.serverpackets.SkillCoolTime;
import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
import net.sf.l2j.gameserver.network.serverpackets.UserInfo;
import net.sf.l2j.gameserver.util.StringUtil;
/**
* Enter World Packet Handler<p>
* <p>
* 0000: 03 <p>
* packet format rev656 cbdddd
* <p>
*/
public class EnterWorld extends L2GameClientPacket
{
private static final String _C__03_ENTERWORLD = "[C] 03 EnterWorld";
private static Logger _log = Logger.getLogger(EnterWorld.class.getName());
public TaskPriority getPriority()
{
return TaskPriority.PR_URGENT;
}
@Override
protected void readImpl()
{
// This is just a trigger packet. It has no content.
/*
readD();
readD();
readD();
readD();
readB();
readD();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
*/
}
@Override
protected void runImpl()
{
L2PcInstance activeChar = getClient().getActiveChar();
if (activeChar == null)
{
_log.warning("EnterWorld failed! activeChar returned 'null'.");
getClient().closeNow();
return;
}
// Restore to instanced area if enabled
if (Config.RESTORE_PLAYER_INSTANCE)
activeChar.setInstanceId(InstanceManager.getInstance().getPlayerInstance(activeC
har.getObjectId()));
else
{
int instanceId = InstanceManager.getInstance().getPlayerInstance(activeChar.getObjectId());
if (instanceId > 0)
InstanceManager.getInstance().getInstance(instanceId).removePlayer(activeChar.ge
tObjectId());
}
if (L2World.getInstance().findObject(activeChar.getObjectId()) != null)
{
if (Config.DEBUG)
_log.warning("User already exists in Object ID map! User "+activeChar.getName()+" is a character clone.");
}
// Apply special GM properties to the GM when entering
if (activeChar.isGM())
{
if (Config.GM_STARTUP_INVULNERABLE && AdminCommandAccessRights.getInstance().hasAccess("admin_invul", activeChar.getAccessLevel()))
activeChar.setIsInvul(true);
if (Config.GM_STARTUP_INVISIBLE && AdminCommandAccessRights.getInstance().hasAccess("admin_invisible", activeChar.getAccessLevel()))
activeChar.getAppearance().setInvisible();
if (Config.GM_STARTUP_SILENCE && AdminCommandAccessRights.getInstance().hasAccess("admin_silence", activeChar.getAccessLevel()))
activeChar.setMessageRefusal(true);
if (Config.GM_STARTUP_DIET_MODE && AdminCommandAccessRights.getInstance().hasAccess("admin_diet", activeChar.getAccessLevel()))
{
activeChar.setDietMode(true);
activeChar.refreshOverloaded();
}
if (Config.GM_STARTUP_AUTO_LIST && AdminCommandAccessRights.getInstance().hasAccess("admin_gmliston", activeChar.getAccessLevel()))
GmListTable.getInstance().addGm(activeChar, false);
else
GmListTable.getInstance().addGm(activeChar, true);
}
// Set dead status if applies
if (activeChar.getCurrentHp() < 0.5)
activeChar.setIsDead(true);
setPledgeClass(activeChar);
boolean showClanNotice = false;
// Clan related checks are here
if (activeChar.getClan() != null)
{
activeChar.sendPacket(new PledgeSkillList(activeChar.getClan()));
notifyClanMembers(activeChar);
notifySponsorOrApprentice(activeChar);
ClanHall clanHall = ClanHallManager.getInstance().getClanHallByOwner(activeChar.getClan());
if (clanHall != null)
{
if (!clanHall.getPaid())
activeChar.sendPacket(new SystemMessage(SystemMessageId.PAYMENT_FOR_YOUR_CLAN_HALL_HAS_NOT_BEEN_MADE_PLEAS
E_MAKE_PAYMENT_TO_YOUR_CLAN_WAREHOUSE_BY_S1_TOMORROW));
}
for (Siege siege : SiegeManager.getInstance().getSieges())
{
if (!siege.getIsInProgress())
continue;
if (siege.checkIsAttacker(activeChar.getClan()))
activeChar.setSiegeState((byte)1);
else if (siege.checkIsDefender(activeChar.getClan()))
activeChar.setSiegeState((byte)2);
}
for (FortSiege siege : FortSiegeManager.getInstance().getSieges())
{
if (!siege.getIsInProgress())
continue;
if (siege.checkIsAttacker(activeChar.getClan()))
activeChar.setSiegeState((byte)1);
else if (siege.checkIsDefender(activeChar.getClan()))
activeChar.setSiegeState((byte)2);
}
sendPacket(new PledgeShowMemberListAll(activeChar.getClan(), activeChar));
sendPacket(new PledgeStatusChanged(activeChar.getClan()));
// Residential skills support
if (activeChar.getClan().getHasCastle() > 0)
CastleManager.getInstance().getCastleByOwner(activeChar.getClan()).giveResidenti
alSkills(activeChar);
if (activeChar.getClan().getHasFort() > 0)
FortManager.getInstance().getFortByOwner(activeChar.getClan()).giveResidentialSk
ills(activeChar);
showClanNotice = activeChar.getClan().isNoticeEnabled();
}
// Set Hero status if it applies
if (Hero.getInstance().getHeroes() != null && Hero.getInstance().getHeroes().containsKey(activeChar.getObjectId()))
activeChar.setHero(true);
// Updating Seal of Strife Buff/Debuff
if (SevenSigns.getInstance().isSealValidationPeriod() && SevenSigns.getInstance().getSealOwner(SevenSigns.SEAL_STRIFE) != SevenSigns.CABAL_NULL)
{
if (SevenSigns.getInstance().getPlayerCabal(activeChar) != SevenSigns.CABAL_NULL)
{
if (SevenSigns.getInstance().getPlayerCabal(activeChar) == SevenSigns.getInstance().getSealOwner(SevenSigns.SEAL_STRIFE))
activeChar.addSkill(SkillTable.getInstance().getInfo(5074,1));
else
activeChar.addSkill(SkillTable.getInstance().getInfo(5075,1));
}
}
else
{
activeChar.removeSkill(SkillTable.getInstance().getInfo(5074,1));
activeChar.removeSkill(SkillTable.getInstance().getInfo(5075,1));
}
activeChar.sendPacket(new UserInfo(activeChar));
sendPacket(new ExBrExtraUserInfo(activeChar));
// Send Macro List
activeChar.getMacroses().sendUpdate();
// Send Item List
sendPacket(new ItemList(activeChar, false));
// Send GG check
activeChar.queryGameGuard();
// Send Teleport Bookmark List
sendPacket(new ExGetBookMarkInfoPacket(activeChar));
// Send Shortcuts
sendPacket(new ShortCutInit(activeChar));
// Send Action list
activeChar.sendPacket(ExBasicActionList.DEFAULT_ACTION_LIST);
// Send Skill list
activeChar.sendSkillList();
// Send Dye Information
activeChar.sendPacket(new HennaInfo(activeChar));
Quest.playerEnter(activeChar);
activeChar.sendPacket(new QuestList());
loadTutorial(activeChar);
if (Config.PLAYER_SPAWN_PROTECTION > 0)
activeChar.setProtection(true);
activeChar.spawnMe(activeChar.getX(), activeChar.getY(), activeChar.getZ());
if (L2Event.active && L2Event.connectionLossData.containsKey(activeChar.getName()) && L2Event.isOnEvent(activeChar))
L2Event.restoreChar(activeChar);
else if (L2Event.connectionLossData.containsKey(activeChar.getName()))
L2Event.restoreAndTeleChar(activeChar);
// Wedding Checks
if (Config.L2JMOD_ALLOW_WEDDING)
{
engage(activeChar);
notifyPartner(activeChar,activeChar.getPartnerId());
}
if (activeChar.isCursedWeaponEquipped())
{
CursedWeaponsManager.getInstance().getCursedWeapon(activeChar.getCursedWeaponEqu
ippedId()).cursedOnLogin();
}
activeChar.updateEffectIcons();
activeChar.sendPacket(new EtcStatusUpdate(activeChar));
//Expand Skill
activeChar.sendPacket(new ExStorageMaxCount(activeChar));
sendPacket(new FriendList(activeChar));
sendPacket(new SystemMessage(SystemMessageId.WELCOME_TO_LINEAGE));
// Send client time
sendPacket(ClientSetTime.STATIC_PACKET);
activeChar.sendMessage(getText("VGhpcyBzZXJ2ZXIgdXNlcyBMMkosIGEgcHJvamVjdCBmb3VuZGVkIGJ5IEwyQ2hlZg==\n"));
activeChar.sendMessage(getText("YW5kIGRldmVsb3BlZCBieSB0aGUgTDJKIERldiBUZWFtIGF0IGwyanNlcnZlci5jb20=\n"));
if (Config.DISPLAY_SERVER_VERSION)
{
if (Config.SERVER_VERSION != null)
activeChar.sendMessage(getText("TDJKIFNlcnZlciBWZXJzaW9uOg==")+" "+Config.SERVER_VERSION);
if (Config.DATAPACK_VERSION != null)
activeChar.sendMessage(getText("TDJKIERhdGFwYWNrIFZlcnNpb246")+" "+Config.DATAPACK_VERSION);
}
activeChar.sendMessage(getText("Q29weXJpZ2h0IDIwMDQtMjAwOQ==\n"));
SevenSigns.getInstance().sendCurrentPeriodMsg(activeChar);
Announcements.getInstance().showAnnouncements(activeChar);
if (showClanNotice)
{
final StringBuilder html = StringUtil.startAppend(2000,
"<html><title>Clan Announcements</title><body><br><center><font color=\"CCAA00\">",
activeChar.getClan().getName(),
"</font> <font color=\"6655FF\">Clan Alert Message</font></center><br><img src=\"L2UI.SquareWhite\" width=270 height=1><br>",
activeChar.getClan().getNotice().replaceAll("\r\n", "<br>"), "</body></html>");
sendPacket(new NpcHtmlMessage(1, html.toString()));
}
else if (Config.SERVER_NEWS)
{
String serverNews = HtmCache.getInstance().getHtm("data/html/servnews.htm");
if (serverNews != null)
sendPacket(new NpcHtmlMessage(1, serverNews));
}
if (Config.PETITIONING_ALLOWED)
PetitionManager.getInstance().checkPetitionMessages(activeChar);
if (activeChar.isAlikeDead()) // dead or fake dead
{
// no broadcast needed since the player will already spawn dead to others
sendPacket(new Die(activeChar));
}
notifyFriends(activeChar);
activeChar.onPlayerEnter();
sendPacket(new SkillCoolTime(activeChar));
for (L2ItemInstance i : activeChar.getInventory().getItems())
{
if (i.isTimeLimitedItem())
{
i.scheduleLifeTimeTask();
}
}
if (Olympiad.getInstance().playerInStadia(activeChar))
{
activeChar.doRevive();
activeChar.teleToLocation(MapRegionTable.TeleportWhereType.Town);
}
if (DimensionalRiftManager.getInstance().checkIfInRiftZone(activeChar.getX(), activeChar.getY(), activeChar.getZ(), false))
DimensionalRiftManager.getInstance().teleportToWaitingRoom(activeChar);
if (activeChar.getClanJoinExpiryTime() > System.currentTimeMillis())
activeChar.sendPacket(new SystemMessage(SystemMessageId.CLAN_MEMBERSHIP_TERMINATED));
// remove combat flag before teleporting
if (activeChar.getInventory().getItemByItemId(9819) != null)
{
Fort fort = FortManager.getInstance().getFort(activeChar);
if (fort != null)
FortSiegeManager.getInstance().dropCombatFlag(activeChar);
else
{
int slot = activeChar.getInventory().getSlotFromItem(activeChar.getInventory().getItemByIte
mId(9819));
activeChar.getInventory().unEquipItemInBodySlotAndRecord(slot);
activeChar.destroyItem("CombatFlag", activeChar.getInventory().getItemByItemId(9819), null, true);
}
}
// Attacker or spectator logging in to a siege zone. Actually should be checked for inside castle only?
if (!activeChar.isGM() && activeChar.getSiegeState() < 2 && activeChar.isInsideZone(L2Character.ZONE_SIEGE))
activeChar.teleToLocation(MapRegionTable.TeleportWhereType.Town);
RegionBBSManager.getInstance().changeCommunityBoard();
TvTEvent.onLogin(activeChar);
}
/**
* @param activeChar
*/
private void engage(L2PcInstance cha)
{
int _chaid = cha.getObjectId();
for(Couple cl: CoupleManager.getInstance().getCouples())
{
if (cl.getPlayer1Id()==_chaid || cl.getPlayer2Id()==_chaid)
{
if (cl.getMaried())
cha.setMarried(true);
cha.setCoupleId(cl.getId());
if (cl.getPlayer1Id()==_chaid)
cha.setPartnerId(cl.getPlayer2Id());
else
cha.setPartnerId(cl.getPlayer1Id());
}
}
}
/**
* @param activeChar partnerid
*/
private void notifyPartner(L2PcInstance cha,int partnerId)
{
if (cha.getPartnerId()!=0)
{
L2PcInstance partner;
int objId = cha.getPartnerId();
try
{
partner = (L2PcInstance)L2World.getInstance().findObject(cha.getPartnerId());
if (partner != null)
partner.sendMessage("Your Partner has logged in.");
partner = null;
}
catch (ClassCastException cce)
{
_log.warning("Wedding Error: ID "+objId+" is now owned by a(n) "+L2World.getInstance().findObject(objId).getClass().getSimpleName());
}
}
}
/**
* @param activeChar
*/
private void notifyFriends(L2PcInstance cha)
{
Connection con = null;
try
{
con = L2DatabaseFactory.getInstance().getConnection();
PreparedStatement statement;
statement = con.prepareStatement("SELECT friend_name FROM character_friends WHERE charId=?");
statement.setInt(1, cha.getObjectId());
ResultSet rset = statement.executeQuery();
L2PcInstance friend;
String friendName;
SystemMessage sm = new SystemMessage(SystemMessageId.FRIEND_S1_HAS_LOGGED_IN);
sm.addString(cha.getName());
while (rset.next())
{
friendName = rset.getString("friend_name");
friend = L2World.getInstance().getPlayer(friendName);
if (friend != null) //friend logged in.
{
friend.sendPacket(new FriendList(friend));
friend.sendPacket(sm);
}
}
sm = null;
rset.close();
statement.close();
}
catch (Exception e)
{
_log.log(Level.SEVERE, "Error restoring friend data.", e);
}
finally
{
try {con.close();} catch (Exception e){}
}
}
/**
* @param activeChar
*/
private void notifyClanMembers(L2PcInstance activeChar)
{
L2Clan clan = activeChar.getClan();
// This null check may not be needed anymore since notifyClanMembers is called from within a null check already. Please remove if we're certain it's ok to do so.
if (clan != null)
{
clan.getClanMember(activeChar.getObjectId()).setPlayerInstance(activeChar);
SystemMessage msg = new SystemMessage(SystemMessageId.CLAN_MEMBER_S1_LOGGED_IN);
msg.addString(activeChar.getName());
clan.broadcastToOtherOnlineMembers(msg, activeChar);
msg = null;
clan.broadcastToOtherOnlineMembers(new PledgeShowMemberListUpdate(activeChar), activeChar);
}
}
/**
* @param activeChar
*/
private void notifySponsorOrApprentice(L2PcInstance activeChar)
{
if (activeChar.getSponsor() != 0)
{
L2PcInstance sponsor = (L2PcInstance)L2World.getInstance().findObject(activeChar.getSponsor());
if (sponsor != null)
{
SystemMessage msg = new SystemMessage(SystemMessageId.YOUR_APPRENTICE_S1_HAS_LOGGED_IN);
msg.addString(activeChar.getName());
sponsor.sendPacket(msg);
}
}
else if (activeChar.getApprentice() != 0)
{
L2PcInstance apprentice = (L2PcInstance)L2World.getInstance().findObject(activeChar.getApprentice());
if (apprentice != null)
{
SystemMessage msg = new SystemMessage(SystemMessageId.YOUR_SPONSOR_C1_HAS_LOGGED_IN);
msg.addString(activeChar.getName());
apprentice.sendPacket(msg);
}
}
}
/**
* @param string
* @return
* @throws UnsupportedEncodingException
*/
private String getText(String string)
{
try
{
String result = new String(Base64.decode(string), "UTF-8");
return result;
}
catch (UnsupportedEncodingException e)
{
return null;
}
}
private void loadTutorial(L2PcInstance player)
{
QuestState qs = player.getQuestState("255_Tutorial");
if (qs != null)
qs.getQuest().notifyEvent("UC", null, player);
}
/* (non-Javadoc)
* @see net.sf.l2j.gameserver.clientpackets.ClientBasePacket#getType()
*/
@Override
public String getType()
{
return _C__03_ENTERWORLD;
}
private void setPledgeClass(L2PcInstance activeChar)
{
int pledgeClass = 0;
// This null check may not be needed anymore since setPledgeClass is called from within a null check already. Please remove if we're certain it's ok to do so.
if (activeChar.getClan() != null)
pledgeClass = activeChar.getClan().getClanMember(activeChar.getObjectId()).calculatePledgeClas
s(activeChar);
if (activeChar.isNoble() && pledgeClass < 5)
pledgeClass = 5;
if (activeChar.isHero() && pledgeClass < 8)
pledgeClass = 8;
activeChar.setPledgeClass(pledgeClass);
}
}
* 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.network.clientpackets;
import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.sf.l2j.Base64;
import net.sf.l2j.Config;
import net.sf.l2j.L2DatabaseFactory;
import net.sf.l2j.gameserver.Announcements;
import net.sf.l2j.gameserver.GmListTable;
import net.sf.l2j.gameserver.SevenSigns;
import net.sf.l2j.gameserver.TaskPriority;
import net.sf.l2j.gameserver.cache.HtmCache;
import net.sf.l2j.gameserver.communitybbs.Manager.RegionBBSManager;
import net.sf.l2j.gameserver.datatables.AdminCommandAccessRights;
import net.sf.l2j.gameserver.datatables.MapRegionTable;
import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.instancemanager.CastleManager;
import net.sf.l2j.gameserver.instancemanager.ClanHallManager;
import net.sf.l2j.gameserver.instancemanager.CoupleManager;
import net.sf.l2j.gameserver.instancemanager.CursedWeaponsManager;
import net.sf.l2j.gameserver.instancemanager.DimensionalRiftManager;
import net.sf.l2j.gameserver.instancemanager.FortManager;
import net.sf.l2j.gameserver.instancemanager.FortSiegeManager;
import net.sf.l2j.gameserver.instancemanager.InstanceManager;
import net.sf.l2j.gameserver.instancemanager.PetitionManager;
import net.sf.l2j.gameserver.instancemanager.SiegeManager;
import net.sf.l2j.gameserver.model.L2Clan;
import net.sf.l2j.gameserver.model.L2ItemInstance;
import net.sf.l2j.gameserver.model.L2World;
import net.sf.l2j.gameserver.model.actor.L2Character;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.entity.ClanHall;
import net.sf.l2j.gameserver.model.entity.Couple;
import net.sf.l2j.gameserver.model.entity.Fort;
import net.sf.l2j.gameserver.model.entity.FortSiege;
import net.sf.l2j.gameserver.model.entity.Hero;
import net.sf.l2j.gameserver.model.entity.L2Event;
import net.sf.l2j.gameserver.model.entity.Siege;
import net.sf.l2j.gameserver.model.entity.TvTEvent;
import net.sf.l2j.gameserver.model.olympiad.Olympiad;
import net.sf.l2j.gameserver.model.quest.Quest;
import net.sf.l2j.gameserver.model.quest.QuestState;
import net.sf.l2j.gameserver.network.SystemMessageId;
import net.sf.l2j.gameserver.network.serverpackets.ClientSetTime;
import net.sf.l2j.gameserver.network.serverpackets.Die;
import net.sf.l2j.gameserver.network.serverpackets.EtcStatusUpdate;
import net.sf.l2j.gameserver.network.serverpackets.ExBasicActionList;
import net.sf.l2j.gameserver.network.serverpackets.ExBrExtraUserInfo;
import net.sf.l2j.gameserver.network.serverpackets.ExGetBookMarkInfoPacket;
import net.sf.l2j.gameserver.network.serverpackets.ExStorageMaxCount;
import net.sf.l2j.gameserver.network.serverpackets.FriendList;
import net.sf.l2j.gameserver.network.serverpackets.HennaInfo;
import net.sf.l2j.gameserver.network.serverpackets.ItemList;
import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
import net.sf.l2j.gameserver.network.serverpackets.PledgeShowMemberListAll;
import net.sf.l2j.gameserver.network.serverpackets.PledgeShowMemberListUpdate;
import net.sf.l2j.gameserver.network.serverpackets.PledgeSkillList;
import net.sf.l2j.gameserver.network.serverpackets.PledgeStatusChanged;
import net.sf.l2j.gameserver.network.serverpackets.QuestList;
import net.sf.l2j.gameserver.network.serverpackets.ShortCutInit;
import net.sf.l2j.gameserver.network.serverpackets.SkillCoolTime;
import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
import net.sf.l2j.gameserver.network.serverpackets.UserInfo;
import net.sf.l2j.gameserver.util.StringUtil;
/**
* Enter World Packet Handler<p>
* <p>
* 0000: 03 <p>
* packet format rev656 cbdddd
* <p>
*/
public class EnterWorld extends L2GameClientPacket
{
private static final String _C__03_ENTERWORLD = "[C] 03 EnterWorld";
private static Logger _log = Logger.getLogger(EnterWorld.class.getName());
public TaskPriority getPriority()
{
return TaskPriority.PR_URGENT;
}
@Override
protected void readImpl()
{
// This is just a trigger packet. It has no content.
/*
readD();
readD();
readD();
readD();
readB();
readD();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
readC();
*/
}
@Override
protected void runImpl()
{
L2PcInstance activeChar = getClient().getActiveChar();
if (activeChar == null)
{
_log.warning("EnterWorld failed! activeChar returned 'null'.");
getClient().closeNow();
return;
}
// Restore to instanced area if enabled
if (Config.RESTORE_PLAYER_INSTANCE)
activeChar.setInstanceId(InstanceManager.getInstance().getPlayerInstance(activeC
har.getObjectId()));
else
{
int instanceId = InstanceManager.getInstance().getPlayerInstance(activeChar.getObjectId());
if (instanceId > 0)
InstanceManager.getInstance().getInstance(instanceId).removePlayer(activeChar.ge
tObjectId());
}
if (L2World.getInstance().findObject(activeChar.getObjectId()) != null)
{
if (Config.DEBUG)
_log.warning("User already exists in Object ID map! User "+activeChar.getName()+" is a character clone.");
}
// Apply special GM properties to the GM when entering
if (activeChar.isGM())
{
if (Config.GM_STARTUP_INVULNERABLE && AdminCommandAccessRights.getInstance().hasAccess("admin_invul", activeChar.getAccessLevel()))
activeChar.setIsInvul(true);
if (Config.GM_STARTUP_INVISIBLE && AdminCommandAccessRights.getInstance().hasAccess("admin_invisible", activeChar.getAccessLevel()))
activeChar.getAppearance().setInvisible();
if (Config.GM_STARTUP_SILENCE && AdminCommandAccessRights.getInstance().hasAccess("admin_silence", activeChar.getAccessLevel()))
activeChar.setMessageRefusal(true);
if (Config.GM_STARTUP_DIET_MODE && AdminCommandAccessRights.getInstance().hasAccess("admin_diet", activeChar.getAccessLevel()))
{
activeChar.setDietMode(true);
activeChar.refreshOverloaded();
}
if (Config.GM_STARTUP_AUTO_LIST && AdminCommandAccessRights.getInstance().hasAccess("admin_gmliston", activeChar.getAccessLevel()))
GmListTable.getInstance().addGm(activeChar, false);
else
GmListTable.getInstance().addGm(activeChar, true);
}
// Set dead status if applies
if (activeChar.getCurrentHp() < 0.5)
activeChar.setIsDead(true);
setPledgeClass(activeChar);
boolean showClanNotice = false;
// Clan related checks are here
if (activeChar.getClan() != null)
{
activeChar.sendPacket(new PledgeSkillList(activeChar.getClan()));
notifyClanMembers(activeChar);
notifySponsorOrApprentice(activeChar);
ClanHall clanHall = ClanHallManager.getInstance().getClanHallByOwner(activeChar.getClan());
if (clanHall != null)
{
if (!clanHall.getPaid())
activeChar.sendPacket(new SystemMessage(SystemMessageId.PAYMENT_FOR_YOUR_CLAN_HALL_HAS_NOT_BEEN_MADE_PLEAS
E_MAKE_PAYMENT_TO_YOUR_CLAN_WAREHOUSE_BY_S1_TOMORROW));
}
for (Siege siege : SiegeManager.getInstance().getSieges())
{
if (!siege.getIsInProgress())
continue;
if (siege.checkIsAttacker(activeChar.getClan()))
activeChar.setSiegeState((byte)1);
else if (siege.checkIsDefender(activeChar.getClan()))
activeChar.setSiegeState((byte)2);
}
for (FortSiege siege : FortSiegeManager.getInstance().getSieges())
{
if (!siege.getIsInProgress())
continue;
if (siege.checkIsAttacker(activeChar.getClan()))
activeChar.setSiegeState((byte)1);
else if (siege.checkIsDefender(activeChar.getClan()))
activeChar.setSiegeState((byte)2);
}
sendPacket(new PledgeShowMemberListAll(activeChar.getClan(), activeChar));
sendPacket(new PledgeStatusChanged(activeChar.getClan()));
// Residential skills support
if (activeChar.getClan().getHasCastle() > 0)
CastleManager.getInstance().getCastleByOwner(activeChar.getClan()).giveResidenti
alSkills(activeChar);
if (activeChar.getClan().getHasFort() > 0)
FortManager.getInstance().getFortByOwner(activeChar.getClan()).giveResidentialSk
ills(activeChar);
showClanNotice = activeChar.getClan().isNoticeEnabled();
}
// Set Hero status if it applies
if (Hero.getInstance().getHeroes() != null && Hero.getInstance().getHeroes().containsKey(activeChar.getObjectId()))
activeChar.setHero(true);
// Updating Seal of Strife Buff/Debuff
if (SevenSigns.getInstance().isSealValidationPeriod() && SevenSigns.getInstance().getSealOwner(SevenSigns.SEAL_STRIFE) != SevenSigns.CABAL_NULL)
{
if (SevenSigns.getInstance().getPlayerCabal(activeChar) != SevenSigns.CABAL_NULL)
{
if (SevenSigns.getInstance().getPlayerCabal(activeChar) == SevenSigns.getInstance().getSealOwner(SevenSigns.SEAL_STRIFE))
activeChar.addSkill(SkillTable.getInstance().getInfo(5074,1));
else
activeChar.addSkill(SkillTable.getInstance().getInfo(5075,1));
}
}
else
{
activeChar.removeSkill(SkillTable.getInstance().getInfo(5074,1));
activeChar.removeSkill(SkillTable.getInstance().getInfo(5075,1));
}
activeChar.sendPacket(new UserInfo(activeChar));
sendPacket(new ExBrExtraUserInfo(activeChar));
// Send Macro List
activeChar.getMacroses().sendUpdate();
// Send Item List
sendPacket(new ItemList(activeChar, false));
// Send GG check
activeChar.queryGameGuard();
// Send Teleport Bookmark List
sendPacket(new ExGetBookMarkInfoPacket(activeChar));
// Send Shortcuts
sendPacket(new ShortCutInit(activeChar));
// Send Action list
activeChar.sendPacket(ExBasicActionList.DEFAULT_ACTION_LIST);
// Send Skill list
activeChar.sendSkillList();
// Send Dye Information
activeChar.sendPacket(new HennaInfo(activeChar));
Quest.playerEnter(activeChar);
activeChar.sendPacket(new QuestList());
loadTutorial(activeChar);
if (Config.PLAYER_SPAWN_PROTECTION > 0)
activeChar.setProtection(true);
activeChar.spawnMe(activeChar.getX(), activeChar.getY(), activeChar.getZ());
if (L2Event.active && L2Event.connectionLossData.containsKey(activeChar.getName()) && L2Event.isOnEvent(activeChar))
L2Event.restoreChar(activeChar);
else if (L2Event.connectionLossData.containsKey(activeChar.getName()))
L2Event.restoreAndTeleChar(activeChar);
// Wedding Checks
if (Config.L2JMOD_ALLOW_WEDDING)
{
engage(activeChar);
notifyPartner(activeChar,activeChar.getPartnerId());
}
if (activeChar.isCursedWeaponEquipped())
{
CursedWeaponsManager.getInstance().getCursedWeapon(activeChar.getCursedWeaponEqu
ippedId()).cursedOnLogin();
}
activeChar.updateEffectIcons();
activeChar.sendPacket(new EtcStatusUpdate(activeChar));
//Expand Skill
activeChar.sendPacket(new ExStorageMaxCount(activeChar));
sendPacket(new FriendList(activeChar));
sendPacket(new SystemMessage(SystemMessageId.WELCOME_TO_LINEAGE));
// Send client time
sendPacket(ClientSetTime.STATIC_PACKET);
activeChar.sendMessage(getText("VGhpcyBzZXJ2ZXIgdXNlcyBMMkosIGEgcHJvamVjdCBmb3VuZGVkIGJ5IEwyQ2hlZg==\n"));
activeChar.sendMessage(getText("YW5kIGRldmVsb3BlZCBieSB0aGUgTDJKIERldiBUZWFtIGF0IGwyanNlcnZlci5jb20=\n"));
if (Config.DISPLAY_SERVER_VERSION)
{
if (Config.SERVER_VERSION != null)
activeChar.sendMessage(getText("TDJKIFNlcnZlciBWZXJzaW9uOg==")+" "+Config.SERVER_VERSION);
if (Config.DATAPACK_VERSION != null)
activeChar.sendMessage(getText("TDJKIERhdGFwYWNrIFZlcnNpb246")+" "+Config.DATAPACK_VERSION);
}
activeChar.sendMessage(getText("Q29weXJpZ2h0IDIwMDQtMjAwOQ==\n"));
SevenSigns.getInstance().sendCurrentPeriodMsg(activeChar);
Announcements.getInstance().showAnnouncements(activeChar);
if (showClanNotice)
{
final StringBuilder html = StringUtil.startAppend(2000,
"<html><title>Clan Announcements</title><body><br><center><font color=\"CCAA00\">",
activeChar.getClan().getName(),
"</font> <font color=\"6655FF\">Clan Alert Message</font></center><br><img src=\"L2UI.SquareWhite\" width=270 height=1><br>",
activeChar.getClan().getNotice().replaceAll("\r\n", "<br>"), "</body></html>");
sendPacket(new NpcHtmlMessage(1, html.toString()));
}
else if (Config.SERVER_NEWS)
{
String serverNews = HtmCache.getInstance().getHtm("data/html/servnews.htm");
if (serverNews != null)
sendPacket(new NpcHtmlMessage(1, serverNews));
}
if (Config.PETITIONING_ALLOWED)
PetitionManager.getInstance().checkPetitionMessages(activeChar);
if (activeChar.isAlikeDead()) // dead or fake dead
{
// no broadcast needed since the player will already spawn dead to others
sendPacket(new Die(activeChar));
}
notifyFriends(activeChar);
activeChar.onPlayerEnter();
sendPacket(new SkillCoolTime(activeChar));
for (L2ItemInstance i : activeChar.getInventory().getItems())
{
if (i.isTimeLimitedItem())
{
i.scheduleLifeTimeTask();
}
}
if (Olympiad.getInstance().playerInStadia(activeChar))
{
activeChar.doRevive();
activeChar.teleToLocation(MapRegionTable.TeleportWhereType.Town);
}
if (DimensionalRiftManager.getInstance().checkIfInRiftZone(activeChar.getX(), activeChar.getY(), activeChar.getZ(), false))
DimensionalRiftManager.getInstance().teleportToWaitingRoom(activeChar);
if (activeChar.getClanJoinExpiryTime() > System.currentTimeMillis())
activeChar.sendPacket(new SystemMessage(SystemMessageId.CLAN_MEMBERSHIP_TERMINATED));
// remove combat flag before teleporting
if (activeChar.getInventory().getItemByItemId(9819) != null)
{
Fort fort = FortManager.getInstance().getFort(activeChar);
if (fort != null)
FortSiegeManager.getInstance().dropCombatFlag(activeChar);
else
{
int slot = activeChar.getInventory().getSlotFromItem(activeChar.getInventory().getItemByIte
mId(9819));
activeChar.getInventory().unEquipItemInBodySlotAndRecord(slot);
activeChar.destroyItem("CombatFlag", activeChar.getInventory().getItemByItemId(9819), null, true);
}
}
// Attacker or spectator logging in to a siege zone. Actually should be checked for inside castle only?
if (!activeChar.isGM() && activeChar.getSiegeState() < 2 && activeChar.isInsideZone(L2Character.ZONE_SIEGE))
activeChar.teleToLocation(MapRegionTable.TeleportWhereType.Town);
RegionBBSManager.getInstance().changeCommunityBoard();
TvTEvent.onLogin(activeChar);
}
/**
* @param activeChar
*/
private void engage(L2PcInstance cha)
{
int _chaid = cha.getObjectId();
for(Couple cl: CoupleManager.getInstance().getCouples())
{
if (cl.getPlayer1Id()==_chaid || cl.getPlayer2Id()==_chaid)
{
if (cl.getMaried())
cha.setMarried(true);
cha.setCoupleId(cl.getId());
if (cl.getPlayer1Id()==_chaid)
cha.setPartnerId(cl.getPlayer2Id());
else
cha.setPartnerId(cl.getPlayer1Id());
}
}
}
/**
* @param activeChar partnerid
*/
private void notifyPartner(L2PcInstance cha,int partnerId)
{
if (cha.getPartnerId()!=0)
{
L2PcInstance partner;
int objId = cha.getPartnerId();
try
{
partner = (L2PcInstance)L2World.getInstance().findObject(cha.getPartnerId());
if (partner != null)
partner.sendMessage("Your Partner has logged in.");
partner = null;
}
catch (ClassCastException cce)
{
_log.warning("Wedding Error: ID "+objId+" is now owned by a(n) "+L2World.getInstance().findObject(objId).getClass().getSimpleName());
}
}
}
/**
* @param activeChar
*/
private void notifyFriends(L2PcInstance cha)
{
Connection con = null;
try
{
con = L2DatabaseFactory.getInstance().getConnection();
PreparedStatement statement;
statement = con.prepareStatement("SELECT friend_name FROM character_friends WHERE charId=?");
statement.setInt(1, cha.getObjectId());
ResultSet rset = statement.executeQuery();
L2PcInstance friend;
String friendName;
SystemMessage sm = new SystemMessage(SystemMessageId.FRIEND_S1_HAS_LOGGED_IN);
sm.addString(cha.getName());
while (rset.next())
{
friendName = rset.getString("friend_name");
friend = L2World.getInstance().getPlayer(friendName);
if (friend != null) //friend logged in.
{
friend.sendPacket(new FriendList(friend));
friend.sendPacket(sm);
}
}
sm = null;
rset.close();
statement.close();
}
catch (Exception e)
{
_log.log(Level.SEVERE, "Error restoring friend data.", e);
}
finally
{
try {con.close();} catch (Exception e){}
}
}
/**
* @param activeChar
*/
private void notifyClanMembers(L2PcInstance activeChar)
{
L2Clan clan = activeChar.getClan();
// This null check may not be needed anymore since notifyClanMembers is called from within a null check already. Please remove if we're certain it's ok to do so.
if (clan != null)
{
clan.getClanMember(activeChar.getObjectId()).setPlayerInstance(activeChar);
SystemMessage msg = new SystemMessage(SystemMessageId.CLAN_MEMBER_S1_LOGGED_IN);
msg.addString(activeChar.getName());
clan.broadcastToOtherOnlineMembers(msg, activeChar);
msg = null;
clan.broadcastToOtherOnlineMembers(new PledgeShowMemberListUpdate(activeChar), activeChar);
}
}
/**
* @param activeChar
*/
private void notifySponsorOrApprentice(L2PcInstance activeChar)
{
if (activeChar.getSponsor() != 0)
{
L2PcInstance sponsor = (L2PcInstance)L2World.getInstance().findObject(activeChar.getSponsor());
if (sponsor != null)
{
SystemMessage msg = new SystemMessage(SystemMessageId.YOUR_APPRENTICE_S1_HAS_LOGGED_IN);
msg.addString(activeChar.getName());
sponsor.sendPacket(msg);
}
}
else if (activeChar.getApprentice() != 0)
{
L2PcInstance apprentice = (L2PcInstance)L2World.getInstance().findObject(activeChar.getApprentice());
if (apprentice != null)
{
SystemMessage msg = new SystemMessage(SystemMessageId.YOUR_SPONSOR_C1_HAS_LOGGED_IN);
msg.addString(activeChar.getName());
apprentice.sendPacket(msg);
}
}
}
/**
* @param string
* @return
* @throws UnsupportedEncodingException
*/
private String getText(String string)
{
try
{
String result = new String(Base64.decode(string), "UTF-8");
return result;
}
catch (UnsupportedEncodingException e)
{
return null;
}
}
private void loadTutorial(L2PcInstance player)
{
QuestState qs = player.getQuestState("255_Tutorial");
if (qs != null)
qs.getQuest().notifyEvent("UC", null, player);
}
/* (non-Javadoc)
* @see net.sf.l2j.gameserver.clientpackets.ClientBasePacket#getType()
*/
@Override
public String getType()
{
return _C__03_ENTERWORLD;
}
private void setPledgeClass(L2PcInstance activeChar)
{
int pledgeClass = 0;
// This null check may not be needed anymore since setPledgeClass is called from within a null check already. Please remove if we're certain it's ok to do so.
if (activeChar.getClan() != null)
pledgeClass = activeChar.getClan().getClanMember(activeChar.getObjectId()).calculatePledgeClas
s(activeChar);
if (activeChar.isNoble() && pledgeClass < 5)
pledgeClass = 5;
if (activeChar.isHero() && pledgeClass < 8)
pledgeClass = 8;
activeChar.setPledgeClass(pledgeClass);
}
}
0
· 29.05.2009, 16:09
Цитата
// Set dead status if applies
if (activeChar.getCurrentHp() < 0.5)
activeChar.setIsDead(true);
setPledgeClass(activeChar);
activeChar.setNoble(true);
boolean showClanNotice = false;
// Clan related checks are here
if (activeChar.getCurrentHp() < 0.5)
activeChar.setIsDead(true);
setPledgeClass(activeChar);
activeChar.setNoble(true);
boolean showClanNotice = false;
// Clan related checks are here
0
· 02.06.2009, 17:43
Тоже хочу сделать всех Героями на серваке, Но ненашол файл EnterWorld.java и подобного нет, что делать?
0
Войдите или зарегистрируйтесь чтобы ответить






