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

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

Закрытая тема
Опции темы
Непрочитано 16.10.2011, 11:33   #1
Изгнанные

Автор темы (Топик Стартер) Белеф

можно говорить спасибо и ставить ++++


PHP код:
package ai;

import bosses.BelethManager;
import l2open.gameserver.ai.DefaultAI;
import l2open.gameserver.model.L2Character;
import l2open.gameserver.model.L2Skill;
import l2open.gameserver.model.L2Skill.SkillType;
import l2open.gameserver.model.instances.L2NpcInstance;
import l2open.gameserver.tables.SkillTable;
import l2open.util.Rnd;
import l2open.util.Util;

/**
 *
 * @author 3JIO
 * AI для белефа и компании
 */
public class Beleth extends DefaultAI {

    private final 
L2Skill Bleed SkillTable.getInstance().getInfo(54951);
    private final 
L2Skill HornOfRising SkillTable.getInstance().getInfo(54971);
    private static final 
L2Skill Fireball SkillTable.getInstance().getInfo(54961);

    public 
Beleth(L2Character actor) {
        
super(actor);
        
AI_TASK_DELAY 1000;
        
AI_TASK_ACTIVE_DELAY 1000;
    }

    @
Override
    
public boolean isGlobalAI() {
        return 
true;
    }

    @
Override
    
protected boolean createNewTask() {
        
L2NpcInstance actor getActor();
        if (
actor == null) {
            return 
true;
        }

        if (!
BelethManager.getZone().checkIfInZone(actor)) {
            
teleportHome(true);
            return 
false;
        }

        
clearTasks();

        
L2Character target;
        if ((
target prepareTarget()) == null) {
            return 
false;
        }

        if (!
BelethManager.getZone().checkIfInZone(target)) {
            
target.removeFromHatelist(actorfalse);
            return 
false;
        }
        if(
Rnd.chance(40) && !actor.isCastingNow() && Util.checkIfInRange(600actortargetfalse))
        {
            
addTaskCast(targetFireball);
        }
        return 
true;
    }

    
/** если видит хилл скил
     * @param skill
     * @param caster
     */
    
@Override
    
protected void onEvtSeeSpell(L2Skill skillL2Character caster) {
        
L2NpcInstance npc getActor();
        if (
npc != null && !npc.isDead() && (npc.getNpcId() == 29118 || npc.getNpcId() == 29119) && !npc.isCastingNow() && skill.getSkillType() == SkillType.HEAL && Rnd.get(100) < 80 && Util.checkIfInRange(600npccasterfalse)) {
            
clearTasks();
            
addTaskCast(casterHornOfRising);
            
//npc.setTarget(caster);
            //npc.doCast(HornOfRising, caster, true);
        
}
    }

    @
Override
    
public void onEvtAttacked(L2Character attackerint damage) {
        
BelethManager.setLastAttackTime();
        if (
getActor().getNpcId() == 29118 || getActor().getNpcId() == 29119) {
            
BelethManager.onAttack(getActor(), attacker);
            return;
        }
        
super.onEvtAttacked(attackerdamage);
    }

    @
Override
    
public void checkAggression(L2Character target) {
        if (
getActor().getNpcId() == 29118 || getActor().getNpcId() == 29119) {
            
BelethManager.onAggroRangeEnter(getActor(), target);
        }
        
super.checkAggression(target);
    }

    @
Override
    
protected void onEvtSpawn() {
        
L2NpcInstance actor getActor();
        if (
actor.getNpcId() == 29118 || actor.getNpcId() == 29119) {
            
actor.setRunning();
            if (
actor.getAroundCharacters(300200).size() > && Rnd.get(100) < 60) {
                
clearTasks();
                
addTaskCast((L2Characteractor.getTarget(), Bleed);
                
//actor.doCast(Bleed, (L2Character) actor.getTarget(), true);
            
}
        }
    }

    @
Override
    
protected boolean maybeMoveToHome() {
        
L2NpcInstance actor getActor();
        if (
actor != null && !BelethManager.getZone().checkIfInZone(actor)) {
            
teleportHome(true);
        }
        return 
false;
    }

PHP код:
package bosses;

import bosses.EpicBossState.State;
import java.util.ArrayList;
import java.util.Date;
import java.util.concurrent.ScheduledFuture;
import l2open.common.ThreadPoolManager;
import l2open.extensions.listeners.L2ZoneEnterLeaveListener;
import l2open.extensions.scripts.Functions;
import l2open.extensions.scripts.ScriptFile;
import l2open.gameserver.ai.CtrlIntention;
import l2open.gameserver.instancemanager.ZoneManager;
import l2open.gameserver.model.L2Character;
import l2open.gameserver.model.L2CommandChannel;
import l2open.gameserver.model.L2Object;
import l2open.gameserver.model.L2Party;
import l2open.gameserver.model.L2Player;
import l2open.gameserver.model.L2Skill;
import l2open.gameserver.model.L2Zone;
import l2open.gameserver.model.L2Zone.ZoneType;
import l2open.gameserver.model.instances.L2DoorInstance;
import l2open.gameserver.model.instances.L2NpcInstance;
import l2open.gameserver.serverpackets.CreatureSay;
import l2open.gameserver.serverpackets.L2GameServerPacket;
import l2open.gameserver.serverpackets.MagicSkillUse;
import l2open.gameserver.serverpackets.SocialAction;
import l2open.gameserver.serverpackets.SpecialCamera;
import l2open.gameserver.serverpackets.StaticObject;
import l2open.gameserver.tables.DoorTable;
import l2open.gameserver.tables.NpcTable;
import l2open.gameserver.tables.SkillTable;
import l2open.util.Location;
import l2open.util.Log;
import l2open.util.Rnd;
import l2open.util.Util;

/**
 *
 * @author 3JIO
 */
public class BelethManager extends Functions implements ScriptFile {

    private static EpicBossState _state;
    private static L2NpcInstance camera;
    private static L2NpcInstance camera2;
    private static L2NpcInstance camera3;
    private static L2NpcInstance camera4;
    private static L2NpcInstance camera6;
    private static L2NpcInstance StoneCoffin;
    private static L2NpcInstance beleth;
    private static L2NpcInstance priest;
    private static L2Zone _zone = ZoneManager.getInstance().getZoneById(ZoneType.epic, 702144, false);
    private static L2Player belethKiller;
    private static boolean debug = true;
    private static boolean movie = false;
    private static boolean attacked = false;
    private static int allowObjectId = 0;
    private static int killed = 0;
    private static ScheduledFuture<?spawnTimer null;
    private static 
ScheduledFuture<?> spawnTask = null;
    private static ScheduledFuture<?sleepTask null;
    private static 
ArrayList<L2NpcInstanceminions = new ArrayList<L2NpcInstance>();
    private static 
ArrayList<Locationloc_to_res = new ArrayList<Location>();
    private static final 
int BELETH 29118;
    private static final 
int BELETH_CLONE 29119;
    private static 
ZoneListener _zoneListener = new ZoneListener();
    private static 
long _lastAttackTime 0;
    private static 
Location beleth_tp_loc = new Location(12695215398, -9454);
    private static final 
L2Skill Bleed SkillTable.getInstance().getInfo(54951);
    private static final 
L2Skill Fireball SkillTable.getInstance().getInfo(54961);
    private static final 
L2Skill Lightening SkillTable.getInstance().getInfo(54991);
    private static 
long respawnInterval 121 60 60 100//респ 121 час

    
public static void init() {
        
_state = new EpicBossState(BELETHtrue);
        
System.out.println("BelethManager: State of Beleth is " _state.getState() + ".");
        
_zone.getListenerEngine().addMethodInvokedListener(_zoneListener);
        
//_zone.getListenerEngine().addMethodInvokedListener((MethodInvokeListener) _zoneListener);
        
if (_state.getState() == State.NOTSPAWN) {
            
System.out.println("BelethManager: Beleth is wait for invaders.");
        } else if (
_state.getState() == State.INTERVAL) {
            
Date dt = new Date(_state.getRespawnDate());
            
System.out.println("BelethManager: Beleth is dead, next respawn date is : " dt.toString());
        }
    }

    public static 
void startSpawnTask() {
        
Log.add("Start Beleth Spawn Task""EpicBoses");
        
clearAll();
        
sleepTask ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(34), debug 180000 300000);
        
spawnTask ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(1), debug 20000 300000);
    }

    public 
void enterToBeleth() {
        
L2Player player getSelfPlayer();
        if (!
checkConditions(player)) {
            return;
        }
        for (
L2Player member player.getParty().getCommandChannel().getMembers()) {
            
member.sendActionFailed();
            
member.teleToLocation(beleth_tp_loc);
            if (
member.getPet() != null) {
                
member.getPet().teleToLocation(beleth_tp_loc);
            }
        }
    }

    
/**
     * @param player
     * @return if player is qualified to start the raid
     */
    
private boolean checkConditions(L2Player player) {
        if (
debug) {
            return 
true;
        }
        if (
_state.getState() == EpicBossState.State.INTERVAL) {
            
player.sendMessage("Beleth is dead");
            return 
false;
        }
        if (
_state.getState() == State.ALIVE) {
            
player.sendMessage("Beleth engaged in battle");
        }
        
L2Party party player.getParty();
        if (
party == null) {
            
player.sendMessage("You are not in a party.");
            return 
false;
        }
        
L2CommandChannel channel party.getCommandChannel();
        if (
channel == null) {
            
player.sendMessage("Your party is not in a command channel.");
            return 
false;
        }
        if ((
channel.getChannelLeader() != player)) {
            
player.sendMessage("Only the leader of the command channel may approach me.");
            return 
false;
        }
        return 
true;
    }

    private static class 
RunEvent implements Runnable {

        private 
int _taskId 0;

        public 
RunEvent(int taskId) {
            
_taskId taskId;
        }

        @
Override
        
public void run() {
            try {
                switch (
_taskId) {
                    case 
1:
                        
movie true;
                        for (
L2Object npc _zone.getInsideObjectsIncludeZ()) {
                            if (
npc instanceof L2NpcInstance) {
                                
npc.deleteMe();
                            }
                        }
                        
_state.setState(State.ALIVE);
                        
_state.update();
                        if (
spawnTask != null) {
                            
spawnTask.cancel(false);
                            
spawnTask null;
                        }
                        
camera spawn(29120, new Location(16323213142, -9357));
                        
camera2 spawn(29121, new Location(16323210741, -9357));
                        
camera3 spawn(29122, new Location(16323213170, -9357));
                        
camera4 spawn(29123, new Location(16323214917, -9356));
                        
sendPacketToInZone(new SpecialCamera(camera.getObjectId(), 40075, -25025000010));
                        
sendPacketToInZone(new SpecialCamera(camera.getObjectId(), 40075, -25025000010));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(2), 300);
                        break;
                    case 
2:
                        
sendPacketToInZone(new SpecialCamera(camera.getObjectId(), 1800, -45, -45500050000010));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(3), 4900);
                        break;
                    case 
3:
                        
sendPacketToInZone(new SpecialCamera(camera.getObjectId(), 2500, -120, -45500050000010));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(4), 4900);
                        break;
                    case 
4:
                        
sendPacketToInZone(new SpecialCamera(camera2.getObjectId(), 2200130001500, -201510));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(5), 1400);
                        break;
                    case 
5:
                        
sendPacketToInZone(new SpecialCamera(camera2.getObjectId(), 230010002000450001010));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(6), 2500);
                        break;
                    case 
6:
                        
L2DoorInstance door DoorTable.getInstance().getDoor(20240001);
                        
door.closeMe();
                        
sendPacketToInZone(new StaticObject(door));
                        
//sendPacketToInZone(new DoorStatusUpdate(door));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(7), 1700);
                        break;
                    case 
7:
                        
sendPacketToInZone(new SpecialCamera(camera4.getObjectId(), 15002100015000010));
                        
sendPacketToInZone(new SpecialCamera(camera4.getObjectId(), 90025505000650001010));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(8), 6000);
                        break;
                    case 
8:
                        
camera6 spawn(29125, new Location(16323214917, -9356));
                        
sendPacketToInZone(new SpecialCamera(camera4.getObjectId(), 90025500150001010));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(9), 1000);
                        break;
                    case 
9:
                        
sendPacketToInZone(new SpecialCamera(camera4.getObjectId(), 1000255070001700002510));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(10), 3000);
                        break;
                    case 
10:
                        
beleth spawn(29118, new Location(16321214211, -9352));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(11), 200);
                        break;
                    case 
11:
                        
sendPacketToInZone(new SocialAction(beleth.getObjectId(), 1));
                        for (
int i 06i++) {
                            
int x = (int) (150 Math.cos(1.046666667) + 16323);
                            
int y = (int) (150 Math.sin(1.046666667) + 213059);
                            
L2NpcInstance minion spawn(29119, new Location(xy, -9357));
                            
minion.decayMe();
                            
minions.add(minion);
                        }
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(12), 6800);
                        break;
                    case 
12:
                        
sendPacketToInZone(new SpecialCamera(beleth.getObjectId(), 0270, -5040000010));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(13), 3500);
                        break;
                    case 
13:
                        
sendPacketToInZone(new SpecialCamera(beleth.getObjectId(), 80027010300060000010));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(14), 5000);
                        break;
                    case 
14:
                        
sendPacketToInZone(new SpecialCamera(camera3.getObjectId(), 10027015050000010));
                        
sendPacketToInZone(new SpecialCamera(camera3.getObjectId(), 10027015050000010));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(15), 100);
                        break;
                    case 
15:
                        
sendPacketToInZone(new SpecialCamera(camera3.getObjectId(), 10027015300060000510));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(16), 1400);
                        break;
                    case 
16:
                        
beleth.teleToLocation(16323213059, -935749152);
                        
beleth.setOverloaded(true);
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(17), 200);
                        break;
                    case 
17:
                        
sendPacketToInZone(new MagicSkillUse(belethbeleth5532120000));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(18), 2000);
                        break;
                    case 
18:
                        
sendPacketToInZone(new SpecialCamera(camera3.getObjectId(), 70027020150080000010));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(19), 6900);
                        break;
                    case 
19:
                        
sendPacketToInZone(new SpecialCamera(camera3.getObjectId(), 402600040000010));
                        for (
L2NpcInstance blth minions) {
                            
blth.spawnMe();
                        }
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(20), 3000);
                        break;
                    case 
20:
                        
sendPacketToInZone(new SpecialCamera(camera3.getObjectId(), 402800040005010));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(21), 3000);
                        break;
                    case 
21:
                        
sendPacketToInZone(new SpecialCamera(camera3.getObjectId(), 52505013000201510));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(22), 1000);
                        break;
                    case 
22:
                        
sendPacketToInZone(new SocialAction(beleth.getObjectId(), 3));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(23), 4000);
                        break;
                    case 
23:
                        
sendPacketToInZone(new MagicSkillUse(belethbeleth5533120000));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(24), 6800);
                        break;
                    case 
24:
                        
beleth.deleteMe();
                        for (
L2NpcInstance bel minions) {
                            
bel.deleteMe();
                        }
                        
minions.clear();
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(25), 1000);
                        break;
                    case 
25:
                        
camera.deleteMe();
                        
camera2.deleteMe();
                        
camera3.deleteMe();
                        
camera4.deleteMe();
                        
movie false;
                        
spawnTimer ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(26), 1000);
                        break;
                    case 
26:
                        if (
spawnTimer != null) {
                            
spawnTimer.cancel(false);
                            
spawnTimer null;
                        }
                        
SpawnBeleths();
                        break;
                    case 
27:
                        
beleth.doDie(belethKiller);
                        if (
sleepTask != null) {
                            
sleepTask.cancel(false);
                            
sleepTask null;
                        }
                        
camera spawn(29122, new Location(16323213170, -9357));
                        
sendPacketToInZone(new SpecialCamera(camera.getObjectId(), 400290250100000010));
                        
sendPacketToInZone(new SpecialCamera(camera.getObjectId(), 400290250100000010));
                        
sendPacketToInZone(new SpecialCamera(camera.getObjectId(), 400110254000100000010));
                        
sendPacketToInZone(new SocialAction(beleth.getObjectId(), 5));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(28), 4000);
                        break;
                    case 
28:
                        
sendPacketToInZone(new SpecialCamera(camera.getObjectId(), 40029525400050000010));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(29), 4500);
                        break;
                    case 
29:
                        
sendPacketToInZone(new SpecialCamera(camera.getObjectId(), 4002951040001100002510));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(30), 9000);
                        break;
                    case 
30:
                        
sendPacketToInZone(new SpecialCamera(camera.getObjectId(), 2509025010000010));
                        
sendPacketToInZone(new SpecialCamera(camera.getObjectId(), 25090250100000010));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(31), 2000);
                        break;
                    case 
31:
                        
priest.spawnMe();
                        
beleth.deleteMe();
                        
camera2 spawn(29121, new Location(14056213170, -9357));
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(32), 3500);
                        break;
                    case 
32:
                        
sendPacketToInZone(new SpecialCamera(camera2.getObjectId(), 80018000400001010));
                        
sendPacketToInZone(new SpecialCamera(camera2.getObjectId(), 80018000400001010));
                        
L2DoorInstance door2 DoorTable.getInstance().getDoor(20240002);
                        
door2.openMe();
                        
sendPacketToInZone(new StaticObject(door2));
                        
//sendPacketToInZone(new DoorStatusUpdate(door2));
                        
DoorTable.getInstance().getDoor(20240003).openMe();
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(33), 4000);
                        break;
                    case 
33:
                        
camera.deleteMe();
                        
camera2.deleteMe();
                        
movie false;
                        break;
                    case 
333:
                        
beleth spawn(29118, new Location(16323213170, -9357));
                        break;
                    case 
34// if beleth and clones not attacked 5 min unspawn and set to not spawned
                        
Log.add("Beleth is fail""EpicBosses");
                        if (
getLastAttackTime() + 300000 System.currentTimeMillis() && _state.getState().equals(State.ALIVE)) {
                            
deleteAll();
                            
clearAll();
                            
_state.setState(State.NOTSPAWN);
                            
_state.update();
                            break;
                        }
                        
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(34), 300000);
                        break;
                    case 
36//respawn clones
                        
if (_state.getState() == State.ALIVE) {
                            
respawnClones();
                        }
                        if (
spawnTimer != null) {
                            
spawnTimer.cancel(false);
                            
spawnTimer null;
                        }
                        
spawnTimer ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(36), 60000);
                }
            } catch (
Exception e) {
                
e.printStackTrace();
            }
        }
    }

    
/**
     * Слушатель входа в зону Белефа

    private static class ZoneListener extends PlayerChangedZonesListener {

    @SuppressWarnings("unchecked")
    @Override
    public ListenerInvocationResult objectEntered(L2Zone zone, L2Object object) {
    if (spawnTask == null && _state.getState() == EpicBossState.State.NOTSPAWN) {
    startSpawnTask();
    }
    return new ListenerInvocationResult(ListenerInvocationResult.Action.CONTINUE);
    }
    }*/
    
private static class ZoneListener extends L2ZoneEnterLeaveListener {
        @
SuppressWarnings("null")
        @
Override
        
public void objectEntered(L2Zone zoneL2Object object) {
            if (
object == null && !object.isPlayable()) {
                return;
            }
            if (
spawnTask == null && _state.getState() == EpicBossState.State.NOTSPAWN) {
                
startSpawnTask();
            }
        }

        @
Override
        
public void objectLeaved(L2Zone zoneL2Object object) {
        }
    }

    public static 
void OnDie(L2Character selfL2Character killer) {
        if (
self == null) {
            return;
        }
        if (
self.isNpc() && self.getNpcId() == BELETH) {
            
//Белеф умер
            
L2Player player killer.getPlayer();
            if (
player.getParty() != null) {
                if (
player.getParty().getCommandChannel() != null) {
                    
belethKiller player.getParty().getCommandChannel().getChannelLeader();
                } else {
                    
belethKiller player.getParty().getPartyLeader();
                }
            } else {
                
belethKiller player;
            }
            
_state.setRespawnDate(debug 100000 respawnInterval);
            
_state.setState(EpicBossState.State.INTERVAL);
            
_state.update();

            
Log.add("Beleth died""EpicBosses");
            
deleteAll();
            
self.deleteMe();
            
movie true;
            
beleth spawn(BELETH, new Location(16323213170, -9357));
            
beleth.setIsInvul(true);
            
beleth.setImobilised(true);
            
priest spawn(29128, new Location(beleth.getX(), beleth.getY(), beleth.getZ()));
            
priest.decayMe();
            
StoneCoffin spawn(32470, new Location(12470215607, -9381));
            
ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(27), 1000);
        } else if (
self.isNpc() && self.getNpcId() == BELETH_CLONE) {
            
loc_to_res.add(((L2NpcInstanceself).getSpawnedLoc());
            
clone_killed++;
            
//Умер клон белефа
            
if (self.getObjectId() == allowObjectId) {
                
minions.remove((L2NpcInstanceself);
                
killed++;
                if (
killed >= 5) {
                    
deleteAll();
                    
spawnTimer ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(333), 60000);
                } else {
                    
allowObjectId minions.get(Rnd.get(minions.size() - 1)).getObjectId();
                    
attacked false;
                }
                } else if (
spawnTimer == null) {
                  
spawnTimer ThreadPoolManager.getInstance().scheduleGeneral(new RunEvent(36), 60000);
            } else {
                
ThreadPoolManager.getInstance().scheduleGeneral(new cloneResp(((L2NpcInstanceself).getSpawnedLoc()), 60000);
                
minions.remove((L2NpcInstanceself);
            }
            
self.abortCast(true);
            
self.setTarget(null);
            
self.deleteMe();
        }
    }

    private static class 
cloneResp implements Runnable {

        private 
Location loc;

        public 
cloneResp(Location _loc) {
            
loc _loc;
        }

        @
Override
        
public void run() {
            if (
_state.getState() == State.ALIVE) {
                
L2NpcInstance npc spawn(BELETH_CLONEloc);
                
minions.add(npc);
            }
        }
    }
    private static 
int clone_killed 0;

    private static 
void respawnClones() {
        
System.out.println("try respawn beleth clones");
        
clone_killed 0;
        for (
Location loc loc_to_res) {
            
L2NpcInstance npc spawn(BELETH_CLONEloc);
            
minions.add(npc);
        }
        
loc_to_res.clear();
    }

    public static 
void onAttack(L2NpcInstance npcL2Character attacker) {

        if (
npc.getObjectId() == allowObjectId && !attacked) {
            
attacked true;
            
L2NpcInstance fakeBeleth null;
            for (
L2NpcInstance tmp minions) {
                if (
tmp.getObjectId() == allowObjectId) {
                    
fakeBeleth tmp;
                }
            }
            if (
fakeBeleth != null) {
                
sendPacketToInZone(new CreatureSay(fakeBeleth.getObjectId(), 0fakeBeleth.getName(), "You all die"));
            }
            if (
Rnd.chance(40)) {
                return;
            }

            final 
double distance npc.getDistance(attacker);
            if (
distance 500 || Rnd.chance(80)) {
                for (
L2NpcInstance blt minions) {
                    if (
blt != null && !blt.isDead() && Util.checkIfInRange(900bltattackerfalse) && !blt.isCastingNow()) {
                        
blt.setTarget(attacker);
                        
blt.doCast(Fireballattackertrue);
                    }
                }
                if (
beleth != null && !beleth.isDead() && Util.checkIfInRange(900belethattackerfalse) && !beleth.isCastingNow()) {
                    
beleth.setTarget(attacker);
                    
beleth.doCast(Fireballattackertrue);
                }
            } else if (!
npc.isDead() && !npc.isCastingNow()) {
                if (
npc.getAroundCharacters(200200).size() > 2) {
                    
npc.doCast(Lighteningattackertrue);
                    return;
                }
                
npc.clearAggroList(false);
            }
        } else {
            if (!
npc.isDead() && !npc.isCastingNow() && Util.checkIfInRange(900npcattackerfalse)) {
                
npc.setTarget(attacker);
                
npc.doCast(Fireballattackertrue);
            }
        }
    }

    public static 
void onAggroRangeEnter(L2NpcInstance actorL2Character target) {
        if (
actor == null || actor.isCastingNow()) {
            return;
        }
        if (
Rnd.get(100) < 40) {
            if (
actor.getAroundCharacters(200200).size() > 2) {
                
actor.doCast(Bleedtargettrue);
                return;
            }
        }
        if (
Util.checkIfInRange(900actortargetfalse)) {
            
actor.setTarget(target);
            
actor.doCast(Fireballtargettrue);
        }
    }

    
/** Спавнит клонов белефа*/
    
private static void SpawnBeleths() {
        
int a 0;
        
L2NpcInstance npc;
        for (
int i 016i++) {
            
a++;
            
int x = (int) (650 Math.cos(0.39) + 16323);
            
int y = (int) (650 Math.sin(0.39) + 213170);
            
npc spawn(BELETH_CLONE, new Location(xy, -9357));
            
minions.add(npc);
            if (
>= 2) {
                
npc.setOverloaded(true);
                
0;
            }
        }
        
int[] xm = new int[16];
        
int[] ym = new int[16];
        for (
int i 04i++) {
            
xm[i] = (int) (1700 Math.cos(1.57 0.78) + 16323);
            
ym[i] = (int) (1700 Math.sin(1.57 0.78) + 213170);
            
npc spawn(BELETH_CLONE, new Location(xm[i], ym[i], -9357));
            
npc.setOverloaded(true);
            
minions.add(npc);
        }
        
xm[4] = (xm[0] + xm[1]) / 2;
        
ym[4] = (ym[0] + ym[1]) / 2;
        
npc spawn(BELETH_CLONE, new Location(xm[4], ym[4], -9357));
        
npc.setOverloaded(true);
        
minions.add(npc);
        
xm[5] = (xm[1] + xm[2]) / 2;
        
ym[5] = (ym[1] + ym[2]) / 2;
        
npc spawn(BELETH_CLONE, new Location(xm[5], ym[5], -9357));
        
npc.setOverloaded(true);
        
minions.add(npc);
        
xm[6] = (xm[2] + xm[3]) / 2;
        
ym[6] = (ym[2] + ym[3]) / 2;
        
npc spawn(BELETH_CLONE, new Location(xm[6], ym[6], -9357));
        
npc.setOverloaded(true);
        
minions.add(npc);
        
xm[7] = (xm[3] + xm[0]) / 2;
        
ym[7] = (ym[3] + ym[0]) / 2;
        
npc spawn(BELETH_CLONE, new Location(xm[7], ym[7], -9357));
        
npc.setOverloaded(true);
        
minions.add(npc);
        
xm[8] = (xm[0] + xm[4]) / 2;
        
ym[8] = (ym[0] + ym[4]) / 2;
        
minions.add(spawn(BELETH_CLONE, new Location(xm[8], ym[8], -9357)));
        
xm[9] = (xm[4] + xm[1]) / 2;
        
ym[9] = (ym[4] + ym[1]) / 2;
        
minions.add(spawn(BELETH_CLONE, new Location(xm[9], ym[9], -9357)));
        
xm[10] = (xm[1] + xm[5]) / 2;
        
ym[10] = (ym[1] + ym[5]) / 2;
        
minions.add(spawn(BELETH_CLONE, new Location(xm[10], ym[10], -9357)));
        
xm[11] = (xm[5] + xm[2]) / 2;
        
ym[11] = (ym[5] + ym[2]) / 2;
        
minions.add(spawn(BELETH_CLONE, new Location(xm[11], ym[11], -9357)));
        
xm[12] = (xm[2] + xm[6]) / 2;
        
ym[12] = (ym[2] + ym[6]) / 2;
        
minions.add(spawn(BELETH_CLONE, new Location(xm[12], ym[12], -9357)));
        
xm[13] = (xm[6] + xm[3]) / 2;
        
ym[13] = (ym[6] + ym[3]) / 2;
        
minions.add(spawn(BELETH_CLONE, new Location(xm[13], ym[13], -9357)));
        
xm[14] = (xm[3] + xm[7]) / 2;
        
ym[14] = (ym[3] + ym[7]) / 2;
        
minions.add(spawn(BELETH_CLONE, new Location(xm[14], ym[14], -9357)));
        
xm[15] = (xm[7] + xm[0]) / 2;
        
ym[15] = (ym[7] + ym[0]) / 2;
        
minions.add(spawn(BELETH_CLONE, new Location(xm[15], ym[15], -9357)));
        
allowObjectId minions.get(Rnd.get(minions.size() - 1)).getObjectId();
        
attacked false;
    }

    private static 
L2NpcInstance spawn(int npcIdLocation loc) {
        try {
            
L2NpcInstance npc NpcTable.getTemplate(npcId).getNewInstance();
            
npc.setSpawnedLoc(loc.correctGeoZ());
            
npc.onSpawn();
            
npc.getSpawn().stopRespawn();
            
npc.spawnMe(npc.getSpawnedLoc());
            return 
npc;
        } catch (
Exception e) {
            
e.printStackTrace();
        }
        return 
null;
    }

    public static 
void setLastAttackTime() {
        
System.out.println("omg beleth or his clone attacked");
        
_lastAttackTime System.currentTimeMillis();
    }

    public static 
long getLastAttackTime() {
        return 
_lastAttackTime;
    }

    public static 
int getAllowObjectId() {
        return 
allowObjectId;
    }

    private static 
void sendPacketToInZone(L2GameServerPacket packet) {
        for (
L2Player player _zone.getInsidePlayers()) {
            
player.sendPacket(packet);
        }
    }

    
/** удаляет всех клонов */
    
private static void deleteAll() {
        if (
minions != null && !minions.isEmpty()) {
            for (
L2NpcInstance npc minions) {
                if (
npc == null || npc.isDead()) {
                    continue;
                }
                
npc.sendActionFailed();
                
npc.setTarget(null);
                
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
                
npc.deleteMe();
            }
        }
        
minions.clear();
        
allowObjectId 0;
        
attacked false;
    }

    
//чистим все перед входом к белефу
    //на всякий случай
    
private static void clearAll() {
        for (
L2Object obj _zone.getInsideObjectsIncludeZ()) {
            if (
obj instanceof L2NpcInstance) {
                
obj.deleteMe();
                
obj null;
            }
        }
        
killed 0;
        
allowObjectId 0;
        
belethKiller null;
        
movie false;
    }

    public static 
L2Zone getZone() {
        return 
_zone;
    }

    @
Override
    
public void onLoad() {
        
init();
    }

    @
Override
    
public void onReload() {
        
_zone.getListenerEngine().removeMethodInvokedListener(_zoneListener);
    }

    @
Override
    
public void onShutdown() {
    }
}
PHP код:
<zone id="702144" name="[LairOfBeleth]" type="epic">
        <
shape>
            <
coords loc="17139 208772 -10000 -5000" />
            <
coords loc="15530 208748 -10000 -5000" />
            <
coords loc="14243 212199 -10000 -5000" />
            <
coords loc="12349 213004 -10000 -5000" />
            <
coords loc="11637 215088 -10000 -5000" />
            <
coords loc="11628 216101 -10000 -5000" />
            <
coords loc="11952 216445 -10000 -5000" />
            <
coords loc="12967 216450 -10000 -5000" />
            <
coords loc="15021 214833 -10000 -5000" />
            <
coords loc="15450 215287 -10000 -5000" />
            <
coords loc="15435 216243 -10000 -5000" />
            <
coords loc="15661 216701 -10000 -5000" />
            <
coords loc="16319 216691 -10000 -5000" />
            <
coords loc="16998 216696 -10000 -5000" />
            <
coords loc="17289 215186 -10000 -5000" />
            <
coords loc="18368 214068 -10000 -5000" />
            <
coords loc="18432 212343 -10000 -5000" />
            <
coords loc="17288 211074 -10000 -5000" />
        </
shape>
    </
zone
Добавлено через 5 часов 24 минуты
выложил свою работу может кому пригодиться

Последний раз редактировалось 3JIO; 16.10.2011 в 16:58. Причина: Добавлено сообщение
3JIO вне форума Отправить сообщение для 3JIO с помощью ICQ Отправить сообщение для 3JIO с помощью Skype™
Сказали спасибо:
Непрочитано 18.10.2011, 10:16   #2
Аватар для Снежок
Пользователь

По умолчанию Re: Белеф

Свою работу а вот такое для чего стирать было ??

/**
*
* @author Tsunamikus
* AI для белефа и компании
*/
Снежок вне форума
Сказали спасибо:
Непрочитано 18.10.2011, 14:01   #3

По умолчанию Re: Белеф

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

Добавлено через 7 минут
А вот и скрины.
http://s006.radikal.ru/i215/1110/22/7ea5f9da965c.jpg
http://s017.radikal.ru/i420/1110/08/11b868820bad.jpg
http://s017.radikal.ru/i431/1110/a1/a50a5ef5d45d.jpg
http://s017.radikal.ru/i404/1110/36/657918db9c8e.jpg
http://s59.radikal.ru/i164/1110/c1/c2105ae35c5c.jpg
http://s002.radikal.ru/i200/1110/cd/7bb086dd9a14.jpg
http://s017.radikal.ru/i418/1110/09/795a9852ef32.jpg

Добавлено через 10 минут
Смотрим число на скринах когда этот белеф написал автор.
Попрошу модератора за присвоение чужого труда добавить ему какой небудь статус.
Все дружно ставим - в репутацию 3JIO.
__________________

Последний раз редактировалось Mangol; 18.10.2011 в 14:16. Причина: Добавлено сообщение
Mangol вне форума Отправить сообщение для Mangol с помощью ICQ
Сказали спасибо:
Непрочитано 18.10.2011, 15:55   #4
Аватар для Ro_0TT
Супергерой

По умолчанию Re: Белеф

http://forum.zone-game.info/showthread.php?p=124075
это уже не первый раз. В баню этого пипла.
__________________
Ищу работу: Java-разработчик Skype: ro_0tt
Ro_0TT вне форума Отправить сообщение для Ro_0TT с помощью ICQ Отправить сообщение для Ro_0TT с помощью Skype™
Сказали спасибо:
Закрытая тема


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

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

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

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


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

Вверх