Перейти к содержанию

Серый_Ветер

Постоялец
  • Публикаций

    302
  • Зарегистрирован

  • Посещение

  • Отзывы

    0%

Весь контент Серый_Ветер

  1. в общем, благодаря этому сравнил декомпил.. дела однако..... получается теряем всю инфы в скобках, условия if есть, но чего сравнивать нету в паре случаев. остальной код в идеале сохранен, окромя точек с запятой. то есть у ворона эта часть без изменений была. уже что то чем ничего... лишь бы тока значения были теже самые
  2. блин, ну невозможно читать... конфиг вроде нормальный. по части ip, далше не смотрел [code] /[code] для чего? с помощью http://2ip.ru/check-port/ проверь порты 2106 7777. они должны быть открыты. если нет. модель роутера сюда.
  3. Серый_Ветер

    Помощь

    и кстати да, какая винда?
  4. Серый_Ветер

    Помощь

    жаба: radist@jabber.tsure.ru icq: четрые шестьдесят шесть 159 46 ноль skype: radist04ka <-- бот. писать только после 8-9 вечера по калининграду (9-10 по москве). в остальное время это сервисный бот. хватит столько контактов? и еще, КАКОЙ роутер? давно бы написал мануал тебе, если бы знал модель.
  5. как говорится, хотеть не вредно....
  6. уже, тока man javac жуткий и нифига не ориентированный на пользователя.. хз кто его писал
  7. не пробовал, так как на работу собираюсь через часов 5-8 проверю. ща просто тут еше одну тему создаю.. и свалю на работу
  8. ради интереса по мануалу вытащил Config.java и его же, без изменений пытался воткнуть... D:\Мои Документы\Downloads\Lineage 2 The Chaotic Throne High Five 5\VDT_HighFive _RC4\gameserver>javac -classpath gameserver.jar -Xlint:unchecked Config.java вышло: в основном ругается на отсутствие ; это из-за кривого декомпила или 7й версии явы? (я хз как тут с совместимостью) или я не тот файл указал gameserver.jar
  9. а какие хроники? а ссылко на source можно?
  10. Серый_Ветер

    Помощь

    роутер какой? у длинков есть бага, у них проброс портов не робит, а виртуалхосты работают...
  11. Серый_Ветер

    Vote

    <div style="position:absolute;top:5px;left:5px"> в осле эта фишка не поддерживается а так вещь!
  12. Серый_Ветер

    Помощь

    какой роутер?
  13. Серый_Ветер

    Помощь

    так. loginserver.ini LoginserverHostname = твой ip сетевой карты LoginserverPort = 2106 LoginHostname = * LoginPort = 9014 gameserver.ini LoginHost = твой ip сетевой карты LoginPort = 9014 GameserverHostname = * GameserverPort = 7777 ExternalHostAddress = 172.18.113.17 вот так у меня все работает. и еще, какая сборка? у меня было что две штуки не завелись вообще, порты слушались, а клиент не мог подцепится даже на 127,0,0,1
  14. это портированный под винду ipfw ? читаю описание, он вроде не поддерживает sysctl если не дружит с ними винда, то хз... попробуем другим путем..
  15. днем я на работе. но в личку отписал, спасибо.
  16. блин, 60 просмотров... и никто не мог сказать что код то битый.... и вообще, хай пока так... а я пошел книжки по яве читать...
  17. хм, тогда мой вариант проще.
  18. кстати, тут что есть метод из бд брать данные о онлайне? а то я все по старинке: sockstat -4 | grep java | grep -v 3306 | grep -v 127.0.0.1 | grep -cv "*.*"
  19. Серый_Ветер

    Помощь

    тут даже все на русском, и все равно не понятно? в обоих конфигах хм, у тебя в логинсервере нет такой настройки, но у тебя там слушается все подрят. с роутером помочь? или сам пробросишь порты 9014 7777 2106(на счет него кстати не уверен, нужен ли он для внешки) UPD. да, нужен. 9014 не нужен для внешки. это для связи геймсерва и логинсерва
  20. кстати, все время интересоно было... а почему защиту нельзя сделать на родных приложениях? - ipfw / pf - ограничение по количеству на подключение например, ограничение по попыткам подключений к логинсерверу больше 10 в 20 сек. бан по ip на уровне tcp/ip стека. правда что есть в винде для этого... только портированный ipfw или outpost и то не уверен. - чаров-админов прикрепить к ним доменное имя, если ip != домен > пшел лесом. винда тут не нужна, в роутере настроил, а днс есть куча бесплатных... да статику тоже не проблема в нынешнее время сделать, тем более что ipv6 бесплатно дают. кстати, а линяга поддерживает ipv6? сайт тоже... в том же апаче есть модуль отвечающий за количество потоков к сереверу с одного ip.
  21. а я сразу через анонимайзер 2ip.ru зашел, прочел, обновил свой днс, и усе
  22. и так, теория научного тыка немного помогла: имеем: CastleSiegeEvent.class Скрытый текст package l2p.gameserver.model.entity.events.impl; import java.util.ArrayList; import java.util.Calendar; import java.util.Iterator; import java.util.List; import java.util.Set; import java.util.concurrent.Future; import l2p.commons.collections.MultiValueSet; import l2p.commons.dao.JdbcEntityState; import l2p.commons.threading.RunnableImpl; import l2p.gameserver.Config; import l2p.gameserver.ThreadPoolManager; import l2p.gameserver.dao.CastleDamageZoneDAO; import l2p.gameserver.dao.CastleDoorUpgradeDAO; import l2p.gameserver.dao.CastleHiredGuardDAO; import l2p.gameserver.dao.SiegeClanDAO; import l2p.gameserver.data.xml.holder.EventHolder; import l2p.gameserver.instancemanager.ReflectionManager; import l2p.gameserver.model.Creature; import l2p.gameserver.model.Player; import l2p.gameserver.model.Spawner; import l2p.gameserver.model.Zone.ZoneType; import l2p.gameserver.model.base.RestartType; import l2p.gameserver.model.entity.Hero; import l2p.gameserver.model.entity.Reflection; import l2p.gameserver.model.entity.SevenSigns; import l2p.gameserver.model.entity.events.EventType; import l2p.gameserver.model.entity.events.objects.DoorObject; import l2p.gameserver.model.entity.events.objects.SiegeClanObject; import l2p.gameserver.model.entity.events.objects.SiegeToggleNpcObject; import l2p.gameserver.model.entity.events.objects.SpawnExObject; import l2p.gameserver.model.entity.events.objects.SpawnSimpleObject; import l2p.gameserver.model.entity.residence.Castle; import l2p.gameserver.model.instances.DoorInstance; import l2p.gameserver.model.instances.residences.SiegeToggleNpcInstance; import l2p.gameserver.model.items.ItemInstance; import l2p.gameserver.model.pledge.Clan; import l2p.gameserver.model.pledge.UnitMember; import l2p.gameserver.serverpackets.L2GameServerPacket; import l2p.gameserver.serverpackets.PlaySound; import l2p.gameserver.serverpackets.SystemMessage2; import l2p.gameserver.serverpackets.components.SystemMsg; import l2p.gameserver.templates.item.support.MerchantGuard; import l2p.gameserver.templates.spawn.SpawnRange; import l2p.gameserver.utils.Location; import org.napile.primitive.Containers; import org.napile.primitive.sets.IntSet; import org.napile.primitive.sets.impl.TreeIntSet; public class CastleSiegeEvent extends SiegeEvent<Castle, SiegeClanObject> { public static final int MAX_SIEGE_CLANS = 20; public static final long DAY_IN_MILISECONDS = 86400000L; public static final String DEFENDERS_WAITING = "defenders_waiting"; public static final String DEFENDERS_REFUSED = "defenders_refused"; public static final String CONTROL_TOWERS = "control_towers"; public static final String FLAME_TOWERS = "flame_towers"; public static final String BOUGHT_ZONES = "bought_zones"; public static final String GUARDS = "guards"; public static final String HIRED_GUARDS = "hired_guards"; private IntSet _nextSiegeTimes = Containers.EMPTY_INT_SET; private Future<?> _nextSiegeDateSetTask = null; private boolean _firstStep = false; public CastleSiegeEvent(MultiValueSet<String> paramMultiValueSet) { super(paramMultiValueSet); } public void initEvent() { super.initEvent(); List localList = getObjects("doors"); addObjects("bought_zones", CastleDamageZoneDAO.getInstance().load(getResidence())); Iterator localIterator = localList.iterator(); while (localIterator.hasNext()) { DoorObject localDoorObject = (DoorObject)localIterator.next(); localDoorObject.setUpgradeValue(this, CastleDoorUpgradeDAO.getInstance().load(localDoorObject.getUId())); localDoorObject.getDoor().addListener(this._doorDeathListener); } } public void processStep(Clan paramClan) { Clan localClan = ((Castle)getResidence()).getOwner(); ((Castle)getResidence()).changeOwner(paramClan); Object localObject2; Object localObject3; if (localClan != null) { SiegeClanObject localSiegeClanObject1 = getSiegeClan("defenders", localClan); removeObject("defenders", localSiegeClanObject1); localSiegeClanObject1.setType("attackers"); addObject("attackers", localSiegeClanObject1); } else { if ((getObjects("attackers").size() == 1) && (Config.CastleQuickSiege)) { stopEvent(); return; } int i = paramClan.getAllyId(); if (i > 0) { localList = getObjects("attackers"); int j = 1; localObject2 = localList.iterator(); while (((Iterator)localObject2).hasNext()) { localObject3 = (SiegeClanObject)((Iterator)localObject2).next(); if ((localObject3 != null) && (((SiegeClanObject)localObject3).getClan().getAllyId() != i)) j = 0; } if ((j != 0) && (Config.CastleQuickSiege)) { stopEvent(); return; } } } SiegeClanObject localSiegeClanObject2 = getSiegeClan("attackers", paramClan); localSiegeClanObject2.deleteFlag(); localSiegeClanObject2.setType("defenders"); removeObject("attackers", localSiegeClanObject2); List localList = removeObjects("defenders"); Object localObject1 = localList.iterator(); while (((Iterator)localObject1).hasNext()) { localObject2 = (SiegeClanObject)((Iterator)localObject1).next(); ((SiegeClanObject)localObject2).setType("attackers"); } addObject("defenders", localSiegeClanObject2); addObjects("attackers", localList); updateParticles(true, new String[] { "attackers", "defenders" }); teleportPlayers("attackers"); teleportPlayers("spectators"); if (!this._firstStep) { this._firstStep = true; broadcastTo(SystemMsg.THE_TEMPORARY_ALLIANCE_OF_THE_CASTLE_ATTACKER_TEAM_HAS_BEEN_DISSOL VED, new String[] { "attackers", "defenders" }); if (this._oldOwner != null) { spawnAction("hired_guards", false); damageZoneAction(false); removeObjects("hired_guards"); removeObjects("bought_zones"); CastleDamageZoneDAO.getInstance().delete(getResidence()); } else { spawnAction("guards", false); } localObject1 = getObjects("doors"); localObject2 = ((List)localObject1).iterator(); while (((Iterator)localObject2).hasNext()) { localObject3 = (DoorObject)((Iterator)localObject2).next(); ((DoorObject)localObject3).setWeak(true); ((DoorObject)localObject3).setUpgradeValue(this, 0); CastleDoorUpgradeDAO.getInstance().delete(((DoorObject)localObject3).getUId()); } } spawnAction("doors", true); despawnSiegeSummons(); } public void startEvent() { this._oldOwner = ((Castle)getResidence()).getOwner(); if (this._oldOwner != null) { addObject("defenders", new SiegeClanObject("defenders", this._oldOwner, 0L)); if (((Castle)getResidence()).getSpawnMerchantTickets().size() > 0) { localObject = ((Castle)getResidence()).getSpawnMerchantTickets().iterator(); while (((Iterator)localObject).hasNext()) { ItemInstance localItemInstance = (ItemInstance)((Iterator)localObject).next(); MerchantGuard localMerchantGuard = ((Castle)getResidence()).getMerchantGuard(localItemInstance.getItemId()); addObject("hired_guards", new SpawnSimpleObject(localMerchantGuard.getNpcId(), localItemInstance.getLoc())); localItemInstance.deleteMe(); } CastleHiredGuardDAO.getInstance().delete(getResidence()); spawnAction("hired_guards", true); } } Object localObject = getObjects("attackers"); if (((List)localObject).isEmpty()) { if (this._oldOwner == null) broadcastToWorld(new SystemMessage2(SystemMsg.THE_SIEGE_OF_S1_HAS_BEEN_CANCELED_DUE_TO_LACK_OF_INTEREST).addResidenceName(getResidence())); else broadcastToWorld(new SystemMessage2(SystemMsg.S1S_SIEGE_WAS_CANCELED_BECAUSE_THERE_WERE_NO_CLANS_THAT_PARTICIPAT ED).addResidenceName(getResidence())); reCalcNextTime(false); return; } SiegeClanDAO.getInstance().delete(getResidence()); updateParticles(true, new String[] { "attackers", "defenders" }); broadcastTo(SystemMsg.THE_TEMPORARY_ALLIANCE_OF_THE_CASTLE_ATTACKER_TEAM_IS_IN_EFFECT, new String[] { "attackers" }); broadcastTo(new SystemMessage2(SystemMsg.YOU_ARE_PARTICIPATING_IN_THE_SIEGE_OF_S1_THIS_SIEGE_IS_SCHEDULED_F OR_2_HOURS).addResidenceName(getResidence()), new String[] { "attackers", "defenders" }); super.startEvent(); if (this._oldOwner == null) initControlTowers(); else damageZoneAction(true); } public void stopEvent(boolean paramBoolean) { List localList = getObjects("doors"); Object localObject1 = localList.iterator(); while (((Iterator)localObject1).hasNext()) { localObject2 = (DoorObject)((Iterator)localObject1).next(); ((DoorObject)localObject2).setWeak(false); } damageZoneAction(false); updateParticles(false, new String[] { "attackers", "defenders" }); localObject1 = removeObjects("attackers"); Object localObject2 = ((List)localObject1).iterator(); Object localObject3; while (((Iterator)localObject2).hasNext()) { localObject3 = (SiegeClanObject)((Iterator)localObject2).next(); ((SiegeClanObject)localObject3).deleteFlag(); } broadcastToWorld(new SystemMessage2(SystemMsg.THE_SIEGE_OF_S1_IS_FINISHED).addResidenceName(getResidence())); removeObjects("defenders"); removeObjects("defenders_waiting"); removeObjects("defenders_refused"); localObject2 = ((Castle)getResidence()).getOwner(); if (localObject2 != null) { if (this._oldOwner == localObject2) { ((Castle)getResidence()).setRewardCount(((Castle)getResidence()).getRewardCount() + 1); ((Clan)localObject2).broadcastToOnlineMembers(new L2GameServerPacket[] { new SystemMessage2(SystemMsg.SINCE_YOUR_CLAN_EMERGED_VICTORIOUS_FROM_THE_SIEGE_S1_POINTS_HAVE_B EEN_ADDED_TO_YOUR_CLANS_REPUTATION_SCORE).addInteger(((Clan)localObject2).incReputation(1500, false, toString())) }); } else { broadcastToWorld(((SystemMessage2)new SystemMessage2(SystemMsg.CLAN_S1_IS_VICTORIOUS_OVER_S2S_CASTLE_SIEGE).addString(((Clan)localObject2).getName())).addResidenceName(getResidence())); ((Clan)localObject2).broadcastToOnlineMembers(new L2GameServerPacket[] { new SystemMessage2(SystemMsg.SINCE_YOUR_CLAN_EMERGED_VICTORIOUS_FROM_THE_SIEGE_S1_POINTS_HAVE_B EEN_ADDED_TO_YOUR_CLANS_REPUTATION_SCORE).addInteger(((Clan)localObject2).incReputation(3000, false, toString())) }); if (this._oldOwner != null) this._oldOwner.broadcastToOnlineMembers(new L2GameServerPacket[] { new SystemMessage2(SystemMsg.YOUR_CLAN_HAS_FAILED_TO_DEFEND_THE_CASTLE_S1_POINTS_HAVE_BEEN_DEDU CTED_FROM_YOU_CLAN_REPUTATION_SCORE_AND_ADDED_TO_YOUR_OPPONENTS).addInteger(-this._oldOwner.incReputation(-3000, false, toString())) }); localObject3 = ((Clan)localObject2).iterator(); while (((Iterator)localObject3).hasNext()) { UnitMember localUnitMember = (UnitMember)((Iterator)localObject3).next(); Player localPlayer = localUnitMember.getPlayer(); if (localPlayer != null) { localPlayer.sendPacket(PlaySound.SIEGE_VICTORY); if ((localPlayer.isOnline()) && (localPlayer.isNoble())) Hero.getInstance().addHeroDiary(localPlayer.getObjectId(), 3, ((Castle)getResidence()).getId()); } } } ((Castle)getResidence()).getOwnDate().setTimeInMillis(System.currentTimeMillis()); ((Castle)getResidence()).getLastSiegeDate().setTimeInMillis(((Castle)getResidence()).getSiegeDate().getTimeInMillis()); localObject3 = (DominionSiegeRunnerEvent)EventHolder.getInstance().getEvent(EventType.MAIN_EVENT, 1); ((DominionSiegeRunnerEvent)localObject3).registerDominion(((Castle)getResidence()).getDominion()); } else { broadcastToWorld(new SystemMessage2(SystemMsg.THE_SIEGE_OF_S1_HAS_ENDED_IN_A_DRAW).addResidenceName(getResidence())); ((Castle)getResidence()).getOwnDate().setTimeInMillis(0L); ((Castle)getResidence()).getLastSiegeDate().setTimeInMillis(0L); localObject3 = (DominionSiegeRunnerEvent)EventHolder.getInstance().getEvent(EventType.MAIN_EVENT, 1); ((DominionSiegeRunnerEvent)localObject3).unRegisterDominion(((Castle)getResidence()).getDominion()); } despawnSiegeSummons(); if (this._oldOwner != null) { spawnAction("hired_guards", false); removeObjects("hired_guards"); } super.stopEvent(paramBoolean); } public void reCalcNextTime(boolean paramBoolean) { clearActions(); long l = System.currentTimeMillis(); Calendar localCalendar1 = ((Castle)getResidence()).getSiegeDate(); Calendar localCalendar2 = ((Castle)getResidence()).getOwnDate(); if (paramBoolean) { if (localCalendar1.getTimeInMillis() > l) registerActions(); else if (localCalendar1.getTimeInMillis() == 0L) { if (l - localCalendar2.getTimeInMillis() > 86400000L) setNextSiegeTime(); else generateNextSiegeDates(); } else if (localCalendar1.getTimeInMillis() <= l) setNextSiegeTime(); } else if (((Castle)getResidence()).getOwner() != null) { ((Castle)getResidence()).getSiegeDate().setTimeInMillis(0L); ((Castle)getResidence()).setJdbcState(JdbcEntityState.UPDATED); ((Castle)getResidence()).update(); generateNextSiegeDates(); } else { setNextSiegeTime(); } } public void loadSiegeClans() { super.loadSiegeClans(); addObjects("defenders_waiting", SiegeClanDAO.getInstance().load(getResidence(), "defenders_waiting")); addObjects("defenders_refused", SiegeClanDAO.getInstance().load(getResidence(), "defenders_refused")); } public void setRegistrationOver(boolean paramBoolean) { if (paramBoolean) broadcastToWorld(new SystemMessage2(SystemMsg.THE_DEADLINE_TO_REGISTER_FOR_THE_SIEGE_OF_S1_HAS_PASSED).addResidenceName(getResidence())); super.setRegistrationOver(paramBoolean); } public void announce(int paramInt) { int i = paramInt / 60; int j = i / 60; SystemMessage2 localSystemMessage2; if (j > 0) localSystemMessage2 = (SystemMessage2)new SystemMessage2(SystemMsg.S1_HOURS_UNTIL_CASTLE_SIEGE_CONCLUSION).addInteger(j); else if (i > 0) localSystemMessage2 = (SystemMessage2)new SystemMessage2(SystemMsg.S1_MINUTES_UNTIL_CASTLE_SIEGE_CONCLUSION).addInteger(i); else localSystemMessage2 = (SystemMessage2)new SystemMessage2(SystemMsg.THIS_CASTLE_SIEGE_WILL_END_IN_S1_SECONDS).addInteger(paramInt); broadcastTo(localSystemMessage2, new String[] { "attackers", "defenders" }); } private void initControlTowers() { List localList = getObjects("guards"); ArrayList localArrayList = new ArrayList(); Object localObject1 = localList.iterator(); Object localObject2; while (((Iterator)localObject1).hasNext()) { localObject2 = (SpawnExObject)((Iterator)localObject1).next(); localArrayList.addAll(((SpawnExObject)localObject2).getSpawns()); } localObject1 = getObjects("control_towers"); Iterator localIterator1 = localArrayList.iterator(); while (localIterator1.hasNext()) { Spawner localSpawner = (Spawner)localIterator1.next(); Location localLocation = localSpawner.getCurrentSpawnRange().getRandomLoc(ReflectionManager.DEFAULT.getGeoIndex()); localObject2 = null; double d2 = 0.0D; Iterator localIterator2 = ((List)localObject1).iterator(); while (localIterator2.hasNext()) { SiegeToggleNpcObject localSiegeToggleNpcObject = (SiegeToggleNpcObject)localIterator2.next(); SiegeToggleNpcInstance localSiegeToggleNpcInstance = localSiegeToggleNpcObject.getToggleNpc(); double d1 = localSiegeToggleNpcInstance.getDistance(localLocation); if ((localObject2 == null) || (d1 < d2)) { localObject2 = localSiegeToggleNpcInstance; d2 = d1; } ((SiegeToggleNpcInstance)localObject2).register(localSpawner); } } } private void damageZoneAction(boolean paramBoolean) { zoneAction("bought_zones", paramBoolean); } public void generateNextSiegeDates() { if (((Castle)getResidence()).getSiegeDate().getTimeInMillis() != 0L) return; Calendar localCalendar = (Calendar)Config.CASTLE_VALIDATION_DATE.clone(); localCalendar.set(7, 1); if (localCalendar.before(Config.CASTLE_VALIDATION_DATE)) localCalendar.add(3, 1); validateSiegeDate(localCalendar, 2); this._nextSiegeTimes = new TreeIntSet(); for (int k : Config.CASTLE_SELECT_HOURS) { localCalendar.set(11, k); this._nextSiegeTimes.add((int)(localCalendar.getTimeInMillis() / 1000L)); } long l = ((Castle)getResidence()).getOwnDate().getTimeInMillis() + 86400000L - System.currentTimeMillis(); this._nextSiegeDateSetTask = ThreadPoolManager.getInstance().schedule(new NextSiegeDateSet(null), l); } public void setNextSiegeTime(int paramInt) { if ((!this._nextSiegeTimes.contains(paramInt)) || (this._nextSiegeDateSetTask == null)) return; this._nextSiegeTimes = Containers.EMPTY_INT_SET; this._nextSiegeDateSetTask.cancel(false); this._nextSiegeDateSetTask = null; setNextSiegeTime(paramInt * 1000L); } private void setNextSiegeTime() { Calendar localCalendar = (Calendar)Config.CASTLE_VALIDATION_DATE.clone(); localCalendar.set(7, this._dayOfWeek); localCalendar.set(11, this._hourOfDay); if (localCalendar.before(Config.CASTLE_VALIDATION_DATE)) localCalendar.add(3, 1); validateSiegeDate(localCalendar, 2); setNextSiegeTime(localCalendar.getTimeInMillis()); } private void setNextSiegeTime(long paramLong) { broadcastToWorld(new SystemMessage2(SystemMsg.S1_HAS_ANNOUNCED_THE_NEXT_CASTLE_SIEGE_TIME).addResidenceName(getResidence())); clearActions(); ((Castle)getResidence()).getSiegeDate().setTimeInMillis(paramLong); ((Castle)getResidence()).setJdbcState(JdbcEntityState.UPDATED); ((Castle)getResidence()).update(); registerActions(); } public boolean isAttackersInAlly() { return !this._firstStep; } public int[] getNextSiegeTimes() { return this._nextSiegeTimes.toArray(); } public boolean canRessurect(Player paramPlayer, Creature paramCreature, boolean paramBoolean) { boolean bool1 = paramPlayer.isInZone(Zone.ZoneType.SIEGE); boolean bool2 = paramCreature.isInZone(Zone.ZoneType.SIEGE); if ((!bool1) && (!bool2)) return true; if (!bool2) return false; Player localPlayer = paramCreature.getPlayer(); CastleSiegeEvent localCastleSiegeEvent = (CastleSiegeEvent)paramCreature.getEvent(CastleSiegeEvent.class); if (localCastleSiegeEvent != this) { if (paramBoolean) localPlayer.sendPacket(SystemMsg.IT_IS_NOT_POSSIBLE_TO_RESURRECT_IN_BATTLEFIELDS_WHERE_A_SIEGE_WAR_ IS_TAKING_PLACE); paramPlayer.sendPacket(paramBoolean ? SystemMsg.IT_IS_NOT_POSSIBLE_TO_RESURRECT_IN_BATTLEFIELDS_WHERE_A_SIEGE_WAR_IS_T AKING_PLACE : SystemMsg.INVALID_TARGET); return false; } SiegeClanObject localSiegeClanObject = localCastleSiegeEvent.getSiegeClan("attackers", localPlayer.getClan()); if (localSiegeClanObject == null) localSiegeClanObject = localCastleSiegeEvent.getSiegeClan("defenders", localPlayer.getClan()); if (localSiegeClanObject.getType() == "attackers") { if (localSiegeClanObject.getFlag() == null) { if (paramBoolean) localPlayer.sendPacket(SystemMsg.IF_A_BASE_CAMP_DOES_NOT_EXIST_RESURRECTION_IS_NOT_POSSIBLE); paramPlayer.sendPacket(paramBoolean ? SystemMsg.IF_A_BASE_CAMP_DOES_NOT_EXIST_RESURRECTION_IS_NOT_POSSIBLE : SystemMsg.INVALID_TARGET); return false; } } else { List localList = getObjects("control_towers"); int i = 1; Iterator localIterator = localList.iterator(); while (localIterator.hasNext()) { SiegeToggleNpcObject localSiegeToggleNpcObject = (SiegeToggleNpcObject)localIterator.next(); if (!localSiegeToggleNpcObject.isAlive()) i = 0; } if (i == 0) { if (paramBoolean) localPlayer.sendPacket(SystemMsg.THE_GUARDIAN_TOWER_HAS_BEEN_DESTROYED_AND_RESURRECTION_IS_NOT_POSS IBLE); paramPlayer.sendPacket(paramBoolean ? SystemMsg.THE_GUARDIAN_TOWER_HAS_BEEN_DESTROYED_AND_RESURRECTION_IS_NOT_POSSIBLE : SystemMsg.INVALID_TARGET); } } if (paramBoolean) return true; paramPlayer.sendPacket(SystemMsg.INVALID_TARGET); return false; } public Location getRestartLoc(Player paramPlayer, RestartType paramRestartType) { Location localLocation = null; switch (1.$SwitchMap$l2p$gameserver$model$base$RestartType[paramRestartType.ordinal()]) { case 1: if (SevenSigns.getInstance().getSealOwner(3) != 2) break; localLocation = ((Castle)this._residence).getNotOwnerRestartPoint(paramPlayer); } return localLocation; } private class NextSiegeDateSet extends RunnableImpl { private NextSiegeDateSet() { } public void runImpl() throws Exception { CastleSiegeEvent.this.setNextSiegeTime(); } } } где есть описание canRessurect и описываются те кто атакуют и защищают. есть описание только нападающие и защищаюшиеся а также описание "наблюдающих"... так вот там есть: Скрытый текст public boolean canRessurect(Player paramPlayer, Creature paramCreature, boolean paramBoolean) { boolean bool1 = paramPlayer.isInZone(Zone.ZoneType.SIEGE); boolean bool2 = paramCreature.isInZone(Zone.ZoneType.SIEGE); if ((!bool1) && (!bool2)) return true; if (!bool2) return false; Player localPlayer = paramCreature.getPlayer(); CastleSiegeEvent localCastleSiegeEvent = (CastleSiegeEvent)paramCreature.getEvent(CastleSiegeEvent.class); if (localCastleSiegeEvent != this) { if (paramBoolean) localPlayer.sendPacket(SystemMsg.IT_IS_NOT_POSSIBLE_TO_RESURRECT_IN_BATTLEFIELDS_WHERE_A_SIEGE_WAR_ IS_TAKING_PLACE); paramPlayer.sendPacket(paramBoolean ? SystemMsg.IT_IS_NOT_POSSIBLE_TO_RESURRECT_IN_BATTLEFIELDS_WHERE_A_SIEGE_WAR_IS_T AKING_PLACE : SystemMsg.INVALID_TARGET); return false; } SiegeClanObject localSiegeClanObject = localCastleSiegeEvent.getSiegeClan("attackers", localPlayer.getClan()); if (localSiegeClanObject == null) localSiegeClanObject = localCastleSiegeEvent.getSiegeClan("defenders", localPlayer.getClan()); if (localSiegeClanObject.getType() == "attackers") { if (localSiegeClanObject.getFlag() == null) { if (paramBoolean) localPlayer.sendPacket(SystemMsg.IF_A_BASE_CAMP_DOES_NOT_EXIST_RESURRECTION_IS_NOT_POSSIBLE); paramPlayer.sendPacket(paramBoolean ? SystemMsg.IF_A_BASE_CAMP_DOES_NOT_EXIST_RESURRECTION_IS_NOT_POSSIBLE : SystemMsg.INVALID_TARGET); return false; } } else { List localList = getObjects("control_towers"); int i = 1; Iterator localIterator = localList.iterator(); while (localIterator.hasNext()) { SiegeToggleNpcObject localSiegeToggleNpcObject = (SiegeToggleNpcObject)localIterator.next(); if (!localSiegeToggleNpcObject.isAlive()) i = 0; } if (i == 0) { if (paramBoolean) localPlayer.sendPacket(SystemMsg.THE_GUARDIAN_TOWER_HAS_BEEN_DESTROYED_AND_RESURRECTION_IS_NOT_POSS IBLE); paramPlayer.sendPacket(paramBoolean ? SystemMsg.THE_GUARDIAN_TOWER_HAS_BEEN_DESTROYED_AND_RESURRECTION_IS_NOT_POSSIBLE : SystemMsg.INVALID_TARGET); } } if (paramBoolean) return true; paramPlayer.sendPacket(SystemMsg.INVALID_TARGET); return false; } как сюда внести еще то чтобы в зоне также не работали свитки... так как скил не работает, что верно если судить из описания и подтвержденное на опыте
×
×
  • Создать...