Jump to content
  • 0

Doors Geodata Issue


Question

Posted (edited)

Players can hit through doors (in castle for example)

But if i start siege Kill Doors/end siege then doors working good no more exploits etc

I tried to load         DoorTable.getInstance();  before/after geodata but with no result..


What else can cause this?
 

Edited by GameBlonD

1 answer to this question

Recommended Posts

  • 0
Posted

this is the load method:

    // This method loads castle door data from database
    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 the spawn method (when i kill doors /start /end siege then works so i am guessing this is the code that works fine:

    /**
     * Respawn all doors on castle grounds<BR>
     * <BR>
     */
    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
    }

How to adjust it so castle doors to work in server start?

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×
×
  • 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