Перейти к содержанию
Авторизация  
dbnfkbr33

Эвент Lash Hero ошибка гс

Рекомендуемые сообщения

Выбивает ошибку на эвент,сборка l2Open, поменял импорт, стояло import l2r.Config; , заменил l2r на l2open ( в других работающих на серве явах, такие импорты),хз в чем проблема, какие мысли поэтому поводу?(так то на серваке есть эвент еще один ласт хиро, он через init_.py но там не дается награда геройство, пришлось искать другой)

Спойлер

 

L2Player cannot be resolved to a type
----------
89. ERROR in \LastHero.java (at line 341)
        else ((L2Player) killer).getInventory().addItem(item_id_, item_count_, 0
, "last_hero");
               ^^^^^^^^
L2Player cannot be resolved to a type
----------
90. ERROR in \LastHero.java (at line 347)
        L2Player player)
        ^^^^^^^^
L2Player cannot be resolved to a type
----------
91. ERROR in \LastHero.java (at line 349)
        if(_status > 0 && self != null && self.isPlayer && live_list.contains(se
lf))
                                          ^^^^^^^^^^^^^
self.isPlayer cannot be resolved or is not a field
----------
92. ERROR in \LastHero.java (at line 349)
        if(_status > 0 && self != null && self.isPlayer && live_list.contains(se
lf))
                                                           ^^^^^^^^^
live_list cannot be resolved
----------
93. ERROR in \LastHero.java (at line 351)
        live_list.remove(self);
        ^^^^^^^^^
live_list cannot be resolved
----------
94. ERROR in \LastHero.java (at line 352)
        ((L2Player) self).setTeam(0);
          ^^^^^^^^
L2Player cannot be resolved to a type
----------
95. ERROR in \LastHero.java (at line 357)
        private class ZoneListener extends L2ZoneEnterLeaveListener
                                           ^^^^^^^^^^^^^^^^^^^^^^^^
L2ZoneEnterLeaveListener cannot be resolved to a type
----------
96. ERROR in \LastHero.java (at line 360)
        public void objectEntered(L2Zone zone, L2Object object)
                                  ^^^^^^
L2Zone cannot be resolved to a type
----------
97. ERROR in \LastHero.java (at line 362)
        if(_status > 0 && object != null && object.getPlayer() != null && !live_
list.contains(object.getPlayer()))
                                                   ^^^^^^^^^
The method getPlayer() is undefined for the type L2Object
----------
98. ERROR in \LastHero.java (at line 362)
        if(_status > 0 && object != null && object.getPlayer() != null && !live_
list.contains(object.getPlayer()))
                                                                           ^^^^^
^^^^
live_list cannot be resolved
----------
99. ERROR in \LastHero.java (at line 362)
        if(_status > 0 && object != null && object.getPlayer() != null && !live_
list.contains(object.getPlayer()))

                     ^^^^^^^^^
The method getPlayer() is undefined for the type L2Object
----------
100. ERROR in \LastHero.java (at line 367)
        public void objectLeaved(L2Zone zone, L2Object object)
                                 ^^^^^^
L2Zone cannot be resolved to a type
----------
100 problems (100 errors)Functions cannot be resolved to a type
ScriptFile cannot be resolved to a type
L2ZoneEnterLeaveListener cannot be resolved to a type
The import com.l2open.extensions cannot be resolved
The import com.l2open.extensions cannot be resolved
The import com.l2open.extensions cannot be resolved
The import com.l2open.gameserver.model.L2Zone cannot be resolved
The import com.l2open.gameserver.model.instances cannot be resolved
The import com.l2open.gameserver.serverpackets cannot be resolved
The import com.l2open.gameserver.tables cannot be resolved
The import com.l2open.util.Files cannot be resolved
The import com.l2open.util.Location cannot be resolved
java.util.concurrent.ScheduledFuture is a raw type. References to generic type j
ava.util.concurrent.ScheduledFuture<V> should be parameterized
L2Zone cannot be resolved to a type
L2Player cannot be resolved to a type
L2NpcInstance cannot be resolved to a type
L2Player cannot be resolved to a type
L2Player cannot be resolved to a type
L2Character cannot be resolved to a type
L2Zone cannot be resolved to a type
L2Zone cannot be resolved to a type
The method getPlayer() is undefined for the type com.l2open.gameserver.model.L2O
bject
live_list cannot be resolved
The method getPlayer() is undefined for the type com.l2open.gameserver.model.L2O
bject
L2Character cannot be resolved to a type
L2Player cannot be resolved to a type
The method getPlayer() is undefined for the type com.l2open.gameserver.model.L2O
bject
live_list cannot be resolved
L2Playable cannot be resolved to a type
L2Playable cannot be resolved to a type
L2Player cannot be resolved to a type
L2Player cannot be resolved to a type
Config.EVENT_LastHeroTime cannot be resolved
ZoneType cannot be resolved
Config.EVENT_LastHeroItemID cannot be resolved
Config.EVENT_LastHeroItemCOUNT cannot be resolved
Config.EVENT_LastHeroRate cannot be resolved
_zone cannot be resolved
_zone cannot be resolved
L2Player cannot be resolved to a type
L2Player cannot be resolved to a type
Files cannot be resolved
L2Player cannot be resolved to a type
players_list cannot be resolved
L2Player cannot be resolved to a type
live_list cannot be resolved
L2Player cannot be resolved to a type
The method executeTask(java.lang.String, java.lang.String, java.lang.Object[], i
nt) is undefined for the type events.lastHero.LastHero
The method executeTask(java.lang.String, java.lang.String, java.lang.Object[], i
nt) is undefined for the type events.lastHero.LastHero
L2Player cannot be resolved to a type
Cannot make a static reference to the non-static method getAllPlayers() from the
 type com.l2open.gameserver.model.L2World
Can only iterate over an array or an instance of java.lang.Iterable
players_list cannot be resolved
The method executeTask(java.lang.String, java.lang.String, java.lang.Object[], i
nt) is undefined for the type events.lastHero.LastHero
The method executeTask(java.lang.String, java.lang.String, java.lang.Object[], i
nt) is undefined for the type events.lastHero.LastHero
players_list cannot be resolved
L2Player cannot be resolved to a type
live_list cannot be resolved
L2Player cannot be resolved to a type
L2Player cannot be resolved to a type
L2Player cannot be resolved to a type
L2Player cannot be resolved to a type
The method executeTask(java.lang.String, java.lang.String, java.lang.Object[], i
nt) is undefined for the type events.lastHero.LastHero
The method executeTask(java.lang.String, java.lang.String, java.lang.Object[], i
nt) is undefined for the type events.lastHero.LastHero
The method executeTask(java.lang.String, java.lang.String, java.lang.Object[], i
nt) is undefined for the type events.lastHero.LastHero
The method executeTask(java.lang.String, java.lang.String, java.lang.Object[], i
nt) is undefined for the type events.lastHero.LastHero
The method executeTask(java.lang.String, java.lang.String, java.lang.Object[], i
nt) is undefined for the type events.lastHero.LastHero
The method executeTask(java.lang.String, java.lang.String, java.lang.Object[], i
nt) is undefined for the type events.lastHero.LastHero
The method executeTask(java.lang.String, java.lang.String, java.lang.Object[], i
nt) is undefined for the type events.lastHero.LastHero
The method executeTask(java.lang.String, java.lang.String, java.lang.Object[], i
nt) is undefined for the type events.lastHero.LastHero
The method executeTask(java.lang.String, java.lang.String, java.lang.Object[], i
nt) is undefined for the type events.lastHero.LastHero
The method executeTask(java.lang.String, java.lang.String, java.lang.Object[], i
nt) is undefined for the type events.lastHero.LastHero
The method executeTask(java.lang.String, java.lang.String, java.lang.Object[], i
nt) is undefined for the type events.lastHero.LastHero
players_list cannot be resolved
players_list cannot be resolved
players_list cannot be resolved
SkillTable cannot be resolved
players_list cannot be resolved
players_list cannot be resolved
players_list cannot be resolved
players_list cannot be resolved
L2Player cannot be resolved to a type
L2Player cannot be resolved to a type
players_list cannot be resolved
players_list cannot be resolved
L2Player cannot be resolved to a type
L2Player cannot be resolved to a type
live_list cannot be resolved
live_list cannot be resolved
L2Player cannot be resolved to a type
L2Player cannot be resolved to a type
live_list cannot be resolved
live_list cannot be resolved
live_list cannot be resolved
live_list cannot be resolved
self.isPlayer cannot be resolved or is not a field
live_list cannot be resolved
live_list cannot be resolved
L2Player cannot be resolved to a type
L2Player cannot be resolved to a type
L2Player cannot be resolved to a type
L2Player cannot be resolved to a type
L2Player cannot be resolved to a type
self.isPlayer cannot be resolved or is not a field
live_list cannot be resolved
live_list cannot be resolved
L2Player cannot be resolved to a type
26 ьрЁ 19:10:01: [WARNING] Failed executing script: C:\Users\Cruze\Desktop\serv\
Game\data\scripts\events\lasthero\LastHero.java. See LastHero.java.error.log for
 details.
26 ьрЁ 19:10:02: [INFO] Compiled Scripts Cache is disabled.

 

lasthero.error 

Спойлер

 

Error on: C:\Users\Cruze\Desktop\serv\Game\data\scripts\events\lastHero\LastHero.java.error.log
Line: -1 - Column: -1

compilation failed

 

скрипт эвента 

Спойлер

 

package events.lastHero;

import com.l2open.Config;
import com.l2open.extensions.listeners.L2ZoneEnterLeaveListener;
import com.l2open.extensions.scripts.Functions;
import com.l2open.extensions.scripts.ScriptFile;
import com.l2open.gameserver.Announcements;
import com.l2open.gameserver.instancemanager.ZoneManager;
import com.l2open.gameserver.model.*;
import com.l2open.gameserver.model.L2Zone.ZoneType;
import com.l2open.gameserver.model.instances.L2NpcInstance;
import com.l2open.gameserver.serverpackets.Revive;
import com.l2open.gameserver.tables.SkillTable;
import com.l2open.util.Files;
import com.l2open.util.Location;
import com.l2open.util.Rnd;
import com.l2open.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());
            }
        }
    }
}

 

редактировал через нотепад, кодировка стоит utf8

Изменено пользователем dbnfkbr33

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

т.е. чтобы добавить выдачу геройства за лх ты взял другой ивент? ....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, Khrome сказал:

т.е. чтобы добавить выдачу геройства за лх ты взял другой ивент? ....

Ага. И заменой импортов заставить новый ивент работать :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, dbnfkbr33 сказал:

хз в чем проблема, какие мысли поэтому поводу?

проблема в том что перед тем как начать ковыряться в коде сервера, стоило бы для начала выучить хотя бы основы Java...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
15 часов назад, Khrome сказал:

т.е. чтобы добавить выдачу геройства за лх ты взял другой ивент? ....

подскажи тогда пож, как написать выдачу хиро до релога или рестарта в награду? лх тот что рабочий 

Спойлер

 

qn = "777_LastHero"
# =======================================#
#               Настройки                #
# =======================================#
# Название Эвента (только английские символы)
Event_name = "LastHero" 

# Город, в котором вы хотите поставить регистрирующего НПЦ.
StartLocation = "Giran" 

# ID-номер регистрирующего нпц
Reg_Npc = 77777

# Координаты, где будет появляться регистрирующий НПЦ
StartNpcCoordinat = [82698,148638,-3468] 

# Вещи, необходимый для участия в Эвенте.
# Формат записи [itemId1,itemId2,....]
Price = [5575,57]

# Сколько заданных вещей необходимых для участия в Эвенте. Если хотите чтобы участие было бесплатным - поставте 0.
# Формат записи [itemId1_count,itemId2_count,....]
Price_count = [0,5]

# Минимальный уровень, на котором игрок сможет принять участие в Эвенте.
Min_level = 40 

# Через какое время эвент запустится после рестарта сервера.(указывать в секундах)
Time_to_start_after_restart = 120

# Через какое время после телепортации на эвент начнеться битва.(указывать в секундах)
Time_to_wait_battle = 30

# Время между Эвентами.(указывать в минутах)
Time_to_next_start = 10

# Время на регистрацию.(указывать в минутах)
Time_for_regestration = 3

# Как часто аннонсить о регистрации на Эвент.(указывать в секундах)
Announce_reg_delay = 60

# Минимальное количество игроков(не меньше 2).
Min_participate_count = 2

# Максимальное количество игроков.
Max_participate_count = 80

# Список наград при победе в эвенте. Выдаётся каждому игроку. 
# Формат записи: [[itemId1,count1,chance1],[itemId2,count2,chanceN],...]
Rewards = [[4356,500,100],[6393,100,100]] 

# Координаты точки куда будут телепортироваться игроки.
Teleport_coordinat = [149438, 46785, -3413]

# Двери которые будут закрываться на периоод прохождения эвента.
# Формат записи: [Door_id1,Door_id2,...]
Doors = [24190002,24190003]


# ================Неизменять================ #
lastPlayers = []
lastX = []
lastY = []
lastZ = []
closed = 1
Players = []
Deadplayers = []
annom = 1

class Quest (JQuest) :
 def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

 def init_LoadGlobalData(self) :
   self.startQuestTimer("open_reg", Time_to_start_after_restart *1000, None, None)
   return

 def onTalk (Self,npc,player):
  global Players,closed
  st = player.getQuestState(qn)
  npcId = npc.getNpcId()
  if npcId == Reg_Npc:
   if closed<>1:
    if not player.isInOlympiadMode() :
     if player.getLevel() >= Min_level:
      if player.getName() not in Players:
       if len(Players) <= Max_participate_count :
        if Price_count[0]<>0:   
         if st.getQuestItemsCount(Price[0])>Price_count[0]:
           st.takeItems(Price[0],Price_count[0])
           Players.append(player.getName())
           return "reg.htm"
         else:
           st.exitQuest(1)
           return "noPrice.htm"
        else:
            Players.append(player.getName())
            return "reg.htm"
       else:         
         return "max.htm"
      else:
       return "yje.htm"
     else:
      return "lvl.htm"
    else:
     return "You register in olympiad games now"
   else:
    return "noreg.htm"
  return

 def onAdvEvent (self,event,npc,player):
   global Deadplayers,Players,annom,closed,Doors,lastPlayers,lastX,lastY,lastZ
   if event == "open_reg" :
    closed = 0
    annom = 1
    lastPlayers = []
    Players = []
    Deadplayers = []
    lastX = []
    lastY = []
    lastZ = []
    npc = self.addSpawn(Reg_Npc,StartNpcCoordinat[0],StartNpcCoordinat[1],StartNpcCoordinat[2],30000,False,0)
    self.startQuestTimer("wait_battle", Time_for_regestration*60000, npc, None)
    self.startQuestTimer("announce", Announce_reg_delay*1000, None, None)
    Announcements.getInstance().announceToAll("Opened registration for "+str(Event_name)+" event! You can register in "+str(StartLocation)+".")
   if event == "start_event":
    if len(Players)< Min_participate_count :
      closed=1
      Announcements.getInstance().announceToAll("Event "+str(Event_name)+" was canceled due lack of participation.")
      self.startQuestTimer("set_winner", 1000, None, None)
      self.startQuestTimer("open_reg", Time_to_next_start*60000, None, None)
    else:
      closed=1
      Announcements.getInstance().announceToAll("Event "+str(Event_name)+" has started!")
      for nm in Players :
       i=L2World.getInstance().getPlayer(nm)
       if i<>None:
        if i.isOnline() :
         i.getAppearance().setVisible()
         i.broadcastStatusUpdate()
         i.broadcastUserInfo()
      while len(Players)>1 :
       for nm in Players :
        i=L2World.getInstance().getPlayer(nm)
        if i<>None:
         if i.isDead():
          i.reviveAnswer(0)
          Deadplayers.append(i.getName())
          Players.remove(i.getName())
      self.startQuestTimer("set_winner", 1000, None, None)
   if event == "announce" and closed==0 and (Time_for_regestration*60 - Announce_reg_delay * annom)>0: 
     Announcements.getInstance().announceToAll(str(Time_for_regestration*60 - Announce_reg_delay * annom ) + " seconds until event "+str(Event_name)+" will start! You can register in "+str(StartLocation)+".")
     annom=annom+1
     self.startQuestTimer("announce", Announce_reg_delay*1000, None, None)
   if event == "set_winner" :
     if len(Players) > 0 and len(Players + Deadplayers) >= Min_participate_count:
         winner=L2World.getInstance().getPlayer(Players[0])
         Deadplayers.append(Players[0])
         if winner.isDead():
             Announcements.getInstance().announceToAll("Event "+str(Event_name)+" has ended. All players is dead. Nobody Win")
         else :
             Announcements.getInstance().announceToAll("Event "+str(Event_name)+" has ended.")
             Announcements.getInstance().announceToAll("Event: "+str(Players[0])+" win!")
         for nm in Deadplayers :
             i=L2World.getInstance().getPlayer(nm)
             if i<>None and i.isOnline():
                 if i.isDead():
                     i.doRevive()
                 i.setCurrentCp(i.getMaxCp())
                 i.setCurrentHp(i.getMaxHp())
                 i.setCurrentMp(i.getMaxMp())
                 i.stopAllEffects()
                 i.broadcastStatusUpdate()
                 i.broadcastUserInfo()
         if len(Deadplayers)>0:
             n = 0
             for nm in lastPlayers :
                 i=L2World.getInstance().getPlayer(nm)
                 i.teleToLocation(lastX[n],lastY[n],lastZ[n])
                 n = n + 1
         if winner<>None:
           if winner.isOnline() :
             for id, count, chance in Rewards :
               winner.getQuestState(qn).giveItems(id,count)
     Announcements.getInstance().announceToAll("Next time registration opend at "+str(Time_to_next_start)+" minute(s)")
     for d in Doors:
         door = DoorTable.getInstance().getDoor(d)
         door.openMe()
     lastPlayers = []
     Players = []
     Deadplayers = []
     lastX = []
     lastY = []
     lastZ = []
     self.startQuestTimer("open_reg", Time_to_next_start*60000, None, None)
   if event == "exit" :
     if player.getName() in Players:
       Players.remove(player.getName())
       return "exit.htm"
     else:
       return "default.htm"
   if event == "wait_battle":
    npc.deleteMe()
    if len(Players) >= Min_participate_count:
      for nm in Players:
        i=L2World.getInstance().getPlayer(nm)
        if i<>None:
          if not i.isOnline() or i.isInOlympiadMode() or i.isInJail():
            Players.remove(nm)
        else:
            Players.remove(nm)
      for nm in Players:
        i=L2World.getInstance().getPlayer(nm)
        if i<>None:
          if i.isOnline() :
            if i.isDead():
              i.doRevive()
            i.setCurrentCp(i.getMaxCp())
            i.setCurrentHp(i.getMaxHp())
            i.setCurrentMp(i.getMaxMp())
            i.stopAllEffects()
            i.getAppearance().setInvisible();
            i.broadcastStatusUpdate()
            i.broadcastUserInfo()
            lastPlayers.append(nm)
            lastX.append(i.getX())
            lastY.append(i.getY())
            lastZ.append(i.getZ())
            i.teleToLocation(Teleport_coordinat[0],Teleport_coordinat[1],Teleport_coordinat[2])
      for d in Doors:
        door = DoorTable.getInstance().getDoor(d)
        door.closeMe()
      Announcements.getInstance().announceToAll("Event "+str(Event_name)+": Registration close. You have "+str(Time_to_wait_battle)+" seconds for buffs before battle start")
      self.startQuestTimer("start_event", Time_to_wait_battle*1000, None, None)
    else :
        self.startQuestTimer("start_event", 1000, None, None)

QUEST = Quest(777, qn, "custom")

QUEST.addStartNpc(int(Reg_Npc))
QUEST.addTalkId(int(Reg_Npc))

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
14 часов назад, Se1dhe сказал:

Ага. И заменой импортов заставить новый ивент работать :D

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

13 часов назад, Gaikotsu сказал:

проблема в том что перед тем как начать ковыряться в коде сервера, стоило бы для начала выучить хотя бы основы Java...

Давай, с удовольствием, подскажи где учить и только чтобы разборчиво было и понятно для неопытного человека

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
8 минут назад, dbnfkbr33 сказал:

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

Давай, с удовольствием, подскажи где учить и только чтобы разборчиво было и понятно для неопытного человека

Брюс Эккель и Герберг Шилдт в помощ, либо плати деньги 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, Solution сказал:

Брюс Эккель и Герберг Шилдт в помощ, либо плати деньги 

намекаешь с ним связаться и учиться у него или че?))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
15 часов назад, Khrome сказал:

т.е. чтобы добавить выдачу геройства за лх ты взял другой ивент? ....

Братюнь, как прописать выдачу геройства в награду?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
10 часов назад, dbnfkbr33 сказал:

намекаешь с ним связаться и учиться у него или че?))

тебе намекают на то что стоит скачать книги этих авторов и почитать

к примеру эти

https://rutracker.org/forum/viewtopic.php?t=5089328

https://rutracker.org/forum/viewtopic.php?t=4966038

хотя как подозреваю, тебе лучше будет начать с этого

https://rutracker.org/forum/viewtopic.php?t=3791349

Изменено пользователем Gaikotsu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
20 минут назад, Gaikotsu сказал:

тебе намекают на то что стоит скачать книги этих авторов и почитать

к примеру эти

https://rutracker.org/forum/viewtopic.php?t=5089328

https://rutracker.org/forum/viewtopic.php?t=4966038

хотя как подозреваю, тебе лучше будет начать с этого

https://rutracker.org/forum/viewtopic.php?t=3791349

что то ссылки не рабочие, ребят объясните как сделать в моем рабочем эвенте награду хиро последнему выжевшему? что за код там?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
12 минут назад, dbnfkbr33 сказал:

что то ссылки не рабочие, ребят объясните как сделать в моем рабочем эвенте награду хиро последнему выжевшему? что за код там?

setHero()

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, Khrome сказал:

setHero()

Спойлер

 

package events.lastHero;

import com.l2open.Config;
import com.l2open.extensions.listeners.L2ZoneEnterLeaveListener;
import com.l2open.extensions.scripts.Functions;
import com.l2open.extensions.scripts.ScriptFile;
import com.l2open.gameserver.Announcements;
import com.l2open.gameserver.instancemanager.ZoneManager;
import com.l2open.gameserver.model.*;
import com.l2open.gameserver.model.L2Zone.ZoneType;
import com.l2open.gameserver.model.instances.L2NpcInstance;
import com.l2open.gameserver.serverpackets.Revive;
import com.l2open.gameserver.tables.SkillTable;
import com.l2open.util.Files;
import com.l2open.util.Location;
import com.l2open.util.Rnd;
import com.l2open.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());
            }
        }
    }
}

 

но куда и как правильно вписать сет хиро чтоб все работало?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

что за сборка стоит у вас? похоже на PW, разве PW ище кто то пользуется?

для допов сойдет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
13 часов назад, dbnfkbr33 сказал:

намекаешь с ним связаться и учиться у него или че?))

Конкретно он намекает на это. А связаться и учиться у него, это уже как посмотреть. :DIMG_20190328_012500.thumb.jpg.b1658d11f4f2929fcd85f3fc1e8591e5.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 28.03.2019 в 00:43, legendaryinside сказал:

что за сборка стоит у вас? похоже на PW, разве PW ище кто то пользуется?

для допов сойдет

в первом сообщении ж написал что л2опен, вы знаете или просто так написали?))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 27.03.2019 в 23:56, dbnfkbr33 сказал:
  скрипт init_py (Показать контент)

 

package events.lastHero;

import com.l2open.Config;
import com.l2open.extensions.listeners.L2ZoneEnterLeaveListener;
import com.l2open.extensions.scripts.Functions;
import com.l2open.extensions.scripts.ScriptFile;
import com.l2open.gameserver.Announcements;
import com.l2open.gameserver.instancemanager.ZoneManager;
import com.l2open.gameserver.model.*;
import com.l2open.gameserver.model.L2Zone.ZoneType;
import com.l2open.gameserver.model.instances.L2NpcInstance;
import com.l2open.gameserver.serverpackets.Revive;
import com.l2open.gameserver.tables.SkillTable;
import com.l2open.util.Files;
import com.l2open.util.Location;
import com.l2open.util.Rnd;
import com.l2open.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());
            }
        }
    }
}

 

но куда и как правильно вписать сет хиро чтоб все работало?

Это тебе и предстоит выяснить, мой юный друг. Хочешь чтоб работало - всегда есть два варианта.

1) Покурить мануалы, посмотреть варианты в интернете, сделать самостоятельно.

2) Заплатить  бабло и за тебя сделают другие.

Вариант "принести на блюдечке с голубой каемочкой бесплатно без регистрации и смс" конечно же отсутствует так как наврятли кто-то будет тратить своё время на то чтобы переделать за тебя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 29.03.2019 в 23:31, Khrome сказал:

Это тебе и предстоит выяснить, мой юный друг. Хочешь чтоб работало - всегда есть два варианта.

1) Покурить мануалы, посмотреть варианты в интернете, сделать самостоятельно.

2) Заплатить  бабло и за тебя сделают другие.

Вариант "принести на блюдечке с голубой каемочкой бесплатно без регистрации и смс" конечно же отсутствует так как наврятли кто-то будет тратить своё время на то чтобы переделать за тебя.

Еслиб я знал, с удовольствием кому нибудь помог бы. Что такого то, притом сейчас мало кому интересна ла2. Не все жопят инфу, а бабла платить нет брат.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 29.03.2019 в 02:15, legendaryinside сказал:

тебя заело что я написал?

что значит "заело"? так понял "задело", так ты сам спросил, лол "что за сборка стоит у вас?"

 

В 28.03.2019 в 00:43, legendaryinside сказал:

что за сборка стоит у вас? похоже на PW, разве PW ище кто то пользуется?

для допов сойдет

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...