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

© 2026 la2base.com · All rights reserved

ruen
Forum/Наработки серверной части/[Продам] Lasthero Event на Py для L2j сборок.
Search

[Продам] Lasthero Event на Py для L2j сборок.

15 replies434 viewsCurrently viewing: 1
J
Juniorla

User

Участник

Posts: 86

На форуме с: 05/28/2009

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

Рейтинг: 0

· 11/19/2009, 09:19 PM

Продам эвент LastHero за 50 WMZ. Пишите в ICQ 590159793 или в ЛК.

Код
Code
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


.....
Код
Code
   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 = []


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

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

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

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

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

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

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



Спасибо за внимаение.

0
J
Juniorla

User

Участник

Posts: 86

На форуме с: 05/28/2009

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

Рейтинг: 0

· 11/20/2009, 04:10 PM

UP темы.

0
L
lsd
· 11/20/2009, 05:16 PM

я даже не дам 5 баксов

0
Кирилл
Кирилл

Author

Ветеран

Posts: 511

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

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

Рейтинг: 0

· 11/20/2009, 05:23 PM

Эвент за 50$ - 3c2f1c34aa11.gif , за такие деньги можна сборку нормальную купить с этим же встроенным эвентом

Если стоит пароль на архив в моей новости, значит пароль www.la2base.ru

— L2 Live Developers Team

0
Алексей
Алексей

User

Новичок

Posts: 24

На форуме с: 08/09/2007

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

Рейтинг: 0

· 11/20/2009, 05:43 PM

Данного человека знаю, не обманет, на данный момент готов продать и за 40$.

0
M
motorboy
· 11/20/2009, 05:46 PM

DarkPrince: Данного человека знаю, не обманет, на данный момент готов продать и за 40$.

Именно убедил купить , продажная крыса .
Поменяю на стресс 7.5 3c2f1c34aa11.gif

0
Алексей
Алексей

User

Новичок

Posts: 24

На форуме с: 08/09/2007

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

Рейтинг: 0

· 11/20/2009, 05:49 PM

motorboy, я вас как то обзывал? я лишь сказал правду, что то не нравится прошу идти туда от куда пришли ()().

0
J
Juniorla

User

Участник

Posts: 86

На форуме с: 05/28/2009

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

Рейтинг: 0

· 11/20/2009, 05:59 PM

Какие обмены?) Зачем мне обменивыть всё сборки и обвязки сам смогу себе сделать ;)
Какие 5 $? Иди и возьми бесплатно)
Какая сборка за 50$ нормальная? Если к ста найдете то скиньте ссылку , я гляну ;)

0
А
Андрейка
· 11/20/2009, 07:15 PM

Жесть 50$ за то что есть в инете это конечно совсем наглость,
ЗЫ: тоже что ли продавать начать аля евент охота на рейд боссов или сохранение цвета ника в базе

0
CKA3KART
CKA3KART

User

Бывалый

Posts: 359

На форуме с: 01/05/2010

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

Рейтинг: 0

· 11/20/2009, 07:19 PM

Исходник эвента ластхиро


Раскрывающийся текст
package events.lasthero;

import static l2d.game.model.L2Zone.ZoneType.OlympiadStadia;

import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ScheduledFuture;

import l2d.Config;
import l2d.ext.listeners.L2ZoneEnterLeaveListener;
import l2d.ext.multilang.CustomMessage;
import l2d.ext.scripts.Functions;
import l2d.ext.scripts.ScriptFile;
import l2d.game.Announcements;
import l2d.game.ThreadPoolManager;
import l2d.game.instancemanager.ServerVariables;
import l2d.game.instancemanager.ZoneManager;
import l2d.game.model.L2Character;
import l2d.game.model.L2Object;
import l2d.game.model.L2Playable;
import l2d.game.model.L2Player;
import l2d.game.model.L2Skill;
import l2d.game.model.L2World;
import l2d.game.model.L2Zone;
import l2d.game.model.L2Zone.ZoneType;
import l2d.game.model.instances.L2NpcInstance;
import l2d.game.network.serverpackets.Revive;
import l2d.game.tables.SkillTable;
import l2d.util.Files;
import l2d.util.Location;
import l2d.util.Rnd;
import l2d.util.Util;

public class LastHero extends Functions implements ScriptFile
{
public class StartTask implements Runnable
{
public void run()
{
if(_active && !isRunned())
start(new String[] { "1", "1" });
}
}

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

public L2Object self;
public L2NpcInstance npc;

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

private static boolean _isRegistrationActive = false;
private static int _status = 0;
private static int _time_to_start;
private static int _category;
private static int _minLevel;
private static int _maxLevel;
private static int _autoContinue = 0;

@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);
_startTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new StartTask(), (Config.EVENT_LastHeroAutoTime * 60 * 1000), (Config.EVENT_LastHeroAutoTime * 60 * 1000));
_active = ServerVariables.getString("LastHero", "off").equalsIgnoreCase("on");

System.out.println("Loaded Event: Last Hero");
}

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

public void onShutdown()
{
onReload();
}

private static boolean _active = false;

private static boolean isActive()
{
return _active;
}

public void activateEvent()
{
L2Player player = (L2Player) self;
if(!player.getPlayerAccess().IsEventGm)
return;

if(!isActive())
{
if(_startTask == null)
_startTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new StartTask(), (Config.EVENT_LastHeroAutoTime * 60 * 1000), (Config.EVENT_LastHeroAutoTime * 60 * 1000));
ServerVariables.set("LastHero", "on");
System.out.println("Event 'Last Hero' activated.");
Announcements.getInstance().announceByCustomMessage("scripts.events.lasthero.AnnounceEventStarted", null);
}
else
player.sendMessage("Event 'Last Hero' already active.");

_active = true;

show(Files.read("data/html/admin/events.htm", player), player);
}

public void deactivateEvent()
{
L2Player player = (L2Player) self;
if(!player.getPlayerAccess().IsEventGm)
return;

if(isActive())
{
if(_startTask != null)
{
_startTask.cancel(true);
_startTask = null;
}
ServerVariables.unset("LastHero");
System.out.println("Event 'Last Hero' deactivated.");
Announcements.getInstance().announceByCustomMessage("scripts.events.lasthero.AnnounceEventStoped", null);
}
else
player.sendMessage("Event 'LastHero' not active.");

_active = false;

show(Files.read("data/html/admin/events.htm", player), player);
}

public static boolean isRunned()
{
return _isRegistrationActive || _status > 0;
}

public 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 int getMinLevelForCategory(int category)
{
switch (category)
{
case 1:
return 20;
case 2:
return 30;
case 3:
return 40;
case 4:
return 52;
case 5:
return 62;
case 6:
return 76;
}
return 0;
}

public static int getMaxLevelForCategory(int category)
{
switch (category)
{
case 1:
return 29;
case 2:
return 39;
case 3:
return 51;
case 4:
return 61;
case 5:
return 75;
case 6:
return 85;
}
return 0;
}

public static int getCategory(int level)
{
if(level >= 20 && level <= 29)
return 1;
else if(level >= 30 && level <= 39)
return 2;
else if(level >= 40 && level <= 51)
return 3;
else if(level >= 52 && level <= 61)
return 4;
else if(level >= 62 && level <= 75)
return 5;
else if(level >= 76)
return 6;
return 0;
}

public void start(String[] var)
{
L2Player player = (L2Player) self;
if(var.length != 2)
{
show(new CustomMessage("common.Error", player), player);
return;
}

Integer category;
Integer autoContinue;
try
{
category = Integer.valueOf(var[0]);
autoContinue = Integer.valueOf(var[1]);
}
catch(Exception e)
{
show(new CustomMessage("common.Error", player), player);
return;
}

_category = category;
_autoContinue = autoContinue;

_minLevel = getMinLevelForCategory(_category);
_maxLevel = getMaxLevelForCategory(_category);

if(_endTask != null)
{
show(new CustomMessage("common.TryLater", player), player);
return;
}

_status = 0;
_isRegistrationActive = true;
_time_to_start = Config.EVENT_LastHeroTime;

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

String[] param = {
String.valueOf(_time_to_start),
String.valueOf(_minLevel),
String.valueOf(_maxLevel) };
sayToAll("scripts.events.lasthero.AnnouncePreStart", param);

executeTask("events.lasthero.LastHero", "question", new Object[0], 10000);
executeTask("events.lasthero.LastHero", "announce", new Object[0], 60000);
}

public static void sayToAll(String address, String[] replacements)
{
Announcements.getInstance().announceByCustomMessage(address, replacements);
}

public static void question()
{
for(L2Player player : L2World.getAllPlayers())
if(player != null && player.getLevel() >= _minLevel && player.getLevel() <= _maxLevel)
player.scriptRequest(new CustomMessage("scripts.events.lasthero.AskPlayer", player).toString(), "events.lasthero.LastHero:addPlayer", new Object[0]);
}

public static void announce()
{
if(players_list.size() < 2)
{
sayToAll("scripts.events.lasthero.AnnounceEventCancelled", null);
_isRegistrationActive = false;
_status = 0;
executeTask("events.lasthero.LastHero", "autoContinue", new Object[0], 10000);
return;
}

if(_time_to_start > 1)
{
_time_to_start--;
String[] param = {
String.valueOf(_time_to_start),
String.valueOf(_minLevel),
String.valueOf(_maxLevel) };
sayToAll("scripts.events.lasthero.AnnouncePreStart", param);
executeTask("events.lasthero.LastHero", "announce", new Object[0], 60000);
}
else
{
_status = 1;
_isRegistrationActive = false;
sayToAll("scripts.events.lasthero.AnnounceEventStarting", null);
executeTask("events.lasthero.LastHero", "prepare", new Object[0], 5000);
}
}

public void addPlayer()
{
L2Player player = (L2Player) self;
if(player == null || !checkPlayer(player, true))
return;

players_list.add(player);
live_list.add(player);

show(new CustomMessage("scripts.events.lasthero.Registered", player), player);
}

public static boolean checkPlayer(L2Player player, boolean first)
{
if(first && !_isRegistrationActive)
{
show(new CustomMessage("scripts.events.Late", player), player);
return false;
}

if(first && players_list.contains(player))
{
show(new CustomMessage("scripts.events.lasthero.Cancelled", player), player);
return false;
}

if(player.getLevel() < _minLevel || player.getLevel() > _maxLevel)
{
show(new CustomMessage("scripts.events.lasthero.CancelledLevel", player), player);
return false;
}

if(player.getDuel() != null)
{
show(new CustomMessage("scripts.events.lasthero.CancelledDuel", player), player);
return false;
}

if(player.getTeam() != 0)
{
show(new CustomMessage("scripts.events.lasthero.CancelledOtherEvent", player), player);
return false;
}

if(player.isInZone(OlympiadStadia))
{
show(new CustomMessage("scripts.events.lasthero.CancelledOlympiad", player), player);
return false;
}

if(player.isInParty() && player.getParty().isInDimensionalRift())
{
show(new CustomMessage("scripts.events.lasthero.CancelledOtherEvent", player), player);
return false;
}

if(player.isTeleporting())
{
show(new CustomMessage("scripts.events.lasthero.CancelledTeleport", player), player);
return false;
}

return true;
}

public static void prepare()
{
cleanPlayers();
clearArena();

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], 60000);

sayToAll("scripts.events.lasthero.AnnounceFinalCountdown", null);
}

public static void go()
{
_status = 2;
upParalyzePlayers();
checkLive();
clearArena();
sayToAll("scripts.events.lasthero.AnnounceFight", null);
_endTask = executeTask("events.lasthero.LastHero", "endBattle", new Object[0], 300000);
}

public static void endBattle()
{
_status = 0;
removeAura();
if(live_list.size() == 1)
for(L2Player player : live_list)
if(player != null)
{
String[] repl = { player.getName() };
sayToAll("scripts.events.lasthero.AnnounceWiner", repl);

if(Config.EVENT_LastHeroRate)
addItem(player, Config.EVENT_LastHeroItemID, player.getLevel() * Config.EVENT_LastHeroItemCOUNT * 5);
else
addItem(player, Config.EVENT_LastHeroItemID, Config.EVENT_LastHeroItemCOUNT * 5);
break;
}
sayToAll("scripts.events.lasthero.AnnounceEnd", null);
executeTask("events.lasthero.LastHero", "end", new Object[0], 60000);
_isRegistrationActive = false;
if(_endTask != null)
{
_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);
executeTask("events.lasthero.LastHero", "autoContinue", new Object[0], 10000);
}

public void autoContinue()
{
if(_autoContinue > 0)
{
if(_autoContinue >= 6)
{
_autoContinue = 0;
return;
}
start(new String[] {
"" + (_autoContinue + 1),
"" + (_autoContinue + 1) });
}
}

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

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

public static void teleportPlayersToSavedCoords()
{
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 != 4)
continue;
player.teleToLocation(Integer.parseInt(coords[0]), Integer.parseInt(coords[1]), Integer.parseInt(coords[2]), Integer.parseInt(coords[3]));
player.unsetVar("LastHero_backCoords");
}
}

public static void teleportToColiseumSpawn(L2Character cha)
{
if(cha != null)
cha.teleToLocation(147451, 46728, -3410);
}

public static void paralyzePlayers()
{
L2Skill revengeSkill = SkillTable.getInstance().getInfo(4515, 1);
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()
{
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().oustPartyMember(player);
}
}

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

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

public static void cleanPlayers()
{
for(L2Player player : players_list)
if(!checkPlayer(player, false))
{
players_list.remove(player);
live_list.remove(player);
}
}

public static void checkLive()
{
for(L2Player player : live_list)
if(player != null && player.isInZone(_zone) && !player.isDead() && player.isConnected() && !player.isLogoutStarted())
player.setTeam(2);
else if(player != null)
{
show(new CustomMessage("scripts.events.lasthero.YouLose", player), player);
player.setTeam(0);
live_list.remove(player);
}
if(live_list.size() <= 1)
endBattle();
}

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

public static void clearArena()
{
for(L2Object obj : _zone.getObjects())
if(obj != null)
{
L2Player player = obj.getPlayer();
if(player != null && !live_list.contains(player))
teleportToColiseumSpawn(player);
}
}

public static void OnDie(L2Object self, L2Character killer)
{
if(_status > 1 && self != null && self.isPlayer && live_list.contains(self))
{
live_list.remove(self);
((L2Player) self).setTeam(0);
show(new CustomMessage("scripts.events.lasthero.YouLose", self), ((L2Player) self));
checkLive();
if(killer != null && killer.isPlayer)
if(Config.EVENT_LastHeroRate)
addItem((L2Player) killer, Config.EVENT_LastHeroItemID, ((L2Player) self).getLevel() * Config.EVENT_LastHeroItemCOUNT);
else
addItem((L2Player) killer, Config.EVENT_LastHeroItemID, Config.EVENT_LastHeroItemCOUNT);
}
}

public static Location OnEscape(L2Player player)
{
if(_status > 1 && player != null && live_list.contains(player))
{
live_list.remove(player);
player.setTeam(0);
checkLive();
}
return null;
}

public static void OnPlayerExit(L2Player player)
{
// Вышел или вылетел во время регистрации
if(_status == 0 && _isRegistrationActive && player != null && live_list.contains(player))
{
live_list.remove(player);
players_list.remove(player);
return;
}

// Вышел или вылетел во время телепортации
if(_status == 1 && player != null && live_list.contains(player))
{
live_list.remove(player);
players_list.remove(player);
player.setTeam(0);

String var = player.getVar("LastHero_backCoords");
if(var == null || var.equals(""))
return;
String[] coords = var.split(" ");
if(coords.length != 4)
return;
player.teleToLocation(Integer.parseInt(coords[0]), Integer.parseInt(coords[1]), Integer.parseInt(coords[2]), Integer.parseInt(coords[3]));
player.unsetVar("LastHero_backCoords");
return;
}

// Вышел или вылетел во время эвента
if(_status > 1 && player != null && live_list.contains(player))
{
live_list.remove(player);
player.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()))
teleportToColiseumSpawn((L2Character) object);
}

@Override
public void objectLeaved(L2Zone zone, L2Object object)
{
L2Player player = object.getPlayer();
if(_status > 1 && 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());
}
}
}
}

0
J
Juniorla

User

Участник

Posts: 86

На форуме с: 05/28/2009

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

Рейтинг: 0

· 11/20/2009, 07:23 PM

Ну да к у меня тот, что продают на сайте скриптс за 5000к рублей для l2j нп питоне, т.е исходов сборки не надо (пойдет на скорию, ла2бейз, л2ему, л2жфри, архид и т.п.) , чё вы мне l2dream каждый раз показываете))

0
CKA3KART
CKA3KART

User

Бывалый

Posts: 359

На форуме с: 01/05/2010

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

Рейтинг: 0

· 11/20/2009, 07:28 PM

M@LDER: Ну да к у меня тот, что продают на сайте скриптс за 5000к рублей для l2j нп питоне, т.е исходов сборки не надо (пойдет на скорию, ла2бейз, л2ему, л2жфри, архид и т.п.) , чё вы мне l2dream каждый раз показываете))


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

0
J
Juniorla

User

Участник

Posts: 86

На форуме с: 05/28/2009

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

Рейтинг: 0

· 11/20/2009, 07:41 PM

Ну тогда, их как миниму человек 15- 20 ть, ибо эвент требуют под л2ж этот постоянно. Ну Бог с ним , раз он у всех есть и всё норм можно стереть тему ;)

0
B
blastoma

User

Бывалый

Posts: 404

На форуме с: 08/18/2008

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

Рейтинг: 0

· 11/20/2009, 09:20 PM

А ничего, что с скриптс нельзя перепродавать эвенты?

— www.l2club.ru

0
O
Odada
· 12/21/2009, 10:18 AM

для скории, если надо могу под l2jserver, но тут только пути переделать:

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