Ir para conteúdo
  • Cadastre-se

HityZ

Membro
  • Total de itens

    212
  • Registro em

  • Última visita

  • Prêmios recebidos

    2

HityZ last won the day on Junho 1

HityZ had the most liked content!

Reputação

39 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.236 visualizações
  1. 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é!
  2. HityZ

    MOD DO DROP EM PARTY

    Está completo sim. Coloquei config, quem puder testar. https://pastebin.com/uevvmJ90
  3. 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(); } }
  4. Não é Sunrise, jovem! A base desse projeto é Fandc/ro.
  5. HityZ

    DEDICADO OU VPS?

    Hotel dos Games
  6. HityZ

    Interligar NPC

    Possível é sim, basta apenas colocar o observer que tem no outro NPC no código da Gatekeeper, no java.
  7. 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.
  8. 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.
  9. HityZ

    Critical Erro

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

    Tittle

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

    Tittle

    gameserver/data/extractable_items.csv 7629,57,10,5 7629 = ID do item, no caso, de exemplo pode ser uma caixinha surpresa. 57 = ID do item que ele vai produzir ao clicar na caixinha surpresa. 10 = Quantidade que irá ganhar. 5 = Representa a chance de ganhar esse item ao clicar na caixinha surpresa, que pode variar de 1 á 100, não mais do que isso.
  12. HityZ

    Tittle

    O que deu pra entender, é que, você fez um item extractable com chance maior do que 100, revise isso.
  13. HityZ

    Licença Para Server Private

    Antigamente isso seria um problema, talvez. Hoje em dia, nem tanto, NCSoft não liga mais, tem tanto servidor pirada por aí, com mais de 10k online, inclusive com a novidade do momento que o é Classic e nada foi impedido deles terem esses servidores. Pode abrir sem medo, não terá problemas, ainda mais uma crônica antiga quanto essa. :)
  14. HityZ

    Drop 100% de todos os raid bosses para qualquer level.

    Boa noite, @tapioca. Não utilizo a rev JFrozen, mais te deixo uma dica. Talvez nessa revisão o drop seja modificado no banco de dados e deve haver algo relacionado a chance, então, para tornar o drop com chance de 100% assim como deseja, basta apenas setar 1000000 que equivale a 100% de chance de drop. Cuidado, se o drop rate nas configurações estiver maior do que 1, poderá dropar muitos items de uma vez, se for algo raro, como jóia boss, não recomendo colocar maior do que 1 a rate de drop.
  15. HityZ

    Dúvida Sobre l2Frozen e Chaotic Zone

    Qual código que você tentou usar?
×