Jump to content
  • 0

random spawn


Question

Posted

hey, i'm looking for a code with makes randon respawn on die, i mean when you die in farm zone or pvp zone usually small windows come out with button "to village" so i want to get code which makes new button with "random respawn" . so players can choose go to village or random respawn in the zone:) anyone have that code? thanks

Recommended Posts

  • 0
Posted

this is server side so its wrong section lol xd

He needs help about creating a button, client side.

But he changes the conversation who knows why, kinda boring.

  • 0
Posted

He needs help about creating a button, client side.

But he changes the conversation who knows why, kinda boring.

 

nothing is client side, the only ONLY way to do it, is by moding Systring and changing Fixed to Random, and enable the Random writeD(0x01) from Die.java packet

  • 0
Posted

moding Systring

Client sided, enough said :P. Server side only cares how/which sysmessage is / to use/d, and the behavior of the button. There isn't such sysmessageid anyway.

 

But as xdem said, you can simply use "Fixed" button. Even the term "Fixed" is "ok" to understand.

  • 0
Posted

nothing is client side, the only ONLY way to do it, is by moding Systring and changing Fixed to Random, and enable the Random writeD(0x04) from Die.java packet

so i have to edit theses 2 lines ? writeD(_sweepable ? 0x01 : 0x00); // sweepable  (blue glow)

writeD(_access.allowFixedRes() ? 0x01 : 0x00); // 6d 04 00 00 00 - to FIXED

}

  • 0
Posted

I would suggest you to use ConfirmDlg and DlgAnswer. But since you want the Die packet just:

 

writeD(_access.allowFixedRes() || isInsideZone(...)? 0x01 : 0x00)

 

and then at requestRestartPoint if the player uses the "fixed" if gm fixed res else random spawn

 

 

 

 

  • 0
Posted

so where is my die.java could u tell me what needs to change?

 

/*
* 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 2, 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, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*
* http://www.gnu.org/copyleft/gpl.html
*/
package com.l2jfrozen.gameserver.network.serverpackets;

import com.l2jfrozen.gameserver.datatables.AccessLevel;
import com.l2jfrozen.gameserver.datatables.sql.AccessLevels;
import com.l2jfrozen.gameserver.managers.CastleManager;
import com.l2jfrozen.gameserver.managers.FortManager;
import com.l2jfrozen.gameserver.model.L2Attackable;
import com.l2jfrozen.gameserver.model.L2Character;
import com.l2jfrozen.gameserver.model.L2SiegeClan;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.model.entity.event.CTF;
import com.l2jfrozen.gameserver.model.entity.event.DM;
import com.l2jfrozen.gameserver.model.entity.event.TvT;
import com.l2jfrozen.gameserver.model.entity.siege.Castle;
import com.l2jfrozen.gameserver.model.entity.siege.Fort;

/**
* sample 0b 952a1048 objectId 00000000 00000000 00000000 00000000 00000000 00000000 format dddddd rev 377 format
* ddddddd rev 417
* 
* @version $Revision: 1.3.3 $ $Date: 2009/04/29 00:46:18 $
*/
public class Die extends L2GameServerPacket
{
private static final String _S__0B_DIE = "[s] 06 Die";
private int _charObjId;
private boolean _fake;
private boolean _sweepable;
private boolean _canTeleport;
private AccessLevel _access = AccessLevels.getInstance()._userAccessLevel;
private com.l2jfrozen.gameserver.model.L2Clan _clan;
L2Character _activeChar;

/**
 * @param cha 
 */
public Die(L2Character cha)
{
	_activeChar = cha;
	if(cha instanceof L2PcInstance)
	{
		L2PcInstance player = (L2PcInstance) cha;
		_access = player.getAccessLevel();
		_clan = player.getClan();
		_canTeleport = !((TvT.is_started() && player._inEventTvT)
						|| (DM.is_started() && player._inEventDM)
						|| (CTF.is_started() && player._inEventCTF)
						|| player.isInFunEvent()
						|| player.isPendingRevive());
	}
	_charObjId = cha.getObjectId();
	_fake = !cha.isDead();
	if(cha instanceof L2Attackable)
	{
		_sweepable = ((L2Attackable) cha).isSweepActive();
	}

}

@Override
protected final void writeImpl()
{
	if(_fake)
		return;

	writeC(0x06);

	writeD(_charObjId);
	// NOTE:
	// 6d 00 00 00 00 - to nearest village	
	// 6d 01 00 00 00 - to hide away
	// 6d 02 00 00 00 - to castle
	// 6d 03 00 00 00 - to siege HQ
	// sweepable
	// 6d 04 00 00 00 - FIXED

	writeD(_canTeleport ? 0x01 : 0);   // 6d 00 00 00 00 - to nearest village

	if(_canTeleport && _clan != null)
	{
		L2SiegeClan siegeClan = null;
		Boolean isInDefense = false;
		Castle castle = CastleManager.getInstance().getCastle(_activeChar);
		Fort fort = FortManager.getInstance().getFort(_activeChar);

		if(castle != null && castle.getSiege().getIsInProgress())
		{
			//siege in progress
			siegeClan = castle.getSiege().getAttackerClan(_clan);
			if(siegeClan == null && castle.getSiege().checkIsDefender(_clan))
			{
				isInDefense = true;
			}
		}
		else if(fort != null && fort.getSiege().getIsInProgress())
		{
			//siege in progress
			siegeClan = fort.getSiege().getAttackerClan(_clan);
			if(siegeClan == null && fort.getSiege().checkIsDefender(_clan))
			{
				isInDefense = true;
			}
		}

		writeD(_clan.getHasHideout() > 0 ? 0x01 : 0x00); // 6d 01 00 00 00 - to hide away
		writeD(_clan.getHasCastle() > 0 || _clan.getHasFort() > 0 || isInDefense ? 0x01 : 0x00); // 6d 02 00 00 00 - to castle
		writeD(siegeClan != null && !isInDefense && siegeClan.getFlag().size() > 0 ? 0x01 : 0x00); // 6d 03 00 00 00 - to siege HQ
	}
	else
	{
		writeD(0x00); // 6d 01 00 00 00 - to hide away
		writeD(0x00); // 6d 02 00 00 00 - to castle
		writeD(0x00); // 6d 03 00 00 00 - to siege HQ
	}

	writeD(_sweepable ? 0x01 : 0x00); // sweepable  (blue glow)
	writeD(_access.allowFixedRes() ? 0x01 : 0x00); // 6d 04 00 00 00 - to FIXED
}

/* (non-Javadoc)
 * @see com.l2jfrozen.gameserver.serverpackets.ServerBasePacket#getType()
 */
@Override
public String getType()
{
	return _S__0B_DIE;
}
}

and requestrestartpoint.java

 

//*
* 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 2, 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, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*
* http://www.gnu.org/copyleft/gpl.html
*/
package com.l2jfrozen.gameserver.network.clientpackets;

import java.util.logging.Logger;

import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.datatables.csv.MapRegionTable;
import com.l2jfrozen.gameserver.managers.CastleManager;
import com.l2jfrozen.gameserver.managers.ClanHallManager;
import com.l2jfrozen.gameserver.managers.FortManager;
import com.l2jfrozen.gameserver.model.L2SiegeClan;
import com.l2jfrozen.gameserver.model.Location;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.model.entity.ClanHall;
import com.l2jfrozen.gameserver.model.entity.event.CTF;
import com.l2jfrozen.gameserver.model.entity.event.DM;
import com.l2jfrozen.gameserver.model.entity.event.TvT;
import com.l2jfrozen.gameserver.model.entity.siege.Castle;
import com.l2jfrozen.gameserver.model.entity.siege.Fort;
import com.l2jfrozen.gameserver.network.serverpackets.Revive;
import com.l2jfrozen.gameserver.thread.ThreadPoolManager;
import com.l2jfrozen.gameserver.util.IllegalPlayerAction;
import com.l2jfrozen.gameserver.util.Util;

/**
* @author programmos
*/
public final class RequestRestartPoint extends L2GameClientPacket
{
private static Logger _log = Logger.getLogger(RequestRestartPoint.class.getName());

protected int _requestedPointType;
protected boolean _continuation;

@Override
protected void readImpl()
{
	_requestedPointType = readD();
}

class DeathTask implements Runnable
{
	L2PcInstance activeChar;

	DeathTask(L2PcInstance _activeChar)
	{
		activeChar = _activeChar;
	}

	@Override
	public void run()
	{
		if ((activeChar._inEventTvT && TvT.is_started()) || (activeChar._inEventDM && DM.is_started()) || (activeChar._inEventCTF && CTF.is_started()))
		{
			activeChar.sendMessage("You can't restart in Event!");
			return;
		}
		try
		{
			Location loc = null;
			Castle castle = null;
			Fort fort = null;

			if (activeChar.isInJail())
			{
				_requestedPointType = 27;
			}
			else if (activeChar.isFestivalParticipant())
			{
				_requestedPointType = 4;
			}

			if (activeChar.isPhoenixBlessed())
				activeChar.stopPhoenixBlessing(null);

			switch (_requestedPointType)
			{
				case 1: // to clanhall

					if (activeChar.getClan() != null)
					{

						if (activeChar.getClan().getHasHideout() == 0)
						{
							// cheater
							activeChar.sendMessage("You may not use this respawn point!");
							Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " used respawn cheat.", IllegalPlayerAction.PUNISH_KICK);
							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;				
					}

					loc = MapRegionTable.getInstance().getTeleToLocation(activeChar, MapRegionTable.TeleportWhereType.Town);
					break;
				case 2: // to castle
					Boolean isInDefense = false;
					castle = CastleManager.getInstance().getCastle(activeChar);
					fort = FortManager.getInstance().getFort(activeChar);
					MapRegionTable.TeleportWhereType teleportWhere = MapRegionTable.TeleportWhereType.Town;

					if (castle != null && castle.getSiege().getIsInProgress())
					{
						// siege in progress
						if (castle.getSiege().checkIsDefender(activeChar.getClan()))
						{
							isInDefense = true;
						}
					}

					if (fort != null && fort.getSiege().getIsInProgress())
					{
						// siege in progress
						if (fort.getSiege().checkIsDefender(activeChar.getClan()))
						{
							isInDefense = true;
						}
					}

					if (activeChar.getClan().getHasCastle() == 0 && activeChar.getClan().getHasFort() == 0 && !isInDefense)
					{
						// cheater
						activeChar.sendMessage("You may not use this respawn point!");
						Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " used respawn cheat.", IllegalPlayerAction.PUNISH_KICK);
						return;
					}

					if (CastleManager.getInstance().getCastleByOwner(activeChar.getClan()) != null)
						teleportWhere = MapRegionTable.TeleportWhereType.Castle;
					else if (FortManager.getInstance().getFortByOwner(activeChar.getClan()) != null)
						teleportWhere = MapRegionTable.TeleportWhereType.Fortress;

					loc = MapRegionTable.getInstance().getTeleToLocation(activeChar, teleportWhere);
					break;

				case 3: // to siege HQ
					L2SiegeClan siegeClan = null;
					castle = CastleManager.getInstance().getCastle(activeChar);
					fort = FortManager.getInstance().getFort(activeChar);

					if (castle != null && castle.getSiege().getIsInProgress())
					{
						siegeClan = castle.getSiege().getAttackerClan(activeChar.getClan());
					}
					else if (fort != null && fort.getSiege().getIsInProgress())
					{
						siegeClan = fort.getSiege().getAttackerClan(activeChar.getClan());
					}

					if (siegeClan == null || siegeClan.getFlag().size() == 0)
					{
						// cheater
						activeChar.sendMessage("You may not use this respawn point!");
						Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " used respawn cheat.", IllegalPlayerAction.PUNISH_KICK);
						return;
					}

					loc = MapRegionTable.getInstance().getTeleToLocation(activeChar, MapRegionTable.TeleportWhereType.SiegeFlag);
					break;

				case 4: // Fixed or Player is a festival participant
					if (!activeChar.isGM() && !activeChar.isFestivalParticipant())
					{
						// cheater
						activeChar.sendMessage("You may not use this respawn point!");
						Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " used respawn cheat.", IllegalPlayerAction.PUNISH_KICK);
						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:
					if (activeChar.getKarma() > 0 && Config.ALT_KARMA_TELEPORT_TO_FLORAN)
					{
						loc = new Location(17836, 170178, -3507);// Floran Village
						break;
					}
					loc = MapRegionTable.getInstance().getTeleToLocation(activeChar, MapRegionTable.TeleportWhereType.Town);
					break;				
			}

			// Stand up and teleport, proof dvp video.
			activeChar.setIsIn7sDungeon(false);
			activeChar.setIsPendingRevive(true);
			activeChar.teleToLocation(loc, true);
		}
		catch (Throwable e)
		{
			e.printStackTrace();				
			// _log.log(Level.SEVERE, "", e);
		}
	}
}

@Override
protected void runImpl()
{
	L2PcInstance activeChar = getClient().getActiveChar();

	if (activeChar == null)
		return;

	if (activeChar.isFakeDeath())
	{
		activeChar.stopFakeDeath(null);
		activeChar.broadcastPacket(new Revive(activeChar));
		return;
	}
	else if (!activeChar.isAlikeDead())
	{
		_log.warning("Living player [" + activeChar.getName() + "] called RestartPointPacket! Ban this player!");
		return;
	}

	Castle castle = CastleManager.getInstance().getCastle(activeChar.getX(), activeChar.getY(), activeChar.getZ());
	if (castle != null && castle.getSiege().getIsInProgress())
	{
		if (activeChar.getClan() != null && castle.getSiege().checkIsAttacker(activeChar.getClan()))
		{
			// Schedule respawn delay for attacker
			ThreadPoolManager.getInstance().scheduleGeneral(new DeathTask(activeChar), castle.getSiege().getAttackerRespawnDelay());
			activeChar.sendMessage("You will be re-spawned in " + castle.getSiege().getAttackerRespawnDelay() / 1000 + " seconds");
			return;
		}
	}
	// run immediately (no need to schedule)
	new DeathTask(activeChar).run();
}

@Override
public String getType()
{
	return "[C] 6d RequestRestartPoint";
}
}

 

if u could help me with that, it will be my last stupid question...thanks

  • 0
Posted

xdem's answer is enough to understand what you have to edit, and finally you c/ped the wrong packet. RequestRestart is for restart request (log off), not for teleport.

 

ctrl+F is your friend.

  • 0
Posted

helppp mee ... thats all i need ...

 

Help you ? Thats what I already did, none will ever help you more than I did, trust me. However if you lack the java skills and you want the code ready, well thats a different story, gl finding a guy coding this for you

  • 0
Posted

i get error on writeD(_access.allowFixedRes() || isInsideZone(...)? 0x01 : 0x00) ...

 

but whaterver... forrget it.... delete topic no help here

  • 0
Posted

i get error on writeD(_access.allowFixedRes() || isInsideZone(...)? 0x01 : 0x00) ...

 

but whaterver... forrget it.... delete topic no help here

Locked then.

But keep in mind, this is a help section, not a section where u can have people coding for you by the face.

Tryskell and xdem gave u more than clues to do it.

Guest
This topic is now closed to further replies.


×
×
  • Create New...