Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Продавец скилов
#1
Сборка l2j server

Скачал продавца скилами,берёт итем - даёт скилл. Проблема в том что при релоге скилл пропадает. И в character_skills скилл не записывается.

Вот файл __init__.py:


Код:
import sys
from com.l2jserver.gameserver.datatables import SkillTable
from com.l2jserver.gameserver.model.quest import State
from com.l2jserver.gameserver.model.quest import QuestState
from com.l2jserver.gameserver.model.quest.jython import QuestJython as JQuest

qn = "5809_Usweer_NPC_add_skill"

#Айтим для бафа (ID Айтима)
ID_ITEM        = 57
#Колличество айтимов для бафа
NEED_ITEM    = 1

#Айди скила который будет выдан
ID_SKILL    = 420
#Левел скила который будет выдан
LEVEL_SKILL    = 1

#Минимальные левел который может получать баф
MIN_LVL = 1
#Максимальные левел который может получить баф
MAX_LVL = 85

NPC=[51809]
QuestId     = 5809
QuestName   = "Usweer_NPC_add_skill"
QuestDesc   = "quest"

print "importing quest: 51809: Usweer NPC ---add skill---"

class Quest (JQuest) :

    def __init__(self,id,name,descr):
            JQuest.__init__(self,id,name,descr)

    def onTalk (self,npc,player):
        st = player.getQuestState(qn)
        if st.getPlayer().getLevel() < MIN_LVL or st.getPlayer().getLevel() > MAX_LVL :
            return "badlevel.htm"
        elif st.getState() == State.COMPLETED :
            return "skillinyou.htm"
        elif st.getQuestItemsCount(ID_ITEM) < NEED_ITEM :
            return "noitem.htm"
        else:
            st.takeItems(ID_ITEM,NEED_ITEM)
            st.getPlayer().addSkill(SkillTable.getInstance().getInfo(ID_SKILL,LEVEL_SKILL))
            st.setState(State.COMPLETED)
            return "skilladd.htm"

QUEST       = Quest(QuestId,str(QuestId) + "_" + QuestName,QuestDesc)

for npcId in NPC:
QUEST.addStartNpc(npcId)
QUEST.addTalkId(npcId)

Помогите кто знает.
Ответ
#2
скорее всего этот скилл удаляет встроеная "защита" сервера, которая проверяет, нет ли левых скилов...
Ответ
#3
Не думаю,скорее всего он удаляется, потому что не записывается в character_skills,а как туда записать я не знаю. А насчёт левых скилов,так я админом добавлял и они не удалялись,знач защиты всёже нет
Ответ
#4
Когда ты админом добавляешь идет обращение к :
\scripts\handlers\admincommandhandlers\AdminSkills.java
там функция admin_add_skill
Можно попробовать сделать через эту штуку.
Ответ
#5
L а можешь по подробнее про это дело? Как сделать и что именно. А то я с импортами дело особо не имел.
Ответ
#6
Как вставить запись скила для чара ?
Может кто реализовал ?
Ответ
#7
1. Убери проверку левых скилов в конфигах сервера.
2. Если не помогло, ставь уровень ГМа не 100, а 30, но все действия ГМов разрешай с уровня доступа от 100 и выше.
Ответ
#8
вот скажем пример как записываются скилы для чара(сборка SEST)
Код:
private void storeSkill(L2Skill newSkill, L2Skill oldSkill, int newClassIndex)
    {
        int classIndex = _classIndex;

        if(newClassIndex > -1)
        {
            classIndex = newClassIndex;
        }

        Connection con = null;

        try
        {
            con = L2DatabaseFactory.getInstance().getConnection();
            PreparedStatement statement;

            if(oldSkill != null && newSkill != null)
            {
                statement = con.prepareStatement("UPDATE character_skills SET skill_level=? WHERE skill_id=? AND char_obj_id=? AND class_index=?");
                statement.setInt(1, newSkill.getLevel());
                statement.setInt(2, oldSkill.getId());
                statement.setInt(3, getObjectId());
                statement.setInt(4, classIndex);
                statement.execute();
                statement.close();
            }
            else if(newSkill != null)
            {
                statement = con.prepareStatement("INSERT INTO character_skills (char_obj_id,skill_id,skill_level,skill_name,class_index) VALUES (?,?,?,?,?)");
                statement.setInt(1, getObjectId());
                statement.setInt(2, newSkill.getId());
                statement.setInt(3, newSkill.getLevel());
                statement.setString(4, newSkill.getName());
                statement.setInt(5, classIndex);
                statement.execute();
                statement.close();
            }
            else
            {
                _log.warn("could not store new skill. its NULL");
            }
            statement = null;
        }
        catch(Exception e)
        {
            _log.warn("Error could not store char skills: " + e);
        }
        finally
        {
            try { con.close(); } catch(Exception e) { }
            con = null;
        }
    }
в принипе на питон переписать не сложно...
Ответ
#9
Проблему решил, уже не актуально. Написал с нуля, вышло проще. Big GrinBig Grin

И после рестарта скилы не пропадают Wink
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  лаг при использовании скилов GameMems 7 3,080 01-16-2018, 03:01 PM
Последний пост: Gaikotsu
  Помогите создать нпс с покупкой скилов aaansideee 0 1,044 10-08-2016, 10:02 PM
Последний пост: aaansideee
  Заточка скилов Lineage 2 Underground 28 vanyahunter123 5 2,461 07-24-2016, 05:48 AM
Последний пост: nache
  Персонаж прекращает движение при использовании активных скилов SkAvenger 16 3,078 03-05-2015, 03:20 PM
Последний пост: SkAvenger
  [ШАРА]Заточка скилов на максимум с 1 клика OneThunder 2 2,118 11-04-2014, 04:17 PM
Последний пост: OneThunder
  Названия скилов на русском языке awers 6 2,384 10-27-2014, 12:37 AM
Последний пост: Gaikotsu
  Стоимость заточки скилов Intelect 5 1,492 05-13-2014, 11:03 AM
Последний пост: Persy
  Заточка скилов spartana 1 1,490 05-05-2014, 01:15 PM
Последний пост: Melcor
  При рестарте сервера слетает заточка скилов! lemac926 4 1,608 01-10-2013, 09:02 PM
Последний пост: lemac926
  Удаление скилов сервером Hotaka 5 1,855 12-11-2012, 04:29 AM
Последний пост: Hotaka

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)