Jump to content

GameBlonD

Members
  • Posts

    553
  • Credits

  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by GameBlonD

  1. 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();
                    }
  2. 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;
        }
  3. 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()));
                        }
                    }
                }
  4. 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
        }

     

  5. 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)
  6. 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

  7. 
    

                // 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;

        }

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

     

  9. 
    

            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 >");

                }

            }

     

  10. 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)
  11. 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));
                }
             }
          }
  12. 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);
  13. 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...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock