Jump to content

Chaazy

Membro
  • Content Count

    110
  • Joined

  • Last visited

  • Days Won

    1

Chaazy last won the day on February 23 2019

Chaazy had the most liked content!

Community Reputation

12 Normal

3 Followers

About Chaazy

  • Rank
    Muito Noob
  • Birthday 02/08/1997

Profile Information

  • Gênero:
    Masculino

Recent Profile Visitors

2,728 profile views
  1. Amigo, já tem um dress.me adaptado pra frozen aqui no fórum. https://www.l2jbrasil.com/topic/119189-dressme-interlude-acis-l2jfrozen/
  2. Chaazy

    Baium Bugado

    no caso da frozen, options.properties # Delete dropped reward items from world after a specified amount of seconds. Disabled = 0. AutoDestroyDroppedItemAfter = 360 <- Tempo em segundos, que o drop fica no chão.
  3. Deixa eu ver se entendi, você quer usar um item como moeda no jogo com a aparência do ticket? Se for isso é mais fácil você criar um novo item. Fazendo isso você pode colocar o nome que deseja, se pode ser comercializado, dropado etc...
  4. Amigo você já procurou nas sua configs? head/other.preperties. Geralmente fica lá, caso realmente não encontre nada eu aconselho você fazer como Zeron disse. Migre seus arquivos para uma revisão com source. A maioria das compiladas aqui do fórum possuem muitos bugs que ainda não foram corrigidos, outras são versões antigas. Abraço.
  5. Correção para as skills da frozen.
  6. Acho que deve ser isso que esta procurando.
  7. Meu amigo você é demais! Problema resolvido! Vou postar a correção no tópico dos fixes da Frozen 1132. Muito Obrigado KhayrusS. Abraço
  8. Vou postar todos os códigos. StoreEffect @SuppressWarnings("null") private synchronized void storeEffect() { if (!Config.STORE_SKILL_COOLTIME) return; Connection con = null; try { con = L2DatabaseFactory.getInstance().getConnection(false); PreparedStatement statement; // Delete all current stored effects for char to avoid dupe statement = con.prepareStatement(DELETE_SKILL_SAVE); statement.setInt(1, getObjectId()); statement.setInt(2, getClassIndex()); statement.execute(); DatabaseUtils.close(statement); // Store all effect data along with calulated remaining // reuse delays for matching skills. 'restore_type'= 0. final L2Effect[] effects = getAllEffects(); statement = con.prepareStatement(ADD_SKILL_SAVE); final List<Integer> storedSkills = new FastList<>(); int buff_index = 0; for (final L2Effect effect : effects) { final int skillId = effect.getSkill().getId(); if (storedSkills.contains(skillId)) continue; storedSkills.add(skillId); if (effect != null && effect.getInUse() && !effect.getSkill().isToggle() && !effect.getStackType().equals("BattleForce") && !effect.getStackType().equals("SpellForce") && effect.getSkill().getSkillType() != SkillType.FORCE_BUFF) { statement.setInt(1, getObjectId()); statement.setInt(2, skillId); statement.setInt(3, effect.getSkill().getLevel()); statement.setInt(4, effect.getCount()); statement.setInt(5, effect.getTime()); if (ReuseTimeStamps.containsKey(effect.getSkill().getReuseHashCode())) { final TimeStamp t = ReuseTimeStamps.get(effect.getSkill().getReuseHashCode()); statement.setLong(6, t.hasNotPassed() ? t.getReuse() : 0); statement.setLong(7, t.hasNotPassed() ? t.getStamp() : 0); } else { statement.setLong(6, 0); statement.setLong(7, 0); } statement.setInt(8, 0); statement.setInt(9, getClassIndex()); statement.setInt(10, ++buff_index); statement.execute(); } } // Store the reuse delays of remaining skills which // lost effect but still under reuse delay. 'restore_type' 1. for (final TimeStamp t : ReuseTimeStamps.values()) { if (t.hasNotPassed()) { final int skillId = t.getSkill().getId(); final int skillLvl = t.getSkill().getLevel(); if (storedSkills.contains(skillId)) continue; storedSkills.add(skillId); statement.setInt(1, getObjectId()); statement.setInt(2, skillId); statement.setInt(3, skillLvl); statement.setInt(4, -1); statement.setInt(5, -1); statement.setLong(6, t.getReuse()); statement.setLong(7, t.getStamp()); statement.setInt(8, 1); statement.setInt(9, getClassIndex()); statement.setInt(10, ++buff_index); statement.execute(); } } DatabaseUtils.close(statement); } catch (final Exception e) { LOGGER.warn("Could not store char effect data: "); e.printStackTrace(); } finally { CloseUtil.close(con); } } restoreEffect public void restoreEffects(final boolean activateEffects) { Connection con = null; try { con = L2DatabaseFactory.getInstance().getConnection(false); PreparedStatement statement; ResultSet rset; /** * Restore Type 0 These skill were still in effect on the character upon logout. Some of which were self casted and might still have had a long reuse delay which also is restored. */ statement = con.prepareStatement(RESTORE_SKILL_SAVE); statement.setInt(1, getObjectId()); statement.setInt(2, getClassIndex()); statement.setInt(3, 0); rset = statement.executeQuery(); while (rset.next()) { final int skillId = rset.getInt("skill_id"); final int skillLvl = rset.getInt("skill_level"); final int effectCount = rset.getInt("effect_count"); final int effectCurTime = rset.getInt("effect_cur_time"); final long reuseDelay = rset.getLong("reuse_delay"); final long systime = rset.getLong("systime"); // Just incase the admin minipulated this table incorrectly :x if (skillId == -1 || effectCount == -1 || effectCurTime == -1 || reuseDelay < 0) { continue; } if (activateEffects) { L2Skill skill = SkillTable.getInstance().getInfo(skillId, skillLvl); skill.getEffects(this, this, false, false, false); skill = null; for (final L2Effect effect : getAllEffects()) { if (effect.getSkill().getId() == skillId) { effect.setCount(effectCount); effect.setFirstTime(effectCurTime); } } } final long remainingTime = systime - System.currentTimeMillis(); if (remainingTime > 10) { final L2Skill skill = SkillTable.getInstance().getInfo(skillId, skillLvl); if (skill == null) continue; disableSkill(skill, remainingTime); addTimeStamp(new TimeStamp(skill, reuseDelay, systime)); } } DatabaseUtils.close(rset); DatabaseUtils.close(statement); rset = null; statement = null; /** * Restore Type 1 The remaning skills lost effect upon logout but were still under a high reuse delay. */ statement = con.prepareStatement(RESTORE_SKILL_SAVE); statement.setInt(1, getObjectId()); statement.setInt(2, getClassIndex()); statement.setInt(3, 1); rset = statement.executeQuery(); while (rset.next()) { final int skillId = rset.getInt("skill_id"); final int skillLvl = rset.getInt("skill_level"); final long reuseDelay = rset.getLong("reuse_delay"); final long systime = rset.getLong("systime"); final long remainingTime = systime - System.currentTimeMillis(); if (remainingTime > 0) { final L2Skill skill = SkillTable.getInstance().getInfo(skillId, skillLvl); if (skill == null) continue; disableSkill(skill, remainingTime); addTimeStamp(new TimeStamp(skill, reuseDelay, systime)); } } DatabaseUtils.close(rset); DatabaseUtils.close(statement); rset = null; statement = con.prepareStatement(DELETE_SKILL_SAVE); statement.setInt(1, getObjectId()); statement.setInt(2, getClassIndex()); statement.executeUpdate(); DatabaseUtils.close(statement); statement = null; } catch (final Exception e) { if (Config.ENABLE_ALL_EXCEPTIONS) e.printStackTrace(); LOGGER.warn("Could not restore active effect data: " + e); } finally { CloseUtil.close(con); } updateEffectIcons(); } TimeStamp public static class TimeStamp { public long getStamp() { return stamp; } public L2Skill getSkill() { return skill; } public long getReuse() { return reuse; } public long getRemaining() { return Math.max(stamp - System.currentTimeMillis(), 0L); } protected boolean hasNotPassed() { return System.currentTimeMillis() < stamp; } private final L2Skill skill; private final long reuse; private final long stamp; protected TimeStamp(final L2Skill _skill, final long _reuse) { skill = _skill; reuse = _reuse; stamp = System.currentTimeMillis() + reuse; } protected TimeStamp(final L2Skill _skill, final long _reuse, final long _systime) { skill = _skill; reuse = _reuse; stamp = _systime; } } /** * Index according to skill id the current timestamp of use. * @param s the s * @param r the r */ @Override public void addTimeStamp(final L2Skill s, final int r) { ReuseTimeStamps.put(s.getReuseHashCode(), new TimeStamp(s, r)); } /** * Index according to skill this TimeStamp instance for restoration purposes only. * @param T the t */ private void addTimeStamp(final TimeStamp T) { ReuseTimeStamps.put(T.getSkill().getId(), T); } /** * Index according to skill id the current timestamp of use. * @param s the s */ @Override public void removeTimeStamp(final L2Skill s) { ReuseTimeStamps.remove(s.getReuseHashCode()); } public Collection<TimeStamp> getReuseTimeStamps() { return ReuseTimeStamps.values(); } public void resetSkillTime(final boolean ssl) { final L2Skill arr$[] = getAllSkills(); for (final L2Skill skill : arr$) { if (skill != null && skill.isActive() && skill.getId() != 1324) enableSkill(skill); } if (ssl) sendSkillList(); sendPacket(new SkillCoolTime(this)); } Valor da ADD/RESTORE skills save /** The Constant ADD_SKILL_SAVE. */ // private static final String ADD_SKILL_SAVE = "INSERT INTO character_skills_save (char_obj_id,skill_id,skill_level,effect_count,effect_cur_time,reuse_delay,restore_type,class_index,buff_index) VALUES (?,?,?,?,?,?,?,?,?)"; private static final String ADD_SKILL_SAVE = "INSERT INTO character_skills_save (char_obj_id,skill_id,skill_level,effect_count,effect_cur_time,reuse_delay,systime,restore_type,class_index,buff_index) VALUES (?,?,?,?,?,?,?,?,?,?)"; /** The Constant RESTORE_SKILL_SAVE. */ private static final String RESTORE_SKILL_SAVE = "SELECT skill_id,skill_level,effect_count,effect_cur_time, reuse_delay, systime FROM character_skills_save WHERE char_obj_id=? AND class_index=? AND restore_type=? ORDER BY buff_index ASC"; Acho que são esses os responsaveis.
  9. Sim. O mais estranho é que esse bug não estão em todas as skills.
  10. Altere essa linha na sua config "AntharasWaitTime = 30" O numero é representado em minutos assim que vc entrou na caverna com a quest, mude para 5 pra focar mais rápido.
  11. Aparentemente esta correta. Só o shield esta dando esse error? Verifique se a sql esta registrada em seu banco de dados.
  12. Amigo, valakas/frintezza e antharas são diferentes. Eles só logam depois de um determinado tempo (que esta configurado em seu boss.properties ) quando você entra com o item da quest. No caso do zaken se ele estiver vivo e você não esteja vendo ele, talvez ele esteja bugado, use o comando do seu admin e teleporte para as coodernadas que esta presente na grandboss_data, o id do zaken é 29022. Já aconteceu comigo dele estar no teto da montanha. Caso ele esteja bugado no barco em algum lugar, as coodernadas originais dele são (x=55312/y=219168/z=-3224) basta você adiciona-las.
×
×
  • Create New...