Thread: [PI] Impact 2.0 - Combat level differences in wilderness

Page 1 of 2 12 LastLast
Results 1 to 10 of 18
  1. #1 [PI] Impact 2.0 - Combat level differences in wilderness 
    Registered MrClassic
    MrClassic's Avatar
    Join Date
    Oct 2008
    Age
    15
    Posts
    2,063
    Thanks given
    24,154
    Thanks received
    551
    Rep Power
    5000
    Hello,
    The problem is, in wilderness, a lvl 126 can attack a lvl 3.
    How to fix that?

    Public boolean checkreqs()
    Code:
    	public boolean checkReqs() {
    		if(Server.playerHandler.players[c.playerIndex] == null) {
    			return false;
    		}
    		if(Server.playerHandler.players[c.playerIndex].confirmScreen || c.confirmScreen)
    			return false;
    		if (c.playerIndex == c.playerId)
    			return false;
    		if (c.inPits && Server.playerHandler.players[c.playerIndex].inPits)
    			return true;
    		if(Server.playerHandler.players[c.playerIndex].inDuelArena() && c.duelStatus != 5 && !c.usingMagic) {
    			if(c.arenas() || c.duelStatus == 5) {
    				c.sendMessage("You can't challenge inside the arena!");
    				return false;
    			}
    			c.getTradeAndDuel().requestDuel(c.playerIndex);
    			return false;
    		}
    		if(c.duelStatus == 5 && Server.playerHandler.players[c.playerIndex].duelStatus == 5) {
    			if(Server.playerHandler.players[c.playerIndex].duelingWith == c.getId()) {
    				return true;
    			} else {
    				c.sendMessage("This isn't your opponent!");
    				return false;
    			}
    		}
    		if(!Server.playerHandler.players[c.playerIndex].inWild()) {
    			c.sendMessage("That player is not in the wilderness.");
    			c.stopMovement();
    			c.getCombat().resetPlayerAttack();
    			return false;
    		}
    		if(!c.inWild()) {
    			c.sendMessage("You are not in the wilderness.");
    			c.stopMovement();
    			c.getCombat().resetPlayerAttack();
    			return false;
    		}
    		if(Config.COMBAT_LEVEL_DIFFERENCE) {
    			int combatDif1 = c.getCombat().getCombatDifference(c.combatLevel, Server.playerHandler.players[c.playerIndex].combatLevel);
    			if(combatDif1 > c.wildLevel || combatDif1 > Server.playerHandler.players[c.playerIndex].wildLevel) {
    				c.sendMessage("Your combat level difference is too great to attack that player here.");
    				c.stopMovement();
    				c.getCombat().resetPlayerAttack();
    				return false;
    			}
    		}
    		
    		if(Config.SINGLE_AND_MULTI_ZONES) {
    			if(!Server.playerHandler.players[c.playerIndex].inMulti()) {	// single combat zones
    				if(Server.playerHandler.players[c.playerIndex].underAttackBy != c.playerId  && Server.playerHandler.players[c.playerIndex].underAttackBy != 0) {
    					c.sendMessage("That player is already in combat.");
    					c.stopMovement();
    					c.getCombat().resetPlayerAttack();
    					return false;
    				}
    				if(Server.playerHandler.players[c.playerIndex].playerId != c.underAttackBy && c.underAttackBy != 0 || c.underAttackBy2 > 0) {
    					c.sendMessage("You are already in combat.");
    					c.stopMovement();
    					c.getCombat().resetPlayerAttack();
    					return false;
    				}
    			}
    		}
    		return true;
    	}
    Public void attackplayer()
    Code:
    	public void attackPlayer(int i) {
    		if (Server.playerHandler.players[i] != null) {
    			if (Server.playerHandler.players[i].isDead) {
    				resetPlayerAttack();
    				return;
    			}
    			if(c.respawnTimer > 0 || Server.playerHandler.players[i].respawnTimer > 0) {
    				resetPlayerAttack();
    				return;
    			}
    			if(!c.getCombat().checkReqs()) {
    				return;
    			}
    			Client o = (Client) Server.playerHandler.players[i];
    			if(c.ringOfStone || o.ringOfStone)
    				return;
    			if(o.wildRocks || 
    				o.wildBalance || 
    				o.wildPipe || 
    				o.endWildPipe || 
    				o.pipeAnim ||
    				o.endAnim || 
    				o.pipe ||
    				o.log || 
    				o.net || 
    				o.balance ||
    				o.tree || 
    				!o.canWalk) {
    				return;
    			}
    			if(c.getPA().activeTimers()) {
    				return;
    			}
    			if(o.getPA().activeTimers()) {
    				return;
    			}
    			if(!c.goodDistance(Server.playerHandler.players[i].getX(), Server.playerHandler.players[i].getY(), c.getX(), c.getY(), 25)) {
    				resetPlayerAttack();
    				return;
    			}
    
    			if(Server.playerHandler.players[i].respawnTimer > 0) {
    				Server.playerHandler.players[i].playerIndex = 0;
    				resetPlayerAttack();
    				return;
    			}
    			if (c.getX() == Server.playerHandler.players[i].getX() && c.getY() == Server.playerHandler.players[i].getY()) {
    				Client opponent = (Client) Server.playerHandler.players[i];
    				opponent.getPA().walkTo(0, -1);
    			}
    			if(c.attackTimer > 0) {
    				c.attackTimer -= getHybridSubtraction();
    			}
    			if(c.attackTimer <= 0) {
    				if(c.spellId > -1 || c.autocasting) {
    					c.usingMagic = true;
    				} else {
    					c.usingMagic = false;
    				}
    				c.hasNotHit = true;
    				c.usingBow = false;
    				c.specEffect = 0;
    				c.usingRangeWeapon = false;
    				c.rangeItemUsed = 0;
    				c.attackTimer = getAttackDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase());
    				boolean usingBow = false;
    				boolean usingArrows = false;
    				boolean usingOtherRangeWeapons = false;
    				c.projectileStage = 0;
    				c.bowSpecShot = 0;
    				if (c.autocasting) {
    					c.spellId = c.autocastId;
    					c.oldSpellId = c.autocastId;
    					c.usingMagic = true;
    				}
    				
    				if(!c.usingMagic) {
    					for (int bowId : c.BOWS) {
    						if(c.playerEquipment[c.playerWeapon] == bowId) {
    							usingBow = true;
    							for (int arrowId : c.ARROWS) {
    								if(c.playerEquipment[c.playerArrows] == arrowId) {
    									usingArrows = true;
    								}
    							}
    						}
    					}				
    				
    					for (int otherRangeId : c.OTHER_RANGE_WEAPONS) {
    						if(c.playerEquipment[c.playerWeapon] == otherRangeId) {
    							usingOtherRangeWeapons = true;
    						}
    					}
    				}
    				
    				if(c.duelRule[9]){
    				boolean canUseWeapon = false;
    					for(int funWeapon: Config.FUN_WEAPONS) {
    						if(c.playerEquipment[c.playerWeapon] == funWeapon) {
    							canUseWeapon = true;
    							break;
    						}
    					}
    					if(!canUseWeapon) {
    						c.sendMessage("You can only use fun weapons in this duel!");
    						resetPlayerAttack();
    						return;
    					}
    				}
    
    				if(c.duelRule[2] && (usingBow || usingOtherRangeWeapons)) {
    					c.sendMessage("Range has been disabled in this duel!");
    					return;
    				}
    				if(c.duelRule[3] && (!usingBow && !usingOtherRangeWeapons && !c.usingMagic && c.autocastId <= 0)) {
    					c.sendMessage("Melee has been disabled in this duel!");
    					return;
    				}
    				
    				if((!c.goodDistance(c.getX(), c.getY(), Server.playerHandler.players[i].getX(), Server.playerHandler.players[i].getY(), 4) && (usingOtherRangeWeapons && !usingBow && !c.usingMagic && !c.autocasting)) 
    				|| (!c.goodDistance(c.getX(), c.getY(), Server.playerHandler.players[i].getX(), Server.playerHandler.players[i].getY(), 2) && (!usingOtherRangeWeapons && usingHally() && !usingBow && !c.usingMagic && !c.autocasting))
    				|| (!c.goodDistance(c.getX(), c.getY(), Server.playerHandler.players[i].getX(), Server.playerHandler.players[i].getY(), getRequiredDistance()) && (!usingOtherRangeWeapons && !usingHally() && !usingBow && !c.usingMagic && !c.autocasting)) 
    				|| (!c.goodDistance(c.getX(), c.getY(), Server.playerHandler.players[i].getX(), Server.playerHandler.players[i].getY(), 6) && (usingBow || c.usingMagic || c.autocasting))) {
    					c.attackTimer = 2;
    					return;
    				}			
    				if(!usingArrows && usingBow && (c.playerEquipment[c.playerWeapon] < 4212 || c.playerEquipment[c.playerWeapon] > 4223)) {
    					c.sendMessage("You have run out of arrows!");
    					c.stopMovement();
    					resetPlayerAttack();
    					return;
    				} 
    				if(!correctBowAndArrows() && Config.CORRECT_ARROWS && usingBow) {
    					c.sendMessage("You can't use "+c.getItems().getItemName(c.playerEquipment[c.playerArrows])+"s with a "+c.getItems().getItemName(c.playerEquipment[c.playerWeapon])+".");
    					c.stopMovement();
    					resetPlayerAttack();
    					return;
    				}
    				
    				if(!checkMagicReqs(c.spellId)) {
    					c.stopMovement();
    					resetPlayerAttack();
    					return;
    				}
    				
    				c.faceUpdate(i+32768);
    				
    				if(c.duelStatus != 5 && !c.inPits) {
    					if(!c.attackedPlayers.contains(c.playerIndex) && !Server.playerHandler.players[c.playerIndex].attackedPlayers.contains(c.playerId)) {
    						c.attackedPlayers.add(c.playerIndex);
    						c.isSkulled = true;
    						c.skullTimer = Config.SKULL_TIMER;
    						c.skullIcon = 0;
    						c.getPA().requestUpdates();
    					} 
    				}
    				
    				if(usingBow || c.usingMagic || usingOtherRangeWeapons || usingHally()) {
    					c.stopMovement();
    				}
    				
    				if(c.usingSpecial && !c.usingMagic) {
    					if(c.duelRule[10] && c.duelStatus == 5) {
    						c.sendMessage("Special attacks have been disabled during this duel!");
    						c.usingSpecial = false;
    						c.getItems().updateSpecialBar();
    						resetPlayerAttack();
    						return;
    					}
    					if(checkSpecAmount(c.playerEquipment[c.playerWeapon])){
    						activateSpecial(c.playerEquipment[c.playerWeapon], i);
    						c.followId = Server.playerHandler.players[c.playerIndex].playerId;
    						return;
    					} else {
    						c.sendMessage("You don't have the required special energy to use this attack.");
    						c.usingSpecial = false;
    						c.getItems().updateSpecialBar();
    						resetPlayerAttack();
    						return;
    					}	
    				}
    				c.specMaxHitIncrease = 0;
    				
    				if(!c.usingMagic) {
    					c.startAnimation(getWepAnim(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()));
    					c.mageFollow = false;
    				} else {
    					c.startAnimation(c.MAGIC_SPELLS[getMagicIndex()][2]);
    					c.mageFollow = true;
    					c.followId = c.playerIndex;
    				}
    				
    				if(!usingBow && !c.usingMagic && !usingOtherRangeWeapons) { // melee hit delay
    					c.followId = Server.playerHandler.players[c.playerIndex].playerId;
    					c.getPA().followPlayer();
    					c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase());
    					c.projectileStage = 0;
    					c.oldPlayerIndex = i;
    				}
    								
    				if(usingBow && !usingOtherRangeWeapons) { // range hit delay
    					if(c.playerEquipment[c.playerWeapon] >= 4212 && c.playerEquipment[c.playerWeapon] <= 4223) {
    						c.rangeItemUsed = c.playerEquipment[c.playerWeapon];
    						c.crystalBowArrowCount++;
    					} else {
    						c.rangeItemUsed = c.playerEquipment[c.playerArrows];
    						c.getItems().deleteArrow();	
    					}
    					c.usingBow = true;
    					c.followId = Server.playerHandler.players[c.playerIndex].playerId;
    					c.getPA().followPlayer();
    					c.lastWeaponUsed = c.playerEquipment[c.playerWeapon];
    					c.gfx100(getRangeStartGFX());	
    					c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase());
    					c.projectileStage = 1;
    					c.oldPlayerIndex = i;
    				}
    											
    				if(usingOtherRangeWeapons) {	// knives, darts, etc hit delay
    					c.rangeItemUsed = c.playerEquipment[c.playerWeapon];
    					c.getItems().deleteEquipment();
    					c.usingRangeWeapon = true;
    					c.followId = Server.playerHandler.players[c.playerIndex].playerId;
    					c.getPA().followPlayer();
    					c.gfx100(getRangeStartGFX());
    					c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase());
    					c.projectileStage = 1;
    					c.oldPlayerIndex = i;
    				}
    
    				if(c.usingMagic) {	// magic hit delay
    					int pX = c.getX();
    					int pY = c.getY();
    					int nX = Server.playerHandler.players[i].getX();
    					int nY = Server.playerHandler.players[i].getY();
    					int offX = (pY - nY)* -1;
    					int offY = (pX - nX)* -1;
    					c.castingMagic = true;
    					c.projectileStage = 2;
    					if (c.autocastId > 0) {
    						c.followId = c.playerIndex;
    						c.followDistance = 5;
    					}	
    					if(c.MAGIC_SPELLS[getMagicIndex()][3] > 0) {
    						if(getStartGfxHeight() == 100) {
    							c.gfx100(c.MAGIC_SPELLS[getMagicIndex()][3]);
    						} else {
    							c.gfx0(c.MAGIC_SPELLS[getMagicIndex()][3]);
    						}
    					}
    					if(c.MAGIC_SPELLS[c.spellId][4] > 0) {
    						c.getPA().createPlayersProjectile(pX, pY, offX, offY, 50, 78, c.MAGIC_SPELLS[getMagicIndex()][4], getStartHeight(), getEndHeight(), -i - 1, getStartDelay());
    					}
    					c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase());
    					c.oldPlayerIndex = i;
    					c.oldSpellId = c.spellId;
    					c.spellId = -1;
    					if(!c.autocasting) 
    						c.playerIndex = 0;
    				}
    
    				if(usingBow && Config.CRYSTAL_BOW_DEGRADES) { // crystal bow degrading
    					if(c.playerEquipment[c.playerWeapon] == 4212) { // new crystal bow becomes full bow on the first shot
    						c.getItems().wearItem(4214, 1, 3);
    					}
    					
    					if(c.crystalBowArrowCount >= 250){
    						switch(c.playerEquipment[c.playerWeapon]) {
    							
    							case 4223: // 1/10 bow
    							c.getItems().wearItem(-1, 1, 3);
    							c.sendMessage("Your crystal bow has fully degraded.");
    							if(!c.getItems().addItem(4207, 1)) {
    								Server.itemHandler.createGroundItem(c, 4207, c.getX(), c.getY(), 1, c.getId());
    							}
    							c.crystalBowArrowCount = 0;
    							break;
    							
    							default:
    							c.getItems().wearItem(++c.playerEquipment[c.playerWeapon], 1, 3);
    							c.sendMessage("Your crystal bow degrades.");
    							c.crystalBowArrowCount = 0;
    							break;			
    						}
    					}	
    				}
    			}
    		}
    	}
    Attackplayer class I have this:
    Code:
    			c.faceUpdate(c.playerIndex);
    			if(!c.getCombat().checkReqs()) {
    				break;
    			}
    Magic:
    Code:
    			if(!c.getCombat().checkReqs()) {
    				break;
    			}
    Config class:
    public static final boolean COMBAT_LEVEL_DIFFERENCE = true; // wildy levels and combat level differences matters

    Any problems in this?
     

  2. #2  
    Registered MrClassic
    MrClassic's Avatar
    Join Date
    Oct 2008
    Age
    15
    Posts
    2,063
    Thanks given
    24,154
    Thanks received
    551
    Rep Power
    5000
    anyone?
     

  3. #3  
    Registered Member
    Join Date
    Apr 2011
    Posts
    14
    Thanks given
    0
    Thanks received
    0
    Rep Power
    1
    Code:
    if(!c.getCombat().checkReqs()) {
    				return;
    			}
    Thats your problem. The instance of checking a req is returning itself; you need to specify what the server has to do. Try insterting this instead of return:
    Code:
    if(!c.getCombat().checkReqs()) {
    				break;
    			}
    OR
    Simply remove return and leave it at { }. Returning it leaves it unchecked.
     

  4. #4  
    Registered MrClassic
    MrClassic's Avatar
    Join Date
    Oct 2008
    Age
    15
    Posts
    2,063
    Thanks given
    24,154
    Thanks received
    551
    Rep Power
    5000
    Quote Originally Posted by Vex' View Post
    Code:
    if(!c.getCombat().checkReqs()) {
    				return;
    			}
    Thats your problem. The instance of checking a req is returning itself; you need to specify what the server has to do. Try insterting this instead of return:
    Code:
    if(!c.getCombat().checkReqs()) {
    				break;
    			}
    OR
    Simply remove return and leave it at { }. Returning it leaves it unchecked.
    okay, I will try thanks
     

  5. #5  
    Registered Member
    Join Date
    Apr 2011
    Posts
    2
    Thanks given
    0
    Thanks received
    1
    Rep Power
    0
    Quote Originally Posted by Vex' View Post
    Code:
    if(!c.getCombat().checkReqs()) {
    				return;
    			}
    Thats your problem. The instance of checking a req is returning itself; you need to specify what the server has to do. Try insterting this instead of return:
    Code:
    if(!c.getCombat().checkReqs()) {
    				break;
    			}
    OR
    Simply remove return and leave it at { }. Returning it leaves it unchecked.
    Moron.
     

  6. Thankful user:


  7. #6  
    Registered MrClassic
    MrClassic's Avatar
    Join Date
    Oct 2008
    Age
    15
    Posts
    2,063
    Thanks given
    24,154
    Thanks received
    551
    Rep Power
    5000
    didnt work, anyone else, please?
     

  8. #7  
    Registered MrClassic
    MrClassic's Avatar
    Join Date
    Oct 2008
    Age
    15
    Posts
    2,063
    Thanks given
    24,154
    Thanks received
    551
    Rep Power
    5000
    bump
     

  9. #8  
    Registered MrClassic
    MrClassic's Avatar
    Join Date
    Oct 2008
    Age
    15
    Posts
    2,063
    Thanks given
    24,154
    Thanks received
    551
    Rep Power
    5000
    still need this
     

  10. #9  
    Banned
    Join Date
    Mar 2011
    Posts
    521
    Thanks given
    2
    Thanks received
    30
    Rep Power
    0
    Ill do it for rsgp
     

  11. #10  
    Goodbye and Goodnight!

    Matthew's Avatar
    Join Date
    Aug 2009
    Posts
    455
    Thanks given
    248
    Thanks received
    538
    Rep Power
    4795
    I will also do it for rsgp, cheaper than tampon abuse , i also have more experience with my release of quarantinescape 317 and matokoscape 614.
    Spoiler for Goodbye and Goodnight!:
    Attached image
     

Page 1 of 2 12 LastLast

Thread Information
Users Browsing this Thread

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


User Tag List

Similar Threads

  1. [PI] Wilderness level..... [PI]
    By Hellobuddyhowareyou in forum Help
    Replies: 6
    Last Post: 04-09-2011, 04:01 PM
  2. [PI] Wilderness level..... [PI]
    By Hellobuddyhowareyou in forum Help
    Replies: 0
    Last Post: 04-09-2011, 02:47 PM
  3. Replies: 122
    Last Post: 02-19-2011, 05:42 PM
  4. PVP Attacking/Combat differences.
    By Extea in forum Tutorials
    Replies: 25
    Last Post: 05-27-2009, 03:46 PM
  5. Wilderness Levels: Level: 1, Level: 2, Ect.
    By JC09 in forum Tutorials
    Replies: 25
    Last Post: 10-12-2008, 01:29 AM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •