Thread: Not hitting?

Results 1 to 2 of 2
  1. #1 Not hitting? 
     

    Vastiko's Avatar
    Join Date
    Dec 2006
    Posts
    5,700
    Thanks given
    300
    Thanks received
    660
    Discord
    View profile
    Rep Power
    5000
    Does anybody recognise why this won't hit:

    Code:
    package online.server.content.combat;
    
    import online.server.Engine;
    import online.server.model.npcs.NPC;
    import online.server.model.players.Player;
    import online.server.util.Misc;
    
    public class NPCCombat {
    	
    	public synchronized void npcCombat(Player p, NPC n) {
    		if (!canAttack(p)) {
                return;
            }
    		boolean useBow = false;
            int wepId = p.getItems().getEquipment()[3];
            int arrowId = p.getItems().getEquipment()[13]; // Unused right now.
            if (wepId >= 800 && wepId <= 876 || wepId >= 4212 && wepId <= 4223 || wepId == 4734 || wepId == 6724 || wepId == 6522 || 
                    wepId >= 9174 && wepId <= 9186 || wepId == 11235) {
                useBow = true;
            }
            if (useBow && Misc.getDistance(n.getX(), n.getY(), p.getX(), p.getY()) <= 8) {
                Engine.playerManager.resetWalking(p);
            }
            if (p.getCombat().getCombatDelay() > 0) {
                return;
            }
            int hitDiff;
            int pDelay;
            NPCProjectile projectile;
            if (!useBow) {
                if (Misc.getDistance(n.getX(), n.getY(), p.getX(), p.getY()) != 1) {
                    return;
                }
                hitDiff = Misc.random(getMeleePower(p));
                p.getMasks().requestAnim(getAttackAnimation(wepId), 0);
                projectile = new NPCProjectile(n, 50, 0);
                pDelay = 500;
            } else {
                if (Misc.getDistance(n.getX(), n.getY(), p.getX(), p.getY()) == 0 || Misc.getDistance(n.getX(), n.getY(), p.getX(), p.getY()) > 8) {
                    return;
                }
                hitDiff = Misc.random(5);
                p.getMasks().requestAnim(getAttackAnimation(wepId), 0);
                projectile = new NPCProjectile(n, hitDiff, 1);
                pDelay = 1199;
                int offsetX = (p.getX() - n.getX()) * -1;
                int offsetY = (p.getY() - n.getY()) * -1;
                createGlobalProjectile(p, p.getX(), p.getY(), offsetX, offsetY, getRangeProjectile(p, wepId, arrowId), 43, 31, 70, -p.getCombat().getAttackPlayer() - 1);            
            }
            Engine.eventManager.addEvent(projectile, pDelay);
            p.getCombat().setCombatDelay(getWeaponSpeed(wepId));
    	}
    	
    	public void createGlobalProjectile(Player p, int casterX, int casterY, int offsetX, int offsetY, int gfxMoving, int startHeight, int endHeight, 
                int speed, int atkIndex) {
            for (Player p2 : Engine.playerManager.getPlayers()) {
                if (!p2.isLoggedIn() || p2.getHeight() != p.getHeight() || p2.getDisconnected()[0]) {
                    continue;
                }
                if (Misc.getDistance(p.getX(), p.getY(), p2.getX(), p2.getY()) > 25) {
                    continue;
                }
                p2.getPackets().createProjectile(casterX, casterY, offsetX, offsetY, gfxMoving, startHeight, endHeight, speed, atkIndex);
            }
        }
    	
    	public int getMeleePower(Player p) {
            int strengthLevel = p.getSkillLvl()[2];
            double maxHit = 1.05 + (p.getItems().getEquipmentBonus()[10] * strengthLevel) * 0.00175;
            maxHit += strengthLevel * 0.11;
            return (int) maxHit;
        }
    
    	public int getWeaponSpeed(int wepId) {
            String weapon = Engine.itemManager.getItemName(wepId);
            if (weapon.endsWith(" dart") || weapon.endsWith(" knife")) {
                return 2;
            } else if (weapon.startsWith("Karils crossbow") || weapon.startsWith("Toktz-xil-ul")) {
                return 3;
            } else if (weapon.endsWith("shortbow") || weapon.startsWith("Shortbow")) {
                return 3;
            } else if (weapon.startsWith("Comp ogre bow") || weapon.startsWith("Seercull") || weapon.endsWith("dagger(+)")) {
                return 4;
            } else if (weapon.startsWith("Crystal bow") || weapon.startsWith("New crystal bow") || weapon.endsWith(" claws")) {
                return 4;
            } else if (weapon.endsWith("dagger") || weapon.endsWith("dagger(s)") || weapon.endsWith("dagger(p)")) {
                return 4;
            } else if (weapon.endsWith(" sword") || weapon.endsWith("scimitar") || weapon.endsWith("thrownaxe")) {
                return 4;
            } else if (weapon.endsWith("Toktz-xil-ak") || weapon.startsWith("Ancient staff") || weapon.startsWith("Slayer's staff")) {
                return 4;
            } else if (weapon.endsWith("Toktz-xil-ek") || weapon.startsWith("Abyssal whip") || weapon.startsWith("Saradomin sword")) {
                return 4;
            } else if (weapon.startsWith("Zamorak staff") || weapon.startsWith("Saradomin staff") || weapon.startsWith("Guthix staff")) {
                return 4;
            } else if (weapon.startsWith("Torags hammers") || weapon.startsWith("Guthans warspear") || weapon.startsWith("Veracs flail")) {
                return 5;
            } else if (weapon.endsWith("mace") || weapon.endsWith(" axe") || weapon.endsWith("longsword") || weapon.endsWith("c'bow")) {
                return 5;
            } else if (weapon.endsWith(" spear") || weapon.endsWith("longbow") || weapon.endsWith("Longbow")) {
                return 5;
            } else if (weapon.endsWith("pickaxe") || weapon.endsWith(" staff") || weapon.endsWith(" battlestaff")) {
                return 5;
            } else if (weapon.endsWith("Tzhaar-ket-em") || weapon.endsWith("javelin")) {
                return 5;
            } else if (weapon.startsWith("Toktz-mej-tal") || weapon.startsWith("Ahrims staff")) {
                return 6;
            } else if (weapon.endsWith("battleaxe") || weapon.endsWith("warhammer")) {
                return 6;
            } else if (weapon.startsWith("Granite maul") || weapon.startsWith("Tzhaar-ket-om") || weapon.startsWith("Ogre bow")) {
                return 7;
            } else if (weapon.startsWith("Dharoks greataxe") || weapon.endsWith("2h sword") || weapon.endsWith("halberd")) {
                return 7;
            } else if (weapon.endsWith("godsword")) {
            	return 8;
            } else if (weapon.startsWith("Dark bow")) {
                return 8;
            }
            return 6;
        }
    
        public int getAttackAnimation(int wepId) {
            String weapon = Engine.itemManager.getItemName(wepId);
            if (weapon.startsWith("Unarmed")) {
                return 422;
            } else if (weapon.startsWith("Guthans warspear")) {
                return 2081;
            } else if (weapon.startsWith("Dragon dagger")) {
                return 402;
            } else if (weapon.startsWith("Dharoks greataxe")) {
                return 2066;
            } else if (weapon.startsWith("Karils crossbow")) {
                return 2075;
            } else if (weapon.startsWith("Tzhaar-ket-om")) {
                return 2661;
            } else if (weapon.startsWith("Granite maul")) {
                return 1665;
            } else if (weapon.startsWith("Veracs flail")) {
                return 2062;
            } else if (weapon.startsWith("Abyssal whip")) {
                return 1658;
            } else if (weapon.startsWith("Torags hammers")) {
                return 2068;
            } else if (weapon.startsWith("Toktz-xil-ul")) {
                return 2614;
            } else if (weapon.endsWith("shortbow") || weapon.startsWith("Shortbow") || weapon.endsWith("longbow") || 
                    weapon.startsWith("Longbow") || weapon.startsWith("Seercull") || weapon.startsWith("Crystal bow") || weapon.startsWith("New crystal bow")
                    || weapon.startsWith("Dark bow")) {
                return 426;
            } else if (weapon.endsWith("thrownaxe") || weapon.contains("javelin") || weapon.contains("knife")) {
                return 0x326;
            } else if (weapon.contains("dart")) {
                return 582;
            } else if (weapon.endsWith("crossbow") || weapon.startsWith("Crossbow")) {
                return 427;
            } else if (weapon.endsWith("c'bow")) {
                return 4230;
            } else if (weapon.contains("dagger") || weapon.endsWith("pickaxe")) {
                return 412;
            } else if (weapon.endsWith("2h sword") || weapon.endsWith("godsword") || weapon.startsWith("Saradomin sword")) {
                return 7041;
            } else if (weapon.endsWith("sword") || weapon.endsWith("mace") || weapon.endsWith("longsword") || weapon.endsWith("scimitar")) {
                return 451;
            } else if (weapon.endsWith("axe") || weapon.endsWith("battleaxe")) {
                return 1833;
            } else if (weapon.endsWith("halberd") || weapon.endsWith("spear")) {
                return 440;
            } else if (wepId == 10887) {
                return 5865;
            }
            return 451;
        }
    
        public int getRangeProjectile(Player p, int weaponId, int arrowId) {
            if (weaponId == 4214 || weaponId == 4212)
                return 249;
            else if (weaponId == 837 || weaponId == 4734)
                return 27;
            else if (weaponId == 6522)
                return 442;
            else if (weaponId == 806)
                return 226;
            else if (weaponId == 807)
                return 227;
            else if (weaponId == 808)
                return 228;
            else if (weaponId == 809)
                return 229;
            else if (weaponId == 810)
                return 230;
            else if (weaponId == 811)
                return 231;
            else if (weaponId == 864)
                return 212;
            else if (weaponId == 863)
                return 213;
            else if (weaponId == 865)
                return 214;
            else if (weaponId == 869)
                return 215;
            else if (weaponId == 866)
                return 216;
            else if (weaponId == 867)
                return 217;
            else if (weaponId == 868)
                return 218;
            else if (weaponId == 825)
                return 200;
            else if (weaponId == 826)
                return 201;
            else if (weaponId == 827)
                return 202;
            else if (weaponId == 828)
                return 203;
            else if (weaponId == 829)
                return 204;
            else if (weaponId == 830)
                return 205;
            else if (weaponId == 800)
                return 36;
            else if (weaponId == 801)
                return 35;
            else if (weaponId == 802)
                return 37;
            else if (weaponId == 803)
                return 38;
            else if (weaponId == 804)
                return 39;
            else if (weaponId == 805)
                return 41;
            else if (weaponId == 11230)
                return 1122;
            else if (arrowId == 882)
                return 10;
            else if (arrowId == 884)
                return 9;
            else if (arrowId == 886)
                return 11;
            else if (arrowId == 888)
                return 12;
            else if (arrowId == 890)
                return 13;
            else if (arrowId == 892)
                return 15;
            else if (arrowId == 7988)
                return 618;
            else if (arrowId == 7989)
                return 619;
            else if (arrowId == 7906)
                return 621;
            else
                return 27;
        }
    
    	public boolean canAttack(Player p) {
    		return true;		
    	}
    	
        public int getDeathDelay(int type) {
            switch (type) {
            default:
                return 6;
            }
        }
    
        public int getDeathAnim(int type) {
            switch (type) {
            case 50:
            	return 90;
            default:
                return 7197;
            }
        }
    }
    Using my NPCProjectile class:

    Code:
    package online.server.content.combat;
    
    import online.server.event.Event;
    import online.server.event.EventAction;
    import online.server.model.npcs.NPC;
    
    public class NPCProjectile implements Event {
        private NPC n;
        private int hitDiff;
        private int hitType;
        private int gfxId = -1;
        private int gfxHeight = 0;
        private int animationId = -1;
        private boolean displayDamage = true;
    
        public NPCProjectile(NPC n, int hitDiff, int hitType) {
            this.n = n;
            this.hitDiff = hitDiff;
            this.hitType = hitType;
        }
        
    	public void setGFX(final int id, final int height) {
            gfxId = id;
            gfxHeight = height;
        }
    
        public void setAnim(final int id) {
            animationId = id;
        }
    
        public void displayDamage(final boolean displayDamage) {
            this.displayDamage = displayDamage;
        }
    
        public void execute(EventAction e) {
            if (n.isDead()) {
                if (gfxId > -1) {
                    n.getMasks().requestGFX(gfxId, gfxHeight);
                }
                if (animationId > -1) {
                    n.getMasks().requestAnim(animationId, 0);
                }
                if (displayDamage) {
                    n.appendHit(hitDiff, hitType);
                }
            }
            e.stop();
        }
    
        public void stop(EventAction e) {
        }
    }
    It should hit but it doesn't ?

    Anyone know why?
     

  2. #2  
    r0flmfa0
    Guest
    appendHit..?
     


Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •