Ir para conteúdo
  • Cadastre-se

Doomed

Membro
  • Total de itens

    12
  • Registro em

  • Última visita

Sobre Doomed

  • Data de Nascimento 08/20/1988

Informação do Perfil

  • Gênero
    Masculino

Doomed's Achievements

Aprendiz de Novato

Aprendiz de Novato (1/14)

1

Reputação

  1. Já criei a texturaJá transformei em UTXJá coloquei na pasta systexturesJá criei o XML desse itemAgora vem os problemas.No servidor (Helios) não tem uma tabela descrevendo os itens em sql, porém, não tem problema pois eles estão todos nos arquivos XML (acho isso até bom) eu ja os localizei e ja alterei o que precisava ser alteradoPorém, na pasta System do lineage 2, tem os arquivos etcitemgrp.dat e itemname-e.dat.No itemname-e.dat os itens não tem nome, apenas o ID do item e o ID do nome.No etcitemgrp.dat tem o ID do item e o ID da textura, mas nada do nome da textura.Então, deve ter um arquivo responsável pela enumeração das texturas(?), acredito que isso seja para facilitar o processo de mudar de aparência dos itens (coisa de GOD+), preciso saber qual arquivo é esse.
  2. Doomed

    Como criar um item!

    Tenho uma dúvida em aberto que se encaixa na do colega acima, como criar um item custom. Já criei a textura Já transformei em UTX Já coloquei na pasta systextures Já criei o XML desse item Agora vem os problemas. No servidor (Helios) não tem uma tabela descrevendo os itens em sql, porém, não tem problema pois eles estão todos nos arquivos XML (acho isso até bom) Porém, na pasta System do lineage 2, tem os arquivos etcitemgrp.dat e itemname-e.dat. No itemname-e.dat os itens não tem nome, apenas o ID do item e o ID do nome. No etcitemgrp.dat tem o ID do item e o ID da textura, mas nada do nome da textura. Então, deve ter um arquivo responsável pela enumeração das texturas, acredito que isso seja para facilitar o processo de mudar de aparência dos itens (coisa de GOD+), preciso saber qual arquivo é esse.
  3. Doomed

    Criar função NPC

    Da uma olhadinha no tópico que acho que pode te ajudar!
  4. Doomed

    Criar função NPC

    Foi de grande ajuda! No final das contas, não e exatamente uma classe responsável por distinguir os comandos, é um emaranhado de classes, mas o que procurava eu encontrei na classe: package ...gameserver.network.client.recv.RequestBypassToServer.java try { if (_command.startsWith("admin_")) { activeChar.useAdminCommand(_command); } else if (CommunityBoardHandler.getInstance().isCommunityBoardCommand(_command)) { CommunityBoardHandler.getInstance().handleParseCommand(_command, activeChar); } else if (_command.equals("come_here") && activeChar.isGM()) { comeHere(activeChar); } else if (_command.startsWith("npc_")) { int endOfId = _command.indexOf('_', 5); String id; if (endOfId > 0) { id = _command.substring(4, endOfId); } else { id = _command.substring(4); } if (Util.isDigit(id)) { WorldObject object = World.getInstance().findObject(Integer.parseInt(id)); if ((object != null) && object.isNpc() && (endOfId > 0) && activeChar.isInsideRadius(object, Npc.INTERACTION_DISTANCE, false, false)) { ((Npc) object).onBypassFeedback(activeChar, _command.substring(endOfId + 1)); } } else { activeChar.sendDebugMessage("ObjectId of npc bypass is not digit: " + id); } activeChar.sendPacket(ActionFailed.STATIC_PACKET); } else if (_command.startsWith("item_")) { int endOfId = _command.indexOf('_', 5); String id; if (endOfId > 0) { id = _command.substring(5, endOfId); } else { id = _command.substring(5); } try { final ItemInstance item = activeChar.getInventory().getItemByObjectId(Integer.parseInt(id)); if ((item != null) && (endOfId > 0)) { item.onBypassFeedback(activeChar, _command.substring(endOfId + 1)); } activeChar.sendPacket(ActionFailed.STATIC_PACKET); } catch (NumberFormatException nfe) { _log.warn("NFE for command [" + _command + "]", nfe); } } else if (_command.startsWith("_match")) { String params = _command.substring(_command.indexOf("?") + 1); StringTokenizer st = new StringTokenizer(params, "&"); int heroclass = Integer.parseInt(st.nextToken().split("=")[1]); int heropage = Integer.parseInt(st.nextToken().split("=")[1]); int heroid = Hero.getInstance().getHeroByClass(heroclass); if (heroid > 0) { Hero.getInstance().showHeroFights(activeChar, heroclass, heroid, heropage); } } else if (_command.startsWith("_diary")) { String params = _command.substring(_command.indexOf("?") + 1); StringTokenizer st = new StringTokenizer(params, "&"); int heroclass = Integer.parseInt(st.nextToken().split("=")[1]); int heropage = Integer.parseInt(st.nextToken().split("=")[1]); int heroid = Hero.getInstance().getHeroByClass(heroclass); if (heroid > 0) { Hero.getInstance().showHeroDiary(activeChar, heroclass, heroid, heropage); } } else if (_command.startsWith("_olympiad?command")) { int arenaId = Integer.parseInt(_command.split("=")[2]); final IBypassHandler handler = BypassHandler.getInstance().getHandler("arenachange"); if (handler != null) { handler.useBypass("arenachange " + (arenaId - 1), activeChar, null); } } else if (_command.startsWith("menu_select")) { final Npc lastNpc = activeChar.getLastFolkNPC(); if ((lastNpc != null) && lastNpc.canInteract(activeChar)) { final String[] split = _command.substring(_command.indexOf("?") + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); final int reply = Integer.parseInt(split[1].split("=")[1]); EventDispatcher.getInstance().notifyEventAsync(new OnNpcMenuSelect(activeChar, lastNpc, ask, reply), lastNpc); } } else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = activeChar.getLastFolkNPC(); if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(activeChar)) { final String[] split = _command.substring(_command.indexOf("?") + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); final int state = Integer.parseInt(split[1].split("=")[1]); final boolean time = split[2].split("=")[1].equals("1"); EventDispatcher.getInstance().notifyEventAsync(new OnNpcManorBypass(activeChar, lastNpc, ask, state, time), lastNpc); } } else { final IBypassHandler handler = BypassHandler.getInstance().getHandler(_command); if (handler != null) { if (bypassOriginId > 0) { WorldObject bypassOrigin = World.getInstance().findObject(bypassOriginId); if ((bypassOrigin != null) && bypassOrigin.isCreature()) { handler.useBypass(_command, activeChar, (Creature) bypassOrigin); } else { handler.useBypass(_command, activeChar, null); } } else { handler.useBypass(_command, activeChar, null); } } else { _log.warn(client + " sent not handled RequestBypassToServer: [" + _command + "]"); } } } catch (Exception e) { _log.warn("Exception processing bypass from player " + activeChar.getName() + ": " + _command, e); if (activeChar.isGM()) { StringBuilder sb = new StringBuilder(200); sb.append("<html><body>"); sb.append("Bypass error: " + e + "<br1>"); sb.append("Bypass command: " + _command + "<br1>"); sb.append("StackTrace:<br1>"); for (StackTraceElement ste : e.getStackTrace()) { sb.append(ste.toString() + "<br1>"); } sb.append("</body></html>"); // item html final NpcHtmlMessage msg = new NpcHtmlMessage(0, 1, sb.toString()); msg.disableValidation(); activeChar.sendPacket(msg); } } } Essa classe da uma boa filtrada nos comandos recebidos, e tem a classe responsável pela implementação da interface que executa os comandos depois de filtrados: ...gameserver.model.actor.Npc.java public void onBypassFeedback(PlayerInstance player, String command) { // if (canInteract(player)) { IBypassHandler handler = BypassHandler.getInstance().getHandler(command); if (handler != null) { handler.useBypass(command, player, this); } else { _log.info(getClass().getSimpleName() + ": Unknown NPC bypass: \"" + command + "\" NpcId: " + getId()); } } } Deixei isso para caso alguém achei relevante.
  5. Bom dia galera! Estou adicionando algumas texturas e icones novos, porém, ao abrir o arquivo: EtcItemgrp.dat, o que antes era simples, pois bastava editar o ID do item junto com o UTX que ele usava, agora esta diferente, no lugar do nome da textura, tem um número.... Exemplo: Adena: 2 57 0 5 4 1 1 12373 2 12374 12375 12372 1 1 1 1 -1 0 3 0 0 1 0 0 1 1 4 1 1 1 1 12376 1 3 0 0 Não tem o nome das texturas, apenas números (12373, 12374, 12375, 12372 e 12376). Como faço para configurar um item com novas texturas adicionadas?
  6. Bom dia galera! Sei que tenho umas perguntas idiotas aos olhares mais experientes, desculpem por isso, pesquisei antes e não achei o que precisava, pode até ser que ja tenha algum conteúdo sobre o assunto e eu não estou sabendo exatamente como procurar. Estou tentando criar uma nova função em um NPC, estou com dúvidas sobre a comunicação entre o HTML com a engine (Java). Peguei um NPC aleatório para servir de exemplo, nele contem um texto qualquer e um botão chamado "Quest". Este botão está da seguinte forma: <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> Entendo que: "Button" refere-se ao HTML dizendo que isto é um botão; "ALIGN=LEFT" está dizendo que o botão estará alinhado a esquerda dentro da caixa de diálogo do NPC; "ICON="QUEST"" está informando que icone deste botão e o chamado "QUEST"; "action="bypass -h npc_%objectId%_Quest"" é onde a mágica acontece, está informando a ação do botão, minha dúvida é como esta ação chega ao Java, deve existir um conjunto de classes responsáveis por receber essas informações e processa-la, qual seria? Este comando vai direto ao core ou tem um intermediário que atua na comunicação, talvez este bypass? Resumindo, preciso saber como este comando "bypass -h npc_%objectId%_Quest" chega ao servidor. Obrigado!
  7. Área errada, eu sei, mas não sei onde posso colocar, muitas áreas estão bloqueadas pra mim... [Hidden Content] Bom aproveito!
  8. Desculpe, vou tentar ser mais específico. Exemplos: Na janela do Inventário, onde tem seus itens e equipamentos tem duas abas, "Itens" e "Quests"; Eu quero criar uma nova aba Na parte de equipamentos, um novo slot de equipamento Na janela de Skills, novos botões Queria também adicionar e alterar algumas funções do "Auctioner" (aquele npc onde vc coloca os itens para vender), na parte do servidor ele se chama "Comission" Obrigado novamente!
  9. Boa tarde pessoal! No meu projeto, existe a necessidade de alterar algumas janelas, para mostrar mais ou menos informações nelas, mas antes de tocar no código do servidor, preciso alterar a interface gráfica. Imagino que essas interfaces estejam em algum pacote dentro do cliente, alguém tem alguma ideia de onde possam estar ou qual arquivo tem maior chance de estar? Obrigado! EDIT: No inventário do GOD+ existem os botões para lixeira e crystalizar, caso queira adicionar um novo botão, ou campo para um terceiro anel, ou nas abas "Itens" e "Quests" caso queira adicionar uma nova aba.
  10. Boa tarde galera! Estou a procura de sources boas para servidor RETAIL mais atuais possível, preferência por Grand Crusade mas não conheço nenhuma, preciso de indicações. Obrigado!
  11. É verdade, entrei em faze de testes, e de fato ficou muita coisa.... estou de ver com 2 e com 3 por level, mas acredito q o ideal seja 2 mesmo! Vlw a opinião!
  12. Boa noite! Estou trabalhando em um projeto de servidor, e estou aqui pois tenho minhas ideias, mas a opinião alheia me interessa muito, afinal quem faz um verdadeiro servidor, sao os jogadores! L2 Wishes Rate XP = 15x Rate SP = 15x Rate Adena = 20x?? Itens D, C = NPC ou Craft Itens B, A, S, S80, S84 = Retail Buffs = Retail Quests = Retail NPC Buffer = NAO TEM GM Shop = NAO TEM Enchants = Ate +25 Enchants Rate = 75% Customs: Level Maximo = 100 A partir do lvl 86, tendo uma sub + nobless o player tem direito a 4 skills de qualquer classe por level (86 = 4 skills 87 = 8 skills 88 = 12 skills) PS: isso resolve o problema do balanceamento de raças, e deixa o game mais emocionante pois nenhuma classe será igual a outra E para upar ate o lvl 100? mobs Hellbound = lvl 90 ~ 95 (com status levemente alterados, pois os players serão mais fortes) mobs Gracia = lvl 94 ~ 98 (com status mediamente alterados, pois os players serão bem mais fortes) Grand Bosses (Baium, Antharas, Valakas, Frintezza e Raids Lvl alto) = upados para o level 106 e terao os status fortemente editados Pretendo deixar o maximo possivel RETAIL, pois o PvE e mt procurado, mas pretendo equilibrar o PvE x PvP. Os mods declarados, ja estão sendo feitos, e estão quase concluidos e indo para faze de testes. Duvidas, Sujestões, Criticas... Poste, pois se não quise-se opiniões, não criaria um topico em um forum tão movimentado... :rolleyes: Braxxx!!!
×
×
  • Criar Novo...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.