Информационная безопасность,
AllCheats.ru
Форум
Реклама на Allcheats.ru
Реклама на Allcheats.ru
Гарант Allcheats.ru
FaQ по порталу
Поиск по форуму
: :
Регистрация Забыл пароль
Allcheats VKontakte


Ядро: почему нпц неубиваемый
Старый 06.12.2009, 00:32   #1 (permalink)
raps вне форума
Освоившийся
 
Аватар для raps

Регистрация: 07.04.2007
Сообщений: 202
Репутация: 5
Ядро: почему нпц неубиваемый

нпц этого типа неуязвим почему то.. когда его бьёш написано отака отражена. вот исходник. сборка l2jserver. по другим дамаг идёт но не умирают а по этому вообще дамаг непроходит

Код:
package net.sf.l2j.gameserver.model.actor.instance;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.logging.Logger;

import net.sf.l2j.L2DatabaseFactory;
import net.sf.l2j.gameserver.Announcements;
import net.sf.l2j.gameserver.ai.CtrlIntention;
import net.sf.l2j.gameserver.datatables.NpcTable;
import net.sf.l2j.gameserver.idfactory.IdFactory;
import net.sf.l2j.gameserver.model.L2Skill;
import net.sf.l2j.gameserver.model.actor.L2Character;
import net.sf.l2j.gameserver.model.actor.L2Npc;
import net.sf.l2j.gameserver.model.entity.FactionMaps;
import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
import net.sf.l2j.gameserver.network.serverpackets.MyTargetSelected;
import net.sf.l2j.gameserver.network.serverpackets.StatusUpdate;
import net.sf.l2j.gameserver.network.serverpackets.ValidateLocation;
import net.sf.l2j.gameserver.templates.chars.L2NpcTemplate;
import net.sf.l2j.gameserver.util.Broadcast;

public class L2TpFlagInstance extends L2Npc
{
    private final static Logger _log = Logger.getLogger(L2FactTeleporterInstance.class.getName());
    
    private int _faction=0;
    private int _occupayable=0;
    private String _title = "";
    private String _flagPlace = "";
    
    public L2TpFlagInstance(int objectId, L2NpcTemplate template)
    {
        super(objectId, template);
    }
    
    public static void spawnFlags()
    {
        Connection con = null;

        try
        {
            con = L2DatabaseFactory.getInstance().getConnection();
            PreparedStatement statement = con.prepareStatement("SELECT * FROM faction_crystals WHERE mapId=?");
            statement.setInt(1, FactionMaps.getMapId());
            ResultSet rset = statement.executeQuery();

            while (rset.next())
            {
                String _titlea = "";
                if (rset.getInt("factionId") == 1)
                    _titlea = "Blue";
                else if (rset.getInt("factionId") == 2)
                    _titlea = "Red";
                
                L2TpFlagInstance flag = new L2TpFlagInstance(IdFactory.getInstance().getNextId(),NpcTable.getInstance().getTemplate(31217));
                flag.setTitle(_titlea);
                flag.setCurrentHpMp(flag.getMaxHp(), flag.getMaxMp());
                flag.setHeading(0);
                flag.setName(rset.getString("flagName"));
                flag.setFlagName(rset.getString("flagName"));
                flag.setFlagFactionId(rset.getInt("factionId"));
                flag.spawnMe(rset.getInt("x"),rset.getInt("y"),rset.getInt("z") + 50);
                if (rset.getInt("factionId") != 0)
                {
                    if (rset.getInt("factionId") == 1)
                        L2FactTeleporterInstance._tpBlueFlags.add(flag);
                    else
                        L2FactTeleporterInstance._tpRedFlags.add(flag);
                    flag.setIsInvul(true);
                    flag.setIsUnoccupayable(1);
                }
            _log.info("Spawned crystal: " + rset.getString("flagName"));
            }

            rset.close();
            statement.close();
        }
        catch (Exception e)
        {
            _log.warning("Kazkas blogai su kristalais faction:" + e);
        }
        finally
        {
            try {con.close();} catch (Exception e){}
        }
        Announcements.getInstance().announceToAll("Spawned faction map: " + FactionMaps.getMapName());
    }
    
    public void setFlagName(String a)
    {
        _flagPlace = a;
    }
    
    public String getFlagName()
    {
        return _flagPlace;
    }
    
    @Override
    public boolean isAttackable()
    {
        return true;
    }

    @Override
    public boolean isAutoAttackable(L2Character attacker)
    {
        return true;
    }
    
    @Override
    public boolean doDie(L2Character killer)
    {
        if (!super.doDie(killer))
            return false;
        if (getFlagFactionId() == 1)
            L2FactTeleporterInstance._tpBlueFlags.remove(this);
        else if (getFlagFactionId() == 2)
            L2FactTeleporterInstance._tpRedFlags.remove(this);
            
        L2PcInstance player = null;
        int _faktjon = 0;
        String _name = "";
        
        if (killer instanceof L2PcInstance)
            player = (L2PcInstance) killer;
        else if (killer instanceof L2SummonInstance)
            player = ((L2SummonInstance) killer).getOwner();
            
        _faktjon = player.getFactionId();
        if (_faktjon == 1)
            _title = "Blue";
        else
            _title = "Red";
        
        L2TpFlagInstance flag = new L2TpFlagInstance(IdFactory.getInstance().getNextId(),NpcTable.getInstance().getTemplate(31217));
        _name = this.getName();
        flag.setTitle(_title);
        flag.setCurrentHpMp(flag.getMaxHp(), flag.getMaxMp());
        flag.setHeading(0);
        flag.setName(_name);
        flag.setFlagName(_name);
        flag.setIsUnoccupayable(0);
        flag.setFlagFactionId(_faktjon);
        flag.spawnMe(this.getX(), this.getY(), this.getZ());
        deleteMe();
        
        if (_faktjon == 1)
            L2FactTeleporterInstance._tpBlueFlags.add(flag);
        else
            L2FactTeleporterInstance._tpRedFlags.add(flag);
        
        Broadcast.sendMessToAllFactionPlayers(_title + " faction member " + player.getName() + " has occupied " + _flagPlace + " crystal.");
        return true;
    }

    @Override
    public void onForcedAttack(L2PcInstance player)
    {
        onAction(player);
    }
    
    public void setIsUnoccupayable(int a)
    {
            _occupayable = a;
    }
    
    public int isUnoccupayable()
    {
        return _occupayable;
    }
    
    @Override
    public void onAction(L2PcInstance player)
    {
        if (player == null || !canTarget(player))
            return;
        
            // Check if the L2PcInstance already target the L2NpcInstance
        if (this != player.getTarget()/* && player.inWorld() == 1*/)
        {
            // Set the target of the L2PcInstance player
            player.setTarget(this);

            // Send a Server->Client packet MyTargetSelected to the L2PcInstance player
            MyTargetSelected my = new MyTargetSelected(getObjectId(), player.getLevel() - getLevel());
            player.sendPacket(my);

            // Send a Server->Client packet StatusUpdate of the L2NpcInstance to the L2PcInstance to update its HP bar
            StatusUpdate su = new StatusUpdate(getObjectId());
            su.addAttribute(StatusUpdate.CUR_HP, (int)getStatus().getCurrentHp() );
            su.addAttribute(StatusUpdate.MAX_HP, getMaxHp() );
            player.sendPacket(su);

            // Send a Server->Client packet ValidateLocation to correct the L2NpcInstance position and heading on the client
            player.sendPacket(new ValidateLocation(this));
        }
        else
        {
            if (isAutoAttackable(player) && Math.abs(player.getZ() - getZ()) < 100)
                player.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, this);
            else
            {
                // Send a Server->Client ActionFailed to the L2PcInstance in order to avoid that the client wait another packet
                player.sendPacket(ActionFailed.STATIC_PACKET);
            }
        }
    }
    
    public int getFlagFactionId()
    {
        return _faction;
    }
    
    public void setFlagFactionId(int i)
    {
        _faction = i;
    }
    
    @Override
    public void reduceCurrentHp(double damage, L2Character attacker, L2Skill skill)
    {
        L2PcInstance plajor = null;
        boolean cord = false;
        if (attacker instanceof L2PcInstance)
            plajor = (L2PcInstance) attacker;
        else if (attacker instanceof L2SummonInstance)
            plajor = ((L2SummonInstance) attacker).getOwner();
            
        if (/*plajor.inWorld() == 1 && */plajor.getFactionId() != getFlagFactionId())
            cord = true;
                
        if (cord)
            super.reduceCurrentHp(damage, attacker, skill);
    }
}
  Ответить с цитированием

Спонсорские ссылки:

Re: Ядро: почему нпц неубиваемый
Старый 06.12.2009, 02:22   #2 (permalink)
raps вне форума
Освоившийся
 
Аватар для raps

Регистрация: 07.04.2007
Сообщений: 202
Репутация: 5
Re: Ядро: почему нпц неубиваемый

поменял
public class L2TpFlagInstance extends L2Npc

дописал template. теперь наноситься дамаг но не умирают.. я на пол пути=))
подскажите что отвечает за гибель нпц? потому что у всех нпц в городе такая фигня.. дамаг есть кила нет=))
  Ответить с цитированием

Re: Ядро: почему нпц неубиваемый
Старый 06.12.2009, 02:42   #3 (permalink)
ceyhun вне форума
Освоившийся

Регистрация: 06.10.2006
Сообщений: 206
Репутация: 4
Re: Ядро: почему нпц неубиваемый

а ты не пробовал создать нпц как гуард? (например гуард годарде)
  Ответить с цитированием

Re: Ядро: почему нпц неубиваемый
Старый 06.12.2009, 03:03   #4 (permalink)
саннекк вне форума
Знаток
 
Аватар для саннекк

Регистрация: 31.08.2007
Адрес: в подвале
Сообщений: 576
Репутация: 0
Re: Ядро: почему нпц неубиваемый

В базе смени класс на класс мобов
  Ответить с цитированием

Re: Ядро: почему нпц неубиваемый
Старый 06.12.2009, 03:45   #5 (permalink)
DOBA вне форума
Знаток
 
Аватар для DOBA

Регистрация: 17.06.2008
Сообщений: 552
Репутация: 95
Re: Ядро: почему нпц неубиваемый

попробуй смени та true
public boolean doDie(L2Character killer)
{
if (!super.doDie(killer))
return false;
if (getFlagFactionId() == 1)
L2FactTeleporterInstance._tpBlueFlags.remove(this) ;
else if (getFlagFactionId() == 2)
L2FactTeleporterInstance._tpRedFlags.remove(this);

L2PcInstance player = null;
int _faktjon = 0;
String _name = "";

if (killer instanceof L2PcInstance)
player = (L2PcInstance) killer;
else if (killer instanceof L2SummonInstance)
player = ((L2SummonInstance) killer).getOwner();

_faktjon = player.getFactionId();
if (_faktjon == 1)
_title = "Blue";
else
_title = "Red";

L2TpFlagInstance flag = new L2TpFlagInstance(IdFactory.getInstance().getNextId (),NpcTable.getInstance().getTemplate(31217));
_name = this.getName();
flag.setTitle(_title);
flag.setCurrentHpMp(flag.getMaxHp(), flag.getMaxMp());
flag.setHeading(0);
flag.setName(_name);
flag.setFlagName(_name);
flag.setIsUnoccupayable(0);
flag.setFlagFactionId(_faktjon);
flag.spawnMe(this.getX(), this.getY(), this.getZ());
deleteMe();

if (_faktjon == 1)
L2FactTeleporterInstance._tpBlueFlags.add(flag);
else
L2FactTeleporterInstance._tpRedFlags.add(flag);

Broadcast.sendMessToAllFactionPlayers(_title + " faction member " + player.getName() + " has occupied " + _flagPlace + " crystal.");
return true;
}

У меня не свалка, у меня организованный нелинейный порядок!
  Ответить с цитированием

Re: Ядро: почему нпц неубиваемый
Старый 06.12.2009, 07:04   #6 (permalink)
raps вне форума
Освоившийся
 
Аватар для raps

Регистрация: 07.04.2007
Сообщений: 202
Репутация: 5
Re: Ядро: почему нпц неубиваемый

спасибо за старание уже сам сделал.. пошёл в обход и написал
public class L2TpFlagInstance extends L2Monster
  Ответить с цитированием
Ответ

Опции темы

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

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




Текущее время: 22:18. Часовой пояс GMT +4.



vBulletin® Перевод: zCarot
Webmoney Здесь находится аттестат нашего WM идентификатора 379330210091