[help]Выдача скилов за захват Замков
Сборка: Equal
Проблема: Подскажите как через ЯДРО можно было бы сделать так что если клан захватывает замок, то им не только акуссесуар выдавали, но ещё и скил, также взависимости от замка.
Соображения: Выдача наверно будет делаться на основе выдаче хиро скилов о потом их забирания у игрока
Именно чтобы отдельные скилы давало, а потом если замок уже принадлежит другому клану забирало скилы.
В хрониках хелбаунд+ реализовали скилы при захвате форта,если в твоей базе есть таблица skill_residential,то заходиш туда,прописуеш ID замка или форта ID скила и Skill lvl
Единственное , что реально сделать без ядра это привязать скиллы к итему, То есть к короне, и при потере замка корона забираеться как си скиллы
— Кот ЦАРЬ
Может оффтоп, но как сделать чтоб скил появлялся/включался когда у перса появляется определенный итем(желательно когда он его одевает), не через ядро а в xml скилах?
onik2005: Может оффтоп, но как сделать чтоб скил появлялся/включался когда у перса появляется определенный итем(желательно когда он его одевает), не через ядро а в xml скилах?
Через .xml никак, но можно через БД. В таблице армор есть столбик item_skill_id. Думаю дальше будет понятно
— Заболел
через ядро, в L2PcInstance.java
public void regiveTemporarySkills()
{
Castle gludio = CastleManager.getInstance().getCastleById(1);
if (getClanId() == gludio.getOwnerId())
{
L2Skill skill = SkillTable.getInstance().getInfo(1322, 1);
addSkill(skill,false);
}...
это код с арчида, у меня работал :) точно не помню либо тут в в RewardSkills
addSkill(skill,false); - false - не записывать скилл в базу; после того как замок будет у другого клана скил отпадет после перезахода
getInfo(1322, 1); - айди, лвл
при желании можно сделать привязку лвла скила от лвл клана...ну как то так вобщем.
Видимо этот код еще чем-то подкреплен, потому что я попробовал и не дало скила.
сборки разные, тем более я не готовый скрипт выложил, а так по памяти. того сервера уже давно нет:( попробуй в
{
Castle gludio = CastleManager.getInstance().getCastleById(1);
if (getClanId() == gludio.getOwnerId())
{
L2Skill skill = SkillTable.getInstance().getInfo(1322, 1);
addSkill(skill,false);
}...
Не ну то что ты название метода сменил, от этого ничего не изменится
Вот в сборке нашол такой код.
{
// Do not call this on enterworld or char load
// Add noble skills if noble
if (isNoble())
setNoble(true);
// Add Hero skills if hero
if (isHero())
setHero(true);
// Add clan skills
if (getClan() != null && getClan().getReputationScore() >= 0)
{
L2Skill[] skills = getClan().getAllSkills();
for (L2Skill sk : skills)
{
if(sk.getMinPledgeClass() <= getPledgeClass())
addSkill(sk, false);
}
}
// Reload passive skills from armors / jewels / weapons
getInventory().reloadEquippedItems();
}
Вот сюда надо добавить условия при которых клану выдадут скилы взависимости от замка.
сюда и надо. мб не
а
у всех по разному.
ПС. при выдачей Админом замка без перезахода может не давать. у меня было так.
После выдачи админом клану я релогался и не было скила.
Попробовал сделать так
// Add Castle skills
if (getClan() != null && getClan() == gludio.getOwnerId())
{
L2Skill skill = SkillTable.getInstance().getInfo(1204, 2);
addSkill(skill,false);
}
Но компилятор ругается
[javac] Compiling 1290 source files to C:\Equal_SRC\Equal-GameServer\build\c
lasses
[javac] C:\Equal_SRC\Equal-GameServer\java\com\equal\gameserver\model\actor\
instance\L2PcInstance.java:2363: incomparable types: com.equal.gameserver.model.
L2Clan and int
[javac] if (getClan() != null && getClan() == gludio.getOwnerId(
))
[javac] ^
[javac] 1 error
// Add Castle skills
if (getClan() != null && getClanId() == gludio.getOwnerId())
{
L2Skill skill = SkillTable.getInstance().getInfo(1204, 2);
addSkill(skill,false);
}
Этот вариант тоже не подошел
В условии надо чтобы было написано "если клану принадлежит замок глудио"
но как это в код переделать не могу сообразить.
if (getClan() != null && getClanId() == gludio.getOwnerId())
getClan() != null - если есть клан
getClanId() == gludio.getOwnerId() если айди клана равно айди клана-владельца
у тебя ругается на L2Clan класс
поменяй getClan() на getClanId()
{
L2Skill skill = SkillTable.getInstance().getInfo(1204, 2);
addSkill(skill,false);
}
Просто сделал такой код проверить дастся ли скилл, в итоге даже так скилл не дало




