Jump to content

Sabrent

Members
  • Content Count

    17
  • Joined

  • Last visited

  • Feedback

    0%

Community Reputation

0 Neutral

About Sabrent

  • Rank
    Vassal

Profile Information

  • Gender
    Male
  • Country
    Israel
  • Location
    Yisrael

Recent Profile Visitors

143 profile views
  1. L2Character (2729) public boolean updatePosition() { // Get movement data MoveData m = _move; if (m == null) { return true; } if (!isSpawned()) { _move = null; return true; } // Check if this is the first update if (m._moveTimestamp == 0) { m._moveTimestamp = m._moveStartTime; m._xAccurate = getX(); m._yAccurate = getY(); } int gameTicks = GameTimeManager.getInstance().getGameTicks(); // Check if the position has already been calculated if (m._moveTimestamp == gameTicks) { return false; } double xPrev = getX(); double yPrev = getY(); double zPrev = getZ(); // the z coordinate may be modified by coordinate synchronizations double dx, dy, dz; if (GeoDataConfig.COORD_SYNCHRONIZE == 1) // the only method that can modify x,y while moving (otherwise _move would/should be set null) { dx = m._xDestination - xPrev; dy = m._yDestination - yPrev; } else // otherwise we need saved temporary values to avoid rounding errors { dx = m._xDestination - m._xAccurate; dy = m._yDestination - m._yAccurate; } final boolean isFloating = isFlying() || isInsideZone(ZoneId.WATER); // Z coordinate will follow geodata or client values if ((GeoDataConfig.COORD_SYNCHRONIZE == 2) && !isFloating && !m.disregardingGeodata && ((GameTimeManager.getInstance().getGameTicks() % 10) == 0 // once a second to reduce possible cpu load ) && GeoData.getInstance().hasGeo(xPrev, yPrev)) { double geoHeight = GeoData.getInstance().getSpawnHeight(xPrev, yPrev, zPrev); dz = m._zDestination - geoHeight; // quite a big difference, compare to validatePosition packet if (isPlayer() && (Math.abs(getActingPlayer().getClientZ() - geoHeight) > 200) && (Math.abs(getActingPlayer().getClientZ() - geoHeight) < 1500)) { dz = m._zDestination - zPrev; // allow diff } else if (isInCombat() && (Math.abs(dz) > 200) && (((dx * dx) + (dy * dy)) < 40000)) // allow mob to climb up to pcinstance { dz = m._zDestination - zPrev; // climbing } else { zPrev = geoHeight; } } else { dz = m._zDestination - zPrev; } double delta = (dx * dx) + (dy * dy); if ((delta < 10000) && ((dz * dz) > 2500) // close enough, allows error between client and server geodata if it cannot be avoided && !isFloating) { delta = Math.sqrt(delta); } else { delta = Math.sqrt(delta + (dz * dz)); } double distFraction = Double.MAX_VALUE; if (delta > 1) { final double distPassed = (getMoveSpeed() * (gameTicks - m._moveTimestamp)) / GameTimeManager.TICKS_PER_SECOND; distFraction = distPassed / delta; } // if (Config.DEVELOPER) LOGGER.warn("Move Ticks:" + (gameTicks - m._moveTimestamp) + ", distPassed:" + distPassed + ", distFraction:" + distFraction); if (distFraction > 1) { // Set the position of the L2Character to the destination final double x = m._xDestination; final double y = m._yDestination; final double z = m._zDestination; super.setXYZ(x, y, z); if (isDebug()) { final ExShowTrace trace = new ExShowTrace(); trace.addLocation(x, y, z); sendDebugPacket(trace, DebugType.MOVEMENT); } } else { m._xAccurate += dx * distFraction; m._yAccurate += dy * distFraction; final double x = m._xAccurate; final double y = m._yAccurate; final double z = zPrev + ((dz * distFraction) + 0.5); // Set the position of the L2Character to estimated after partial move super.setXYZ(x, y, z); // HERE LINE 2729 if (isDebug()) { final ExShowTrace trace = new ExShowTrace(); trace.addLocation(x, y, z); sendDebugPacket(trace, DebugType.MOVEMENT); } } revalidateZone(false); // Set the timer of last position update to now m._moveTimestamp = gameTicks; if (distFraction > 1) { if (isDebug()) { Position.drawPosition(this); } ThreadPool.execute(() -> getAI().notifyEvent(CtrlEvent.EVT_ARRIVED)); return true; } return false; }
  2. Hello friends. I have a doubt with this Exception: Null, in my knowledge, which is not much, I am looking for the object that has not been initialized, i has it took several days looking how to solve it. L2Object.java:780 @Override public void setXYZ(double x, double y, double z) { _x = x; _y = y; _z = z; if (_isSpawned) { final WorldRegion oldRegion = getWorldRegion(); final WorldRegion newRegion = World.getInstance().getRegion(this); if (newRegion != oldRegion) { if (oldRegion != null) { oldRegion.removeVisibleObject(this); } newRegion.addVisibleObject(this); World.getInstance().switchRegion(this, newRegion); setWorldRegion(newRegion); } } }
  3. Hi all. I ve been all day looking for the way to do it but I could not, cans give me a suggestion on how to do it? I want an NPC that when spawn, the zone becomes debuff and when the NPC is death, the debuff disappears. L2jServer HF
  4. sorry session wrong, delete post.
×