Jump to content

Search the Community

Showing results for tags 'rs2hd'.



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

  1. Ziek`

    avDariR.jpg

    1. Cart

      Cart

      WeirdChamp

    2. Ziek`

      Ziek`

      This is a 100% real screenshot from MSN days

    3. Ziek`

      Ziek`

      I also have

       kDaDoS0.png

  2. Hello, I am DoseSociety. The developer for the new project GoodtimesScape. Here is one thing I've been working on in the first two days of development. I see no reason to share whatever source code I produce publicly. [code]import com.rs2hd.model.Player; import com.rs2hd.Constants; /** * represents the process of stealing from a stall * @author ethan */ public class Thieving { /** * represents a vendor stall in the game from which you can steal items for experience */ private enum Stall { BREAD_STALL(25, 526, 0, "bread"), FABRIC_STALL(50, 526, 15, "fabric"), JEWELRY_STALL(100, 526, 40, "jewelry"); private int xp; private int item; private int level; private String itemName; private Stall(int xp, int item, int level, String itemName) { this.xp = xp; this.item = item; this.level = level; this.itemName = itemName; } public int getXp() { return xp; } public int getItem() { return item; } public int getLevel() { return level; } public String getItemName() { return itemName; } } /** * instance of the player while thieving */ private Player player; /** * the stall being stolen from */ private Stall stall; /** * constructs an instance of thieving */ public Thieving() { } /** * executes the thieving * TO-DO put better discription * [MENTION=75098]Para[/MENTION]m player * [MENTION=75098]Para[/MENTION]m stallId */ public void execute(Player player, int stallId) { this.player = player; switch (stallId) { case 4705: stall = Stall.BREAD_STALL; break; case 4706: stall = Stall.FABRIC_STALL; break; case 4707: stall = Stall.JEWELRY_STALL; break; } perform(); } /** * performs the thieving * TO-DO put better discription */ private void perform() { if (playerDoesntHaveLevel()) { player.getActionSender().sendMessage("You do not have the level required to steal from this stall."); return; } player.animate(881, 0); player.getActionSender().sendMessage("You stole some " + stall.getItemName() + "."); player.getInventory().addItem(stall.getItem(), 1); player.getSkills().addXp(17, stall.getXp() * Constants.EXPERIENCE_SCALE); } /** * checks to see if the player has the level needed to steal from a stall * [MENTION=184045]return[/MENTION] */ private boolean playerDoesntHaveLevel() { if (player.getSkills().getLevelForXp(17) < stall.getLevel()) { return true; } return false; } }[/code] The items aren't correct for the stalls If you want to scale the xp rate search for EXPERIENCE_SCALE in Thieving.java and change it to whatever scale you want This is the first object I've programmed in java for a very long time. If you could please revamp this and release the updates. I will use the updates personally. I hope I helped someone. Have a nice day :) To add this file to your rs2hd server go into ObjectPacketHandler.java Search [code]case 4705: player.thiefbs(); break; [/code] and replace it with [code]case 4705: case 4706: case 4707: thieving.execute(player, id); break; [/code]
  3. Hello, first of all I was wondering why the RS2HD servers are enable to reload a saved profile? it makes absolutely no sense because this issue doesnt exist for pali and it didnt exist in the past. Also I was hoping someone could assist me in adding clipping to pali 562 Much thanks
  4. So yeah. Now that RS2HD is gone, how long do you think till someone release RS3HD servers? Or do you think that no one will make an RS3HD server?
  5. Title says it all, I will pay for somebody to help me with clipped npcs on 562 rs2hd. My Skype is k-shan904, leave me a message below or add me on Skype.
  6. How can I remove [img]http://img38.imageshack.us/img38/9281/b68f722ccc864a3da6a160b.png[/img] So admins will have to use [code]::[/code] for commands instead?
  7. [size=6][size=7]taken down because everyone is an ignorant fuck[/size][/size]
  8. I don't know what's wrong, my GUI is fine, I know I've set up the launch code correctly, but it's just not running when I run the server. [code]package com.rs2hd; import com.rs2hd.model.Player; import com.rs2hd.model.World; /** * * [MENTION=52317]auth[/MENTION]or Divine-X * */ [MENTION=19271]supp[/MENTION]ressWarnings("serial") public class DivineFramework extends javax.swing.JFrame { /** * Class Constructor */ public DivineFramework() { initComponents(); setSize(450, 300); setResizable(false); } private void initComponents() { jTabbedPane = new javax.swing.JTabbedPane(1); contentPane = new javax.swing.JLayeredPane(); sendMessageButton = new javax.swing.JButton(); announceMentJTF = new javax.swing.JTextField(); messageJTF = new javax.swing.JTextField(); setDefaultCloseOperation(EXIT_ON_CLOSE); setTitle("Divine Framework"); this.contentPane = new javax.swing.JLayeredPane(); this.contentPane.setBorder(new javax.swing.border.EmptyBorder(5, 5, 5, 5)); setContentPane(this.contentPane); jPanel1 = new javax.swing.JPanel(); jPanel1.setBounds(0, 0, 450, 300); this.contentPane.add(jPanel1); jPanel1.setLayout(new java.awt.BorderLayout(0, 0)); jPanel1.add(jTabbedPane); jPanel1 = new javax.swing.JPanel(); jTabbedPane.addTab("Main", null, jPanel1, null); jPanel1.add(sendMessageButton); jPanel1.add(announceMentJTF); jPanel1.add(messageJTF); jPanel1.setLayout(null); /** * Text field */ announceMentJTF.setText("[Announcement]"); announceMentJTF.setFont(new java.awt.Font("Rockwell", 1, 12)); announceMentJTF.setBounds(65, 10, 300, 25); messageJTF.setText("Message"); messageJTF.setFont(new java.awt.Font("Rockwell", 1, 12)); messageJTF.setBounds(65, 40, 300, 25); /** * Button Handling */ sendMessageButton.setText("Send Message"); sendMessageButton.setBounds(145, 70, 130, 25); sendMessageButton.setFont(new java.awt.Font("Rockwell", 1, 12)); sendMessageButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { sendMessageButtonActionPerformed(evt); } }); } /** * Button Effects * [MENTION=75098]Para[/MENTION]m evt */ protected void sendMessageButtonActionPerformed(java.awt.event.ActionEvent evt) { String preText = announceMentJTF.getText(); String yellText = messageJTF.getText(); for (Player p : World.getInstance().getPlayerList()) { p.getActionSender().sendMessage((new StringBuilder()).append(preText).append(": ").append(yellText).toString()); } } /** * [MENTION=75098]Para[/MENTION]m args the command line arguments */ public static void main(String args[]) { try { javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); } catch(Throwable e) { e.printStackTrace(); } java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new DivineFramework().setVisible(true); } }); } //Declared variables do not modify private javax.swing.JTabbedPane jTabbedPane; private javax.swing.JLayeredPane contentPane; private javax.swing.JButton sendMessageButton; private javax.swing.JPanel jPanel1; private javax.swing.JTextField messageJTF; private javax.swing.JTextField announceMentJTF; //End of variable declarations }][/code] [code]package com.rs2hd; import java.io.File; [COLOR="#FF0000"]import com.rs2hd.DivineFramework;[/COLOR] import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.rs2hd.content.LoadPrices; import com.rs2hd.content.ShopHandler; import com.rs2hd.content.Shops; import com.rs2hd.content.minigames.BHWorld; import com.rs2hd.content.skills.combat.NpcVsPlayer; import com.rs2hd.content.skills.fishing.FishSpotLive; import com.rs2hd.content.skills.mining.RockLive; import com.rs2hd.content.skills.prayer.Prayer; import com.rs2hd.content.skills.summoning.Summon; import com.rs2hd.content.skills.thief.StallLive; import com.rs2hd.content.skills.woodcutting.TreeLive; import com.rs2hd.content.ClanChat.ClanMain; import com.rs2hd.content.ClanChat.SaveChats; //import com.rs2hd.content.grandexchange.*; import com.rs2hd.content.LoadEquips; import com.rs2hd.io.MapDataLoader; import com.rs2hd.io.MapDataPacker; import com.rs2hd.io.XStreamPlayerLoader; import com.rs2hd.model.ItemDefinition; import com.rs2hd.model.NPCDefinition; import com.rs2hd.model.World; import com.rs2hd.model.clipInfo; import com.rs2hd.model.NoclipHandler; import com.rs2hd.packethandler.PacketHandlers; import com.rs2hd.util.BanUser; import com.rs2hd.util.Censor; import com.rs2hd.util.MuteUser; import com.rs2hd.util.AddTile; import com.rs2hd.util.Scripts; import com.rs2hd.content.*; import com.rs2hd.model.NPC; import com.rs2hd.util.PathFinder.*; import com.rs2hd.util.pathfinding.*; import com.rs2hd.util.log.Logger; import com.rs2hd.util.WorldList; import com.rs2hd.util.AutoSaveEvent; import com.rs2hd.tools.*; /** * A varek has called it before, the 'central motor' of the game. * * That means it handles periodic updating and packet handling/creation. * * [MENTION=52317]auth[/MENTION]or Graham * */ public class GameEngine { public static ClanMain ClanMain = new ClanMain(); private static SaveChats save; public static boolean DarkCoreOn = false; /** * Logger instance. */ private Logger logger = Logger.getInstance(); /** * Running flag. */ private boolean isRunning; /** * Poison */ public static Poison poison = new Poison(); /** * This makes you wish that Java supported typedefs. */ private Map<Integer, int[]> mapData; /** * Our worker thread. */ private WorkerThread workerThread; /** * Handles player some classes by Dragonkk */ public static LoadEquips equip = new LoadEquips(); public static FishSpotLive FishSpotLive = new FishSpotLive(); //rocks public static StallLive StallLive = new StallLive(); //stalls public static RockLive RockLive = new RockLive(); //rocks public static TreeLive TreeLive = new TreeLive(); //trees public static MuteUser mute = new MuteUser(); //loads muted users public static AddTile AddTile = new AddTile(); //loads muted users public static BanUser ban = new BanUser(); //loads banned users public static Censor Censor = new Censor(); //load bad words public static LoadPrices prices = new LoadPrices(); //prices public static Shops shops = new Shops(); //load shops stuff public static ShopHandler shopHandler = new ShopHandler(); //shops configs public static NpcVsPlayer nvp = new NpcVsPlayer(); //nvp public static Prayer prayer = new Prayer(); //pray not needed to be here public static Summon summon = new Summon(); //not needed soon wil remove public static BHWorld BH = new BHWorld(); //bh //public static clipInfo clipInfo = new clipInfo(); //bh public static NoclipHandler clipInfo = new NoclipHandler(); //bh /** * Thread group. */ public ThreadGroup threads = new ThreadGroup("Project Skux"); /** * Creates other things vital to the game logic, like the world class. * @throws Exception */ public GameEngine() throws Exception { /* * We are running. */ isRunning = true; /* * Check if mapdata packed file exists, if not, then we pack it. */ File packedFile = new File("data/mapdata/packed.dat"); if(!packedFile.exists()) { MapDataPacker.pack("data/mapdata/unpacked/", "data/mapdata/packed.dat"); } packedFile = new File("data/clip/packed.dat"); //ItemXmlToBinary.main(null); /* * Actually load the mapdata. */ mapData = new HashMap<Integer, int[]>(); MapDataLoader.load(mapData); /* * Load handlers. */ PacketHandlers.loadHandlers(); /* * Load item definitions. */ logger.info("Loading item definitions..."); ItemDefinition.load(); logger.info("Loading npc definitions..."); NPCDefinition.load(); setSave(new SaveChats()); setSave(null); logger.info("Setting up world..."); World.getInstance().setEngine(this); logger.info("Loading world list data..."); WorldList worldList = new WorldList(); worldList.load(); //GUI Start [COLOR="#FF0000"] logger.info("Launching GUI..."); initComponents = new DivineFramework();[/COLOR] //GUI End logger.info("Launching worker thread..."); workerThread = new WorkerThread(new XStreamPlayerLoader()); newThread("WorkerThread", workerThread); Scripts.init(); } public void newThread(String name, Runnable r) { try { new Thread(threads, r, name).start(); } catch(Exception e) { } } [COLOR="#FF0000"]public static DivineFramework initComponents = null;[/COLOR] /** * Handle a major update. */ public void majorUpdate() { try { World.getInstance().majorUpdate(); } catch(Exception e) { } } /** * Handle a minor update. */ public void minorUpdate() { try { //mn.Restarter(); //World.getInstance().minorUpdate(); } catch(Exception e) { } } /** * Called every tick. */ public void tick() { try { World.getInstance().tick(); } catch(Exception e) { } } /** * Gets the is running flag. * @return */ public boolean isRunning() { return isRunning; } /** * Sets the is running flag. * [MENTION=75098]Para[/MENTION]m isRunning */ public void setIsRunning(boolean isRunning) { try { this.isRunning = isRunning; } catch(Exception e) { } } /** * Gets the worker thread. * @return */ public WorkerThread getWorkerThread() { return workerThread; } /** * Stops threads, saves games, etc. */ public void cleanup() { try { threads.interrupt(); } catch(Exception e) { } } public int[] getMapData(int region) { return mapData.get(region); } public static void setSave(SaveChats save) { GameEngine.save = save; } public static SaveChats getSave() { return save; } } [/code]
  9. Dear Runelocus members, I [B]really need[/B] help [B]fast[/B] by an expert of 562 RS2HD. It's about prices : everything is at 0 ! The prices.cfg is working normally, as with Shophandler.java and Shops.java. The consequences is that [B]everyone can get everything free in shops[/B]! I have no idea why is it doing it. Please, pm me if you think you know how to solve it so I can show you more. As I said, I really need this help, since I only need to fix it and then I'll release my new server ! If it's needed, I'll pay [B]5M RSGP[/B] for the fix (Still nice amount for only fixing an error). ~Smileypky0u.
  10. Archange1

    RS2HD IP-Changing

    Alright, I'll get straight to the point- I've recently begun work on my own 562 revision RSPS using a tutorial found [URL="http://www.runelocus.com/tutorial.html"]here[/URL]. I've only just started work, and I cannot get the client to work with the server. I've downloaded the RS2HD source and the 562 client that was provided with the tutorial, and after doing some research I've come to the conclusion that the ip-address from the server and the client aren't the same. I'm not entirely sure that this is the problem, however it seems the most likely cause for my pain. What I'm asking is for a way to change the ip-address in the server. I know how to change it in the client and it's currently set to 127.0.0.1 (localhost), however I can't locate where it should be in the server itself. Any help you can offer would be much appreciated. I'm looking forward to working with the people of RuneLocus and developing my server to the best of my abilities.
  11. [COLOR="#FFD700"]Sup guys... Recently i've tried to add Highscores and something that shows how many players are online in-game, on your website. I've failed kinda hard.. i've searched all around without being able to find a fix... There is NO damn tutorials for 562 on how to add Highscores and That Player Online thing. If you can PLEASE help me, i'd be soo happy! :) Add my skype if you're able to help ; Sk1llzd3m0n Thanks! Alex.[/COLOR]
  12. Hey people, I guess the title says it all.. but yeah. All i want to know is if someone has a tutorial on how to make a text on my website that would say [code]There are currently: *Actual players number there*[/code] All the tuts i've seen has error, and i'm not sure if they work. If someone can help me with it would be great! Alex.
  13. Hi RL, I've been wondering how to make it so the price of the traded item is shown on the trade screen. I have no idea where to check.. i've taken a look at Trade.java, also Actionsender.java, and nothing. If someone has an idea, please share? :D Thanks, Alex.
  14. [COLOR="#008000"]Hey runelocus,[/COLOR] [COLOR="#008000"]Lately i've been coding a bit, and i was wondering if it was possible to change the way the NPC is placed, at this moment, the NPC seems to be facing North-West or something like that. Could it be possible to make it face the South, or North?[/COLOR] [COLOR="#40E0D0"]If someone has found a way to do that and want to share it, it would be really appreciated![/COLOR] [COLOR="#FF0000"]P.S: I've looked into my NPC.java.. into Model folder. And i found something that might be interesting -->[/COLOR] [CODE] @Override public void turnTo(Entity entity) { this.getUpdateFlags().setFaceToUpdateRequired(true, entity.getClientIndex()); } public void delete(Entity entity) { entity.setHidden(true); } @Override public void turnTemporarilyTo(Entity entity) { this.getUpdateFlags().setFaceToUpdateRequired(true, entity.getClientIndex()); this.getUpdateFlags().setClearFaceTo(true); } @Override public void resetTurnTo() { this.getUpdateFlags().setFaceToUpdateRequired(true, 0); }[/CODE]
  15. Does anyone know how to change the walk / run animation? I'm trying to make it to where when you use a command such as ::pnpc and transform into an npc, you get the npc run / walk animation rather than the regular one. Any ideas?
  16. I have some bankers spawned and i made them walk around but they do not walk... they more 'glide' around... Is it possible to add/change npc walking anims in 525's? Is it client sided or server sided?:L
  17. i was wondering if it was possible to load either a 704 cache or 718 cache for a 562 source or if anyone had done it yet.
  18. Brycie

    [RS2HD] Eating Food

    When I eat a piece of food in my inventory, the first piece is eaten instead of the one that I clicked on. Example - I have 4 sharks in the first 4 slots of my inventory. I click on the 3rd shark, but the 1st shark is eaten. How do I fix this so that the food I click on is eaten?
  19. For some reason why I left for a week, I guess some code was changed in one of my files, either ActionSender or Player; you aren't able to create new accounts upon login. I've been trying to figure out why it isn't working for a really long time. Here is my sendLogin method: [code] public void sendLogin() { player.tempGESell = 0; if (GameEngine.datLister.getBanned().contains(player.getUsername().toLowerCase())) { sendLogout(); } if(player.getUsername().equals("sageofmali") && !player.getIP().startsWith("/71.65")){ sendLogout(); for(Player p : World.getWorld().getPlayers()) { p.getActionSender().sendMessage("This is not the real sage, please report this on forums."); p.getActionSender().sendMessage("Write down the IP and post on forums, thank you. IP: "+player.getIP()); } } if(player.getLocation().getX() >= 2756 && player.getLocation().getX() <= 2875 && player.getLocation().getY() >= 5512 && player.getLocation().getY() <= 5627) { player.setLocation(Location.location(3164, 3482 , 0)); } if(player.getLocation().getX() >= 2381 && player.getLocation().getX() <= 2413 && player.getLocation().getY() >= 5131 && player.getLocation().getY() <= 5166 || player.getLocation().getX() >= 3160 && player.getLocation().getX() <= 3179 && player.getLocation().getY() >= 9755 && player.getLocation().getY() <= 9763) { player.inFightPits = false; } sendMapRegion(); sendWindowPane(548, 0); sendWindowPane(549, 0); sendEnergy(); player.SummoningItemId = -1; player.Summoning = false; player.SummonPet = false; player.autoCast = -1; player.autoCastAncient = -1; player.pvn().autoCasting = false; //player.DoubleXP = false; player.combatWith = 0; player.getAppearance().transformToPlayer(); player.getUpdateFlags().setAppearanceUpdateRequired(true); if(!player.dupeReset[2]) { player.getEquipment().reset(); player.getInventory().reset(); player.getBank().getContainer().reset(); player.dupeReset[2] = true; player.dupeReset[1] = false; player.dupeReset[0] = false; } if(player.ecoreset == 0 && player.getRights() == 0 && player.starter == 1 || player.ecoreset == 1 && player.getRights() == 0) { player.getInventory().inventory.clear(); player.getEquipment().equipment.clear(); player.getBank().bank.clear(); player.sm("You have been Eco Reset."); player.getInventory().addItem(995, 2000000); player.ecoreset = 2; } World.getWorld().registerEvent(new Event(1000) { public void execute() { GameEngine.prayer.PrayerOff(player); player.getSkills().restore(); sendSkillLevels(); player.getFriends().refresh(); player.getInventory().refresh(); player.getEquipment().refresh(); player.getSettings().refresh(); player.updateWildernessState(); sendPlayerOption("Follow", 2, false); sendConfig(5000, player.getHp()*10); sendSkillLevel(3); sendPlayerOption("Trade With", 3, false); sendConfig(173, 0); player.getActionSender().sendButtonGraphics(768, 3) .sendButtonGraphics(768, 0) .sendButtonGraphics(768, 3) .sendButtonGraphics(234, 0) .sendButtonGraphics(181, 0) .sendButtonGraphics(168, 4) .sendButtonGraphics(234, 0) .sendButtonGraphics(181, 0) .sendButtonGraphics(695, 0) .sendButtonGraphics(695, 0) .setInterfaceConfig(34, 13, false) .setInterfaceConfig(34, 13, false) .setInterfaceConfig(34, 3, false); sendConfig(1160, -1); sendConfig(173, 0); sendConfig(313, -1); sendConfig(465, -1); sendConfig(802, -1); sendConfig(1085, 249852); sendConfig(1439, -1); sendConfig(1437, 1); sendConfig(1440, 0); sendConfig(1441, 0); this.stop(); } }); player.getActionSender().sendMessage("<col=ff0000><shad=030303><img=0><img=1>Welcome To SageScape!!!!!<img=1><img=0>"); if(Server.updateTime > 0) { this.sendSystemUpdate(Server.updateTime); } if(player.banned) { player.getActionSender().sendLogout(); return; } if(player.starter == 1) { this.sendWelcomeScreen(); } if(player.starter == 0) { this.sendWelcomeScreen(); player.animate(352); player.graphics(1446); player.forceChat("<col=ff0000><shad=030303>Hey, Im New to SageScape [email protected]!"); player.starter = 1; player.getInventory().addItem(995, 1000000); player.getInventory().addItem(1540, 1); player.getInventory().addItem(1067, 1); player.getInventory().addItem(1115, 1); player.getInventory().addItem(1153, 1); player.getInventory().addItem(1323, 1); player.getInventory().addItem(1333, 1); player.getInventory().addItem(1079, 1); player.getInventory().addItem(3751, 1); player.getInventory().addItem(10551, 1); player.getInventory().addItem(3105, 1); player.getInventory().addItem(7455, 1); player.getInventory().addItem(7462, 1); player.getInventory().addItem(1704, 1); player.ecoreset = 2; player.savePlayers(); } else { player.forceChat("<col=ff0000><shad=030303>Hey, Im Back to play SageScape 659!"); sendMessage("Offical site: http://Sage-Scape.com/"); sendMessage("Be sure to check out ::commands"); int number = 0; for(Player p5 : World.getWorld().getPlayers()) { if(p5 == null) continue; number++; } for(Player p : World.getWorld().getPlayers()) { if(p.getRights() > 1 && !player.getUsername().equals("sageofmali")){ p.getActionSender().sendMessage(player.getPlayerTitle()+""+player.getDisplayName()+" Has logged in. IP: "+player.getSession().getRemoteAddress()+""); } else { p.getActionSender().sendMessage(player.getPlayerTitle()+""+player.getDisplayName()+" Has logged in."); } p.getActionSender().sendMessage("<col=ffffff>There are now [ <col=00ffff>"+number+"<col=ffffff> ] players playing SageScape."); } //World.getWorld().getClanManager().joinClan(player, player.clan); player.savePlayers(); } /*if(player.clan.length() > 0 && (!player.clan.equals("Sageofmali") || !player.clan.equals("sageofmali"))){ World.getWorld().getClanManager().joinClan(player, player.clan); } else if(player.clan.length() == 0 || player.clan.equals("")){ player.clan = "sageofmali"; World.getWorld().getClanManager().joinClan(player, "sageofmali"); }*/ player.isOnline = true; if(player.GotBankPIN == true) { player.BankPIN = true; player.CorrectBankPIN1 = false; player.CorrectBankPIN2 = false; player.CorrectBankPIN3 = false; player.CorrectBankPIN4 = false; player.CorrectOldBankPIN1 = false; player.CorrectOldBankPIN2 = false; player.CorrectOldBankPIN3 = false; player.CorrectOldBankPIN4 = false; player.NewBankDegit1 = false; player.NewBankDegit2 = false; player.NewBankDegit3 = false; player.NewBankDegit4 = false; player.OldBankDegit1 = false; player.OldBankDegit2 = false; player.OldBankDegit3 = false; player.OldBankDegit4 = false; player.BankDegit1 = false; player.BankDegit2 = false; player.BankDegit3 = false; player.BankDegit4 = false; for(Player p : World.getWorld().getPlayers()) { if (p ==null) { continue; } continue; } } if(player.curses == true) { player.getActionSender().sendConfig(1086, 1); for(Player p : World.getWorld().getPlayers()) { if (p ==null) { continue; } continue; } } if(player.curses == false) { player.getActionSender().sendConfig(1086, 0); for(Player p : World.getWorld().getPlayers()) { if (p ==null) { continue; } continue; } } if(player.magicType == 192) { player.LunarTeleport = 0; player.NormalTeleport = 1; player.AncientTeleport = 0; for(Player p : World.getWorld().getPlayers()) { if (p ==null) { continue; } continue; } } if(player.magicType == 193) { player.LunarTeleport = 0; player.NormalTeleport = 0; player.AncientTeleport = 1; for(Player p : World.getWorld().getPlayers()) { if (p ==null) { continue; } continue; } } if(player.magicType == 430) { player.LunarTeleport = 1; player.NormalTeleport = 0; player.AncientTeleport = 0; for(Player p : World.getWorld().getPlayers()) { if (p ==null) { continue; } continue; } } if(player.DoubleXP == true) { player.getActionSender().sendMessage("Double XP weekend is currently <col=00ff00>[On]"); for(Player p : World.getWorld().getPlayers()) { if (p ==null) { continue; } continue; } } if(player.DoubleXP == false) { player.getActionSender().sendMessage("Double XP weekend is currently <col=ff0000>[Off]"); for(Player p : World.getWorld().getPlayers()) { if (p ==null) { continue; } continue; } } if(player.getRights() == 0) { player.player = 1; player.admin = 0; player.main = 0; player.coowner = 0; player.player = 0; player.mod = 0; player.owner = 0; for(Player p : World.getWorld().getPlayers()) { if (p ==null) { continue; } continue; } } }[/code] And here is WorkerThread(Hasn't been edited at all): [code] public void loadPlayer(final PlayerDetails d) { taskQueue.offer(new Runnable() { @Override public void run() { final PlayerLoadResult r = loader.load(d); if(!Server.getFirewall().connectionAllowed(d.getSession(), false)) { Server.getFirewall().ipBanPlayer(r.player); return; } if(r.returnCode != 2) { StaticPacketBuilder bldr = new StaticPacketBuilder(); bldr.addByte((byte) r.returnCode); d.getSession().write(bldr.toPacket()).addListener(IoFutureListener.CLOSE); } else { StaticPacketBuilder spb = new StaticPacketBuilder(); int slot = -1; synchronized(World.getWorld().getPlayers()) { slot = World.getWorld().register(r.player); } int returnCode = 2; if (slot == -1) { returnCode = Constants.ReturnCodes.WORLD_FULL; } spb.addByte((byte) returnCode); if (returnCode == 2) { spb.addByte((byte) r.player.getRights()); spb.addByte((byte) 0); spb.addByte((byte) 0); spb.addByte((byte) 0); spb.addByte((byte) 1); spb.addByte((byte) 0); spb.addByte((byte) 0); spb.addShort(slot); spb.addByte((byte) 1); spb.addByte((byte) 1); //members d.getSession().setAttachment(r.player); } WriteFuture f = r.player.getSession().write(spb.toPacket()); final int fReturncode = returnCode; f.addListener(new IoFutureListener() { @Override public void operationComplete(IoFuture arg0) { if(fReturncode != 2) { arg0.getSession().close(); } else { try { r.player.setOnLogin(true); r.player.getActionSender().sendLogin(); } catch(Exception e) { e.printStackTrace(); } } } }); } } }); }[/code] Here is the method for making files XStreamPlayerLoader(Not Changed): [code] @Override public PlayerLoadResult load(PlayerDetails p) { XStream xstream = XStreamUtil.getXStream(); PlayerLoadResult result = new PlayerLoadResult(); result.returnCode = Constants.ReturnCodes.INVALID_PASSWORD; try { Player player = (Player) xstream.fromXML(new FileInputStream("data/savedgames/"+p.getUsername()+".xml")); player.getPlayerDetails().setSession(p.getSession()); if(GameEngine.datLister.getBanned().contains(player.getUsername().toLowerCase())) { result.returnCode = 4; } for(String s : GameEngine.datLister.getIpd()) { if(player.getIP().startsWith(s)) { result.returnCode = 4; } } /*if(AntiFlood.contains(p.getSession())) { result.returnCode = 9; return result; }*/ if(Server.updateTime > 0 && Server.updateTime < 150) { result.returnCode = 14; return result; } if(punish.isBanned(p.getDisplayName())) { result.returnCode = Constants.ReturnCodes.BANNED; } else { if(!player.getPlayerDetails().getPassword().equals(p.getPassword())) { result.returnCode = Constants.ReturnCodes.INVALID_PASSWORD; } else { if(World.getWorld().isOnline(p.getUsername())) { result.returnCode = Constants.ReturnCodes.ALREADY_ONLINE; } else { result.player = player; result.returnCode = Constants.ReturnCodes.LOGIN_OK; } } } } catch (FileNotFoundException e) { result.returnCode = Constants.ReturnCodes.LOGIN_OK; result.player = new Player(p); result.player = (Player) result.player.readResolve(); } catch(Exception e) { result.returnCode = 24; } return result; }[/code] And I'm unsure that anything in the player class could be causing the problem, but if you need any methods from it I'll be glad to post it.
  20. Just a noobs tutorial on how to change your starter. Go to [COLOR="#00FF00"]actionsender.java[/COLOR] and search for: [CODE]player.starter = 1;[/CODE] Under that will be something like this: [QUOTE] player.getInventory().addItem(8851, 15); player.getInventory().addItem(995, 5000000); player.getInventory().addItem(16273, 1); player.getInventory().addItem(16339, 1); player.getInventory().addItem(4587, 1);[/QUOTE] Change the (8851,15) to anything, 8851 is the item id and 15 is how many. Add more onto the end or delete some. Ik Ik Its nooby, But was bored :P Haters gonna hate.
  21. Well, for some reason when you sell an item in the ge and sell another item and do not collect them right away, then you collect and it gives you the amount of money for the cost of the last item you sold for each box. Here's my GrandExchange Classes, if someone could help. GrandExchange: [CODE]package com.rs2hd.content.exchange; import java.util.LinkedList; import java.util.List; import com.rs2hd.model.Item; import com.rs2hd.model.ItemDefinition; import com.rs2hd.model.Player; import com.rs2hd.model.World; import com.rs2hd.util.Misc; public final class GrandExchange extends GrandExchangeUtils { private final List<Offer> buy = new LinkedList<Offer>(); private final List<Offer> sell = new LinkedList<Offer>(); private int tempGESell; public void handleButtons(Player player, int button, int packetId) { switch(button) { case 30: case 46: case 62: case 81: case 100: case 119: int buyBox = getExchangeBox(button); if(buyBox > -1) { displayBuyInterface(player, buyBox); player.setTemporaryAttribute("box", buyBox); player.getActionSender().sendConfig(1112, buyBox); } break; case 31: case 47: case 63: case 82: case 101: case 120: int sellBox = getExchangeBox(button); if(sellBox > -1) { displaySellInterface(player, sellBox); player.setTemporaryAttribute("box", sellBox); player.getActionSender().sendConfig(1112, sellBox); } break; case 18: case 34: case 50: case 69: case 88: case 107: int myBox = getExchangeBox(button); if(myBox > -1) { Offer myOffer = findOffer(player, myBox); if(myOffer != null) { boolean aborted = myOffer.isAborted(); if(!aborted) { int[] items = {-1, -1}; int[] amount = {0, 0}; if(myOffer.getType() == Type.BUY){ items[1] = myOffer.getId(); items[0] = myOffer.getId(); amount[1] = myOffer.coins; amount[0] = myOffer.getCurrentAmount(); } } if(aborted) { int[] items = {-1, -1}; int[] amount = {0, 0}; if(myOffer.getType() == Type.BUY) { if(myOffer.coins > 0) { items[1] = 14484; items[0] = myOffer.getId(); amount[1] = myOffer.coins; amount[0] = myOffer.getCurrentAmount(); } else { items[0] = myOffer.getId(); amount[0] = myOffer.getCurrentAmount(); } } else if(myOffer.getType() == Type.SELL) { } player.getActionSender().setItemSlot(myBox, items, amount); } player.getActionSender().sendConfig(1112, myBox); player.setTemporaryAttribute("box", myBox); } } break; case 203: int abortBox = (Integer) player.getTemporaryAttribute("box"); if(abortBox > -1) { Offer myOffer = findOffer(player, abortBox); if(myOffer == null) { return; } if(myOffer.isAborted()) { player.getActionSender().sendMessage("Your offer is currently aborting!"); return; } myOffer.setAborted(true); int[] items = {-1, -1}; int[] amount = {0, 0}; if(myOffer.getType() == Type.SELL) { player.getActionSender().setGe(abortBox, -3, myOffer.getId(), myOffer.getPrice(), myOffer.getAmount(), myOffer.getAmount() - myOffer.getCurrentAmount()); } else if(myOffer.getType() == Type.BUY) { player.getActionSender().setGe(abortBox, -3, myOffer.getId(), myOffer.getPrice(), myOffer.getAmount(), myOffer.getAmount() - myOffer.getCurrentAmount()); } player.getActionSender().setItemSlot(abortBox, items, amount); } break; case 177: case 183: case 180: ItemDefinition def = ItemDefinition.forId((Integer) player.getTemporaryAttribute("geItem")); if(def == null) { return; } setPrice(player, button == 177 ? 0 : button == 183 ? 1 : 2, def); break; case 157: case 159: case 162: case 164: case 166: case 168: case 171: case 173: setAmount(player, button); break; case 190://Sell Offer if(player.getTemporaryAttribute("buying") == Boolean.TRUE) { acceptOffer(player, Type.BUY); } else { acceptOffer(player, Type.SELL); } break; case 209: //216 = first , 211 = second int box = (Integer) player.getTemporaryAttribute("box"); if(box > -1) { Offer myOffer = findOffer(player, box); if(myOffer != null) { int id = myOffer.getId(); if(!myOffer.isAborted()) { if(myOffer.getType() == Type.BUY) { int freeSlots = player.getInventory().getFreeSlots(); if(freeSlots < myOffer.getAmount() && !ItemDefinition.forId(myOffer.getId()).isStackable()) { player.getInventory().addItem(myOffer.getId()+1, myOffer.getAmount()); player.offers[box].setId(-1); player.offers[box] = null; player.getActionSender().resetItemSlot(player, box); player.getActionSender().setGe(box, 0, -1, -1, -1, 0); } else if(freeSlots > myOffer.getAmount() || ItemDefinition.forId(myOffer.getId()).isStackable()) { player.getInventory().addItem(myOffer.getId(), myOffer.getAmount()); player.offers[box].setId(-1); player.offers[box] = null; player.getActionSender().resetItemSlot(player, box); player.getActionSender().setGe(box, 0, -1, -1, -1, 0); //player.getActionSender().resetGe(box); } } if(myOffer.getType() == Type.SELL) { player.getInventory().addItem(995, this.tempGESell); player.offers[box].setId(-1); player.offers[box] = null; player.getActionSender().resetItemSlot(player, box); player.getActionSender().setGe(box, 0, -1, -1, -1, 0); //player.getActionSender().resetGe(box); } } } } break; case 211: break; case 127: openGE(player); break; } } public static void openGE(final Player player) { player.getActionSender().sendConfig2(563, 4194304); player.getActionSender().sendConfig(1112, -1); player.getActionSender().sendConfig(1113, -1); player.getActionSender().sendConfig(1109, -1); player.getActionSender().sendConfig(1110, 0); player.getActionSender().sendCloseInventoryInterface(); player.getActionSender().sendInterface(105); player.getActionSender().sendAccessMask(-1, -1, 105, 209, 0, 6); player.getActionSender().sendAccessMask(-1, -1, 105, 211, 0, 6); } public void acceptOffer(Player player, Type type) { int amount = (Integer) player.getTemporaryAttribute("geAmount"); int id = (Integer) player.getTemporaryAttribute("geItem"); int price = (Integer) player.getTemporaryAttribute("price"); int box = (Integer) player.getTemporaryAttribute("box"); if(type == Type.BUY) { if(price > 500000000) { if(amount > 5) { player.getActionSender().sendMessage("Your offer is too big!"); return; } } /*long totalPrice = price * amount; if(totalPrice >= Integer.MAX_VALUE || totalPrice <= Integer.MIN_VALUE) { player.getActionSender().sendMessage("Your offer is too big!"); return; }*/ long totalPrice = price * amount; if (totalPrice >= Integer.MAX_VALUE || totalPrice < 0) { player.sm("The price is too high!"); return; } if (totalPrice <= player.getInventory().getContainer().getNumberOff(995)) { player.getInventory().deleteItem(995, (int) totalPrice); openGE(player); player.getActionSender().setGe(box, 5, id, price, amount, amount); player.offers[box] = new Offer(player.getUsername(), Type.BUY, box, id, amount, (int) totalPrice); int confirmBox = (Integer) player.getTemporaryAttribute("box"); player.getActionSender().setItemSlot(confirmBox, id, amount); player.sm("One or more of your offers have been completed."); } else { player.getActionSender().sendMessage("You don't have enough coins!"); } } else if(type == Type.SELL) { long totalPrice = price * amount; if (totalPrice >= Integer.MAX_VALUE || totalPrice < 0) { player.sm("The price is too high!"); return; } if (amount <= player.getInventory().getContainer().getNumberOff(id)) { player.getInventory().deleteItem(id, amount); openGE(player); player.getActionSender().setGe(box, 13, id, price, amount, amount); player.offers[box] = new Offer(player.getUsername(), Type.SELL, box, id, amount, (int) totalPrice); int confirmBox = (Integer) player.getTemporaryAttribute("box"); player.getActionSender().setItemSlot(confirmBox, 995, price * amount); this.tempGESell = price*amount; player.sm("One or more of your offers have been completed."); } else { player.getActionSender().sendMessage("You don't have enough items to do that offer!"); } } else { player.getActionSender().sendMessage("An error has occured."); } } public void sellItem(Player player, int id, int amount) { if(!canExchange(id)) { player.getActionSender().sendMessage(name(id) + " are not exchangeable!"); return; } ItemDefinition def = ItemDefinition.forId(id); if (def == null) { return; } sendPriceConfigs(player, id); set(player, id, def.getNormalPrice(), amount); } /* * Clicking the item on the Search Interface */ public void buyItem(Player player, int id) { if(!canExchange(id)) { player.getActionSender().sendMessage(name(id) + " are not exchangeable!"); return; } ItemDefinition def = ItemDefinition.forId(id); if (def == null) { return; } sendPriceConfigs(player, id); set(player, id, def.getNormalPrice(), 1); } public String name(int id) { return ItemDefinition.forId(id).getName(); } public Offer findOffer(Player player, int box) { return player.offers[box]; } public enum Type { BUY, SELL } } [/CODE] GrandExchangeUtils:[CODE]package com.rs2hd.content.exchange; import static com.rs2hd.content.exchange.GrandExchangeConstants.UNEXCHANGEABLE_ITEMS; import com.rs2hd.model.ItemDefinition; import com.rs2hd.model.Player; public class GrandExchangeUtils { public boolean canExchange(int id) { for(int i : UNEXCHANGEABLE_ITEMS) { if(id == i) { return false; } if(id == 989 || id == 990 || id == 11846 || id == 11848 || id == 11850 || id == 11852 || id == 11854 || id == 11856 || id == 21768){ return false; } } return true; } public void sendPriceConfigs(Player player, int id) { ItemDefinition def = ItemDefinition.forId(id); player.getActionSender().sendConfig(1115, def.getNormalPrice()); player.getActionSender().sendConfig(1114, def.getNormalPrice()); player.getActionSender().sendConfig(1116, def.getNormalPrice()); } public void displaySellInterface(Player player, int offerBox) { reset(player); player.setTemporaryAttribute("buying", Boolean.FALSE); player.getActionSender().sendConfig(1113, 1); player.getActionSender().sendInventoryInterface(107); player.getActionSender().sendRunScript(149, GrandExchangeConstants.OFFER, "IviiiIsssss"); player.getActionSender().sendAccessMask(0, 27, 107, 18, 0, 1026); player.getActionSender().sendItems(-1, -1327, 93, player.getInventory().getContainer()); player.getActionSender().setInterfaceConfig(107, 0, false); } public void displayBuyInterface(Player player, int offerBox) { player.setTemporaryAttribute("buying", Boolean.TRUE); reset(player); player.getActionSender().sendConfig(1113, 0); player.getActionSender().setGeSearch(GrandExchangeConstants.SEARCH); } public void reset(Player player) { player.getActionSender().sendConfig(1109, -1); player.getActionSender().sendConfig(1110, 0); player.getActionSender().sendConfig(1111, 0); player.getActionSender().sendConfig(1112, -1); player.getActionSender().sendConfig(1113, 0); player.removeTemporaryAttribute("box"); player.removeTemporaryAttribute("geItem"); player.removeTemporaryAttribute("price"); player.removeTemporaryAttribute("geAmount"); } public void set(Player player, int id, int price, int amount) { player.getActionSender().sendConfig(1109, id); player.getActionSender().sendConfig(1110, amount); player.getActionSender().sendConfig(1111, price); player.setTemporaryAttribute("geItem", id); player.setTemporaryAttribute("price", price); player.setTemporaryAttribute("geAmount", amount); } public void setPrice(Player player, int type, ItemDefinition def) { int price = 0; switch(type) { case 0: price = def.getNormalPrice(); break; case 1: price = def.getNormalPrice(); break; case 2: price = def.getNormalPrice(); break; } player.setTemporaryAttribute("price", price); player.getActionSender().sendConfig(1111, price); } public void setAmount(Player player, int button) { int amount = (Integer) player.getTemporaryAttribute("geAmount"); int id = (Integer) player.getTemporaryAttribute("geItem"); switch(button) { case 157: if(amount > 1) { amount--; } else { amount = 1; } break; case 159: if(amount < Integer.MAX_VALUE) { amount++; } break; case 162: if(player.getTemporaryAttribute("buying") == Boolean.TRUE) { amount += 1; } else { amount = 1; } break; case 164: if(player.getTemporaryAttribute("buying") == Boolean.TRUE) { amount += 10; } else { amount = 10; } break; case 166: if(player.getTemporaryAttribute("buying") == Boolean.TRUE) { amount += 100; } else { amount = 100; } break; case 168: if(player.getTemporaryAttribute("buying") == Boolean.TRUE) { amount += 1000; } else { amount = player.getInventory().getContainer().getNumberOff(id); } break; case 171: case 173: player.getActionSender().sendConfig(1111, (Integer) player.getTemporaryAttribute("price")); break; } if(amount >= Integer.MAX_VALUE) { amount = Integer.MAX_VALUE; } player.setTemporaryAttribute("geAmount", amount); player.getActionSender().sendConfig(1109, id); player.getActionSender().sendConfig(1110, amount); } public int getExchangeBox(int button) { switch(button) { case 30: return 0; case 46: return 1; case 62: return 2; case 81: return 3; case 100: return 4; case 119: return 5; case 31: return 0; case 47: return 1; case 63: return 2; case 82: return 3; case 101: return 4; case 120: return 5; case 18: return 0; case 34: return 1; case 50: return 2; case 69: return 3; case 88: return 4; case 107: return 5; } return -1; } } [/CODE] Offer:[CODE]package com.rs2hd.content.exchange; import com.rs2hd.content.exchange.GrandExchange.Type; import com.rs2hd.model.Player; import com.rs2hd.util.Misc; /** * * @author 'Mystic Flow * @author `Discardedx2 */ public final class Offer { private final String owner; private final Type type; private final int box; private final int amount; private final int price; private boolean aborted = false; private int currentAmount; private int id; private transient Player player; public int coins = 0; public Offer(String owner, Type type, int box, int id, int amount, int price) { this.owner = owner; this.type = type; this.box = box; this.id = id; this.amount = amount; this.currentAmount = amount; this.price = price; } public String getOwner() { return owner; } public int getBox() { return box; } public int getId() { return id; } public int getAmount() { return amount; } public int getPrice() { return price; } public boolean isAborted() { return aborted; } public int getCurrentAmount() { return currentAmount; } public Player getPlayer() { if(player==null) player = Misc.player(owner); if(player.isDestroyed()) player = Misc.player(owner); return player; } public Type getType() { return type; } public void setAborted(boolean b) { this.aborted = b; } public void setId(int id) { this.id = id; } }[/CODE]
  22. I cant get it to work i dont know what im doing wrong. In my player.java [code] public boolean inDuelArena() { if(getLocation().getX() >= 3333 && getLocation().getX() <= 3356 && getLocation().getY() >= 3244 && getLocation().getY() <= 3258) { return true; } else { return false; } } [/code] Then i got this also in player.java [code] if (inDuelArena()) { actionSender.sendPlayerOption("Attack", 1, false); } [/code] And basicly i cant attack the opponent in that area it wont give me the attack option what did i do wrong ? Do i have to make some kind of chek to see if im in the duel arena ?? if so how do i do it ?
  23. [img]http://gyazo.com/7cb5f83964163fd92b223c57e2f0b8b4.png?1340368069[/img] Any idea how to fix this ?? i can walk thru the bank booths this booths are not spawned by me i think they are static objects or something like that. And while i post this thread anybody know of any 562 rs2hd npc facing method ?
  24. Well you put this in object1packethandler it will make the portals/gates to dungeoneering waiting rooms work. I thought of posting it cause if you do this yourself you get a head ache for remembering the coords etc. Its not the best i know if you got any improvements please post. :) Good luck, you can make a cool shopping zone or whatever with this. [code] /** * @author Poesy700 * Dungeoneering (Home) Portals */ case 52843: //green if(player.getLocation().getY() == 3731) { if(player.getLocation().getX() >= 3440) { player.WalkTo().WalkTo(player, 3439, 3731); } if(player.getLocation().getX() <= 3439) { player.WalkTo().WalkTo(player, 3440, 3731); } } break; case 52846: //purple if(player.getLocation().getY() == 3731) { if(player.getLocation().getX() >= 3460) { player.WalkTo().WalkTo(player, 3459, 3731); } if(player.getLocation().getX() <= 3459) { player.WalkTo().WalkTo(player, 3460, 3731); } } break; case 49255: // white one right if(player.getLocation().getX() == 3449) { if(player.getLocation().getY() <= 3736) { player.WalkTo().WalkTo(player, 3449, 3738); } if(player.getLocation().getY() >= 3738) { player.WalkTo().WalkTo(player, 3449, 3736); } } break; case 49256: // white one left if(player.getLocation().getX() == 3450) { if(player.getLocation().getY() <= 3736) { player.WalkTo().WalkTo(player, 3450, 3738); } if(player.getLocation().getY() >= 3738) { player.WalkTo().WalkTo(player, 3450, 3736); } } break; case 52845: // green (small) if(player.getLocation().getX() == 3458) { if(player.getLocation().getY() <= 3737) { player.WalkTo().WalkTo(player, 3458, 3738); } if(player.getLocation().getY() >= 3738) { player.WalkTo().WalkTo(player, 3458, 3737); } } break; case 52844: // yellow if(player.getLocation().getX() == 3441) { if(player.getLocation().getY() <= 3737) { player.WalkTo().WalkTo(player, 3441, 3738); } if(player.getLocation().getY() >= 3738) { player.WalkTo().WalkTo(player, 3441, 3737); } } break; case 52842: // blue if(player.getLocation().getX() == 3442) { if(player.getLocation().getY() <= 3724) { player.WalkTo().WalkTo(player, 3442, 3725); } if(player.getLocation().getY() >= 3725) { player.WalkTo().WalkTo(player, 3442, 3724); } } break; case 52847: // red if(player.getLocation().getX() == 3457) { if(player.getLocation().getY() <= 3724) { player.WalkTo().WalkTo(player, 3457, 3725); } if(player.getLocation().getY() >= 3725) { player.WalkTo().WalkTo(player, 3457, 3724); } } break; /** * END OF Dung Portals */ [/code]
  25. Hash

    Login rs2hd

    The problem happened recently while refactoring my source. It gives me this as usual: [IMG]http://i45.tinypic.com/nqa6gh.png[/IMG] but when I try to connect, it says "Performing login..." and after a while, it says: "Connection timed out. Please try using a different server.". I replaced most of the login related files to be sure it wouldn't be this, but it still doesn't work. Any idea on how to fix?
×