Ir para conteúdo
  • Cadastre-se
  • 0

Botão To Giran


Albeci Nogueira

Pergunta

Boa noite a todos,

Gostaria de saber se há alguma possibilidade de alguem postar um mod ou um tutorial para adicionar o botão (To Giran) junto com o botão (To Village) quando o player morre, seja qual for a área.

Desde já agradeço a atenção de todos!

giphy.gif 
Se te ajudei não custa nada Curtir  ou Agradecer😉

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts recomendados


  • 0

Provavelmente deve ser aqui que tem que modificar:
Só não sei o que fazer para poder adicionar o botão Town of Giran quando o personagem morrer, ficando assim na tela: Return to Town  e Town of Giran juntos.

package net.sf.l2j.gameserver.network.clientpackets;

import net.sf.l2j.commons.concurrent.ThreadPool;

import net.sf.l2j.Config;
import net.sf.l2j.gameserver.data.MapRegionTable;
import net.sf.l2j.gameserver.data.MapRegionTable.TeleportType;
import net.sf.l2j.gameserver.events.teamvsteam.TvTEvent;
import net.sf.l2j.gameserver.instancemanager.CastleManager;
import net.sf.l2j.gameserver.instancemanager.ClanHallManager;
import net.sf.l2j.gameserver.model.actor.instance.Player;
import net.sf.l2j.gameserver.model.entity.ClanHall;
import net.sf.l2j.gameserver.model.entity.ClanHall.ClanHallFunction;
import net.sf.l2j.gameserver.model.entity.Siege;
import net.sf.l2j.gameserver.model.entity.Siege.SiegeSide;
import net.sf.l2j.gameserver.model.location.Location;
import net.sf.l2j.gameserver.model.pledge.Clan;

public final class RequestRestartPoint extends L2GameClientPacket
{
    protected static final Location JAIL_LOCATION = new Location(-114356, -249645, -2984);

    protected int _requestType;

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

    class DeathTask implements Runnable
    {
        final Player _player;

        DeathTask(Player player)
        {
            _player = player;
        }

        @Override
        public void run()
        {
            final Clan clan = _player.getClan();

            Location loc = null;

            // Enforce type.
            if (_player.isInJail())
                _requestType = 27;
            else if (_player.isFestivalParticipant())
                _requestType = 4;

            // To clanhall.
            if (_requestType == 1)
            {
                if (clan == null || !clan.hasHideout())
                {
                    _log.warning(_player.getName() + " called RestartPointPacket - To Clanhall while he doesn't have clan / Clanhall.");
                    return;
                }

                loc = MapRegionTable.getInstance().getLocationToTeleport(_player, TeleportType.CLAN_HALL);

                final ClanHall ch = ClanHallManager.getInstance().getClanHallByOwner(clan);
                if (ch != null)
                {
                    final ClanHallFunction function = ch.getFunction(ClanHall.FUNC_RESTORE_EXP);
                    if (function != null)
                        _player.restoreExp(function.getLvl());
                }
            }
            // To castle.
            else if (_requestType == 2)
            {
                final Siege siege = CastleManager.getInstance().getSiege(_player);
                if (siege != null)
                {
                    switch (siege.getSide(clan))
                    {
                        case DEFENDER:
                        case OWNER:
                            loc = MapRegionTable.getInstance().getLocationToTeleport(_player, TeleportType.CASTLE);
                            break;

                        case ATTACKER:
                            loc = MapRegionTable.getInstance().getLocationToTeleport(_player, TeleportType.TOWN);
                            break;

                        default:
                            _log.warning(_player.getName() + " called RestartPointPacket - To Castle while he isn't registered to any castle siege.");
                            return;
                    }
                }

                else
                {
                    if (clan == null || !clan.hasCastle())
                        return;

                    loc = MapRegionTable.getInstance().getLocationToTeleport(_player, TeleportType.CASTLE);
                }
            }
            // To siege flag.
            else if (_requestType == 3)
                loc = MapRegionTable.getInstance().getLocationToTeleport(_player, TeleportType.SIEGE_FLAG);
            // Fixed.
            else if (_requestType == 4)
            {
                if (!_player.isGM() && !_player.isFestivalParticipant())
                {
                    _log.warning(_player.getName() + " called RestartPointPacket - Fixed while he isn't festival participant!");
                    return;
                }

                loc = _player.getPosition();
            }
            // To jail.
            else if (_requestType == 27)
            {
                if (!_player.isInJail())
                    return;

                loc = JAIL_LOCATION;
            }
            // Nothing has been found, use regular "To town" behavior.
            else
                loc = MapRegionTable.getInstance().getLocationToTeleport(_player, TeleportType.TOWN);

            _player.setIsIn7sDungeon(false);

            if (_player.isDead())
                _player.doRevive();

            _player.teleToLocation(loc, 20);

        }
    }

    @Override
    protected void runImpl()
    {
        final Player player = getClient().getActiveChar();
        if (player == null)
            return;

        if (player.isFakeDeath())
        {
            player.stopFakeDeath(true);
            return;
        }

        if (!player.isDead())
        {
            _log.warning("Living player [" + player.getName() + "] called RequestRestartPoint packet.");
            return;
        }
        
        if (TvTEvent.isPlayerParticipant(player.getObjectId()))
        {
            return;
        }

        // Schedule a respawn delay if player is part of a clan registered in an active siege.
        if (player.getClan() != null)
        {
            final Siege siege = CastleManager.getInstance().getSiege(player);
            if (siege != null && siege.checkSide(player.getClan(), SiegeSide.ATTACKER))
            {
                ThreadPool.schedule(new DeathTask(player), Config.ATTACKERS_RESPAWN_DELAY);

                if (Config.ATTACKERS_RESPAWN_DELAY > 0)
                    player.sendMessage("You will be teleported in " + Config.ATTACKERS_RESPAWN_DELAY / 1000 + " seconds.");
                return;
            }
        }

        // Run the task immediately (no need to schedule).
        new DeathTask(player).run();
    }
}

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  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.

Processando...
  • Registre-se

    Faça parte da maior e  mais antigas comunidades sobre Lineage2 da América Latina.





×
×
  • Criar Novo...

Important Information

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.