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

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

Ответ
Опции темы
Непрочитано 18.04.2013, 15:52   #1
Аватар для kloni1
Пользователь

Автор темы (Топик Стартер) Парс итемов

Помогите пожалуйста столкнулся со следующей проблемой. Хотел сделать что бы скилы к итемам были привязаны как у 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.
__________________
Помог не забудь "Спасибо"
kloni1 вне форума Отправить сообщение для kloni1 с помощью ICQ Ответить с цитированием
Непрочитано 18.04.2013, 16:19   #2
Аватар для bloodshed
Герой

По умолчанию Re: Парс итемов

Ну смотрите что у вас тут: at handler.items.ItemSkills.<init>(ItemSkills.java:30 )
__________________
bloodshed вне форума Отправить сообщение для bloodshed с помощью ICQ Отправить сообщение для bloodshed с помощью Skype™ Ответить с цитированием
Непрочитано 18.04.2013, 16:38   #3
Аватар для kloni1
Пользователь

Автор темы (Топик Стартер) 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()) 
__________________
Помог не забудь "Спасибо"
kloni1 вне форума Отправить сообщение для kloni1 с помощью ICQ Ответить с цитированием
Непрочитано 18.04.2013, 17:28   #4
Аватар для KID
Пользователь

По умолчанию Re: Парс итемов

Если ошибка в строке с
Код:
if(skill.isHandler())
то проблема в том, что на оружие вы указали несуществующий скилл
KID вне форума Отправить сообщение для KID с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 18.04.2013, 19:06   #5
Аватар для kloni1
Пользователь

Автор темы (Топик Стартер) Re: Парс итемов

Спасибо за помощь работает
__________________
Помог не забудь "Спасибо"
kloni1 вне форума Отправить сообщение для kloni1 с помощью ICQ Ответить с цитированием
Ответ


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Спавн итемов finfan Работа со скриптами 3 31.01.2013 22:47
Трабл с добавлением итемов в клиент MrKilmen Игровой клиент 11 28.07.2012 09:40
Дроп итемов the_snake Архив 1 30.12.2010 16:28
Продажа итемов kolovratt Серверная часть 2 15.06.2010 13:09
Дроп Кв. итемов Slovyan Архив 1 27.04.2010 12:45


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

Вверх