Jump to content

KhayrusS

AmigosL2JBR
  • Content Count

    3,685
  • Joined

  • Last visited

  • Days Won

    28

Everything posted by KhayrusS

  1. GM Shop basicamente é igual a maioria dos projetos, utiliz Multisell. Quanto ao NPC Buffer, já existe um. Caso precise de outros acredito que os npcs de versões mais recentes sejam mais fáceis de adaptar
  2. Esse problema é devido a incompatibilidade da system com cliente. Tenta achar uma system compatível.
  3. Qual Revisão está utilizando ? Na maioria existe um itemhandler "Soulshots.java" que em versões mais antigas é necessário registrar o Id do item. Além disso, pode ser que haja alguma condição para ativar baseado na grade e no id do item.
  4. Qual tipo de NPC ? adaptação de cliente ou servidor ? vê esse post É Secret, como não uso esse .bat esqueci de mudar 🙂
  5. É isso mesmo, remove o stackOrder e o stackType
  6. Segue o link https://drive.google.com/uc?id=1cjXeceqcEYjvzF1OMDk8snB8nnC4KsVx&export=download
  7. KhayrusS

    Mysql

    Você pode seguir o manual do MySql https://dev.mysql.com/doc/refman/8.0/en/multiple-servers.html
  8. A verificação é feita nessa parte: else if (getCastle().getOwnerId() == player.getClanId() // Clan owns castle && (player.getClanPrivileges() & L2Clan.CP_CS_MANOR_ADMIN) == L2Clan.CP_CS_MANOR_ADMIN) // Leader of clan return COND_OWNER; // Owner Você pode remover a verificação de privilégio, assim qualquer membro do clan tem acesso: else if (getCastle().getOwnerId() == player.getClanId() ) // Clan owns castle return COND_OWNER; // Owner Ou você pode mudar o privilégio "L2Clan.CP_CS_MANOR_ADMIN" para um de mais baixo nível, assim apenas os membros que tenham o privilégio têm acesso.
  9. Pelo que entendi esse erro acontece devido a uma variável de ambiente do windows que retorna "hora oficial do brasil" quando o MySQL busca a informação de "timezone" do sistema. Você pode resolver esse problema passando uma timezone válida (UTC por exemplo) na configuração de conexão com o Banco através da propriedade "serverTimezone" , ou pode configurar o timezone diretamente no Mysql. Para a segunda opção você pode seguir o manual do Mysql: https://dev.mysql.com/doc/refman/8.0/en/time-zone-support.html
  10. Você modificou algo relacionado a zonas ?
  11. Na versão que está atualmente no branch master existe um pequeno problema com relação a codificação de alguns caracteres no Windows. O que acontece basicamente é que o java/windows interpreta alguns arquivos utilizando o encode windows-1252 ao invés de UTF-8. Nesse arquivo, especificamente, o caractere § não é reconhecido, daí surge esse erro. Esse problema já foi corrigido no branch development no commit https://github.com/JoeAlisson/L2jOrg/commit/940900e3e2ea12cdd76e28a0db74e3e2dcec988b#diff-c197962302397baf3a4cc36463dce5ea
  12. O projeto utiliza o Gradle como ferramenta de build e gerenciamento de dependências. Por isso não existe o "ant build" que é uma opção de outra ferramenta de build, o Ant. Esse link https://www.jetbrains.com/help/idea/gradle.html#gradle_import_project_start tem a documentação de como importar um projeto gradle no IntelliJ. O processo de compilação é bem simples e existem várias formas de fazer. Uma das formas de realizar o build é totalmente independe de IDE. Você pode fazer até pelo CMD/Terminal, mas aqui vou falar como fazer no Intellij. Aperte alt+F12, isso vai abrir a janela terminal. No terminal só executar o seguinte comando: (Esses mesmos comandos podem ser executados no CMD ou Terminal dentro da raiz do projeto) No Linux: ./gradlew distZip No Windows gradlew.bat distZip Esse comando faz o download das dependências do projeto e realiza o build. Será gerado um arquivo .zip na pasta build/distributions. Alternativamente você também pode utilizar a task distTar ao invés de distZip, a diferença é apenas o formato do arquivo gerado. Outra forma de realizar é através da IDE, após importar o projeto geralmente aparece uma janela com o nome "Gradle" na barra de ferramentas do lado direito do IntelliJ. Caso não apareça é só apertar ctrl+shift+a e pesquisar por Gradle. É nessa janela que é mostrado a estrutura do projeto conforme a imagem abaixo. Caso a estrutura do projeto não apareça ou esteja diferente dessa imagem, é provável que houve algum erro importação do projeto, você pode tentar reimportar o projeto utilizando o primeiro botão, que tem o ícone de duas setas. Para realizar o build é só dar dois cliques na task distZip, o resultado é o mesmo que executar o comando pelo terminal. Um problema que você pode encontrar é que o projeto atualmente utiliza "features preview" do Java 12. Por padrão o IntelliJ não reconhece que essas funções são válidas então é preciso configurar isso. Acredito que esse foi por isso que encontrou diversos erros ao tentar dar build. A mensagem do erro é geralmente essa: Error:(41, 26) java: switch rules are a preview feature and are disabled by default. (use --enable-preview to enable switch rules) O erro está descrevendo que o problema é que o código está utilizando "switch rules" que é uma funcionalidade "preview" e essas funcionalidades são desativadas por padrão. Para corrigir é bem simples, dê dois cliques em algum dos erros que apareceram, isso vai abrir a parte do código que está causando o problema. Coloque o cursor do mouse em alguma parte do error e aperte Alt + Enter, irá aparecer um diálogo, escolha a opção "Set language level to 12 (Preview)", conforme a imagem abaixo. Feito isso os erros deverão deixar de ocorrer. Lembrando que esses erros acontecem apenas dentro do build realizado pela própria IDE, utlizando os métodos que descrevi acima esses erros não acontecem, devido a configuração de preview está configurada nos scripts do Gradle. Uma coisa que acontece é que ao reimportar o projeto, esse mesmo erro volta a acontecer, então é necessário realizar esses passos mais uma vez. []'s
  13. Bom dia, existem várias coisas com que pode ajudar que englobam todos os níveis de conhecimento, do iniciante ao avançado. Seguem dois artigos que abordam como contribuir para projetos open souce: https://medium.com/trainingcenter/contribuindo-para-projetos-open-source-no-github-mesmo-sendo-iniciante-25a5a0ad6215 https://willianjusten.com.br/guia-como-contribuir-em-open-source/ Basicamente você pode contribuir de acordo com o seu nível de experiência, Por exemplo: Iniciantes -> Testes e correções de status de skill e itens; Intermediários -> Correções de código Java; Avançados -> Implementações de novas funcionalidades. Lógico que isso são apenas exemplos e nada impede que alguém que seja iniciante se aventure com coisas mais avançadas. Eu farei revisões de qualquer contribuição e tentarei dar dicas de como melhorar, caso necessário 🙂 []'s
  14. @Czekay, O Eclipse atualmente não suporta projetos "Jigsaw" (projetos multi-module). O próprio lider de desenvolvimento do Gradle recomenda que por enquanto seja o usado o IDEA (https://github.com/eclipse/buildship/issues/708). Existe um "workaround" aqui https://github.com/eclipse/buildship/issues/658, mas ainda não funcionou 100%. Permanece alguns erros no arquivo module-info.java. Como esses erros não impedem o build do projeto e por haver uma IDE que tem suporte (IntelliJ IDEA, que eu particulamente prefiro) não irei tratar desse problema nesse momento.
  15. Faz um teste: restaura teu banco de dados (deleta e recria xD). Tenta outra vez. Se continuar da mesma forma aconselho mudar de revisão. Só para desencargo de consciência, você alterou alguma configuração relativa ao IdFactory ? Se não alterou nada, o bug pode até ser fácil de corrigir, mas sem o código fonte, não dá.
  16. Acontece todas as vezes que você cria um novo ?
  17. Pelo erro aparenta ser algum bug no IdFactory. De alguma forma ele gerou um id já utilizado anteriormente. Você possui o source ?
  18. Posta o como ficou esses arquivos que estão com erros
  19. Não necessariamente, existem dois principais tipos de erro: sintático e semântico, o eclipse só não faz o build se o erro for do tipo sintático, ou seja o código está escrito em desacordo com a gramática do Java. Já o semântico é o que chamamos de "erro de lógica" ou bug, ou seja o código não faz o que deveria fazer.
  20. Reveja se colocou essa parte corretamente: Index: head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java =================================================================== --- head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java (revision 900) +++ head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java (working copy) @@ -410,7 +410,7 @@ * =?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=? * ,char_name=?,death_penalty_level=?,good=?,evil=?,gve_kills=? WHERE obj_id=? **/ - private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,str=?,con=?,dex=?,_int=?,men=?,wit=?,face=?,hairStyle=?,hairColor=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,pvpkills=?,pkkills=?,rec_have=?,rec_left=?,clanid=?,maxload=?,race=?,classid=?,deletetime=?,title=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,punish_level=?,punish_timer=?,newbie=?,nobless=?,power_grade=?,subpledge=?,last_recom_date=?,lvl_joined_academy=?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=?,pc_point=?,name_color=?,title_color=?,aio=?,aio_end=? WHERE obj_id=?"; + private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,str=?,con=?,dex=?,_int=?,men=?,wit=?,face=?,hairStyle=?,hairColor=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,pvpkills=?,pkkills=?,rec_have=?,rec_left=?,clanid=?,maxload=?,race=?,classid=?,deletetime=?,title=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,punish_level=?,punish_timer=?,newbie=?,nobless=?,power_grade=?,subpledge=?,last_recom_date=?,lvl_joined_academy=?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=?,pc_point=?,name_color=?,title_color=?,aio=?,aio_end=?,vip=?,vip_end=? WHERE obj_id=?";  /** * SELECT account_name, obj_Id, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, acc, crit, evasion, @@ -423,7 +423,7 @@ * FROM characters WHERE obj_id=? **/ //private static final String RESTORE_CHARACTER = "SELECT account_name, obj_Id, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, acc, crit, evasion, mAtk, mDef, mSpd, pAtk, pDef, pSpd, runSpd, walkSpd, str, con, dex, _int, men, wit, face, hairStyle, hairColor, sex, heading, x, y, z, movement_multiplier, attack_speed_multiplier, colRad, colHeight, exp, expBeforeDeath, sp, karma, pvpkills, pkkills, clanid, maxload, race, classid, deletetime, cancraft, title, rec_have, rec_left, accesslevel, online, char_slot, lastAccess, clan_privs, wantspeace, base_class, onlinetime, isin7sdungeon, in_jail, jail_timer, newbie, nobless, power_grade, subpledge, last_recom_date, lvl_joined_academy, apprentice, sponsor, varka_ketra_ally,clan_join_expiry_time,clan_create_expiry_time,death_penalty_level,pc_point,banchat_time,name_color,title_color,first_log,aio,aio_end FROM characters WHERE obj_id=?"; - private static final String RESTORE_CHARACTER = "SELECT account_name, obj_Id, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, acc, crit, evasion, mAtk, mDef, mSpd, pAtk, pDef, pSpd, runSpd, walkSpd, str, con, dex, _int, men, wit, face, hairStyle, hairColor, sex, heading, x, y, z, movement_multiplier, attack_speed_multiplier, colRad, colHeight, exp, expBeforeDeath, sp, karma, pvpkills, pkkills, clanid, maxload, race, classid, deletetime, cancraft, title, rec_have, rec_left, accesslevel, online, char_slot, lastAccess, clan_privs, wantspeace, base_class, onlinetime, isin7sdungeon,punish_level,punish_timer,"+/* in_jail, jail_timer,*/ "newbie, nobless, power_grade, subpledge, last_recom_date, lvl_joined_academy, apprentice, sponsor, varka_ketra_ally,clan_join_expiry_time,clan_create_expiry_time,death_penalty_level,pc_point"+/*,banchat_time*/",name_color,title_color,first_log,aio,aio_end FROM characters WHERE obj_id=?"; + private static final String RESTORE_CHARACTER = "SELECT account_name, obj_Id, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, acc, crit, evasion, mAtk, mDef, mSpd, pAtk, pDef, pSpd, runSpd, walkSpd, str, con, dex, _int, men, wit, face, hairStyle, hairColor, sex, heading, x, y, z, movement_multiplier, attack_speed_multiplier, colRad, colHeight, exp, expBeforeDeath, sp, karma, pvpkills, pkkills, clanid, maxload, race, classid, deletetime, cancraft, title, rec_have, rec_left, accesslevel, online, char_slot, lastAccess, clan_privs, wantspeace, base_class, onlinetime, isin7sdungeon,punish_level,punish_timer,"+/* in_jail, jail_timer,*/ "newbie, nobless, power_grade, subpledge, last_recom_date, lvl_joined_academy, apprentice, sponsor, varka_ketra_ally,clan_join_expiry_time,clan_create_expiry_time,death_penalty_level,pc_point"+/*,banchat_time*/",name_color,title_color,first_log,aio,aio_end,vip,vip_end FROM characters WHERE obj_id=?"; private static final String STATUS_DATA_GET = "SELECT hero, noble, donator, hero_end_date FROM characters_custom_data WHERE obj_Id = ?"; @@ -665,7 +665,10 @@ private boolean _isAio = false; private long _aio_endTime = 0; - + + private boolean _isVip = false; + private long _vip_endTime = 0; + /** Event parameters */ public int eventX; public int eventY; @@ -8359,7 +8362,7 @@ { con = L2DatabaseFactory.getInstance().getConnection(false); PreparedStatement statement; - statement = con.prepareStatement("INSERT INTO characters " + "(account_name,obj_Id,char_name,level,maxHp,curHp,maxCp,curCp,maxMp,curMp," + "acc,crit,evasion,mAtk,mDef,mSpd,pAtk,pDef,pSpd,runSpd,walkSpd," + "str,con,dex,_int,men,wit,face,hairStyle,hairColor,sex," + "movement_multiplier,attack_speed_multiplier,colRad,colHeight," + "exp,sp,karma,pvpkills,pkkills,clanid,maxload,race,classid,deletetime," + "cancraft,title,accesslevel,online,isin7sdungeon,clan_privs,wantspeace," + "base_class,newbie,nobless,power_grade,last_recom_date"/*,banchat_time,*/+",name_color,title_color,aio,aio_end) " + "values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + statement = con.prepareStatement("INSERT INTO characters " + "(account_name,obj_Id,char_name,level,maxHp,curHp,maxCp,curCp,maxMp,curMp," + "acc,crit,evasion,mAtk,mDef,mSpd,pAtk,pDef,pSpd,runSpd,walkSpd," + "str,con,dex,_int,men,wit,face,hairStyle,hairColor,sex," + "movement_multiplier,attack_speed_multiplier,colRad,colHeight," + "exp,sp,karma,pvpkills,pkkills,clanid,maxload,race,classid,deletetime," + "cancraft,title,accesslevel,online,isin7sdungeon,clan_privs,wantspeace," + "base_class,newbie,nobless,power_grade,last_recom_date"/*,banchat_time,*/+",name_color,title_color,aio,aio_end,vip,vip_end) " + "values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); statement.setString(1, _accountName); statement.setInt(2, getObjectId()); statement.setString(3, getName()); @@ -8427,6 +8430,8 @@ statement.setString(59, StringToHex(Integer.toHexString(getAppearance().getTitleColor()).toUpperCase())); statement.setInt(60, isAio() ? 1 :0); statement.setLong(61, 0); + statement.setInt(62, isVip() ? 1 :0); + statement.setLong(63, 0); statement.executeUpdate(); statement.close(); @@ -8660,6 +8665,8 @@ player.setDeathPenaltyBuffLevel(rset.getInt("death_penalty_level")); player.setAio(rset.getInt("aio") == 1 ? true : false); player.setAioEndTime(rset.getLong("aio_end")); + player.setVip(rset.getInt("vip") == 1 ? true : false); + player.setVipEndTime(rset.getLong("vip_end")); // Add the L2PcInstance object in _allObjects //L2World.getInstance().storeObject(player); @@ -9123,8 +9130,11 @@ statement.setInt(60, isAio() ? 1 : 0); statement.setLong(61, getAioEndTime()); - - statement.setInt(62, getObjectId()); + + statement.setInt(62, isVip() ? 1 : 0); + statement.setLong(63, getVipEndTime()); + + statement.setInt(64, getObjectId()); //statement.setLong(58, getChatBanTimer()); @@ -16035,69 +16045,91 @@ _aio_endTime = val; } - public void setEndTime(String process, int val) - { - if (val > 0) - { - long end_day; - Calendar calendar = Calendar.getInstance(); - if (val >= 30) - { - while(val >= 30) - { - if(calendar.get(Calendar.MONTH)== 11) - calendar.roll(Calendar.YEAR, true); - calendar.roll(Calendar.MONTH, true); - val -= 30; - } - } - if (val < 30 && val > 0) - { - while(val > 0) - { - if(calendar.get(Calendar.DATE)== 28 && calendar.get(Calendar.MONTH) == 1) - calendar.roll(Calendar.MONTH, true); - if(calendar.get(Calendar.DATE)== 30) - { - if(calendar.get(Calendar.MONTH) == 11) - calendar.roll(Calendar.YEAR, true); - calendar.roll(Calendar.MONTH, true); - - } - calendar.roll(Calendar.DATE, true); - val--; - } - } - - end_day = calendar.getTimeInMillis(); - if(process.equals("aio")) - _aio_endTime = end_day; - - else - { - System.out.println("process "+ process + "no Known while try set end date"); - return; - } - Date dt = new Date(end_day); - System.out.println(""+process +" end time for player " + getName() + " is " + dt); - } - else - { - if(process.equals("aio")) - _aio_endTime = 0; - - else - { - System.out.println("process "+ process + "no Known while try set end date"); - return; - } - } - } - public long getAioEndTime() { return _aio_endTime; } + + /** Vip System Start */ + public boolean isVip() + { + return _isVip; + } + + public void setVip(boolean val) + { + _isVip = val; + } + + public void setVipEndTime(long val) + { + _vip_endTime = val; + } + + public long getVipEndTime() + { + return _vip_endTime; + } + + public void setEndTime(String process, int val) + { + if (val > 0) + { + long end_day; + Calendar calendar = Calendar.getInstance(); + if (val >= 30) + { + while(val >= 30) + { + if(calendar.get(Calendar.MONTH)== 11) + calendar.roll(Calendar.YEAR, true); + calendar.roll(Calendar.MONTH, true); + val -= 30; + } + } + if (val < 30 && val > 0) + { + while(val > 0) + { + if(calendar.get(Calendar.DATE)== 28 && calendar.get(Calendar.MONTH) == 1) + calendar.roll(Calendar.MONTH, true); + if(calendar.get(Calendar.DATE)== 30) + { + if(calendar.get(Calendar.MONTH) == 11) + calendar.roll(Calendar.YEAR, true); + calendar.roll(Calendar.MONTH, true); + } + calendar.roll(Calendar.DATE, true); + val--; + } + } + end_day = calendar.getTimeInMillis(); + if(process.equals("aio")) + _aio_endTime = end_day; + else if(process.equals("vip")) + _vip_endTime = end_day; + else + { + System.out.println("Process " + process + " no Known while try set end date."); + return; + } + Date dt = new Date(end_day); + System.out.println("" + process + " end time for player " + getName() + " is " + dt + "."); + } + else + { + if(process.equals("aio")) + _aio_endTime = 0; + else if(process.equals("vip")) + _vip_endTime = 0; + else + { + System.out.println("Process " + process + " no Known while try set end date."); + return; + } + } + } + public long getOfflineStartTime() { return _offlineShopStart;
  21. Posso estar enganado, mas acredito que o protocolo da system do NA é 196 🙂 segue o link com algumas systems https://m0nster.art/
  22. Parece que você esqueceu de modificar alguma parte do código ou colocou algo errado, provavelmente no método store da classe L2PcInstance. Qual o link do mod está utilizando ?
  23. É assim mesmo que funciona, ao matar um mob elemental a exp adquirida é do elemento que eles chamam de elemento dominador Fire (Forge of the Gods) XP for Water Spirit Water (Garden of Eva) XP for Earth Spirit Wind (Land of Winds) XP for Fire Spirit Earth (Wall of Argos) XP for Wind Spirit
×
×
  • Create New...