Ошибка в рб
Сборка La2base
Суть проблемы : AI Рб написаный на яве выдает ошибки , в чем проблема не пойму - может не правильно исправил ??
----------
1. ERROR in \IceFairySirra.java (at line 94)
_log.error("IceFairySirraManager: Failed deleting mob.", e);
^^^^^
The method error(String, Exception) is undefined for the type Logger
----------
2. ERROR in \IceFairySirra.java (at line 132)
_log.error("IceFairySirraManager: Failed closing door", e);
^^^^^
The method error(String, Exception) is undefined for the type Logger
----------
3. ERROR in \IceFairySirra.java (at line 154)
_log.error("IceFairySirraManager: Failed closing door", e);
^^^^^
The method error(String, Exception) is undefined for the type Logger
----------
Вот сам AI рб
import java.util.concurrent.Future;
import javolution.util.FastList;
import net.sf.l2j.Config;
import net.sf.l2j.gameserver.cache.HtmCache;
import net.sf.l2j.gameserver.datatables.DoorTable;
import net.sf.l2j.gameserver.datatables.NpcTable;
import net.sf.l2j.gameserver.datatables.SpawnTable;
import net.sf.l2j.gameserver.instancemanager.GrandBossManager;
import net.sf.l2j.gameserver.model.L2ItemInstance;
import net.sf.l2j.gameserver.model.L2Spawn;
import net.sf.l2j.gameserver.model.actor.instance.L2DoorInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.quest.Quest;
import net.sf.l2j.gameserver.model.zone.type.L2BossZone;
import net.sf.l2j.gameserver.serverpackets.ActionFailed;
import net.sf.l2j.gameserver.serverpackets.NpcHtmlMessage;
import net.sf.l2j.gameserver.templates.L2NpcTemplate;
import ai.group_template.L2AttackableAIScript;
/**
* Ice Fairy Sirra AI
*/
public class IceFairySirra extends L2AttackableAIScript
{
private static final int STEWARD = 32029;
private static final int SILVER_HEMOCYTE = 8057;
private static L2BossZone _freyasZone;
private static L2PcInstance _player = null;
protected FastList<L2NpcInstance> _allMobs = new FastList<L2NpcInstance>();
protected Future<?> _onDeadEventTask = null;
public IceFairySirra(int id,String name,String descr)
{
super(id,name,descr);
int[] mob = {STEWARD, 22100, 22102, 22104};
this.registerMobs(mob);
this.addEventId(STEWARD, Quest.QuestEventType.QUEST_START);
this.addEventId(STEWARD, Quest.QuestEventType.ON_TALK);
this.addEventId(STEWARD, Quest.QuestEventType.ON_FIRST_TALK);
init();
}
public void init()
{
_freyasZone = GrandBossManager.getInstance().getZone(105546 , -127892 , -2768);
if (_freyasZone == null)
{
_log.warning("IceFairySirraManager: Failed to load zone");
return;
}
_freyasZone.setZoneEnabled(false);
L2NpcInstance steward = findTemplate(STEWARD);
if (steward != null)
steward.setBusy(false);
openGates();
}
public void cleanUp()
{
init();
cancelQuestTimer("30MinutesRemaining",null, _player);
cancelQuestTimer("20MinutesRemaining",null, _player);
cancelQuestTimer("10MinutesRemaining",null, _player);
cancelQuestTimer("End",null, _player);
for (L2NpcInstance mob : _allMobs)
{
try
{
mob.getSpawn().stopRespawn();
mob.deleteMe();
}
catch (Exception e)
{
_log.error("IceFairySirraManager: Failed deleting mob.", e);
}
}
_allMobs.clear();
}
public L2NpcInstance findTemplate(int npcId)
{
L2NpcInstance npc = null;
for (L2Spawn spawn : SpawnTable.getInstance().getSpawnTable().values())
{
if (spawn != null && spawn.getNpcid() == npcId)
{
npc = spawn.getLastSpawn();
break;
}
}
return npc;
}
protected void openGates()
{
for (int i = 23140001; i < 23140003; i++ )
{
try
{
L2DoorInstance door = DoorTable.getInstance().getDoor(i);
if (door != null)
{
door.openMe();
}
else
{
_log.warning("IceFairySirraManager: Attempted to open undefined door. doorId: "+i);
}
}
catch (Exception e)
{
_log.error("IceFairySirraManager: Failed closing door", e);
}
}
}
protected void closeGates()
{
for (int i = 23140001; i < 23140003; i++ )
{
try
{
L2DoorInstance door = DoorTable.getInstance().getDoor(i);
if (door != null)
{
door.closeMe();
}
else
{
_log.warning("IceFairySirraManager: Attempted to close undefined door. doorId: "+i);
}
}
catch (Exception e)
{
_log.error("IceFairySirraManager: Failed closing door", e);
}
}
}
public boolean checkItems (L2PcInstance player)
{
if (player.getParty() != null)
{
for (L2PcInstance pc : player.getParty().getPartyMembers())
{
L2ItemInstance i = pc.getInventory().getItemByItemId(SILVER_HEMOCYTE);
if (i == null || i.getCount() < 10)
{
return false;
}
}
}
else
return false;
return true;
}
public void destroyItems (L2PcInstance player)
{
if (player.getParty() != null)
{
for (L2PcInstance pc : player.getParty().getPartyMembers())
{
L2ItemInstance i = pc.getInventory().getItemByItemId(SILVER_HEMOCYTE);
pc.destroyItem("Hemocytes", i.getObjectId(), 10, null, false);
}
}
else
cleanUp();
}
public void teleportInside (L2PcInstance player)
{
if (player.getParty() != null)
{
for (L2PcInstance pc : player.getParty().getPartyMembers())
{
pc.teleToLocation(113533,-126159,-3488,false);
if (_freyasZone == null)
{
_log.warning("IceFairySirraManager: Failed to load zone");
cleanUp();
return;
}
_freyasZone.allowPlayerEntry(pc,2103);
}
}
else
cleanUp();
}
public void screenMessage(L2PcInstance player, String text, int time)
{
if (player.getParty() != null)
{
for (L2PcInstance pc : player.getParty().getPartyMembers())
{
pc.sendPacket(new ExShowScreenMessage(text,time));
}
}
else
cleanUp();
}
public void doSpawns()
{
int[][] mobs = { {29060 , 105546 , -127892 , -2768} ,
{29056 , 102779 , -125920 , -2840} ,
{22100 , 111719 , -126646 , -2992} ,
{22102 , 109509 , -128946 , -3216} ,
{22104 , 109680 , -125756 , -3136} };
L2Spawn spawnDat;
L2NpcTemplate template;
try
{
for (int i = 0; i <5; i++)
{
template = NpcTable.getInstance().getTemplate(mobs[i][0]);
if (template != null)
{
spawnDat = L2Spawn.valueOf(template);
spawnDat.setAmount(1);
spawnDat.setLocx(mobs[i][1]);
spawnDat.setLocy(mobs[i][2]);
spawnDat.setLocz(mobs[i][3]);
spawnDat.setHeading(0);
spawnDat.setRespawnDelay(60);
SpawnTable.getInstance().addNewSpawn(spawnDat, false);
_allMobs.add(spawnDat.doSpawn());
spawnDat.stopRespawn();
}
else
{
_log.warning("IceFairySirraManager: Data missing in NPC table for ID: "+mobs[i][0]);
}
}
}
catch (Exception e)
{
_log.warning("IceFairySirraManager: Spawns could not be initialized: "+ e);
}
}
public String getHtmlPath(int val)
{
String pom = "";
pom = "32029-" + val;
if (val == 0)
pom = "32029";
String temp = "data/html/default/" + pom + ".htm";
if (!Config.LAZY_CACHE)
{
// If not running lazy cache the file must be in the cache or it doesnt exist
if (HtmCache.getInstance().contains(temp))
return temp;
}
else
{
if (HtmCache.getInstance().isLoadable(temp))
return temp;
}
// If the file is not found, the standard message "I have nothing to say to you" is returned
return "data/html/npcdefault.htm";
}
public void sendHtml(L2NpcInstance npc, L2PcInstance player, String filename)
{
NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId());
html.setFile(player.getCurrentLanguage(), filename);
html.replace("%objectId%", String.valueOf(npc.getObjectId()));
player.sendPacket(html);
player.sendPacket( ActionFailed.STATIC_PACKET );
}
public String onFirstTalk (L2NpcInstance npc, L2PcInstance player)
{
if (player.getQuestState("IceFairySirra") == null)
newQuestState(player);
player.setLastQuestNpcObject(npc.getObjectId());
String filename = "";
if (npc.isBusy())
filename = getHtmlPath(10);
else
filename = getHtmlPath(0);
sendHtml(npc, player, filename);
return null;
}
public String onAdvEvent (String event, L2NpcInstance npc, L2PcInstance player)
{
if (event.equalsIgnoreCase("check_condition"))
{
if (npc.isBusy())//should never happen
return super.onAdvEvent(event, npc, player);
else
{
String filename = "";
if (player.isInParty() && player.getParty().getPartyLeaderOID() == player.getObjectId())
{
if (checkItems(player) == true)
{
startQuestTimer("start",100000,null,player);
_player = player;
destroyItems(player);
player.getInventory().addItem("Scroll",8379,3,player,null);
npc.setBusy(true);
screenMessage(player,"Steward: Please wait a moment.",100000);
filename = getHtmlPath(3);
}
else
{
filename = getHtmlPath(2);
}
}
else
{
filename = getHtmlPath(1);
}
sendHtml(npc, player, filename);
}
}
else if (event.equalsIgnoreCase("start"))
{
if (_freyasZone == null)
{
_log.warning("IceFairySirraManager: Failed to load zone");
cleanUp();
return super.onAdvEvent(event, npc, player);
}
_freyasZone.setZoneEnabled(true);
closeGates();
doSpawns();
startQuestTimer("Party_Port",2000,null,player);
startQuestTimer("End",1802000,null,player);
}
else if (event.equalsIgnoreCase("Party_Port"))
{
teleportInside(player);
screenMessage(player,"Steward: Please restore the Queen's appearance!",10000);
startQuestTimer("30MinutesRemaining",300000,null,player);
}
else if (event.equalsIgnoreCase("30MinutesRemaining"))
{
screenMessage(player,"30 minute(s) are remaining.",10000);
startQuestTimer("20minutesremaining",600000,null,player);
}
else if (event.equalsIgnoreCase("20MinutesRemaining"))
{
screenMessage(player,"20 minute(s) are remaining.",10000);
startQuestTimer("10minutesremaining",600000,null,player);
}
else if (event.equalsIgnoreCase("10MinutesRemaining"))
{
screenMessage(player,"Steward: Waste no time! Please hurry!",10000);
}
else if (event.equalsIgnoreCase("End"))
{
screenMessage(player,"Steward: Was it indeed too much to ask.",10000);
cleanUp();
}
return super.onAdvEvent(event, npc, player);
}
public static void main(String[] args)
{
new IceFairySirra(-1,"IceFairySirra","ai");
}
}
на мою бери без ошибки работает:
User2rwfe: на мою бери без ошибки работает:
а есть еще рб на яве у тебя для базы ??
и ктото мне говорил что в какойто сборке квесты на яве написаны ???
ну парочка есть:)
да гуд пару рб на яве которые нужны были =))
еще бы кто нибудь норм ласт херо реализовалбы на яве под базу =)) наброски есть .
import java.util.ArrayList;
import net.sf.l2j.extensions.listeners.L2ZoneEnterLeaveListener;
import net.sf.l2j.extensions.scripts.Functions;
import net.sf.l2j.extensions.scripts.ScriptFile;
import net.sf.l2j.gameserver.Announcements;
import net.sf.l2j.gameserver.instancemanager.ZoneManager;
import net.sf.l2j.gameserver.model.L2Character;
import net.sf.l2j.gameserver.model.L2Object;
import net.sf.l2j.gameserver.model.L2Playable;
import net.sf.l2j.gameserver.model.L2Player;
import net.sf.l2j.gameserver.model.L2Skill;
import net.sf.l2j.gameserver.model.L2World;
import net.sf.l2j.gameserver.model.L2Zone;
import net.sf.l2j.gameserver.model.L2Zone.ZoneType;
import net.sf.l2j.gameserver.model.instances.L2NpcInstance;
import net.sf.l2j.gameserver.serverpackets.Revive;
import net.sf.l2j.gameserver.serverpackets.SocialAction;
import net.sf.l2j.gameserver.tables.SkillTable;
import net.sf.l2j.util.CharPosition;
import net.sf.l2j.util.Rnd;
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 = 5;
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 void start()
{
if(!((L2Player) self).getPlayerAccess().IsEventGm)
return;
_time_to_start = 5;
_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 + " мин.");
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);
}
public static void prepare()
{
cleanPlayers();
cleanLive();
executeTask("events.lastHero.LastHero", "ressurectPlayers", new Object[0], 5000);
executeTask("events.lastHero.LastHero", "healPlayers", new Object[0], 10000);
executeTask("events.lastHero.LastHero", "saveBackCoords", new Object[0], 15000);
executeTask("events.lastHero.LastHero", "teleportPlayersToColiseum", new Object[0], 20000);
executeTask("events.lastHero.LastHero", "paralyzePlayers", new Object[0], 25000);
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!!! <<<");
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);
}
public static void end()
{
players_list = L2World.getAllPlayers();
executeTask("events.lastHero.LastHero", "ressurectPlayers", new Object[0], 5000);
executeTask("events.lastHero.LastHero", "healPlayers", new Object[0], 10000);
executeTask("events.lastHero.LastHero", "teleportPlayersToSavedCoords", new Object[0], 15000);
}
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)
{
CharPosition pos = Rnd.coordsRandomize(149505, 46719, -3417, 0, 0, 500);
player.teleToLocation(pos.x, pos.y, pos.z);
}
}
}
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;
CharPosition pos = new CharPosition(Integer.parseInt(coords[0]), Integer.parseInt(coords[1]), Integer.parseInt(coords[2]), 0);
player.teleToLocation(pos.x, pos.y, pos.z);
player.setVar("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((short) 4515);
if(player.getPet() != null)
player.getPet().stopEffect((short) 4515);
}
}
}
public static void ressurectPlayers()
{
synchronized (players_list)
{
for(L2Player player : players_list)
if(player != null)
{
player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp());
player.setCurrentCp(player.getMaxCp());
player.restoreExp();
player.broadcastPacket(new SocialAction(player.getObjectId(), 15));
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;
}
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)
((L2Player) killer).addAdena(((L2Player) self).getLevel() * 5000);
}
}
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;
Integer heading = playable.getHeading();
if(heading <= 16384)
playable.teleToLocation(playable.getX() - 50, playable.getY() - 50, playable.getZ());
else if(heading > 16384 && heading <= 32768)
playable.teleToLocation(playable.getX() + 50, playable.getY() - 50, playable.getZ());
else if(heading > 32768 && heading <= 49152)
playable.teleToLocation(playable.getX() + 50, playable.getY() + 50, playable.getZ());
else if(heading > 49152)
playable.teleToLocation(playable.getX() - 50, playable.getY() + 50, playable.getZ());
}
}
}
}
Dudi: на главной странице в новостях был последний переделки вроде нормальный.
Где именно ?? и на яве он ??
_http://la2base.ru/java/dop_java/5747-yevent-lastheropravelnyj_by_zet.html - ссылка на новость
_http://dump.ru/file/4034810 - ссылка на скачку
— 56
Dudi: _http://la2base.ru/java/dop_java/5747-yevent-lastheropravelnyj_by_zet.html - ссылка на новость
_http://dump.ru/file/4034810 - ссылка на скачку
спс но это шлак =))

