Счетчик смерти

Die

Прославленный
Проверенный
Старожил I степени
Сообщения
470
Розыгрыши
0
Решения
1
Репутация
604
Реакции
217
Баллы
1 438
Хроники
  1. Chaotic Throne: High Five
Исходники
Присутствуют
Сборка
jts
Выручайте ребят, мозги уже совсем не работают... Сделал проверку => дать +1 к счетчику PK после того как убили, но не могу далее сообразить - как добавить в исключение монстров и NPC, ведь я уверен что будут ошибки после этого...
Код:
Player target = (Player) killer.getTarget();
        if (killer instanceof Player)
            target.setPkKills(target.getPkKills() + 1); // Счетчик смерти
 
Выручайте ребят, мозги уже совсем не работают... Сделал проверку => дать +1 к счетчику PK после того как убили, но не могу далее сообразить - как добавить в исключение монстров и NPC, ведь я уверен что будут ошибки после этого...
Код:
Player target = (Player) killer.getTarget();
        if (killer instanceof Player)
            target.setPkKills(target.getPkKills() + 1); // Счетчик смерти
:) killer какой класс? и какие в нем методы?
и аргументы метода не мешали б.
 
:) killer какой класс? и какие в нем методы?
и аргументы метода не мешали б.
Код:
    @Override
    protected void onDeath(final Creature killer)
    {
        // Check for active charm of luck for death penalty
        getDeathPenalty().checkCharmOfLuck();
        
        if (isInStoreMode())
        {
            setPrivateStoreType(Player.STORE_PRIVATE_NONE);
        }
        if (isProcessingRequest())
        {
            final Request request = getRequest();
            if (isInTrade())
            {
                final Player partner = request.getOtherPlayer(this);
                sendPacket(SendTradeDone.FAIL);
                partner.sendPacket(SendTradeDone.FAIL);
            }
            request.cancel();
        }
        // cubicdata
        deleteCubics();
        deleteAgathion();
        
        boolean checkPvp = true;
        if (ServerConfig.ALLOW_CURSED_WEAPONS)
        {
            if (isCursedWeaponEquipped())
            {
                CursedWeaponsManager.getInstance().dropPlayer(this);
                checkPvp = false;
            }
            else if (killer != null && killer.isPlayer() && killer.isCursedWeaponEquipped())
            {
                CursedWeaponsManager.getInstance().increaseKills(((Player) killer).getCursedWeaponEquippedId());
                checkPvp = false;
            }
        }
        
        if (checkPvp)
        {
            doPKPVPManage(killer);
            
            altDeathPenalty(killer);
        }
        
        // And in the end of process notify death penalty that owner died :)
        getDeathPenalty().notifyDead(killer);
        
        setIncreasedForce(0);
        
        if (isInParty() && getParty().isInReflection() && getParty().getReflection() instanceof DimensionalRift)
        {
            ((DimensionalRift) getParty().getReflection()).memberDead(this);
        }
        
        stopWaterTask();
        stopMountFeedTask();
        
        if (!isSalvation() && isOnSiegeField() && isCharmOfCourage())
        {
            ask(new ConfirmDlg(SystemMsg.YOUR_CHARM_OF_COURAGE_IS_TRYING_TO_RESURRECT_YOU, 60000), new ReviveAnswerListener(this, 100, false, 60000));
            setCharmOfCourage(false);
        }
        
        if (AllSettingsConfig.AltKillAnnounce && killer != null && killer.isPlayer())
            AnnouncementUtils.announceToAll(killer.getName() + " убил игрока " + getName() + "!");
        
        Player target = (Player) killer.getTarget();
        if (killer instanceof Player)
            target.setPkKills(target.getPkKills() + 1); // Счетчик смерти
        
        super.onDeath(killer);
    }
 
Выручайте ребят, мозги уже совсем не работают... Сделал проверку => дать +1 к счетчику PK после того как убили, но не могу далее сообразить - как добавить в исключение монстров и NPC, ведь я уверен что будут ошибки после этого...
Код:
Player target = (Player) killer.getTarget();
        if (killer instanceof Player)
            target.setPkKills(target.getPkKills() + 1); // Счетчик смерти
непонятно почему ты убитому пк-очки добавляешь

а так, просто делай проверки типа таких

Код:
GameObject target = killer.getTarget();
if (target != null && target.isPlayer() && killer.isPlayer())
    killer.setPkKills(killer.getPkKills() + 1);
если кроме игроков надо учитывать так же и суммонов/петов, то вместо isPlayer() можно проверять на isPlayable() или же проверять наличие овнера-игрока у объекта через getPlayer() (для игрока это будет он сам, а для суммонов/петов - их хозяин)
 
Java:
if(killer.isPlayer())
{
    Player activeChar  = killer.getPlayer();
    activeChar.setPkKills(activeChar.getPkKills()+1);
}

учет сумонна и игрока
Java:
Player activeChar  = killer.getPlayer();
if(activeChar!=null)
{
    activeChar.setPkKills(activeChar.getPkKills()+1);
}
 
  • Мне нравится
Реакции: Die
Назад
Сверху Снизу