Jump to content

Search the Community

Showing results for tags 'special'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • RuneLocus
    • News & Announcements
    • Information Booth
    • Website Support
    • Introductions
    • Chat
    • Forum Games
  • RuneScape Development
    • RSPS General
    • RuneScape Private Server (RS2)
    • RuneScape Private Server (503+)
    • RuneScape Private Server (EoC 742+)
  • Other
    • Digital Art
    • Gaming
    • Webdevelopment
    • Computers
  • Marketplace
    • RuneScape Market
    • RSPS Market
    • Others Market
    • Freelance Middleman Services
  • Super Secret Club's Topics

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Found 62 results

  1. so, hand cannon special only attacks one time. i went through and figured out the file, and here's it's contents. i'm not too sure what to do. [code]package org.dementhium.model.combat.impl.specs; import org.dementhium.model.Projectile; import org.dementhium.model.SpecialAttack; import org.dementhium.model.combat.Ammunition; import org.dementhium.model.combat.CombatType; import org.dementhium.model.combat.Damage; import org.dementhium.model.combat.Interaction; import org.dementhium.model.combat.RangeData; import org.dementhium.model.combat.RangeFormulae; import org.dementhium.model.combat.RangeWeapon; import org.dementhium.model.mask.Graphic; import org.dementhium.model.misc.DamageManager.DamageType; import org.dementhium.model.misc.ProjectileManager; /** * Executes the Hand cannon's Aimed shot special attack. * @author Emperor * */ public class AimedShot extends SpecialAttack { /** * The graphics. */ private static final Graphic GRAPHICS = Graphic.create(2141, 96 << 16); /** * The special attack projectile GFX id. */ private static final short PROJECTILE_ID = 2143; [MENTION=15855]Over[/MENTION]ride public boolean commenceSpecialAttack(Interaction interaction) { RangeData data = new RangeData(true); data.setWeapon(RangeWeapon.get(interaction.getSource().getPlayer().getEquipment().getSlot(3))); data.setAmmo(Ammunition.get(interaction.getSource().getPlayer().getEquipment().getSlot(13))); if (data.getAmmo() == null || !data.getWeapon().getAmmunition().contains(data.getAmmo().getItemId())) { interaction.getSource().getPlayer().sendMessage("You do not have enough ammo left."); interaction.getSource().getCombatExecutor().reset(); return false; } if (interaction.getVictim().isPlayer()) { interaction.setDeflected(interaction.getVictim().getPlayer().getPrayer().usingPrayer(1, 8)); } int maximum = RangeFormulae.getRangeDamage(interaction.getSource(), 1.0); data.setDamage(Damage.getDamage(interaction.getSource(), interaction.getVictim(), CombatType.RANGE,RangeFormulae.getDamage(interaction.getSource(), interaction.getVictim(), 1.49, 1.0, 0.952))); data.getDamage().setMaximum(maximum); interaction.getSource().setAttribute("aimingTicks", 3); interaction.setTicks((int) Math.floor(interaction.getSource().getLocation().distance(interaction.getVictim().getLocation()) * 0.3) + 3); interaction.getSource().getPlayer().getEquipment().deleteItem(data.getAmmo().getItemId(), 1); interaction.setRangeData(data); return true; } [MENTION=15855]Over[/MENTION]ride public boolean tick(Interaction interaction) { int aimingTicks = interaction.getSource().getAttribute("aimingTicks"); interaction.getSource().setAttribute("aimingTicks", aimingTicks - 1); if (aimingTicks < 1) { interaction.getSource().turnTo(interaction.getVictim()); interaction.getSource().animate(12175); interaction.getSource().graphics(GRAPHICS); int speed = (int) (32 + (interaction.getSource().getLocation().distance(interaction.getVictim().getLocation()) * 5)); ProjectileManager.sendProjectile(Projectile.create(interaction.getSource(), interaction.getVictim(), PROJECTILE_ID, 31, 36, 45, speed, 0)); } if (interaction.getTicks() < 2) { interaction.getVictim().animate(interaction.isDeflected() ? 12573 : interaction.getVictim().getDefenceAnimation()); if (interaction.isDeflected()) { interaction.getVictim().graphics(2229); } } interaction.setTicks(interaction.getTicks() - 1); return interaction.getTicks() < 1; } [MENTION=15855]Over[/MENTION]ride public boolean endSpecialAttack(final Interaction interaction) { interaction.getVictim().getDamageManager().damage( interaction.getSource(), interaction.getRangeData().getDamage(), DamageType.RANGE); if (interaction.getRangeData().getDamage().getVenged() > 0) { interaction.getVictim().submitVengeance( interaction.getSource(), interaction.getRangeData().getDamage().getVenged()); } if (interaction.getRangeData().getDamage().getDeflected() > 0) { interaction.getSource().getDamageManager().damage(interaction.getVictim(), interaction.getRangeData().getDamage().getDeflected(), interaction.getRangeData().getDamage().getDeflected(), DamageType.DEFLECT); } if (interaction.getRangeData().getDamage().getRecoiled() > 0) { interaction.getSource().getDamageManager().damage(interaction.getVictim(), interaction.getRangeData().getDamage().getRecoiled(), interaction.getRangeData().getDamage().getRecoiled(), DamageType.DEFLECT); } interaction.getVictim().retaliate(interaction.getSource()); return true; } [MENTION=15855]Over[/MENTION]ride public CombatType getCombatType() { return CombatType.RANGE; } [MENTION=15855]Over[/MENTION]ride public int getSpecialEnergyAmount() { return 500; } [MENTION=15855]Over[/MENTION]ride public int getCooldownTicks() { return 6; } }[/code]
  2. ive looked around and tried a few tutorials but they dont work for some reason
  3. Prior to adding custom items my Special Attack bar worked, after adding custom items, even though I did not give them a special, none of my special attacks on any weapons will work. Help please? I'm using Exctinction source and client.
  4. I added a brutal whip to my source but i cant figure out how to add special bar to it4
  5. ok so yes there is tons of tutorials of "how to add a special attack to weapons" you don't need to tell me. this was tested on a ninjaescape source (trisidiax) goodluck! in this tutorial im gonna show you not only how to add a special bar, but add your own type of special attack. difficulty: 2/10 files being edited: itemAssistant.java and combatAssistant.java. NOTE: if the weapon already has a special attack then just edit the animation and gfx's from there. NO HATE PLEASE. <3 so first off, open itemAssistant.java, and search for: [CODE]public void addSpecialBar(int weapon) {[/CODE] when there you should see a lot of cases and stuff :p. you should see something like this: [CODE]case 4151: // whip case 15441: // whip case 15442: // whip case 15443: // whip case 15444: // whip c.getPA().sendFrame171(0, 12323); specialAmount(weapon, c.specAmount, 12335); break;[/CODE] or atleast something similar. if you want your spec to use 50% then under one of those case put[CODE]case ###:[/CODE] change the #'s to whatever item id you want your weapon to have a spec. now, after that open combatassistant.java and search: [CODE]case 11694:[/CODE] when you do that you should see: [CODE]case 11694: // ags c.startAnimation(7074); c.specDamage = 1.70; c.specAccuracy = 7.75; c.gfx0(1222); c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); break;[/CODE] after where it says "break;" press enter twice and add this: [CODE]case ####: // item name c.startAnimation(####); c.specDamage = 1.70; c.specAccuracy = 7.75; c.gfx0(####); c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); break;[/CODE] change the #'s to the id's of the animations/gfx you want it to be. if you need codes for them then search it on google, im not doing everything for you! :p then save both files and compile. test it out! if you get any errors please post it. i will tell you how to fix, i am half asleep so sorry if i missed anything, <3 goodluck!
  6. kendalhunter

    Special shops

    making a shop that ccepts an item instead of gp as currency. Im making fist of guthix tokens into currency how can I make certain shop that will accept fog tokens as payment? -thank you
  7. Deadlypkerz1

    Special attack

    So when I korasi spec on my server it hit's around 30 i want it to hit around 50. How do i make the special attack on my weapons hit higher?
  8. HAPPY BIRTHDAY JOE some girls for u, Blonde one is probs best. OMG I FOUND U ON GOOGLE IMAGES LELELEELEL have a good day sexy.
  9. Hey, so i have this problem with special attacks on a server i'm coding.... I use the special attack and it lags and doesn't even use it.... Anyone help :) thanks, -Voer
  10. So I'm sure my special attacks for my weapons work fine, they all the proper emotes and stuff show when I use the spec. However, when I use any weapon's special attack on certain monsters such as the Balance Elemental or Dad, either my character will stop attacking it until I turn the special bar off or it will log my character out. This is what the server says: [CODE] [5/14/13 5:55 PM]: java.lang.ArrayIndexOutOfBoundsException: 1028 [5/14/13 5:55 PM]: at server.model.players.CombatAssistant.activateSpecial( CombatAssistant.java:2776) [5/14/13 5:55 PM]: at server.model.players.CombatAssistant.attackNpc(Combat Assistant.java:198) [5/14/13 5:55 PM]: at server.model.players.Client.process(Client.java:1661) [5/14/13 5:55 PM]: at server.model.players.PlayerHandler.process(PlayerHand ler.java:147) [5/14/13 5:55 PM]: at server.Server.main(Server.java:187)[/CODE] However, when I use any special attack on monsters such as rock crabs, it works fine. Can anyone help me out? I'm new at this and don't know why I'm getting these errors
  11. Hey, this is just to show you guys if it's good or bad. Please don't flame if you don't like it. Thanks for your comments. Special Mode Video : [url=http://www.youtube.com/watch?v=Zo2Pq9TTG14]Dominion Tower (Special Mode) - YouTube[/url] Things still need to be done: -Some NPC CombatScripts -The getBossesHPPercentage has to process all the bosses HP together. -ComponentId (Players will be able to click the option componentId's then click on Fight to make it work). -Some Handicaps I think that's mostly it for now. Also check the future update/show-off in the spoiler below. [SPOILER="Future Updates/Show-Off"] [IMG]http://i49.tinypic.com/15d713c.png[/IMG] [IMG]http://i50.tinypic.com/11bs0vc.png[/IMG] [IMG]http://i49.tinypic.com/b5p4q8.png[/IMG] [IMG]http://i45.tinypic.com/jukga0.png[/IMG] [IMG]http://i50.tinypic.com/qrnp50.png[/IMG] [IMG]http://i50.tinypic.com/2nv4cub.png[/IMG] [IMG]http://i47.tinypic.com/34r6gkz.png[/IMG] [IMG]http://i47.tinypic.com/2qb7t69.png[/IMG] [/SPOILER] Future Updates: Freestyle Mode : Unlocked the boss icons through configs (Thanks to Beuner) Spectator Mode : Still working on
  12. D scimi ID = 4587 For example: Me and you are fighting, we are using smite, and then i speced you then ur PRAYER WILL OFF. I need if you spec anyone his prayer will turn off. Any ideas?
  13. Basic Special Edition [img]http://www.rockstargames.com/V/img/global/special-full.jpg[/img] Collectors Edition [img]http://www.rockstargames.com/V/img/global/collectors-full.jpg[/img] I know what i'm buying...
  14. can anyone help me add dragon claw special attack and armadyl godsword special attack to my server please i tried but it went wrong if you can message me thanks :)
  15. hacker020

    special attack

    i need help adding command ::spec so i can get special attack. and i need the ::teleto ####.#### command
  16. [CENTER][img]http://oi47.tinypic.com/2hguzid.jpg[/img] Hello Everyone, I'm looking for a un-paid scripter that's dedicated to start at a gaming community. We host a Runescape Private Server off the community and we need it quick. Also, we have a significant player base ( over 100 accounts registered). Visit our forums aswell: Aurora-Gaming's: [url]http://auroragames.co[/url] Fantasy X RSPS (Aurora's hosting our site): [url]http://auroragames.co/fantasyx[/url] They also have a dedicated host, which means constant up-time for everything.[/center] [B]What follows of being a scripter at our community:[/B] [left][list][*]Basically granted owner of the server, as to you are the scripter. [*]Put as a Executive Admin over the server, ability to restart, kick, ban, mute. (Full Admin Power) [*]Granted all of the permissions over TeamSpeak + forums relating to your position. [*]Have access to all the server files, you can edit anything to script. [/list] -- This I need quickly, and when apart of the community for a while, the owner of the community will eventually buy you PC games, not guarenteed, but there's a possibility. [B]If you want to contact me in any-way; look below.[/B][/left] * Google Talk name - [email][email protected][/email] (Guarenteed Response) * Skype - chrispy2121 * Aim - [email][email protected][/email] [center]--- Thanks for reading this, and I hope I receive a well-damn-good scripter soon.[/center]
  17. i was wondering how would i add/alter special attacks on my 667?
  18. Hey, i have a 317 server and when you use 100% of your special attack it refills in like 7 seconds or so, can anyone help me make it to where it takes longer to refil, thanks. skype-- jnub41
  19. I'm using NRS3server as base so, it doesnt have a special characters protection, so i can just create a account like Inâãfinity , and it will show like In♠ÒÓfinity, how i can block special chars lol?
  20. [code]if(cmd[0].equals("sit") && (player.mod == 1 || player.coowner == 1 || player.owner == 1 || player.main == 1 || player.admin == 1 || player.headadmin == 1 || player.getUsername().equals("Shangsta"))) { player.animate(2939); player.getUpdateFlags().setAppearanceUpdateRequired(true); } } [/code] is there any way i can add a timer too that ^ so it stays sitting for like 5 min's or so? also dose anyone know special amounts for weapons? VLS, DDS , Statius Hammer, etc?
  21. Happy Birthday, Chaddy. Pic related [IMG]http://i45.tinypic.com/j7cjz9.png[/IMG] <3
  22. Create a new class called "Specials" and paste this inside of it. [CODE]package server.model.players; import server.model.players.Client; import server.model.players.CombatAssistant; import java.util.HashMap; import server.util.Misc; import server.Config; import server.Server; import server.model.npcs.NPCHandler; import server.model.npcs.NPC; /* * * Created by L A * */ public class Specials { private Client c; public Specials(Client c) { this.c = c; } private enum specialAttack { //ItemName(ItemId, SpecDamage, SpecAccuracy, SpecAmount, Anim, GFX0, GFX100, DoubleHit, SsSpec, SpecEffect) ABYSSAL_WHIP(4151, 1, 1, 5, 1658, 341, -1, false, false, 0), DRAGON_DAGGER(1215, .95, 1.15, 2.5, 1062, -1, 252, true, false, 0), DRAGON_DAGGER_P(1231, .85, 1.15, 2.5, 1062, -1, 252, true, false, 0), DRAGON_DAGGER_PP(5698, .85, 1.15, 2.5, 1062, -1, 252, true, false, 0), DRAGON_DAGGER_PPP(5680, .85, 1.15, 2.5, 1062, -1, 252, true, false, 0), DRAGON_LONG(1305, 1.20, 1.10, 2.5, 1058, -1, 248, false, false, 0), DRAGON_MACE(1434, 1.55, .85, 2.5, 1060, -1, 251, false, false, 0), DRAGON_SCIMITAR(4587, 1, 1, 2.5, 1872, -1, 347, false, false, 1), DRAGON_HALBERD(3204, 1.25, .85, 3.3, 1203, -1, 282, true, false, 0), BARRELCHEST_ANCHOR(10887, 1.55, 1.05, 5, 5870, -1, 1027, false, false, 0), GRANITE_MAUL(4153, 1.10, .85, 5, 1667, -1, 337, false, false, 0), KORASIS_SWORD(18786, 1.55, 1.55, 5.5, 1872, -1, 1224, false, false, 0), ARMADYL_GODSWORD(11694, 1.55, 1.75, 5, 7074, 1222, -1, false, false, 0), BANDOS_GODSWORD(11696, 1.35, 1.75, 10, 7073, 1223, -1, false, false, 3), SARADOMIN_GODSWRD(11698, 1.35, 1.75, 5, 7071, 1220, -1, false, false, 4), ZAMORAK_GODSWORD(11700, 1.35, 1.75, 5, 7070, 1221, -1, false, false, 2), SARADOMIN_SWORD(11730, 1.10, 1.35, 10, 7072, -1, 1224, true, true, 0), VESTAS_LONGSWORD(13899, 1.55, 1.35, 2.5, 10502, -1, -1, false, false, 0), VESTAS_SPEAR(13905, 1.35, 1.45, 5, 10499, 1835, -1, false, false, 5), STATIUSS_WARHAMMER(13902, 1.55, 1.25, 3.3, 10505, 1840, -1, false, false, 0), MORRIGANS_JAVELIN(13879, 1.55, 1.25, 5, 10501, 1836, -1, false, false, 7), MORRIGANS_THROWNAXE(13883, 1.55, 1.25, 2.5, 10504, 1838, -1, false, false, 0), MAGIC_SHORTBOW(861, 1.05, .95, 5.5, 1074, -1, -1, true, false, 0), MAGIC_LONGBOW(859, 1.20, 1.05, 5.5, 426, -1, -1, false, false, 0), DARK_BOW(11235, 1.35, 1.35, 5.5, 426, -1, -1, true, false, 0), HAND_CANNON(15241, 1.45, 1.25, 5, 12175, 2138, -1, false, false, 0); private int weapon, anim, gfx1, gfx2, specEffect; private double specDamage, specAccuracy, specAmount; private boolean doubleHit, ssSpec; private specialAttack(int weapon, double specDamage, double specAccuracy, double specAmount, int anim, int gfx1, int gfx2, boolean doubleHit, boolean ssSpec, int specEffect) { this.weapon = weapon; this.specDamage = specDamage; this.specAccuracy = specAccuracy; this.specAmount = specAmount; this.anim = anim; this.gfx1 = gfx1; this.gfx2 = gfx2; this.doubleHit = doubleHit; this.ssSpec = ssSpec; this.specEffect = specEffect; } private int getWeapon() { return weapon; } private double getSpecDamage() { return specDamage; } private double getSpecAccuracy() { return specAccuracy; } private double getSpecAmount() { return specAmount; } private int getAnim() { return anim; } private int getGfx1() { return gfx1; } private int getGfx2() { return gfx2; } private boolean getDoubleHit() { return doubleHit; } private boolean getSsSpec() { return ssSpec; } private int getSpecEffect() { return specEffect; } public static HashMap <Integer,specialAttack> specialAttack = new HashMap<Integer,specialAttack>(); public static specialAttack getWeapon(int weapon) { return specialAttack.get(weapon); } static { for (specialAttack SA : specialAttack.values()) specialAttack.put(SA.getWeapon(), SA); } } public void activateSpecial(int weapon, int i) { int equippedWeapon = c.playerEquipment[c.playerWeapon]; if(Server.npcHandler.npcs[i] == null && c.npcIndex > 0) { return; } if(Server.playerHandler.players[i] == null && c.playerIndex > 0) { return; } c.doubleHit = false; c.specEffect = 0; c.projectileStage = 0; c.specMaxHitIncrease = 2; if(c.npcIndex > 0) { c.oldNpcIndex = i; } else if (c.playerIndex > 0){ c.oldPlayerIndex = i; Server.playerHandler.players[i].underAttackBy = c.playerId; Server.playerHandler.players[i].logoutDelay = System.currentTimeMillis(); Server.playerHandler.players[i].singleCombatDelay = System.currentTimeMillis(); Server.playerHandler.players[i].killerId = c.playerId; } c.specEffect = 0; c.projectileStage = 0; for (specialAttack SA : specialAttack.values()) { if (NPCHandler.npcs[c.npcIndex] == null && c.npcIndex > 0) { return; } if (PlayerHandler.players[c.playerIndex] == null && c.playerIndex > 0) { return; } if (equippedWeapon == 14484) { c.gfx0(1950); c.startAnimation(10961); c.specAccuracy = 1.55; c.clawDamage = 0; if (c.playerIndex > 0) { Client o = (Client) Server.playerHandler.players[c.playerIndex]; if (Misc.random(c.getCombat().calculateMeleeAttack()) > Misc.random(o.getCombat().calculateMeleeDefence())) { c.clawDamage = Misc.random(c.getCombat().calculateMeleeMaxHit() + Misc.random(2)); } c.clawIndex = c.playerIndex; c.clawType = 1; } else if (c.npcIndex > 0) { NPC n = Server.npcHandler.npcs[c.npcIndex]; if (Misc.random(c.getCombat().calculateMeleeAttack()) > Misc.random(n.defence)) { c.clawDamage = Misc.random(c.getCombat().calculateMeleeMaxHit() + Misc.random(2)); } c.clawIndex = c.npcIndex; c.clawType = 2; } c.doubleHit = true; c.usingClaws = true; c.specEffect = 5; c.hitDelay = c.getCombat().getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); } if (equippedWeapon == SA.getWeapon()) { if (SA.getWeapon() == 11235) { c.usingBow = true; c.dbowSpec = true; c.rangeItemUsed = c.playerEquipment[c.playerArrows]; c.getItems().deleteArrow(); c.getItems().deleteArrow(); c.lastWeaponUsed = weapon; c.hitDelay = 3; c.startAnimation(426); c.projectileStage = 1; c.gfx100(c.getCombat().getRangeStartGFX()); c.hitDelay = c.getCombat().getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); if (c.fightMode == 2) c.attackTimer--; if (c.playerIndex > 0) c.getCombat().fireProjectilePlayer(); else if (c.npcIndex > 0) c.getCombat().fireProjectileNpc(); c.specAccuracy = SA.getSpecAccuracy(); c.specDamage = SA.getSpecDamage(); } else if (SA.getWeapon() == 15241) { c.usingBow = true; c.rangeItemUsed = c.playerEquipment[c.playerArrows]; c.getItems().deleteArrow(); c.lastWeaponUsed = weapon; c.startAnimation(12175); c.specAccuracy = SA.getSpecAccuracy(); c.specDamage = SA.getSpecDamage(); c.hitDelay = 5; c.attackTimer-= 7; c.hitDelay = c.getCombat().getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); if (c.fightMode == 2) if (c.playerIndex > 0) c.getCombat().fireProjectilePlayer(); else if (c.npcIndex > 0) c.getCombat().fireProjectileNpc(); } else if (SA.getWeapon() == 13879 || SA.getWeapon() == 13883) { c.usingRangeWeapon = true; c.rangeItemUsed = c.playerEquipment[c.playerWeapon]; c.getItems().deleteArrow(); c.lastWeaponUsed = weapon; c.startAnimation(SA.getAnim()); c.gfx0(SA.getGfx1()); c.specAccuracy = SA.getSpecAccuracy(); c.specDamage = SA.getSpecDamage(); c.projectileStage = 1; c.hitDelay = c.getCombat().getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); if (c.fightMode == 2) c.attackTimer--; if (c.playerIndex > 0) c.getCombat().fireProjectilePlayer(); else if (c.npcIndex > 0) c.getCombat().fireProjectileNpc(); } else if (SA.getWeapon() == 859 || SA.getWeapon() == 861) { c.usingBow = true; c.bowSpecShot = 1; c.rangeItemUsed = c.playerEquipment[c.playerArrows]; c.getItems().deleteArrow(); c.lastWeaponUsed = weapon; c.startAnimation(SA.getAnim()); c.projectileStage = 1; c.hitDelay = c.getCombat().getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); if (c.fightMode == 2) c.attackTimer--; if (c.playerIndex > 0) c.getCombat().fireProjectilePlayer(); else if (c.npcIndex > 0) c.getCombat().fireProjectileNpc(); } else if (SA.getGfx1() == -1) { c.gfx100(SA.getGfx2()); c.startAnimation(SA.getAnim()); c.specDamage = SA.getSpecDamage(); c.specAccuracy = SA.getSpecAccuracy(); c.hitDelay = c.getCombat().getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); c.doubleHit = SA.getDoubleHit(); c.ssSpec = SA.getSsSpec(); } else { c.gfx0(SA.getGfx1()); c.startAnimation(SA.getAnim()); c.specDamage = SA.getSpecDamage(); c.specAccuracy = SA.getSpecAccuracy(); c.hitDelay = c.getCombat().getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); c.doubleHit = SA.getDoubleHit(); c.ssSpec = SA.getSsSpec(); } } c.delayedDamage = Misc.random(c.getCombat().calculateMeleeMaxHit()); c.delayedDamage2 = Misc.random(c.getCombat().calculateMeleeMaxHit()); c.usingSpecial = false; c.getItems().updateSpecialBar(); } } public double specAmount() { for (specialAttack SA : specialAttack.values()) { if (c.playerEquipment[c.playerWeapon] == SA.getWeapon()) { return SA.getSpecAmount(); } } return 0; } } [/CODE] To add another special attack, simply follow this format: [CODE][COLOR="Red"]ABYSSAL_WHIP[/COLOR]([COLOR="Blue"]4151[/COLOR], [COLOR="Lime"]1[/COLOR], [COLOR="DarkOrchid"]1[/COLOR], [COLOR="Magenta"]5[/COLOR], [COLOR="Orange"]1658[/COLOR], [COLOR="Yellow"]341[/COLOR], [COLOR="Indigo"]-1[/COLOR], [COLOR="Teal"]false[/COLOR], [COLOR="SlateGray"]false[/COLOR], [COLOR="Cyan"]0[/COLOR]),[/CODE] [COLOR="Red"]Name of weapon[/COLOR] [COLOR="Blue"]Id of weapon[/COLOR] [COLOR="Lime"]Spec Damage[/COLOR] [COLOR="DarkOrchid"]Spec Accuracy[/COLOR] [COLOR="Magenta"]Spec Amount[/COLOR] [COLOR="Orange"]Animation[/COLOR] [COLOR="Yellow"]Gfx0[/COLOR] [COLOR="Indigo"]Gfx100[/COLOR] [COLOR="Teal"]Double hit[/COLOR] [COLOR="SlateGray"]SsSpec[/COLOR] [COLOR="Cyan"]Spec Effect[/COLOR] If there is no gfx0, gfx100, or animation, put "-1". If there is no specEffect, put "0". Go to CombatAssistant.java and find your activateSpecial method. It should look like this: [CODE]public void activateSpecial(int weapon, int i){ if(Server.npcHandler.npcs[i] == null && c.npcIndex > 0) { return; } if(Server.playerHandler.players[i] == null && c.playerIndex > 0) { return; } c.doubleHit = false; c.specEffect = 0; c.projectileStage = 0; c.specMaxHitIncrease = 2; if(c.npcIndex > 0) { c.oldNpcIndex = i; } else if (c.playerIndex > 0){ c.oldPlayerIndex = i; Server.playerHandler.players[i].underAttackBy = c.playerId; Server.playerHandler.players[i].logoutDelay = System.currentTimeMillis(); Server.playerHandler.players[i].singleCombatDelay = System.currentTimeMillis(); Server.playerHandler.players[i].killerId = c.playerId; } String weaponName = c.getItems().getItemName(weapon).toLowerCase(); switch(weapon) { case 1305: // dragon long c.gfx100(248); c.startAnimation(1058); c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); c.specAccuracy = 1.10; c.specDamage = 1.20; break; case 18369: c.startAnimation(2890); c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); c.specAccuracy = .10; c.specDamage = 5.0; break; case 15241: // hand cannon spec!! c.usingBow = true; c.rangeItemUsed = c.playerEquipment[c.playerArrows]; c.getItems().deleteArrow(); c.lastWeaponUsed = weapon; c.startAnimation(12175); c.specAccuracy = 8.5; c.specDamage = 1.75; c.hitDelay = 5; c.attackTimer-= 7; c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); if (c.fightMode == 2) if (c.playerIndex > 0) fireProjectilePlayer(); else if (c.npcIndex > 0) fireProjectileNpc(); break; case 1215: // dragon daggers case 1231: case 5680: case 5698: c.gfx100(252); c.startAnimation(1062); c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); c.doubleHit = true; c.specAccuracy = 13.0; c.specDamage = 0.85; break; case 10887: c.gfx100(1027); c.specAccuracy = 5.0; c.specDamage = 1.35; c.startAnimation(5870); c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); break; case 14484: c.gfx0(1950); c.startAnimation(10961); c.specAccuracy = 7.0; c.clawDamage = 0; if (c.playerIndex > 0) { Client o = (Client) Server.playerHandler.players[c.playerIndex]; if (Misc.random(calculateMeleeAttack()) > Misc.random(o.getCombat().calculateMeleeDefence())) { c.clawDamage = Misc.random(calculateMeleeMaxHit() + Misc.random(2)); } c.clawIndex = c.playerIndex; c.clawType = 1; } else if (c.npcIndex > 0) { NPC n = Server.npcHandler.npcs[c.npcIndex]; if (Misc.random(calculateMeleeAttack()) > Misc.random(n.defence)) { c.clawDamage = Misc.random(calculateMeleeMaxHit() + Misc.random(2)); } c.clawIndex = c.npcIndex; c.clawType = 2; } c.doubleHit = true; c.usingClaws = true; c.specEffect = 5; c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); break; case 4151: // whip case 15441: // whip case 15442: // whip case 15443: // whip case 15444: // whip if(Server.npcHandler.npcs[i] != null) { Server.npcHandler.npcs[i].gfx100(341); } c.specAccuracy = 11.0; c.specDamage = 1.25; c.startAnimation(1658); c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); break; case 11694: // ags c.startAnimation(7074); c.specDamage = 1.35; c.specAccuracy = 7.55; c.gfx0(1222); c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); break; case 18786: c.gfx100(1224); c.startAnimation(1872); c.specAccuracy = 7.00; c.specDamage = 1.55; c.ssSpec = true; c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); break; case 19780: c.gfx100(1224); c.startAnimation(1872); c.specAccuracy = 7.00; c.specDamage = 1.55; c.ssSpec = true; c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); break; case 11730: c.gfx100(1224); c.startAnimation(7072); c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); c.doubleHit = true; c.ssSpec = true; c.specAccuracy = 1.55; c.specDamage = 1.10; break; case 13905: // Vesta spear c.startAnimation(10499); c.gfx0(1835); c.specAccuracy = 12.5; c.specDamage = 1.08; c.specEffect = 6; c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); break; case 13899: // Vesta LongSword c.startAnimation(10502); c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()+1); c.specDamage = 1.55; c.specAccuracy = 7.00; break; case 13902: // Statius c.startAnimation(10505); c.gfx0(1840); c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()+1); c.specDamage = 1.55; c.specAccuracy = 7.25; break; case 11700: c.startAnimation(7070); c.gfx0(1221); if (c.playerIndex > 0) { } else { Server.npcHandler.npcs[c.npcIndex].gfx0(2104); } c.specAccuracy = 1.55; c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); c.specEffect = 2; break; case 11696: c.startAnimation(7073); c.gfx0(1223); c.specDamage = 1.15; c.specAccuracy = 7.85; c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); c.specEffect = 3; break; case 18367: c.startAnimation(410); c.gfx0(604); c.specDamage = 1.20; c.specAccuracy = 2.00; c.specEffect = 6; c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); break; case 11698: c.startAnimation(7071); c.gfx0(1220); c.specAccuracy = 8.00; c.specDamage = 1.15; c.specEffect = 4; c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); break; case 1249: c.startAnimation(405); c.gfx100(253); if (c.playerIndex > 0) { Client o = (Client)Server.playerHandler.players[i]; o.getPA().getSpeared(c.absX, c.absY); } break; case 3204: // d hally c.gfx100(282); c.startAnimation(1203); c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); if(Server.npcHandler.npcs[i] != null && c.npcIndex > 0) { if(!c.goodDistance(c.getX(), c.getY(), Server.npcHandler.npcs[i].getX(), Server.npcHandler.npcs[i].getY(), 1)){ c.doubleHit = true; } } if(Server.playerHandler.players[i] != null && c.playerIndex > 0) { if(!c.goodDistance(c.getX(), c.getY(), Server.playerHandler.players[i].getX(),Server.playerHandler.players[i].getY(), 1)){ c.doubleHit = true; c.delayedDamage2 = Misc.random(calculateMeleeMaxHit()); } } break; case 4153: // maul c.startAnimation(1667); c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); /*if (c.playerIndex > 0) gmaulPlayer(i); else gmaulNpc(i);*/ c.gfx100(337); break; case 4587: // dscimmy c.gfx100(347); c.specEffect = 1; c.startAnimation(1872); c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); break; case 1434: // mace c.startAnimation(1060); c.gfx100(251); c.specMaxHitIncrease = 3; c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase())+1; c.specDamage = 1.55; c.specAccuracy = 0.85; break; case 859: // magic long c.usingBow = true; c.bowSpecShot = 3; c.rangeItemUsed = c.playerEquipment[c.playerArrows]; c.getItems().deleteArrow(); c.lastWeaponUsed = weapon; c.startAnimation(426); c.gfx100(250); c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); c.projectileStage = 1; if (c.fightMode == 2) c.attackTimer--; break; case 13883: // Morrigan Throwing Axe c.usingRangeWeapon = true; c.rangeItemUsed = c.playerEquipment[c.playerWeapon]; c.getItems().deleteArrow(); c.lastWeaponUsed = weapon; c.startAnimation(10501); c.gfx0(1836); c.hitDelay = 3; c.specAccuracy = 6.90; c.specDamage = 1.20; c.projectileStage = 1; c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); if (c.fightMode == 2) c.attackTimer--; if (c.playerIndex > 0) fireProjectilePlayer(); else if (c.npcIndex > 0) fireProjectileNpc(); break; case 13879: // Morrigan Javeline c.usingRangeWeapon = true; c.rangeItemUsed = c.playerEquipment[c.playerWeapon]; c.getItems().deleteArrow(); c.lastWeaponUsed = weapon; c.startAnimation(10504); c.gfx0(1838); c.specAccuracy = 5.00; c.specDamage = 1.08; c.hitDelay = 3; c.projectileStage = 1; c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); if (c.fightMode == 2) c.attackTimer--; if (c.playerIndex > 0) fireProjectilePlayer(); else if (c.npcIndex > 0) fireProjectileNpc(); break; case 861: // magic short c.usingBow = true; c.bowSpecShot = 1; c.rangeItemUsed = c.playerEquipment[c.playerArrows]; c.getItems().deleteArrow(); c.lastWeaponUsed = weapon; c.startAnimation(1074); c.hitDelay = 3; c.projectileStage = 1; c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); if (c.fightMode == 2) c.attackTimer--; if (c.playerIndex > 0) fireProjectilePlayer(); else if (c.npcIndex > 0) fireProjectileNpc(); break; case 11235: // dark bow case 15701: // dark bow case 15702: // dark bow case 15703: // dark bow case 15704: // dark bow c.usingBow = true; c.dbowSpec = true; c.rangeItemUsed = c.playerEquipment[c.playerArrows]; c.getItems().deleteArrow(); c.getItems().deleteArrow(); c.lastWeaponUsed = weapon; c.hitDelay = 3; c.startAnimation(426); c.projectileStage = 1; c.gfx100(getRangeStartGFX()); c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); if (c.fightMode == 2) c.attackTimer--; if (c.playerIndex > 0) fireProjectilePlayer(); else if (c.npcIndex > 0) fireProjectileNpc(); c.specAccuracy = 1.75; c.specDamage = 1.50; break; } c.delayedDamage = Misc.random(calculateMeleeMaxHit()); c.delayedDamage2 = Misc.random(calculateMeleeMaxHit()); c.usingSpecial = false; c.getItems().updateSpecialBar(); }[/CODE] Replace the whole thing with this: [CODE] public void activateSpecial(int weapon, int i) { c.getSA().activateSpecial(weapon, i); }[/CODE] Now, for every instance of "activateSpecial(weapon, i);", do this: Change: [CODE]activateSpecial(c.playerEquipment[c.playerWeapon], i);[/CODE] To: [CODE]c.getSA().activateSpecial(c.playerEquipment[c.playerWeapon], i);[/CODE] There should be about 3 instances of "activateSpecial(weapon, i);". Go to your checkSpecAmount method. It should look like this: [CODE] public boolean checkSpecAmount(int weapon) { switch(weapon) { case 1249: case 1215: case 1231: case 5680: case 5698: case 1305: case 1434: case 13899: if(c.specAmount >= 2.5) { c.specAmount -= 2.5; c.getItems().addSpecialBar(weapon); return true; } return false; case 4151: case 15241: case 15441: // whip case 15442: // whip case 15443: // whip case 15444: // whip case 11694: case 18786: case 14484: case 11698: case 4153: case 13902: case 13905: case 13883: case 13879: case 19780: case 15486: case 11700: case 18369: case 10887: if(c.specAmount >= 5) { c.specAmount -= 5; c.getItems().addSpecialBar(weapon); return true; } return false; case 3204: if(c.specAmount >= 3) { c.specAmount -= 3; c.getItems().addSpecialBar(weapon); return true; } return false; case 1377: case 11696: case 11730: case 18367: if(c.specAmount >= 10) { c.specAmount -= 10; c.getItems().addSpecialBar(weapon); return true; } return false; case 4587: case 859: case 861: case 15701: // dark bow case 15702: // dark bow case 15703: // dark bow case 15704: // dark bow case 11235: if(c.specAmount >= 5.5) { c.specAmount -= 5.5; c.getItems().addSpecialBar(weapon); return true; } return false; default: return true; // incase u want to test a weapon } }[/CODE] Replace the whole thing with this: [CODE] public boolean checkSpecAmount(int weapon) { if(c.specAmount >= c.getSA().specAmount()) { c.specAmount -= c.getSA().specAmount(); c.getItems().addSpecialBar(weapon); return true; } return false; }[/CODE] ------- To add another special weapon, add the data to the enum, and add the spec bar to your weapon via ItemAssistant.
  23. has anyone downloaded the source and knows where i can change item special's like vesta longsword etc? i tryed every folder and i can't seem to find anything
×