Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Lineage II (https://forum.zone-game.info/forumdisplay.php?f=34)
-   -   Парс итемов (https://forum.zone-game.info/showthread.php?t=28332)

kloni1 18.04.2013 15:52

Парс итемов
 
Помогите пожалуйста столкнулся со следующей проблемой. Хотел сделать что бы скилы к итемам были привязаны как у GodWorld
PHP код:

<set name="item_skill" value="13062-2"/> 

Добавил код в ItemTemplate:
PHP код:


String skills 
set.getString("item_skill"null);
        if(
skills != null)
        {
            
String arr[] = skills.split(";");
            
len arr.length;

            for(
int i 0leni++)
            {
                
String aSkillsSplit arr[i];
                
                
int id;
                
int level;
                
                
String ngt[] = aSkillsSplit.split("-");
                if (
ngt.length == 2)
                {
                
                    
id Integer.parseInt(ngt[0]);
                    
level Integer.parseInt(ngt[1]);
                
                    
Skill skill SkillTable.getInstance().getInfo(idlevel);
                
                    
_skills ArrayUtils.add(_skillsskill);
                }
            }
        } 

Если прописан один скилл как показано выше все нормально. Но если прописать два скила

PHP код:

<set name="item_skill" value="13062-2;3566-9"/> 

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

PHP код:

ERROR scripts.ScriptsScriptsFailed running handler.items.ItemSkills.onLoad()
java.lang.NullPointerException
    at handler
.items.ItemSkills.<init>(ItemSkills.java:30)
    
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    
at java.lang.reflect.Constructor.newInstance(Unknown Source)
    
at java.lang.Class.newInstance0(Unknown Source)
    
at java.lang.Class.newInstance(Unknown Source)
    
at org.mmocore.gameserver.scripts.Scripts.init(Scripts.java:95)
    
at org.mmocore.gameserver.GameServer.<init>(GameServer.java:153)
    
at org.mmocore.gameserver.GameServer.main(GameServer.java:307

При попытке одеть итем с двумя прописанными скилами гс выдает ошибку

PHP код:

ERROR clientpackets.L2GameClientPacketClientIN_GAME IP127.0.0.1 Accountadmin Player Sigel[268487687] - Failed running: [CUseItem Server Version: ${build.revision}
java.lang.NullPointerException
    at org
.mmocore.gameserver.model.items.listeners.ItemSkillsListener.onEquip(ItemSkillsListener.java:86)
    
at org.mmocore.gameserver.model.items.Inventory$InventoryListenerList.onEquip(Inventory.java:65)
    
at org.mmocore.gameserver.model.items.Inventory.onEquip(Inventory.java:175)
    
at org.mmocore.gameserver.model.items.PcInventory.onEquip(PcInventory.java:360)
    
at org.mmocore.gameserver.model.items.Inventory.setPaperdollItem(Inventory.java:296)
    
at org.mmocore.gameserver.model.items.Inventory.equipItem(Inventory.java:459)
    
at handler.items.EquipableItem.useItem(EquipableItem.java:101)
    
at org.mmocore.gameserver.network.clientpackets.UseItem.runImpl(UseItem.java:95)
    
at org.mmocore.gameserver.network.clientpackets.L2GameClientPacket.run(L2GameClientPacket.java:49)
    
at org.mmocore.commons.net.nio.impl.MMOExecutableQueue.run(MMOExecutableQueue.java:39)
    
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    
at java.lang.Thread.run(Unknown Source

А в игре персонаж как бы одел этот итем но внешне он показывается но иконки в инвертаре нету. За основу брал исходы Rebellion Tauti.

bloodshed 18.04.2013 16:19

Re: Парс итемов
 
Ну смотрите что у вас тут: at handler.items.ItemSkills.<init>(ItemSkills.java:30 )

kloni1 18.04.2013 16:38

Re: Парс итемов
 
PHP код:

package handler.items;

import gnu.trove.set.hash.TIntHashSet;

import org.mmocore.gameserver.data.xml.holder.ItemHolder;
import org.mmocore.gameserver.model.Creature;
import org.mmocore.gameserver.model.Playable;
import org.mmocore.gameserver.model.Player;
import org.mmocore.gameserver.model.Skill;
import org.mmocore.gameserver.model.items.ItemInstance;
import org.mmocore.gameserver.templates.item.ItemTemplate;

/**
 * @author VISTALL
 * @date 7:34/17.03.2011
 */
public class ItemSkills extends ScriptItemHandler
{
    private 
int[] _itemIds;

    public 
ItemSkills()
    {
        
TIntHashSet set = new TIntHashSet();
        for(
ItemTemplate template ItemHolder.getInstance().getAllTemplates())
        {
            if(
template == null)
                continue;

            for(
Skill skill template.getAttachedSkills())
                if(
skill.isHandler())
                    
set.add(template.getItemId());
        }
        
_itemIds set.toArray();
    }

    @
Override
    
public boolean useItem(Playable playableItemInstance itemboolean ctrl)
    {
        
Player player;
        if(
playable.isPlayer())
            
player = (Playerplayable;
        else if(
playable.isPet())
            
player playable.getPlayer();
        else
            return 
false;

        
Skill[] skills item.getTemplate().getAttachedSkills();

        for(
int i 0skills.lengthi++)
        {
            
Skill skill skills[i];
            
Creature aimingTarget skill.getAimingTarget(playerplayer.getTarget());
            if(
skill.checkCondition(playeraimingTargetctrlfalsetrue))
                
player.getAI().Cast(skillaimingTargetctrlfalse);
            else if(
== 0//FIXME [VISTALL] всегда первый скил идет вместо конда?
                
return false;
        }
        return 
true;
    }

    @
Override
    
public int[] getItemIds()
    {
        return 
_itemIds;
    }


PHP код:

if(skill.isHandler()) 


KID 18.04.2013 17:28

Re: Парс итемов
 
Если ошибка в строке с
Код:

if(skill.isHandler())
то проблема в том, что на оружие вы указали несуществующий скилл

kloni1 18.04.2013 19:06

Re: Парс итемов
 
Спасибо за помощь работает :)


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

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot