Переписать скрипт

Grekk

Выдающийся
Участник
Старожил I степени
Сообщения
247
Розыгрыши
0
Репутация
85
Реакции
237
Баллы
1 395
Вообщем паримся тут с друганом:)
Переписать скрипт с pwsoft под l2jlovely, в общем мы уже сократили ошибки до 7 штук:Run: и дальше у нас наступил полный стопор, по скольку куда рыть дальше вообще не понимаем, уже вскрыли ядра, искали методы по поиску, но просто не можем понять.....
Люди добрые подскажите что делать дальше по скольку в джаве разбираться начали не давно и пока путнем не в курили что и как:Brushing:
скрипт находиться по пути I:\project\server\game\data\scripts\custom\items\DonateScroll.java
Вот сам наш чудо скрипт:Monk:
Лог ошибки самого скрипта
Всем спасибки:Mlfy:
 
Последнее редактирование модератором:
Запрещено публиковать исходный код без BB-кода — CODE.
 
Запрещено публиковать исходный код без BB-кода — CODE.
скажите теги пожалуйста по скольку в панельки не чего такого не нашел.

Сам чудо скрипт.

package custom.items;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ScheduledFuture;

import ru.catssoftware.gameserver.datatables.SkillTable;
import ru.catssoftware.gameserver.model.L2ItemInstance;
import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance;
import ru.catssoftware.gameserver.model.actor.instance.L2PlayableInstance;
import ru.catssoftware.gameserver.network.serverpackets.MagicSkillUse;

import ru.catssoftware.gameserver.handler.ItemHandler;
import ru.catssoftware.gameserver.handler.IItemHandler;

import javolution.util.FastList;
import javolution.util.FastMap;

public class DonateScrolls implements IItemHandler
{
private final static FastMap<Integer, Integer[]> SCROLLS = new FastMap<Integer, Integer[]>().shared("DonateScrolls.SCROLLS");
private static int[] ITEM_IDS = null;

public DonateScrolls()
{
/**шаблон
**SCROLLS.put(итем_ид, new Integer[] { ид_баффа, уровень_баффа, ид_скилла_анимации, продолжительность_анимации(мс.)), кушать_скролл(1 да, 0 нет)) });
**/
SCROLLS.put(9843, new Integer[] { 9959, 1, 2036, 1, 1 });
SCROLLS.put(4356, new Integer[] { 805, 1, 2036, 1, 1 });
SCROLLS.put(4355, new Integer[] { 806, 1, 2036, 1, 1 });
SCROLLS.put(4357, new Integer[] { 807, 1, 2036, 1, 1 });
SCROLLS.put(9996, new Integer[] { 819, 1, 2036, 1, 1 });
SCROLLS.put(9997, new Integer[] { 820, 1, 2036, 1, 1 });
SCROLLS.put(9998, new Integer[] { 821, 1, 2036, 1, 1 });
SCROLLS.put(9999, new Integer[] { 822, 1, 2036, 1, 1 });
SCROLLS.put(4361, new Integer[] { 835, 1, 2031, 1, 0 });

//
Integer[] tmp_ids = (Integer[]) SCROLLS.keySet().toArray(new Integer[SCROLLS.size()]);
ITEM_IDS = toIntArray(tmp_ids);
tmp_ids = null;
ItemHandler.getInstance().registerItemHandler(this);
}

public static void main (String... arguments )
{
new DonateScrolls();
}

public void useItem(L2PlayableInstance playable, L2ItemInstance item)
{
if (!playable.getPlayer())
return;

L2PcInstance player = (L2PcInstance) playable;
if (player.isAllSkillsDisabled())
{
player.sendActionFailed();
return;
}

if (player.isInOlympiadMode())
{
player.sendPacket(Static.THIS_ITEM_IS_NOT_AVAILABLE_FOR_THE_OLYMPIAD_EVENT);
player.sendActionFailed();
return;
}

Integer[] data = SCROLLS.get(item.getItemId());
if(data != null)
{
player.stopSkillEffects(data[0]);
SkillTable.getInstance().getInfo(data[0], data[1]).getEffects(player, player);
player.broadcastPacket(new MagicSkillUse(player, player, data[2], 1, data[3], 0));
if (data[4] == 1)
player.destroyItem("Consume", item.getObjectId(), 1, null, false);
}
}

private int[] toIntArray(Integer[] arr)
{
int[] ret = new int[arr.length];
int i = 0;
for (Integer e : arr)
ret[i++] = e.intValue();
return ret;
}

public int[] getItemIds()
{
return ITEM_IDS;
}
}

ошибки геймсервера
===========================================-[ Events/Script/CoreScript/Engine ]
[INFO 08:36:36]: Script Engine Manager: loaded 48 script(s) form corequests.jar
[INFO 08:36:38]: NpcBufferSkillIdsTable: Loaded 1 buffers and 140 skills.
incorrect classpath: ./extensions/*
----------
1. ERROR in \DonateScrolls.java (at line 22)
public class DonateScrolls implements IItemHandler
^^^^^^^^^^^^^
The type DonateScrolls must implement the inherited abstract method IItemHandler
.useItem(L2PlayableInstance, L2ItemInstance, boolean)
----------
2. ERROR in \DonateScrolls.java (at line 24)
private final static FastMap<Integer, Integer[]> SCROLLS = new FastMap<I
nteger, Integer[]>().shared("DonateScrolls.SCROLLS");

^^^^^^
The method shared() in the type FastMap<Integer,Integer[]> is not applicable for
the arguments (String)
----------
3. ERROR in \DonateScrolls.java (at line 56)
if (!playable.playerId())
^^^^^^^^
The method playerId() is undefined for the type L2PlayableInstance
----------
4. ERROR in \DonateScrolls.java (at line 62)
player.sendActionFailed();
^^^^^^^^^^^^^^^^
The method sendActionFailed() is undefined for the type L2PcInstance
----------
5. ERROR in \DonateScrolls.java (at line 68)
player.sendPacket(Static.THIS_ITEM_IS_NOT_AVAILABLE_FOR_THE_OLYMPIAD_EVE
NT);
^^^^^^
Static cannot be resolved
----------
6. ERROR in \DonateScrolls.java (at line 69)
player.sendActionFailed();
^^^^^^^^^^^^^^^^
The method sendActionFailed() is undefined for the type L2PcInstance
----------
7. ERROR in \DonateScrolls.java (at line 78)
player.broadcastPacket(new MagicSkillUse(player, player, data[2], 1, dat
a[3], 0));
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^
The constructor MagicSkillUse(L2PcInstance, L2PcInstance, Integer, int, Integer,
int) is undefined
----------
7 problems (7 errors)The type custom.items.DonateScrolls must implement the inhe
rited abstract method ru.catssoftware.gameserver.handler.IItemHandler.useItem(ru
.catssoftware.gameserver.model.actor.instance.L2PlayableInstance, ru.catssoftwar
e.gameserver.model.L2ItemInstance, boolean)
The method shared() in the type javolution.util.FastMap<java.lang.Integer,java.l
ang.Integer[]> is not applicable for the arguments (java.lang.String)
The method playerId() is undefined for the type ru.catssoftware.gameserver.model
.actor.instance.L2PlayableInstance
The method sendActionFailed() is undefined for the type ru.catssoftware.gameserv
er.model.actor.instance.L2PcInstance
Static cannot be resolved
The method sendActionFailed() is undefined for the type ru.catssoftware.gameserv
er.model.actor.instance.L2PcInstance
The constructor ru.catssoftware.gameserver.network.serverpackets.MagicSkillUse(r
u.catssoftware.gameserver.model.actor.instance.L2PcInstance, ru.catssoftware.gam
eserver.model.actor.instance.L2PcInstance, java.lang.Integer, int, java.lang.Int
eger, int) is undefined
[WARN 08:36:39]: Failed executing script: I:\projectl2drop\server l2drop\game\da
ta\scripts\custom\items\DonateScrolls.java. See DonateScrolls.java.error.log for
details.
[INFO 08:36:39]: Spawn Events Managers

сократил до 3 ошибок

Лог ГС
===========================================-[ Events/Script/CoreScript/Engine ]
[INFO 10:03:48]: Script Engine Manager: loaded 48 script(s) form corequests.jar
[INFO 10:03:52]: NpcBufferSkillIdsTable: Loaded 1 buffers and 140 skills.
incorrect classpath: ./extensions/*
----------
1. ERROR in \DonateScrolls.java (at line 23)
public class DonateScrolls implements IItemHandler
^^^^^^^^^^^^^
The type DonateScrolls must implement the inherited abstract method IItemHandler
.useItem(L2PlayableInstance, L2ItemInstance, boolean)
----------
2. ERROR in \DonateScrolls.java (at line 25)
private final static FastMap<Integer, Integer[]> SCROLLS = new FastMap<I
nteger, Integer[]>().shared("DonateScrolls.SCROLLS");

^^^^^^
The method shared() in the type FastMap<Integer,Integer[]> is not applicable for
the arguments (String)
----------
3. ERROR in \DonateScrolls.java (at line 57)
if (!playable.getActingPlayer()
^
Syntax error, insert ") Statement" to complete BlockStatements
----------
3 problems (3 errors)Syntax error, insert ") Statement" to complete BlockStateme
nts
The type custom.items.DonateScrolls must implement the inherited abstract method
ru.catssoftware.gameserver.handler.IItemHandler.useItem(ru.catssoftware.gameser
ver.model.actor.instance.L2PlayableInstance, ru.catssoftware.gameserver.model.L2
ItemInstance, boolean)
The method shared() in the type javolution.util.FastMap<java.lang.Integer,java.l
ang.Integer[]> is not applicable for the arguments (java.lang.String)
[WARN 10:03:55]: Failed executing script: I:\projectl2drop\server l2drop\game\da
ta\scripts\custom\items\DonateScrolls.java. See DonateScrolls.java.error.log for
details.
[INFO 10:03:55]: Spawn Events Managers

сам чудо скрипт
package custom.items;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ScheduledFuture;

import ru.catssoftware.gameserver.datatables.SkillTable;
import ru.catssoftware.gameserver.model.L2ItemInstance;
import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance;
import ru.catssoftware.gameserver.model.actor.instance.L2PlayableInstance;
import ru.catssoftware.gameserver.network.serverpackets.MagicSkillUse;

import ru.catssoftware.gameserver.handler.ItemHandler;
import ru.catssoftware.gameserver.handler.IItemHandler;

import javolution.util.FastList;
import javolution.util.FastMap;

public class DonateScrolls implements IItemHandler
{
private final static FastMap<Integer, Integer[]> SCROLLS = new FastMap<Integer, Integer[]>().shared("DonateScrolls.SCROLLS");
private static int[] ITEM_IDS = null;

public DonateScrolls()
{
/**??????
**SCROLLS.put(????_??, new Integer[] { ??_?????, ???????_?????, ??_??????_????????, ?????????????????_????????(??.)), ??????_??????(1 ??, 0 ???)) });
**/
SCROLLS.put(9843, new Integer[] { 9959, 1, 2036, 1, 1 });
SCROLLS.put(4356, new Integer[] { 805, 1, 2036, 1, 1 });
SCROLLS.put(4355, new Integer[] { 806, 1, 2036, 1, 1 });
SCROLLS.put(4357, new Integer[] { 807, 1, 2036, 1, 1 });
SCROLLS.put(9996, new Integer[] { 819, 1, 2036, 1, 1 });
SCROLLS.put(9997, new Integer[] { 820, 1, 2036, 1, 1 });
SCROLLS.put(9998, new Integer[] { 821, 1, 2036, 1, 1 });
SCROLLS.put(9999, new Integer[] { 822, 1, 2036, 1, 1 });
SCROLLS.put(4361, new Integer[] { 835, 1, 2031, 1, 0 });

//
Integer[] tmp_ids = (Integer[]) SCROLLS.keySet().toArray(new Integer[SCROLLS.size()]);
ITEM_IDS = toIntArray(tmp_ids);
tmp_ids = null;
ItemHandler.getInstance().registerItemHandler(this);
}

public static void main (String... arguments )
{
new DonateScrolls();
}

public void useItem(L2PlayableInstance playable, L2ItemInstance item)
{
if (!playable.getActingPlayer()
return;

L2PcInstance player = (L2PcInstance) playable;
if (player.isAllSkillsDisabled())
{
player.sendMessage();
return;
}

if (player.isInOlympiadMode())
{
player.sendPacket(Static.THIS_ITEM_IS_NOT_AVAILABLE_FOR_THE_OLYMPIAD_EVENT);
player.sendMessage();
return;
}

Integer[] data = SCROLLS.get(item.getItemId());
if(data != null)
{
player.stopSkillEffects(data[0]);
SkillTable.getInstance().getInfo(data[0], data[1]).getEffects(player, player);
player.broadcastPacket(new MagicSkillUse(player, player, data[2], 1, data[3], 0));
if (data[4] == 1)
player.destroyItem("Consume", item.getObjectId(), 1, null, false);
}
}

private int[] toIntArray(Integer[] arr)
{
int[] ret = new int[arr.length];
int i = 0;
for (Integer e : arr)
ret[i++] = e.intValue();
return ret;
}

public int[] getItemIds()
{
return ITEM_IDS;
}
}
 
Господи, это лучше с нуля написать, сейчас бы костыли с говном и фастмапами перетягивать. Не знаю какой даун это писал, но метод main мне определённо нравится. Настолько говнокод, что прям совсем больно.
 
Господи, это лучше с нуля написать, сейчас бы костыли с говном и фастмапами перетягивать. Не знаю какой даун это писал, но метод main мне определённо нравится. Настолько говнокод, что прям совсем больно.
если не сложно помогите это "гавно" оживать по скольку написать с нуля точно не в моих силах:Kiddy:
 
Причем тут спойлер и тег code

20170519_095128.png
 
кто нибудь разжуйте как справиться с этой ошибкой

----------
1. ERROR in \DonateScrolls.java (at line 22)
public class DonateScrolls implements IItemHandler
^^^^^^^^^^^^^
The type DonateScrolls must implement the inherited abstract method IItemHandler
.useItem(L2PlayableInstance, L2ItemInstance, boolean)
----------

Как понимаю типо жалуется на название класса а вот почему блин кто подскажет
 
кто нибудь разжуйте как справиться с этой ошибкой

----------
1. ERROR in \DonateScrolls.java (at line 22)
public class DonateScrolls implements IItemHandler
^^^^^^^^^^^^^
The type DonateScrolls must implement the inherited abstract method IItemHandler
.useItem(L2PlayableInstance, L2ItemInstance, boolean)
----------

Как понимаю типо жалуется на название класса а вот почему блин кто подскажет
У Вас сейчас стоит так:

Код:
public void useItem(L2PlayableInstance playable, L2ItemInstance item)
А должно быть так:

Код:
public void useItem(L2PlayableInstance playable, L2ItemInstance item, boolean value)
 
Вот вы только начали разбираться в яве. Основы там читали. А в голову не приходило, что в разных сурсах названия классов и тд могут быть другими?
 
Код:
package ai;

import net.sf.l2j.gameserver.model.L2ItemInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PlayableInstance;
import scripts.items.ItemHandler;
import scripts.items.IItemHandler;
import net.sf.l2j.gameserver.datatables.SkillTable;

//Логирование
import net.sf.l2j.util.Log;

import java.text.SimpleDateFormat;
import java.util.Date;

import net.sf.l2j.Config;

/**
 * @author Demoncool
 */
public class ItemBuffDmnC implements IItemHandler {
    // Ид предметов
    // Шаблон
    //private static int[] ITEM_IDS = { ид_предмета, ид_предмета, ид_предмета };
    private static int[] ITEM_IDS = {9939};
    //private static int[] ITEM_IDS = { 9990,9991,9992,9993,9994 };

    //ид баффа
    private static int[] idbuff = {826};
    //уровень баффа
    private static int[] lvlbuff = {1};

    public ItemBuffDmnC() {
        ItemHandler.getInstance().registerItemHandler(this);
    }

    public static void main(String... arguments) {
        new ItemBuffDmnC();
    }

    public void useItem(L2PlayableInstance playable, L2ItemInstance item, boolean ctrl) {
        if (!playable.isPlayer())
            return;
        L2PcInstance player = (L2PcInstance) playable;

        // Запреты использования предмета
        if (player.isAllSkillsDisabled()) {
            player.sendActionFailed();
            return;
        } else if (player.isInOlympiadMode()) {
            player.sendMessage("Нельзя использовать сейчас.");
            player.sendActionFailed();
            return;
        } else if (player.isInJail()) {
            player.sendMessage("Нельзя использовать сейчас.");
            player.sendActionFailed();
            return;
        }
        // Не работает
        /*else if(player.isInFunEvent())
       {
           player.sendMessage("Нельзя использовать сейчас.");
           player.sendActionFailed();
           return;
       }*/
        else if (player.isInDuel()) {
            player.sendMessage("Нельзя использовать сейчас.");
            player.sendActionFailed();
            return;
        } else if (player.inObserverMode()) {
            player.sendMessage("Нельзя использовать сейчас.");
            player.sendActionFailed();
            return;
        } else if (player.isFestivalParticipant()) {
            player.sendMessage("Нельзя использовать сейчас.");
            player.sendActionFailed();
            return;
        } else if (player.isCursedWeaponEquiped()) {
            player.sendMessage("Нельзя использовать сейчас.");
            player.sendActionFailed();
            return;
        }
        // Можно ли использовать итем при флаге?
       /*else if (player.getPvpFlag() > 0)
       {
           player.sendMessage("Нельзя использовать сейчас.");
           player.sendActionFailed();
           return;
       }*/
        // Можно ли использовать итем имея карму?
       /*else if(player.getKarma() > 0)
       {
           player.sendMessage("Нельзя использовать сейчас.");
           player.sendActionFailed();
           return;
       }*/


        for (int i = 0; i < ITEM_IDS.length; i++)
            if (item.getItemId() == ITEM_IDS[i]) {
            //Удалить эффент
                //player.stopSkillEffects(idbuff[i]);
                SkillTable.getInstance().getInfo(idbuff[i], lvlbuff[i]).getEffects(player, player);
                break;
            }

        // Удаляем предмет у игрока после правильного действия
        destroy(playable, item);
        if (Config.QUEST_LOG_ENABLE) {
            SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy H:mm:ss");
            String date = formatter.format(new Date());
            Log.add(new StringBuilder().append("Игрок: " + player.getName() + " использовал предмет " + item.getItemId() + " и получил бафф: " + idbuff + ". Дата: " + date).toString(), "QuestLog");
        }
    }

    // Нужно для удаления предмета после использования
    private void destroy(L2PlayableInstance playable, L2ItemInstance item) {
        // Удалять Итем после использования?
        playable.destroyItem("Использовано", item.getObjectId(), 1, null, true);
    }

    public int[] getItemIds() {
        return ITEM_IDS;
    }
}

странно что скопировало так
Код:
                //player.stopSkillEffects(idbuff);
                SkillTable.getInstance().getInfo(idbuff, lvlbuff).getEffects(player, player);

хотя копировал это
Код:
                //player.stopSkillEffects(idbuff[i]);
                SkillTable.getInstance().getInfo(idbuff[i], lvlbuff[i]).getEffects(player, player);
 
Код:
    public static void main(String... arguments) {
        new ItemBuffDmnC();
    }

у вас у всех этот дерьмокод - отдельное приложение от сервера, или вы просто не понимаете что такое точка входа и зачем оно надо?
что первый - говно, что второй - говно.

пс: да, я критикую, ибо мне это дерьмо было бы стыдно в шару выкинуть. это как взять ведро с помоями и надеть себе на голову в центре толпы, называя себя уборщиком.

киньте мне в личку жарку геймсервера и хандлеры из скриптов, ночью сделаю по-человечески это чудо.
 
Последнее редактирование модератором:
киньте мне в личку жарку геймсервера и хандлеры из скриптов, ночью сделаю по-человечески это чудо.
то самое чувство когда админ жопакода делает по человечески, а пацаны с шмакси не могут:Run:
 
Боже мой, ну и п**н*г**афия в коде... что в первом варианте, что во втором...
 
  • Мне нравится
Реакции: kick
выложите свой вариант, умники... спамить в теме пиздеть молодцы))) :D
 
Оффтоп:
Господи, это лучше с нуля написать, сейчас бы костыли с говном и фастмапами перетягивать. Не знаю какой даун это писал, но метод main мне определённо нравится. Настолько говнокод, что прям совсем больно.
кажись автор говнокода уже априори принят в жопакод :D
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Код:
package ai;

import net.sf.l2j.gameserver.model.L2ItemInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PlayableInstance;
import scripts.items.ItemHandler;
import scripts.items.IItemHandler;
import net.sf.l2j.gameserver.datatables.SkillTable;

//Логирование
import net.sf.l2j.util.Log;

import java.text.SimpleDateFormat;
import java.util.Date;

import net.sf.l2j.Config;

/**
 * @author Demoncool
 */
public class ItemBuffDmnC implements IItemHandler {
    // Ид предметов
    // Шаблон
    //private static int[] ITEM_IDS = { ид_предмета, ид_предмета, ид_предмета };
    private static int[] ITEM_IDS = {9939};
    //private static int[] ITEM_IDS = { 9990,9991,9992,9993,9994 };

    //ид баффа
    private static int[] idbuff = {826};
    //уровень баффа
    private static int[] lvlbuff = {1};

    public ItemBuffDmnC() {
        ItemHandler.getInstance().registerItemHandler(this);
    }

    public static void main(String... arguments) {
        new ItemBuffDmnC();
    }

    public void useItem(L2PlayableInstance playable, L2ItemInstance item, boolean ctrl) {
        if (!playable.isPlayer())
            return;
        L2PcInstance player = (L2PcInstance) playable;

        // Запреты использования предмета
        if (player.isAllSkillsDisabled()) {
            player.sendActionFailed();
            return;
        } else if (player.isInOlympiadMode()) {
            player.sendMessage("Нельзя использовать сейчас.");
            player.sendActionFailed();
            return;
        } else if (player.isInJail()) {
            player.sendMessage("Нельзя использовать сейчас.");
            player.sendActionFailed();
            return;
        }
        // Не работает
        /*else if(player.isInFunEvent())
       {
           player.sendMessage("Нельзя использовать сейчас.");
           player.sendActionFailed();
           return;
       }*/
        else if (player.isInDuel()) {
            player.sendMessage("Нельзя использовать сейчас.");
            player.sendActionFailed();
            return;
        } else if (player.inObserverMode()) {
            player.sendMessage("Нельзя использовать сейчас.");
            player.sendActionFailed();
            return;
        } else if (player.isFestivalParticipant()) {
            player.sendMessage("Нельзя использовать сейчас.");
            player.sendActionFailed();
            return;
        } else if (player.isCursedWeaponEquiped()) {
            player.sendMessage("Нельзя использовать сейчас.");
            player.sendActionFailed();
            return;
        }
        // Можно ли использовать итем при флаге?
       /*else if (player.getPvpFlag() > 0)
       {
           player.sendMessage("Нельзя использовать сейчас.");
           player.sendActionFailed();
           return;
       }*/
        // Можно ли использовать итем имея карму?
       /*else if(player.getKarma() > 0)
       {
           player.sendMessage("Нельзя использовать сейчас.");
           player.sendActionFailed();
           return;
       }*/


        for (int i = 0; i < ITEM_IDS.length; i++)
            if (item.getItemId() == ITEM_IDS[i]) {
            //Удалить эффент
                //player.stopSkillEffects(idbuff[i]);
                SkillTable.getInstance().getInfo(idbuff[i], lvlbuff[i]).getEffects(player, player);
                break;
            }

        // Удаляем предмет у игрока после правильного действия
        destroy(playable, item);
        if (Config.QUEST_LOG_ENABLE) {
            SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy H:mm:ss");
            String date = formatter.format(new Date());
            Log.add(new StringBuilder().append("Игрок: " + player.getName() + " использовал предмет " + item.getItemId() + " и получил бафф: " + idbuff + ". Дата: " + date).toString(), "QuestLog");
        }
    }

    // Нужно для удаления предмета после использования
    private void destroy(L2PlayableInstance playable, L2ItemInstance item) {
        // Удалять Итем после использования?
        playable.destroyItem("Использовано", item.getObjectId(), 1, null, true);
    }

    public int[] getItemIds() {
        return ITEM_IDS;
    }
}
Код:
        for (int i = 0; i < ITEM_IDS.length; i++)
            if (item.getItemId() == ITEM_IDS) {
            //Удалить эффент
                //player.stopSkillEffects(idbuff);
                SkillTable.getInstance().getInfo(idbuff, lvlbuff).getEffects(player, player);
                break;
            }
Боже что это? getItemId() возвращает массив?
 
Код:
        for (int i = 0; i < ITEM_IDS.length; i++)
            if (item.getItemId() == ITEM_IDS) {
            //Удалить эффент
                //player.stopSkillEffects(idbuff);
                SkillTable.getInstance().getInfo(idbuff, lvlbuff).getEffects(player, player);
                break;
            }
Боже что это? getItemId() возвращает массив?
я же говорю что при вставке кода, удаляет некоторые части кода. Не знаю что с форумом. Там как ITEMS_IDS так и idbuff lvlbuff.

кароче [_i_] оно удаляет при посте(убрать нижнее подчеркивание)
 
Последнее редактирование модератором:
Оффтоп:

кажись автор говнокода уже априори принят в жопакод :D
Мы не пишем как мудаки. Нет, у нас определённо многие моменты далеки от идеала, но так мы не пишем точно.
 
выложите свой вариант, умники... спамить в теме пиздеть молодцы))) :D
ну для начала, я бы вобще не стал писать хэндлеры для случаев когда к вещи прицепляется один скилл - я бы просто прописал его в сам предмет :)

И к примеру вот тебе реализация хэндлера для предметов в которых есть сразу несколько баффов - те же коктейли и т.п.
непосредственно сами скиллы перечислены в свойствах нужных предметов в виде отдельного параметра
Код:
package handler.items;

import gnu.trove.set.hash.TIntHashSet;
import l2p.gameserver.data.holder.ItemHolder;
import l2p.gameserver.data.holder.SkillHolder;
import l2p.gameserver.enums.EtcItemType;
import l2p.gameserver.model.Player;
import l2p.gameserver.model.Skill;
import l2p.gameserver.model.items.ItemInstance;
import l2p.gameserver.model.skills.SkillType;
import l2p.gameserver.network.serverpackets.MagicSkillUse;
import l2p.gameserver.network.serverpackets.SystemMessage;
import l2p.gameserver.network.serverpackets.components.SystemMsg;
import l2p.gameserver.templates.item.ItemTemplate;
import l2p.gameserver.utils.Log;

/**
 * Хэндлер для всяких коктейлей и т.п., дающих при использовании сразу несколько баффов
 *
 * @author Gaikotsu
 */
public class MultiPotions extends SimpleItemHandler
{
    private int[] _itemIds;

    public MultiPotions()
    {
        TIntHashSet set = new TIntHashSet();

        for (ItemTemplate template : ItemHolder.getInstance().getAllTemplates())
        {
            if (template == null)
                continue;

            if (template.getItemType() == EtcItemType.POTION && template.getMultiSkillList() != null)
            {
                for (int[] _skill : template.getMultiSkillList())
                {
                    Skill skill = SkillHolder.getInstance().getInfo(_skill[0], _skill[1]);

                    if (skill == null || skill.getSkillType() == SkillType.NOTDONE)
                        Log.warn("Skill " + _skill[0] + ":" + _skill[1] + " in item " + template.getItemId() + " not found or not done.");
                }

                set.add(template.getItemId());
            }
        }

        _itemIds = set.toArray();
    }

    @Override
    protected boolean useItemImpl(Player player, ItemInstance item, boolean ctrl)
    {
        if (player.isActionsDisabled() || player.isInOlympiadMode() || player.getChaosFestivalMode() > 1 || player.getPvPEventMode() > 0)
        {
            player.sendPacket(new SystemMessage(SystemMsg.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS).addName(item));
            return false;
        }

        if (!useItem(player, item, 1))
            return false;

        for (int[] skill : item.getTemplate().getMultiSkillList())
        {
            player.broadcastPacket(new MagicSkillUse(player, skill[0], skill[1]));
            player.altOnMagicUseTimer(player, SkillHolder.getInstance().getInfo(skill[0], skill[1]));
        }

        return true;
    }

    @Override
    public int[] getItemIds()
    {
        return _itemIds;
    }
}
 
Последнее редактирование модератором:
Назад
Сверху Снизу