Jump to content
  • 0

[Acis]Spawn Point After Death.


Question

Posted (edited)

Hello. I have a little problem and honestly I have no idea what to do now. I changed respawn point after clicking "To town" by editing RequestRestartPoint.java

I added my location to "default" code looks like this:

				default:
					loc = new Location(81275, 148617, -3468);
					break;

and the whole code:

 

 

/*
 * This program is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later
 * version.
 * 
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 * 
 * You should have received a copy of the GNU General Public License along with
 * this program. If not, see <http://www.gnu.org/licenses/>.
 */
package net.sf.l2j.gameserver.network.clientpackets;

import net.sf.l2j.gameserver.ThreadPoolManager;
import net.sf.l2j.gameserver.datatables.MapRegionTable;
import net.sf.l2j.gameserver.instancemanager.CastleManager;
import net.sf.l2j.gameserver.instancemanager.ClanHallManager;
import net.sf.l2j.gameserver.instancemanager.SiegeManager;
import net.sf.l2j.gameserver.model.L2SiegeClan;
import net.sf.l2j.gameserver.model.Location;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.entity.Castle;
import net.sf.l2j.gameserver.model.entity.ClanHall;

public final class RequestRestartPoint extends L2GameClientPacket
{
	protected int _requestedPointType;
	protected boolean _continuation;
	
	@Override
	protected void readImpl()
	{
		_requestedPointType = readD();
	}
	
	class DeathTask implements Runnable
	{
		final L2PcInstance activeChar;
		
		DeathTask(L2PcInstance _activeChar)
		{
			activeChar = _activeChar;
		}
		
		@Override
		public void run()
		{
			Location loc = null;
			Castle castle = null;
			
			// force
			if (activeChar.isInJail())
				_requestedPointType = 27;
			else if (activeChar.isFestivalParticipant())
				_requestedPointType = 4;
			
			switch (_requestedPointType)
			{
				case 1: // to clanhall
					if (activeChar.getClan() == null || !activeChar.getClan().hasHideout())
					{
						_log.warning(activeChar.getName() + " called RestartPointPacket - To Clanhall while he doesn't have clan / Clanhall.");
						return;
					}
					
					loc = MapRegionTable.getInstance().getTeleToLocation(activeChar, MapRegionTable.TeleportWhereType.ClanHall);
					
					if (ClanHallManager.getInstance().getClanHallByOwner(activeChar.getClan()) != null && ClanHallManager.getInstance().getClanHallByOwner(activeChar.getClan()).getFunction(ClanHall.FUNC_RESTORE_EXP) != null)
					{
						activeChar.restoreExp(ClanHallManager.getInstance().getClanHallByOwner(activeChar.getClan()).getFunction(ClanHall.FUNC_RESTORE_EXP).getLvl());
					}
					break;
				
				case 2: // to castle
					castle = CastleManager.getInstance().getCastle(activeChar);
					
					if (castle != null && castle.getSiege().isInProgress())
					{
						// Siege in progress
						if (castle.getSiege().checkIsDefender(activeChar.getClan()))
							loc = MapRegionTable.getInstance().getTeleToLocation(activeChar, MapRegionTable.TeleportWhereType.Castle);
						// Just in case you lost castle while being dead.. Port to nearest Town.
						else if (castle.getSiege().checkIsAttacker(activeChar.getClan()))
							loc = MapRegionTable.getInstance().getTeleToLocation(activeChar, MapRegionTable.TeleportWhereType.Town);
						else
						{
							_log.warning(activeChar.getName() + " called RestartPointPacket - To Castle while he doesn't have Castle.");
							return;
						}
					}
					else
					{
						if (activeChar.getClan() == null || !activeChar.getClan().hasCastle())
							return;
						
						loc = MapRegionTable.getInstance().getTeleToLocation(activeChar, MapRegionTable.TeleportWhereType.Castle);
					}
					break;
				
				case 3: // to siege HQ
					L2SiegeClan siegeClan = null;
					castle = CastleManager.getInstance().getCastle(activeChar);
					
					if (castle != null && castle.getSiege().isInProgress())
						siegeClan = castle.getSiege().getAttackerClan(activeChar.getClan());
					
					// Not a normal scenario.
					if (siegeClan == null)
					{
						_log.warning(activeChar.getName() + " called RestartPointPacket - To Siege HQ while he doesn't have Siege HQ.");
						return;
					}
					
					// If a player was waiting with flag option and then the flag dies before the
					// player pushes the button, he is send back to closest/second closest town.
					if (siegeClan.getFlags().isEmpty())
						loc = MapRegionTable.getInstance().getTeleToLocation(activeChar, MapRegionTable.TeleportWhereType.Town);
					else
						loc = MapRegionTable.getInstance().getTeleToLocation(activeChar, MapRegionTable.TeleportWhereType.SiegeFlag);
					break;
				
				case 4: // Fixed or player is a festival participant
					if (!activeChar.isGM() && !activeChar.isFestivalParticipant())
					{
						_log.warning(activeChar.getName() + " called RestartPointPacket - Fixed while he isn't festival participant!");
						return;
					}
					loc = new Location(activeChar.getX(), activeChar.getY(), activeChar.getZ()); // spawn them where they died
					break;
				
				case 27: // to jail
					if (!activeChar.isInJail())
						return;
					loc = new Location(-114356, -249645, -2984);
					break;
				
				default:
					loc = new Location(81275, 148617, -3468);
					break;
			}
			
			// Teleport and revive
			activeChar.setIsIn7sDungeon(false);
			
			if (activeChar.isDead())
				activeChar.doRevive();
			
			activeChar.teleToLocation(loc, 20);
		}
	}
	
	@Override
	protected void runImpl()
	{
		final L2PcInstance activeChar = getClient().getActiveChar();
		if (activeChar == null)
			return;
		
		if (activeChar.isFakeDeath())
		{
			activeChar.stopFakeDeath(true);
			return;
		}
		
		if (!activeChar.isDead())
		{
			_log.warning("Living player [" + activeChar.getName() + "] called RequestRestartPoint packet.");
			return;
		}
		
		Castle castle = CastleManager.getInstance().getCastle(activeChar.getX(), activeChar.getY(), activeChar.getZ());
		if (castle != null && castle.getSiege().isInProgress())
		{
			if (activeChar.getClan() != null && castle.getSiege().checkIsAttacker(activeChar.getClan()))
			{
				// Schedule respawn delay for attacker
				ThreadPoolManager.getInstance().scheduleGeneral(new DeathTask(activeChar), SiegeManager.ATTACKERS_RESPAWN_DELAY);
				
				if (SiegeManager.ATTACKERS_RESPAWN_DELAY > 0)
					activeChar.sendMessage("You will be teleported in " + SiegeManager.ATTACKERS_RESPAWN_DELAY / 1000 + " seconds.");
				
				return;
			}
		}
		
		// run immediately (no need to schedule)
		new DeathTask(activeChar).run();
	}
} 

 

 

 

I have no idea why it doesn't work. Hope I'll solve this problem with your help guys :)

Edited by devil12pl

2 answers to this question

Recommended Posts

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


  • Posts

    • WoW Midnight — AFK Fishing Bot v2.0     Fully rewritten. No more pixel detection. V2 is audio-only and paired with a companion addon that handles everything inside the game — one keybind does it all.     Showcase:                  What's new in v2.0 Audio-only detection. Listens for the splash. No screen scanning, no calibration, no zone tuning. It just works anywhere. One key for everything. Same keybind casts the line and loots the catch. Bound via the included BobberAssist addon. Auto-buff system. Drop your lures, teas, potions (Haranir Phial, Sanguithorn Tea, Ominous Octopus Lure, etc.) into the addon. Set a timer. The bot refreshes them automatically before each cast. Sit-and-fish mode. Optional — bot types /sit when you start. Fewer interrupts from Root Crabs and roaming mobs. Smart anti-AFK. Fires only between catches, never mid-cast. AutoDestroy addon included. Junk items deleted automatically after every catch. VB-CABLE support. Play music, Discord, YouTube with zero interference. Randomized timing — natural 50–120 ms reactions.                       Features One-key start (F6) — press and walk away Audio isolation via VB-CABLE — play music, YouTube, Discord with zero interference Configurable consumable auto-use (lures / baits / potions / teas) with per-item timers Sit-and-fish mode to avoid ambient mob aggro Anti-AFK built in — jumps every 5 minutes in stand mode, jump + re-sit in sit mode (between catches only, never mid-cast) AutoDestroy addon included — automatically deletes junk items to keep bags clean after every catch Randomized splash→loot and loot→recast delays (natural timing, 50–120 ms reaction) Works in any zone, any fishing spot No pixel detection means no zone-specific tuning — it just works        Why v2 > v1 V1 scanned your screen for the bobber. It broke when the UI changed, the camera moved, or a new zone had different visuals. V2 only listens for the splash — nothing visual to break. Plus the new addon lets a single keybind cast, loot, and use your buffs. Way less setup, way more reliable.            Safety Runs completely external. No injection, no memory reads, no file edits. Watches nothing, listens to audio, presses one key. Use at your own risk. Automation is against Blizzard's ToS.          V1 owners Free upgrade. DM me for the new build.   One-time payment, lifetime access. DM on Discord: Nythrand
    • Hi as the title says, I need a working script for anti captcha. First window appears and have to click continue, then comes up another to type the code. Tell me how much u want for help $$.    
    • Did your boss send you to post this? hahaha
    • TG Support: https://t.me/buyingproxysup | Channel: https://t.me/buyingproxycom Discord support: #buyingproxy | Server: Join the BuyingProxy Discord Server!  Create your free account here
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..