Problems with hashmaps for a chat plugin

Discussion in 'Plugin Development' started by Phoenix901, Dec 15, 2012.

Thread Status:
Not open for further replies.
  1. Offline

    Phoenix901

    Heey folks.
    I'm currently trying to make a plugin which allow users to turn chat on and off however it doesnt really work for me.
    I'm using a hashmap to store people who don't want to hear chat and then checking the hashmap in my listener file to see if they are in it, and if they are, I blocking their message and all incoming to them.
    I seem to have a problem on line 15 which is my if statement

    This is my current code for my listener event method.
    Code:
        @EventHandler
        public void onPlayerChat(AsyncPlayerChatEvent event) {
            Player p = event.getPlayer();
         
            if(NationCraft.plugin.playerChat.containsKey(p)) {
                p.sendMessage(ChatColor.RED + "Your chat is disabled! To enable chat do /nationchat");
                event.setCancelled(true);
            } else {
                // continue code if the player wasn't found
            }
        }
    I'm amusing i'm trying to get the hashmap from the NationCraft class wrong whoever I just don't know how to do it any other way.
    This is the hashmap by the way.

    Code:
    public final HashMap<Player, ArrayList<Block>> playerChat = new HashMap<>();
    I'm sorry if i'm overlooking something obvious, I started learn Java a few days ago.
    Any help is much appreciated. Thanks!
     
  2. Offline

    tommycake50

    btw just a tip when a player leaves the server remove them from the hasmap.
    keeping an instance of a player when he leaves the game can(or so i believe) cause memory leaks.
    and have you registered the event?
     
  3. Offline

    Phoenix901

    Hi tommycake50.
    I'll try look into making the instance of the player and removing them from the hashmap.
    The event itself works fine and I do register it in the onEnable like this.

    Code:
    Bukkit.getPluginManager().registerEvents(new NationCraftListener(), this);
    I've tried to just send a message to a player when they say something which works just fine, its the if statement that is giving me an error.
     
  4. Offline

    tommycake50

    is there an error in the console?
     
  5. Offline

    Phoenix901


    There is, its looks like this.

    Code:
    2012-12-15 00:19:34 [SEVERE] Could not pass event AsyncPlayerChatEvent to NationCraft v1.0
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:341)
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:459)
        at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:908)
        at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:858)
        at net.minecraft.server.Packet3Chat.handle(Packet3Chat.java:44)
        at net.minecraft.server.NetworkManager.i(NetworkManager.java:208)
        at net.minecraft.server.NetworkManager.c(NetworkManager.java:344)
        at net.minecraft.server.NetworkReaderThread.run(SourceFile:93)
    Caused by: java.lang.NullPointerException
        at me.Phoenix901Live.nationcraft.NationCraftListener.onPlayerChat(NationCraftListener.java:15)
        at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:339)
        ... 9 more
     
  6. Offline

    tommycake50

    whats at line 15 of your listener?
    your if statement?
     
  7. Offline

    Phoenix901

    Yeah.
    The whole code looks like this right now.

    Code:
    package me.Phoenix901Live.nationcraft;
     
    import org.bukkit.ChatColor;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.AsyncPlayerChatEvent;
     
    class NationCraftListener implements Listener {
     
        @EventHandler
        public void onPlayerChat(AsyncPlayerChatEvent event) {
            Player p = event.getPlayer();
           
            if(NationCraft.plugin.playerChat.containsKey(p)) {
                p.sendMessage(ChatColor.RED + "Your chat is disabled! To enable chat do /nationchat");
                event.setCancelled(true);
            } else {
                // continue code if the player wasn't found
            }
        }
       
    }
     
  8. Offline

    tommycake50

    i cant see it immediately i dont do a lot of works with hashmaps,
    but try using an array or an arraylist.
     
  9. Offline

    Phoenix901


    I'm already using ArryaList.
    I create the hashmap in the NationCraft.java file which looks like this

    Code:
    public final HashMap<Player, ArrayList<Block>> playerChat = new HashMap<>();
     
  10. Offline

    tommycake50

    ik but i meant instead of the hasmap xD,
    its probably something really obvious that im not seeing tho. :/
     
  11. Offline

    Phoenix901

    Ohh, okay. I'll try that out and get back to you.
    Thanks btw for helping me out.

    I've tried with the Arrays and I can't seem to make it work with that either :[
    Any ideas of what else it could be?

    Anyone?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 30, 2016
  12. Offline

    fireblast709

    your code reeks of static. Don't use it if not neccesary :3
    Code:java
    1. package me.Phoenix901Live.naationcraft;
    2.  
    3. import org.bukkit.ChatColor;
    4. import org.bukkit.entity.Player;
    5. import org.bukkit.event.EventHandler;
    6. import org.bukkit.event.Listener;
    7. import org.bukkit.event.player.AsyncPlayerChatEvent;
    8.  
    9. class NationCraftListener implements Listener
    10. {
    11. private NationCraft plugin;
    12.  
    13. public NationCraftListener(NationCraft plugin)
    14. {
    15. this.plugin = plugin;
    16. }
    17.  
    18. @EventHandler
    19. public void onPlayerChat(AsyncPlayerChatEvent event) {
    20. Player p = event.getPlayer();
    21.  
    22. if(NationCraft.plugin.playerChat.containsKey(p)) {
    23. p.sendMessage(ChatColor.RED + "Your chat is disabled! To enable chat do /nationchat");
    24. event.setCancelled(true);
    25. } else {
    26. // continue code if the player wasn't found
    27. }
    28. }
    29. }

    Now you register your event as:
    Code:java
    1. Bukkit.getPluginManager().registerEvents(new NationCraftListener(this), this);
    in onEnable(). Also, keep thread-safety in mind, as AsyncPlayerChatEvent very often is ran in another thread
     
  13. Offline

    Phoenix901

    Hi fireblast709
    I tried to run your code and do the changes you told me to however I still get an error in the console when I speak. Using commands works just fine, its only when a player say something that it messes up.

    The error are as following.

    Code:
    [SEVERE] Could not pass event AsyncPlayerChatEvent to NationCraft v1.0
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:341)
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:459)
        at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:908)
        at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:858)
        at net.minecraft.server.Packet3Chat.handle(Packet3Chat.java:44)
        at net.minecraft.server.NetworkManager.i(NetworkManager.java:208)
        at net.minecraft.server.NetworkManager.c(NetworkManager.java:344)
        at net.minecraft.server.NetworkReaderThread.run(SourceFile:93)
    Caused by: java.lang.NullPointerException
        at me.Phoenix901Live.nationcraft.NationCraftListener.onPlayerChat(NationCraftListener.java:22)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:339)
        ... 9 more
    It looks like the if statement is still returning an error.
    Also, i'm sorry if I do any stupid mistakes, I literally started learning Java two days ago.
     
  14. Offline

    fireblast709

    forgot a few changes:
    Code:java
    1. if(plugin.playerChat.contains(p.getName()))

    Also, use a ArrayList<String> that stores playernames instead of a HashMap<Player, something>
     
  15. Offline

    Phoenix901

    Hi fireblast709
    I tried it out and is now getting a two errors.
    To make everything a bit easier, here is most of the code I use for the function.

    The whole of 'NationCraftListener.java'
    Code:
    package me.Phoenix901Live.nationcraft;
     
    import org.bukkit.ChatColor;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.AsyncPlayerChatEvent;
     
    class NationCraftListener implements Listener
    {
    private NationCraft plugin;
     
    public NationCraftListener(NationCraft plugin) {
    this.plugin = plugin;
    }
     
    @EventHandler
    public void onPlayerChat(AsyncPlayerChatEvent event) {
    Player p = event.getPlayer();
     
    if(this.plugin.playerChat.contains(p.getName())) {
    p.sendMessage(ChatColor.RED + "Your chat is disabled! To enable chat do /nationchat");
    event.setCancelled(true);
    } else {
    // continue code if the player wasn't found
    }
    }
    }
    How I create the array list and the player info.
    Code:
        public Player player;
        public ArrayList<String> playerChat;
    My function 'chatToggle' that should change the value of the array list.
    Code:
        protected void chatToggle() {
            if(this.playerChat.contains(this.player.getName())){
                //playerChat.remove(this.player);
                this.playerChat.remove(this.player.getName());
                this.player.sendMessage(ChatColor.GREEN+"You have Enabled NationCraft Chat!");
            } else {
                //playerChat.put(this.player, null);
                this.playerChat.add(this.player.getName());
                this.player.sendMessage(ChatColor.RED+"You have disabled NationChat!");
                this.player.sendMessage(ChatColor.AQUA+"You want it to be all silent! We understand!");
            }
        }
    The errors i'm getting are the following.

    Code:
    [SEVERE] Could not pass event AsyncPlayerChatEvent to NationCraft v1.0
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:341)
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:459)
        at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:908)
        at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:858)
        at net.minecraft.server.Packet3Chat.handle(Packet3Chat.java:44)
        at net.minecraft.server.NetworkManager.i(NetworkManager.java:208)
        at net.minecraft.server.NetworkManager.c(NetworkManager.java:344)
        at net.minecraft.server.NetworkReaderThread.run(SourceFile:93)
    Caused by: java.lang.NullPointerException
        at me.Phoenix901Live.nationcraft.NationCraftListener.onPlayerChat(NationCraftListener.java:21)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:339)
        ... 9 more
    This just point the the listener file and says the if statement is to blame.
    I get this error every time I say something.
    The 2nd error is.

    Code:
    [SEVERE] null
    org.bukkit.command.CommandException: Unhandled exception executing command 'nationchat' in plugin NationCraft v1.0
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46)
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:186)
        at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:502)
        at net.minecraft.server.NetServerHandler.handleCommand(NetServerHandler.java:985)
        at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:903)
        at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:858)
        at net.minecraft.server.Packet3Chat.handle(Packet3Chat.java:44)
        at net.minecraft.server.NetworkManager.b(NetworkManager.java:290)
        at net.minecraft.server.NetServerHandler.d(NetServerHandler.java:113)
        at net.minecraft.server.ServerConnection.b(SourceFile:39)
        at net.minecraft.server.DedicatedServerConnection.b(SourceFile:30)
        at net.minecraft.server.MinecraftServer.r(MinecraftServer.java:595)
        at net.minecraft.server.DedicatedServer.r(DedicatedServer.java:222)
        at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:493)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:426)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:856)
    Caused by: java.lang.NullPointerException
        at me.Phoenix901Live.nationcraft.NationCraft.chatToggle(NationCraft.java:90)
        at me.Phoenix901Live.nationcraft.NationCraft.onCommand(NationCraft.java:59)
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
        ... 15 more
    This just happen every time I try running the /nationchat command which should toggle the whole thing.
    If you have ideas why this isn't working please let me know, would love to get this working as soon as possible.
     
  16. Offline

    fireblast709

    for the second error:
    • remove the public Player player
    • check if(sender instanceof Player)
    • if that is true, cast sender to Player and use
    Code:java
    1. if(sender instanceof Player)
    2. {
    3. Player player = (Player)sender;
    4. // The rest of your code for the toggle
    5. }

    For the first error: initialize ArrayList<String> playerChat
    Code:java
    1. public void onEnable()
    2. {
    3. this.playerChat = new ArrayList<String>();
    4. // the rest of onEnable()
    5. }
     
  17. Offline

    Phoenix901


    Hey fireblast709
    I'm sorry to brother you again but a good friend of mine who know a bit more Java took a look at the code to try and fix it however its still not working.. I then tried to add the code you gave me and now noting is working.

    Here is just about all the code I got right now.

    NationCraft.java
    Code:java
    1. package me.Phoenix901Live.nationcraft;
    2.  
    3. import java.util.ArrayList;
    4. import java.util.HashMap;
    5. import java.util.logging.Level;
    6. import java.util.logging.Logger;
    7. import org.bukkit.Bukkit;
    8. import org.bukkit.ChatColor;
    9. import org.bukkit.block.Block;
    10. import org.bukkit.command.Command;
    11. import org.bukkit.command.CommandSender;
    12. import org.bukkit.entity.Player;
    13. import org.bukkit.plugin.PluginDescriptionFile;
    14. import org.bukkit.plugin.java.JavaPlugin;
    15.  
    16. public class NationCraft extends JavaPlugin {
    17.  
    18. public static final Logger logger = Logger.getLogger("Minecraft");
    19. public static NationCraft plugin;
    20. public Player player;
    21. public ArrayList<String> playerChat;
    22.  
    23. @Override
    24. public void onDisable() {
    25. PluginDescriptionFile pdfFile = this.getDescription();
    26. NationCraft.logger.log(Level.INFO, "{0} Has Been Disabled", pdfFile.getName());
    27. }
    28.  
    29. @Override
    30. public void onEnable() {
    31. PluginDescriptionFile pdfFile = this.getDescription();
    32. if (getServer().getPluginManager().getPlugin("Vault") == null) {
    33. NationCraft.logger.log(Level.INFO, "{0} Version {1} Has Been Disabled due to no Vault dependency found!", new Object[]{pdfFile.getName(), pdfFile.getVersion()});
    34. getServer().getPluginManager().disablePlugin(this);
    35. return;
    36. }
    37. saveDefaultConfig();
    38. Bukkit.getPluginManager().registerEvents(new NationCraftListener(this), this);
    39. playerChat = new ArrayList<String>();
    40. NationCraft.logger.log(Level.INFO, "{0} Version {1} Has Been Enabled", new Object[]{pdfFile.getName(), pdfFile.getVersion()});
    41. }
    42.  
    43. @Override
    44. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    45. if(sender instanceof Player){
    46. Player player = (Player) sender;
    47. }
    48.  
    49. if(commandLabel.equalsIgnoreCase("nationcraft") || commandLabel.equalsIgnoreCase("nation") || commandLabel.equalsIgnoreCase("nc")) {
    50. if(args.length == 0) {
    51. listCommands();
    52. } else if (args[0].equalsIgnoreCase("info")) {
    53. listPluginInformation();
    54. } else {
    55. plugin.player.sendMessage(ChatColor.DARK_RED+"Unknown command! Please do /nationcraft to see the list of commands you can use");
    56. }
    57. } else if (commandLabel.equalsIgnoreCase("nationchat")) {
    58. plugin.chatToggle();
    59. }
    60. return false;
    61. }
    62.  
    63. // Some unrelated methods goes here (listCommands(), listPluginInformation() )
    64.  
    65. protected void chatToggle() {
    66. if(plugin.playerChat.contains(plugin.player.getName())){
    67. //playerChat.remove(this.player);
    68. plugin.playerChat.remove(player.getName());
    69. plugin.player.sendMessage(ChatColor.GREEN+"You have Enabled NationCraft Chat!");
    70. } else {
    71. //playerChat.put(this.player, null);
    72. plugin.playerChat.add(player.getName());
    73. plugin.player.sendMessage(ChatColor.RED+"You have disabled NationChat!");
    74. plugin.player.sendMessage(ChatColor.AQUA+"You want it to be all silent! We understand!");
    75. }
    76. }
    77. }


    NationCraftListener.java
    Code:java
    1. package me.Phoenix901Live.nationcraft;
    2.  
    3. import org.bukkit.ChatColor;
    4. import org.bukkit.entity.Player;
    5. import org.bukkit.event.EventHandler;
    6. import org.bukkit.event.Listener;
    7. import org.bukkit.event.player.AsyncPlayerChatEvent;
    8.  
    9. class NationCraftListener implements Listener
    10. {
    11. private NationCraft plugin;
    12.  
    13. public NationCraftListener(NationCraft plugin) {
    14. this.plugin = plugin;
    15. }
    16.  
    17. @EventHandler
    18. public void onPlayerChat(AsyncPlayerChatEvent e) {
    19. Player p = e.getPlayer();
    20.  
    21. if(this.plugin.playerChat.contains(p.getName())) {
    22. p.sendMessage(ChatColor.RED + "Your chat is disabled! To enable chat do /nationchat");
    23. e.setMessage("");
    24. } else {
    25. // continue code if the player wasn't found
    26. }
    27. }
    28. }


    Sorry for the long reply and all the code, I just have no idea what to do.
    Also thank you for all the help so far.
     
  18. Offline

    fireblast709

    how many errors do you want from me?
    NationCraft.java
    Code:java
    1. package me.Phoenix901Live.nationcraft;
    2.  
    3. import java.util.ArrayList;
    4. import java.util.HashMap;
    5. import java.util.logging.Level;
    6. import java.util.logging.Logger;
    7. import org.bukkit.Bukkit;
    8. import org.bukkit.ChatColor;
    9. import org.bukkit.block.Block;
    10. import org.bukkit.command.Command;
    11. import org.bukkit.command.CommandSender;
    12. import org.bukkit.entity.Player;
    13. import org.bukkit.plugin.PluginDescriptionFile;
    14. import org.bukkit.plugin.java.JavaPlugin;
    15.  
    16. public class NationCraft extends JavaPlugin
    17. {
    18.  
    19. public final Logger logger = Logger.getLogger("Minecraft");
    20. public Player player;
    21. public ArrayList<String> playerChat;
    22.  
    23. @Override
    24. public void onDisable()
    25. {
    26. PluginDescriptionFile pdfFile = this.getDescription();
    27. logger.log(Level.INFO, "{0} Has Been Disabled", pdfFile.getName());
    28. }
    29.  
    30. @Override
    31. public void onEnable()
    32. {
    33. PluginDescriptionFile pdfFile = this.getDescription();
    34. if (getServer().getPluginManager().getPlugin("Vault") == null)
    35. {
    36. NationCraft.logger.log(Level.INFO, "{0} Version {1} Has Been Disabled due to no Vault dependency found!", new Object[]{pdfFile.getName(), pdfFile.getVersion()});
    37. getServer().getPluginManager().disablePlugin(this);
    38. return;
    39. }
    40. saveDefaultConfig();
    41. Bukkit.getPluginManager().registerEvents(new NationCraftListener(this), this);
    42. playerChat = new ArrayList<String>();
    43. logger.log(Level.INFO, "{0} Version {1} Has Been Enabled", new Object[]{pdfFile.getName(), pdfFile.getVersion()});
    44. }
    45.  
    46. @Override
    47. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args)
    48. {
    49. if(!(sender instanceof Player))
    50. {
    51. sender.sendMessage("This command is player-only");
    52. return true;
    53. }
    54.  
    55. Player player = (Player) sender;
    56.  
    57. if(commandLabel.equalsIgnoreCase("nationcraft") || commandLabel.equalsIgnoreCase("nation") || commandLabel.equalsIgnoreCase("nc"))
    58. {
    59. if(args.length == 0)
    60. {
    61. // Fix this command
    62. listCommands(player);
    63. }
    64. else if (args[0].equalsIgnoreCase("info"))
    65. {
    66. // Fix this command
    67. listPluginInformation(player);
    68. }
    69. else
    70. {
    71. player.sendMessage(ChatColor.DARK_RED+"Unknown command! Please do /nationcraft to see the list of commands you can use");
    72. }
    73. return true;
    74. }
    75. else if (commandLabel.equalsIgnoreCase("nationchat"))
    76. {
    77. chatToggle(sender);
    78. return true;
    79. }
    80. return false;
    81. }
    82.  
    83. // Some unrelated methods goes here (listCommands(), listPluginInformation() )
    84.  
    85. protected void chatToggle(Player player)
    86. {
    87. if(playerChat.contains(player.getName()))
    88. {
    89. playerChat.remove(player.getName());
    90. player.sendMessage(ChatColor.GREEN+"You have Enabled NationCraft Chat!");
    91. }
    92. else
    93. {
    94. playerChat.add(player.getName());
    95. player.sendMessage(ChatColor.RED+"You have disabled NationChat!");
    96. player.sendMessage(ChatColor.AQUA+"You want it to be all silent! We understand!");
    97. }
    98. }
    99. }

    Also, you know that this just disables if the player can chat (basically this is a self-mute), and the player will continue to recieve the chat
     
  19. Offline

    Phoenix901

    Sorry what?
    I'm planing on doing something like this in the else statement however if it works or not I don't know. (The part so only people who haven't "Muted" themselves)

    Code:java
    1. for (Player player : Bukkit.getServer().getOnlinePlayers()) {
    2. if (!this.plugin.playerChat.contains(player.getName()) {
    3. p.sendMessage(e.getMessage());
    4. }
    5. }
     
  20. Offline

    Sagacious_Zed Bukkit Docs

    You should not call getOnlinePlayers from an async task. Please note the giant warning in the JavaDocs for AsyncPlayerChatEvent
     
  21. Offline

    Phoenix901

    I havn't done it yet, just a guess on how it could be done.
    I'm very new to the whole Java and Bukkit thing so I most likely will make some stupid mistakes, thanks for pointing it out though
     
  22. Offline

    fireblast709

    Phoenix901 my code fixed a lot of NullPointerExceptions, like using a 'static plugin', which was never set. But you don't need static (and it is a bad pratice)
     
  23. Offline

    Phoenix901

    I'm an idiot..
    I haven't tested out the code you gave me before now and it works perfectly.
    Thank you so much fireblast709 for helping me out and being so patience with me.
    Again, thank you.
     
  24. Offline

    fireblast709

Thread Status:
Not open for further replies.

Share This Page