переименование макроса

DarkEmpire

誰もいない
Местный
Сообщения
610
Розыгрыши
0
Репутация
302
Реакции
441
Баллы
1 553
Есть проблема, при перетаскивании с окна умений в строку макроса, то внутри макроса название скила изменяется автоматически на англ, что не дает заюзать его.
Проблема именно с командой /useskill
То есть при /useskillforce итд, такой проблемы нет.

может кто нибудь сталкивался с этим?



нужный мне баг кд с скилом в макросе
Код:
package core.gameserver.network.l2.c2s;

import core.gameserver.Config;
import core.gameserver.model.actor.instances.player.Macro;
import core.gameserver.model.actor.instances.player.Macro.L2MacroCmd;
import core.gameserver.model.Player;
import core.gameserver.model.Skill;
import core.gameserver.network.l2.components.SystemMsg;
import core.gameserver.tables.SkillTable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* packet type id 0xcd
*
* sample
*
* cd
* d // id
* S // macro name
* S // unknown  desc
* S // unknown  acronym
* c // icon
* c // count
*
* c // entry
* c // type
* d // skill id
* c // shortcut id
* S // command name
*
* format:        cdSSScc (ccdcS)
*/
public class RequestMakeMacro extends L2GameClientPacket
{
    private static final Logger _log = LoggerFactory.getLogger(RequestMakeMacro.class);
    private Macro _macro;

    @Override
    protected void readImpl()
    {
        int _id = readD();
        String _name = readS(32);
        String _desc = readS(64);
        String _acronym = readS(4);
        int _icon = readC();
        int _count = readC();
        if(_count > 12)
            _count = 12;
        L2MacroCmd[] commands = new L2MacroCmd[_count];
        for(int i = 0; i < _count; i++)
        {
            int entry = readC();
            int type = readC(); // 1 = skill, 3 = action, 4 = shortcut
            int d1 = readD(); // skill or page number for shortcuts
            int d2 = readC();
            String command = readS().replace(";", "").replace(",", "");
            if(command.startsWith("/useskillforce") && Config.ALLOW_SKILL_REUSE_DELAY_BUG)
            {
                String _skillName = command.substring(15);
                command = "/useskillforce " + _skillName;
            }
            else if(command.startsWith("/useskillstand") && Config.ALLOW_SKILL_REUSE_DELAY_BUG)
            {
                String _skillName = command.substring(15);
                command = "/useskillstand " + _skillName;
            }
            if(type == 1 && Config.ALLOW_SKILL_REUSE_DELAY_BUG)
            {
                Skill _skill = SkillTable.getInstance().getInfo(d1, 1);
                type = 3;
                command = "/useskill " + _skill.getName();
            }
            commands[i] = new L2MacroCmd(entry, type, d1, d2, command);
        }
        _macro = new Macro(_id, _icon, _name, _desc, _acronym, commands);
    }

    @Override
    protected void runImpl()
    {
        Player activeChar = getClient().getActiveChar();
        if(activeChar == null)
            return;

        if(activeChar.getMacroses().getAllMacroses().length > 48)
        {
            activeChar.sendPacket(SystemMsg.YOU_MAY_CREATE_UP_TO_48_MACROS);
            return;
        }

        if(_macro.name.length() == 0)
        {
            activeChar.sendPacket(SystemMsg.ENTER_THE_NAME_OF_THE_MACRO);
            return;
        }

        if(_macro.descr.length() > 32)
        {
            activeChar.sendPacket(SystemMsg.MACRO_DESCRIPTIONS_MAY_CONTAIN_UP_TO_32_CHARACTERS);
            return;
        }

        activeChar.registerMacro(_macro);
    }
}


обычная работа скила в макросе
Код:
package core.gameserver.handler.voicecommands.impl;

import core.gameserver.handler.voicecommands.IVoicedCommandHandler;
import core.gameserver.model.Creature;
import core.gameserver.model.Player;
import core.gameserver.model.Skill;
import core.gameserver.scripts.Functions;

/**
* @author Kekess
*/
public class MacroUseSkill extends Functions implements IVoicedCommandHandler{

    private String[] _commandList = new String[] { "useskill", "useskillforce", "useskillstand" };

    @Override
    public boolean useVoicedCommand(String command, Player activeChar, String args)
    {
        command = command.intern();
        if(command.equalsIgnoreCase("useskill"))
        {
            for(Skill _skill: activeChar.getAllSkills())
                if(_skill.getName().equalsIgnoreCase(args))
                {
                    activeChar.setUseMacro(true);
                    _skill.setIsUseMacro(true);
                    activeChar.getAI().Cast(_skill, (Creature)activeChar.getTarget(), false, false);
                }
        }
        else if(command.equalsIgnoreCase("useskillforce"))
        {
            for(Skill _skill: activeChar.getAllSkills())
                if(_skill.getName().equalsIgnoreCase(args))
                {
                    activeChar.setUseMacro(true);
                    _skill.setIsUseMacro(true);
                    activeChar.getAI().Cast(_skill, (Creature)activeChar.getTarget(), true, false);
                }
        }
        else if(command.equalsIgnoreCase("useskillstand"))
        {
            for(Skill _skill: activeChar.getAllSkills())
                if(_skill.getName().equalsIgnoreCase(args))
                {
                    activeChar.setUseMacro(true);
                    _skill.setIsUseMacro(true);
                    activeChar.getAI().Cast(_skill, (Creature)activeChar.getTarget(), true, true);
                }
        }
        return true;
    }

    @Override
    public String[] getVoicedCommandList()
    {
        return _commandList;
    }
}
 
Последнее редактирование: