Skip to content
La2Base
Home
DownloadsWikiForumFAQ
Search
ruen
Sign up Login
HomeFilesWikiLogin
  • Home
  • Downloads
  • Wiki
  • FAQ
  • Contact Us
  • About
  • Rules
  • Privacy
  • Terms of Service

© 2026 la2base.com · All rights reserved

ruen
Forum/Форум для новичков[JAVA]/[help]l2phoenix Fix
Search

[help]l2phoenix Fix

15 replies265 viewsCurrently viewing: 1
Николай
Николай

User

Бывалый

Posts: 120

На форуме с: 09/07/2009

Репутация: +21

Рейтинг: 0

· 06/29/2009, 03:13 AM

Сборка: Gracia Part II L2phoenix 14312
Краткое изложение СУТИ проблемы: Откат скилов, саб класс скилы, книги на трансформы
Вопросы:
1.Есть у кого нить более мение нормально отрекдактированные скилы ? (папка skills). А то в сборке очень странно настроен баланс., Тиранты, дестры , тх и Палы уберклассы, маги вообще ничего сделать не могут, 90 % дебафов с шансом 1 %
2.Саб класс скилы учатся на всех классах (тоесть и на сабе тоже).
3.Книжки на трансформу не нужны, когад в конфиге они отключены (для пвп сервера).
4.Дуалы Веспер неправильно отоюражаются. Если у кого есть скиньте пожалста.
Мои соображения по этому поводу: Нету соображений, впринципе баланс настроить реально, но это засесть на месяца 2 тестов... По поводу саб класс скилов надо что то сделать в файлике \gameserver\data\scripts\services\SubclassSkills.java но что я не знаю. Может кто поможет ?

Вот что в файле

Раскрывающийся текст
Код
package services;

import java.util.ArrayList;
import java.util.HashMap;

import l2p.Config;
import l2p.extensions.multilang.CustomMessage;
import l2p.extensions.scripts.Functions;
import l2p.extensions.scripts.ScriptFile;
import l2p.gameserver.model.L2Player;
import l2p.gameserver.model.L2Skill;
import l2p.gameserver.model.L2SubClass;
import l2p.gameserver.model.quest.QuestState;
import l2p.gameserver.serverpackets.AcquireSkillList;
import l2p.gameserver.serverpackets.SystemMessage;
import l2p.gameserver.tables.SkillTable;
import static l2p.gameserver.tables.SkillTable.SubclassSkills.*;

public class SubclassSkills extends Functions implements ScriptFile
{
    // --- Сертификаты ---

    private final static int CertificateEmergentAbility = 1; // 10280;
    private final static int CertificateEmergentAbility2 = 2; // Затычка

    private final static int CertificateWarriorAbility = 31; // 10281;
    private final static int CertificateKnightAbility = 32; // 10282;
    private final static int CertificateRogueAbility = 33; // 10283;
    private final static int CertificateWizardAbility = 34; // 10284;
    private final static int CertificateHealerAbility = 35; // 10285;
    private final static int CertificateSummonerAbility = 36; // 10286;
    private final static int CertificateEnchanterAbility = 37; // 10287;

    private final static int TransformSealbookDivineWarrior = 41; // 10289;
    private final static int TransformSealbookDivineKnight = 42; // 10288;
    private final static int TransformSealbookDivineRogue = 43; // 10290;
    private final static int TransformSealbookDivineWizard = 44; // 10292;
    private final static int TransformSealbookDivineHealer = 45; // 10291;
    private final static int TransformSealbookDivineSummoner = 46; // 10294;
    private final static int TransformSealbookDivineEnchanter = 47; // 10293;

    private static int[][] skills = new int[][] {
    // Скилл - сертификат - минимальный уровень отображения

            { EmergentAbilityAttack.getId(), CertificateEmergentAbility, 65 },
            { EmergentAbilityDefense.getId(), CertificateEmergentAbility, 65 },
            { EmergentAbilityEmpower.getId(), CertificateEmergentAbility, 65 },
            { EmergentAbilityMagicDefense.getId(), CertificateEmergentAbility, 65 },

            { MasterAbilityAttack.getId(), CertificateEmergentAbility2, 75 },
            { MasterAbilityEmpower.getId(), CertificateEmergentAbility2, 75 },
            { MasterAbilityCasting.getId(), CertificateEmergentAbility2, 75 },
            { MasterAbilityFocus.getId(), CertificateEmergentAbility2, 75 },
            { MasterAbilityDefense.getId(), CertificateEmergentAbility2, 75 },
            { MasterAbilityMagicDefense.getId(), CertificateEmergentAbility2, 75 },

            { KnightAbilityBoostHP.getId(), CertificateKnightAbility, 75 },
            { KnightAbilityDefense.getId(), CertificateKnightAbility, 75 },
            { KnightAbilityResistCritical.getId(), CertificateKnightAbility, 75 },

            { EnchanterAbilityBoostMana.getId(), CertificateEnchanterAbility, 75 },
            { EnchanterAbilityManaRecycle.getId(), CertificateEnchanterAbility, 75 },
            { EnchanterAbilityBarrier.getId(), CertificateEnchanterAbility, 75 },

            { SummonerAbilityBoostHPMP.getId(), CertificateSummonerAbility, 75 },
            { SummonerAbilityResistAttribute.getId(), CertificateSummonerAbility, 75 },
            { SummonerAbilitySpirit.getId(), CertificateSummonerAbility, 75 },

            { RogueAbilityEvasion.getId(), CertificateRogueAbility, 75 },
            { RogueAbilityLongShot.getId(), CertificateRogueAbility, 75 },
            { RogueAbilityCriticalChance.getId(), CertificateRogueAbility, 75 },

            { WizardAbilityManaGain.getId(), CertificateWizardAbility, 75 },
            { WizardAbilityManaSteal.getId(), CertificateWizardAbility, 75 },
            { WizardAbilityAntimagic.getId(), CertificateWizardAbility, 75 },

            { HealerAbilityPrayer.getId(), CertificateHealerAbility, 75 },
            { HealerAbilityHeal.getId(), CertificateHealerAbility, 75 },
            { HealerAbilityDivineProtection.getId(), CertificateHealerAbility, 75 },

            { WarriorAbilityResistTrait.getId(), CertificateWarriorAbility, 75 },
            { WarriorAbilityHaste.getId(), CertificateWarriorAbility, 75 },
            { WarriorAbilityBoostCP.getId(), CertificateWarriorAbility, 75 },

            { TransformDivineWarrior.getId(), TransformSealbookDivineWarrior, 80 },
            { TransformDivineKnight.getId(), TransformSealbookDivineKnight, 80 },
            { TransformDivineRogue.getId(), TransformSealbookDivineRogue, 80 },
            { TransformDivineWizard.getId(), TransformSealbookDivineWizard, 80 },
            { TransformDivineSummoner.getId(), TransformSealbookDivineSummoner, 80 },
            { TransformDivineHealer.getId(), TransformSealbookDivineHealer, 80 },
            { TransformDivineEnchanter.getId(), TransformSealbookDivineEnchanter, 80 } };

    private static int[][] classes = new int[][] {
    // Класс - второй сертификат (75) - третий сертификат (80)

            // --- Warriors ---

            // Gladiator
            { 2, CertificateWarriorAbility, TransformSealbookDivineWarrior },
            { 88, CertificateWarriorAbility, TransformSealbookDivineWarrior },

            // Warlord
            { 3, CertificateWarriorAbility, TransformSealbookDivineWarrior },
            { 89, CertificateWarriorAbility, TransformSealbookDivineWarrior },

            // Bounty Hunter
            { 55, CertificateWarriorAbility, TransformSealbookDivineWarrior },
            { 117, CertificateWarriorAbility, TransformSealbookDivineWarrior },

            // Tyrant
            { 48, CertificateWarriorAbility, TransformSealbookDivineWarrior },
            { 114, CertificateWarriorAbility, TransformSealbookDivineWarrior },

            // Destroyer
            { 46, CertificateWarriorAbility, TransformSealbookDivineWarrior },
            { 113, CertificateWarriorAbility, TransformSealbookDivineWarrior },

            // Soul Breaker
            { 128, CertificateWarriorAbility, TransformSealbookDivineWarrior },
            { 132, CertificateWarriorAbility, TransformSealbookDivineWarrior },

            // Soul Breaker
            { 129, CertificateWarriorAbility, TransformSealbookDivineWarrior },
            { 133, CertificateWarriorAbility, TransformSealbookDivineWarrior },

            // Berserker
            { 127, CertificateWarriorAbility, TransformSealbookDivineWarrior },
            { 131, CertificateWarriorAbility, TransformSealbookDivineWarrior },

            // --- Knights ---

            // Paladin
            { 5, CertificateKnightAbility, TransformSealbookDivineKnight },
            { 90, CertificateKnightAbility, TransformSealbookDivineKnight },

            // Dark Avenger
            { 6, CertificateKnightAbility, TransformSealbookDivineKnight },
            { 91, CertificateKnightAbility, TransformSealbookDivineKnight },

            // Temple Knight
            { 20, CertificateKnightAbility, TransformSealbookDivineKnight },
            { 99, CertificateKnightAbility, TransformSealbookDivineKnight },

            // Shillien Knight
            { 33, CertificateKnightAbility, TransformSealbookDivineKnight },
            { 106, CertificateKnightAbility, TransformSealbookDivineKnight },

            // --- Rogues ---

            // Hawkeye
            { 9, CertificateRogueAbility, TransformSealbookDivineRogue },
            { 92, CertificateRogueAbility, TransformSealbookDivineRogue },

            // Silver Ranger
            { 24, CertificateRogueAbility, TransformSealbookDivineRogue },
            { 102, CertificateRogueAbility, TransformSealbookDivineRogue },

            // Phantom Ranger
            { 37, CertificateRogueAbility, TransformSealbookDivineRogue },
            { 109, CertificateRogueAbility, TransformSealbookDivineRogue },

            // Treasure Hunter
            { 8, CertificateRogueAbility, TransformSealbookDivineRogue },
            { 93, CertificateRogueAbility, TransformSealbookDivineRogue },

            // Plains Walker
            { 23, CertificateRogueAbility, TransformSealbookDivineRogue },
            { 101, CertificateRogueAbility, TransformSealbookDivineRogue },

            // Abyss Walker
            { 36, CertificateRogueAbility, TransformSealbookDivineRogue },
            { 108, CertificateRogueAbility, TransformSealbookDivineRogue },

            // Arbalester
            { 130, CertificateRogueAbility, TransformSealbookDivineRogue },
            { 134, CertificateRogueAbility, TransformSealbookDivineRogue },

            // --- Wizards ---

            // Sorcecer
            { 12, CertificateWizardAbility, TransformSealbookDivineWizard },
            { 94, CertificateWizardAbility, TransformSealbookDivineWizard },

            // Spellsinger
            { 27, CertificateWizardAbility, TransformSealbookDivineWizard },
            { 103, CertificateWizardAbility, TransformSealbookDivineWizard },

            // Spellhowler
            { 40, CertificateWizardAbility, TransformSealbookDivineWizard },
            { 110, CertificateWizardAbility, TransformSealbookDivineWizard },

            // Necromancer
            { 13, CertificateWizardAbility, TransformSealbookDivineWizard },
            { 95, CertificateWizardAbility, TransformSealbookDivineWizard },

            // --- Healers ---

            // Shillien Elder
            { 43, CertificateHealerAbility, TransformSealbookDivineHealer },
            { 112, CertificateHealerAbility, TransformSealbookDivineHealer },

            // Elder
            { 30, CertificateHealerAbility, TransformSealbookDivineHealer },
            { 105, CertificateHealerAbility, TransformSealbookDivineHealer },

            // Bishop
            { 16, CertificateHealerAbility, TransformSealbookDivineHealer },
            { 97, CertificateHealerAbility, TransformSealbookDivineHealer },

            // --- Summoners ---

            // Warlock
            { 14, CertificateSummonerAbility, TransformSealbookDivineSummoner },
            { 96, CertificateSummonerAbility, TransformSealbookDivineSummoner },

            // Elemental Summoner
            { 28, CertificateSummonerAbility, TransformSealbookDivineSummoner },
            { 104, CertificateSummonerAbility, TransformSealbookDivineSummoner },

            // Phantom Summoner
            { 41, CertificateSummonerAbility, TransformSealbookDivineSummoner },
            { 111, CertificateSummonerAbility, TransformSealbookDivineSummoner },

            // --- Enchanters ---

            // Prophet
            { 17, CertificateEnchanterAbility, TransformSealbookDivineEnchanter },
            { 98, CertificateEnchanterAbility, TransformSealbookDivineEnchanter },

            // Warcryer
            { 52, CertificateEnchanterAbility, TransformSealbookDivineEnchanter },
            { 116, CertificateEnchanterAbility, TransformSealbookDivineEnchanter },

            // Inspector
            { 135, CertificateEnchanterAbility, TransformSealbookDivineEnchanter },
            { 136, CertificateEnchanterAbility, TransformSealbookDivineEnchanter },

            // Sword Singer
            { 21, CertificateEnchanterAbility, TransformSealbookDivineEnchanter },
            { 100, CertificateEnchanterAbility, TransformSealbookDivineEnchanter },

            // Bladedancer
            { 34, CertificateEnchanterAbility, TransformSealbookDivineEnchanter },
            { 107, CertificateEnchanterAbility, TransformSealbookDivineEnchanter } };

    public void showList()
    {
        L2Player player = (L2Player) getSelf();
        if(!Config.ALLOW_LEARN_TRANS_SKILLS_WO_QUEST)
        {
            QuestState qs = player.getQuestState("_136_MoreThanMeetsTheEye");
            if(qs == null || !qs.isCompleted())
            {
                show("You must complete the “More Than Meets the Eye” transformation quest in order to receive the subclass certification and to properly acquire the skill as your main class.", player);
                return;
            }
        }
        AcquireSkillList asl = new AcquireSkillList(AcquireSkillList.TRANSFORMATION);
        ArrayList<L2Skill> skills = getAvailableSkills(player);
        if(skills.isEmpty())
        {
            show("You've learned all skills available for your Subclass.", player);
            return;
        }
        for(L2Skill skill : skills)
            asl.addSkill(skill.getId(), skill.getLevel(), skill.getLevel(), 0, 1);
        player.sendPacket(asl);
    }

    public ArrayList<L2Skill> getAvailableSkills(L2Player player)
    {
        ArrayList<L2Skill> result = new ArrayList<L2Skill>();
        if(!player.isSubClassActive() || player.getLevel() < 65)
            return result;
        ArrayList<Integer> certificates = getPossibleCertificates(player);
        for(int[] tmp : skills)
            if(tmp[2] <= player.getLevel() && certificates.contains(tmp[1]) && canLearn(player, tmp[0]))
            {
                L2Skill skill = SkillTable.getInstance().getInfo(tmp[0], getSumLevel(player, tmp[0]) + 1);
                if(skill == null)
                    System.out.println("getAvailableSkills: skill is null! id: " + tmp[0] + ", level: " + (getSumLevel(player, tmp[0]) + 1));
                else
                    result.add(skill);
            }
        return result;
    }

    public ArrayList<Integer> getPossibleCertificates(L2Player player)
    {
        ArrayList<Integer> certificates = new ArrayList<Integer>();
        if(!player.isSubClassActive() || player.getLevel() < 65)
            return certificates;
        int class_id = player.getClassId().getId();
        certificates.add(CertificateEmergentAbility);
        if(player.getLevel() >= 75)
            certificates.add(CertificateEmergentAbility2);
        for(int[] tmp : classes)
            if(tmp[0] == class_id)
            {
                if(player.getLevel() >= 75 && !certificates.contains(tmp[1]))
                    certificates.add(tmp[1]);
                if(player.getLevel() >= 80 && !certificates.contains(tmp[2]))
                    certificates.add(tmp[2]);
            }
        return certificates;
    }

    public static int getSumLevel(L2Player player, int skill_id)
    {
        int sum_level = 0;
        for(L2SubClass sb : player.getSubClasses().values())
            for(L2Skill skill : sb.getSkillsList())
                if(skill != null && skill.getId() == skill_id)
                    sum_level += skill.getLevel();
        return sum_level;
    }

    public static boolean canLearn(L2Player player, int skill_id)
    {
        int max_level = SkillTable.getInstance().getMaxLevel(skill_id);
        if(getSumLevel(player, skill_id) >= max_level)
            return false;
        for(int[] tmp : skills)
            if(tmp[0] == skill_id)
            {
                if(tmp[2] > player.getLevel())
                    return false;
                int count = 0;
                for(L2Skill skill : player.getActiveClass().getSkillsList())
                {
                    if(tmp[2] == 75 && is75skill(skill.getId()))
                        return false;
                    if(getCertificateForSkill(skill.getId()) == tmp[1])
                        count += skill.getLevel();
                }
                if(count > 0)
                {
                    if(tmp[1] == CertificateEmergentAbility)
                        return player.getLevel() >= 70 && count < 2;
                    return false;
                }
                break;
            }
        return true;
    }

    public static int getCertificateForSkill(int skill_id)
    {
        for(int[] tmp : skills)
            if(tmp[0] == skill_id)
                return tmp[1];
        return -1;
    }

    public static void learnSkill(L2Player player, Integer skill_id)
    {
        if(!player.isSubClassActive() || player.getLevel() < 65 || !canLearn(player, skill_id))
        {
            player.sendActionFailed();
            return;
        }

        /**
        int certificate_id = getCertificateForSkill(skill_id);
        L2ItemInstance certificate = player.getInventory().findItemByItemId(certificate_id);
        if(certificate == null || certificate.getIntegerLimitedCount() < 1)
        {
            player.sendPacket(new SystemMessage(SystemMessage.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_SKILLS));
            return;
        }
        L2ItemInstance ri = player.getInventory().destroyItem(certificate, 1, true);
        player.sendPacket(new SystemMessage(SystemMessage.S1_HAS_DISAPPEARED).addItemName(ri.getItemId()));
        */

        L2Skill old_skill = null;
        if(player.getActiveClass().getSkillsList().contains(skill_id))
            old_skill = player.getActiveClass().getSkillsList().get(skill_id);
        int new_level = old_skill == null ? 1 : old_skill.getLevel() + 1;

        player.getActiveClass().setSkills(player.getActiveClass().getSkills() + (player.getActiveClass().getSkills().isEmpty() ? "" : ";") + skill_id);
        player.sendPacket(new SystemMessage(SystemMessage.YOU_HAVE_EARNED_S1).addSkillName(skill_id, new_level));
        HashMap<String, Object> variables = new HashMap<String, Object>();
        variables.put("self", player.getStoredId());
        callScripts("services.SubclassSkills", "showList", new Object[0], variables);
    }

    public void deleteSkills()
    {
        L2Player player = (L2Player) getSelf();
        if(!player.isSubClassActive() || player.getLevel() < 65)
        {
            player.sendActionFailed();
            return;
        }
        if(player.getInventory().getAdena() < 10000000)
        {
            player.sendActionFailed();
            player.sendPacket(new SystemMessage(SystemMessage.YOU_DO_NOT_HAVE_ENOUGH_ADENA));
            return;
        }
        player.getInventory().reduceAdena(10000000);
        player.getActiveClass().setSkills("");
        show(new CustomMessage("scripts.services.SubclassSkills.SkillsDeleted", player), player);
    }
    
    private static boolean is75skill(int skill_id)
    {
        for(int[] tmp : skills)
            if(tmp[0] == skill_id && tmp[2] == 75)
                return true;
        return false;
    }

    /*
    10280    Certificate - Emergent Ability        a,Certificate needed to learn an Emergent Ability. Only main classes can learn this skill. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10281    Certificate - Warrior Ability        a,Certificate needed to learn a Warrior Ability. Only main classes can learn this skill. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10282    Certificate - Knight Ability        a,Certificate needed to learn a Knight Ability. Only main classes can learn this skill. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10283    Certificate - Rogue Ability        a,Certificate needed to learn a Rogue Ability. Only main classes can learn this skill. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10284    Certificate - Wizard Ability        a,Certificate needed to learn a Wizard Ability. Only main classes can learn this skill. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10285    Certificate - Healer Ability        a,Certificate needed to learn a Healer Ability. Only main classes can learn this skill. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10286    Certificate - Summoner Ability        a,Certificate needed to learn a Summoner Ability. Only main classes can learn this skill. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10287    Certificate - Enchanter Ability        a,Certificate needed to learn an Enchanter Ability. Only main classes can learn this skill. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10288    Transform Sealbook - Divine Knight        a,Allows for tranformation into a highly specialized form, by transferring the powerful energy of the subclass to the main class. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10289    Transform Sealbook - Divine Warrior        a,Allows for tranformation into a highly specialized form, by transferring the powerful energy of the subclass to the main class. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10290    Transform Sealbook - Divine Rogue        a,Allows for tranformation into a highly specialized form, by transferring the powerful energy of the subclass to the main class. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10291    Transform Sealbook - Divine Healer        a,Allows for tranformation into a highly specialized form, by transferring the powerful energy of the subclass to the main class. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10292    Transform Sealbook - Divine Wizard        a,Allows for tranformation into a highly specialized form, by transferring the powerful energy of the subclass to the main class. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10293    Transform Sealbook - Divine Enchanter        a,Allows for tranformation into a highly specialized form, by transferring the powerful energy of the subclass to the main class. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10294    Transform Sealbook - Divine Summoner        a,Allows for tranformation into a highly specialized form, by transferring the powerful energy of the subclass to the main class. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    */

    public void onLoad()
    {
        System.out.println("Loaded Service: Subclass Skills");
    }

    public void onReload()
    {}

    public void onShutdown()
    {}
}


По поводу книг на перерождение я если чесно даже не знаю где их менять..
Дуалы пробовал переделать с других мечей.. Текстуры тоже отображались неправильно.

Ну вот вроде пока всё. Прозьба не игнорить тему, очень буду благодарен за любую инфу и помощь, со своей стороны обещаю спасибки и могу выложить немного улутшенный гм шоп для alt+b для серверов с высокими рейтами. Спасибо

0
Z
Zoomik174

User

Бывалый

Posts: 106

На форуме с: 03/15/2009

Репутация: +20

Рейтинг: 0

· 06/29/2009, 03:17 AM

Коля: Сборка: Gracia Part II L2phoenix 14312
Краткое изложение СУТИ проблемы: Откат скилов, саб класс скилы, книги на трансформы
Вопросы:
1.Есть у кого нить более мение нормально отрекдактированные скилы ? (папка skills). А то в сборке очень странно настроен баланс., Тиранты, дестры , тх и Палы уберклассы, маги вообще ничего сделать не могут, 90 % дебафов с шансом 1 %
2.Саб класс скилы учатся на всех классах (тоесть и на сабе тоже).
3.Книжки на трансформу не нужны, когад в конфиге они отключены (для пвп сервера).
4.Дуалы Веспер неправильно отоюражаются. Если у кого есть скиньте пожалста.
Мои соображения по этому поводу: Нету соображений, впринципе баланс настроить реально, но это засесть на месяца 2 тестов... По поводу саб класс скилов надо что то сделать в файлике \gameserver\data\scripts\services\SubclassSkills.java но что я не знаю. Может кто поможет ?

Вот что в файле
Раскрывающийся текст
Код
package services;

import java.util.ArrayList;
import java.util.HashMap;

import l2p.Config;
import l2p.extensions.multilang.CustomMessage;
import l2p.extensions.scripts.Functions;
import l2p.extensions.scripts.ScriptFile;
import l2p.gameserver.model.L2Player;
import l2p.gameserver.model.L2Skill;
import l2p.gameserver.model.L2SubClass;
import l2p.gameserver.model.quest.QuestState;
import l2p.gameserver.serverpackets.AcquireSkillList;
import l2p.gameserver.serverpackets.SystemMessage;
import l2p.gameserver.tables.SkillTable;
import static l2p.gameserver.tables.SkillTable.SubclassSkills.*;

public class SubclassSkills extends Functions implements ScriptFile
{
    // --- Сертификаты ---

    private final static int CertificateEmergentAbility = 1; // 10280;
    private final static int CertificateEmergentAbility2 = 2; // Затычка

    private final static int CertificateWarriorAbility = 31; // 10281;
    private final static int CertificateKnightAbility = 32; // 10282;
    private final static int CertificateRogueAbility = 33; // 10283;
    private final static int CertificateWizardAbility = 34; // 10284;
    private final static int CertificateHealerAbility = 35; // 10285;
    private final static int CertificateSummonerAbility = 36; // 10286;
    private final static int CertificateEnchanterAbility = 37; // 10287;

    private final static int TransformSealbookDivineWarrior = 41; // 10289;
    private final static int TransformSealbookDivineKnight = 42; // 10288;
    private final static int TransformSealbookDivineRogue = 43; // 10290;
    private final static int TransformSealbookDivineWizard = 44; // 10292;
    private final static int TransformSealbookDivineHealer = 45; // 10291;
    private final static int TransformSealbookDivineSummoner = 46; // 10294;
    private final static int TransformSealbookDivineEnchanter = 47; // 10293;

    private static int[][] skills = new int[][] {
    // Скилл - сертификат - минимальный уровень отображения

            { EmergentAbilityAttack.getId(), CertificateEmergentAbility, 65 },
            { EmergentAbilityDefense.getId(), CertificateEmergentAbility, 65 },
            { EmergentAbilityEmpower.getId(), CertificateEmergentAbility, 65 },
            { EmergentAbilityMagicDefense.getId(), CertificateEmergentAbility, 65 },

            { MasterAbilityAttack.getId(), CertificateEmergentAbility2, 75 },
            { MasterAbilityEmpower.getId(), CertificateEmergentAbility2, 75 },
            { MasterAbilityCasting.getId(), CertificateEmergentAbility2, 75 },
            { MasterAbilityFocus.getId(), CertificateEmergentAbility2, 75 },
            { MasterAbilityDefense.getId(), CertificateEmergentAbility2, 75 },
            { MasterAbilityMagicDefense.getId(), CertificateEmergentAbility2, 75 },

            { KnightAbilityBoostHP.getId(), CertificateKnightAbility, 75 },
            { KnightAbilityDefense.getId(), CertificateKnightAbility, 75 },
            { KnightAbilityResistCritical.getId(), CertificateKnightAbility, 75 },

            { EnchanterAbilityBoostMana.getId(), CertificateEnchanterAbility, 75 },
            { EnchanterAbilityManaRecycle.getId(), CertificateEnchanterAbility, 75 },
            { EnchanterAbilityBarrier.getId(), CertificateEnchanterAbility, 75 },

            { SummonerAbilityBoostHPMP.getId(), CertificateSummonerAbility, 75 },
            { SummonerAbilityResistAttribute.getId(), CertificateSummonerAbility, 75 },
            { SummonerAbilitySpirit.getId(), CertificateSummonerAbility, 75 },

            { RogueAbilityEvasion.getId(), CertificateRogueAbility, 75 },
            { RogueAbilityLongShot.getId(), CertificateRogueAbility, 75 },
            { RogueAbilityCriticalChance.getId(), CertificateRogueAbility, 75 },

            { WizardAbilityManaGain.getId(), CertificateWizardAbility, 75 },
            { WizardAbilityManaSteal.getId(), CertificateWizardAbility, 75 },
            { WizardAbilityAntimagic.getId(), CertificateWizardAbility, 75 },

            { HealerAbilityPrayer.getId(), CertificateHealerAbility, 75 },
            { HealerAbilityHeal.getId(), CertificateHealerAbility, 75 },
            { HealerAbilityDivineProtection.getId(), CertificateHealerAbility, 75 },

            { WarriorAbilityResistTrait.getId(), CertificateWarriorAbility, 75 },
            { WarriorAbilityHaste.getId(), CertificateWarriorAbility, 75 },
            { WarriorAbilityBoostCP.getId(), CertificateWarriorAbility, 75 },

            { TransformDivineWarrior.getId(), TransformSealbookDivineWarrior, 80 },
            { TransformDivineKnight.getId(), TransformSealbookDivineKnight, 80 },
            { TransformDivineRogue.getId(), TransformSealbookDivineRogue, 80 },
            { TransformDivineWizard.getId(), TransformSealbookDivineWizard, 80 },
            { TransformDivineSummoner.getId(), TransformSealbookDivineSummoner, 80 },
            { TransformDivineHealer.getId(), TransformSealbookDivineHealer, 80 },
            { TransformDivineEnchanter.getId(), TransformSealbookDivineEnchanter, 80 } };

    private static int[][] classes = new int[][] {
    // Класс - второй сертификат (75) - третий сертификат (80)

            // --- Warriors ---

            // Gladiator
            { 2, CertificateWarriorAbility, TransformSealbookDivineWarrior },
            { 88, CertificateWarriorAbility, TransformSealbookDivineWarrior },

            // Warlord
            { 3, CertificateWarriorAbility, TransformSealbookDivineWarrior },
            { 89, CertificateWarriorAbility, TransformSealbookDivineWarrior },

            // Bounty Hunter
            { 55, CertificateWarriorAbility, TransformSealbookDivineWarrior },
            { 117, CertificateWarriorAbility, TransformSealbookDivineWarrior },

            // Tyrant
            { 48, CertificateWarriorAbility, TransformSealbookDivineWarrior },
            { 114, CertificateWarriorAbility, TransformSealbookDivineWarrior },

            // Destroyer
            { 46, CertificateWarriorAbility, TransformSealbookDivineWarrior },
            { 113, CertificateWarriorAbility, TransformSealbookDivineWarrior },

            // Soul Breaker
            { 128, CertificateWarriorAbility, TransformSealbookDivineWarrior },
            { 132, CertificateWarriorAbility, TransformSealbookDivineWarrior },

            // Soul Breaker
            { 129, CertificateWarriorAbility, TransformSealbookDivineWarrior },
            { 133, CertificateWarriorAbility, TransformSealbookDivineWarrior },

            // Berserker
            { 127, CertificateWarriorAbility, TransformSealbookDivineWarrior },
            { 131, CertificateWarriorAbility, TransformSealbookDivineWarrior },

            // --- Knights ---

            // Paladin
            { 5, CertificateKnightAbility, TransformSealbookDivineKnight },
            { 90, CertificateKnightAbility, TransformSealbookDivineKnight },

            // Dark Avenger
            { 6, CertificateKnightAbility, TransformSealbookDivineKnight },
            { 91, CertificateKnightAbility, TransformSealbookDivineKnight },

            // Temple Knight
            { 20, CertificateKnightAbility, TransformSealbookDivineKnight },
            { 99, CertificateKnightAbility, TransformSealbookDivineKnight },

            // Shillien Knight
            { 33, CertificateKnightAbility, TransformSealbookDivineKnight },
            { 106, CertificateKnightAbility, TransformSealbookDivineKnight },

            // --- Rogues ---

            // Hawkeye
            { 9, CertificateRogueAbility, TransformSealbookDivineRogue },
            { 92, CertificateRogueAbility, TransformSealbookDivineRogue },

            // Silver Ranger
            { 24, CertificateRogueAbility, TransformSealbookDivineRogue },
            { 102, CertificateRogueAbility, TransformSealbookDivineRogue },

            // Phantom Ranger
            { 37, CertificateRogueAbility, TransformSealbookDivineRogue },
            { 109, CertificateRogueAbility, TransformSealbookDivineRogue },

            // Treasure Hunter
            { 8, CertificateRogueAbility, TransformSealbookDivineRogue },
            { 93, CertificateRogueAbility, TransformSealbookDivineRogue },

            // Plains Walker
            { 23, CertificateRogueAbility, TransformSealbookDivineRogue },
            { 101, CertificateRogueAbility, TransformSealbookDivineRogue },

            // Abyss Walker
            { 36, CertificateRogueAbility, TransformSealbookDivineRogue },
            { 108, CertificateRogueAbility, TransformSealbookDivineRogue },

            // Arbalester
            { 130, CertificateRogueAbility, TransformSealbookDivineRogue },
            { 134, CertificateRogueAbility, TransformSealbookDivineRogue },

            // --- Wizards ---

            // Sorcecer
            { 12, CertificateWizardAbility, TransformSealbookDivineWizard },
            { 94, CertificateWizardAbility, TransformSealbookDivineWizard },

            // Spellsinger
            { 27, CertificateWizardAbility, TransformSealbookDivineWizard },
            { 103, CertificateWizardAbility, TransformSealbookDivineWizard },

            // Spellhowler
            { 40, CertificateWizardAbility, TransformSealbookDivineWizard },
            { 110, CertificateWizardAbility, TransformSealbookDivineWizard },

            // Necromancer
            { 13, CertificateWizardAbility, TransformSealbookDivineWizard },
            { 95, CertificateWizardAbility, TransformSealbookDivineWizard },

            // --- Healers ---

            // Shillien Elder
            { 43, CertificateHealerAbility, TransformSealbookDivineHealer },
            { 112, CertificateHealerAbility, TransformSealbookDivineHealer },

            // Elder
            { 30, CertificateHealerAbility, TransformSealbookDivineHealer },
            { 105, CertificateHealerAbility, TransformSealbookDivineHealer },

            // Bishop
            { 16, CertificateHealerAbility, TransformSealbookDivineHealer },
            { 97, CertificateHealerAbility, TransformSealbookDivineHealer },

            // --- Summoners ---

            // Warlock
            { 14, CertificateSummonerAbility, TransformSealbookDivineSummoner },
            { 96, CertificateSummonerAbility, TransformSealbookDivineSummoner },

            // Elemental Summoner
            { 28, CertificateSummonerAbility, TransformSealbookDivineSummoner },
            { 104, CertificateSummonerAbility, TransformSealbookDivineSummoner },

            // Phantom Summoner
            { 41, CertificateSummonerAbility, TransformSealbookDivineSummoner },
            { 111, CertificateSummonerAbility, TransformSealbookDivineSummoner },

            // --- Enchanters ---

            // Prophet
            { 17, CertificateEnchanterAbility, TransformSealbookDivineEnchanter },
            { 98, CertificateEnchanterAbility, TransformSealbookDivineEnchanter },

            // Warcryer
            { 52, CertificateEnchanterAbility, TransformSealbookDivineEnchanter },
            { 116, CertificateEnchanterAbility, TransformSealbookDivineEnchanter },

            // Inspector
            { 135, CertificateEnchanterAbility, TransformSealbookDivineEnchanter },
            { 136, CertificateEnchanterAbility, TransformSealbookDivineEnchanter },

            // Sword Singer
            { 21, CertificateEnchanterAbility, TransformSealbookDivineEnchanter },
            { 100, CertificateEnchanterAbility, TransformSealbookDivineEnchanter },

            // Bladedancer
            { 34, CertificateEnchanterAbility, TransformSealbookDivineEnchanter },
            { 107, CertificateEnchanterAbility, TransformSealbookDivineEnchanter } };

    public void showList()
    {
        L2Player player = (L2Player) getSelf();
        if(!Config.ALLOW_LEARN_TRANS_SKILLS_WO_QUEST)
        {
            QuestState qs = player.getQuestState("_136_MoreThanMeetsTheEye");
            if(qs == null || !qs.isCompleted())
            {
                show("You must complete the “More Than Meets the Eye” transformation quest in order to receive the subclass certification and to properly acquire the skill as your main class.", player);
                return;
            }
        }
        AcquireSkillList asl = new AcquireSkillList(AcquireSkillList.TRANSFORMATION);
        ArrayList<L2Skill> skills = getAvailableSkills(player);
        if(skills.isEmpty())
        {
            show("You've learned all skills available for your Subclass.", player);
            return;
        }
        for(L2Skill skill : skills)
            asl.addSkill(skill.getId(), skill.getLevel(), skill.getLevel(), 0, 1);
        player.sendPacket(asl);
    }

    public ArrayList<L2Skill> getAvailableSkills(L2Player player)
    {
        ArrayList<L2Skill> result = new ArrayList<L2Skill>();
        if(!player.isSubClassActive() || player.getLevel() < 65)
            return result;
        ArrayList<Integer> certificates = getPossibleCertificates(player);
        for(int[] tmp : skills)
            if(tmp[2] <= player.getLevel() && certificates.contains(tmp[1]) && canLearn(player, tmp[0]))
            {
                L2Skill skill = SkillTable.getInstance().getInfo(tmp[0], getSumLevel(player, tmp[0]) + 1);
                if(skill == null)
                    System.out.println("getAvailableSkills: skill is null! id: " + tmp[0] + ", level: " + (getSumLevel(player, tmp[0]) + 1));
                else
                    result.add(skill);
            }
        return result;
    }

    public ArrayList<Integer> getPossibleCertificates(L2Player player)
    {
        ArrayList<Integer> certificates = new ArrayList<Integer>();
        if(!player.isSubClassActive() || player.getLevel() < 65)
            return certificates;
        int class_id = player.getClassId().getId();
        certificates.add(CertificateEmergentAbility);
        if(player.getLevel() >= 75)
            certificates.add(CertificateEmergentAbility2);
        for(int[] tmp : classes)
            if(tmp[0] == class_id)
            {
                if(player.getLevel() >= 75 && !certificates.contains(tmp[1]))
                    certificates.add(tmp[1]);
                if(player.getLevel() >= 80 && !certificates.contains(tmp[2]))
                    certificates.add(tmp[2]);
            }
        return certificates;
    }

    public static int getSumLevel(L2Player player, int skill_id)
    {
        int sum_level = 0;
        for(L2SubClass sb : player.getSubClasses().values())
            for(L2Skill skill : sb.getSkillsList())
                if(skill != null && skill.getId() == skill_id)
                    sum_level += skill.getLevel();
        return sum_level;
    }

    public static boolean canLearn(L2Player player, int skill_id)
    {
        int max_level = SkillTable.getInstance().getMaxLevel(skill_id);
        if(getSumLevel(player, skill_id) >= max_level)
            return false;
        for(int[] tmp : skills)
            if(tmp[0] == skill_id)
            {
                if(tmp[2] > player.getLevel())
                    return false;
                int count = 0;
                for(L2Skill skill : player.getActiveClass().getSkillsList())
                {
                    if(tmp[2] == 75 && is75skill(skill.getId()))
                        return false;
                    if(getCertificateForSkill(skill.getId()) == tmp[1])
                        count += skill.getLevel();
                }
                if(count > 0)
                {
                    if(tmp[1] == CertificateEmergentAbility)
                        return player.getLevel() >= 70 && count < 2;
                    return false;
                }
                break;
            }
        return true;
    }

    public static int getCertificateForSkill(int skill_id)
    {
        for(int[] tmp : skills)
            if(tmp[0] == skill_id)
                return tmp[1];
        return -1;
    }

    public static void learnSkill(L2Player player, Integer skill_id)
    {
        if(!player.isSubClassActive() || player.getLevel() < 65 || !canLearn(player, skill_id))
        {
            player.sendActionFailed();
            return;
        }

        /**
        int certificate_id = getCertificateForSkill(skill_id);
        L2ItemInstance certificate = player.getInventory().findItemByItemId(certificate_id);
        if(certificate == null || certificate.getIntegerLimitedCount() < 1)
        {
            player.sendPacket(new SystemMessage(SystemMessage.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_SKILLS));
            return;
        }
        L2ItemInstance ri = player.getInventory().destroyItem(certificate, 1, true);
        player.sendPacket(new SystemMessage(SystemMessage.S1_HAS_DISAPPEARED).addItemName(ri.getItemId()));
        */

        L2Skill old_skill = null;
        if(player.getActiveClass().getSkillsList().contains(skill_id))
            old_skill = player.getActiveClass().getSkillsList().get(skill_id);
        int new_level = old_skill == null ? 1 : old_skill.getLevel() + 1;

        player.getActiveClass().setSkills(player.getActiveClass().getSkills() + (player.getActiveClass().getSkills().isEmpty() ? "" : ";") + skill_id);
        player.sendPacket(new SystemMessage(SystemMessage.YOU_HAVE_EARNED_S1).addSkillName(skill_id, new_level));
        HashMap<String, Object> variables = new HashMap<String, Object>();
        variables.put("self", player.getStoredId());
        callScripts("services.SubclassSkills", "showList", new Object[0], variables);
    }

    public void deleteSkills()
    {
        L2Player player = (L2Player) getSelf();
        if(!player.isSubClassActive() || player.getLevel() < 65)
        {
            player.sendActionFailed();
            return;
        }
        if(player.getInventory().getAdena() < 10000000)
        {
            player.sendActionFailed();
            player.sendPacket(new SystemMessage(SystemMessage.YOU_DO_NOT_HAVE_ENOUGH_ADENA));
            return;
        }
        player.getInventory().reduceAdena(10000000);
        player.getActiveClass().setSkills("");
        show(new CustomMessage("scripts.services.SubclassSkills.SkillsDeleted", player), player);
    }
    
    private static boolean is75skill(int skill_id)
    {
        for(int[] tmp : skills)
            if(tmp[0] == skill_id && tmp[2] == 75)
                return true;
        return false;
    }

    /*
    10280    Certificate - Emergent Ability        a,Certificate needed to learn an Emergent Ability. Only main classes can learn this skill. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10281    Certificate - Warrior Ability        a,Certificate needed to learn a Warrior Ability. Only main classes can learn this skill. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10282    Certificate - Knight Ability        a,Certificate needed to learn a Knight Ability. Only main classes can learn this skill. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10283    Certificate - Rogue Ability        a,Certificate needed to learn a Rogue Ability. Only main classes can learn this skill. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10284    Certificate - Wizard Ability        a,Certificate needed to learn a Wizard Ability. Only main classes can learn this skill. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10285    Certificate - Healer Ability        a,Certificate needed to learn a Healer Ability. Only main classes can learn this skill. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10286    Certificate - Summoner Ability        a,Certificate needed to learn a Summoner Ability. Only main classes can learn this skill. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10287    Certificate - Enchanter Ability        a,Certificate needed to learn an Enchanter Ability. Only main classes can learn this skill. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10288    Transform Sealbook - Divine Knight        a,Allows for tranformation into a highly specialized form, by transferring the powerful energy of the subclass to the main class. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10289    Transform Sealbook - Divine Warrior        a,Allows for tranformation into a highly specialized form, by transferring the powerful energy of the subclass to the main class. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10290    Transform Sealbook - Divine Rogue        a,Allows for tranformation into a highly specialized form, by transferring the powerful energy of the subclass to the main class. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10291    Transform Sealbook - Divine Healer        a,Allows for tranformation into a highly specialized form, by transferring the powerful energy of the subclass to the main class. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10292    Transform Sealbook - Divine Wizard        a,Allows for tranformation into a highly specialized form, by transferring the powerful energy of the subclass to the main class. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10293    Transform Sealbook - Divine Enchanter        a,Allows for tranformation into a highly specialized form, by transferring the powerful energy of the subclass to the main class. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    10294    Transform Sealbook - Divine Summoner        a,Allows for tranformation into a highly specialized form, by transferring the powerful energy of the subclass to the main class. This item cannot be exchanged, dropped, destroyed, or stored in a warehouse.\0    -1    a,    a,    a,    a,    0    0    0    a,    1
    */

    public void onLoad()
    {
        System.out.println("Loaded Service: Subclass Skills");
    }

    public void onReload()
    {}

    public void onShutdown()
    {}
}


По поводу книг на перерождение я если чесно даже не знаю где их менять..
Дуалы пробовал переделать с других мечей.. Текстуры тоже отображались неправильно.

Ну вот вроде пока всё. Прозьба не игнорить тему, очень буду благодарен за любую инфу и помощь, со своей стороны обещаю спасибки и могу выложить немного улутшенный гм шоп для alt+b для серверов с высокими рейтами. Спасибо

Насчёт дуалов ти с какого клиента заходиш милай ? :)

0
Николай
Николай

User

Бывалый

Posts: 120

На форуме с: 09/07/2009

Репутация: +21

Рейтинг: 0

· 06/29/2009, 03:24 AM

А вот ещё проблемка... Вот что гс пишет.. Про скилы пишет про вермя бафа. А вот что про чаров пишет не пойму

Раскрывающийся текст


Zoomik174: Насчёт дуалов ти с какого клиента заходиш милай ? :)



Коля: Сборка: Gracia Part II L2phoenix 14312


Как сборка так и клиент Gracia Part II

0
Z
Zoomik174

User

Бывалый

Posts: 106

На форуме с: 03/15/2009

Репутация: +20

Рейтинг: 0

· 06/29/2009, 03:29 AM

Коля: А вот ещё проблемка... Вот что гс пишет.. Про скилы пишет про вермя бафа. А вот что про чаров пишет не пойму
Раскрывающийся текст







Как сборка так и клиент Gracia Part II

А веспер дуалы у тя в клиенте вообще прописаны ? pogranichnik.gif ибо на сколько я помню веспер дуалы как отображались фигово в парт 2 клиенте так и отображаются так же как и кастеты

0
Николай
Николай

User

Бывалый

Posts: 120

На форуме с: 09/07/2009

Репутация: +21

Рейтинг: 0

· 06/29/2009, 03:37 AM

Zoomik174: А веспер дуалы у тя в клиенте вообще прописаны ? pogranichnik.gif ибо на сколько я помню веспер дуалы как отображались фигово в парт 2 клиенте так и отображаются так же как и кастеты


Раскрывающийся текст

Вот что в датнике
Раскрывающийся текст
Код
0    30016    1    1    6    1    0    LineageWeapons.vesper_cutter_m00_wp    LineageWeapons.vesper_cutter_m00_wp        vesperwp.vesper_cutter_t00_wp    vesperwp.vesper_cutter_t01_wp        icon.weapon_dual_sword_i00    vesperwp.weapon_vesper_cutter_i00    vesperwp.weapon_vesper_cutter_i00            -1    1520    8    1    0    0        1        14    3    2    LineageWeapons.vesper_cutter_m00_wp    LineageWeapons.vesper_cutter_m00_wp    2    vesperwp.vesper_cutter_t00_wp    vesperwp.vesper_cutter_t01_wp        4    ItemSound.public_sword_shing_8    ItemSound.sword_great_4    ItemSound.sword_mid_2    ItemSound.public_sword_shing_4    ItemSound.itemdrop_dualsword    ItemSound.itemequip_dualsword        10    445    170    8    6    8    0    0    0    0    325    0    1    1    1000    0    -1    0    LineageEffect.c_u004    LineageEffect.c_u004    2.0000000    0.0000000    0.0000000    0.0000000    0.0000000    0.0000000    1.0000000    1.0000000    1.0000000    1.3000000    LineageWeapons.rangesample    LineageWeapons.rangesample    1.4000000    0.6000000    0.6000000    1.5000000    0.8000000    0.8000000    12.0000000    0.0000000    0.0000000    11.5000000    0.0000000    0.0000000    4    4    -1    -1


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

0
Z
Zoomik174

User

Бывалый

Posts: 106

На форуме с: 03/15/2009

Репутация: +20

Рейтинг: 0

· 06/29/2009, 03:41 AM

Коля:
Раскрывающийся текст

Вот что в датнике
Раскрывающийся текст
Код
0    30016    1    1    6    1    0    LineageWeapons.vesper_cutter_m00_wp    LineageWeapons.vesper_cutter_m00_wp        vesperwp.vesper_cutter_t00_wp    vesperwp.vesper_cutter_t01_wp        icon.weapon_dual_sword_i00    vesperwp.weapon_vesper_cutter_i00    vesperwp.weapon_vesper_cutter_i00            -1    1520    8    1    0    0        1        14    3    2    LineageWeapons.vesper_cutter_m00_wp    LineageWeapons.vesper_cutter_m00_wp    2    vesperwp.vesper_cutter_t00_wp    vesperwp.vesper_cutter_t01_wp        4    ItemSound.public_sword_shing_8    ItemSound.sword_great_4    ItemSound.sword_mid_2    ItemSound.public_sword_shing_4    ItemSound.itemdrop_dualsword    ItemSound.itemequip_dualsword        10    445    170    8    6    8    0    0    0    0    325    0    1    1    1000    0    -1    0    LineageEffect.c_u004    LineageEffect.c_u004    2.0000000    0.0000000    0.0000000    0.0000000    0.0000000    0.0000000    1.0000000    1.0000000    1.0000000    1.3000000    LineageWeapons.rangesample    LineageWeapons.rangesample    1.4000000    0.6000000    0.6000000    1.5000000    0.8000000    0.8000000    12.0000000    0.0000000    0.0000000    11.5000000    0.0000000    0.0000000    4    4    -1    -1


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

Просто не дорисованная текстура видимо или анимашка попробуй дёрнуть анимацию и текстуры с финал клиента ибо дуалы так вроде и недоделали

0
Николай
Николай

User

Бывалый

Posts: 120

На форуме с: 09/07/2009

Репутация: +21

Рейтинг: 0

· 06/29/2009, 03:43 AM

клиента нету.. Не поделится кто ? хотя если чесно не думаю что подойдёт.

0
Николай
Николай

User

Бывалый

Posts: 120

На форуме с: 09/07/2009

Репутация: +21

Рейтинг: 0

· 06/29/2009, 04:03 AM

Люди, ну хоть мысли свои отпишите

0
Z
Zoomik174

User

Бывалый

Posts: 106

На форуме с: 03/15/2009

Репутация: +20

Рейтинг: 0

· 06/29/2009, 04:10 AM

Коля: Люди, ну хоть мысли свои отпишите

Я тебе уже написал мысль "Скачать Gracia Final" Клиент и выдернуть от туда текстуру и анимацию дуалов и воткнуть в парт 2 клиент мб поможет попробуй

0
Николай
Николай

User

Бывалый

Posts: 120

На форуме с: 09/07/2009

Репутация: +21

Рейтинг: 0

· 06/29/2009, 04:27 AM

это самая мелкая из всех проблем)

0
Николай
Николай

User

Бывалый

Posts: 120

На форуме с: 09/07/2009

Репутация: +21

Рейтинг: 0

· 06/29/2009, 06:09 PM

Ап. Прощу помощи.
Ещё нашёл баг. У камаэляк нету отката стрел с арбалетом. Кто знает где это можно сделать вообще ?

0
Николай
Николай

User

Бывалый

Posts: 120

На форуме с: 09/07/2009

Репутация: +21

Рейтинг: 0

· 06/29/2009, 07:15 PM

Люди, если кто знает что со стрелами помогите плиз. Очень срочно нужно

0
Николай
Николай

User

Бывалый

Posts: 120

На форуме с: 09/07/2009

Репутация: +21

Рейтинг: 0

· 06/29/2009, 11:16 PM

Ещё вопрос... Как сделать гвардов с большим радиусом агра.. Тоесть чтоб видели из далека. И чтоб тех кто под сайлент мувом тоже видели. Зарание спасибо

0
Николай
Николай

User

Бывалый

Posts: 120

На форуме с: 09/07/2009

Репутация: +21

Рейтинг: 0

· 07/01/2009, 09:41 AM

Люди, ну хоть советов то дайте

0
Степан
Степан

User

Бывалый

Posts: 106

На форуме с: 02/19/2009

Репутация: +2

Рейтинг: 0

· 07/01/2009, 09:53 AM

Отпишусь:Всё что ты написал,кроме может быть сертефикатов т.к на яве они фигово работают-полная чушь...

Если у тебя 14312-Это переход на Gracia Final!


Насчёт скилов-согласен...Вчера как открыл БД офф скилов...Так был повержен что у фониксов всё с воображения берётся...

Скилы переделай сам,я думаю никто не выложит тебе в шару скилы готовые.
Я лично брал скилы из 13900++ и переделывал под корень...

L2dream.su

0
Войдите или зарегистрируйтесь чтобы ответить