Thread: [SHARD] NPC Multi Hit

Results 1 to 5 of 5
  1. #1 [SHARD] NPC Multi Hit 
    Registered Member
    Join Date
    Feb 2017
    Posts
    8
    Thanks given
    0
    Thanks received
    0
    Rep Power
    0
    Yo, not sure if having a brain fart here but.. im adding multi hit to my Sea troll queen, it does the multi hit just fine but it is constantly hitting a 0?
    Heres my code..

    public void applyDamage(int i) {
    if(this != null) {
    if(PlayerManager.getSingleton().getPlayers()[killerId] == null) {
    return;
    }
    Client c = (Client) PlayerManager.getSingleton().getPlayers()[killerId];

    //if(c.attackTimer <= 3 || c.attackTimer == 0 && c.npcIndex == 0 && c.oldNpcIndex == 0) {
    if (System.currentTimeMillis() - c.attackTimer > 0 && c.npcIndex == 0 && c.oldNpcIndex == 0){
    c.getActionAssistant().startAnimation(c.getCombat( ).getBlockEmote());
    }
    if(c.respawnTimer <= 0) {
    int damage = Misc.random(maxHit);

    if(definition.type == 3847){
    //c.getActionAssistant().sendMessage("HP- "+hp);
    MultiHit(getAbsX(), getAbsY(), 15, 15,killerId);
    return;
    }
    Reply With Quote  
     

  2. #2  
    Community Veteran


    Arch337's Avatar
    Join Date
    Sep 2008
    Posts
    2,950
    Thanks given
    210
    Thanks received
    349
    Rep Power
    1376
    check your "MultiHit" method.
    Why do you even have the multihit method inside where it applies damage instead of having the multihit method have the applydamage method inside of it?


    "A fail act is something you do regular, but a dumb act is something you can learn from"
    Spoiler for Problem?:
    Reply With Quote  
     

  3. #3  
    Registered Member
    Join Date
    Feb 2017
    Posts
    8
    Thanks given
    0
    Thanks received
    0
    Rep Power
    0
    Here is my multi hit method.

    public void MultiHit(int x, int y, int maxdamage, int range, int killer) {
    int damage = 0;
    for (int i = 1; i < Constants.MAXIMUM_PLAYERS; i++)
    {
    Player p = PlayerManager.getSingleton().getPlayers()[i];
    if(p != null)
    {
    Client person = (Client) PlayerManager.getSingleton().getPlayers()[i];
    if(person.playerLevel[3] <= 0){ continue;}
    if(!person.inWild()) {continue;}
    if (!person.inMulti()) { continue; }
    if(person.distanceToPoint(x, y) > range) { continue; }
    if(definition.type == 14696){
    if (person.playerLevel[3] > 200 && !person.playerName.equalsIgnoreCase("AgentJags") && !person.playerName.equalsIgnoreCase("zeroeh")) { person.playerLevel[3] = person.getActionAssistant().getLevelForXP(person.p layerXP[3]) ; }
    if(hp > 11250){
    if(!messagesSent[0]){
    PlayerManager.getSingleton().sendGlobalMessage(mes sages[0]);
    messagesSent[0] = true;
    }
    phase = 0;
    Melee = true;
    if (Misc.random(3) == 0) { continue; }
    damage = Misc.random(20);
    } else if(hp > 7500 && hp < 11250){
    if(!messagesSent[1]){
    PlayerManager.getSingleton().sendGlobalMessage(mes sages[1]);
    messagesSent[1] = true;
    }
    phase = 1;
    Maging = true;
    if (Misc.random(3) == 0) { continue; }
    Server.getStillGraphicsManager().stillGraphics(per son,
    person.getAbsX(), person.getAbsY(), 0, 1194, 0);
    damage = Misc.random(15)+5;
    } else if(hp > 3750 && hp <7500){
    if(!messagesSent[2]){
    PlayerManager.getSingleton().sendGlobalMessage(mes sages[2]);
    messagesSent[2] = true;
    }
    phase = 2;
    Ranging = true;
    if (Misc.random(3) == 0) { continue; }
    Server.getStillGraphicsManager().stillGraphics(per son,
    person.getAbsX(), person.getAbsY(), 0, 542, 0);
    damage = Misc.random(10)+10;
    } else if(hp > 750 && hp < 3750){
    if(!messagesSent[3]){
    PlayerManager.getSingleton().sendGlobalMessage(mes sages[3]);
    messagesSent[3] = true;
    }
    phase = 3;
    if (Misc.random(3) == 0) { continue; }
    switch(Misc.random(3)){
    case 0:
    Melee = true;
    break;
    case 1:
    Maging = true;
    Server.getStillGraphicsManager().stillGraphics(per son,
    person.getAbsX(), person.getAbsY(), 0, 1194, 0);
    break;
    case 2:
    Ranging = true;
    Server.getStillGraphicsManager().stillGraphics(per son,
    person.getAbsX(), person.getAbsY(), 0, 542, 0);
    break;
    }
    damage = Misc.random(20) + 20;
    } else {
    if(!messagesSent[4]){
    PlayerManager.getSingleton().sendGlobalMessage(mes sages[4]);
    messagesSent[4] = true;
    }
    switch(Misc.random(3)){
    case 0:
    Melee = true;
    break;
    case 1:
    Maging = true;
    Server.getStillGraphicsManager().stillGraphics(per son,
    person.getAbsX(), person.getAbsY(), 0, 1194, 0);
    break;
    case 2:
    Ranging = true;
    Server.getStillGraphicsManager().stillGraphics(per son,
    person.getAbsX(), person.getAbsY(), 0, 542, 0);
    break;
    }
    damage = Misc.random(10) + 30;
    }
    }
    if (definition.type == 8528) {
    if (Maging) {
    Server.getStillGraphicsManager().stillGraphics(per son,
    person.getAbsX(), person.getAbsY(), 0, 1194, 0);
    }
    damage = Misc.random(maxdamage);
    }
    if (person.playerEquipment[PlayerConstants.PLAYER_SHIELD] == 13740) {
    double div = damage *0.7;
    int test = (int)div;
    test = test - 1; //correct for rounding
    if (person.playerRights < 3) {
    person.playerLevel[5] -= 0.15 * damage;
    }
    if(person.playerLevel[5] <= 0) {
    person.playerLevel[5] = 0;
    }
    person.getActionAssistant().refreshSkill(5);
    damage = (int)div;
    } else if (person.playerEquipment[PlayerConstants.PLAYER_SHIELD] == 13742) {
    int elysain = damage / 4;
    damage = damage - elysain;
    }
    if (person.prayerActive[18] ||person.prayerActive[16] || person.prayerActive[17]) {
    damage = (int)(damage/1.5);

    }
    if (person.playerLevel[3] - damage < 0) {
    damage = person.playerLevel[3];
    }
    if(definition.type == 3847){
    Ranging = false;
    Melee = false;
    Maging = false;
    }
    person.logoutDelay = System.currentTimeMillis(); // logout delay
    person.hitDiff = damage;
    person.playerLevel[3] -= damage;
    person.getActionAssistant().refreshSkill(3);
    person.updateRequired = true;
    person.hitUpdateRequired = true;
    }
    }
    }
    Reply With Quote  
     

  4. #4  
    Community Veteran


    Arch337's Avatar
    Join Date
    Sep 2008
    Posts
    2,950
    Thanks given
    210
    Thanks received
    349
    Rep Power
    1376
    Quote Originally Posted by woak95 View Post
    Here is my multi hit method.
    Do something like this as a debug then tell me what it says when you get attacked:

    Code:
    public void MultiHit(int x, int y, int maxdamage, int range, int killer) {
    System.out.println("sends multi values....");
    int damage = 0;
    for (int i = 1; i < Constants.MAXIMUM_PLAYERS; i++) 
    {	
    Player p = PlayerManager.getSingleton().getPlayers()[i];
    if(p != null) 
    {
    Client person = (Client) PlayerManager.getSingleton().getPlayers()[i];
    if(person.playerLevel[3] <= 0){ continue;}
    if(!person.inWild()) {continue;}
    if (!person.inMulti()) { continue; }
    if(person.distanceToPoint(x, y) > range) { continue; }
    if(definition.type == 14696){
    if (person.playerLevel[3] > 200 && !person.playerName.equalsIgnoreCase("AgentJags") && !person.playerName.equalsIgnoreCase("zeroeh")) { person.playerLevel[3] = person.getActionAssistant().getLevelForXP(person.p layerXP[3]) ; }
    if(hp > 11250){
    if(!messagesSent[0]){	
    PlayerManager.getSingleton().sendGlobalMessage(mes sages[0]);
    messagesSent[0] = true;
    }
    phase = 0;
    Melee = true;
    if (Misc.random(3) == 0) { continue; }
    damage = Misc.random(20);
    System.out.println("sends first: " + damage);
    } else if(hp > 7500 && hp < 11250){
    if(!messagesSent[1]){
    PlayerManager.getSingleton().sendGlobalMessage(mes sages[1]);
    messagesSent[1] = true;
    }
    phase = 1;
    Maging = true;
    if (Misc.random(3) == 0) { continue; }
    Server.getStillGraphicsManager().stillGraphics(per son,
    person.getAbsX(), person.getAbsY(), 0, 1194, 0);
    damage = Misc.random(15)+5;
    System.out.println("sends second: " + damage);
    } else if(hp > 3750 && hp <7500){
    if(!messagesSent[2]){
    PlayerManager.getSingleton().sendGlobalMessage(mes sages[2]);
    messagesSent[2] = true;
    }
    phase = 2;
    Ranging = true;
    if (Misc.random(3) == 0) { continue; }
    Server.getStillGraphicsManager().stillGraphics(per son,
    person.getAbsX(), person.getAbsY(), 0, 542, 0);
    damage = Misc.random(10)+10;
    System.out.println("sends third: " + damage);
    } else if(hp > 750 && hp < 3750){
    if(!messagesSent[3]){
    PlayerManager.getSingleton().sendGlobalMessage(mes sages[3]);
    messagesSent[3] = true;
    }
    phase = 3;
    if (Misc.random(3) == 0) { continue; }
    switch(Misc.random(3)){
    case 0:
    Melee = true;
    break;
    case 1:
    Maging = true;
    Server.getStillGraphicsManager().stillGraphics(per son,
    person.getAbsX(), person.getAbsY(), 0, 1194, 0);
    break;
    case 2:
    Ranging = true;
    Server.getStillGraphicsManager().stillGraphics(per son,
    person.getAbsX(), person.getAbsY(), 0, 542, 0);
    break;
    }
    damage = Misc.random(20) + 20;
    System.out.println("sends fourth: " + damage);
    } else {
    if(!messagesSent[4]){
    PlayerManager.getSingleton().sendGlobalMessage(mes sages[4]);
    messagesSent[4] = true;
    }
    switch(Misc.random(3)){
    case 0:
    Melee = true;
    break;
    case 1:
    Maging = true;
    Server.getStillGraphicsManager().stillGraphics(per son,
    person.getAbsX(), person.getAbsY(), 0, 1194, 0);
    break;
    case 2:
    Ranging = true;
    Server.getStillGraphicsManager().stillGraphics(per son,
    person.getAbsX(), person.getAbsY(), 0, 542, 0);
    break;
    }
    damage = Misc.random(10) + 30;
    System.out.println("sends fifth: " + damage);
    }	
    }	
    if (definition.type == 8528) {
    if (Maging) { 
    Server.getStillGraphicsManager().stillGraphics(per son,
    person.getAbsX(), person.getAbsY(), 0, 1194, 0);
    }
    damage = Misc.random(maxdamage);
    System.out.println("sends sixth: " + damage);
    }	
    if (person.playerEquipment[PlayerConstants.PLAYER_SHIELD] == 13740) {
    double div = damage *0.7;
    int test = (int)div;
    test = test - 1; //correct for rounding
    if (person.playerRights < 3) {
    person.playerLevel[5] -= 0.15 * damage;
    }
    if(person.playerLevel[5] <= 0) {
    person.playerLevel[5] = 0;
    }
    person.getActionAssistant().refreshSkill(5);
    damage = (int)div;
    } else if (person.playerEquipment[PlayerConstants.PLAYER_SHIELD] == 13742) {
    int elysain = damage / 4;
    damage = damage - elysain;
    }
    if (person.prayerActive[18] ||person.prayerActive[16] || person.prayerActive[17]) {
    damage = (int)(damage/1.5);
    
    }
    if (person.playerLevel[3] - damage < 0) { 
    damage = person.playerLevel[3];
    }
    if(definition.type == 3847){
    Ranging = false;
    Melee = false;
    Maging = false;
    }
    person.logoutDelay = System.currentTimeMillis(); // logout delay
    person.hitDiff = damage;
    person.playerLevel[3] -= damage;
    person.getActionAssistant().refreshSkill(3);
    person.updateRequired = true;
    person.hitUpdateRequired = true;
    System.out.println("sends last: " + damage);
    }
    }
    }


    "A fail act is something you do regular, but a dumb act is something you can learn from"
    Spoiler for Problem?:
    Reply With Quote  
     

  5. #5  
    Registered Member
    Join Date
    Feb 2017
    Posts
    8
    Thanks given
    0
    Thanks received
    0
    Rep Power
    0
    I actually just did change this to STQ and now it works perfectly

    if (definition.type == 3847) {
    if (Ranging) {
    Server.getStillGraphicsManager().stillGraphics(per son,
    person.getAbsX(), person.getAbsY(), 0, 1194, 0);
    }
    damage = Misc.random(maxdamage);
    }
    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

Similar Threads

  1. Replies: 118
    Last Post: 05-30-2010, 02:24 PM
  2. My npc multi hit system has a bug?
    By Proffesor Oak in forum Help
    Replies: 2
    Last Post: 04-10-2009, 11:15 PM
  3. npcs max hits and hp =)
    By demon_dylan in forum Tutorials
    Replies: 5
    Last Post: 11-20-2008, 06:14 PM
  4. Making npc-s hit (hiyascape v2)
    By barkyboy in forum Tutorials
    Replies: 2
    Last Post: 06-10-2008, 11:14 PM
  5. NPC max hit's
    By princes arta in forum Tutorials
    Replies: 5
    Last Post: 12-17-2007, 07:05 PM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •