Jump to content
  • 0

Geodata Issue On Doors


Question

Posted

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
    }

 

10 answers to this question

Recommended Posts

  • 0
Posted

Door geodata is generated on the fly from L2DoorInstance on old packs. About how that stuff is used on your pack, it's another story and not my problem :D.

since its not your problem and you dont want to help, dont spam for no reason.

  • 0
Posted (edited)

since its not your problem and you dont want to help, dont spam for no reason.

 

The topic owner asked my opinion, and your answer can be considered a biggest spam than mine, as it doesn't even touch to the subject.

 

About subject, I got no clue about how your pack parseList doors, and I got no will to help you debug GeoEngine / L2DoorInstance while that work has been done on my own pack.

 

But as AbsolutePower seems more helpful, I guess you will have numerous good advices and a fix from him.

Edited by Tryskell
  • 0
Posted

The topic owner asked my opinion, and your answer can be considered a biggest spam than mine, as it doesn't even touch to the subject.

 

About subject, I got no clue about how your pack parseList doors, and I got no will to help you debug GeoEngine / L2DoorInstance while that work has been done on my own pack.

 

But as AbsolutePower seems more helpful, I guess you will have numerous good advices and a fix from him.

the topic owner asked your ideas-help, not your opinion., speaking generally for something with out knowloge considered spam.

 

also : @Tryskell : and i got no will to help you.

 

so stop it :)

  • 0
Posted

Then you spam, staph.

 

He just replied to his call for help by a long no, that's it.

  • 0
Posted (edited)

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 :)

You don't provide full code, and still you want to get clear answer, how pathetic is that ?

 

.prophet mode=on;

My guess is that somewhere in restart config, there is a option that initialize some part of geo for doors, that is missing in main loader !

Look better for code, waste more time - its your job, since you didn't payed !

Edited by LightFusion
  • 0
Posted (edited)

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()));
                    }
                }
            }
Edited by GameBlonD

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