Skip to content
La2Base
Home
DownloadsWikiForumFAQ
Search
ruen
Sign up Login
HomeFilesWikiLogin
  • Home
  • Downloads
  • Wiki
  • FAQ
  • Contact Us
  • About
  • Rules
  • Privacy
  • Terms of Service

© 2026 la2base.com · All rights reserved

ruen
Forum/Дополнения к Lineage 2 Java серверам/[help]lasthero (la2base)
Search

[help]lasthero (la2base)

10 replies482 viewsCurrently viewing: 1
Doom
Doom

User

Участник

Posts: 74

На форуме с: 04/10/2009

Репутация: +27

Рейтинг: 0

· 05/02/2009, 05:26 PM

Сборка: Interlude La2base 1.1.6
Краткое изложение СУТИ проблемы: ласт хиро на la2base ,есть у кого ? а то другие не подходят....
Вопрос: Кто нибудь мог бы выложить lasthero на la2base сборку......
ПРобывал другие не получаеться .....

0
Brain
Brain

User

Бывалый

Posts: 324

На форуме с: 07/17/2007

Репутация: +46

Рейтинг: 0

· 05/02/2009, 05:56 PM

нету на ла2басе его...там через ядро..

Заходи на форум..епЭ xDD

0
Doom
Doom

User

Участник

Posts: 74

На форуме с: 04/10/2009

Репутация: +27

Рейтинг: 0

· 05/02/2009, 06:45 PM

а наподобие есть эвенты или вообше? только кроме твт .... или доработанный твт типо не где нужно очков больше набрать а убить какую нить палатку или моба допустим команда 1 должна убить палатку 2 а вторая 1 ..... тип этого...

0
Brain
Brain

User

Бывалый

Posts: 324

На форуме с: 07/17/2007

Репутация: +46

Рейтинг: 0

· 05/02/2009, 09:18 PM

обратись с денюжкой к умельцам тебе напишут что захочешь..как говориться все капризы за ваши деньги :)

Заходи на форум..епЭ xDD

0
Doom
Doom

User

Участник

Posts: 74

На форуме с: 04/10/2009

Репутация: +27

Рейтинг: 0

· 05/03/2009, 07:55 AM

эххх ясно .....так не хотел деньги тратить ,о всё таки придёться.... это раздел la2base клиент разработки под заказ?а то я так понял там токо текстуры и новые итэмы?

0
Anton
Anton

User

Новичок

Posts: 5

На форуме с: 08/19/2009

Рейтинг: 0

· 05/03/2009, 07:56 AM

а есть у кого натсроеный твт эвент под грация эму?
ибо у меня кривоватый...

0
Андрей
Андрей

User

Ветеран

Posts: 751

На форуме с: 11/30/2008

Репутация: +119

Рейтинг: 0

· 05/12/2009, 10:14 AM

last hero?Если мы об одном и том же,то если есть руки то ими он легко и проводится.

— Newbie!

0
hambit
hambit

User

Участник

Posts: 80

На форуме с: 07/17/2007

Репутация: +425

Рейтинг: 0

· 05/12/2009, 12:39 PM

этот евент через ядро работает ... насколько я понимаю евент ребелионовский .. чтобы каждому игроку месага приходила типа желаете ли вы принять участие в евенте итп ? ... если да то вообще хз есть ли такой тип msg чтобы можно было так реализовать ... хотя можно и через вылетающую хтмлку )) в любом случае тебе к разрабам базы ...

0
Shadero
Shadero

User

Участник

Posts: 28

На форуме с: 06/09/2008

Репутация: +2

Рейтинг: 0

· 05/14/2009, 03:58 PM

да всплывающее окно это в скрипте пишется
вот к примеру скрипт:

Раскрывающийся текст
Код
package events.lastHero;

import l2r.Config;
import l2r.extensions.listeners.L2ZoneEnterLeaveListener;
import l2r.extensions.scripts.Functions;
import l2r.extensions.scripts.ScriptFile;
import l2r.gameserver.Announcements;
import l2r.gameserver.instancemanager.ZoneManager;
import l2r.gameserver.model.*;
import l2r.gameserver.model.L2Zone.ZoneType;
import l2r.gameserver.model.instances.L2NpcInstance;
import l2r.gameserver.serverpackets.Revive;
import l2r.gameserver.tables.SkillTable;
import l2r.util.Files;
import l2r.util.Location;
import l2r.util.Rnd;
import l2r.util.Util;

import java.util.ArrayList;
import java.util.concurrent.ScheduledFuture;

public class LastHero extends Functions implements ScriptFile
{
    public static L2Object self;
    public static L2NpcInstance npc;

    private static ArrayList<L2Player> players_list = new ArrayList<L2Player>();
    private static ArrayList<L2Player> live_list = new ArrayList<L2Player>();

    private static Integer _status = 0;
    private static Integer _time_to_start = Config.EVENT_LastHeroTime;

    @SuppressWarnings("unchecked")
    private static ScheduledFuture _endTask;

    private static L2Zone _zone = ZoneManager.getInstance().getZoneByIndex(ZoneType.battle_zone, 4, true);
    ZoneListener _zoneListener = new ZoneListener();

    private static Integer item_id_ = Config.EVENT_LastHeroItemID;
    private static Integer item_count_ = Config.EVENT_LastHeroItemCOUNT;
    private static Boolean rate_ = Config.EVENT_LastHeroRate;

    public void onLoad()
    {
        _zone.getListenerEngine().addMethodInvokedListener(_zoneListener);
        System.out.println("Loaded Event: Last Hero");
    }

    public void onReload()
    {
        _zone.getListenerEngine().removeMethodInvokedListener(_zoneListener);
    }

    public void onShutdown()
    {
        onReload();
    }

    public static String DialogAppend_31225(Integer val)
    {
        if(val == 0)
        {
            L2Player player = (L2Player) self;
            return Files.read("data/scripts/events/lastHero/31225.html", player);
        }
        return "";
    }

    public static void start()
    {
        if(!((L2Player) self).getPlayerAccess().IsEventGm)
            return;

        _status = 0;

        players_list = new ArrayList<L2Player>();
        live_list = new ArrayList<L2Player>();

        Announcements.getInstance().announceToAll("Запущен эвент 'Last Hero'. Р’СЃРµ зарегистрированные участники Р±СѓРґСѓС‚ телепортированы РІ Coliseum через 5 РјРёРЅСѓС‚.");
        Announcements.getInstance().announceToAll("Р˜РіСЂРѕРєРё, отказавС?иеся РѕС‚ участия РІ эвенте СЃРјРѕРіСѓС‚ наблюдать Р·Р° битвой через обзорные кристаллы.");
        executeTask("events.lastHero.LastHero", "question", new Object[0], 10000);
        executeTask("events.lastHero.LastHero", "announce", new Object[0], 60000);
    }

    public static void question()
    {
        for(L2Player player : L2World.getAllPlayers())
            player.scriptRequest("Р’С‹ хотите принять участие РІ эвенте?", "events.lastHero.LastHero:addPlayer", new Object[0]);
    }

    public static void announce()
    {
        Announcements a = Announcements.getInstance();
        if(players_list.size() < 2)
        {
            a.announceToAll("Эвент отменен, слиС?РєРѕРј мало участников.");
            return;
        }

        if(_time_to_start > 1)
        {
            _time_to_start--;
            a.announceToAll("Начало эвента через " + _time_to_start + " РјРёРЅ.");
            a.announceToAll("ПропустивС?РёРµ момент регистрации, РјРѕРіСѓС‚ зарегистрироваться Сѓ Arena Manager РІ MDT.");
            executeTask("events.lastHero.LastHero", "announce", new Object[0], 60000);
        }
        else
        {
            a.announceToAll("Телепортация РёРіСЂРѕРєРѕРІ...");
            executeTask("events.lastHero.LastHero", "prepare", new Object[0], 5000);
        }
    }

    public void addPlayer()
    {
        players_list.add((L2Player) self);
        live_list.add((L2Player) self);

        if(((L2Player) self).getParty() != null)
            ((L2Player) self).getParty().removePartyMember((L2Player) self);

    }

    public static void prepare()
    {
        cleanPlayers();
        cleanLive();
        executeTask("events.lastHero.LastHero", "ressurectPlayers", new Object[0], 1000);
        executeTask("events.lastHero.LastHero", "healPlayers", new Object[0], 2000);
        executeTask("events.lastHero.LastHero", "saveBackCoords", new Object[0], 3000);
        executeTask("events.lastHero.LastHero", "paralyzePlayers", new Object[0], 4000);
        executeTask("events.lastHero.LastHero", "teleportPlayersToColiseum", new Object[0], 5000);
        executeTask("events.lastHero.LastHero", "go", new Object[0], 120000);

        Announcements a = Announcements.getInstance();
        a.announceToAll("Правила эвента 'Last Hero':");
        a.announceToAll("Эвент длится 5 РјРёРЅСѓС‚.");
        a.announceToAll("Цель - убить как РјРѕР¶РЅРѕ больС?Рµ РёРіСЂРѕРєРѕРІ.");
        a.announceToAll("Р—Р° каждого убитого вам дают 5Рє * уровень убитого аден.");
        a.announceToAll("Старт через 2 минуты, РїРѕ команде 'FIGHT!!!'.");
    }

    public static void go()
    {
        _status = 1;
        upParalyzePlayers();
        checkLive();
        Announcements.getInstance().announceToAll(">>> FIGHT!!! <<<");
        _endTask = executeTask("events.lastHero.LastHero", "endBattle", new Object[0], 300000);
    }

    public static void endBattle()
    {
        _status = 0;
        Announcements a = Announcements.getInstance();
        a.announceToAll("Эвент 'Last Hero' окончен.");
        a.announceToAll("Через 1 минуту РІСЃРµ участники Р±СѓРґСѓС‚ вылечены Рё телепортированы обратно.");
        executeTask("events.lastHero.LastHero", "end", new Object[0], 60000);
        _endTask.cancel(false);
        _endTask = null;
    }

    public static void end()
    {
        executeTask("events.lastHero.LastHero", "ressurectPlayers", new Object[0], 1000);
        executeTask("events.lastHero.LastHero", "healPlayers", new Object[0], 2000);
        executeTask("events.lastHero.LastHero", "teleportPlayersToSavedCoords", new Object[0], 3000);
    }

    public static void saveBackCoords()
    {
        synchronized (players_list)
        {
            for(L2Player player : players_list)
                if(player != null)
                    player.setVar("LastHero_backCoords", player.getX() + " " + player.getY() + " " + player.getZ());
        }
    }

    public static void teleportPlayersToColiseum()
    {
        synchronized (players_list)
        {
            for(L2Player player : players_list)
                if(player != null)
                {
                    Location pos = Rnd.coordsRandomize(149505, 46719, -3417, 0, 0, 500);
                    player.teleToLocation(pos);
                }
        }
    }

    public static void teleportPlayersToSavedCoords()
    {
        synchronized (players_list)
        {
            for(L2Player player : players_list)
                if(player != null)
                {
                    String var = player.getVar("LastHero_backCoords");
                    if(var == null || var.equals(""))
                        continue;
                    String[] coords = var.split(" ");
                    if(coords.length != 3)
                        continue;
                    Location pos = new Location(Integer.parseInt(coords[0]), Integer.parseInt(coords[1]), Integer.parseInt(coords[2]));
                    player.teleToLocation(pos);
                    player.unsetVar("LastHero_backCoords");
                }
        }
    }

    public static void paralyzePlayers()
    {
        L2Skill revengeSkill = SkillTable.getInstance().getInfo(4515, 1);
        synchronized (players_list)
        {
            for(L2Player player : players_list)
                if(player != null)
                {
                    revengeSkill.getEffects(player, player, false);
                    if(player.getPet() != null)
                        revengeSkill.getEffects(player, player.getPet(), false);
                }
        }
    }

    public static void upParalyzePlayers()
    {
        synchronized (players_list)
        {
            for(L2Player player : players_list)
                if(player != null)
                {
                    player.stopEffect(4515);
                    if(player.getPet() != null)
                        player.getPet().stopEffect(4515);

                    if(player.getParty() != null)
                        player.getParty().removePartyMember(player);
                }
        }
    }

    public static void ressurectPlayers()
    {
        synchronized (players_list)
        {
            for(L2Player player : players_list)
                if(player != null && player.isDead())
                {
                    player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp());
                    player.setCurrentCp(player.getMaxCp());
                    player.restoreExp();
                    player.broadcastPacket(new Revive(player));
                    player.doRevive();
                }
        }
    }

    public static void healPlayers()
    {
        synchronized (players_list)
        {
            for(L2Player player : players_list)
                if(player != null)
                {
                    player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp());
                    player.setCurrentCp(player.getMaxCp());
                }
        }
    }

    public static void cleanPlayers()
    {
        ArrayList<L2Player> temp = new ArrayList<L2Player>();
        synchronized (players_list)
        {
            for(L2Player player : players_list)
                if(player != null)
                    temp.add(player);
        }
        players_list = temp;
    }

    public static void cleanLive()
    {
        ArrayList<L2Player> temp = new ArrayList<L2Player>();
        synchronized (live_list)
        {
            for(L2Player player : live_list)
                if(player != null)
                    temp.add(player);
        }
        live_list = temp;
    }

    public static void checkLive()
    {
        ArrayList<L2Player> temp = new ArrayList<L2Player>();
        synchronized (live_list)
        {
            for(L2Player player : live_list)
                if(player != null && player.isInZone(ZoneType.battle_zone) && !player.isDead())
                {
                    temp.add(player);
                    player.setTeam(2);
                }
                else if(player != null)
                {
                    player.setTeam(0);
                    player.sendMessage("Р’С‹ проиграли! Дождитесь окончания эвента для обратной телепортации.");
                }
        }
        live_list = temp;
        if(live_list.size() <= 1)
            endBattle();
    }

    public static void removeAura()
    {
        synchronized (live_list)
        {
            for(L2Player player : live_list)
                if(player != null)
                    player.setTeam(0);
        }
    }

    public static void onDie(L2Object self, L2Character killer)
    {
        if(_status > 0 && self != null && self.isPlayer && live_list.contains(self))
        {
            live_list.remove(self);
            ((L2Player) self).setTeam(0);
            ((L2Player) self).sendMessage("Р’С‹ проиграли! Дождитесь окончания эвента для обратной телепортации.");
            checkLive();
            if(killer != null && killer.isPlayer)
            {
                if(rate_) ((L2Player) killer).getInventory().addItem(item_id_, ((L2Player) self).getLevel() * item_count_, 0, "last_hero");
                else ((L2Player) killer).getInventory().addItem(item_id_, item_count_, 0, "last_hero");
            }
        }
    }

    public static void OnPlayerExit(@SuppressWarnings("unused")
    L2Player player)
    {
        if(_status > 0 && self != null && self.isPlayer && live_list.contains(self))
        {
            live_list.remove(self);
            ((L2Player) self).setTeam(0);
            checkLive();
        }
    }

    private class ZoneListener extends L2ZoneEnterLeaveListener
    {
        @Override
        public void objectEntered(L2Zone zone, L2Object object)
        {
            if(_status > 0 && object != null && object.getPlayer() != null && !live_list.contains(object.getPlayer()))
                ((L2Character) object).teleToLocation(147451, 46728, -3410);
        }

        @Override
        public void objectLeaved(L2Zone zone, L2Object object)
        {
            L2Player player = object.getPlayer();
            if(_status > 0 && player != null && live_list.contains(player))
            {
                L2Playable playable = (L2Playable) object;
                double angle = Util.convertHeadingToDegree(playable.getHeading()); // СѓРіРѕР» РІ градусах
                double radian = Math.toRadians(angle - 90); // СѓРіРѕР» РІ радианах
                playable.teleToLocation((int) (playable.getX() + 50 * Math.sin(radian)), (int) (playable.getY() - 50 * Math.cos(radian)), playable.getZ());
            }
        }
    }
}



а вот само всплывающее окно в html

Код
<br1><a action="bypass -h scripts_events.lastHero.LastHero:addPlayer">Зарегистрироваться в эвенте Last Hero</a>



взято со сборки l2dream

0
Sau_ADM
Sau_ADM

User

Участник

Posts: 62

На форуме с: 10/16/2008

Репутация: +13

Рейтинг: 0

· 10/06/2009, 03:19 PM

куплю эвент Last Hero пишите в личке оставте свой Icq

— 31

0
Войдите или зарегистрируйтесь чтобы ответить