Перейти к содержанию
Авторизация  
Nescafe

Ядро И Скилы

Рекомендуемые сообщения

Подскажите что неправильно делаю)

Хочу скрипт изучения как у рыбака сделать(копию) но чтото делаю делаю неправильно

 

 

/*

* Copyright Mazaffaka Project © 2013.

*/

 

/*

* Copyright Murzik Dev Team © 2013.

*/

 

package l2p.gameserver.data.xml.holder;

 

import gnu.trove.TIntObjectHashMap;

import gnu.trove.TIntObjectIterator;

import l2p.commons.data.xml.AbstractHolder;

import l2p.gameserver.model.Player;

import l2p.gameserver.model.Skill;

import l2p.gameserver.model.SkillLearn;

import l2p.gameserver.model.base.AcquireType;

import l2p.gameserver.model.base.ClassId;

import l2p.gameserver.model.pledge.Clan;

import l2p.gameserver.model.pledge.SubUnit;

 

import java.util.*;

 

 

/**

* @author: VISTALL

* @date: 20:55/30.11.2010

*/

public final class SkillAcquireHolder extends AbstractHolder {

private static final SkillAcquireHolder _instance = new SkillAcquireHolder();

 

 

public static SkillAcquireHolder getInstance() {

return _instance;

}

 

// классовые зависимости

private TIntObjectHashMap<List<SkillLearn>> _normalSkillTree = new TIntObjectHashMap<List<SkillLearn>>();

private TIntObjectHashMap<List<SkillLearn>> _transferSkillTree = new TIntObjectHashMap<List<SkillLearn>>();

private TIntObjectHashMap<List<SkillLearn>> _spellBookSkillTree = new TIntObjectHashMap<List<SkillLearn>>();

// расовые зависимости

private TIntObjectHashMap<List<SkillLearn>> _fishingSkillTree = new TIntObjectHashMap<List<SkillLearn>>();

private TIntObjectHashMap<List<SkillLearn>> _fishing2SkillTree = new TIntObjectHashMap<List<SkillLearn>>();

private TIntObjectHashMap<List<SkillLearn>> _transformationSkillTree = new TIntObjectHashMap<List<SkillLearn>>();

// без зависимостей

private List<SkillLearn> _certificationSkillTree = new ArrayList<SkillLearn>();

private List<SkillLearn> _dual_certificationSkillTree = new ArrayList<SkillLearn>();

private List<SkillLearn> _collectionSkillTree = new ArrayList<SkillLearn>();

private List<SkillLearn> _pledgeSkillTree = new ArrayList<SkillLearn>();

private List<SkillLearn> _subUnitSkillTree = new ArrayList<SkillLearn>();

private TIntObjectHashMap<TIntObjectHashMap<List<SkillLearn>>> _awakeParentSkillTree = new TIntObjectHashMap<TIntObjectHashMap<List<SkillLearn>>>();

 

public int getMinLevelForNewSkill(Player player, AcquireType type) {

List<SkillLearn> skills;

switch (type) {

case NORMAL:

skills = _normalSkillTree.get(player.getActiveClassId());

if (skills == null) {

info("skill tree for class " + player.getActiveClassId() + " is not defined !");

return 0;

}

skills.addAll(getAwakeParentSkillTree(player));

break;

case TRANSFORMATION:

skills = _transformationSkillTree.get(player.getRace().ordinal());

if (skills == null) {

info("skill tree for race " + player.getRace().ordinal() + " is not defined !");

return 0;

}

break;

case FISHING:

skills = _fishingSkillTree.get(player.getRace().ordinal());

if (skills == null) {

info("skill tree for race " + player.getRace().ordinal() + " is not defined !");

return 0;

}

break;

case FISHING2:

skills = _fishing2SkillTree.get(player.getRace().ordinal());

if (skills == null) {

info("skill tree for race " + player.getRace().ordinal() + " is not defined !");

return 0;

}

break;

default:

return 0;

}

int minlevel = 0;

for (SkillLearn temp : skills)

if (temp.getMinLevel() > player.getLevel())

if (minlevel == 0 || temp.getMinLevel() < minlevel)

minlevel = temp.getMinLevel();

return minlevel;

}

 

public Collection<SkillLearn> getAvailableSkills(Player player, AcquireType type, boolean ignoreLvl) {

return getAvailableSkills(player, type, null, ignoreLvl);

}

 

public Collection<SkillLearn> getAvailableSkills(Player player, AcquireType type, SubUnit subUnit,

boolean ignoreLvl) {

if (player.getActiveSubClass() == null) {

return Collections.emptyList();

}

Collection<SkillLearn> skills;

switch (type) {

case NORMAL:

skills = _normalSkillTree.get(player.getActiveClassId());

if (skills == null) {

info("skill tree for class " + player.getActiveClassId() + " is not defined !");

return Collections.emptyList();

}

skills.addAll(getAwakeParentSkillTree(player));

return getAvaliableList(skills, player.getAllSkillsArray(), player.getLevel(), ignoreLvl);

case COLLECTION:

skills = _collectionSkillTree;

if (skills == null) {

info("skill tree for class " + player.getActiveClassId() + " is not defined !");

return Collections.emptyList();

}

return getAvaliableList(skills, player.getAllSkillsArray(), player.getLevel(), ignoreLvl);

case TRANSFORMATION:

skills = _transformationSkillTree.get(player.getRace().ordinal());

if (skills == null) {

info("skill tree for race " + player.getRace().ordinal() + " is not defined !");

return Collections.emptyList();

}

return getAvaliableList(skills, player.getAllSkillsArray(), player.getLevel(), ignoreLvl);

case TRANSFER_EVA_SAINTS:

case TRANSFER_SHILLIEN_SAINTS:

case TRANSFER_CARDINAL:

skills = _transferSkillTree.get(type.transferClassId());

if (skills == null) {

info("skill tree for class " + type.transferClassId() + " is not defined !");

return Collections.emptyList();

}

Map<Integer, SkillLearn> skillLearnMap = new TreeMap<Integer, SkillLearn>();

for (SkillLearn temp : skills)

if (temp.getMinLevel() <= player.getLevel() || ignoreLvl) {

int knownLevel = player.getSkillLevel(temp.getId());

if (knownLevel == -1)

skillLearnMap.put(temp.getId(), temp);

}

 

return skillLearnMap.values();

case FISHING:

skills = _fishingSkillTree.get(player.getRace().ordinal());

if (skills == null) {

info("skill tree for race " + player.getRace().ordinal() + " is not defined !");

return Collections.emptyList();

}

return getAvaliableList(skills, player.getAllSkillsArray(), player.getLevel(), ignoreLvl);

case FISHING2:

skills = _fishing2SkillTree.get(player.getRace().ordinal());

if (skills == null) {

info("skill tree for race " + player.getRace().ordinal() + " is not defined !");

return Collections.emptyList();

}

return getAvaliableList(skills, player.getAllSkillsArray(), player.getLevel(), ignoreLvl);

case CLAN:

skills = _pledgeSkillTree;

Collection<Skill> skls = player.getClan().getSkills(); //TODO [VISTALL] придумать другой способ

 

return getAvaliableList(skills, skls.toArray(new Skill[skls.size()]), player.getClan().getLevel(), ignoreLvl);

case SUB_UNIT:

skills = _subUnitSkillTree;

Collection<Skill> st = subUnit.getSkills(); //TODO [VISTALL] придумать другой способ

 

return getAvaliableList(skills, st.toArray(new Skill[st.size()]), player.getClan().getLevel(), ignoreLvl);

case CERTIFICATION:

skills = _certificationSkillTree;

return getAvaliableList(skills, player.getAllSkillsArray(), player.getLevel(), ignoreLvl);

case DUALCERTIFICATION:

skills = _dual_certificationSkillTree;

return getAvaliableList(skills, player.getAllSkillsArray(), player.getLevel(), ignoreLvl);

 

default:

return Collections.emptyList();

}

}

 

private Collection<SkillLearn> getAvaliableList(Collection<SkillLearn> skillLearns, Skill[] skills, int level,

boolean ignoreLvl) {

Map<Integer, SkillLearn> skillLearnMap = new TreeMap<Integer, SkillLearn>();

for (SkillLearn temp : skillLearns)

if (temp.getMinLevel() <= level || ignoreLvl) {

boolean knownSkill = false;

for (int j = 0; j < skills.length && !knownSkill; j++)

if (skills[j].getId() == temp.getId()) {

knownSkill = true;

if (skills[j].getLevel() == temp.getLevel() - 1)

skillLearnMap.put(temp.getId(), temp);

}

if (!knownSkill && temp.getLevel() == 1)

skillLearnMap.put(temp.getId(), temp);

}

 

return skillLearnMap.values();

}

 

public SkillLearn getSkillLearn(Player player, int id, int level, AcquireType type) {

List<SkillLearn> skills;

switch (type) {

case NORMAL:

skills = _normalSkillTree.get(player.getActiveClassId());

skills.addAll(getAwakeParentSkillTree(player));

break;

case COLLECTION:

skills = _collectionSkillTree;

break;

case TRANSFORMATION:

skills = _transformationSkillTree.get(player.getRace().ordinal());

break;

case TRANSFER_CARDINAL:

case TRANSFER_SHILLIEN_SAINTS:

case TRANSFER_EVA_SAINTS:

skills = _transferSkillTree.get(player.getActiveClassId());

break;

case FISHING:

skills = _fishingSkillTree.get(player.getRace().ordinal());

break;

case FISHING2:

skills = _fishing2SkillTree.get(player.getRace().ordinal());

break;

case CLAN:

skills = _pledgeSkillTree;

break;

case SUB_UNIT:

skills = _subUnitSkillTree;

break;

case CERTIFICATION:

skills = _certificationSkillTree;

break;

case DUALCERTIFICATION:

skills = _dual_certificationSkillTree;

break;

default:

return null;

}

 

if (skills == null)

return null;

 

for (SkillLearn temp : skills)

if (temp.getLevel() == level && temp.getId() == id)

return temp;

 

return null;

}

 

public boolean isSkillPossible(Player player, Skill skill, AcquireType type) {

Clan clan;

List<SkillLearn> skills;

switch (type) {

case NORMAL:

skills = _normalSkillTree.get(player.getActiveClassId());

skills.addAll(getAwakeParentSkillTree(player));

break;

case COLLECTION:

skills = _collectionSkillTree;

break;

case TRANSFORMATION:

skills = _transformationSkillTree.get(player.getRace().ordinal());

break;

case FISHING:

skills = _fishingSkillTree.get(player.getRace().ordinal());

break;

case FISHING2:

skills = _fishing2SkillTree.get(player.getRace().ordinal());

break;

case TRANSFER_CARDINAL:

case TRANSFER_EVA_SAINTS:

case TRANSFER_SHILLIEN_SAINTS:

int transferId = type.transferClassId();

if (player.getActiveClassId() != transferId)

return false;

 

skills = _transferSkillTree.get(transferId);

break;

case CLAN:

clan = player.getClan();

if (clan == null)

return false;

skills = _pledgeSkillTree;

break;

case SUB_UNIT:

clan = player.getClan();

if (clan == null)

return false;

 

skills = _subUnitSkillTree;

break;

case CERTIFICATION:

skills = _certificationSkillTree;

break;

case DUALCERTIFICATION:

skills = _dual_certificationSkillTree;

break;

case SPELLBOOK:

skills = _spellBookSkillTree.get(player.getActiveClassId());

break;

default:

return false;

}

 

return isSkillPossible(skills, skill);

}

 

private boolean isSkillPossible(Collection<SkillLearn> skills, Skill skill) {

if (skills != null)

for (SkillLearn learn : skills)

if (learn.getId() == skill.getId() && learn.getLevel() <= skill.getLevel())

return true;

return false;

}

 

public boolean isSkillPossible(Player player, Skill skill) {

for (AcquireType aq : AcquireType.VALUES)

if (isSkillPossible(player, skill, aq))

return true;

 

return false;

}

 

public List<SkillLearn> getSkillLearnListByItemId(Player player, int itemId) {

List<SkillLearn> learns = _normalSkillTree.get(player.getActiveClassId());

if (learns == null)

return Collections.emptyList();

 

List<SkillLearn> l = new ArrayList<SkillLearn>(1);

for (SkillLearn i : learns)

if (i.getItemId() == itemId)

l.add(i);

 

return l;

}

 

public List<SkillLearn> getSkillLearnForSpellBook(Player player, int itemId) {

List<SkillLearn> learns = _spellBookSkillTree.get(player.getActiveClassId());

if (learns == null)

return Collections.emptyList();

 

List<SkillLearn> l = new ArrayList<SkillLearn>(1);

for (SkillLearn i : learns)

if (i.getItemId() == itemId)

l.add(i);

 

return l;

}

 

public List<SkillLearn> getAllSpellbookSkillTree() {

List<SkillLearn> a = new ArrayList<SkillLearn>();

for (TIntObjectIterator<List<SkillLearn>> i = _spellBookSkillTree.iterator(); i.hasNext(); ) {

i.advance();

a.addAll(i.value());

}

 

return a;

}

 

public void addAllNormalSkillLearns(TIntObjectHashMap<List<SkillLearn>> map) {

int classID;

 

for (ClassId classId : ClassId.VALUES) {

if (!classId.isDummy()) {

 

classID = classId.getId();

 

List<SkillLearn> temp;

 

temp = map.get(classID);

if (temp == null) {

info("Not found NORMAL skill learn for class " + classID);

continue;

}

 

_normalSkillTree.put(classId.getId(), temp);

 

ClassId secondparent = classId.getParent(1);

if (secondparent == classId.getParent(0))

secondparent = null;

 

classId = classId.getParent(0);

 

while (classId != null) {

List<SkillLearn> parentList = _normalSkillTree.get(classId.getId());

temp.addAll(parentList);

 

classId = classId.getParent(0);

if (classId == null && secondparent != null) {

classId = secondparent;

secondparent = secondparent.getParent(1);

}

}

}

}

}

 

public Collection<SkillLearn> getAwakeParentSkillTree(Player player) {

ClassId classId = player.getClassId();

return getAwakeParentSkillTree(classId, ClassId.VALUES[player.getActiveDefaultClassId()]);

}

 

public Collection<SkillLearn> getAwakeParentSkillTree(ClassId classId, ClassId parentClassId) {

TIntObjectHashMap<List<SkillLearn>> awakeParentSkillTree = (TIntObjectHashMap<List<SkillLearn>>) this._awakeParentSkillTree.get(classId.getId());

if ((awakeParentSkillTree == null) || (awakeParentSkillTree.isEmpty())) {

return Collections.emptyList();

}

int awakeParentId = classId.getAwakeParentId(parentClassId).getId();

if (!awakeParentSkillTree.containsKey(awakeParentId)) {

return Collections.emptyList();

}

return awakeParentSkillTree.get(awakeParentId);

}

 

public void addAllAwakeParentSkillLearns(TIntObjectHashMap<TIntObjectHashMap<List<SkillLearn>>> map) {

this._awakeParentSkillTree.putAll(map);

}

 

public void addAllFishingLearns(int race, List<SkillLearn> s) {

_fishingSkillTree.put(race, s);

}

 

public void addAllFishing2Learns(int race, List<SkillLearn> s) {

_fishing2SkillTree.put(race, s);

}

 

public void addAllTransferLearns(int classId, List<SkillLearn> s) {

_transferSkillTree.put(classId, s);

}

 

public void addAllTransformationLearns(int race, List<SkillLearn> s) {

_transformationSkillTree.put(race, s);

}

 

public void addAllSpellbookLearns(TIntObjectHashMap<List<SkillLearn>> map) {

int classID;

 

for (ClassId classId : ClassId.VALUES) {

if (classId.name().startsWith("dummyEntry"))

continue;

 

classID = classId.getId();

 

List<SkillLearn> temp;

 

temp = map.get(classID);

if (temp == null) {

continue;

}

 

_spellBookSkillTree.put(classId.getId(), temp);

 

ClassId secondparent = classId.getParent(1);

if (secondparent == classId.getParent(0))

secondparent = null;

 

classId = classId.getParent(0);

 

while (classId != null) {

List<SkillLearn> parentList = _spellBookSkillTree.get(classId.getId());

classId = classId.getParent(0);

 

if (parentList == null)

continue;

 

temp.addAll(parentList);

if (classId == null && secondparent != null) {

classId = secondparent;

secondparent = secondparent.getParent(1);

}

}

}

}

 

public void addAllCertificationLearns(List<SkillLearn> s) {

_certificationSkillTree.addAll(s);

}

 

public void addAllDualCertificationLearns(List<SkillLearn> s) {

_dual_certificationSkillTree.addAll(s);

}

 

public void addAllCollectionLearns(List<SkillLearn> s) {

_collectionSkillTree.addAll(s);

}

 

public void addAllSubUnitLearns(List<SkillLearn> s) {

_subUnitSkillTree.addAll(s);

}

 

public void addAllPledgeLearns(List<SkillLearn> s) {

_pledgeSkillTree.addAll(s);

}

 

@Override

public void log() {

info("load " + sizeTroveMap(_normalSkillTree) + " normal learns for " + _normalSkillTree.size() + " classes.");

info("load " + sizeTroveMap(_spellBookSkillTree) + " spellbook learns for " + _spellBookSkillTree.size() + " classes.");

info("load " + sizeTroveMap(_transferSkillTree) + " transfer learns for " + _transferSkillTree.size() + " classes.");

//

info("load " + sizeTroveMap(_transformationSkillTree) + " transformation learns for " + _transformationSkillTree.size() + " races.");

info("load " + sizeTroveMap(_fishingSkillTree) + " fishing learns for " + _fishingSkillTree.size() + " races.");

info("load " + sizeTroveMap(_fishing2SkillTree) + " fishing learns for " + _fishingSkillTree.size() + " races.");

//

info("load " + _certificationSkillTree.size() + " certification learns.");

info("load " + _dual_certificationSkillTree.size() + " dual certification learns.");

info("load " + _collectionSkillTree.size() + " collection learns.");

info("load " + _pledgeSkillTree.size() + " pledge learns.");

info("load " + _subUnitSkillTree.size() + " sub unit learns.");

 

info("load " + sizeTroveMapMap(this._awakeParentSkillTree) + " awake parent learns for " + this._awakeParentSkillTree.size() + " classes.");

 

}

 

@Deprecated

@Override

public int size() {

return 0;

}

 

@Override

public void clear() {

_normalSkillTree.clear();

_fishingSkillTree.clear();

_fishing2SkillTree.clear();

_transferSkillTree.clear();

_certificationSkillTree.clear();

_dual_certificationSkillTree.clear();

_collectionSkillTree.clear();

_pledgeSkillTree.clear();

_subUnitSkillTree.clear();

_spellBookSkillTree.clear();

}

 

private int sizeTroveMap(TIntObjectHashMap<List<SkillLearn>> a) {

int i = 0;

for (TIntObjectIterator<List<SkillLearn>> iterator = a.iterator(); iterator.hasNext(); ) {

iterator.advance();

i += iterator.value().size();

}

 

return i;

}

 

private int sizeTroveMapMap(TIntObjectHashMap<TIntObjectHashMap<List<SkillLearn>>> a) {

int i = 0;

for (TIntObjectIterator<TIntObjectHashMap<List<SkillLearn>>> iterator = a.iterator(); iterator.hasNext(); ) {

iterator.advance();

i += sizeTroveMap(iterator.value());

}

 

return i;

}

}

Изменено пользователем Nescafe

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это скрипт ? Это копия класса, который сортирует скилы и выводи в списки доступные

Изменено пользователем dislike

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я спросил то я не так делаю

я обозначил цветом

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И еще вопрос чем вы редактируете файлы .java перед компиляцией?

Изменено пользователем Nescafe

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И еще вопрос чем вы редактируете файлы .java перед компиляцией?

 

Notepad+

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И еще вопрос чем вы редактируете файлы .java перед компиляцией?

 

Любая IDE, либо, если по мелочи notepad++

 

По сабжу:

 

С чего вывод о неправильности?

В AcquireType вынесен FISHING2?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Любая IDE, либо, если по мелочи notepad++

 

По сабжу:

 

С чего вывод о неправильности?

В AcquireType вынесен FISHING2?

 

Это в этом же файле?

Изменено пользователем Nescafe

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А можно лог глянуть?

compile-gameserver:

[delete] Deleting directory F:\isxo\Lindvior\build\classes

[mkdir] Created dir: F:\isxo\Lindvior\build\classes

[javac] Compiling 2059 source files to F:\isxo\Lindvior\build\classes

[javac] F:\isxo\Lindvior\gameserver\src\main\java\l2p\gameserver\data\xml\holder\SkillAcquireHolder.java:1: error: illegal character: \65279

[javac] ?/*

[javac] ^

[javac] F:\isxo\Lindvior\gameserver\src\main\java\l2p\gameserver\data\xml\holder\SkillAcquireHolder.java:9: error: class, interface, or enum expected

[javac] package l2p.gameserver.data.xml.holder;

[javac] ^

[javac] 2 errors

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

compile-gameserver:

[delete] Deleting directory F:\isxo\Lindvior\build\classes

[mkdir] Created dir: F:\isxo\Lindvior\build\classes

[javac] Compiling 2059 source files to F:\isxo\Lindvior\build\classes

[javac] F:\isxo\Lindvior\gameserver\src\main\java\l2p\gameserver\data\xml\holder\SkillAcquireHolder.java:1: error: illegal character: \65279

[javac] ?/*

[javac] ^

[javac] F:\isxo\Lindvior\gameserver\src\main\java\l2p\gameserver\data\xml\holder\SkillAcquireHolder.java:9: error: class, interface, or enum expected

[javac] package l2p.gameserver.data.xml.holder;

[javac] ^

[javac] 2 errors

редактированием одного класса у вас ничего не получится !

Изменено пользователем LifeGame32

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

редактированием одного класса у вас ничего не получится !

 

Да только редактированием двух :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да че вы паритесь , пусть и дальше шпарит пхп-стайл в яве, сам научится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да че вы паритесь , пусть и дальше шпарит пхп-стайл в яве, сам научится.

 

Вообще бессмысленный комментарий.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да только редактированием двух :D

Ну хз . По нормальному Добавить новый тип. Добавить список умений для этого типа. Потом сервер и клиент пакеты тоже править + если все это через новый инстан . *(по исходам l2jserver)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну хз . По нормальному Добавить новый тип. Добавить список умений для этого типа. Потом сервер и клиент пакеты тоже править + если все это через новый инстан . *(по исходам l2jserver)

 

Пфф. Создание нового древа = новый xml + правка dtd + парсер/холдер + тип в энуме + вызов интантизации из классического NpcInstance по байпассу.

 

Мне при переходе GloryDays -> Lindvior пришлось 2 новых древа впиливать.

Изменено пользователем AwakenDev

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сделал dtd + парсер/холдер,AcquireType

 

Прописал 7 скилов(в новом скил тре xml) для теста при загрузке сервера их видно все нормально.

 

Непонятно одно где вывести их в сам нпс?

 

[npc_%objectId%_FishingSkillList|Выучить умения для рыбалки.]

Изменено пользователем Nescafe

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сделал dtd + парсер/холдер,AcquireType

 

Прописал 7 скилов(в новом скил тре xml) для теста при загрузке сервера их видно все нормально.

 

Непонятно одно где вывести их в сам нпс?

 

[npc_%objectId%_FishingSkillList|Выучить умения для рыбалки.]

 

Во первых выведи нпц кооторый их выдает нужный тип.

Прыгая от этого, либо создай новый инстанс либо допиши в нужный.

Ну допустим, допиши в NpcInstance:

 

В метод onBypassFeedback среди прочих байпассов, допиши

 

else if (command.equalsIgnoreCase("FishingSkillList2"))
{
showFishingSkillList(player);
}

 

 

Дальше, метод:

 

public static void showFishingSkillList2(Player player)
{
 showAcquireList(AcquireType.FISHING2, player);
}

 

И зобсдвенно в хтмл нпц приписываем байпасс

 

[npc_%objectId%_FishingSkillList2|Выучить умения для рыбалки.]

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Во первых выведи нпц кооторый их выдает нужный тип.

Прыгая от этого, либо создай новый инстанс либо допиши в нужный.

Ну допустим, допиши в NpcInstance:

 

В метод onBypassFeedback среди прочих байпассов, допиши

 

else if (command.equalsIgnoreCase("FishingSkillList2"))
{
showFishingSkillList(player);
}

 

 

Дальше, метод:

 

public static void showFishingSkillList2(Player player)
{
showAcquireList(AcquireType.FISHING2, player);
}

 

И зобсдвенно в хтмл нпц приписываем байпасс

 

[npc_%objectId%_FishingSkillList2|Выучить умения для рыбалки.]

Прописал, скилы вызываются но не учаться, в чем может быть дело?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На всякий случай.

 

Открываем RequestAcquireSkill

 

В runImpl, в свиче типов,

case FISHING2:
learnSimpleNextLevel(player, skillLearn, skill, 0);
if (trainer != null)
{
 NpcInstance.showFishingSkillList2(player);
}
break;

Изменено пользователем AwakenDev

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что есть "Неучатся"?

Нажимаю изучить нечего не происходит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нажимаю изучить нечего не происходит.

 

Выше отписал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все получилось,учиться

 

только почему то получился скрипт изучения не рыбака,а клана)

http://rghost.ru/53784648

хотя я от клана нечего не брал.)

Изменено пользователем Nescafe

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

За показ окошка отвечает AcquireSkillList.

 

Там вписывается Тип как ординальное значение. Возможно, что если ты поставил FISHING2 после FISHING, то он занял место CLAN, отсюда и данные по клану.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...