Jump to content

GameBlonD

Members
  • Posts

    553
  • Credits

  • Joined

  • Last visited

  • Feedback

    0%

Everything posted by GameBlonD

  1. I think the only alive servers using the real l2dc files are http://raidfight.eu/ (H5) and http://l2flash.eu/ (Epilogue) You can't use preconfigured server for live , i checked the first .rar and it was really messy inside worst than test server files :)
  2. Find NpcKnownList.java and fix it yourself :) or if you can't post the full code here maybe someone can help you.
  3. Hi , i tried few methods to do CLAN_SKILL_S1_ADDED to sended to clan members but i couldn't any ideas? SystemMessage cr = new SystemMessage(SystemMessageId.S1_DEDUCTED_FROM_CLAN_REP); cr.addNumber(repCost); player.sendPacket(cr); SystemMessage sm = new SystemMessage(SystemMessageId.CLAN_SKILL_S1_ADDED); sm.addSkillName(_id); player.sendPacket(sm); sm = null; player.getClan().broadcastToOnlineMembers(new PledgeSkillList(player.getClan())); for (L2PcInstance member : player.getClan().getOnlineMembers(0)) { member.sendSkillList(); }
  4. nice fix , thank you! PS: It was a little difficult for me to adapt it in the old system (L2J GF-) without timeline/changelog on acis timeline :P
  5. Hi, anyone can help me add a check on seal of rule (pray) so players can casted only from the Platform? Tried something like this: else if (!Util.checkIfInRange(200, this, getTarget(), true) && (!(Math.abs(getZ() - getZ()) > 1000))) but it doesn't work Full code: public boolean checkIfOkToCastSealOfRule(Castle castle, boolean isCheckOnly, L2Skill skill) { SystemMessage sm; if (castle == null || castle.getCastleId() <= 0) { sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED); sm.addSkillName(skill); } else if (!castle.getArtifacts().contains(getTarget())) { sm = new SystemMessage(SystemMessageId.INCORRECT_TARGET); } else if (!castle.getSiege().getIsInProgress()) { sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED); sm.addSkillName(skill); } else if (!Util.checkIfInRange(200, this, getTarget(), true)) { sm = new SystemMessage(SystemMessageId.DIST_TOO_FAR_CASTING_STOPPED); } else if (castle.getSiege().getAttackerClan(getClan()) == null) { sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED); sm.addSkillName(skill); } else { if (!isCheckOnly) { sm = new SystemMessage(SystemMessageId.OPPONENT_STARTED_ENGRAVING); castle.getSiege().announceToPlayer(sm, false); } return true; } sendPacket(sm); return false; }
  6. The problem should be here so SpawnDoor works and parse data doesnt any ideas how to improve parsedata on load? public void parseData() { LineNumberReader lnr = null; try { File doorData = new File(Config.DATAPACK_ROOT, "data/door.csv"); lnr = new LineNumberReader(new BufferedReader(new FileReader(doorData))); String line = null; while ((line = lnr.readLine()) != null) { if (line.trim().length() == 0 || line.startsWith("#")) continue; L2DoorInstance door = parseList(line, false); _staticItems.put(door.getDoorId(), door); door.spawnMe(door.getX(), door.getY(), door.getZ()); ClanHall clanhall = ClanHallManager.getInstance().getNearbyClanHall(door.getX(), door.getY(), 500); if (clanhall != null) { clanhall.getDoors().add(door); door.setClanHall(clanhall); if (_log.isLoggable(Level.FINE)) { _log.fine(StringUtil.concat("door ", door.getDoorName(), " attached to ch ", clanhall.getName())); } } }
  7. I know its not your problem dude... but i cant understand why on respawn geodata works and on Load first server run geodata doesn't :)
  8. Hello , so i am having a strange issue with all doors and i can't find the issue. For example on Castle doors players can blink no geodata check but if I kill the doors and start/end siege then doors have geodata normally. So this is the Load: private void loadDoor() { Connection con = null; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement statement = con.prepareStatement("Select * from castle_door where castleId = ?"); statement.setInt(1, getCastleId()); ResultSet rs = statement.executeQuery(); while (rs.next()) { // Create list of the door default for use when respawning dead doors _doorDefault.add(rs.getString("name") + ";" + rs.getInt("id") + ";" + rs.getInt("x") + ";" + rs.getInt("y") + ";" + rs.getInt("z") + ";" + rs.getInt("range_xmin") + ";" + rs.getInt("range_ymin") + ";" + rs.getInt("range_zmin") + ";" + rs.getInt("range_xmax") + ";" + rs.getInt("range_ymax") + ";" + rs.getInt("range_zmax") + ";" + rs.getInt("hp") + ";" + rs.getInt("pDef") + ";" + rs.getInt("mDef")); L2DoorInstance door = DoorTable.parseList(_doorDefault.get(_doorDefault.size() - 1), false); _doors.add(door); DoorTable.getInstance().putDoor(door); } ResourceUtil.closeResultSet(rs); ResourceUtil.closeStatement(statement); } catch (Exception e) { _log.log(Level.WARNING, "Exception: loadCastleDoor()", e); } finally { ResourceUtil.closeConnection(con); } } This is what it is called when i end a siege: getCastle().spawnDoor(); // Respawn door to castle And Finally this is the spawnDoor: public void spawnDoor(boolean isDoorWeak) { for (int i = 0; i < getDoors().size(); i++) { L2DoorInstance door = getDoors().get(i); if (door.getCurrentHp() <= 0) { door.decayMe(); // Kill current if not killed already door = DoorTable.parseList(_doorDefault.get(i), false); DoorTable.getInstance().putDoor(door); // Readd the new door to the DoorTable By Erb if (isDoorWeak) door.setCurrentHp(door.getMaxHp() / 2); door.spawnMe(door.getX(), door.getY(), door.getZ()); getDoors().set(i, door); } else if (door.getOpen()) door.closeMe(); } loadDoorUpgrade(); // Check for any upgrade the doors may have }
  9. I found and fixed the issue it was a part of the code inside L2DefenderInstance.java All the fortress/castle guards worked fine.... but those 4 Guard in floran "found" the issue in the code : ) Thanks again.
  10. It happens only in Floran fortress and only by the 4 balcony Guards if i delete them then there is no error. also this error i get when i try to kill the balcony "stucked" guards: Anyway thanks for your help! Full update scheduled. java.lang.NullPointerException L2AttackableAIScript.java java.lang.NullPointerException at com.l2j.gameserver.model.actor.L2Attackable.addDamageHate(L2Attackab le.java:1031) at com.l2j.gameserver.model.actor.instance.L2DefenderInstance.addDamage Hate(L2DefenderInstance.java:245) at ai.group_template.L2AttackableAIScript.onAttack(L2AttackableAIScript. java:191) at com.l2j.gameserver.model.quest.Quest.onAttack(Quest.java:690) at com.l2j.gameserver.model.quest.Quest.notifyAttack(Quest.java:376) at com.l2j.gameserver.model.actor.L2Attackable.addDamage(L2Attackable.j ava:973) at com.l2j.gameserver.model.actor.L2Attackable.reduceCurrentHp(L2Attack able.java:482) at com.l2j.gameserver.model.actor.L2Attackable.reduceCurrentHp(L2Attack able.java:433) at com.l2j.gameserver.model.actor.L2Character.onHitTimer(L2Character.ja va:5786) at com.l2j.gameserver.model.actor.instance.L2PcInstance.onHitTimer(L2Pc Instance.java:4852) at com.l2j.gameserver.model.actor.L2Character$HitTask.run(L2Character.j ava:3012) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask. access$301(Unknown Source) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask. run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source ) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
  11. Tryskell I can't understand why this happen only in Floran fort , maybe its a zone issue? with coords etc?
  12. KnownListUpdateTaskManager: updateRegion(3,false) failed for region (73, 101). F ull update scheduled. java.lang.NullPointerException KnownListUpdateTaskManager: updateRegion(1,false) failed for region (73, 101). F ull update scheduled. java.lang.NullPointerException KnownListUpdateTaskManager: updateRegion(88,false) failed for region (73, 101). Full update scheduled. java.lang.NullPointerException KnownListUpdateTaskManager: updateRegion(80,false) failed for region (73, 101). Full update scheduled. java.lang.NullPointerException KnownListUpdateTaskManager: updateRegion(78,false) failed for region (73, 101). Full update scheduled. java.lang.NullPointerException KnownListUpdateTaskManager: updateRegion(76,false) failed for region (73, 101). Full update scheduled. java.lang.NullPointerException KnownListUpdateTaskManager: updateRegion(54,false) failed for region (73, 101). Full update scheduled. java.lang.NullPointerException KnownListUpdateTaskManager: updateRegion(50,false) failed for region (73, 101). Full update scheduled. java.lang.NullPointerException KnownListUpdateTaskManager: updateRegion(48,false) failed for region (73, 101). Full update scheduled. java.lang.NullPointerException I have this problem only on Floran fortress and i cant find the reason this the spam on gameserver when some1 enters in combat zone
  13. // Check if player is an enemy of this defender npc if (player != null && ((player.getSiegeState() == 2 && !player.isRegisteredOnThisSiegeField(activeSiegeId)) || (player.getSiegeState() == 1 && !TerritoryWarManager.getInstance().isAllyField(player, activeSiegeId)) || player.getSiegeState() == 0)) { 58 if (getActiveChar().getAI().getIntention() == CtrlIntention.AI_INTENTION_IDLE) getActiveChar().getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE, null); } } return true; }
  14. Any ideas for this error? it happens when floran fortress start and a character teleported there. it stuck until fortress end. Failed running: [C] 30 Appearing java.lang.NullPointerException at com.l2j.gameserver.model.actor.knownlist.DefenderKnownList.addKnownO bject(DefenderKnownList.java:58) at com.l2j.gameserver.model.L2World.addVisibleObject(L2World.java:416) at com.l2j.gameserver.model.L2Object.spawnMe(L2Object.java:504) at com.l2j.gameserver.model.actor.L2Character.onTeleported(L2Character. java:474) at com.l2j.gameserver.model.actor.instance.L2PcInstance.onTeleported(L2 PcInstance.java:11244) at com.l2j.gameserver.network.clientpackets.action.Appearing.runImpl(Ap pearing.java:47) at com.l2j.gameserver.network.clientpackets.L2GameClientPacket.run(L2Ga meClientPacket.java:92) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source ) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) KnownListUpdateTaskManager: updateRegion(19,false) failed for region (73, 101). Full update scheduled. java.lang.NullPointerException KnownListUpdateTaskManager: updateRegion(17,false) failed for region (73, 101). Full update scheduled. java.lang.NullPointerException
  15. catch (Exception e) { _log.log(Level.WARNING, getClient()+" sent bad RequestBypassToServer: \""+_command+"\"", e); if (activeChar.isGM()) { StringBuilder sb = new StringBuilder(200); sb.append("<html><body>"); sb.append("Bypass error: "+e+"<br1>"); sb.append("Bypass command: "+_command+"<br1>"); sb.append("StackTrace:<br1>"); for (StackTraceElement ste : e.getStackTrace()) sb.append(ste.toString()+"<br1>"); sb.append("</body></html>"); // item html NpcHtmlMessage msg = new NpcHtmlMessage(0,12807); msg.setHtml(sb.toString()); msg.disableValidation(); activeChar.sendPacket(msg); } } else { hero = Hero.getInstance().getHeroesDiaries().get(classId); html.setFile(activeChar.getHtmlPrefix(), "data/html/olympiad/hero_diary.htm"); if (hero != null) { final int numOfEntries = hero.getInteger("bosses"); for (int i = page*100; i >= (page-1)*100; i--) { if (numOfEntries < i) continue; date.setTimeInMillis(hero.getLong("time"+i)); entries.append("<br><font color=\"LEVEL\">Year: " + (date.get(Calendar.YEAR)) + " Month: " + (date.get(Calendar.MONTH)+1) + " Day: " + date.get(Calendar.DAY_OF_MONTH) + " Hour: " + date.get(Calendar.HOUR_OF_DAY) + "</font><br1>"); final int data = hero.getInteger("boss"+i); if (data > 9) entries.append("&@" + data + "; was defeated.<br>"); else if (data == 0) entries.append("Gained Hero status.<br>"); else entries.append("&%" + data + "; was taken.<br>"); } if (numOfEntries/ 100 > page+1) html.replace("%page%", "<button value = \"Next\" action=\"bypass -h diary ?class=" + classId + "&page=" + (page+1) + "\" back=\"L2UI_CT1.Button_DF_Small_DOWN\" fore=\"L2UI_CT1.Button_DF_Small\" width=70 height=25 >"); } }
  16. Hi , when period ends and new heroes are formed if a players go on the Monument and click on Hero diary (to check raid boss etc) i get this message in the gameserver: *Note : if i restart the server then it works ok without this errror. [Character: Test[268479287] - Account: testchar - IP: ] sent bad RequestBypassToServer: "_diary?class=88&page=1" java.lang.IllegalArgumentException: Integer value required, but not specified at com.l2j.gameserver.templates.StatsSet.getInteger(StatsSet.java:215) at handlers.bypasshandlers.OlyMatch.useBypass(OlyMatch.java:80) at com.l2j.gameserver.model.actor.L2Npc.onBypassFeedback(L2Npc.java:890 ) at com.l2j.gameserver.network.clientpackets.RequestBypassToServer.runIm pl(RequestBypassToServer.java:82) at com.l2j.gameserver.network.clientpackets.L2GameClientPacket.run(L2Ga meClientPacket.java:92) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source ) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
  17. if i delete this if (Math.abs(dz) > 200 && Math.abs(dz) < 1500 && Math.abs(_z - activeChar.getClientZ()) < 800 ) or just use sync -1 then player doesnt move in the roof but i have other critical issues with -1 so i need to make sync 2 work
  18. Hi i have a problem with sync 2 if a players click with zoom hack/long rage camera in a roof etc in teleported there (moves there) any ideas on how to fix it? // Sync 2 (or other), // intended for geodata. Sends a validation packet to client // when too far from server calculated true coordinate. // Due to geodata/zone errors, some Z axis checks are made. (maybe a temporary solution) // Important: this code part must work together with L2Character.updatePosition if (Config.GEODATA > 0 && (diffSq > 250000 || Math.abs(dz) > 200)) { //if ((_z - activeChar.getClientZ()) < 200 && Math.abs(activeChar.getLastServerPosition().getZ()-realZ) > 70) if (Math.abs(dz) > 200 && Math.abs(dz) < 1500 && Math.abs(_z - activeChar.getClientZ()) < 800 ) { activeChar.setXYZ(realX, realY, _z); realZ = _z; } else { if (Config.DEVELOPER) _log.info(activeChar.getName() + ": Synchronizing position Server --> Client"); activeChar.sendPacket(new ValidateLocation(activeChar)); } } }
  19. I just need mass resurrection to rez First the Character then the Pet because with the code above if both char/pet are dead and clan member uses mass resurrection - the box about accept resurrection is for pet so pet ressurected and characters remained dead.
  20. on l2skill if (activeChar instanceof L2Playable) { final L2PcInstance player = activeChar.getActingPlayer(); if (player == null) return _emptyTargetList; if (player.getOlympiadManagement().isInOlympiadMode()) return new L2Character[] { player }; final boolean isCorpseType = targetType == SkillTargetType.TARGET_CORPSE_CLAN; if (!isCorpseType) { if (onlyFirst) return new L2Character[] { player }; targetList.add(player); } final int radius = getSkillRadius(); final L2Clan clan = player.getClan(); if (addSummon(activeChar, player, radius, isCorpseType)) targetList.add(player.getPet()); if (clan != null) { L2PcInstance obj; // Get Clan Members for (L2ClanMember member : clan.getMembers()) { obj = member.getPlayerInstance(); if (obj == null || obj == player) continue; if (player.isInDuel()) { if (player.getDuelId() != obj.getDuelId()) continue; if (player.isInParty() && obj.isInParty() && player.getParty().getPartyLeaderOID() != obj.getParty().getPartyLeaderOID()) continue; } // Don't add this target if this is a Pc->Pc pvp casting and pvp condition not met if (!player.checkPvpSkill(obj, this)) continue; if (!TvTEvent.checkForTvTSkill(player, obj, this)) continue; if (!TvTCustomEvent.checkForTvTSkill(player, obj, this)) continue; if (!onlyFirst && addSummon(activeChar, obj, radius, isCorpseType)) targetList.add(obj.getPet()); if (!addCharacter(activeChar, obj, radius, isCorpseType)) continue; if (isCorpseType) { if (getSkillType() == L2SkillType.RESURRECT) { // check target is not in a active siege zone if (obj.isInsideZone(L2Character.ZONE_SIEGE) && !obj.isInSiege()) continue; } } if (onlyFirst) return new L2Character[] { obj }; targetList.add(obj);
  21. Hi , The issue is that if a bishop uses mass resurrection and the clan member is dead and also has a pet dead mass resurrection resurrect the pet first how can i do it to res the character fist? some part of the code , any ideas? for (L2Character cha : targetToRes) if (activeChar instanceof L2PcInstance) { if (cha instanceof L2PcInstance) ((L2PcInstance) cha).reviveRequest((L2PcInstance) activeChar, skill, false); else if (cha instanceof L2PetInstance) ((L2PetInstance) cha).getOwner().reviveRequest((L2PcInstance) activeChar, skill, true); } else { DecayTaskManager.getInstance().cancelDecayTask(cha); cha.doRevive(Formulas.calculateSkillResurrectRestorePercent(skill.getPower(), activeChar.getWIT())); } }
×
×
  • Create New...