Ir para conteúdo
  • Cadastre-se

HityZ

Membro
  • Total de itens

    217
  • Registro em

  • Última visita

  • Prêmios recebidos

    2

HityZ last won the day on Junho 1

HityZ had the most liked content!

Reputação

42 Normal

Sobre HityZ

  • Rank
    Noob
  • Data de Nascimento 19-12-1991

Profile Information

  • Gênero:
    Masculino
  • Localização:
    Se pá, lá.
  • Interesses:
    Aprender e compartilhar.

Contact Methods

  • Skype:
    hityzgamer

Últimos Visitantes

5.311 visualizações
  1. HityZ

    Sobre Rev

    Obrigado, vou dar uma olhada depois.
  2. HityZ

    Sobre Rev

    Jovem, sabe informar os bugs mais críticos nessa versão da aCis?
  3. HityZ

    INTERLUDE projeto x1

    Parece que foi corrigido na L2JAirin. Alguém sabe mais sobre a base dessa revisão?
  4. Sim, mais tem que remover essa parte: activeChar.getInventory().destroyItemByItemId("ChangeSex", Config.ChangeSex_ITEM_ID, Config.ChangeSex_PRICE, activeChar, activeChar.getTarget());
  5. if(activeChar.getInventory().getItemByItemId(ID DO ITEM) != null && activeChar.getInventory().getItemByItemId(ID DO ITEM).getCount() >= QUANTIDADE) Explicando: if(activeChar.getInventory().getItemByItemId(ID DO ITEM) != null = Aqui ele faz a checagem do player que está tentando usar a função no NPC por exemplo. Ele checa se o jogador tem o item, se sim, aciona a outra parte que vem depois do &&, se não, para por aí mesmo. activeChar.getInventory().getItemByItemId(ID DO ITEM).getCount() >= QUANTIDADE = Aqui faz a checagem de quantidade de itens será necessário para seguir adiante. Se você não quiser com quantidade e só uma unidade do item bastar para acessar o NPC, use o código assim: if (activeChar.getInventory().getItemByItemId(ID DO ITEM) != null) ou if(activeChar.getInventory().getItemByItemId(ID DO ITEM) >= 1)
  6. HityZ

    Guarda atacando player flag

    Tu sabe mexer em Java? Se sim, na aCis vai em gameserver/model/actor/ai/type/AttackableAI Procura a linha: if (target instanceof Player && ((Player) target).getKarma() > 0) E adicione após o 0 isso: || ((Player) target).getPvpFlag() != 0 Ficando assim: if (target instanceof Player && ((Player) target).getKarma() > 0 || ((Player) target).getPvpFlag() != 0) Testa e me fala se funcionou. Até!
  7. HityZ

    MOD DO DROP EM PARTY

    Está completo sim. Coloquei config, quem puder testar. https://pastebin.com/uevvmJ90
  8. HityZ

    MOD DO DROP EM PARTY

    /* * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see <http://www.gnu.org/licenses/>. */ package net.sf.l2j.gameserver.scripting.scripts.custom; import java.util.HashMap; import java.util.List; import net.sf.l2j.gameserver.model.actor.Npc; import net.sf.l2j.gameserver.model.actor.instance.Player; import net.sf.l2j.gameserver.scripting.Quest; import net.sf.l2j.gameserver.network.serverpackets.PlaySound; public class PartyDrop extends Quest { private static final int[] PARTYMOBS = { 10506, //ID's dos mobs separados por , exceto no ultimo ID 10507 }; public PartyDrop() { super(-1, "custom"); addKillId(PARTYMOBS); } boolean _canReward = false; static HashMap<String, Integer> playerIps = new HashMap<>(); @Override public String onKill(Npc npc, Player player, boolean isPet) { if (player.isInParty()) { List<Player> party = player.getParty().getMembers(); for (Player member : party) { String pIp = member.getClient().getConnection().getInetAddress().getHostAddress(); if (!playerIps.containsKey(pIp)) { playerIps.put(pIp, 1); _canReward = true; } else { int count = playerIps.get(pIp); if (count < 1) { playerIps.remove(pIp); playerIps.put(pIp, count + 1); _canReward = true; } else { member.sendMessage("Already 1 member of your ip have been rewarded, so this character won't be rewarded."); _canReward = false; } } if (_canReward) { // Essa parte eh da recompensa que vai para quem esta perto de onde o mob morreu if (member.isInsideRadius(npc, 1000, false, false)) { //ID's dos items, para adicionar mais basta copiar a linha abaixo e adicionar o ID e a quantidade player.addItem("Adena", 57, 1, player, true); // player.addItem("Descricao", Item ID, Quantidade, player, true); player.addItem("Outro Item", 9400, 10000, player, true); member.broadcastPacket(new PlaySound("ItemSound.quest_finish")); } else { member.sendMessage("You are too far to be rewarded."); } } } playerIps.clear(); } else { player.addItem("Adena", 57, 1, player, true); player.addItem("Outro Item", 9400, 10000, player, true); player.broadcastPacket(new PlaySound("ItemSound.quest_finish")); } return null; } public static void main(String[] args) { new PartyDrop(); } }
  9. Não é Sunrise, jovem! A base desse projeto é Fandc/ro.
  10. HityZ

    DEDICADO OU VPS?

    Hotel dos Games
  11. HityZ

    Interligar NPC

    Possível é sim, basta apenas colocar o observer que tem no outro NPC no código da Gatekeeper, no java.
  12. HityZ

    L2Jnetwork Source 31

    Você é engraçadão, hein! Ninguém tá certo ou errado, já ouviu aquela frase: nada é criado tudo é copiado Não tem porque defender ninguém, aCis pegou o código fonte da JServer que é open-source e estava vendendo e ponto. O que muda e faz ser diferente, é o empenho que alguém põe sobre o seu projeto, que seja digno de receber algo em troca, que no caso é a aCis e era também a JNetwork. Quem pagou, confiou no projeto e no seguimento do desenvolvimento e claro, gostou do que a revisão estava proporcionando, se não, não teria tanta gente querendo. Não se deve julgar o trabalho dos outros se você não sabe fazer melhor, achei muito infeliz o seu comentário. Repense, evolua, cresça, muita imaturidade. Era uma excelente revisão, que vários deram apoio e ao invés de ajudarem, para termos algo de qualidade, com mods únicos, fazem o contrario, disponibilizam revisões para desanimar quem tanto passou tempos modificando. Desejo que ninguém passe por isso, de ter algo que você dedicou por muito tempo, compartilhado por quem não tá nem aí, vocês não tem noção do quanto é ruim. Não comecei uma discussão, tanto que meu único posts aqui vai ser só esse. Isso aqui, é só uma reflexão para quem ainda tá com a mente vazia.
  13. HityZ

    BUG nos packs aCis

    Config.java Index: gameserver/java/net/sf/l2j/Config.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- gameserver/java/net/sf/l2j/Config.java (date 1517018231685) +++ gameserver/java/net/sf/l2j/Config.java (date 1517018231685) @@ -645,6 +645,10 @@ public static boolean SERVER_NEWS; public static int ZONE_TOWN; public static boolean DISABLE_TUTORIAL; + + /** New Attack Movement Check */ + public static boolean NEW_AI_MOVING_ATTACK_CHECK; + public static int NEW_AI_MOVING_ATTACK_CHECK_RADIUS; // -------------------------------------------------- // Those "hidden" settings haven't configs to avoid admins to fuck their server @@ -1356,6 +1360,8 @@ ZONE_TOWN = server.getProperty("ZoneTown", 0); SERVER_NEWS = server.getProperty("ShowServerNews", false); DISABLE_TUTORIAL = server.getProperty("DisableTutorial", false); + NEW_AI_MOVING_ATTACK_CHECK = server.getProperty("NewAIMovingAttackCheck", true); + NEW_AI_MOVING_ATTACK_CHECK_RADIUS = server.getProperty("NewAIMovingAttackCheckRadius", 100); } /** L2CharacterAi.java Index: gameserver/java/net/sf/l2j/gameserver/ai/model/L2CharacterAI.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- gameserver/java/net/sf/l2j/gameserver/ai/model/L2CharacterAI.java (date 1517018113206) +++ gameserver/java/net/sf/l2j/gameserver/ai/model/L2CharacterAI.java (date 1517018113206) @@ -14,6 +14,7 @@ */ package net.sf.l2j.gameserver.ai.model; +import net.sf.l2j.Config; import net.sf.l2j.commons.util.ArraysUtil; import net.sf.l2j.gameserver.ai.CtrlEvent; @@ -810,9 +811,17 @@ { if (getFollowTarget() != null) { - // allow larger hit range when the target is moving (check is run only once per second) - if (!_actor.isInsideRadius(target, offset + 100, false, false)) - return true; + // Use the new moving intersection check? + if (Config.NEW_AI_MOVING_ATTACK_CHECK) { + if (!_actor.isInsideMovingRadius(target, offset + Config.NEW_AI_MOVING_ATTACK_CHECK_RADIUS)) { + return true; + } + } else { + // allow larger hit range when the target is moving (check is run only once per second) + if (!_actor.isInsideRadius(target, offset + 100, false, false)) { + return true; + } + } stopFollow(); return false; L2Character.java Index: gameserver/java/net/sf/l2j/gameserver/model/actor/L2Character.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- gameserver/java/net/sf/l2j/gameserver/model/actor/L2Character.java (date 1517018927022) +++ gameserver/java/net/sf/l2j/gameserver/model/actor/L2Character.java (date 1517018927022) @@ -3702,6 +3702,85 @@ return (dx * dx + dy * dy); } + + /** + * Point data structure used for the return of closestPointOnLine + * Learn More Here: http://ericleong.me/research/circle-circle/ + */ + public class Point { + public double x; + public double y; + + Point(double nx, double ny) { + this.x = nx; + this.y = ny; + } + } + + /** + * Projection of the point on the velocity line used for the isInsideMovingRadius function. + * @param vlx Current Pos X + * @param vly Current Pos Y + * @param vlxf Final Pos X (Object Object reference velocity) + * @param vlyf Final Pos Y (Object Object reference velocity) + * @param vlxo Last Pos X + * @param vlyo Last Pos Y + * @return The computed point + */ + public final Point closestPointOnLine(int vlx, int vly, int vlxf, int vlyf, int vlxo, int vlyo){ + int a = vlyf - vly; + int b = vlx - vlxf; + double c1 = (vlyf - vly)*vlx + (vlx - vlxf)*vly; + double c2 = -b*vlxo + a*vlyo; + double det = a*a - -b*b; + double cx, cy; + + if (det != 0){ + cx = ((a*c1 - b*c2)/det); + cy = ((a*c2 - -b*c1)/det); + } else { + cx = vlxo; + cy = vlyo; + } + return new Point(cx, cy); + } + + /** + * Check if the object was ever able to intersect the radius of the target object. + * The use of linear algebra and trigonometry allows for an decent approximation test of whether or not the two + * could ever intersect. + * @param object the target + * @param radius the radius around the target + * @return true if the L2Character was ever inside the radius. + */ + public final boolean isInsideMovingRadius(L2Object object, int radius) + { + // This players last coords + int vlx = getLastX(); + int vly = getLastY(); + + // This players movement vector + int vx = getX() - vlx; + int vy = getY() - vly; + + // This players last coords + int vlxo = object.getLastX(); + int vlyo = object.getLastY(); + + // Targets movement vector + int vxo = object.getX() - vlxo; + int vyo = object.getY() - vlyo; + + int vecx = vx - vxo; + int vecy = vy - vyo; + + Point d = closestPointOnLine(vlx, vly, vlx + vecx, vly + vecy, vlxo, vlyo); + double cDistSq = Math.pow(vlxo - d.x, 2) + Math.pow(vlyo - d.y, 2); + if (cDistSq <= Math.pow(radius, 2)) { + return true; + } + return false; + } /** * Check if this object is inside the given radius around the given object. Warning: doesn't cover collision radius! L2Object.java Index: gameserver/java/net/sf/l2j/gameserver/model/L2Object.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- gameserver/java/net/sf/l2j/gameserver/model/L2Object.java (date 1517018149736) +++ gameserver/java/net/sf/l2j/gameserver/model/L2Object.java (date 1517018149736) @@ -47,7 +47,8 @@ private NpcTemplate _polyTemplate; private PolyType _polyType = PolyType.DEFAULT; private int _polyId; - + + private SpawnLocation _lastPosition = new SpawnLocation(0,0,0,0); private SpawnLocation _position = new SpawnLocation(0, 0, 0, 0); private L2WorldRegion _region; @@ -344,7 +345,8 @@ public final void setXYZ(int x, int y, int z) { assert _region != null; - + + _lastPosition.set(_position.getX(), _position.getY(), _position.getZ()); _position.set(x, y, z); try @@ -429,6 +431,24 @@ return _position.getZ(); } + + /** + * @return the last x position of the L2Object. + */ + public final int getLastX() + { + return _lastPosition.getX(); + } + + public final int getLastY() + { + return _lastPosition.getY(); + } + + public final int getLastZ() + { + return _lastPosition.getZ(); + } public final SpawnLocation getPosition() { CreatureAi.java ### Eclipse Workspace Patch 1.0 #P FINEST Index: src/net/sf/l2j/gameserver/model/actor/ai/type/CreatureAI.java =================================================================== --- src/net/sf/l2j/gameserver/model/actor/ai/type/CreatureAI.java (revision 2) +++ src/net/sf/l2j/gameserver/model/actor/ai/type/CreatureAI.java (working copy) @@ -680,10 +680,10 @@ if (!_actor.isInsideRadius(worldPosition.getX(), worldPosition.getY(), (int) (offset + _actor.getCollisionRadius()), false)) { - if (_actor.isMovementDisabled()) + if (_actor.isMovementDisabled() || _actor.getMoveSpeed() <= 0) return true; - if (!(this instanceof PlayerAI) && !(this instanceof SummonAI)) + if (!_actor.isRunning() && !(this instanceof PlayerAI) && !(this instanceof SummonAI)) _actor.setRunning(); stopFollow(); @@ -746,7 +746,7 @@ return false; } - if (_actor.isMovementDisabled()) + if (_actor.isMovementDisabled() || _actor.getMoveSpeed() <= 0) { if (getIntention() == CtrlIntention.ATTACK) { @@ -758,7 +758,7 @@ } // If not running, set the Creature movement type to run and send Server->Client packet ChangeMoveType to all others Player - if (!(this instanceof PlayerAI) && !(this instanceof SummonAI)) + if (!_actor.isRunning() && !(this instanceof PlayerAI) && !(this instanceof SummonAI)) _actor.setRunning(); stopFollow(); @@ -766,7 +766,7 @@ if (target instanceof Creature && !(target instanceof Door)) { if (((Creature) target).isMoving()) - offset -= 30; + offset -= 100; if (offset < 5) offset = 5; Config.java Index: gameserver/java/net/sf/l2j/Config.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- gameserver/java/net/sf/l2j/Config.java (date 1517018231685) +++ gameserver/java/net/sf/l2j/Config.java (date 1517018231685) @@ -645,6 +645,10 @@ public static boolean SERVER_NEWS; public static int ZONE_TOWN; public static boolean DISABLE_TUTORIAL; + + /** New Attack Movement Check */ + public static boolean NEW_AI_MOVING_ATTACK_CHECK; + public static int NEW_AI_MOVING_ATTACK_CHECK_RADIUS; // -------------------------------------------------- // Those "hidden" settings haven't configs to avoid admins to fuck their server @@ -1356,6 +1360,8 @@ ZONE_TOWN = server.getProperty("ZoneTown", 0); SERVER_NEWS = server.getProperty("ShowServerNews", false); DISABLE_TUTORIAL = server.getProperty("DisableTutorial", false); + NEW_AI_MOVING_ATTACK_CHECK = server.getProperty("NewAIMovingAttackCheck", true); + NEW_AI_MOVING_ATTACK_CHECK_RADIUS = server.getProperty("NewAIMovingAttackCheckRadius", 100); } /** server.properties Index: gameserver/config/server.properties IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>windows-1252 =================================================================== --- gameserver/config/server.properties (date 1517019847684) +++ gameserver/config/server.properties (date 1517019847684) @@ -308,4 +308,9 @@ ShowServerNews = False # Disable tutorial on new player game entrance. Default: False. -DisableTutorial = False \ No newline at end of file +DisableTutorial = False + +# Disable the new movement attack check (falls back to legacy). +# Note: the new check is nearly the same weight and shouldn't affect performance much. +NewAIMovingAttackCheck = True +NewAIMovingAttackCheckRadius = 100 \ No newline at end of file Créditos: avel Sintam-se livres para testar.
  14. HityZ

    Critical Erro

    Olá, @tramos27. Poderia adicionar a imagem do erro junto ao seu tópico, ficaria mais fácil identificar o erro.
  15. HityZ

    Tittle

    Tranquilo. Tira print da tela do PC, não use um celular, porque não deu pra entender quase nada nessas fotos.
×