Jump to content

Search the Community

Showing results for tags 'manager'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • 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


Last Updated

  • Start


Filter by number of...


  • Start



Found 24 results

  1. [CENTER] [SIZE=4][SIZE=5][B][FONT=trebuchet ms]RSPS Network - Management System [URL="http://rspsnetwork.com"][SIZE=2]http://rspsnetwork.com[/SIZE][/URL][/FONT][/B][/SIZE] [/SIZE] RSPS Network is a system that allows users to create, manage, and style a custom shop without the hassles of coding. Users may opt to keep their shop hosted on RSPS Network servers OR they may display their custom made shop directly on their own website using our API. Our shop interface allows for a "cart-style" checkout so that your buyers can buy multiple items at once. All purchases are logged into our databases for your ease of use. We even have a Java API for you to handle all incoming donations, delete donations, and view recent & past logs. We don't ask for any confidential information (besides a paypal e-mail address to use for the shop recipient). RSPS Network is be [B]free to use[/B]. RSPS Network is now [B]available[/B] to all users! Come and try out our easy to use system. Even though we worked out the system bugs during the beta tests, if there are any errors in the future, please report them to my skype [B]'worldofclayton'[/B]. [quote name='Phage']Been using this system for over a week now, found a couple problems but Hope was right on top of it all very quickly! Accepted multiple donations now using the system and was easy to implement, would definitely recommend anyone, whether new or experienced with RSPS to use this system with theirs.[/QUOTE] [/CENTER] Snapshot of our shop manager page. [URL="http://i.share.pho.to/61f203aa_o.png"] [IMG]http://i.share.pho.to/61f203aa_o.png[/IMG] [/URL] [IMG]http://i.share.pho.to/1bad8139_o.png[/IMG]
  2. [CENTER][SIZE=5][B][color=#4094B3]RuneBeam[/color][/B] [/SIZE][/CENTER] [B][color=#4094B3]What is RuneBeam?[/color][/B] RuneBeam at it's core is much more than just the next generation of private server toplists. Using a unique algorithm, we assign each server a grade on a daily basis based on how users have rated the server in various aspects, taking into consideration the importance of each aspect. Then, we present the servers to you - the player - in a way which you can filter to find the perfect server - Filter by type, revision, even name. RuneBeam's not only a toplist though - in fact, the toplist is only a small part of it. [B][color=#4094B3]RuneBeam for Players[/color][/B] RuneBeam delivers the one thing that no single server owner could deliver: Unity. With RuneBeam, you'll be able to keep in touch with all of your private server friends either from the servers client[sup]#1[/sup], from the launcher, or from the RuneBeam app! This means that you never have to stay playing a server simply because you have friends on it, and also means that you don't have to consider where your friends are when deciding to play! We don't only unify communication, but we also provide a system so that rather than having a store balance on all of your servers (leading to wastage), you can have a single balance which can be spent across any combination of servers you choose. You also get to choose the amount you wish to upload to your account, so you're not forced to upload more than you need! On a more sinister note, one problem which affects most players is server security. Some servers use standard hashing algorithms which take only days to crack to protect your password, most don't. This means that if the server gets hacked, your password is vulnerable, and over 60% of people use a single password for all services. With RuneBeam, you can be confident that we're using our own algorithm to hash and secure your password in a way which cracking would be intractable. With this in mind, players who opt to use RuneBeam will be able to log into supporting servers without entering a username or password in the client. Our launcher silently generates a one-use token, and passes it to the client so that your login is secure and your account is even safe from malware. [B][color=#4094B3]RuneBeam for Owners[/color][/B] A problem faced by small server owners is that they can't afford to pay good web developers to provide them with reliable services such a store, voting rewards, account management panels, server statistics and more. Even then, there's no guarantee that the outcome will be safe and reliable. RuneBeam solves this problem. Out of the box, RuneBeam will provide server owners with a store which can be implemented in as little as 10 lines of code on the server, and automatically provides more features than most servers stores provide. Products can be configured to accept a monetary payment, a voting reward payment or both. Instantly upon purchase, the server is informed directly, and can then add the item to the players bank, inventory or whatever you want it to do. Not only is the solution easy to implement, but we will also provide you with a copy-paste solution for the most popular server bases - Project Insanity and RuneSource. All monetary purchases will credit your account with the value of the purchase (minus a 5% fee), which can be withdrawn at your convenience with your preferred payment method. We'll handle all disputes and billing issues, so there's nothing to worry about. As RuneBeam also allows players to manage accounts through us[sup]#1[/sup], we provide those players with integrated tools to perform account-related tasks. We also provide a staff management interface, allowing you (and optionally your staff) to manage players accounts, with access restriction. What's more is that your server will be assessed and listed on it's merits, not on how big your wallet is. Players will rate your server on numerous aspects, and then your servers ranking is determined based on the importance of each aspect. [B][color=#4094B3]RuneBeam Feature Summary[/color][/B] [LIST] [*]Management - Easy to use interface to manage your accounts across all servers.[sup]#1[/sup] and manage aspects of your server with our easy-to-use interface. [*]Security - Stop anybody from accessing all of your private server accounts using the widely available Google Authenticator. Nobody can access your account without physically stealing your mobile! Also you can be sure that your details are stored securely. [*]Unity - A single login to access all of your accounts.[sup]#1[/sup] Also, keep in touch with all your private server friends from anywhere[sup]#1[/sup] without revealing personal information. [*]Simplicity - Step-by-step instructions to implement features only previously available to the big servers! [*]Convenience - Feel like just setting back and pking? We've got a checkbox for that! Find the perfect server for you with our advanced filter options on our toplist, only available on RuneBeam[sup]#2[/sup]. Filter by name, type and revision. [*]Widely Accessible - Don't like logging in? No problem! We support Facebook, Twitter, Google+ and Windows Live sign-in services, which means that you can login with just a few clicks. [*]Two-way - Don't like us? Not a problem! Simply contact support and we will transfer all RuneBeam profiles to the server seamlessly, allowing players to login with their specified profile password. We'd even offer a refund if we weren't free! [/LIST] [B][color=#4094B3]What is RuneBeam?[/color][/B] [B][color=#4094B3]Follow Us[/color][/B] [url=https://twitter.com/runebeam]Twitter[/url] [url=https://www.facebook.com/runebeam]Facebook[/url] [url=https://plus.google.com/105770170104085711693]Google+[/url] [url=http://www.runebeam.com/]Our Website[/url] [sup]#1[/sup] - Feature subject to availability. Nearly all features of RuneBeam are completely optional, and if the server hasn't implemented it then it won't be available for that server. [sup]#2[/sup] - Accurate as of time of writing. [B][color=#4094B3]Confirmed Servers[/color][/B] [LIST] [*]OS PvP [*]Armadyl [*]PerfectionX [*]Vitality [*]Runique [*]GrinderScape [*]HydraScape [/LIST]
  3. [CODE]package com.enso.game.player; import com.enso.cache.Cache; import com.enso.cache.loaders.VarBitDefinitions; public class VarsManager { private static final int[] masklookup = new int[32]; static { int i = 2; for (int i2 = 0; i2 < 32; i2++) { masklookup[i2] = i - 1; i += i; } } private int[] values; private Player player; public VarsManager(Player player) { this.player = player; values = new int[Cache.STORE.getIndexes()[2].getLastFileId(16) + 1]; } public void sendVar(int id, int value) { sendVar(id, value, false); } public void forceSendVar(int id, int value) { sendVar(id, value, true); } private void sendVar(int id, int value, boolean force) { if (id < 0 || id >= values.length) // temporarly return; if (force || values[id] == value) return; setVar(id, value); sendClientVarp(id); } public void setVar(int id, int value) { if (id == -1) // temporarly return; values[id] = value; } public int getValue(int id) { return values[id]; } public void forceSendVarBit(int id, int value) { setVarBit(id, value, 0x1 | 0x2); } public void sendVarBit(int id, int value) { setVarBit(id, value, 0x1); } public void setVarBit(int id, int value) { setVarBit(id, value, 0); } public int getBitValue(int id) { VarBitDefinitions defs = VarBitDefinitions.getClientVarpBitDefinitions(id); return values[defs.baseVar] >> defs.startBit & masklookup[defs.endBit - defs.startBit]; } private void setVarBit(int id, int value, int flag) { if (id == -1) // temporarly return; VarBitDefinitions defs = VarBitDefinitions.getClientVarpBitDefinitions(id); int mask = masklookup[defs.endBit - defs.startBit]; if (value < 0 || value > mask) value = 0; mask <<= defs.startBit; int varpValue = (values[defs.baseVar] & (mask ^ 0xffffffff) | value << defs.startBit & mask); if ((flag & 0x2) != 0 || varpValue != values[defs.baseVar]) { setVar(defs.baseVar, varpValue); if ((flag & 0x1) != 0) sendClientVarp(defs.baseVar); } } [MENTION=19271]supp[/MENTION]ressWarnings("deprecation") private void sendClientVarp(int id) { player.getPackets().sendVar(id, values[id]); } } [/CODE] [CODE]package com.enso.cache.loaders; import java.io.IOException; import java.util.concurrent.ConcurrentHashMap; import com.enso.cache.Cache; import com.enso.io.InputStream; public final class VarBitDefinitions { private static final ConcurrentHashMap<Integer, VarBitDefinitions> varpbitDefs = new ConcurrentHashMap<Integer, VarBitDefinitions>(); public int id; public int baseVar; public int startBit; public int endBit; public static final void main(String[] args) throws IOException { Cache.init(); System.out.println("There are currently: " + Cache.STORE.getIndexes()[22].getLastArchiveId() * 0x3ff + " bitConfigs."); // List<BitConfigDefinitions> configs = new // ArrayList<BitConfigDefinitions>(); for (int i = 0; i < Cache.STORE.getIndexes()[22].getLastArchiveId() * 0x3ff; i++) { VarBitDefinitions cd = getClientVarpBitDefinitions(i); if (cd.baseVar == 563) { System.out.println("BitConfig: " + i + ", from bitshift:" + cd.startBit + ", till bitshift: " + cd.endBit+", "+cd.baseVar); } } } public static final VarBitDefinitions getClientVarpBitDefinitions(int id) { VarBitDefinitions script = varpbitDefs.get(id); if (script != null)// open new txt document return script; byte[] data = Cache.STORE.getIndexes()[22].getFile(id >>> 1416501898, id & 0x3ff); script = new VarBitDefinitions(); script.id = id; if (data != null) script.readValueLoop(new InputStream(data)); varpbitDefs.put(id, script); return script; } private void readValueLoop(InputStream stream) { for (;;) { int opcode = stream.readUnsignedByte(); if (opcode == 0) break; readValues(stream, opcode); } } private void readValues(InputStream stream, int opcode) { if (opcode == 1) { baseVar = stream.readUnsignedShort(); startBit = stream.readUnsignedByte(); endBit = stream.readUnsignedByte(); } } private VarBitDefinitions() { } } [/CODE] player [CODE] private transient VarsManager varsManager;[/CODE] [CODE]varsManager = new VarsManager(this);[/CODE] [CODE] public VarsManager getVarsManager() { return varsManager; } [/CODE] creds to dkk
  4. Why this was done? To make it easier for you; you know which title you are giving to player instead of checking them all trought live game. I have a different use for this though, and I want to contribrute RSPS community. TitleManager.java (com.rs.game.player.content) [CODE]package com.enso.game.player.content; import com.enso.game.player.Player; /** * * @author Fuzen Seth * @information Represents a title manager. * @since 22.6.2014 */ public class TitleManager { /** * Title instance. */ private Titles title; /** * @author Fuzen Seth * @information Holds the title ids. */ public enum Titles { JR_CADET(1),SEARJANT(2),COMMMANDER(3),WAR_CHIEF(4), SIR(5),LORD(6),DUDERINO(7),LIONHEART(8),HELLRAISER(9),RUSADOR(10), DESPORADO(11),BARON(12),COUNT(13),OVERLORD(14),BANDITO(15),DUKE(16), KING(17),BIG_CHEESE(18),BIGWIG(19),WUNDERKIND(20),VYRELING(21),VYREGRUNT(22), VYREWATCH(23), VYRELORD(24), EMPEROR(26), PRINCE(27), WITCH_KING(28), ARCHON(29), JUSTICIAR(30), THE_AWESOME(31); private int titleId; private Titles(int titleId) { this.titleId = titleId; } public int getTitleId() { return titleId; } public void setTitleId(int titleId) { this.titleId = titleId; } } /** * Get the titles. * @return */ public Titles getTitle() { return title; } /** * Removes the title from player. * @param player */ public void removeTitle(Player player) { if (!(player.getAppearence().getTitle() > 0)) { player.getDialogueManager().startDialogue("SimpleMessage", "You don't have a title."); return; } player.getAppearence().setTitle(-1); player.getAppearence().getAppeareanceData(); player.getDialogueManager().startDialogue("SimpleMessage", "Your title has been removed."); } /** * Adds player a title next to his username. * @param player * @param title */ public void setTitle(Player player, Titles title) { this.title = title; player.getAppearence().setTitle(title.getTitleId()); player.getDialogueManager().startDialogue("SimpleMessage", "Your title has been changed."); } } [/CODE] Add this stuff in player java: [CODE]private TitleManager titleManager = new TitleManager();[/CODE] Now this with other getters. [CODE] public TitleManager getTitleManager() { return titleManager; }[/CODE] Add this in Appearence.java [CODE] public int getTitle() { return title; }[/CODE] Little tutorial: How would I now call a title / how I set it to player? Super easy, this is how you do it. [CODE]player.getTitleManager().setTitle(Titles.THE_AWESOME);[/CODE] Hope it helps. ;)
  5. [CODE]package com.cyn.player; /** * * @author Fuzen Seth * @since 30.6.2014 * @information Represents a interface manager. */ public class InterfaceManager { /** * Client instance. */ private Client c; /** * Regular send interface. * @param interfaceid */ public void sendInterface(int interfaceid) { if(c.getOutStream() != null && c != null) { c.getOutStream().createFrame(97); c.getOutStream().writeWord(interfaceid); c.flushOutStream(); } } /** * Sends a interface with background. * @param MainFrame * @param SubFrame */ public void sendBackgroundInterface(int MainFrame, int SubFrame) { if(c.getOutStream() != null && c != null) { c.getOutStream().createFrame(248); c.getOutStream().writeWordA(MainFrame); c.getOutStream().writeWord(SubFrame); c.flushOutStream(); } } public void sendFrame34(int id, int slot, int column, int amount) { if(c.getOutStream() != null && c != null) { c.outStream.createFrameVarSizeWord(34); c.outStream.writeWord(column); c.outStream.writeByte(4); c.outStream.writeDWord(slot); c.outStream.writeWord(id+1); c.outStream.writeByte(amount); c.outStream.endFrameVarSizeWord(); } } /** * Sets a overlay interface. (is walkable) * @param id */ public void setOverlayInterface(int id) { if(c.getOutStream() != null && c != null) { c.getOutStream().createFrame(208); c.getOutStream().writeWordBigEndian_dup(id); c.flushOutStream(); } } /** * Closes all windows. */ public void closeAllWindows() { if(c.getOutStream() != null && c != null) { c.getPA().resetVariables(); c.getOutStream().createFrame(219); c.flushOutStream(); } } /** * Sends a interface with one main frame, 3 sub frames. * @param MainFrame * @param SubFrame * @param SubFrame2 */ public void sendBackgroundInterface(int MainFrame, int SubFrame, int SubFrame2) { //synchronized(c) { if(c.getOutStream() != null && c != null) { c.getOutStream().createFrame(246); c.getOutStream().writeWordBigEndian(MainFrame); c.getOutStream().writeWord(SubFrame); c.getOutStream().writeWord(SubFrame2); c.flushOutStream(); } } /** * * @param MainFrame * @param SubFrame */ public void sendFrame171(int MainFrame, int SubFrame) { if(c.getOutStream() != null && c != null) { c.getOutStream().createFrame(171); c.getOutStream().writeByte(MainFrame); c.getOutStream().writeWord(SubFrame); c.flushOutStream(); } } /** * * @param MainFrame * @param SubFrame */ public void sendFrame200(int MainFrame, int SubFrame) { if(c.getOutStream() != null && c != null) { c.getOutStream().createFrame(200); c.getOutStream().writeWord(MainFrame); c.getOutStream().writeWord(SubFrame); c.flushOutStream(); } } /** * * @param i * @param o * @param id */ public void sendFrame70(int i, int o, int id) { if(c.getOutStream() != null && c != null) { c.getOutStream().createFrame(70); c.getOutStream().writeWord(i); c.getOutStream().writeWordBigEndian(o); c.getOutStream().writeWordBigEndian(id); c.flushOutStream(); } } /** * * @param MainFrame * @param SubFrame */ public void sendFrame75(int MainFrame, int SubFrame) { if(c.getOutStream() != null && c != null) { c.getOutStream().createFrame(75); c.getOutStream().writeWordBigEndianA(MainFrame); c.getOutStream().writeWordBigEndianA(SubFrame); c.flushOutStream(); } } /** * * @param Frame */ public void sendFrame164(int Frame) { if(c.getOutStream() != null && c != null) { c.getOutStream().createFrame(164); c.getOutStream().writeWordBigEndian_dup(Frame); c.flushOutStream(); } } /** * Sends friends and ignore list status. * @param i */ public void sendPlayerInteractInterfaces(int i) { if(c.getOutStream() != null && c != null) { c.getOutStream().createFrame(221); c.getOutStream().writeByte(i); c.flushOutStream(); } } /** * Sends the chatting options. * @param publicChat * @param privateChat * @param tradeBlock */ public void sendChatOptions(int publicChat, int privateChat, int tradeBlock) { //synchronized(c) { if(c.getOutStream() != null && c != null) { c.getOutStream().createFrame(206); c.getOutStream().writeByte(publicChat); c.getOutStream().writeByte(privateChat); c.getOutStream().writeByte(tradeBlock); c.flushOutStream(); } } /** * * @param id * @param state */ public void sendFrame87(int id, int state) { //synchronized(c) { if(c.getOutStream() != null && c != null) { c.getOutStream().createFrame(87); c.getOutStream().writeWordBigEndian_dup(id); c.getOutStream().writeDWord_v1(state); c.flushOutStream(); } } } [/CODE]
  6. [CENTER][IMG]http://rspsdata.org/system/img/logo.png[/IMG][/CENTER] Hey guys, So the past year or so i have been working on rspsdata, It's a donation system that allows you to accept donations with ease. No more MySQL, php etc etc We handle all the back end stuff, all you have to do is implement it with your server and add your products! Features - Accept Paypal - Accept Paygol - Accept PaymentWall - Setup wizard v1.0 to help you install it to your server - Webstore Page - Customization Options - Statistics page - 128bit SSL - Purchase archiver, logs all donators and the amount they donated So signup for an account now for free at : [URL="https://rspsdata.org/system"]https://rspsdata.org/system[/URL] [IMG]http://i.imgur.com/Fe7XWOF.png[/IMG] Thanks, Soccerjunki
  7. iVinnyS

    667: Shops Manager

    Hi, Is there a Shops Manager available to put into Zenith 667 source somehow?
  8. Hello guys, I want open a german RSPS and i need a person on my site because i dont want open a RSPS server alone. He must 16 years old And must got TS3 Headset and 2-3 years RSPS experience Natinoality German pm me
  9. 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]
  10. Hello, I am offering to be part of the staff team on your server. I am very mature and I know how to handle almost any situation. I am very capable at being a Staff manager and I am not in it for the money. If you need an experienced/dedicated staff/staff manager then please contact me. I also offer Forums construction & Graphics. Please send me a PM via forums if you are interested, Also have minimal coding knowledge, I can do some things but not everything! Best regards, Frost.
  11. I aimed to make this 100% once I was doing it, it has real pricing for statuettes. [CODE]package com.enso.game.player.content.cities.content; import java.util.HashMap; import com.enso.game.item.Item; import com.enso.game.player.Player; /** * * [MENTION=52317]auth[/MENTION]or Fuzen Seth * */ public class ArtifactsManager { public static enum Artefacts { BROKEN_STATIUE_HEADDRESS(14892, 5000), THIRD_AGE_CARAFE(14891, 10000), BRONZED_RAGON_CLAW(14890, 20000), ANCIENT_PSALTERY_BRIDGE(14889, 30000), BANDOS_SCRIMSHAW(14888, 40000), SARADOMIN_AMPHORA(14888, 50000), SARADOMIN_CARVING(14886,75000), ZAMORAK_MEDALLION(14885,100000), ARMADYL_TOTEM(14884,150000), GUTHIXIAN_BRAZIER(14883,200000), RUBY_CHALICE(14882,250000), BANDOS_STATUETTE(14881,300000), SARADOMIN_STATUETTE(14880,400000), ZAMORAK_STATUETTE(14879,500000), ARMADYL_STATUETTE(14878,750000), SEREN_STATUETTE(14877,1000000), ANCIENT_STATIUETTE(14876, 5000000); private int itemId, coins; public int getId() { return itemId; } private Artefacts(int id, int coins) { this.itemId = id; this.coins = coins; } public int getCoins() { return coins; } } private static HashMap<Integer, Artefacts> artefactItem = new HashMap<Integer, Artefacts>(); /** * Finds the artefacts. * [MENTION=75098]Para[/MENTION]m player, int itemId, int amount, [MENTION=75098]Para[/MENTION]m item */ public static void findArtefacts(Player player, int itemId, int amount, Item item) { final Artefacts artefacts = artefactItem.get(itemId); if (!player.getInventory().hasFreeSlots()) { player.sendMessage("You don't have enough space in your inventory to exchange artefacts."); return; } if (!player.getInventory().containsItem(artefacts.getId(), 1)) { player.sendMessage("You don't have any artefacts to exchange."); return; } if (player.getSkills().getCombatLevelWithSummoning() <= 29) { player.sendMessage("You must have combat level atleast of 30 to exchange artefacts."); } if (containsArtefacts(player, itemId) && player.getSkills().getCombatLevelWithSummoning() >= 30) { player.getInventory().deleteItem(artefacts.getId(), item.getAmount()); player.addStopDelay(3); player.getInventory().addItem(995, artefacts.getCoins()); player.getDialogueManager().startDialogue("SimpleMessage", "You have succesfully exchanged your artefacts."); } } /** * Does the player have artefacts? * [MENTION=75098]Para[/MENTION]m player * [MENTION=75098]Para[/MENTION]m itemId * [MENTION=184045]return[/MENTION] */ public static boolean containsArtefacts(Player player, int itemId) { final Artefacts artefacts = artefactItem.get(itemId); return (player.getInventory().containsItem(artefacts.getId(), 1)); } } [/CODE] Credits to Fuzen Seth.
  12. [CENTER][IMG]http://i.imgur.com/sdUax9Z.png[/IMG] [SIZE=5]Desktop Entry Manager[/SIZE][/CENTER] This is an application I developed while learning to develop using the PySide / Qt4 API. I had limited access to the internet so I have relied on saved web pages and PDF documents which some were outdated, so with my own creativity and experience I have come up with this application which I intent to further develop and improve.. I am currently looking for constructive criticism and feedback.. This application was developed as an educational project with the intent of providing a user-friendly way to access, view and modify the configuration settings of the software installed on the current system. Please feel free to modify and or redistribute this application along with the source code anywhere that you wish. Thank you for reading. Image Album : [URL="http://imgur.com/a/p0p92"]Desktop Entry Manager 1.1 - Imgur[/URL] Source Code : [URL="http://paste.ubuntu.com/5813443/"]Ubuntu Pastebin[/URL] Config Files : [URL="http://www.mediafire.com/download/5nd8dg7t06rpnf1/config.zip"]config.zip[/URL] Media inside the spoiler. [CENTER] [IMG]http://i.imgur.com/9Jg0JF4.png[/IMG] [IMG]http://i.imgur.com/BOliE8t.png[/IMG] [IMG]http://i.imgur.com/L942qfg.png[/IMG] [IMG]http://i.imgur.com/hEmxL9G.png[/IMG] [IMG]http://i.imgur.com/LvmpKE8.png[/IMG] [IMG]http://i.imgur.com/hr7GtxL.png[/IMG] [IMG]http://i.imgur.com/O9gWdJJ.png[/IMG] [IMG]http://i.imgur.com/e45s7Xz.png[/IMG] [IMG]http://i.imgur.com/jvN6H6K.png[/IMG] [IMG]http://i.imgur.com/SyRCUpV.png[/IMG] [IMG]http://i.imgur.com/3rTB0gi.png[/IMG] [IMG]http://i.imgur.com/Kn9lCPd.png[/IMG] [IMG]http://i.imgur.com/eoxv1xK.png[/IMG] [/CENTER] To install PySide : APT install : [CODE]sudo apt-get install python-pyside[/CODE] Web downloads : [URL="http://qt-project.org/downloads"]Download PySide/Qt[/URL] [URL="http://qt-project.org/wiki/PySide"] PySide | Qt Wiki | Qt Project[/URL] [I]I will also be developing a lightweight twin application in GTK+ for those who do not have PySide.[/I]
  13. You could use this for dungeon actions, my server is built for high playerbase so I decided to do this. It's easy to navigate trought the files cuz of this system and I want to contribrute it to RuneLocus. Remember to change the imports to yourrs. DungeonsManager.java [CODE]package com.mentios.game.player.content.cities.content.dungeons; import com.mentios.game.player.Player; /** * * @author JazzyYaYaYa | Nexon | Fuzen Seth * */ public abstract class DungeonsManager { public DungeonsManager() { } /** * The current dungeon that player is in. * @return */ public abstract String currentDungeon(); /** * Handles all object action. */ public abstract boolean processObjectActions(Player player, int id); /** * Some dungeons might contain some npcs, this handles these. * @param player * @param npcId * @return */ public abstract boolean processNPCAction(Player player, int npcId); /** * Enters a Dungeon, * @param player */ public abstract void enterDungeon(Player player); /** * Leaves a dungeon. * @param player */ public abstract void leaveDungeon(Player player); } [/CODE] Now you want to know how to make your very first own dungeon? That's very simple. Create a new folled 'impl' and add this in for an example, heres my Relleka Slayer Dungeon start. [CODE]package com.mentios.game.player.content.cities.content.dungeons.impl; import com.mentios.game.player.Player; import com.mentios.game.player.content.cities.content.dungeons.DungeonsManager; /** * * @author JazzyYaYaYa | Nexon | Fuzen Seth * */ public class RellekaSlayerDungeon extends DungeonsManager { public RellekaSlayerDungeon() { super(); } //What dungeon are we currently in? @Override public String currentDungeon() { return "Relleka slayer dungeon"; } //Is there any objects that you would like ot give actions? @Override public boolean processObjectActions(Player player, int id) { switch (id) { case 1: // int id - <- Object id enterDungeon(player); return true; case 2: leaveDungeon(player); return true; } return false; } //Is there any NPCs that you want to give actions? Maybe some couple of dialogues? @Override public boolean processNPCAction(Player player, int npcId) { switch (npcId) { } return false; } //Here we enter to the dungeon. @Override public void enterDungeon(Player player) { player.sendMessage("You succesfully enter to "+currentDungeon()+"."); } //And here we leave it. @Override public void leaveDungeon(Player player) { } } [/CODE] Hope someone finds this useful, I tried to make it easy to understand & create & make new dungeons. Anyways, another snippet from [B]Fuzen Seth[/B]!
  14. This is convient for people who are running a large server and or have a less than decent computer. This timer task is called every 5 minutes in the game engine and updates runtime data and garbage collects. (No, it's not bad to call it manually -_-, yes. JVM will do it for you when necessary) I don't know much about system runtime and garbage collecting, so if there's anything that looks dumb or that is not supposed to be here, let me know. [CODE]/** * Copyright(C) Xplur(Elixrr) 1.0 2013 */ package org.xplur.engine.runtime; import java.lang.management.ManagementFactory; import java.lang.management.MemoryManagerMXBean; import java.lang.management.RuntimeMXBean; import java.util.TimerTask; import org.xplur.engine.GameEngine; import org.xplur.misc.Console; import com.sun.management.GarbageCollectorMXBean; import com.sun.management.ThreadMXBean; /** * Contains elements from {@code Java}'s MX bean implementation that is used to * handle server runtime * <nl> * * (<i>Some {@code Java} docs have been taken to provide proper information</i>) * * @author Taylor Moon * * @version Xplur 1.0 (EoC)<br> * * @see {@link GarbageCollectorMXBean} {@link MemoryManagerMXBean} * {@link ThreadMXBean} {@link RuntimeMXBean} */ public class RuntimeManager extends TimerTask { /** * The JVM garbage collector memory bean */ private GarbageCollectorMXBean gcBean; /** * The defualt memory bean */ private MemoryManagerMXBean memBean; /** * The thread bean */ private ThreadMXBean threadBean; /** * The runtime bean */ private RuntimeMXBean runtimeBean; /** * The total CPU time for the current thread in nanoseconds. The returned * value is of nanoseconds precision but not necessarily nanoseconds * accuracy. If the implementation distinguishes between user mode time and * system mode time, the returned CPU time is the amount of time that the * current thread has executed in user mode or system mode. */ private long currentCPUTime; /** * The current number of live threads including both daemon and non-daemon * threads. */ private int threadCount; /** * The uptime of the Java virtual machine in milliseconds. */ private long uptime; /** * The uptime of the Java virtual machine in milliseconds. */ private long startTime; @Override public void run() { try { if (gcBean == null || !gcBean.isValid()) gcBean = (GarbageCollectorMXBean) ManagementFactory .getGarbageCollectorMXBeans().get(0); if (memBean == null || !gcBean.isValid()) memBean = ManagementFactory.getMemoryManagerMXBeans().get(0); if (threadBean == null) threadBean = (ThreadMXBean) ManagementFactory.getThreadMXBean(); if (runtimeBean == null) runtimeBean = ManagementFactory.getRuntimeMXBean(); if (getAvailableMemory() <= 10000000) throw new InsufficientMemoryException(); currentCPUTime = threadBean.getCurrentThreadCpuTime(); threadCount = threadBean.getThreadCount(); uptime = runtimeBean.getUptime(); startTime = runtimeBean.getStartTime(); System.gc(); /* * Check again, if not enough then shutdown to prevent problems */ if (getAvailableMemory() <= 10000000) { GameEngine.getEngine().shutdown(); throw new InsufficientMemoryException(); } Console.debug(toString()); } catch (OutOfMemoryError | InsufficientMemoryException e) { Console.notify(e instanceof OutOfMemoryError ? "Could not process runtime: Not enough virtual memory" : e.getMessage()); if (e instanceof OutOfMemoryError) GameEngine.getEngine().shutdown(); } } /** * Checks and cleans this runtime */ public void clean() { if (gcBean == null || !gcBean.isValid()) gcBean = (GarbageCollectorMXBean) ManagementFactory .getGarbageCollectorMXBeans().get(0); if (memBean == null || !gcBean.isValid()) memBean = ManagementFactory.getMemoryManagerMXBeans().get(0); if (threadBean == null) threadBean = (ThreadMXBean) ManagementFactory.getThreadMXBean(); if (runtimeBean == null) runtimeBean = ManagementFactory.getRuntimeMXBean(); System.gc(); } /** * Returns a representation of this runtime made up of the class flags and * attributes */ public String toString() { return "RUNTIME: Available Memory: " + getAvailableMemory() + ", Current CPU Time=" + currentCPUTime + ", Thread Count=" + threadCount + ", Start Time=" + startTime + ", Up Time=" + uptime + ""; } /** * Returns the GC bean of this runtime * * @return The GC bean */ public GarbageCollectorMXBean getGCBean() { return gcBean; } /** * Returns the memory bean of this runtime * * @return The memory bean */ public MemoryManagerMXBean getMemoryBean() { return memBean; } /** * Returns the thread bean of this runtime * * @return The thread bean */ public ThreadMXBean getThreadBean() { return threadBean; } /** * Returns the runtime bean of this runtime * * @return The runtime bean */ public RuntimeMXBean getRuntimeBean() { return runtimeBean; } /** * Returns the current number of live threads including both daemon and * non-daemon threads. */ public int getThreadCount() { return threadCount; } /** * Returns the total CPU time for the current thread in nanoseconds. The * returned value is of nanoseconds precision but not necessarily * nanoseconds accuracy. If the implementation distinguishes between user * mode time and system mode time, the returned CPU time is the amount of * time that the current thread has executed in user mode or system mode. */ public long getCPUTime() { return currentCPUTime; } /** * Returns the starting time of this JVM in miliseconds */ public long getStartupTime() { return startTime; } /** * Returns the uptime of this runtime in miliseconds from when the JVM was * started * * @return */ public long getUpTime() { return uptime; } /** * Returns the amount of free memory in the Java Virtual Machine. Calling * the gc method may result in increasing the value returned by freeMemory. */ public long getAvailableMemory() { return Runtime.getRuntime().freeMemory(); } /** * Returns the maximum amount of memory that the Java virtual machine will * attempt to use. If there is no inherent limit then the value * Long.MAX_VALUE will be returned. */ public long getMaxMemory() { return Runtime.getRuntime().maxMemory(); } /** * Returns the total amount of memory in the Java virtual machine. The value * returned by this method may vary over time, depending on the host * environment. Note that the amount of memory required to hold an object of * any given type may be implementation-dependent. */ public long getTotalMemory() { return Runtime.getRuntime().totalMemory(); } } [/CODE] To register the timer task create a new "Timer.java" instance, and use this method: [CODE]SYNCHRONIZER.schedule(runtime, RUNTIME_CYCLE_RATE * 1000, RUNTIME_CYCLE_RATE * 1000);[/code] Instance it in the game engine of your server. [COLOR="#B22222"][B]This is what I like to call a prototype. So don't hate haha, tell me if this is necessary for a source or not. Seems to work really well for me.[/B][/COLOR]
  15. This requires Mgi's cache packer and was made for RS2HD servers. This was tested on 525, should work on 562. Difficulty: 3/10 Step 1: Download Mgi's cache packer. [URL="http://uppit.com/my4c6symspci/cachepacker.rar"]Here[/URL] Step 2: Extract it to your desktop. Step 3: Open the src folder and extract the contents into your servers src folder. Step 4: In the data folder location in your server create a new folder called cache. Step 5: Move your client cache into this folder. no dlls are needed Step 6: create a package called regions in src/com/rs2hd/ Step 7: Create these classes and put them in this package created on step 6. [code] package com.rs2hd.regions; import java.util.ArrayList; import java.util.HashMap; import com.rs2hd.model.Entity; import com.rs2hd.model.Location; import com.rs2hd.model.NPC; import com.rs2hd.model.Player; public class RegionManager { private HashMap<Integer, Region> regions; public RegionManager() { this.regions = new HashMap<Integer, Region>(); } public void addRegion(int region, int regionX, int regionY) { regions.put(region, new Region(regionX, regionY)); } public void removeRegion(int region) { regions.remove(region); } public Region getRegion(int region) { return regions.get(region); } public ArrayList<Player> getPlayersFromRegions(Location location, ArrayList<Integer> regions) { ArrayList<Player> players = new ArrayList<Player>(); for(int region : regions) { if(this.regions.get(region) != null) { for(Entity entity : this.regions.get(region).getEntities()) { if(entity instanceof Player) { if(((Player) entity).getLocation().withinDistance(location, 16)) players.add((Player) entity); } } } } return players; } public ArrayList<NPC> getNPCFromRegions(Location location, ArrayList<Integer> regions) { ArrayList<NPC> npcs = new ArrayList<NPC>(); for(int region : regions) { if(this.regions.get(region) != null) { for(Entity entity : this.regions.get(region).getEntities()) { if(entity instanceof NPC) { if(((NPC) entity).getLocation().withinDistance(location, 16)) npcs.add((NPC) entity); } } } } return npcs; } } [/code] [code] package com.rs2hd.regions; import java.util.ArrayList; import mgi.tools.jagcached.cache.Cache; import mgi.tools.jagcached.cache.File; import mgi.tools.jagcached.cache.FileSystem; import mgi.tools.jagcached.cache.Folder; import mgi.utilities.ByteBuffer; import com.rs2hd.model.Entity; import com.rs2hd.model.Location; import com.rs2hd.model.Bounds; import com.rs2hd.model.World; public class Region { private ArrayList<Entity> entitiesInRegion; private Tile[][][] tile; private int regionX, regionY; static final FileSystem INDEX_5 = new FileSystem(5, Cache.openCache("./Data/cache/")); static { INDEX_5.load(); } public Region(int regionX, int regionY) { entitiesInRegion = new ArrayList<Entity>(); tile = new Tile[4][64][64]; this.regionY = regionY; this.regionX = regionX; loadObjects(regionX, regionY); } public boolean canWalk(int locX, int locY, Location location) { Bounds bound = new Bounds(regionX*64, regionY*64, (regionX*64)+63, (regionY*64)+63); if(!bound.withinArea(location) || tile[location.getZ()][locX][locY] == null) return true; return false; } public boolean objectExistsAt(Location location, int id) { Bounds bound = new Bounds(regionX*64, regionY*64, (regionX*64)+63, (regionY*64)+63); int x = location.getX() - ((location.getX()/64)*64), y = location.getY() - ((location.getY()/64)*64); if(!bound.withinArea(location) || tile[location.getZ()][x][y] == null) return false; for(GameObject object : tile[location.getZ()][x][y].getObjects()) if(object.getId() == id) return true; return false; } public ArrayList<Entity> getEntities() { return entitiesInRegion; } public void addEntityToRegion(Entity e) { entitiesInRegion.add(e); } public void removeEntityFromRegion(Entity e) { entitiesInRegion.remove(e); } public void loadObjects(int locX, int locY) { try { Folder folder = INDEX_5.findFolderByName("l"+locX+"_"+locY, World.getInstance().getMapData525((locX << 8) + locY)); for (int i = 0; i < folder.filesCount(); i++) { File fid = folder.findFileByID(i); if (fid == null) continue; ByteBuffer buffer = fid.getData(); buffer.setPosition(0); int id = -1; boolean bool_4_ = false; do { int i_6_ = buffer.specialRead1(); if (-1 == (i_6_ ^ 0xffffffff) && !bool_4_) break; id += i_6_; int i_7_ = 0; do { int i_8_ = buffer.readUnsignedSmart(); if ((i_8_ ^ 0xffffffff) == -1) break; i_7_ += i_8_ + -1; int y = i_7_ & 0x3f; int height = i_7_ >> -1887294292; int x = (i_7_ & 0xfe7) >> -952356218; int i_12_ = buffer.readUByte(); final int type = i_12_ >> -2109364606; final int face = i_12_ & 0x3; if (x > 0 && -1 > (y ^ 0xffffffff) && x < 103 && y < 103) { if(tile[height][x][y] == null) tile[height][x][y] = new Tile(height, x, y); tile[height][x][y].getObjects().add(new GameObject(id, type, face)); } } while (!bool_4_); } while (!bool_4_); } } catch (Exception e) { } } public void removeTile(int z, int x, int y) { tile[z][x][y] = null; } } [/code] [code] package com.rs2hd.regions; import java.util.ArrayList; import com.rs2hd.model.World; public class Tile { private ArrayList<GameObject> objectsOnTile; private int x, y, z; public Tile(int z, int x, int y) { objectsOnTile = new ArrayList<GameObject>(); this.z = z; this.x = x; this.y = y; } public ArrayList<GameObject> getObjects() { return objectsOnTile; } public void removeObject(int type) { for(int i = 0; i < objectsOnTile.size(); i++) { GameObject obj = objectsOnTile.get(i); if(obj.getType() == type) { objectsOnTile.remove(i); break; } } if(objectsOnTile.size() == 0) World.getInstance().getRegionManager().getRegion(y + (x << 8)).removeTile(z, x, y); } } [/code] [code] package com.rs2hd.regions; public class GameObject { int id, type, face; public GameObject(int id, int type, int face) { this.id = id; this.type = type; this.face = face; } public int getId() { return id; } public int getType() { return type; } public int getFace() { return face; } } [/code] Step 8: Entity.java add this field - [code]private transient int currentRegion;[/code] add these methods - [code] public void addToRegion(int region) { if(World.getInstance().getRegionManager().getRegion(region) == null) World.getInstance().getRegionManager().addRegion(region, location.getX() / 64, location.getY() / 64); World.getInstance().getRegionManager().getRegion(region).addEntityToRegion(this); } public void removeFromRegion(int region) { World.getInstance().getRegionManager().getRegion(region).removeEntityFromRegion(this); } public int getCurrentRegion() { return currentRegion; } public void setCurrentRegion(int newRegion) { currentRegion = newRegion; } [/code] replace [code] public void setLocation(Location location) { this.location = location; } [/code] with [code] public void setLocation(Location location) { this.location = location; int newRegion = (location.getY() / 64) + ((location.getX() / 64) << 8); if(newRegion != getCurrentRegion()) { removeFromRegion(getCurrentRegion()); setCurrentRegion(newRegion); addToRegion(getCurrentRegion()); } } [/code] Step 9 - Player.java add this field [code] private transient ArrayList<Integer> regions; [/code] add this in the readResolve() method [code] regions = new ArrayList<Integer>(); [/code] add this method [code] public ArrayList<Integer> regions() { return regions; } [/code] Step 10: World.java add this field [code] public static final RegionManager REGIONMANAGER = new RegionManager(); [/code] add this method [code] public RegionManager getRegionManager() { return REGIONMANAGER; }[/code] Step 11: ActionSender.java in the method sendMapRegion add this [code] player.regions().clear(); [/code] above [code]for(int xCalc = (player.getLocation().getRegionX() - 6) / 8; xCalc <= ((player.getLocation().getRegionX() + 6) / 8); xCalc++) {[/code] and add this [code] player.regions().add(region); [/code] above [code] spb.addInt(mapData[0]); spb.addInt(mapData[1]); spb.addInt(mapData[2]); spb.addInt(mapData[3]); [/code] Step 12: PlayerUpdate.java replace [code] for (Player p2 : World.getInstance().getPlayerList()) { [/code] with [code]for(Player p2 : World.getInstance().getRegionManager().getPlayersFromRegions(p.getLocation(), p.regions())) {[/code] Step 13: NPCUpdate.java [code] for (NPC npc : World.getInstance().getNpcList()) { [/code] with [code]for(NPC npc : World.getInstance().getRegionManager().getNPCFromRegions(p.getLocation(), p.regions())) {[/code] Step 14: add this in objectpackethandler [code] boolean exists = false; final Location location = Location.location(objectX, objectY, player.getLocation().getZ()); for(int regionid : player.regions()) { if(World.getInstance().getRegionManager().getRegion(regionid) == null) { boolean regionfound = false; for(int xCalc = (location.getRegionX() - 6) / 8; xCalc <= ((location.getRegionX() + 6) / 8); xCalc++) { for(int yCalc = (location.getRegionY() - 6) / 8; yCalc <= ((location.getRegionY() + 6) / 8); yCalc++) { int region = yCalc + (xCalc << 8); if(regionid == region) { regionfound = true; World.getInstance().getRegionManager().addRegion(regionid, xCalc, yCalc); break; } } if(regionfound) break; } if(!regionfound) return; } if(World.getInstance().getRegionManager().getRegion(regionid).objectExistsAt(location, objectId)) { exists = true; break; } } if(exists == false) { player.getWalkingQueue().reset(); player.sm("This Object is fake!"); return; } else { player.sm("This Object exists."); } [/code] Edit*** You will have to put this in the ByteBuffer class. [code] public final int specialRead1() { int i_2_; int i_3_ = 0; int i_4_ = readUnsignedSmart(); while (i_4_ == 32767) { i_4_ = readUnsignedSmart(); i_3_ += 32767; break; } i_3_ += i_4_; i_2_ = i_3_; return i_2_; } [/code] and you'll need to add this class in model. [code] package com.rs2hd.model; public class Bounds { int minX, minY, maxX, maxY; public Bounds(int minX, int minY, int maxX, int maxY) { this.minX = minX; this.minY = minY; this.maxX = maxX; this.maxY = maxY; } public Bounds(int minX, int minY) { this.minX = minX; this.minY = minY; this.maxX = -1; this.maxY = -1; } public boolean withinArea(Location location) { int x = location.getX(); int y = location.getY(); if(maxX == -1 && maxY == -1) return minX == x && minY == y; return x >= minX && x <= maxX && y >= minY && y <= maxY; } } [/code] [IMG]http://i48.tinypic.com/2zsd8ht.png[/IMG] [IMG]http://i45.tinypic.com/294lb3p.png[/IMG] Credits: Mgi for Cache Packer Me for all code you see above.
  16. I've been recently working on a package manager for Minecraft. It currently allows you to lookup, install, update and remove packages. This project is/was a great introduction to tools such as Maven, Ant and JUnit, which I never used very often in the past. You can see it [URL="https://github.com/FabianM/brewr"]here[/URL].
  17. Hi everyone, I currently own a 2GB/Dual Core VPS, ready to run a RSPS (we will upgrade specs as we go). But i have no idea how to get the source files and configuring it to make it work, therefore i need another someone to help me with this. You will be become the co-owner of the server with me, you do not need to worry about the cost of my VPS. We can discuss more of this, please add my contacts and talk to me asap. Would be better if you had most things already start, like files, website all ready. You must be ready to add new features and be active very often. All donations made with server will be splited by: Paying off VPS price first. Then 50/50 between me and you. I already have paypal setup. Skype: oscarguan28 Steam: cashholder Thank you for reading!
  18. I've an idea for a community project: [B][SIZE=5]Runelocus Package Manager[/SIZE] [/B][SIZE=2]Providing RSPS packages for multiple sources and revisions. [B]Source Developer side[/B] For developers of a framework/source it comes with abstract application layers. This allows you to switch from Apache MINA to JBoss Netty without needing to rewrite the whole source. Another thing is that you don't need to write and implement all game-play features again because you're using an other source tree. It provides a set of rules of what your source should include, this allows users to switch to an other source without needing to change things like rights and ban-list. [/SIZE][IMG]http://img546.imageshack.us/img546/8031/explained.png[/IMG] [B]Package Developer side [/B]Package developers don't need to care about what source to use. The package will work on every correct server. [B]User side [/B]For users and especially new users it provides many packages. If someone wrote a package for his source, it would also works for your source. [B]Why? [/B]- Helping people that are new to RSPS. - Helping server developers. - Program with other members of Runelocus, maybe you will learn something from other member. The main reason why we should do it, because it let us work together as a real team. [/SIZE]:) [SIZE=3][B]Other community project ideas are also accepted![/B][/SIZE]
  19. Hey this is wretched, owner of Project Extinction. You can check it out in the project forums if you want.. But anyways you will get 10% of the pay if the server ever goes big. No now it is in the early stages of development. Just need a good forums/Website/Sig maker. If you want to check in on this hit me up on msn or just post back here. [email][email protected][/email] Thanks, Wretched
  20. Post your starting Lineup in Fifa 10/11/12 Manager modes I play Arsenal (My favorite European team) Team: Arsenal Formation: 4-3-3(1) Season: 4th Overall Record: 127-31-16 - Goals for: 287 - Goals Against: 84 GK - Szczesny (This man is amazing He was like a 77 when I got him moved him up now hes an 81 and I <3 him) RB - Sergio Ramos RCB - Dani Alves LCB - B. Sagna (Most consistent defender on my team) LB - P. Evra RCM - A. Diaby CM - S. Nasri (Stamina not the greatest but awesome player) LCM - F. Fabregas (Fabulous Fabregas :D) RW - L. Donovan (Omg an MLS player, Donovan is fast [92] great crossing, and ball control) ST - C. Ronaldo (Just bought him in first transfer window of the 4th season after Messi decline contract picked him up for $132M :p) LW - R. Van Persie (Mr. dependable) (Notable Substitutes) RW T. Walcott - This guy is fast and has a bunch of power I switch between him and Donovan. CAM T. Rosicky J. Altidore - Dependable, accurate from long range, strong, He stands like 6'2 so he gets up there for heading goals :) CB J. Djourou - My first sub if Dani Alves or Sergio Ramos is tired. So what are your guy's manager modes looking like?
  21. First Event Manager so please do give constructive criticism. As its far from perfect, you can also run multiple events at the same time. It's a simple and easy event manager to read. Save as TimedEvent.java: [CODE] package server.event; /** * @author Arrowzftw * */ public abstract class TimedEvent { /* * Repeat Event * */ public TimedEvent(int runDelay) { this.repeating = true; this.runDelay = runDelay; defaultDelay = runDelay; } /* * Play Event once if false * */ public TimedEvent(int runDelay, boolean repeating) { this.repeating = repeating; this.runDelay = runDelay; defaultDelay = runDelay; } /* * Certain amount of times repeating * */ public TimedEvent(int runDelay, int runTimes) { this.runDelay = runDelay; this.runTimes = runTimes; defaultDelay = runDelay; } public abstract void execute(); public void stop() { repeating = false; runTimes = 0; } public int runDelay; public int defaultDelay; public int runTimes; public boolean repeating; } [/CODE] Save as TimedEventContainer: [CODE] package server.event; import java.util.Timer; import java.util.TimerTask; /** * @author Arrowzftw * */ public class TimedEventContainer { public void addEvent(TimedEvent e) { doEvent(e); } public void removeEvent(TimedEvent e) { e.stop(); } public void doEvent(final TimedEvent e) { final Timer timer = new Timer(); try { timer.schedule(new TimerTask() { public void run() { e.execute(); if (e.runTimes > 0) { e.runTimes -= 1; } if (e.runTimes > 0 || e.repeating) { timer.cancel(); doEvent(e); } if (e.runTimes == 0 && e.repeating == false) { timer.cancel(); removeEvent(e); } else if (e.repeating == false && e.runTimes <= 0) { timer.cancel(); removeEvent(e); } } }, e.runDelay); } catch (Exception i) { timer.cancel(); if (e != null) { removeEvent(e); } } } } [/CODE] Add this in player.java and server.java: [CODE] public TimedEventContainer timedEventContainer = new TimedEventContainer(); [/CODE] Use respectfully if a global event call from server, if a player event call from player. Remember to add imports: [Code]import server.event.*;[/code] Example: Player Events: Repeating every 1 second [CODE] timedEventContainer.addEvent(new TimedEvent(1000) { public void execute() { sendMessage("Noob"); } }); [/CODE] Sends message noob after 600Ms then stops [CODE] timedEventContainer.addEvent(new TimedEvent(600 , false) { public void execute() { sendMessage("Noob"); } }); [/CODE] Sends message noob after 600Ms and repeats 20 times. [CODE] timedEventContainer.addEvent(new TimedEvent(600 , 20) { public void execute() { sendMessage("Noob"); } }); [/CODE]
  22. 1. when you clikc to cross the ganplank to get onto the pc boat, your char runs across it and then is teleported onto the boat. 2. the interface showing showing your points and stuff doesnt show up, and I re edited the code so here is the new revision, so need some help on it. public void InBoat () { EventManager.getSingleton().addEvent (new Event() { public void execute(EventContainer c) { int objectID = inStream.readUnsignedWordBigEndianA(); if(objectID == 14315 && System.currentTimeMillis() - lastAction > actionInterval) { sM("You enter the boat, "+PlayerHandler.pcWaitTimer+" till next game starts."); toX = 2660; toY = 2639; sendQuest("Points: "+pcPoints+" ", 14442); actionInterval = 2500; lastAction = System.currentTimeMillis(); PcPanel1(); if(!inPcBoat()) { c.stop(); } } } }, 600); };
  23. ok Using Graham's event manager I have this in process() if(annoTimer > 0) { annoTimer --; } And this just floating around in client.java public int annoTimer = 500; so I took if(annoTimer > 0) { annoTimer --; } and made this EventManager.getSingleton().addEvent( new Event() { public void execute(EventContainer c) { if(annoTimer > 0) { annoTimer --; c.stop(); // removes interface } } }, 600); // standard process cycle }; and my compiler yeilded these 11 errors The system cannot find the path specified. Compiling Xylority now... client.java:149: <identifier> expected EventManager.getSingleton().addEvent( ^ client.java:149: ';' expected EventManager.getSingleton().addEvent( ^ client.java:151: illegal start of expression public void execute(EventContainer c) { ^ client.java:151: illegal start of expression public void execute(EventContainer c) { ^ client.java:151: ';' expected public void execute(EventContainer c) { ^ client.java:151: ';' expected public void execute(EventContainer c) { ^ client.java:157: illegal start of type }, 600); // standard process cycle ^ client.java:157: ';' expected }, 600); // standard process cycle ^ client.java:157: illegal start of type }, 600); // standard process cycle ^ client.java:157: <identifier> expected }, 600); // standard process cycle ^ client.java:157: ';' expected }, 600); // standard process cycle ^ 11 errors Press any key to continue . . . any help on what I did wrong?