Jump to content

Search the Community

Showing results for tags 'clean'.



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 38 results

  1. Hello everyone! Today we unveil our newest RSPS project, Lucidity! It is a server that we've put much work into over the past month or so, ranging from small bug fixes, to completely redoing home, shops, and skilling areas! We have many cool features implemented into the server as well like custom currency for doing almost anything on the server that you can spend at their respective shops! Skilling? Skill Points! Combat? PvM/Boss points! You even get some for just playing for extended periods of time! While we've put a lot of work into it and remained very nit-picky on what and how we wanted this server to feel like, we hope that some of you will consider playing along with us and help us improve. Its a very new thing and a small, tight knit community being built. So no over-saturation of players, and an economy that still needs to be established. We hope you can be a part of that with us. Here are some small things you can look forward to on Lucidity: - Fully functional skills, with working skill cape emotes! - Max capes of all variations! - Customization in your screen size (Fixed, Resizable, Fullscreen) - Ironman and Ultimate Ironman Modes! - Fully working bosses, wildy bosses, minigames, and special events! Such as Corpreal Beast, Callisto, Cerberus, Ancient Warriors, Barrows, and many, many more! - Pet drops from bosses and skilling! The rest you'll have to just see for yourself! Interested? Come join us now while 2XP is active ALL weekend! Go here to download our client!
  2. EazzY

    Clean RSPS ???

    hey guys. im want to make a private server for me and my freinds, and we want the oldschool one where Grand Exhange just came, nothing newer than that :) i cant find any were a clean source whit grand exchange ?? is there a source out there thats is clean and 100% working whit all the old good sruff ?? ist kinda like the oldschool runescape you can play from their own website. best regratz EazzY
  3. I DONT REALLY KNOW IF THIS IS THE RIGHT THREAD WHERE TO PUT THIS ONE i am finding a clean Source with all skills working and have all ancients.. with working specs.. thats it.. anyone have that.. i have search for many clients and source.. none really match the things i want i tried implementing ancients to servers.. but i get alot of errors? and i cant find tutorials for.. it :( lolking
  4. Thread can be closed [MENTION=1573]Cart[/MENTION] or anyother staff member. for the people who have this Enjoy. For the ones not thank your fellow members on this forum for hating.
  5. I can't seem to find a working link to a somewhat clean Matrix source alone nevermind with a client. Anyone have a link to one? Preferbly a thread not a directdl.
  6. Here is the cache for rs 815. Download 815 cache New features in 815: Twitch.tv streaming legacy mode new lobby new boss Client: Lost the client PLEASE MIRROR I will add mirror links here.
  7. I'm looking for a way to shorten this: [CODE] if(absX == 3057 && absY == 2945) { aByteArrayArrayArray130[l][k][i] = 6; aByteArrayArrayArray136[l][k][i] = 1; aByteArrayArrayArray148[l][k][i] = 3; } if(absX == 3056 && absY == 2946) { aByteArrayArrayArray130[l][k][i] = 6; aByteArrayArrayArray136[l][k][i] = 1; aByteArrayArrayArray148[l][k][i] = 3; } if(absX == 3055 && absY == 2947) { aByteArrayArrayArray130[l][k][i] = 6; aByteArrayArrayArray136[l][k][i] = 1; aByteArrayArrayArray148[l][k][i] = 3; } if(absX == 3054 && absY == 2948) { aByteArrayArrayArray130[l][k][i] = 6; aByteArrayArrayArray136[l][k][i] = 1; aByteArrayArrayArray148[l][k][i] = 3; } so on, so forth... [/CODE] This is to modify tile shapes, and I need to do it for about a hundred or two sets of coordinates. Is there anyway I can just make "absX / absY == an array" or some sort of list? I've tried to do it myself, but I get the comparing int with int[] error, and I don't know how to make it read an array instead of a single int. [CODE] if(absX == "a list of x coordinates" && absY == "a list of y coordinates") { aByteArrayArrayArray130[l][k][i] = 6; aByteArrayArrayArray136[l][k][i] = 1; aByteArrayArrayArray148[l][k][i] = 3; } [/CODE] EDIT: Well after some fiddiling I did this [CODE] if(absX == 3061 && absY == 2943 || absX == 3060 && absY == 2944 || absX == 3059 && absY == 2945 || absX == 3058 && absY == 2946 || absX == 3057 && absY == 2947 || absX == 3056 && absY == 2948) { aByteArrayArrayArray130[l][k][i] = 22; aByteArrayArrayArray136[l][k][i] = 1; aByteArrayArrayArray148[l][k][i] = 0; } [/CODE] is this acceptable?
  8. in client.java find [code]if (System.currentTimeMillis() - restoreStatsDelay > 60000) { restoreStatsDelay = System.currentTimeMillis(); for (int level = 0; level < playerLevel.length; level++) { if (playerLevel[level] < getLevelForXP(playerXP[level])) { if (level != 5) { // prayer doesn't restore playerLevel[level] += 1; getPA().setSkillLevel(level, playerLevel[level], playerXP[level]); getPA().refreshSkill(level); } } else if (playerLevel[level] > getLevelForXP(playerXP[level])) { playerLevel[level] -= 1; getPA().setSkillLevel(level, playerLevel[level], playerXP[level]); getPA().refreshSkill(level); } }[/code] Remove it, add this class [COLOR="#FF0000"]Note* [/COLOR] you will need to change packages and imports [code] package org.rs2server.entity.players.content; import org.rs2server.entity.players.*; import org.rs2server.event.*; /** * This class handles the restore stats * @author Zack * */ public class RestoreStats { /** * Checks if the player count is above 1 then * it will automatically restore stats */ public static void processs() { EventManager.getSingleton().addEvent(new Event() { @Override public void execute(EventContainer e) { if (playerCount() > 0) { for (Player player : PlayerHandler.players) { if(player != null) for (int level = 0; level < player.playerLevel.length; level++) { if (player.playerLevel[level] < player.getLevelForXP(player.playerXP[level])) { if (level != 5) { // prayer doesn't restore player.playerLevel[level] += 1; player.getPA().setSkillLevel(level, player.playerLevel[level], player.playerXP[level]); player.getPA().refreshSkill(level); } } else if (player.playerLevel[level] > player.getLevelForXP(player.playerXP[level])) { player.playerLevel[level] -= 1; player.getPA().setSkillLevel(level, player.playerLevel[level], player.playerXP[level]); player.getPA().refreshSkill(level); } } } } } }, 60000); } /** * Counts the amount of players * @return */ private static int playerCount() { int players = 0; for (Player p : PlayerHandler.players) { if (p != null) players++; } return players; } } [/code] Now go to server.java and add this under main [code] RestoreStats.processs(); [/code] make sure you import
  9. Ive been searching every where for a client that is still up. I have found like 12 and all the links r broken. Can someone spot me :D
  10. Looking for a mostly clean [PI] client+server loading.. 525 or 562 Gameframe 508+ Maps 500+ GFX/Animations (Preferably 602) Anyone have any ideas?
  11. [CODE]i got this after trying to add dkite to my source, this is the end code. if(i == 9543) { itemDef.ItemActions = new String[5]; itemDef.ItemActions[1] = "Wear"; itemDef.originalModelColors = new int[1]; itemDef.modifiedModelColors = new int[1]; itemDef.modelid = 13085; itemDef.modelZoom = 1957; itemDef.modelRotation1 = 498; itemDef.modelRotation2 = 484; itemDef.anInt204 = 0; itemDef.modelOffsetY = -1; itemDef.modelOffsetX = 4; itemDef.anInt165 = 13085; itemDef.anInt200 = 13085; itemDef.anInt175 = -1; itemDef.anInt197 = -1; itemDef.name = "Dragon Shield"; itemDef.description = "Dragon Kiteshield.".getBytes(); }[/CODE] Changed all the class8 to itemDef and it gave me a 77 errors after compiling. This is what i changed; [CODE] if(i == *****) { class8.aStringArray189 = new String[5]; class8.aStringArray189[1] = "Wear"; class8.anIntArray156 = new int[1]; class8.anIntArray160 = new int[1]; class8.anIntArray156[0] = 933; class8.anIntArray160[0] = 926; class8.anInt174 = 5251; class8.anInt181 = 1957; class8.anInt190 = 498; class8.anInt198 = 484; class8.anInt204 = 0; class8.anInt169 = -1; class8.anInt194 = 4; class8.anInt165 = 5251; class8.anInt200 = 5251; class8.anInt175 = -1; class8.anInt197 = -1; class8.aString170 = "Dragon Shield"; class8.aByteArray178 = "Jakes version of the Dragon Shield.".getBytes(); }[/CODE] mind telling me where i messed up?
  12. [CENTER]Well, recently i need more money for my project's hosting, and when released, advertising, so ill be doing services on my free time. [IMG]http://imageshack.us/a/img41/9755/yi4x.png[/IMG] [/CENTER]
  13. 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]
  14. I am in need of a source that I can code from scratch and have it be original. Anybody have anything?
  15. How would I render a door usable? The object is recognized as a door, but why doesnt it work? is there a way to render all doors usable without listing each in doors.cfg? any help or tips in this area is greatly appreciated! :)
  16. How would I render a door usable? The object is recognized as a door, but why doesnt it work? is there a way to render all doors usable without listing each in doors.cfg? any help or tips in this area is greatly appreciated! :) keep in mind i havn't done this before. I'd like to know the how AND the why
  17. Ranger

    Clean up

    I was thinking we could possibly do a clean up of the site. Make it easier to roam on and find things.
  18. LINK (if this goes down your welcome to pm me): [url=http://uppit.com/na11mgd9ettr/ademia_rebuild.rar]ademia_rebuild.rar[/url] I have resumed work on this. You can get revision 163 of this from the download link above. Or if you wish to keep up with the newest revisions of this and your familiar with github, you can get it from the repository posted below. Be sure to check the repository often as this will be updated frequently. [URL=https://github.com/lare96/Ademia]Github repository[/URL] If you downloaded the old version from mopar or rune-server I recommend downloading this new version instead, this has a lot of bugs fixed and is suitable for gameplay! (with combat. trading, and content added) With this version, you should be able to use Galkons refactored 474 lookalike with no problems, although you may have to edit player updating to get it to work (its one line lol). Things the download link has that the old version doesn't: - an entity system - my new advanced event system implemented (not the shitty one I made a thread about) - No more errors on login (Exception in Thread-3, NullPointerException in client.java, etc.) - entity based combat (started barely) - glitch where crowns would not update fixed - Debug messages removed from login protocol - Cleaned a tiny bit more - Started on a new weapon animations - lots more I can't remember -[B] ruby[/B] and python script loading! - THE GITHUB REPOSITORY WILL HAVE THE NEWEST AND MOST UP TO DATE CONTENT. BE SURE TO FOLLOW IT! [b]REVISION: 163 (In download link)[/b]: [u][b]Needs[/b][/u] - Combat (started) - Trading (removed) - Skills, minigames and other basic server content (which includes combat and trading) [u][b]Has[/b][/u] [code](December 4, 2012) REV: 30 - Deleted useless classes (anti-lag and other stupid crap) - Packaged - Started cleaning - crash patched - now uses task scheduler rather than a while loop for more accurate processing - added Listener class - completely cleaned out the server class, looks great - holy shit got so much done - better item equipment handling - repackaged again for more neatness (December 5, 2012) REV: 35 - started on object system - position system - location systems (December 6, 2012) REV: 48 - w00000t fixed a huge error that could have caused a huge problem - finished an updating system - flooding system (extremely basic and shitty) - finished obejct system - teleporting - garbage collection - cleaned a bit (December 7, 2012) REV: 65 - cleaned a bit - fixed error regarding player updating - UID System - edited the update system, works flawlessly now - added the 'flawless switching' every next vagina on mopar is advertising about - packets are now loaded through an array (December 8, 2012) REV: 85 - worked on packets - walk to actions system, its beautiful - better item requirements - cleaned (December 9, 2012) REV: 92 - moved server -> client packets in a different class - improved freezing methods - improved teleblocking methods - better wilderness and multicombat checks - cleaned - better update flags - started on concepts folder, could be useful to developers (December 10, 2012) REV: 96 - requirements are now handled in a cfg file, really easy to use, better than anything ive ever seen implemented into a winterlove - cleaned (December 11, 2012) REV: 98 - made a skill class (December 12, 2012) REV: 98 - rest day (December 13, 2012) REV: 102 - fully removed combat (December 14, 2012) REV: 110 - cleaned - added an appearance class to handle player appearance values - created a player data class to handle the loading and saving of a player - Client class milestone! 100kb! Lots more to clean. - cleaned even more - Another milestone!!! 35kb!! almost done client class cleaning - removed trading (December 15, 2012) REV: 120 - weapon animations class - removed shitty flooding system - update flags - energy regenerating - documentation (December 16, 2012) REV: 122 - now uses non-blocking IO[/code] [u][b]Pictures[/b][/u] [img]http://i891.photobucket.com/albums/ac113/zezimo52/ademia1.png[/img] [img]http://i891.photobucket.com/albums/ac113/zezimo52/ademia4.png[/img] [img]http://i891.photobucket.com/albums/ac113/zezimo52/ademia6.png[/img] [img]http://i891.photobucket.com/albums/ac113/zezimo52/ademia11.png[/img] [b]UID System[/b] [img]http://i891.photobucket.com/albums/ac113/zezimo52/ademia5.png[/img] [b]Anti-massing systems using attributes[/b] [img]http://i891.photobucket.com/albums/ac113/zezimo52/ademia3.png[/img] [b]Player rights[/b] [img]http://i891.photobucket.com/albums/ac113/zezimo52/ademia8.png[/img] [b]Clean Client class[/b] [img]http://i891.photobucket.com/albums/ac113/zezimo52/lolyo_zps53e238a5.png[/img] [u][b]Credits[/b][/u] Delta winterLove blakeman8192 Graham Whackatre asshole_rule Soulcist imthenull mister maggot Scu11
  19. Money pouch was released a buncha times. But whatever ;P [CODE]package com.rs.game.player; import java.io.Serializable; import java.text.NumberFormat; import com.rs.Settings; import com.rs.utils.Utils; /** * * [MENTION=52317]auth[/MENTION]or Taylor<Axter> * Skype: axter12345 */ public class MoneyPouch implements Serializable { /** * Serial ID */ private static final long serialVersionUID = -1699637125839716969L; /** * The player using the pouch */ public Player player; /** * Determines if the money pouch is * toggled or isn't */ private static boolean isToggled; /** * Initializes the class for the * player logging in * [MENTION=75098]Para[/MENTION]m x - the player logging in */ public void init(Player x) { player = x; isToggled = false; refresh(); } /** * Removes a specific amount from the pouch * [MENTION=75098]Para[/MENTION]m amount - the amount to remove */ public void remove(int amount) { int index = player.getMoneyInPouch(); player.getPackets().sendRunScript(5561, 0, "n", (amount > index) ? index : (amount)); player.moneyInPouch = amount > index ? 0 : index - amount; player.getInventory().addCoins(amount > index ? index : amount); refresh(); print(true, (amount > index) ? (index) : (amount)); } /** * Adds a specific amount to the pouch * [MENTION=75098]Para[/MENTION]m amount - amount to add */ public void add(int amount) { int index = player.getMoneyInPouch(); if (index + amount >= Integer.MAX_VALUE || index + amount < 0) {//because if it goes over max value //it will equal a negative player.out("You do not have enough room in your money pouch!"); return; } player.getPackets().sendRunScript(5561, 1, amount); player.getInventory().deleteItem(995, amount == 0 ? player.getInventory().getNumerOf(995) : amount); player.moneyInPouch += amount; refresh(); System.out.println("add"); print(false, amount); } /** * Toggles the money pouch */ public void toggle() { player.getPackets().sendRunScript(5557, 1); refresh(); isToggled = !isToggled; } /** * Refreshes the money pouch */ public void refresh() { int index = player.getMoneyInPouch(); player.getPackets().sendRunScript(5560, index < 1 ? 0 : index, "n"); } /** * A method that checks if the pouch * contains money inside it * @return - true if it does, false otherwise */ public boolean contains() { return (player.moneyInPouch > 0); } /** * Adds the whole pouch value * to the players' bank */ public void addToBank() { int index = player.getMoneyInPouch(); if (!((player.getBank().getItem(995).getAmount() + index) < Integer.MAX_VALUE || ((player.getBank().getItem(995).getAmount() + index) < 1))) { player.out("You don't have enough bank space!"); return; } player.getBank().addItem(995, index, true); player.getPackets().sendRunScript(5561, 0, "n", index); player.moneyInPouch = 0; } /** * Sends the added money/removed money * to the player removing/adding the money * [MENTION=75098]Para[/MENTION]m remove - sends the removing message if true * [MENTION=75098]Para[/MENTION]m amount - amount being removed */ public void print(boolean remove, int amount) { player.out(remove ? (amount == 1 ? "One coin has been removed from your money pouch." : Utils.formatTypicalInteger(amount) + " coins have been removed from your money pouch.") : (amount == 1 ? "One coin has been added to your money pouch." : Utils.formatTypicalInteger(amount) + " coins have been added to your money pouch.")); } } [/CODE] ButtonHandler [CODE] } else if (interfaceId == 746 && componentId == 207 && packetId == 14 || (interfaceId == 548 && componentId == 159 && packetId == 14)) { player.getMoneyPouch().toggle(); } else if (interfaceId == 746 && componentId == 207 && packetId == 67 || (interfaceId == 548 && componentId == 159 && packetId == 67)) { player.getTemporaryAttributtes().put("money_pouch_remove", Boolean.TRUE); player.getPackets() .sendRunScript( 108, new Object[] { "Your money pouch contains " + Utils.formatTypicalInteger(player .getMoneyInPouch()) + " coins. How many would you like to withdraw?" });[/CODE] Utils.java [CODE] public static String formatTypicalInteger(int integer) { return NumberFormat.getInstance().format(integer); }[/CODE] In player.java declare moneypouch as a varible [CODE]private MoneyPouch moneypouch;[/CODE] under runnable method in player.java, add [CODE]moneypouch.init(this)[/CODE] under init() method in player.java, add the class instance [CODE]if(moneypouch == null) { moneypouch = new MoneyPouch(); }[/CODE] now add a getter [CODE]public MoneyPouch getMoneyPouch() { return moneypouch; }[/CODE] Now, in your Packet input handling class, add this for packet 81 And add this as the integer value intered into the interface if you haven't already int value = stream.readInt(); [CODE]} else if (player.getTemporaryAttributtes().get( "money_pouch_remove") == Boolean.TRUE) { player.getMoneyPouch().remove(value); player.getTemporaryAttributtes().put("money_pouch_remove", Boolean.FALSE); return;[/CODE] and if you want the money to go in your pouch, everytime it goes in your inv, here's the inventory.java class (Has the addCoins method) [SPOILER=inventory.java][CODE]package com.rs.game.player; import java.io.Serializable; import com.rs.cache.loaders.ItemDefinitions; import com.rs.game.item.Item; import com.rs.game.item.ItemsContainer; import com.rs.utils.ItemExamines; import com.rs.utils.Utils; public final class Inventory implements Serializable { private static final long serialVersionUID = 8842800123753277093L; private ItemsContainer<Item> items; private transient Player player; public static final int INVENTORY_INTERFACE = 679; public Inventory() { items = new ItemsContainer<Item>(28, false); } public void setPlayer(Player player) { this.player = player; } public void init() { player.getPackets().sendItems(93, items); } public void unlockInventoryOptions() { player.getPackets().sendIComponentSettings(INVENTORY_INTERFACE, 0, 0, 27, 4554126); player.getPackets().sendIComponentSettings(INVENTORY_INTERFACE, 0, 28, 55, 2097152); } public void reset() { items.reset(); init(); // as all slots reseted better just send all again } public void refresh(int... slots) { player.getPackets().sendUpdateItems(93, items, slots); } //used for money pouch public boolean addCoins(int amount) { if (amount < 0) return false; Item[] itemsBefore = items.getItemsCopy(); if (!items.add(new Item(995, amount))) { items.add(new Item(995, items.getFreeSlots())); player.getPackets().sendGameMessage( "Not enough space in your inventory."); refreshItems(itemsBefore); return false; } refreshItems(itemsBefore); return true; } public boolean addItem(int itemId, int amount) { if (itemId < 0 || amount < 0 || !Utils.itemExists(itemId) || !player.getControlerManager().canAddInventoryItem(itemId, amount) || ItemDefinitions.getItemDefinitions(itemId) == null || ItemDefinitions.getItemDefinitions(itemId).getName() == null) return false; if(itemId == 995 || ItemDefinitions.getItemDefinitions(itemId).getName().equals("coins") || ItemDefinitions.getItemDefinitions(itemId).containsOption("add-to-pouch")) { player.getMoneyPouch().add(amount); return true; } Item[] itemsBefore = items.getItemsCopy(); if (!items.add(new Item(itemId, amount))) { items.add(new Item(itemId, items.getFreeSlots())); player.getPackets().sendGameMessage( "Not enough space in your inventory."); refreshItems(itemsBefore); return false; } refreshItems(itemsBefore); return true; } public boolean addItem(Item item) { if (item.getId() < 0 || item.getAmount() < 0 || !Utils.itemExists(item.getId()) || !player.getControlerManager().canAddInventoryItem( item.getId(), item.getAmount())) return false; if(item.getId() == 995 || item.getName().equals("coins") || item.getDefinitions().containsOption("add-to-pouch")) { player.getMoneyPouch().add(item.getAmount()); return true; } Item[] itemsBefore = items.getItemsCopy(); if (!items.add(item)) { items.add(new Item(item.getId(), items.getFreeSlots())); player.getPackets().sendGameMessage( "Not enough space in your inventory."); refreshItems(itemsBefore); return false; } refreshItems(itemsBefore); return true; } public void deleteItem(int slot, Item item) { if (!player.getControlerManager().canDeleteInventoryItem(item.getId(), item.getAmount())) return; Item[] itemsBefore = items.getItemsCopy(); items.remove(slot, item); refreshItems(itemsBefore); } public boolean removeItems(Item... list) { for (Item item : list) { if(item == null) continue; deleteItem(item); } return true; } public void deleteItem(int itemId, int amount) { if (!player.getControlerManager() .canDeleteInventoryItem(itemId, amount)) return; Item[] itemsBefore = items.getItemsCopy(); items.remove(new Item(itemId, amount)); refreshItems(itemsBefore); } public void deleteItem(Item item) { if (!player.getControlerManager().canDeleteInventoryItem(item.getId(), item.getAmount())) return; Item[] itemsBefore = items.getItemsCopy(); items.remove(item); refreshItems(itemsBefore); } /* * No refresh needed its client to who does it :p */ public void switchItem(int fromSlot, int toSlot) { Item[] itemsBefore = items.getItemsCopy(); Item fromItem = items.get(fromSlot); Item toItem = items.get(toSlot); items.set(fromSlot, toItem); items.set(toSlot, fromItem); refreshItems(itemsBefore); } public void refreshItems(Item[] itemsBefore) { int[] changedSlots = new int[itemsBefore.length]; int count = 0; for (int index = 0; index < itemsBefore.length; index++) { if (itemsBefore[index] != items.getItems()[index]) changedSlots[count++] = index; } int[] finalChangedSlots = new int[count]; System.arraycopy(changedSlots, 0, finalChangedSlots, 0, count); refresh(finalChangedSlots); } public ItemsContainer<Item> getItems() { return items; } public boolean hasFreeSlots() { return items.getFreeSlot() != -1; } public int getFreeSlots() { return items.getFreeSlots(); } public int getNumerOf(int itemId) { return items.getNumberOf(itemId); } public Item getItem(int slot) { return items.get(slot); } public int getItemsContainerSize() { return items.getSize(); } public boolean containsItems(Item[] item) { for (int i = 0; i < item.length; i++) if (!items.contains(item[i]) || item[i].getId() == 995 && !player.getMoneyPouch().contains()) return false; return true; } public boolean containsItems(int[] itemIds, int[] ammounts) { int size = itemIds.length > ammounts.length ? ammounts.length : itemIds.length; for (int i = 0; i < size; i++) if (!items.contains(new Item(itemIds[i], ammounts[i]))) return false; return true; } public boolean containsItem(int itemId, int ammount) { return items.contains(new Item(itemId, ammount)); } public boolean containsOneItem(int... itemIds) { for (int itemId : itemIds) { if (items.containsOne(new Item(itemId, 1))) return true; } return false; } public void sendExamine(int slotId) { if (slotId >= getItemsContainerSize()) return; Item item = items.get(slotId); if (item == null) return; player.getPackets().sendInventoryMessage(0, slotId, ItemExamines.getExamine(item)); } public void refresh() { player.getPackets().sendItems(93, items); } } [/CODE] [/SPOILER] This one is air tight of bugs, enjoy
  20. Hello RuneLocus, im really doubting RuneLocus, everytime I post no one seems to respond back. Does anyone anything about make servers on this "helpfull" site? If so please let me know. ASAP! I am also paying someone to help me code my server. I offer up to 30-40m+RSGP (Depending on how well I like you, and if you do good work). And or paypal. Add me on Skype: tory.washington1 | Tippmann tm | Toria-317
  21. Hello RuneLocus, Im starting my own private server and I don't want to start from anyone else's source or client. I want to create my own. I also need alot of help coding a 317 PI, I will pay up to 30m RSGP. Please anyone, if you know where I could get my own PI source and client, let me know, or send me a link! Also add me on skype if you want to do services for me. I WILL PAY UP TO 30M RSPG! Skype: tory.washington1| Tippmann™ | Toria-317 ALSO THE TXT DOC IS MY WISH LIST FOR MY SERVER! (IF YOU KNOW YOU CAN DO THESE THINGS THAN ADD ME ON SKYPE, LETS MAKE A DEAL)
  22. I need a clean source/cilent, and I'm also new to coding and making a rsps. Any tips?
  23. Requesting a clean source client and cache for me to starting coding on... 508+
  24. [FONT=Impact][/FONT][SIZE=3][COLOR="#800080"]Sup everyone, I have been working on a client that is easy to set up and pretty clean & neat for beginners are just anyone.[/COLOR][/SIZE] [CENTER][COLOR="#0000FF"][SIZE=2]Picture of the client:[/SIZE][/COLOR] [ATTACH=CONFIG]4645[/ATTACH] [CENTER][COLOR="#0000FF"][SIZE=2]Virus Scans:[/SIZE][/COLOR][/CENTER] [ATTACH=CONFIG]4646[/ATTACH] [ATTACH=CONFIG]4647[/ATTACH] [SIZE=3][COLOR="#800080"]HOPE you enjoy,[/COLOR][/SIZE].[/CENTER] [B][SIZE=2]Download Links:[/SIZE][/B] [B]Uppit[/B]->[URL="http://uppit.com/abfa5wpt6qz7/317client.rar"]http://uppit.com/abfa5wpt6qz7/317client.rar[/URL] [B]Mediafire->[/B] [URL="http://www.mediafire.com/?8elwgv3gh29ht2r"]http://www.mediafire.com/?8elwgv3gh29ht2r[/URL] [COLOR="#000000"][SIZE=2]*if the download link is broken please say so... [/SIZE][/COLOR] [CENTER][FONT=Impact][COLOR="#0000FF"][SIZE=4]Tater[/SIZE][/COLOR][/FONT][/CENTER]
  25. basicly.. i been learning how to code for about two months now (like everyday trying) but i never started a 'clean file's' so went i add models they dont appare in game... and when i add ints i get a error ... will edit and add error in 2 bare with me.
×