Last Hero для l2emu - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II

Lineage II
Дискуссии на тему создания, настройки и обслуживания серверов Lineage 2. При поддержке: Премиум услуги по рекламе

Ответ
Опции темы
Непрочитано 25.03.2009, 19:29   #1
Пользователь

Автор темы (Топик Стартер) Last Hero для l2emu

Всем добрый вечер помогите пожалуйста сделать Last Hero для l2emu, или плс подкиньте ссылочку!
DevilMayCry вне форума Ответить с цитированием
Непрочитано 25.03.2009, 19:43   #2
Аватар для PROGRAMMATOR
Администратор

По умолчанию Ответ: Last Hero для l2emu

Ммм... //sethero ?
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Непрочитано 25.03.2009, 19:53   #3
Аватар для lold
Пользователь

По умолчанию Ответ: Last Hero для l2emu

Он имеет ввиду эвент "Last Hero"
lold вне форума Ответить с цитированием
Непрочитано 25.03.2009, 20:11   #4
Аватар для PROGRAMMATOR
Администратор

По умолчанию Ответ: Last Hero для l2emu

Ну вот, теперь в следующих сообщениях может будет более подробно описана просьба, что бы человек зашел и сразу понял о чем речь, а не Как сделать Быстрое Геройство, по-моему я предложил самый быстрый вариант
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Непрочитано 25.03.2009, 20:13   #5
Пользователь

Автор темы (Топик Стартер) Ответ: Last Hero для l2emu

Да блин LAST HERo эвент эт не легко под l2emu сделать кто знает подскажите плс а то я дуб дубом!
DevilMayCry вне форума Ответить с цитированием
Непрочитано 25.03.2009, 22:51   #6
Пользователь

По умолчанию Ответ: Last Hero для l2emu

Так сча раскажу
Вот исходник почти переделан под Ему
Тока два класса не совпадают их вобше нету в яму Эвент сам из рояль сборки
Код:
package events.lastHero;

import net.l2emuproject.Config;
import l2r.extensions.listeners.L2ZoneEnterLeaveListener;
import l2r.extensions.scripts.Functions;
import l2r.extensions.scripts.ScriptFile;
import net.l2emuproject.Announcements;
import net.l2emuproject.instancemanager.ZoneManager;
import net.l2emuproject.model.*;
import net.l2emuproject.gameserver.model.Zone.L2Zone;
import net.l2emuproject.model.actor.instances.L2NpcInstance;
import net.l2emuproject.network.serverpackets.Revive;
import net.l2emuproject.datatables.SkillTable;
import l2r.util.Files;
import net.l2emuproject.gameserver.model.Location;
import net.l2emuproject.tools.random.Rnd;
import net.l2emuproject.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());
			}
		}
	}
}
import net.l2emuproject.Config;
import l2r.extensions.listeners.L2ZoneEnterLeaveListener;
import l2r.extensions.scripts.Functions;
import l2r.extensions.scripts.ScriptFile;

import net.l2emuproject.Announcements;
import net.l2emuproject.instancemanager.ZoneManager;
import net.l2emuproject.model.*;
import net.l2emuproject.gameserver.model.Zone.L2Zone;
import net.l2emuproject.model.actor.instances.L2NpcInstan ce;
import net.l2emuproject.network.serverpackets.Revive;
import net.l2emuproject.datatables.SkillTable;

import l2r.util.Files;
import net.l2emuproject.gameserver.model.Location;
import net.l2emuproject.tools.random.Rnd;
import net.l2emuproject.util.Util;

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

Так вот классы То что синем и начинается import net.l2emuproject Это совпадает с Ему Но точьно не уверен
То что красным токова нету в ему или не удолось найти сответствие начинается import l2r.
То что желтым то ХЗ мб и есть а может и нет не уолось оже нати
Помогите нати сответствие
Сори за большое Собшение
ВОт мож каму пригодится
Это исходнки мож каму пригодятся
http://dump.ru/file/2272505
Tram вне форума Ответить с цитированием
Непрочитано 25.03.2009, 23:28   #7
Пользователь

По умолчанию Ответ: Last Hero для l2emu

Идея самого эвента насколько я знаю.
Каждый день в определенное время открываеьтся запись на своеобразное побоище.

Все кто зарегистрировался попадают в колизей.
После чего последнему выжившему до следующего рестарта или евента даеться ХИро статус.

Тут есть аналогии с обычным ТвТ.
То есть если доработать ТвТ. то получиться ЛастХиро под Ему
Nano вне форума Ответить с цитированием
Непрочитано 26.03.2009, 00:32   #8
Пользователь

По умолчанию Ответ: Last Hero для l2emu

Цитата:
Сообщение от Nano Посмотреть сообщение
Идея самого эвента насколько я знаю.
Каждый день в определенное время открываеьтся запись на своеобразное побоище.

Все кто зарегистрировался попадают в колизей.
После чего последнему выжившему до следующего рестарта или евента даеться ХИро статус.

Тут есть аналогии с обычным ТвТ.
То есть если доработать ТвТ. то получиться ЛастХиро под Ему
Поможеш???
а лучьше одаптировать Этот!скрипт!или по мкдрить ТвТ ?
Tram вне форума Ответить с цитированием
Непрочитано 26.03.2009, 05:05   #9
Пользователь

По умолчанию Ответ: Last Hero для l2emu

Порылся я в TVT оказывается тоже вшито в ядро.
Так что если писать то отдельный Евент чтоли.
Nano вне форума Ответить с цитированием
Непрочитано 26.03.2009, 07:23   #10
Пользователь

Автор темы (Топик Стартер) Ответ: Last Hero для l2emu

а ссылку на твт выкинуть можете?
DevilMayCry вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 20:08. Часовой пояс GMT +3.

Вверх