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 (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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



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