Thread: Diagonal pking

Results 1 to 7 of 7
  1. #1 Diagonal pking 
    Kanketsu
    JacobiYounger's Avatar
    Join Date
    Aug 2009
    Posts
    723
    Thanks given
    49
    Thanks received
    31
    Rep Power
    31
    Code:
    Client p = (Client) PlayerHandler.players[i];
    				if (p.WithinDistance(c.absX, c.absY, p.absX, p.absY, 1) && c.getX() != p.getX() && c.getY() != p.getY() && !c.usingOtherRangeWeapons && !c.getCombat().usingHally() && !c.usingBow && !c.usingMagic) {
    					c.faceUpdate(i+32768);
    				    c.getPA().stopDiagonal(p.getX(), p.getY());
    					return;
    				}
    Right now I'm using this code to stop diagonal pking. It works wonderful with melee, but if I use range from 1 square away it moves you infront of the player. When with range your able to pk from diagonal.

    I've spent close to 2 hours working on trying to get this to work properly...
    Reply With Quote  
     

  2. #2  
    Banned Diagonal pking Market Banned


    Join Date
    Jan 2011
    Age
    26
    Posts
    3,112
    Thanks given
    1,198
    Thanks received
    1,479
    Rep Power
    0
    since when are you not allowed to attack diagonally with range and magic...?
    Reply With Quote  
     

  3. #3  
    Kanketsu
    JacobiYounger's Avatar
    Join Date
    Aug 2009
    Posts
    723
    Thanks given
    49
    Thanks received
    31
    Rep Power
    31
    Quote Originally Posted by lare96 View Post
    since when are you not allowed to attack diagonally with range and magic...?
    No I'm saying thats whats its suppose to do. It's not allowing me to with this code.

    It works fine from 2 squares away, but not 1.
    Reply With Quote  
     

  4. #4  
    Registered Member Mr Jason's Avatar
    Join Date
    Dec 2013
    Posts
    384
    Thanks given
    37
    Thanks received
    113
    Rep Power
    0
    Quote Originally Posted by JacobiYounger View Post
    Code:
    Client p = (Client) PlayerHandler.players[i];
    				if (p.WithinDistance(c.absX, c.absY, p.absX, p.absY, 1) && c.getX() != p.getX() && c.getY() != p.getY() && !c.usingOtherRangeWeapons && !c.getCombat().usingHally() && !c.usingBow && !c.usingMagic) {
    					c.faceUpdate(i+32768);
    				    c.getPA().stopDiagonal(p.getX(), p.getY());
    					return;
    				}
    Right now I'm using this code to stop diagonal pking. It works wonderful with melee, but if I use range from 1 square away it moves you infront of the player. When with range your able to pk from diagonal.

    I've spent close to 2 hours working on trying to get this to work properly...
    Post your stopDiagonal method.
    Reply With Quote  
     

  5. #5  
    Kanketsu
    JacobiYounger's Avatar
    Join Date
    Aug 2009
    Posts
    723
    Thanks given
    49
    Thanks received
    31
    Rep Power
    31
    Quote Originally Posted by JasonRTM View Post
    Post your stopDiagonal method.
    I don't think that's the problem here...

    Code:
    public void stopDiagonal(int otherX, int otherY) {
    		if (c.freezeDelay > 0)
    			return;
    		c.newWalkCmdSteps = 1;
    		int xMove = otherX - c.getX();
    		int yMove = 0;
    		if (xMove == 0)
    			yMove = otherY - c.getY();
    		/*
    		 * if (!clipHor) { yMove = 0; } else if (!clipVer) { xMove = 0; }
    		 */
    
    		int k = c.getX() + xMove;
    		k -= c.mapRegionX * 8;
    		c.getNewWalkCmdX()[0] = c.getNewWalkCmdY()[0] = 0;
    		int l = c.getY() + yMove;
    		l -= c.mapRegionY * 8;
    
    		for (int n = 0; n < c.newWalkCmdSteps; n++) {
    			c.getNewWalkCmdX()[n] += k;
    			c.getNewWalkCmdY()[n] += l;
    		}
    
    	}
    There you go.
    Reply With Quote  
     

  6. #6  
    Registered Member Mr Jason's Avatar
    Join Date
    Dec 2013
    Posts
    384
    Thanks given
    37
    Thanks received
    113
    Rep Power
    0
    Quote Originally Posted by JacobiYounger View Post
    I don't think that's the problem here...

    Code:
    public void stopDiagonal(int otherX, int otherY) {
    		if (c.freezeDelay > 0)
    			return;
    		c.newWalkCmdSteps = 1;
    		int xMove = otherX - c.getX();
    		int yMove = 0;
    		if (xMove == 0)
    			yMove = otherY - c.getY();
    		/*
    		 * if (!clipHor) { yMove = 0; } else if (!clipVer) { xMove = 0; }
    		 */
    
    		int k = c.getX() + xMove;
    		k -= c.mapRegionX * 8;
    		c.getNewWalkCmdX()[0] = c.getNewWalkCmdY()[0] = 0;
    		int l = c.getY() + yMove;
    		l -= c.mapRegionY * 8;
    
    		for (int n = 0; n < c.newWalkCmdSteps; n++) {
    			c.getNewWalkCmdX()[n] += k;
    			c.getNewWalkCmdY()[n] += l;
    		}
    
    	}
    There you go.
    This is what I use.

    Code:
    		Client o = (Client)PlayerHandler.players[i];
    Code:
    		if (c.absX == o.absX && c.absY == o.absY) {
    			if (c.freezeTimer > 0) {
    				resetPlayerAttack();
    				return;
    			}
    			c.getPA().setOpponentCoordinates(o.absX, o.absY);
    			c.getPA().combatWalk(c.absX + 1, c.absY);
    			return;
    		}
    Incase you need the methods used for this.
    Code:
    	public void resetPlayerAttack() {
    		c.usingMagic = false;
    		c.npcIndex = 0;
    		c.faceUpdate(0);
    		c.playerIndex = 0;
    		c.getPA().resetFollow();
    	}
    Code:
    	public void setOpponentCoordinates(int absX, int absY) {
    		opponentX = absX;
    		opponentY = absY;
    	}
    Just declare the integers as
    Code:
    	private int opponentX;
    	private int opponentY;
    Code:
    	public void combatWalk(int x, int y) {
    		boolean east = opponentX - c.getX() > 0;
    		boolean west = opponentX - x > 0;
    		boolean north = opponentY - c.getY() > 0;
    		boolean south = c.getY() - opponentY > 0;
    		//System.out.println("south: "+south+"east: "+east);
    		if (south) {
    			if (east) {	
    				if (Region.checkNormalClip(x, y, opponentX , opponentY, c.heightLevel) && Region.getClipping(x, y, c.heightLevel, false) != 2228480)
    					playerWalk(x, y, true);
    				else
    					if (Region.checkNormalClip(opponentX , opponentY, opponentX+1, opponentY, c.heightLevel)) 
    						playerWalk(opponentX+1, opponentY, true);
    					else
    						if (Region.checkNormalClip(opponentX , opponentY, opponentX - 1, opponentY, c.heightLevel)) 
    							playerWalk(opponentX + 1, opponentY, true);
    				return;
    			}
    			if (west) {
    				if (Region.checkNormalClip(x, y, opponentX , opponentY, c.heightLevel) && Region.getClipping(x, y, c.heightLevel, false) != 2228480)
    					playerWalk(x, y, true);
    				else 
    					if (Region.checkNormalClip(opponentX , opponentY, opponentX+1, opponentY, c.heightLevel)) 
    						playerWalk(opponentX+1, opponentY, true);
    					else
    						if (Region.checkNormalClip(opponentX , opponentY, opponentX - 1, opponentY, c.heightLevel)) 
    							playerWalk(opponentX - 1, opponentY, true);
    						else
    							if (Region.checkNormalClip(opponentX , opponentY, opponentX, opponentY - 1, c.heightLevel)) 
    								playerWalk(opponentX, opponentY - 1, true);
    				return;
    			}
    			if (Region.checkNormalClip(x, y, opponentX , opponentY, c.heightLevel) && Region.getClipping(x, y, c.heightLevel, false) != 2228480) 
    				playerWalk(x, y, true);
    			else
    				if (Region.checkNormalClip(opponentX , opponentY, opponentX - 1, opponentY, c.heightLevel)) 
    					playerWalk(opponentX - 1, opponentY, true);
    				else if (Region.checkNormalClip(opponentX , opponentY, opponentX + 1, opponentY, c.heightLevel)) 
    					playerWalk(opponentX + 1, opponentY, true);
    				else if (Region.checkNormalClip(opponentX , opponentY, opponentX, opponentY - 1, c.heightLevel)) 
    					playerWalk(opponentX, opponentY - 1, true);
    			return;
    		}
    		if (north) {
    			if (east) {
    				if (Region.checkNormalClip(x, y, opponentX , opponentY, c.heightLevel) && Region.getClipping(x, y, c.heightLevel, false) != 2228480)
    					playerWalk(x, y, true);
    				else
    					if (Region.checkNormalClip(opponentX , opponentY, opponentX, opponentY - 1, c.heightLevel)) 
    							playerWalk(opponentX, opponentY - 1, true);
    					else
    						if (Region.checkNormalClip(opponentX , opponentY, opponentX + 1, opponentY, c.heightLevel)) 
    							playerWalk(opponentX + 1, opponentY, true);
    						else
    							if (Region.checkNormalClip(opponentX , opponentY, opponentX, opponentY + 1, c.heightLevel)) 
    								playerWalk(opponentX, opponentY + 1, true);
    
    				return;
    			}
    			if (west) {
    				if (Region.checkNormalClip(opponentX , opponentY, x, y, c.heightLevel) && Region.getClipping(x, y, c.heightLevel, false) != 2228480)
    					playerWalk(x, y, true);
    				else
    					if (Region.checkNormalClip(opponentX , opponentY, opponentX - 1, opponentY, c.heightLevel)) 
    						playerWalk(opponentX - 1, opponentY, true);
    					else
    						if (Region.checkNormalClip(opponentX , opponentY, opponentX, opponentY + 1, c.heightLevel)) 
    							playerWalk(opponentX, opponentY + 1, true);
    				return;
    			}
    			if (Region.checkNormalClip(opponentX , opponentY, x, y, c.heightLevel))
    				playerWalk(x, y, true);
    			else
    				if (Region.checkNormalClip(opponentX , opponentY, opponentX, opponentY - 1, c.heightLevel)) 
    						playerWalk(opponentX, opponentY - 1, true);
    				else
    					if (Region.checkNormalClip(opponentX , opponentY, opponentX - 1, opponentY, c.heightLevel)) 
    						playerWalk(opponentX - 1, opponentY, true);
    					else
    						if (Region.checkNormalClip(opponentX , opponentY, opponentX + 1, opponentY, c.heightLevel)) 
    							playerWalk(opponentX + 1, opponentY, true);
    			return;
    		}
    		if (east) {
    			if (Region.checkNormalClip(opponentX , opponentY, x, y, c.heightLevel) && Region.getClipping(x, y, c.heightLevel, false) != 2228480)
    				playerWalk(x, y, true);
    			else
    				if (Region.checkNormalClip(opponentX, opponentY, opponentX, opponentY - 1, c.heightLevel))
    					playerWalk(opponentX, opponentY - 1, true);
    				else 
    					if (Region.checkNormalClip(opponentX, opponentY, opponentX, opponentY + 1, c.heightLevel))
    						playerWalk(opponentX, opponentY + 1, true);
    					else 
    						if (Region.checkNormalClip(opponentX, opponentY, opponentX + 1, opponentY, c.heightLevel))
    							playerWalk(opponentX + 1, opponentY, true);
    			return;
    		}
    		if (west) {
    			if (Region.checkNormalClip(opponentX , opponentY, x, y, c.heightLevel) && Region.getClipping(x, y, c.heightLevel, false) != 2228480) {
    				playerWalk(x, y, true);
    			} else
    				if (Region.checkNormalClip(opponentX, opponentY, opponentX, opponentY - 1, c.heightLevel))
    					playerWalk(opponentX, opponentY - 1, true);
    				else 
    					if (Region.checkNormalClip(opponentX, opponentY, opponentX, opponentY + 1, c.heightLevel))
    						playerWalk(opponentX, opponentY - 1, true);
    			return;
    		}
    		if (Region.checkNormalClip(opponentX , opponentY, x, y, c.heightLevel)) {
    			playerWalk(x, y, true);
    		} else
    			if (Region.checkNormalClip(opponentX, opponentY, opponentX, opponentY - 1, c.heightLevel))
    				playerWalk(opponentX, opponentY - 1, true);
    			else 
    				if (Region.checkNormalClip(opponentX, opponentY, opponentX, opponentY + 1, c.heightLevel))
    					playerWalk(opponentX, opponentY - 1, true);
    	}
    Pretty sure this wouldn't work, but you can use it as a reference, if you want this to actually work, send me a private message and i'll hand you a hand
    Reply With Quote  
     

  7. #7  
    Kanketsu
    JacobiYounger's Avatar
    Join Date
    Aug 2009
    Posts
    723
    Thanks given
    49
    Thanks received
    31
    Rep Power
    31
    I'm just looking for a quick fix for my code.
    Reply With Quote  
     


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
  •