Цитата:
Сообщение от Nano
Порылся я в TVT оказывается тоже вшито в ядро.
Так что если писать то отдельный Евент чтоли.
|
Да можно будет на основе ТвТ папробовать сча сам пароюсь но желательно ЛастХиро передлать а лучьше не ТвТ а детматсчь вроде
каманда в Ему //event воде пасмари)
Девилмайкай ТвТ есть уже В Ему так как и Дм и ного чего есть спрошивать нужно))!
Вот танош есче сответствие Класса вроде оно но нужно проверить!
Добавлено через 7 минут
import net.l2emuproject.Config;
import l2r.extensions.listeners.L2ZoneEnterLeaveListener;
import l2r.extensions.scripts.Functions;
import net.l2emuproject.gameserver.scripting.ScriptManage r;
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;
Добавлено через 4 часа 34 минуты
Вот есче один исходник Ласт Хиро магу выложить!
Код:
package events.lastHero;
import l3b.Config;
import l3b.ext.listeners.L2ZoneEnterLeaveListener;
import l3b.ext.scripts.Functions;
import l3b.ext.scripts.ScriptFile;
import l3b.gs.Announcements;
import l3b.gs.instancemanager.ZoneManager;
import l3b.gs.model.*;
import l3b.gs.model.L2Zone.ZoneType;
import l3b.gs.model.instances.L2NpcInstance;
import l3b.gs.serverpackets.Revive;
import l3b.gs.tables.SkillTable;
import l3b.util.Files;
import l3b.util.Location;
import l3b.util.Rnd;
import l3b.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();
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("var/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("За каждого убитого вам дают " + String.valueOf(Config.EVENT_LastHeroItemCOUNT) + " помноженые на его уровень, аден.");
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(Config.EVENT_LastHeroRate)
((L2Player) killer).getInventory().addItem(Config.EVENT_LastHeroItemID, ((L2Player) self).getLevel() * Config.EVENT_LastHeroItemCOUNT, 0, "last_hero");
else
((L2Player) killer).getInventory().addItem(Config.EVENT_LastHeroItemID, Config.EVENT_LastHeroItemCOUNT, 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());
}
}
}
}
// В следующий раз, пожалуйста, выделяйте код не в тег QUOTE, а в тег CODE DarkLoki
Вот Это тоже сюда прилогается Сами исходники ядра
http://dump.ru/file/2299556
Кто подобное деалал пажалусто отпишитись сделаем и разберемся в месте давайте LastHero Под l2Emu