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