Jump to content

Sneakyhearts

Member
  • Content count

    132
  • Joined

  • Last visited

Everything posted by Sneakyhearts

  1. [CENTER][IMG]http://i.imgur.com/J2EnaaP.gif[/IMG] This has been escalating quickly, and before it goes any further, I'm ending it. This is out in the open now. [/CENTER] Download link : [url]http://eduhacks.net/.phantasm/fullscreen-asgarnia.tar.gz[/url] Server link : [url]http://www.runelocus.com/forums/showthread.php?94065-Asgarnia-Official-Release-Exclusive-on-Runelocus[/url] [CENTER]Client Media [IMG]http://i.imgur.com/2QtTL6q.png[/IMG] [IMG]http://i.imgur.com/nMqo2xK.png[/IMG] [IMG]http://i.imgur.com/wAzH993.png[/IMG] [IMG]http://i.imgur.com/65txJcn.png[/IMG] [/CENTER] My Rename conversion table : [QUOTE] Animable -> Entity -> Renderable Animable_Sub2 -> Mobile Animable_Sub3 -> StillGraphic Animable_Sub4 -> Projectile Animable_Sub5 -> GameObject Applet_Sub1 -> RSApplet -> GameShell Background -> IndexedImage Class10 -> Object1 -> WallObject Class11 -> CollisionMap Class13 -> BZ2InputStream Class18 -> SkinList Class19 -> NodeList -> Deque Class28 -> InteractableObject Class29 -> Envelope Class30 -> Node Class30_Sub1 -> SpawnObjectNode Class32 -> BZ2Block Class33 -> VertexNormal Class36 -> Animation Class39 -> Filter Class4 -> MapUtility Class40 -> ShapedTile Class43 -> PlainTile Class47 -> CullingCluster Class49 -> GroundDecoration Class6 -> Synthesizer DrawingArea -> RSRaster Flo -> Floor MRUNodes -> Cache NodeSub -> QueueNode Object2 ->. WallDecoration Object4 -> GroundItemTile ObjectManager -> Region OnDemandData -> Resource OnDemandFetcher -> ResourceProvider SpotAnim -> Graphic Sprite -> DirectImage Stream -> RSBuffer StreamLoader -> CacheArchive Texture -> Rasterizer WorldController -> SceneGraph [/QUOTE] [SIZE=7][COLOR="#EE82EE"] Goodfight[/COLOR][/SIZE]
  2. [CENTER][IMG]http://i1059.photobucket.com/albums/t426/helloman449/Kalgrianwebbanner1_zpsd082cf8d.jpg[/IMG][/CENTER] Hello everyone. Today I am releasing a very old version of my current server. For those of you who know Asgarnia, this was what we used and have worked on since early 2012. It was our work based off of RuneSource / Azure release and we have put a lot of time and effort into it. Enjoy the old server!! This does not include NPC combat and it includes oldserver and server archives. the latest server build has a messed up container system which can be fixed or replaced with the one from oldserver. download includes client, cache, update-server, and server. [url]http://www.mediafire.com/download/pvsbkw6lgx95bvb/FullKalegrian%5Bold%2Bnew%5D.zip[/url] [INDENT] [CENTER][IMG]http://i1059.photobucket.com/albums/t426/helloman449/content_zps0b0534ad.png[/IMG] [IMG]http://i1059.photobucket.com/albums/t426/helloman449/skills_zps2debe9c2.png[/IMG] [/CENTER] [IMG]http://i1059.photobucket.com/albums/t426/helloman449/woodcutting_zpsd9cc1c83.png[/IMG] [LIST] [*][FONT=georgia][COLOR=#008000]You must have the required level to use your axe.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]You must have the required level to chop the tree.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]You must have an axe to chop down a tree.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]The higher your woodcutting level is, the faster the chopping rate is.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]The better your axe is, the faster the chopping rate.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]If you have multiple axe's in your inventory or equipment, it will choose the best one based on your woodcutting level.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]If your inventory is full, you cannot start an event, this will also cancel the event.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]All animations, level requirements, experience and gain rates as well as rewards are 100% correct.[/COLOR][/FONT] [/LIST] [IMG]http://i1059.photobucket.com/albums/t426/helloman449/mining_zps14e372b9.png[/IMG] [LIST] [*][FONT=georgia][COLOR=#008000]You must be holding a Pickaxe of which you have the requirement for, whether it be in your inventory or equipment.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]You will mine with the best available Pickaxe you are holding.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]You cannot mine if you have a full inventory. This will cancel also any current mining event if one exists.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]All rocks across the game world have been configured and will work, guaranteed.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]All animations, level requirements, experience and gain rates as well as rewards are 100% correct.[/COLOR][/FONT] [/LIST] [IMG]http://i1059.photobucket.com/albums/t426/helloman449/herblore_zpsb57ef8d7.png[/IMG] [LIST] [*][FONT=georgia][COLOR=#008000]You may now clean all grimy herb types.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]You are able to mix all clean herb's with a vial of water to produce an unfinished potion.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]You are able to mix all additive ingredients to the unfinished mixtures to produce a magical potion.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]All animations, level requirements, experience and gain rates as well as rewards are 100% correct.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]All interface options configured correctly (Make 5, 10, 'x', all)[/COLOR][/FONT] [/LIST] [IMG]http://i1059.photobucket.com/albums/t426/helloman449/fletching_zps62da7aee.png[/IMG] [LIST] [*][FONT=georgia][COLOR=#008000]You may now create headless and complete arrows using arrow shafts + feathers > headless arrows + arrow tips.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]You may now fletch log's into headless arrows, unstrung bow's, and crossbow stock's.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]You may now string all unstrung bow's into a complete bow.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]All interface options configured correctly (Make 5, 10, 'x', all)[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]All animations, level requirements, experience and gain rates as well as rewards are 100% correct.[/COLOR][/FONT] [/LIST] [IMG]http://i1059.photobucket.com/albums/t426/helloman449/fishing_zps5ac357fd.png[/IMG] [LIST] [*][FONT=georgia][COLOR=#008000]Fishing may be trained across the map at all different fishing spots.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]Players receive fish at a faster rate as your Fishing level increases.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]Players receive random fishing according to the fishing equipment and spot you are fishing with.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]Players receive the correct experience, and must have the required level, bait and fishing equipment.[/COLOR][/FONT] [/LIST] [IMG]http://i1059.photobucket.com/albums/t426/helloman449/crafting_zps3b2c2369.png[/IMG] [LIST] [*][FONT=times new roman][COLOR=#008000]Gem Cutting[/COLOR][/FONT] [LIST] [*][FONT=georgia][COLOR=#008000]You may cut all types of gems, including specialty gems from Shilo Village.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]All animations, level requirements, experience and gain rates as well as rewards are 100% correct.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]All interface options configured correctly (Make 5, 10, 'x', all)[/COLOR][/FONT] [/LIST] [*][FONT=times new roman][COLOR=#008000]Wheel Spinning[/COLOR][/FONT] [LIST] [*][FONT=georgia][COLOR=#008000]All raw materials may be spun on the spinning wheel.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]All animations, level requirements, experience and gain rates as well as rewards are 100% correct.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]All interface options configured correctly (Make 5, 10, 'x', all)[/COLOR][/FONT] [/LIST] [*][FONT=times new roman][COLOR=#008000]​Leather Armor Creation[/COLOR][/FONT] [LIST] [*][FONT=georgia][COLOR=#008000]Correct leather creation with make 1, 5 and 10 options[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]All leather armor can be created with a needle and thread[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]Correct level requirements, consumption requirements and experience gains.[/COLOR][/FONT] [/LIST] [*][FONT=times new roman][COLOR=#008000]​Dragon Hide Armor Creation[/COLOR][/FONT] [LIST] [*][FONT=georgia][COLOR=#008000]All Dragonhide types may be crafted into d'hide armour.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]All level requirements and experience gains are 100% correct.[/COLOR][/FONT] [/LIST] [*][COLOR=#008000][FONT=arial]​[/FONT][/COLOR][FONT=times new roman][COLOR=#008000]Hide Tanning[/COLOR][/FONT] [LIST] [*][FONT=georgia][COLOR=#008000]​[/COLOR][COLOR=#008000]All hides may be tanned to leather.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]Tanner's may be found at all of the proper locations.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]All hides have the level requirement and costs.[/COLOR][/FONT] [/LIST] [*][FONT=times new roman][COLOR=#008000]Glass Melting[/COLOR][/FONT] [LIST] [*][FONT=georgia][COLOR=#008000]Seeweed may be used on a fire or a range to turn it to Soda ash.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]While carrying bucket of sand and soda ash, the player may use one of the items on a furnace to produce molten glass.[/COLOR][/FONT] [/LIST] [*][FONT=times new roman][COLOR=#008000]Glass Blowing[/COLOR][/FONT] [LIST] [*][FONT=georgia][COLOR=#008000]While carrying a Glassblowing pipe, players may blow molten glass into all types of glass items.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]All material requirements, experience gains, and rewards are 100% correct.[/COLOR][/FONT] [/LIST] [/LIST] [IMG]http://i1059.photobucket.com/albums/t426/helloman449/thieving_zps790c45a9.png[/IMG] [LIST] [*][FONT=times new roman][SIZE=5][COLOR=#008000]Pickpocketing[/COLOR][/SIZE][/FONT] [LIST] [*][FONT=georgia][COLOR=#008000]All Npc's vulnerable to pickpocketing have been configured properly.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]As your thieving level is increased, your pickpocketing success rate will also be more consistent.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]You can not pickpocket while you are stunned.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]You can not walk while you are stunned.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]You can not pickpocket during combat.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]You can not pickpocket if your opponent is instigating an attack (prior to stunning).[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]You can not pickpocket if the victim is in combat with another player.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]You can not pickpocket while doing another form of action or skill.[/COLOR][/FONT] [/LIST] [/LIST] [IMG]http://i1059.photobucket.com/albums/t426/helloman449/combat_zpsa18a88f4.png[/IMG] [LIST] [*][FONT=times new roman][SIZE=5][COLOR=#008000]Melee[/COLOR][/SIZE][/FONT] [LIST] [*][FONT=georgia][COLOR=Green]Extremely accurate maxhit formula corresponding to RuneScape. [/COLOR][/FONT] [*][FONT=georgia][COLOR=Green]Very accurate blocking/attacking delays[/COLOR][/FONT] [*][FONT=georgia][COLOR=Green]All special attacks on near perfect delays.[/COLOR][/FONT] [*][FONT=georgia][COLOR=Green]Equipment bonus's & affects. (Barrows, Void Armor Ring of Life, Ring of Recoil, Berserker, etc.)[/COLOR][/FONT] [*][FONT=georgia][COLOR=Green]Proper animations for all weapons.[/COLOR][/FONT] [*][FONT=georgia][COLOR=Green]Player poisoning which can be healed by a potion or a period of time.[/COLOR][/FONT] [/LIST] [*][FONT=times new roman][SIZE=5][COLOR=#008000]Magic[/COLOR][/SIZE][/FONT] [LIST] [*][FONT=georgia][COLOR=Green]Perfect Defensive Autocasting.[/COLOR][/FONT] [*][FONT=georgia][COLOR=Green]Perfect Modern spell magics with Autocasting [/COLOR][/FONT] [*][FONT=georgia][COLOR=Green]Perfect Ancient spell magics with Autocasting[/COLOR][/FONT] [*][FONT=georgia][COLOR=Red][COLOR=Green]Correct RuneScape Teleportation. [Requires runes][/COLOR][/COLOR][/FONT] [*][FONT=georgia][COLOR=Green]All Miscellaneous spells (Telekinetic grab, confuse, weaken)[/COLOR][/FONT] [*][FONT=georgia][COLOR=Green]Perfect Teleblock, prayer will reduce time blocked.[/COLOR][/FONT] [/LIST] [*][FONT=times new roman][SIZE=5][COLOR=#008000]Range[/COLOR][/SIZE][/FONT] [LIST] [*][FONT=georgia][COLOR=#008000]Clipped Projectiles (Obsidian rings, darts, thrown-axe's)[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]Clipped long range following.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]All bows with correct bonuses and special attacks.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]All crossbows with correct bolt special effects, including Karil's c-bow.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#008000]Perfect Dark bow "Decent of Dragons" special attack max-hit formula.[/COLOR][/FONT] [LIST] [*][COLOR=#008000]Both attacks will [U][I][B]ALWAYS[/B][/I][/U] hit.[/COLOR] [*][COLOR=#008000]If using [B]normal arrow types[/B], the minimum hit will be[B] 5[/B][/COLOR] [*][COLOR=#008000]However, using [B]Dragon Arrows[/B], then the minimum hit will be [B]8.[/B][/COLOR] [*][COLOR=#008000]If opponent is praying against[B] ranged combat styles[/B], then the minimum hit will be with [B]normal arrows: 3[/B], and with [B]dragon arrows: 4.[/B][/COLOR] [*][COLOR=#008000]Using normal arrows, your max hit will be boosted by [B]30%[/B][/COLOR] [*][COLOR=#008000]Using dragon arrows, your max hit will be boosted by [B]50%[/B][/COLOR] [/LIST] [/LIST] [/LIST] [CENTER][IMG]http://i1059.photobucket.com/albums/t426/helloman449/Miscellaneous_zps456de107.png[/IMG][/CENTER] [IMG]http://i1059.photobucket.com/albums/t426/helloman449/random_zps4bf05144.png[/IMG] [LIST] [*][FONT=times new roman][COLOR=#008000]Region based music[/COLOR][/FONT] [*][FONT=times new roman][COLOR=#008000]Weapon, spell, and other miscellaneous sounds.[/COLOR][/FONT] [*][FONT=times new roman][COLOR=#008000]Custom (yet not overdone) settings interface with screenshot function. [/COLOR][/FONT] [*][FONT=times new roman][COLOR=#008000]Consumables (Food & Potions) of all types may be consumed with the proper result.[/COLOR][/FONT] [*][FONT=times new roman][COLOR=#008000]OpenRS Update Server[/COLOR][/FONT] [*][FONT=times new roman][SIZE=5][COLOR=#008000]Python (Jython) scripting engine handles nearly all interactive content such as as the following:[/COLOR][/SIZE][/FONT] [LIST] [*][FONT=georgia][COLOR=#FFA500]Npc Interactions.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#FFA500]Item Interactions.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#FFA500]Object Interactions.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#FFA500]Item Operations.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#FFA500]Actionbuttons.[/COLOR][/FONT] [*][FONT=georgia][COLOR=#FFA500]Commands.[/COLOR][/FONT] [/LIST] [*][COLOR=#ffd700][FONT=times new roman][SIZE=5]Toys[/SIZE][/FONT][/COLOR] [LIST] [*][FONT=georgia][COLOR=#008000]Toy Horsey.[/COLOR][/FONT] [/LIST] [*][FONT=times new roman][COLOR=#008000]Crate Searching.[/COLOR][/FONT] [*][FONT=times new roman][COLOR=#008000]Clipped following. (with old-school 'dancing') [/COLOR][/FONT] [*][FONT=times new roman][COLOR=#008000]Very efficient container system. (Inventory, Trade, Bank..)[/COLOR][/FONT] [*][FONT=times new roman][COLOR=#008000]Incredibly fast and flawless item switching system. [must see youtube][/COLOR][/FONT] [*][FONT=times new roman][COLOR=#008000]Dupe-proof Trading.[/COLOR][/FONT] [*][FONT=times new roman][COLOR=#008000]Banking.[/COLOR][/FONT] [*][FONT=times new roman][COLOR=#008000]Bank Pins.[/COLOR][/FONT] [*][FONT=times new roman][COLOR=#008000]Crystal Key Chest.[/COLOR][/FONT] [*][FONT=times new roman][COLOR=#008000]Welcome Screen with integrated account information. [/COLOR][/FONT] [*][FONT=times new roman][COLOR=#008000]All Emotes including Skillcape emotes. [/COLOR][/FONT] [*][FONT=times new roman][COLOR=#008000]Explosive Potions.[/COLOR][/FONT] [*][FONT=times new roman][COLOR=#008000]Cow Milking.[/COLOR][/FONT] [*][FONT=times new roman][COLOR=#008000]Teleport Tabs.[/COLOR][/FONT] [*][FONT=times new roman][COLOR=#008000]Teleport Other spell "teleother". [/COLOR][/FONT] [*][FONT=times new roman][COLOR=#008000]Our very own Questing system which takes advantage of Polymorphism.[/COLOR][/FONT] [*][FONT=times new roman][COLOR=#008000]Graham's HarvestingAction & ProductionAction systems improved and implemented and for skilling.[/COLOR][/FONT] [/LIST] [/INDENT]
  3. This is used in certain content areas including the Barrows minigame. It makes your entire minimap completely black and you are unable to click inside the minimap area to walk during black-out mode. I am going to be showing you how to add this to RuneSource and you can easily convert the outstream methods to match your own. The reason I'm posting this is that I have been made aware that most sources do not offer this by default and to add it for yourself you must read and understand the parsePacket and drawMinimap client sided methods. I have come up with these methods myself. I use dynamic buffer sizing on my framework ( second snippet ) and I have said that the size of the buffer is 2 for runesource (1 for the header, 1 to send the byte) Open your ActionSender and add the following.. [CODE] public ActionSender sendMinimapBlackout(int val) { StreamBuffer.OutBuffer out = StreamBuffer.newOutBuffer(2); out.writeHeader(player.getEncryptor(), 99); out.writeByte(val); player.send(out.getBuffer()); return this; } [/CODE] Or non Rune-Source related sources, please convert the following to suit your server ... [CODE] /** * Sends a config to the client to enable/disable minimap black-out. * * [MENTION=75098]Para[/MENTION]m value The configuration value. */ public void sendHiddenMinimapState(int value) { PacketBuilder builder = new PacketBuilder(99); builder.put(value); player.getSession().write(builder.build()); } [/CODE] The above code block can be found within Harmony : [url]http://www.runelocus.com/forums/showthread.php?93808-Harmony-Rapid-Lightweight-Framework[/url] For a 474 Server, change the opcode to [B]5[/B] instead of [B]99[/B] The parameter will take the following values to my understanding : [LIST] [*][COLOR=#FF0000]-1 / 0[/COLOR] - shows your regular minimap. [*][COLOR=#008000]2[/COLOR] - does not show the minimap, 'black-out' mode [/LIST] [CENTER] BEFORE - STATE OF - 0 / -1 [IMG]http://i.imgur.com/RuZ1L6u.png[/IMG] AFTER - STATE OF 2 [IMG]http://i.imgur.com/vC7umm0.png[/IMG] [/CENTER] Example of usage : [CODE] sendMinimapBlackout(2); [/CODE]
  4. [CENTER][IMG]http://i.imgur.com/J2EnaaP.gif[/IMG][/CENTER] Hello Runelocus! This is the only thread where Asgarnia is permitted to be released. As the lead developer / founder of Asgarnia have decided to release our Server files, fully open source for you to download and use as you please. It has come to my attention that several members have been leaking this source privately and it has been posted publicly a few times in attempt to piss me off. Here you go, find your own client!! You will want to generate your own set of RSA keys. Download link : [url]http://www.mediafire.com/download/o8sce30g6s883js/Asgarnia%23377.zip[/url] Client : [url]http://www.runelocus.com/forums/showthread.php?94105-Fullscreen-Client-Asgarnia[/url] Also check our the old version, Kalegrian : [url]http://www.runelocus.com/forums/showthread.php?93789-Kalegrian-Amazing-Flawless-PvP-Many-Skills[/url] [CENTER][IMG]http://i.imgur.com/F9Iea49.png[/IMG][/CENTER] [IMG]http://i.imgur.com/4G3opMb.png[/IMG] [LIST] [*]Perfect Gnome Training Course [/LIST] [IMG]http://i.imgur.com/c5te7cD.png[/IMG] [LIST] [*]All cookable food types may be cooked over a fire or on a range. [*]Players may cook 1, 5, 10, or x amount of their raw item. [*]Based on the players cooking level there is a chance of burning food. [*]Cooking gauntlets will increase your chance of success. [*]The range in Lumbridge kitchen gives the best success rate (fewer burns than any other range) [*]Any range will give a better chance of success than a fire. [/LIST] [IMG]http://i.imgur.com/rBkCnzb.png[/IMG] [LIST] [*]Gem Cutting [LIST] [*]You may cut all types of gems, including specialty gems from Shilo Village. [*]All animations, level requirements, experience and gain rates as well as rewards are 100% correct. [*]All interface options configured correctly (Make 5, 10, 'x', all) [/LIST] [*]Wheel Spinning [LIST] [*]All raw materials may be spun on the spinning wheel. [*]All animations, level requirements, experience and gain rates as well as rewards are 100% correct. [*]All interface options configured correctly (Make 5, 10, 'x', all) [/LIST] [*]Leather Armor Creation [LIST] [*]Correct leather creation with make 1, 5 and 10 options [*]All leather armor can be created with a needle and thread [*]Correct level requirements, consumption requirements and experience gains. [/LIST] ​ [*]Dragon Hide Armor Creation [LIST] [*]All Dragonhide types may be crafted into d'hide armour. [*]All level requirements and experience gains are 100% correct. [/LIST] [*]Hide Tanning [LIST] [*]All hides may be tanned to leather. [*]Tanner's may be found at all of the proper locations. [*]All hides have the level requirement and costs. [/LIST] [*]Glass Melting [LIST] [*]Sea-weed may be used on a fire or a range to turn it to Soda ash. [*]While carrying bucket of sand and soda ash, the player may use one of the items on a furnace to produce molten glass. [/LIST] [*]Glass Blowing [LIST] [*]While carrying a Glassblowing pipe, players may blow molten glass into all types of glass items. All material requirements, experience gains, and rewards are 100% correct. [/LIST] [/LIST] [IMG]http://i.imgur.com/r0yRDhK.png[/IMG] [LIST] [*]Fishing may be trained across the map at all different fishing spots. [*]Players receive fish at a faster rate as your Fishing level increases. [*]Players receive random fishing according to the fishing equipment and spot you are fishing with. [*]Players receive the correct experience, and must have the required level, bait and fishing equipment. [/LIST] [IMG]http://i.imgur.com/LuYsdlu.png[/IMG] [LIST] [*]Players may create headless and complete arrows using arrow shafts + feathers > headless arrows + arrow tips. [*]Players may fletch log's into headless arrows, unstrung bow's, and crossbow stock's. [*]Players may string all unstrung bow's into a complete bow. [*]All interface options configured correctly (Make 5, 10, 'x', all) [*]All animations, level requirements, experience and gain rates as well as rewards are 100% correct. [/LIST] [IMG]http://i.imgur.com/NSmsae9.png[/IMG] [LIST] [*]Players may now clean all grimy herb types. [*]Players are able to mix all clean herb's with a vial of water to produce an unfinished potion. [*]Players are able to mix all additive ingredients to the unfinished mixtures to produce a magical potion. [*]All animations, level requirements, experience and gain rates as well as rewards are 100% correct. [*]All interface options configured correctly (Make 5, 10, 'x', all) [/LIST] [IMG]http://i.imgur.com/XwuP1kU.png[/IMG] [LIST] [*]You must be holding a Pickaxe of which you have the requirement for, whether it be in your inventory or equipment. [*]You will mine with the best available Pickaxe you are holding. [*]You cannot mine if you have a full inventory. This will cancel also any current mining event if one exists. [*]All rocks across the game world have been configured and will work, guaranteed. [*]All animations, level requirements, experience and gain rates as well as rewards are 100% correct. [/LIST] [IMG]http://i.imgur.com/6YezGuk.png[/IMG] [LIST] [*]All bone types may be buried with the correct amount of experience gain. [*]Using bones on an Alter gives the best experience. [/LIST] [IMG]http://i.imgur.com/i6RWfLk.png[/IMG] [LIST] [*]The 'Locate' option of a talisman will guide you to the altar. [*]You must have completed the Rune Mysteries quest to access the Essence mines. [*]Correct multipliers for level milestones. [*]Pure essence must be used where necessary, but may be used where normal is also acceptable. [/LIST] [IMG]http://i.imgur.com/DlEwFdp.png[/IMG] [LIST] [*]Pickpocketing [LIST] [*]All Npc's vulnerable to pickpocketing have been configured properly. [*]As your thieving level is increased, your pickpocketing success rate will also be more consistent. [*]Players can not pickpocket while you are stunned. [*]Players can not walk while you are stunned. [*]Players can not pickpocket during combat. [*]Players can not pickpocket if your opponent is instigating an attack (prior to stunning). [*]Players can not pickpocket if the victim is in combat with another player. [*]Players can not pickpocket while doing another form of action or skill. [/LIST] [*]Stall Robbery [LIST] [*]All stalls give the appropriate experience gain and reward item. [*]You may be caught by market guards or the stall keeper. [*]Some stalls have a keeper that will purchase the items back, but they will not trade within 20 minutes of stealing from them. [/LIST] [/LIST] [IMG]http://i.imgur.com/cnDlBA4.png[/IMG] [LIST] [*]Players must have the required level to use your axe. [*]Players must have the required level to chop the tree. [*]Players must have an axe to chop down a tree. [*]The higher your woodcutting level is, the faster the chopping rate is. [*]The better your axe is, the faster the chopping rate. [*]If you have multiple axe's in your inventory or equipment, it will choose the best one based on your woodcutting level. [*]If your inventory is full, you cannot start an event, this will also cancel the event. [*]All animations, level requirements, experience and gain rates as well as rewards are 100% correct. [/LIST] [IMG]http://i.imgur.com/ohRUBHL.png[/IMG] [LIST] [*]Coming Soon! [/LIST] [IMG]http://i.imgur.com/1CuMFHk.png[/IMG] [LIST] [*]Coming Soon! [/LIST] [IMG]http://i.imgur.com/93DYWNM.png[/IMG] [LIST] [*]Coming Soon! [/LIST] [IMG]http://i.imgur.com/iu8CyRs.png[/IMG] [LIST] [*]Players may light fires with all log types. [*]All level requirements and experience gains are correct. [*]Upon creating a fire, players are forced to walk West if possible, otherwise, east if possible, and if both are blocked by a solid object they may not light a fire. [*]Fires turn to ashes in a random duration between 60s - 120s [*]After fires turn to into ashes, the ashes last for 60 seconds before disappearing. [/LIST] [IMG]http://i.imgur.com/bjE2hNn.png[/IMG] [LIST] [*]Coming Soon! [/LIST] [IMG]http://i.imgur.com/1ey7eXz.png[/IMG] [LIST] [*]Coming Soon! [/LIST] [IMG]http://i.imgur.com/773qekR.png[/IMG] [LIST] [*]Rune Mysteries [*]Druidic Ritual [*]Sheep Shearer [*]Doric's Quest [*]The Restless Ghost [*]Cook's Assistant [*]The Waterfall Quest [*]More to come!! This list will not end until all quests are complete, plus custom ones! [/LIST] [IMG]http://i.imgur.com/WsJuPG5.png[/IMG] [LIST] [*]TzHaar Fight Pits [LIST] [*]Minimum game size is 3 players, waiting time is 80 seconds. [*]This minigame is a safe; free - for - all combatant based minigame. [*]Player's fight for the rank Champion rank and a tokkul reward, amounting to the total of the combined combat levels the champion has slain. [/LIST] [*]Duel Arena [LIST] [*]Players may challenge opponents anywhere within the perimeter of the arena. [*]All dueling rules may be configured and function properly. [*]Duel sessions ended abruptly by server shutdown or other unplanned events will give back the items to the correct player. [*]If a player clicks the trap door in the Duel Arena, they may forfeit the deal providing it has not been disallowed via the duel rules. [*]The winner of the duel will receive the staked items of both players. [*]There are 6 dueling arena's; 3 empty and 3 obstacle courses each with a max capacity, system automatically determines which course to place contestants in. [*]Top 50 duel winner's are stored on the recent victories interface. [/LIST] [*]Mage Training Arena Telekinetic Chamber - Coming Soon Alchemists' Playground [LIST] [*]Players cast high level alchemy or low level alchemy spells to convert five items found in eight cupboards to gold coins. Every 40 seconds, the items rotate clockwise from cupboard to cupboard. The items keep their relative positions as they move. [*]The alchemised value for each item changes every 40 seconds, and the window in the top-right corner displays the current values. The Alchemy Guard will call out when the prices are changing [*]The values are the same for both high and low level alchemy. Item values range from 1 to 30 coins. [*]For every 100 coins deposited in the coin collector, the player will gain one pizazz point. The player also gains two magic experience per coin deposited, and ten coins (deposited straight to the player's bank) for every 100 deposited. [*]The maximum amount of coins that can be deposited is 12,000. A warning message about that is displayed every cast if a player has 10,000 coins or more in his inventory. [*]f the player attempts to redeem more then 12000 coins in one transaction, they will be removed from the arena and the coins will be cleared from the inventory. They will message reminding them that they were warned to deposit a maximum of 12000 coins in on deposit. The player will receive NO pizazz points nor will coins be placed in the bank for these transactions. [/LIST] Enchantment Chamber [LIST] [*]Players cast enchant jewellery spells to enchant various shaped items (blue Icosahedron, yellow cube, red pentamid, and green cylinder) located in the four corners of the room into orbs. [*]In the bottom-right portion of the screen, an icon indicates which bonus shape to transform if the player wishes to gain pizazz points. These shapes will transform into orbs, granting one pizzaz point per cast. All magic experience is reduced to 75% the regular amount in this room. [*]The bonus shape changes every 25 seconds. The Enchantment Guardian also calls out the bonus shape as it changes. [*]Player can deposit orbs in the middle of the room: Every 20 will earn a reward of either three blood, death, or cosmic runes. [*]For each ten shapes converted, the player is rewarded a bonus: On converting the tenth shape, the arena will award points according to the level of enchantment used to convert the tenth shape. (example : lv 7 enchant = 7 pizazz point reward) [/LIST] Creature Graveyard [LIST] [*]Each bone is worth between one and four pieces of fruit. When taking a bone from a pile, they follow a specific order. The player will pick up four bones worth 1 piece of fruit, then four worth 2, then four worth 3, then four worth 4 pieces of fruit. The cycle repeats after this. [*]Every so often, the player will be struck for 20 life points by falling bones. Protection prayers will not prevent the falling bones from causing damage. Upon death, the player will be sent back to the arena's main hall and lose 10 graveyard pizazz points. The player will not lose any equipment. Logging out in the room will not affect the pizazz points, but the player will lose all fruit in their inventory. You can also bring food into this minigame. [*]For every 16 fruit deposited in the slot, one graveyard pizazz point is earned. As a further reward players are given one blood, death, earth, water, or nature rune. [/LIST] Pizazz Hat [LIST] [*]Notifies the player of their pizazz points for each category as per usual. [*]Typical arrogant attitude the Pizazz hat always had on RuneScape. [*]Upon destruction, the player loses all pizazz points. [*]As you gain more pizazz points, the hat will upgrade/degrade in the following stages [LIST] [*]Dull: 0 - 9000 total Pizazz [*]Energized: 9000 - 16000 Total Pizazz [*]Full: 16000 total Pizazz [/LIST] [*]The hat has a maximum point storage limit, as follows: [LIST] [*]4000 Graveyard Pizazz Points [*]4000 Telekinetic Pizazz Points [*]8000 Alchemist Pizazz Points [*]16000 Enchantment Pizazz Points [/LIST] [/LIST] [/LIST] [IMG]http://i.imgur.com/oUpNe6k.png[/IMG] [LIST] [*]Melee [LIST] [*]Extremely accurate maxhit formula corresponding to RuneScape. [*]Very accurate blocking/attacking delays [*]All special attacks on near perfect delays. [*]Equipment bonus's & affects. (Barrows, Void Armor Ring of Life, Ring of Recoil, Berserker, etc.) [*]Proper animations for all weapons. [*]Player poisoning which can be healed by a potion or a period of time. [/LIST] [*]Mage [LIST] [*]Perfect Defensive Autocasting. [*]Perfect Modern spell magics with Autocasting [*]Perfect Ancient spell magics with Autocasting [*]Correct RuneScape Teleportation. [Requires runes] [*]All Miscellaneous spells (Telekinetic grab, confuse, weaken) [*]Perfect Tele-block, prayer will reduce time blocked. [/LIST] [*]Range [LIST] [*]Clipped Projectiles (Obsidian rings, darts, thrown-axe's) [*]Clipped long range following. [*]All bows with correct bonuses and special attacks. [*]All crossbows with correct bolt special effects, including Karil's c-bow. [*]Perfect Dark bow "Decent of Dragons" special attack max-hit formula. [LIST] [*]Both attacks will ALWAYS hit. [*]If using normal arrow types, the minimum hit will be 5 [*]If using Dragon Arrows, then the minimum hit will be 8. [*]If opponent is praying against ranged combat styles, then the minimum hit will be with normal arrows: 3, and with dragon arrows: 4. [*]Using normal arrows, your max hit will be boosted by 30% [*]Using dragon arrows, your max hit will be boosted by 50% [/LIST] [/LIST] [/LIST] [IMG]http://i.imgur.com/7iKDPP6.png[/IMG] [LIST] [*]Python scripting engine handles most interactive content. [*]Fully resizeable + fullscreen client using 474 cache [*]Clipped pathfinding [*]Following with 'dancing' [*]Perfect trading [*]Perfect banking. Players may donate for unlimited space. [*]Crate searching for random rewards. [*]Sled riding [*]Flying with the Bow-Sword [*]Pet kitten's [*]Crystal Key Chest [*]Tons of small details of content! The list never ends! [/LIST] [CENTER]SOME MEDIA NOT ALL LOL [IMG]http://i.imgur.com/Nw7PYHE.png[/IMG] [IMG]http://i.imgur.com/3zXNkWe.png[/IMG] [IMG]http://i.imgur.com/nMqo2xK.png[/IMG] [IMG]http://i.imgur.com/gdx6v7i.png[/IMG] [IMG]http://i.imgur.com/BYgODTf.png[/IMG] [IMG]http://i.imgur.com/xwwfRAC.png[/IMG] [IMG]http://i.imgur.com/wAzH993.png[/IMG] [IMG]http://i.imgur.com/3Caeco9.png[/IMG] [IMG]http://i.imgur.com/Z7SAUwt.png[/IMG] [IMG]http://i.imgur.com/7tb38hH.png[/IMG] [IMG]http://i.imgur.com/3HAQAG1.png[/IMG] [IMG]http://i.imgur.com/XlNw1zW.png[/IMG] [IMG]http://i.imgur.com/rz9BiCf.png[/IMG] [IMG]http://i.imgur.com/Q5Nn372.png[/IMG] [IMG]http://i.imgur.com/mGrTR90.png[/IMG] [IMG]http://i.imgur.com/2QtTL6q.png[/IMG] [IMG]http://i.imgur.com/md03idj.png[/IMG] [IMG]http://i.imgur.com/AycvRAA.png[/IMG] [IMG]http://i.imgur.com/uemZkZl.png[/IMG] [IMG]http://i.imgur.com/viOYUTl.png[/IMG] [IMG]http://i.imgur.com/65txJcn.png[/IMG] [IMG]http://i.imgur.com/VyNbjqb.png[/IMG] [IMG]http://i.imgur.com/LlTheBV.png[/IMG] [IMG]http://i.imgur.com/MyfVrTH.png[/IMG] [IMG]http://i.imgur.com/fAftRbK.png[/IMG] [IMG]http://i.imgur.com/MQ69BPW.png[/IMG] [IMG]http://i.imgur.com/PIIsJnQ.png[/IMG] Youtube Channel [URL="http://www.youtube.com/user/KalegrianRSPS"][IMG]http://cdn.thatvideogameblog.com/wp-content/uploads/2013/02/youtube-logo-05.png[/IMG][/URL] [video=youtube;joXoZ7BM0cY]http://www.youtube.com/watch?v=joXoZ7BM0cY[/video] [/CENTER]
  5. Hello, I am offering my services as a developer for fair payment. I have been in the RSPS community since 2007 and have been developing Java since 2009. I have been working with Python since 2011 and have taken a major preference to it. I also have a fair amount of C++ experience, have read several E-books, plenty of documentation and done plenty of practice with all three languages listed above. I have not been a major member of RuneLocus since 2009/2010 before the database was reset etc. I have mainly been using the other major RSPS development forum, and you may recognize project names such as 7th Dimension, Asgarnia, Kalegrian all of which were projects of mine. Some examples of my work within this forum : Python : [url]http://www.runelocus.com/forums/showthread.php?93558-Python-Pyside-UNIX-Desktop-Entry-Manager[/url] RSPS : [url]http://www.runelocus.com/forums/showthread.php?93789-Kalegrian-Amazing-Flawless-PvP-Many-Skills[/url] Barrows [url]http://www.runelocus.com/forums/showthread.php?93843-Basic-Barrows-System[/url] Blackout packet : [url]http://www.runelocus.com/forums/showthread.php?93556-Minimap-Blackout-Packet[/url] Harmony : [url]http://www.runelocus.com/forums/showthread.php?93808-Harmony-Rapid-Lightweight-Framework[/url] Asgarnia : [url]http://www.runelocus.com/forums/showthread.php?94065-Asgarnia-Official-Release-Exclusive-on-Runelocus[/url] I am also willing to show other work privately. add me on skype : Josh-r-m
  6. Hey guys. I'm Josh, and I am back from the abyss. I was a former member of Runelocus in 2009 under the username Owner-Josh. I remember when RL got hacked and the database was leaked and we all started fresh on VB4. I remember Brendon as a global moderator, Sick` as a forum moderator, Ikiliki and Mark as the administrators... I remember users such as Trey which was a good friend of mine, and Soul Banner ! Is anyone still around? Or is this entire community new? Also, is there any rank for veterans?
  7. I have created like 10 total quests with this and it works 100% and i have supported state saving which is easy just request help i you need it. A server successfully using this system : [url]http://www.runelocus.com/forums/showthread.php?94065-Asgarnia-Official-Release-Exclusive-on-Runelocus[/url] Step 1 : Create a new package, call it 'quest' and you should probably make it extend either a 'model' or 'content' base folder. Inside the newly created package, create a new Java interface : Quest [CODE] /** * * [MENTION=52317]auth[/MENTION]or Joshua Barry * */ public interface Quest { /** * Determines if the player has the requirements to complete this quest. * * [MENTION=75098]Para[/MENTION]m player The player attempting the quest. * [MENTION=184045]return[/MENTION] {@code true} if the player can complete the quest. */ public abstract boolean hasRequirements(Player player); /** * Determine what happens when the questing player dies. * * [MENTION=75098]Para[/MENTION]m player The player who has died. * [MENTION=184045]return[/MENTION] {@code true} if the player has died. */ public abstract boolean deathListener(Player player); /** * Determines what happens when the questing player kills another entity. * * [MENTION=75098]Para[/MENTION]m player The player who has killed the victim entity. * [MENTION=184045]return[/MENTION] */ public abstract boolean defeatListener(Player player); /** * Determines whether a player has clicked a specific button or not, and * what the outcome will be. * * [MENTION=75098]Para[/MENTION]m player * [MENTION=184045]return[/MENTION] */ public abstract boolean dialougeListener(Player player); /** * Start the quest. */ public abstract void start(Player player); /** * End the quest. */ public abstract void end(Player player); /** * Give the player the reward items. */ public abstract void giveRewards(Player player); /** * The list of rewards the player will receive upon quest completion. * * [MENTION=184045]return[/MENTION] */ public abstract Item[] getRewards(); /** * Gets the quest attribute name. * * [MENTION=184045]return[/MENTION] */ public abstract String getAttributeName(); /** * Gets the quest name. * * [MENTION=184045]return[/MENTION] */ public abstract String getQuestName(); /** * Gets the amount of quest points to award the player. * * [MENTION=184045]return[/MENTION] */ public abstract short getQuestPointAward(); /** * Gets the amount of experience gained. * * [MENTION=184045]return[/MENTION] */ public abstract double[][] getExperienceAward(); /** * Displayed on reward interface. * * [MENTION=184045]return[/MENTION] */ public abstract String getAdditionalMessage(); /** * Gets the value of the final quest. * * [MENTION=184045]return[/MENTION] */ public abstract short getFinalStage(); /** * Gets the quest button id. * * [MENTION=184045]return[/MENTION] */ public abstract short getQuestButton(); } [/CODE] Next, a Java class called QuestEntry [CODE] import java.util.Map.Entry; /** * A convenience class for simplifying quest retrieval from the quest database. * * [MENTION=52317]auth[/MENTION]or Joshua Barry * */ public class QuestEntry implements Entry<String, Integer> { /** * The name of this quest. */ private final String name; /** * The button id of the quest. The one found on the quest tab. */ private final int button; public QuestEntry(String name, int button) { this.name = name; this.button = button; } [MENTION=15855]Over[/MENTION]ride public String getKey() { return name; } [MENTION=15855]Over[/MENTION]ride public Integer getValue() { return button; } [MENTION=15855]Over[/MENTION]ride public Integer setValue(Integer value) { return button; } } [/CODE] Now this is an EXAMPLE of my QuestRepository which I have left [B][COLOR=#FF0000]unmodified[/COLOR][/B] to show how to add quests to the repository. [CODE] import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import com.asgarniars.rs2.content.quest.impl.CooksAssistant; import com.asgarniars.rs2.content.quest.impl.DoricsQuest; import com.asgarniars.rs2.content.quest.impl.DruidicRitual; import com.asgarniars.rs2.content.quest.impl.RuneMysteries; import com.asgarniars.rs2.content.quest.impl.SheepShearer; import com.asgarniars.rs2.content.quest.impl.TheRestlessGhost; import com.asgarniars.rs2.content.quest.impl.WaterfallQuest; import com.asgarniars.rs2.content.quest.impl.WitchsPotion; import com.asgarniars.rs2.model.players.Player; /** * * author Joshua Barry <Sneakyhearts> * */ public class QuestRepository { /** * The amount of quests available in revision #317 */ public static final int AMOUNT_OF_QUESTS = 103; /** * The mapping holding all quest data. */ public static final Map<QuestEntry, Quest> QUEST_DATABASE = new HashMap<QuestEntry, Quest>(); /** * p.s. static initializers are ugly */ static { QUEST_DATABASE.put(new QuestEntry("SheepShearer", 7344), new SheepShearer()); QUEST_DATABASE.put(new QuestEntry("RuneMysteries", 7335), new RuneMysteries()); QUEST_DATABASE.put(new QuestEntry("DoricsQuest", 7336), new DoricsQuest()); QUEST_DATABASE.put(new QuestEntry("TheRestlessGhost", 7337), new TheRestlessGhost()); QUEST_DATABASE.put(new QuestEntry("DruidicRitual", 7355), new DruidicRitual()); QUEST_DATABASE.put(new QuestEntry("WitchsPotion", 7348), new WitchsPotion()); QUEST_DATABASE.put(new QuestEntry("WaterfallQuest", 7350), new WaterfallQuest()); QUEST_DATABASE.put(new QuestEntry("CooksAssistant", 1), new CooksAssistant()); } /** * Grabs a quest from the mapping with the given button index. * * [MENTION=75098]Para[/MENTION]m button The quest button id. * [MENTION=184045]return[/MENTION] The {@code Quest} which id matches the id given, or {@code null} * if the quest didn't exist. */ public static Quest get(int button) { Set<QuestEntry> entries = QUEST_DATABASE.keySet(); for (Iterator<QuestEntry> it$ = entries.iterator(); it$.hasNext();) { QuestEntry entry = it$.next(); if (entry.getValue() == button) { return QUEST_DATABASE.get(entry); } } return null; } /** * Grab a quest from the mapping with the given name. * * [MENTION=75098]Para[/MENTION]m name The quest's name. * [MENTION=184045]return[/MENTION] The {@code Quest} whose name matches the one provided, or * {@code null} if the quest with the given name couldn't be found. */ public static Quest get(String name) { Set<QuestEntry> entries = QUEST_DATABASE.keySet(); for (Iterator<QuestEntry> it$ = entries.iterator(); it$.hasNext();) { QuestEntry entry = it$.next(); if (entry.getKey().equalsIgnoreCase(name)) { return QUEST_DATABASE.get(entry); } } return null; } /** * Handles the quest side bar interfaces and name * * [MENTION=75098]Para[/MENTION]m player The player. */ public static void handle(Player player) { for (Quest quest : QUEST_DATABASE.values()) { if (player.getQuestStorage().hasStarted(quest)) { player.getActionSender().changeInterfaceComponentColor(quest.getQuestButton(), 0x33FF66); } if (player.getQuestStorage().hasFinished(quest)) { player.getActionSender().changeInterfaceComponentColor(quest.getQuestButton(), 0x3366); } player.getActionSender().sendString(quest.getQuestName(), quest.getQuestButton()); } } } [/CODE] Another class called QuestStorage [CODE] import java.util.HashMap; import java.util.Map; /** * Quest storage, a repository to hold the state's and access to quests. * * [MENTION=52317]auth[/MENTION]or Joshua Barry * */ public class QuestStorage { /** * The current quest states. */ private final Map<Quest, Integer> states = new HashMap<Quest, Integer>(); /** * Gets the quest state. * * [MENTION=75098]Para[/MENTION]m questId The quest id to check. * [MENTION=184045]return[/MENTION] The quest state (0 at default). */ public int getState(int questId) { return states.get(QuestRepository.get(questId)); } /** * Gets the quest state by quest. * * [MENTION=75098]Para[/MENTION]m quest The quest to check. * [MENTION=184045]return[/MENTION] The quest state (0 at default). */ public int getState(Quest quest) { return states.get(quest); } /** * Checks if the player has finished a certain quest. * * [MENTION=75098]Para[/MENTION]m quest The quest id. * [MENTION=184045]return[/MENTION] {@code True} if so, {@code false} if not. */ public boolean hasFinished(Quest quest) { if (states.containsKey(quest)) { return quest != null && quest.getFinalStage() <= states.get(quest); } return false; } /** * Checks if the player has started a certain quest. * * [MENTION=75098]Para[/MENTION]m quest The quest's id. * [MENTION=184045]return[/MENTION] {@code true} if the player has started the quest, {@code false} * if not. */ public boolean hasStarted(Quest quest) { if (states.containsKey(quest)) { return states.get(quest) > 0 && states.get(quest) < quest.getFinalStage(); } return false; } /** * * [MENTION=75098]Para[/MENTION]m questId The quest to set the stage for. * [MENTION=75098]Para[/MENTION]m state the state to set. */ public void setState(Quest quest, int state) { states.put(quest, state); } } [/CODE] Step 2: create another package which extends 'quest' and call it 'impl' (implementation's) now you create your abstract base class : QuestStructure [CODE] package com.asgarniars.rs2.content.quest.impl; import com.asgarniars.rs2.content.dialogue.Dialogue; import com.asgarniars.rs2.content.dialogue.StatementDialogue; import com.asgarniars.rs2.content.dialogue.StatementType; import com.asgarniars.rs2.content.quest.Quest; import com.asgarniars.rs2.content.quest.QuestRepository; import com.asgarniars.rs2.content.skills.Skill; import com.asgarniars.rs2.model.items.Item; import com.asgarniars.rs2.model.items.ItemManager; import com.asgarniars.rs2.model.players.Player; /** * The foundation of a quest upon which all other quests should stand. * * [MENTION=52317]auth[/MENTION]or Joshua Barry * */ public abstract class QuestStructure implements Quest { [MENTION=15855]Over[/MENTION]ride public void start(Player player) { if (!this.hasRequirements(player)) { Dialogue dialogue = new StatementDialogue(StatementType.NORMAL, new String[] { "You do not meet the requirements for this quest." }); player.open(dialogue); return; } player.getQuestStorage().setState(this, 1); QuestRepository.handle(player); player.setAttribute(getAttributeName(), (byte) -1); } [MENTION=15855]Over[/MENTION]ride public void end(Player player) { player.setQuestPoints(player.getQuestPoints() + getQuestPointAward()); giveRewards(player); QuestRepository.handle(player); player.getActionSender().sendMessage("Congratulations! Quest complete!"); player.removeAttribute(getAttributeName()); player.removeAttribute("currentQuest"); } [MENTION=15855]Over[/MENTION]ride public void giveRewards(Player player) { StringBuilder rewardNames = new StringBuilder(); if (getRewards() != null) for (Item item : getRewards()) { if (player.getInventory().hasRoomFor(item)) { player.getInventory().addItem(item); rewardNames.append(ItemManager.getInstance().getItemName(item.getId()).concat("\\n")); } } StringBuilder experienceGains = new StringBuilder(); for (int x = 0; x < this.getExperienceAward().length; x++) { short skill = (short) getExperienceAward()[x][0]; double exp = getExperienceAward()[x][1]; experienceGains.append((int) exp + " " + Skill.getSkillName(skill) + " XP.\\n"); player.getSkill().addExperience(skill, exp); } StringBuilder additionalMessage = new StringBuilder(); if (getAdditionalMessage() != null) additionalMessage.append(getAdditionalMessage().concat("\\n")); player.getActionSender().sendString(getQuestPointAward() + " Quest Points\\n".concat(experienceGains.toString().concat(additionalMessage.toString())).concat(rewardNames.toString()), 4444); player.getActionSender().sendString("You have completed the " + getQuestName() + " Quest!", 301); player.getActionSender().sendConfig(101, player.getQuestPoints()); player.getActionSender().sendInterface(297); } } [/CODE] COMPLETE!!! now to see an example of a quest I created (all object interactions, dialogues are coded into other areas of server as per usual) [CODE] package com.asgarniars.rs2.content.quest.impl; import com.asgarniars.rs2.content.skills.Skill; import com.asgarniars.rs2.model.items.Item; import com.asgarniars.rs2.model.players.Player; /** * * [MENTION=52317]auth[/MENTION]or Joshua Barry * */ public class DruidicRitual extends QuestStructure { [MENTION=15855]Over[/MENTION]ride public boolean hasRequirements(Player player) { return player.isLoggedIn(); } [MENTION=15855]Over[/MENTION]ride public boolean deathListener(Player player) { return false; } [MENTION=15855]Over[/MENTION]ride public boolean defeatListener(Player player) { return false; } [MENTION=15855]Over[/MENTION]ride public boolean dialougeListener(Player player) { if (player.getQuestStorage().hasFinished(this)) end(player); return true; } [MENTION=15855]Over[/MENTION]ride public Item[] getRewards() { return null; } [MENTION=15855]Over[/MENTION]ride public String getAttributeName() { return "DruidicRitual"; } [MENTION=15855]Over[/MENTION]ride public String getQuestName() { return "Druidic Ritual"; } [MENTION=15855]Over[/MENTION]ride public short getQuestPointAward() { return 4; } [MENTION=15855]Over[/MENTION]ride public double[][] getExperienceAward() { return new double[][] { { Skill.HERBLORE, 250 } }; } [MENTION=15855]Over[/MENTION]ride public String getAdditionalMessage() { return "Access to the Herblore skill"; } [MENTION=15855]Over[/MENTION]ride public short getFinalStage() { return 4; } [MENTION=15855]Over[/MENTION]ride public short getQuestButton() { return 7355; } } [/CODE] [CENTER] [IMG]http://i.imgur.com/6KZL7Kf.png[/IMG] [IMG]http://i.imgur.com/uo0jwzN.png[/IMG] [IMG]http://i.imgur.com/zWddSwq.png[/IMG] [/CENTER]
  8. Asgarnia / Kalegrian equipment switching, the fastest way possible. If you'd like to challenge this statement and post some faster switching, I'd be awfully impressed. [CENTER][video=youtube;JL16DXsjiyw]http://www.youtube.com/watch?v=JL16DXsjiyw[/video][/CENTER] Available for download : [url]http://www.runelocus.com/forums/showthread.php?93789-Kalegrian-Amazing-Flawless-PvP-Many-Skills[/url]
  9. One word, madness. [CENTER] [IMG]http://i.imgur.com/dmY3SXE.png[/IMG] [IMG]http://i.imgur.com/xuVlu9z.png[/IMG] [/CENTER]
  10. you're still smart Trey. You used to help me with Rune Palace lol.

  11. Create le package. Give le name 'action' [CODE] package com.asgarniars.rs2.action; import com.asgarniars.rs2.model.Entity; /** * A <code>Tickable</code> used for handling game actions. * * [MENTION=52317]auth[/MENTION]or Graham Edgecombe * [MENTION=52317]auth[/MENTION]or Joshua Barry * */ public abstract class Action { /** * A stack policy determines whether this action should be stopped by other actions. * * [MENTION=52317]auth[/MENTION]or Graham Edgecombe * */ public enum StackPolicy { /** * This indicates this action will stack with others. */ ALWAYS, /** * This indicates this action will not stack with others. */ NEVER } /** * A cancel policy determines when the action should destruct. * * [MENTION=52317]auth[/MENTION]or Graham Edgecombe * */ public enum CancelPolicy { /** * This indicates actions will cancelled on any interaction. */ ALWAYS, /** * This indicates actions will be cancelled only when walking. */ ONLY_ON_WALK } /** * An animation policy determines if the action should reset animations when cancelled. * * [MENTION=52317]auth[/MENTION]or Graham Edgecombe * */ public enum AnimationPolicy { /** * This indicates the action will reset your animation. */ RESET_ALL, /** * This indicates the action will not reset your animation. */ RESET_NONE } /** * The <code>Entity</code> associated with this ActionEvent. */ private Entity entity; /** * The delay between execution intervals. */ private int ticks; /** * The current amount of ticks before this action executes. */ private int currentTicks; /** * Does this action continue. */ private boolean running = true; /** * Creates a new ActionEvent. * * [MENTION=75098]Para[/MENTION]m entity The entity. * [MENTION=75098]Para[/MENTION]m delay The initial delay. */ public Action(Entity entity, int ticks) { this.ticks = ticks; this.currentTicks = ticks; this.entity = entity; } /** * Gets the entity. * * [MENTION=184045]return[/MENTION] The entity. */ public Entity getEntity() { return entity; } /** * Gets the cancel policy of this action. * * [MENTION=184045]return[/MENTION] The cancel policy of this action. */ public abstract CancelPolicy getCancelPolicy(); /** * Gets the stack policy of this action. * * [MENTION=184045]return[/MENTION] The stack policy of this action. */ public abstract StackPolicy getStackPolicy(); /** * Gets the animation policy of this action. * * [MENTION=184045]return[/MENTION] The animation policy of this action. */ public abstract AnimationPolicy getAnimationPolicy(); /** * [MENTION=184045]return[/MENTION] The ticks. */ public int getTicks() { return ticks; } /** * [MENTION=184045]return[/MENTION] The currentTicks. */ public int getCurrentTicks() { return currentTicks; } /** * [MENTION=75098]Para[/MENTION]m currentTicks The currentTicks to set. */ public void setCurrentTicks(int currentTicks) { this.currentTicks = currentTicks; } /** * [MENTION=75098]Para[/MENTION]m ticks The ticks to set. */ public void setTicks(int ticks) { this.ticks = ticks; } /** * [MENTION=75098]Para[/MENTION]m ticks The ticks to set. */ public void decreaseTicks(int amount) { this.currentTicks -= amount; } public void stop() { running = false; } /** * [MENTION=184045]return[/MENTION] The running. */ public boolean isRunning() { return running; } /** * The execute method is called when the tick is run. The general contract of the execute method is that it may take any action whatsoever. */ public abstract void execute(); } [/CODE] [CODE] package com.asgarniars.rs2.action; import java.util.ArrayDeque; import java.util.Deque; import java.util.Iterator; import com.asgarniars.rs2.model.Entity; import com.asgarniars.rs2.model.World; import com.asgarniars.rs2.model.players.Inventory; import com.asgarniars.rs2.task.Task; /** * Stores a deque of pending actions. * * [MENTION=52317]auth[/MENTION]or Graham Edgecombe * [MENTION=52317]auth[/MENTION]or Joshua Barry * */ public class ActionDeque { /** * The entity who's action queue this is. */ private Entity entity; /** * The tickable. */ private Task cycleTick; /** * The maximum number of actions allowed to be queued at once, deliberately set to the size of the player's inventory. */ public static final int MAXIMUM_SIZE = Inventory.SIZE; /** * A deque of <code>Action</code> objects. */ private Deque<Action> actions = new ArrayDeque<Action>(); public Deque<Action> getActions() { return actions; } /** * The default constructor. * * [MENTION=75098]Para[/MENTION]m entity The entity. */ public ActionDeque(Entity entity) { this.entity = entity; } /** * Adds an <code>Action</code> to the queue. * * [MENTION=75098]Para[/MENTION]m action The action. */ public void addAction(Action action) { if (actions.size() >= MAXIMUM_SIZE) { return; } switch (action.getStackPolicy()) { case ALWAYS: break; case NEVER: clearAllActions(); break; } switch (action.getAnimationPolicy()) { case RESET_NONE: break; case RESET_ALL: entity.getUpdateFlags().sendAnimation(-1); entity.getUpdateFlags().sendGraphic(-1); break; } if (actions.size() > 0) { Iterator<Action> it = actions.iterator(); while (it.hasNext()) { Action actionTickable = it.next(); switch (actionTickable.getStackPolicy()) { case ALWAYS: break; case NEVER: actionTickable.stop(); it.remove(); break; } } } actions.add(action); /* * This is now converted as a tickable. Why? Because before, the system would register a tickable that would execute a certain amount of ticks later. What did this mean? E.g. * * Home teleport started. First emote begins, and the second emote is added as an Action, however it is already submitted as a tickable, but you should be able to cancel out of it before the emote begins. This system fixes that. - Joshua Barry. */ if (cycleTick == null) { cycleTick = new Task(1) { [MENTION=15855]Over[/MENTION]ride public void execute() { try { if (actions.size() > 0) { Iterator<Action> it = actions.iterator(); while (it.hasNext()) { Action actionTickable = it.next(); if (actionTickable.getCurrentTicks() > 0) { actionTickable.decreaseTicks(1); } if (actionTickable.getCurrentTicks() == 0) { actionTickable.execute(); if (!actionTickable.isRunning()) { it.remove(); } else { actionTickable.setCurrentTicks(actionTickable.getTicks()); } } } } else { cycleTick = null; this.stop(); } } catch (Exception e) { } } }; World.submit(cycleTick); } } /** * Purges actions in the queue with a <code>WalkablePolicy</code> of <code>NON_WALKABLE</code>. */ public void clearRemovableActions() { boolean resetAnimations = false; if (actions.size() > 0) { Iterator<Action> it = actions.iterator(); while (it.hasNext()) { Action actionTickable = it.next(); switch (actionTickable.getCancelPolicy()) { case ONLY_ON_WALK: break; case ALWAYS: actionTickable.stop(); it.remove(); break; } switch (actionTickable.getAnimationPolicy()) { case RESET_NONE: break; case RESET_ALL: resetAnimations = true; break; } } } if (actions.size() < 0) { if (cycleTick != null) { cycleTick.stop(); } cycleTick = null; } if (resetAnimations) { entity.getUpdateFlags().sendAnimation(-1); entity.getUpdateFlags().sendGraphic(-1); } } /** * Clears the action queue and current action. */ public void clearAllActions() { if (cycleTick != null) { cycleTick.stop(); } cycleTick = null; boolean resetAnimations = false; if (actions.size() > 0) { for (Action action : actions) { switch (action.getAnimationPolicy()) { case RESET_NONE: break; case RESET_ALL: resetAnimations = true; break; } action.stop(); } actions = new ArrayDeque<Action>(); } if (resetAnimations) { entity.getUpdateFlags().sendAnimation(-1); entity.getUpdateFlags().sendGraphic(-1); } } } [/CODE]
  12. Sneakyhearts

    pathetic

    this community is pathetic. nothing but a bunch of fucking morons and the staff (aside from Cart) do a terrible job. This community is also extreme inactive compared to Rune-Server, and is nothing but a waste of time. Fuck you all, especially Chad (Ziek` / Sick`) because I thought you were more respectable but it turns out you're a fucking dick too.
  13. this is the outgoing packets and not even documented or anything just someones actionsender ripped. you are fucking dumb
  14. Hello everyone, this is something I recently started to develop. I got the idea back in 2012 when I was messing around with Tkinter (bleh!) and basically, the purpose of this application is to create a profile of information on your vehicle(s) which will than take togs of maintenance costs and parts, how much fuel you're using per trip and how much mileage you get in return (fuel economy) and other things of this nature. All part upgrades and such will than be categorized and when you view your cars profile after modifying it, you may view an image and a descriptive UI will display the upgraded parts in their categories.. example) Under suspension would list your shock / strut set-up and optionally the ride height. Under engine you would fine air intake upgrade, injector upgrades, turbo / intercooler upgrade etc. Just sort of going with the flow right now, as of now I came up with a random name of "Automaster" though that is subject to change, as well the layout of the widgets will be organized to perfection when all the main functions have been established. I will be updated and organizing this thread when I get further into development, I'll also create a proper list of features and future goals. This is a current screenshot of the work in progress : [CENTER][IMG]http://i.imgur.com/UGW1UcU.png[/IMG] [IMG]http://i.imgur.com/Wqc7ly1.png[/IMG][/CENTER] My previous Qt work : [url]http://www.runelocus.com/forums/showthread.php?93558-Python-Pyside-UNIX-Desktop-Entry-Manager[/url]
  15. Runescape emulation? ROFL. Mention me and show python impl plz.
  16. newb you cant even code

  17. the USA sucks cock.

  18. [quote name='Im Chaz']Honestly, I think the old google logo is better, its more intricate. The one that you made is to plain, don't get me wrong it's good; it looks like a windows 8 themed font.[/QUOTE] It's themed around iOS7
  19. This has been discussed across numerous boards and a bit of mixed information has been posted and I have shared this on my own website and have received a lot of positive feedback for the accuracy so hopefully this helps anyone who's curious. The history of Runescape Private Server's and how Asgarnia came to exist. I'm going to start with a simple chart of the flow of RuneScape private server's [CENTER][IMG]http://i.imgur.com/nvthsY9.png[/IMG][/CENTER] As you see, the very first known private server was a server called WinterLove "WL" made by Winterlove himself. This is a preview : [CENTER][video=youtube;_Q6dmRPY6x0]http://www.youtube.com/watch?v=_Q6dmRPY6x0[/video][/CENTER] As you see, it was a single-player overview of RuneScape's game scene where random items spawned across the map. This later progressed to a server that's initial intention was to test bot's scripts that were created for RuneScape itself. It consisted of 3 server classes, which are still live on MITB's servers today for you to see : [url]https://www.moparisthebest.com/origrs2/[/url] From there, Daiki did plenty of research and and after further development released a multiplayer private-server called BlakeScape. Later down the road, came Myth Scape and then from there, White Scape which Wolf used to further develop, which Xerozcheez then used to make Cheezscape. Cheezscape was a very popular server back in the day. From there came a selection of other servers, one of them being Dodian.. In November of 2005, Winten (Dodian) opened Dodian.com for the first time and his server Ub3r 1.0 became a very popular server during that time. Ub3r 1.0 was one of the earliest Runescape private servers to be made and used publicily using Winterloves newly released source that was widely used as the base source for all new runescape private servers alike. At the time of ub3r 1.0's creation, the idea of having NPC's and shops in a private server was next to impossible so in Ub3r 1.0 without any source of drops from NPC's had :: pickup enabled except for Rune 2h's and Rune(g) which you had to get 99 smithing to make (They ended up being duped and spread all over later lol). in 2006 Dodian closed ub3r 1.0 and started to make ub3r 2.0 which to some is the best ub3r server version. later in 2006, Dodian released ub3r 2.0 using Wolf's Project16 source which has become to be one of the most popular Winterlove based server sources and updated the site from the old one that ub3r 1.0 had used before. Ub3r 2.0 had a long lifespan from the early months of 2006 to 2007 but Ub3r 2.0 had it's ups and downs as ub3r 2.0 was plauged by dupes that nearly destroyed the server it's self and with the unbearable lag and Dodian leaving Ub3r for other things ub3r 2.0 slowly faded into the abyss of private servers. Before 2.0 died outright, Dodian gave ownership of Ub3r to Danno who at the time was a mod(Admin?) since ub3r 1.0 and Danno, not wanting to deal with the payment of dodian.com changed the site to uber-server.co.nr. That is when Ub3r 2.0 seemed to kind of actually picked up again but it wasn't before long that Dodian came back and resumed as owner of Dodian. in early 2007 ub3r 2.0 was shut down and now the server you play (ub3r 3.0) is what came after it. (From Llamadupee) Dodian was then leaked in 2007 by Mr. Quarter Dodian then became the foundation of the Devolution series, which Killamess ended with a release of Final Devolution which contained his 'perfect combat' system. At this time you also had many other famous servers such as frugooscape, Allstarscape, GodzHell etc. that were massive . From there private servers advanced to Deltascape bases, using Bluur's client quite often as a highly modified client. iClarity and Riotscape later became fairly popular before the release of Project Insanity (by Sanity) which was based off of RiotScape 2.0 (made by lmctruck30 / tyl3r's pure etc.) These days most private servers suck and make me sick. The end.
  20. [quote name='Im Chaz']Very clean, neat, and organized. Great work.[/QUOTE] Glad you like it :D
×