После рестарта пропадают временные скиллы - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Работа со скриптами

Работа со скриптами Помощь в редактировании и написании квестов к Java серверам, а так же эвентов.

Ответ
Опции темы
Непрочитано 05.07.2013, 20:51   #1
Аватар для Injection
Пользователь

Автор темы (Топик Стартер) После рестарта пропадают временные скиллы

Всем привет!
Решил стащить с пв систему Skill Of Balance
Все отлично, скиллы выдает в чате пишет когда истекает срок скилла, но после рестарта (какой бы рестарт не делал, уже и пробовал //restart 360, все равно пропадают временные скиллы, в бд значение не меняется и не удаляется!
Мб кто знает в чем может быть проблема?
Сборка Lucera первая.

Вот что я занес в ServerData

Код ServerData.java:
Свернуть ↑Развернуть ↓
__________________
Ненависть врага - высшая награда! (с)
Injection вне форума Ответить с цитированием
Непрочитано 05.07.2013, 20:55   #2
Аватар для MrShyr
Супергерой

По умолчанию Re: После рестарта пропадают временные скиллы

Может быть включена защита - проверки на "левые" скилы?
MrShyr вне форума Отправить сообщение для MrShyr с помощью ICQ Ответить с цитированием
Сказали спасибо:
Непрочитано 05.07.2013, 20:56   #3
Аватар для Injection
Пользователь

Автор темы (Топик Стартер) Re: После рестарта пропадают временные скиллы

Цитата:
Сообщение от MrShyr Посмотреть сообщение
Может быть включена защита - проверки на "левые" скилы?
А вот это я и не подумал... Спасибо Сейчас проверю)
Вообще не должно это мешать т.е я админом проверяю)

Добавлено через 6 минут
Добавил в список исключения для проверки, не помогло

Добавлено через 1 час 47 минут
Из-за этого не может исчезать?
Делалось методом тыка, при покупке скилла в БД нормально заносится всё, делаю релог тоже все отлично,именно после рестарта исчезает.

PHP код:
con L2DatabaseFactory.getInstance().getConnection();
st con.prepareStatement("REPLACE INTO `z_donate_skills` (`char_id`, `class_id`, `skill_id`, `skill_lvl`, `expire`) VALUES (?, ?, ?, ?, ?)");
st.setInt(1charId);
st.setInt(2cls);
st.setInt(3id);
st.setInt(4lvl);
st.setLong(5expire);
st.execute();
} catch (
Exception e) {
_log.error("ServerData [ERROR]: addDonateSkill() ->" e);
finally {
try {
con.close();
st.close();
} catch (
SQLException ex) {
java.util.logging.Logger.getLogger(ServerData.clas s.getName()).log(Level.SEVEREnullex);
}

__________________
Ненависть врага - высшая награда! (с)

Последний раз редактировалось Injection; 05.07.2013 в 22:43. Причина: Добавлено сообщение
Injection вне форума Ответить с цитированием
Непрочитано 05.07.2013, 23:31   #4
Аватар для APKO
Постоялец

По умолчанию Re: После рестарта пропадают временные скиллы

если защита удаляет скилы, то ето видно в логах, а скилы при старте сервера подгружает ? просто в етом скрипте не видно как скрипт даеть ети самые скилы...
APKO вне форума Ответить с цитированием
Непрочитано 06.07.2013, 00:09   #5
Аватар для Injection
Пользователь

Автор темы (Топик Стартер) Re: После рестарта пропадают временные скиллы

Это только то, что относится к БД. т.е я думаю косяк именно тут)

еще кстати метод нашел

PHP код:
  private void cacheSoldSkills()
  {
    
Connection con null;
    
PreparedStatement st null;
    
ResultSet rs null;
    try {
      
con L2DatabaseFactory.getInstance().getConnection();
      
con.setTransactionIsolation(1);

      
st con.prepareStatement("DELETE FROM z_donate_skills WHERE expire > ? AND expire < ?");
      
st.setInt(11);
      
st.setLong(2System.currentTimeMillis());
      
st.execute();
      
st.close();

      
FastTable dst = new FastTable();
      
st con.prepareStatement("SELECT char_id, class_id, skill_id, skill_lvl, expire FROM `z_donate_skills`");
      
rs st.executeQuery();
      while (
rs.next()) {
        
int charId rs.getInt("char_id");
        
int classId rs.getInt("class_id");
        
int skillId rs.getInt("skill_id");
        
int skillLvl rs.getInt("skill_lvl");
        
long expire rs.getLong("expire");
        
DonateSkill ds = new DonateSkill(classIdskillIdskillLvlexpire);
        if (
_cachedSkills.get(Integer.valueOf(charId)) == null) {
          
dst.clear();
          
dst.add(ds);
          
_cachedSkills.put(Integer.valueOf(charId), dst);
        } else {
          ((
FastTable)_cachedSkills.get(Integer.valueOf(charId))).add(ds);
        }
      }
    } catch (
Exception e) {
      
_log.warn("CustomServerData: cacheDonateSkills() error: " e);
    } 
finally {
        try {
            
con.close();
            
st.close();
            
rs.close();
        } catch(
SQLException e) {
            
_log.error("AddDonateSkill: ERROR",e);
            }
    }
  } 
__________________
Ненависть врага - высшая награда! (с)
Injection вне форума Ответить с цитированием
Непрочитано 06.07.2013, 00:13   #6
Аватар для Mifesto
Пользователь

По умолчанию Re: После рестарта пропадают временные скиллы

Цитата:
Сообщение от Injection Посмотреть сообщение
А вот это я и не подумал... Спасибо Сейчас проверю)
Вообще не должно это мешать т.е я админом проверяю)

Добавлено через 6 минут
Добавил в список исключения для проверки, не помогло

Добавлено через 1 час 47 минут
Из-за этого не может исчезать?
Делалось методом тыка, при покупке скилла в БД нормально заносится всё, делаю релог тоже все отлично,именно после рестарта исчезает.

PHP код:
con L2DatabaseFactory.getInstance().getConnection();
st con.prepareStatement("REPLACE INTO `z_donate_skills` (`char_id`, `class_id`, `skill_id`, `skill_lvl`, `expire`) VALUES (?, ?, ?, ?, ?)");
st.setInt(1charId);
st.setInt(2cls);
st.setInt(3id);
st.setInt(4lvl);
st.setLong(5expire);
st.execute();
} catch (
Exception e) {
_log.error("ServerData [ERROR]: addDonateSkill() ->" e);
finally {
try {
con.close();
st.close();
} catch (
SQLException ex) {
java.util.logging.Logger.getLogger(ServerData.clas s.getName()).log(Level.SEVEREnullex);
}

как задается переменная expire, может она делится на 1000? если да то и при DELETE нужно уменьшать на 1000.
Mifesto вне форума Отправить сообщение для Mifesto с помощью ICQ Ответить с цитированием
Непрочитано 06.07.2013, 00:22   #7
Аватар для Injection
Пользователь

Автор темы (Топик Стартер) Re: После рестарта пропадают временные скиллы

Цитата:
Сообщение от Mifesto Посмотреть сообщение
как задается переменная expire, может она делится на 1000? если да то и при DELETE нужно уменьшать на 1000.
Это идет где выдача скиллов, 2 уровня их, - 1 уровень (2 недели) 2 уровень (1 месяц).
PHP код:
    long expire TimeUnit.DAYS.toMillis(15L);
    if (
period == 2) {
      
expire *= 2L;
    } 
Это же код ServerData, где собственно все связанное с бд
PHP код:
    public static class DonateSkill
  
{
    public 
int cls;
    public 
int id;
    public 
int lvl;
    public 
long expire;
    public 
int priceId;
    public 
int priceCount;
    public 
String priceName;
    public 
String icon;
    public 
String info;

    public 
DonateSkill(int clsint idint lvllong expire)
    {
      
this.cls cls;
      
this.id id;
      
this.lvl lvl;
      
this.expire expire;
    }

    public 
DonateSkill(int clsint idint lvllong expireint priceIdint priceCountString priceNameString iconString info) {
      
this.cls cls;
      
this.id id;
      
this.lvl lvl;
      
this.expire expire;
      
this.priceId priceId;
      
this.priceCount priceCount;
      
this.priceName priceName;
      
this.icon icon;
      
this.info info;
    }
  } 
мозг кипит, а сердце просит
__________________
Ненависть врага - высшая награда! (с)
Injection вне форума Ответить с цитированием
Непрочитано 06.07.2013, 00:52   #8
Аватар для Mifesto
Пользователь

По умолчанию Re: После рестарта пропадают временные скиллы

вот тут и ошибка, нужно делать:
Код:
long expire = TimeUnit.DAYS.toMillis(15L);
if (period == 2)
   expire *= 2L;
expire += System.currentTimeMillis();
т.е. к этим 15 или 30 дням добавляем текущее время.

П.С. Сложно помочь когда видишь только огрызки.
Mifesto вне форума Отправить сообщение для Mifesto с помощью ICQ Ответить с цитированием
Сказали спасибо:
Непрочитано 06.07.2013, 02:54   #9
Аватар для Injection
Пользователь

Автор темы (Топик Стартер) Re: После рестарта пропадают временные скиллы

Цитата:
Сообщение от Mifesto Посмотреть сообщение
вот тут и ошибка, нужно делать:
Код:
long expire = TimeUnit.DAYS.toMillis(15L);
if (period == 2)
   expire *= 2L;
expire += System.currentTimeMillis();
т.е. к этим 15 или 30 дням добавляем текущее время.

П.С. Сложно помочь когда видишь только огрызки.
Слышал такое) спасибо но не помогло
Выложу полный код, мб кто найдет косяк..
Покупаю скилл,скилл даётся,делаю релог все ок,пишет скилл до: и т.д, все значения в z_donate_skills забрасываются, но после рестрта скилл пропадает, не пишет до какого числа сервис и тд, в бд все сотается так же как и было до рестрта ничего не исчезает и не меняется, в общем как мне кажется и не считывает с БД значения после РРа, если кто допетрит отпишитесь пожалуйста

L2DonateInstance:
Свернуть ↑Развернуть ↓


ServerData:
Свернуть ↑Развернуть ↓


L2PcInstance:
Свернуть ↑Развернуть ↓
__________________
Ненависть врага - высшая награда! (с)
Injection вне форума Ответить с цитированием
Непрочитано 06.07.2013, 03:31   #10
Аватар для Mifesto
Пользователь

По умолчанию Re: После рестарта пропадают временные скиллы

а можно полный L2PcInstance?
Mifesto вне форума Отправить сообщение для Mifesto с помощью ICQ Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
После рестарта пропадают кланы stopsay Lineage II 14 11.11.2010 15:18
[Продам] Lineage2 Interlude от команды RusTeam TARAN Рынок / Marketplace 2 29.05.2010 17:17
itamename-e.dat UFODriverr Lineage II 4 25.04.2010 09:37
[L2Emu] После рестарта пропадают кланы RHadm Lineage II 3 26.08.2009 11:10


© 2007–2020 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 21:06. Часовой пояс GMT +3.

Вверх