Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - G_G

31
Bug Reports and Tech Issues / Shiny Battler Mixmatch
April 03, 2013, 03:15:59 pm
I noticed my Shiny Vulpix wasn't the right back graphic.

Spoiler: ShowHide




Then I looked in the battle graphics folder and I noticed that a lot of them were misnamed. Just the shiny ones.

Spoiler: ShowHide


It starts from 023sb to 063sb. You accidentally have Abras shiny back in place of Ekans shiny back and that's where they all started getting mixed up.

EDIT: I went ahead and fixed all the names for you. Here's the zip file with all the proper names, figured I'd save you some time.
http://www.sendspace.com/file/sde5jk
32
Welcome! / Another snag in my life
January 26, 2013, 04:05:13 am
Hey guys,

Just as it seems my motivation reaches its peak, something comes along to destroy it. As some may know, I recently was let back onto the ARC team, ready to demolish through the last part of the editor with Ryex. I'm not trying to make excuses and I hope you guys will forgive me, but I've reached a point in my life right now where I have no free time whatsoever. (I'll explain later) and won't be able to for possibly a few months. Now I'm not resigning from the ARC team unless Blizzard and Ryex feel it'd just be best to keep me off, but it may be a couple more months before I get time to work on it again. I won't ask to join or beg to keep me on again, but I did make a promise to them that I'd contribute to the project once more, which I have failed to even do yet. But I'll let them decide what would be best.

My dad broke his femur bone while at work and now he can't work. Well the smart guy he is put off paying the insurance company for a couple of months because he felt he wasn't going to need and could easily pay them later. >__> Talk about ignorance. Anyways, my dad can't work and this has put me in one of the most stressful situations I have ever come to deal with. I'm currently working one job and it went from part-time to pretty much any shift I can pick up. I work as a server at a restaraunt. Anyways, I find myself working right after school around 3 and work from anywhere between 12 and 2 in the morning. Working at a 24/7 Perkins has its ups and downs. On the days I only work a small shift or I don't work, I usually find myself trying to do my homework or sleeping.

Anyways, the reason for this is, as I mentioned, my dad can't work and he doesn't have very much money in the bank right now. I'm helping out with bills and groceries until he heals up. Which the doctor said could take anywhere from 8 to 12 weeks. And even then, he might not be able to work as well has he did before, which may or may not cause issues in the future, it's his own business he's running but he still has deadlines for his clients.

As you can imagine, this is a pretty stressful situation for me, but honestly, I don't mind it and I'm very proud of myself, considering I'm only 17 and have already shown I can take full responsibility for a job, school, and family. Anyways, hopefully this explains a bit about my lack of activity towards the forums, or anything for that matter. I actually haven't been able to have a decent conversation in the Skype group with anyone. But to Blizz and Ryex, I hope you can forgive me again and as far as ARC goes, just shoot me a PM and lemme know what you guys decide, I hate leaving you again but I feel my family is a bit more important right now and I hope you guys understand.

Regardless, good luck Chaos Project! Hope you continue to thrive without me, I may or may lurk every once in awhile but I haven't had the time or want to hop on the computer, so see ya around. :3
33
Chat / 2013 Resolutions/Goals (split from 2012 topic)
January 12, 2013, 01:47:28 am
Time to necro the shit out of this thread. It's a new year and I'd like to revisit my goals and look back at how I've improved myself as a person. First I'd like to point out that you shouldn't wait until the new year to better yourself. If you think you can improve yourself at any point of time, you should do it. However, the new year is when a lot of people think about their life and what aspects they should rethink. So let's see how I did.

My first goal, was pretty much to get healthier. And I did a great job at it. I went from a whopping 210lbs (95kg~) to 160lbs (73kg~). I've never felt physically better about myself. I feel a lot more active than I used to be and overall I feel great.

Now unfortunately, I didn't get a car. I ended up changing my mind and invested in building my own computer rather than purchasing a car. I saved up my money over the summer, worked a couple of months into the school year, and now I have myself a great computer. Definitely worth it.

Oh yes, my anti-socialistic behavior. I've improved this. A LOT I've started hanging out with friends more and more outside of school and I've truly enjoyed it. I've been getting myself out there and constantly meeting new people. It's a great experience and I'm glad I made this one of my goals. There was a couple of months near the end of this year where I fell into a mini depression and locked myself in my room during this period of time. Luckily I had a close friend help me out. Now all I need to figure out is how to balance my social life, hobbies, and responsibilities so I'm investing a fair amount of time into each one and not just focusing on one at a time.

Becoming a better person towards the people I care about. Ha, well fuck. The past three months of last year has been the worst I've been through with my family. Though I'm learning to deal with it a lot better than I had previously. I think my dad and I have finally come to a decent understanding of each other's feelings and perspectives and it's definitely helped relieve some stress. As for my brother, I've been treating him a lot better than I usually have, which is great of course, but I could be doing better.

So, I'm curious, for those who had set goals for 2012, how well did they work out? As for myself, rather than setting new goals for myself this year, I'm just going to make it a personal responsibility to manage my previous goals and make sure I keep bettering myself. Was really interesting to come visit this thread again after a year and I'm glad I didn't give up on myself like I usually have in the past.
34
RMXP Script Database / [XP] Chrono Cross Key Items
December 28, 2012, 11:30:22 am
Chrono Cross Key Items
Authors: gameus, KK20
Version: 1.3
Type: Event Interaction System
Key Term: Environment Add-on

Introduction

Ever play Chrono Cross? You can bring up a window that displays a list of  your Key Items and you can use them on NPCs and events to have a certain action take place.

Features

  • Display All Items or Marked Items
  • Won't conflict while events are running
  • Use items on NPCs and have something happen

Screenshots

Not applicable. Check out the demo to get a better understanding.

Demo

Demo has outdated script but still provides example and functionaliy. Just be sure to get the updated script from here.
Demo (Box)
Demo (Direct)

Script

v1.3: ShowHide
Code: ruby
#===============================================================================
# Chrono Cross Key Items
# Version 1.3
# Author gameus, KK20
#-------------------------------------------------------------------------------
# Intro:
# Ever play Chrono Cross? You can bring up a window that displays a list of
# your Key Items and you can use them on NPCs and events to have a
# certain action take place.
#
# Features:
# -Display All Items or Marked Items
# -Won't conflict while events are running
# -Use items on NPCs and have something happen
#
# Instructions:
# This script is pretty much plug-n-play. But you have to decide if you want
# to display All Items or just Key Items. If you just want Key Items, scroll
# down and set "CCKEY_SHOW_ALL_ITEMS" to false. Then be sure to create a
# unique element which will be used as your Key Item Element. Mark any item
# with this element that you want made as a key item. Then set
# "CCKEY_ITEM_ELEMENT" to that element's id.
#
# Using this with Events:
# All it requires is a simple Conditional Branch Script Call.
#  used_item(item_id)
#  -item_id = The id of the item you'd like the event to react to.
# It's a bit hard to explain, but that's why there's a demo.
#
# You can also bring up the window by the script call:
#  select_item
# To list specific items with various elements (and not be restricted to just
# those defined under CCKEY_ITEM_ELEMENT):
#  select_item(1,2,3) # add more or less as you'd like
# You can use an array format if you'd like; it does the same thing:
#  select_item([1,2,3])
#
# Compatibility:
# -Not tested with SDK
# -Shouldn't conflict with anything
#
# Version History:
# 1.0
# -Initial Release
#
# 1.1
# -Allowed multiple item calls in one event page
#
# 1.2
# -Screw Ruby 1.8, that is all, small bug fixed
# -Fixed an input bug as well
#
# 1.3
# -Open the window via script call, and select many elements to list instead of
#  just the one
# -Prevent opening the window freely via a game switch
# -Clean up
#
# Credits:
# gameus ~ For creating the script
# SquareSoft ~ For inspiring the script
# KK20 - For v1.3
#===============================================================================
#------------------------------------------
# Button to bring up Key Item Window
#------------------------------------------
CCKEY_INPUT_BUTTON  = Input::A
#------------------------------------------
# Switch ID to toggle CCKEY_INPUT_BUTTON;
# Set this switch to OFF to disable button
# input from opening the window.
# Set to  0    to permanently disable.
# Set to  true  to always allow input.
#------------------------------------------
CCKEY_SWITCH_TOGGLE  = true
#------------------------------------------
# Whether or not to show entire inventory
# Excludes Weapons and Armors
#------------------------------------------
CCKEY_SHOW_ALL_ITEMS = true
#------------------------------------------
# If above is set to false, this element
# must be applied to any item you'd like
# to show up in the window.
# Note that this is the default, if you
# do not provide elements to select_item
# script call.
#------------------------------------------
CCKEY_ITEM_ELEMENT  = 17

#==============================================================================
# Window_CCKeyItem
#------------------------------------------------------------------------------
#  On map window to display "key items" that can be used with events
#==============================================================================
class Window_CCKeyItems < Window_Selectable
  #----------------------------------------------------------------------------
  # Creates Window
  #----------------------------------------------------------------------------
  def initialize
    super(48, 304, 544, 160)
    self.back_opacity = 160
    self.active = false
    self.visible = false
    @column_max = 2
    @item_types = []
    @fade_in = false
    refresh
  end
  #----------------------------------------------------------------------------
  # Updates Window
  #----------------------------------------------------------------------------
  def update
    super
   
    if @fade_in
      update_fade
      return
    end

    if Input.trigger?(Input::C) && self.active
      $game_system.se_play($data_system.decision_se)
      self.active = false
      self.visible = false
      if selected_item.nil?
        $game_temp.key_item = 0
      else
        $game_temp.key_item = selected_item.id
      end
      $game_temp.message_window_showing = false
      $game_temp.message_proc.call if $game_temp.message_proc
     
    elsif (CCKEY_SWITCH_TOGGLE == true || $game_switches[CCKEY_SWITCH_TOGGLE]) &&
        Input.trigger?(CCKEY_INPUT_BUTTON) &&
        !$game_temp.message_window_showing &&
        !$game_system.map_interpreter.running?
      $game_system.se_play($data_system.decision_se)
      show_window
     
    elsif Input.trigger?(Input::B) && self.active
      $game_system.se_play($data_system.cancel_se)
      self.active = false
      self.visible = false
      $game_temp.key_item = 0
      Input.update
      $game_temp.message_window_showing = false
      $game_temp.message_proc.call if $game_temp.message_proc
    end
  end
 
  #----------------------------------------------------------------------------
  # Fades the window in, only if called from events
  #----------------------------------------------------------------------------
  def update_fade
    self.opacity += 24
    self.contents_opacity += 24
    if self.opacity == 255
      @fade_in = false
      self.active = true
    end
  end
 
  #----------------------------------------------------------------------------
  # Pops up the window
  #----------------------------------------------------------------------------
  def show_window(*args)
    @item_types.clear
    args.each do |param|
      if param == :fade_in
        @fade_in = true
      elsif param.is_a?(Array) || param.is_a?(Integer)
        @item_types << param
      end
    end
    @item_types.flatten!
    if !CCKEY_SHOW_ALL_ITEMS && @item_types.empty?
      @item_types << CCKEY_ITEM_ELEMENT
    end
    refresh
    self.index = 0
    self.active = true unless @fade_in
    self.visible = true
    if @fade_in
      self.opacity = 0
      self.contents_opacity = 0
    end
    $game_temp.message_window_showing = true
  end
 
  #----------------------------------------------------------------------------
  # Refreshes Window
  #----------------------------------------------------------------------------
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @items = []
    for i in 1...$data_items.size
      item = $data_items[i]
      next if !($game_party.item_number(i) > 0)
      if (CCKEY_SHOW_ALL_ITEMS && @item_types.empty?) ||
        !(item.element_set & @item_types).empty?
        @items << item
      end
    end
    @item_max = @items.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      for i in 0...@item_max
        draw_item(i)
      end
    end
  end
  #----------------------------------------------------------------------------
  # Draws Item
  #----------------------------------------------------------------------------
  def draw_item(index)
    item = @items[index]
    x = 4 + index % 2 * (244 + 32)
    y = index / 2 * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(item.icon_name)
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  end
  #----------------------------------------------------------------------------
  # Returns Selected Item
  #----------------------------------------------------------------------------
  def selected_item
    return @items[self.index]
  end
end

#==============================================================================
# Interpreter (Edit)
#------------------------------------------------------------------------------
#  Added the method "used_item(id)"
#==============================================================================
class Interpreter
  def used_item(id)
    flag = id == $game_temp.key_item
    return flag
  end
 
  alias gg_cckeys_command_end_lat command_end
  def command_end
    $game_temp.key_item = 0 if @main && @event_id > 0
    gg_cckeys_command_end_lat
  end
 
  #--------------------------------------------------------------------------
  # * Select an Item from choice window
  #  item_type
  #    :all - displays every single item in the player's inventory
  #   
  #--------------------------------------------------------------------------
  def select_item(item_elements = 0)
    return unless $scene.is_a?(Scene_Map)
    # Set message end waiting flag and callback
    @message_waiting = true
    $game_temp.message_proc = Proc.new { @message_waiting = false }
    $scene.show_key_item_window(item_elements)
  end
end

#==============================================================================
# Scene_Map (Edit)
#------------------------------------------------------------------------------
#  Modified to add Window_CCKeyItem
#==============================================================================
class Scene_Map
  #----------------------------------------------------------------------------
  # Initializes Map
  #----------------------------------------------------------------------------
  alias gg_main_cckeys_map_lat main
  def main
    @key_window = Window_CCKeyItems.new
    gg_main_cckeys_map_lat
    @key_window.dispose
  end
  #----------------------------------------------------------------------------
  # Updates Map
  #----------------------------------------------------------------------------
  alias gg_update_cckeys_map_lat update
  def update
    @key_window.update
    gg_update_cckeys_map_lat
  end
 
  def show_key_item_window(item_elements = 0)
    @key_window.show_window(:fade_in, item_elements)
  end
 
end

#==============================================================================
# Game_Temp
#------------------------------------------------------------------------------
#  Added @key_item to keep track of the used item.
#==============================================================================
class Game_Temp
  attr_accessor :key_item
end

v1.2: ShowHide
Code: ruby
#===============================================================================
# Chrono Cross Key Items
# Version 1.2
# Author gameus
#-------------------------------------------------------------------------------
# Intro:
# Ever play Chrono Cross? You can bring up a window that displays a list of
# your Key Items and you can use them on NPCs and events to have a
# certain action take place.
#
# Features:
# -Display All Items or Marked Items
# -Won't conflict while events are running
# -Use items on NPCs and have something happen
#
# Instructions:
# This script is pretty much plug-n-play. But you have to decide if you want
# to display All Items or just Key Items. If you just want Key Items, scroll
# down and set "CCKEY_SHOW_ALL_ITEMS" to false. Then be sure to create a
# unique element which will be used as your Key Item Element. Mark any item
# with this element that you want made as a key item. Then set
# "CCKEY_ITEM_ELEMENT" to that element's id.
#
# Using this with Events:
# All it requires is a simple Conditional Branch Script Call.
#   used_item(item_id)
#   -item_id = The id of the item you'd like the event to react to.
# It's a bit hard to explain, but that's why there's a demo.
#
# Compatibility:
# -Not tested with SDK
# -Shouldn't conflict with anything
#
# Version History:
# 1.0
# -Initial Release
#
# 1.1
# -Allowed multiple item calls in one event page
#
# 1.2
# -Screw Ruby 1.8, that is all, small bug fixed
# -Fixed an input bug as well
#
# Credits:
# gameus ~ For creating the script
# SquareSoft ~ For inspiring the script
#===============================================================================
#------------------------------------------
# Button to bring up Key Item Window
#------------------------------------------
CCKEY_INPUT_BUTTON   = Input::A
#------------------------------------------
# Whether or not to show entire inventory
# Excludes Weapons and Armors
#------------------------------------------
CCKEY_SHOW_ALL_ITEMS = true
#------------------------------------------
# If above is set to false, this element
# must be applied to any item you'd like
# to show up in the window
#------------------------------------------
CCKEY_ITEM_ELEMENT   = 17

#==============================================================================
# Window_CCKeyItem
#------------------------------------------------------------------------------
#  On map window to display "key items" that can be used with events
#==============================================================================
class Window_CCKeyItems < Window_Selectable
  #----------------------------------------------------------------------------
  # Creates Window
  #----------------------------------------------------------------------------
  def initialize
    super(48, 304, 544, 160)
    self.back_opacity = 160
    self.active = false
    self.visible = false
    @column_max = 2
    refresh
  end
  #----------------------------------------------------------------------------
  # Updates Window
  #----------------------------------------------------------------------------
  def update
    super
    if Input.trigger?(Input::C) && self.active
      $game_system.se_play($data_system.decision_se)
      self.active = false
      self.visible = false
      if selected_item.nil?
        $game_temp.key_item = 0
      else
        $game_temp.key_item = selected_item.id
      end
      $game_temp.message_window_showing = false
      return
    elsif Input.trigger?(CCKEY_INPUT_BUTTON) &&
        !$game_temp.message_window_showing &&
        !$game_system.map_interpreter.running?
      $game_system.se_play($data_system.decision_se)
      refresh
      self.index = 0
      self.active = true
      self.visible = true
      $game_temp.message_window_showing = true
      return
    elsif Input.trigger?(Input::B) && self.active
      $game_system.se_play($data_system.cancel_se)
      self.active = false
      self.visible = false
      Input.update
      $game_temp.message_window_showing = false
    end
  end
  #----------------------------------------------------------------------------
  # Refreshes Window
  #----------------------------------------------------------------------------
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @items = []
    for i in 1...$data_items.size
      item = $data_items[i]
      next if !($game_party.item_number(i) > 0)
      if item.element_set.include?(CCKEY_ITEM_ELEMENT) || CCKEY_SHOW_ALL_ITEMS
        @items.push(item)
      end
    end
    @item_max = @items.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      for i in 0...@item_max
        draw_item(i)
      end
    end
  end
  #----------------------------------------------------------------------------
  # Draws Item
  #----------------------------------------------------------------------------
  def draw_item(index)
    item = @items[index]
    x = 4 + index % 2 * (244 + 32)
    y = index / 2 * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(item.icon_name)
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  end
  #----------------------------------------------------------------------------
  # Returns Selected Item
  #----------------------------------------------------------------------------
  def selected_item
    return @items[self.index]
  end
end

#==============================================================================
# Interpreter (Edit)
#------------------------------------------------------------------------------
#  Added the method "used_item(id)"
#==============================================================================
class Interpreter
  def used_item(id)
    flag = id == $game_temp.key_item
    return flag
  end
 
  alias gg_cckeys_command_end_lat command_end
  def command_end
    $game_temp.key_item = 0
    gg_cckeys_command_end_lat
  end
end

#==============================================================================
# Scene_Map (Edit)
#------------------------------------------------------------------------------
#  Modified to add Window_CCKeyItem
#==============================================================================
class Scene_Map
  #----------------------------------------------------------------------------
  # Initializes Map
  #----------------------------------------------------------------------------
  alias gg_main_cckeys_map_lat main
  def main
    @key_window = Window_CCKeyItems.new
    gg_main_cckeys_map_lat
    @key_window.dispose
  end
  #----------------------------------------------------------------------------
  # Updates Map
  #----------------------------------------------------------------------------
  alias gg_update_cckeys_map_lat update
  def update
    @key_window.update
    gg_update_cckeys_map_lat
  end
end

#==============================================================================
# Game_Temp
#------------------------------------------------------------------------------
#  Added @key_item to keep track of the used item.
#==============================================================================
class Game_Temp
  attr_accessor :key_item
end


Instructions

Instructions are in the script, though they may be a bit confusing. Definitely check out the demo.

Compatibility

Not tested with SDK
Should be compatible with just about everything.

Credits and Thanks

  • gameus ~ For creating the script
  • SquareSoft ~ For creating Chrono Cross which inspired this
  • KK20 ~ For v1.3

Author's Notes

Enjoy my last public script ever. I know I said this before, but I found this gem on my grandmas computer. I think my past self meant to release it. Regardless, I cleaned up the code and am now sharing it with you guys!
35
ARC Welder / ARCed Database Preview
December 19, 2012, 03:34:31 pm
Because Ryex is far too lazy to post this himself, I'm gonna share it with you guys. Here's a video showing off the ARCed Database. This only includes the database aspect and nothing else.
http://www.youtube.com/watch?v=GYeSq-BAg1E&feature=youtu.be

Note that the voice and recording is Ryex. I, gameus, had nothing to do with this video.
36
Video Games / Wanderlust: Rebirth
December 16, 2012, 01:53:32 am
Wanderlust: Rebirth
Steam | Website | YouTube | Wiki





QuoteWanderlust: Rebirth is an online four player co-op arcade-action RPG set in the uniquely crafted fantasy world, Valandria. The heroes are summoned to Westhaven Arena to prove their worth as heroes of old legend.However, things are not as transparent as they first appear, when our heroes are unknowingly set upon a trek to save mankind from an ominous end. Band together with your fellow brethren to conquer and change the course of destiny.

Story and survival modes for both Single and Co-operative play
Competitive game modes featuring 8 players (4 vs 4)
Over 65 awards and 30 Steam achievements to earn
4 uniquely crafted character classes to advance through teamwork and efficiency
Unique Inventory/Crafting system
Unique and in-depth Artificial Intelligence
3 different difficulty modes and 3 different endings
44 unique enemies and 15 intense boss battles
...and over 5 years in the making, so you know it is DAMN good!


Wanderlust is probably one of the funnest 2-D RPG games I've played in awhile. It's packed full of action, skills, items, and combos. Combos are important. Wanderlust appears to be a generic RPG game where you're sent to do quests, but once you get into it, the story goes a bit deeper than that. In fact, with three different difficulties, Normal, Hard, and Epic, you end up with three different endings. While the story is fairly short, you can probably sit through Normal difficulty in just a couple of hours, it's finding all of the secrets, all the grinding, aiming for that gold on all chapters that takes up all of your time playing this game. There are four different classes in this game, Warrior, Alchemist, Cleric, and Elementalist. Each character has their own skill set. As you complete chapters throughout the game, you get Character Points depending on how well you did. Character Points are used to advance your characters skills. If you get 100% on a chapter, you get a bonus 100 Character Points. After each chapter, you also gain Tokens (in-game currency) depending on completion and difficulty. So at any given point, you really shouldn't find yourself grinding for experience or money. Feel you've made a mistake with purchasing skills? In the lobby there is a trader who can Reset Character Points, Rename Character, or Change Character's Gender. He also sells weapons and armors.

On top of campaign, there is a bonus game mode you can unlock after Chapter 8. It's Crawl mode. Each map, you battle three waves of monsters. You can either start at level 1 (Normal) or skip to level 10 (Epic). After each map, your party is healed and you gain tokens + a blue chest with some random items in it. After completing a fourth map in either difficulty, every map completion afterwards gives you a choice. You are placed in a room with a blue chest and a brown chest. There's also a huge slot machine in the middle. You have a choice. Open the blue chest, take the items, and end your crawl right there. Or take a risk, gamble and hope you get the right sequence to open the brown chest. Fail or succeed with the machine, you move on with the crawl.

So what's the point in tokens and items? Well, throughout the game, you're more than likely to pick up a few crafting recipes. With them, you can craft amazing weapons and armor to build your character even further. Doing this does take a bit of grinding as you'll usually find yourself repeating chapters or doing the crawl in hopes to find the items required. Oh and the crafting recipes tend to be a bit pricey. Blue ones averaging around 6,000 and Red ones averaging around 60,000. I believe there are even Green recipes which are bound to be cheaper. But you can buy green items from the trader you find in the lobby. If you don't feel like grinding for items, you can always gamble your money away at the trader. For a mere 50 tokens, you can get a random green item with a small chance of a blue item. At 500 tokens, you get a random blue item with a chance of a red item.

This game has full controller support and multiplayer support with PvP and Co-Op. It has that old retro feel like games such as Chrono Trigger and Secret of Mana. If you're into Indie, Action, RPG games, definitely check this out.


My Thoughts


I truly enjoyed this game, and for the past week (I think?), I've been playing it with some fellow Chaos Project members. Blizzard, winkio, SpiralFlux, and Ryex. So far we've only gotten two of the three endings, but we're working towards the third. We've also managed to find most, if not all, secrets throughout the game. Each class has it's unique set of abilities, weaknesses, and strengths. I enjoy how each character has its advantages compared to others. While the skill leveling system isn't unique itself, the method of gaining Character Points and Tokens is pretty unique. I can't really think of a game that rewards you after each chapter. One of my favorite things has got to be the lack of grinding. In countless RPGs, you're constantly struggling to gather gold and experience. You're really not doing that in this game other than for items. It's just a matter of completion and execution.

The storyline is fairly short, but there is indeed a twist or two if you actually follow it. The first time through I really didn't pay attention until the end. The spriting style is pretty much consistent throughout the game, other than a few background images which we had a few laughs at. We've also ran into a couple of other glitches, mostly graphical such as fire drawing on top of characters when it shouldn't. Your characters shadows drawing on the wall. Oh, and recently I discovered a glitch where you can change your characters class. And the collision detection when moving around on each map can be a bit wonky. Numerous times have we gotten caught on something we should have been able to easily move through. Other than these few glitches, the game is amazingly well done. And it's been in development for fives years. Interestingly enough, I discovered it was made in Game Maker and astonishingly, it was done very, very well.

I highly recommend playing this game with a controller. Keyboard controls are everywhere. And it's definitely recommended to play with some friends. Single player isn't that great of a thrill, so much more enjoyment and challenge with other people. There are quite a few secrets hidden throughout the game as well. There are secret bosses, side quests, even secret trees. And by finding these secrets, you can help yourself earn a better score on each chapter.

Overall, I'd probably give this a game a 9.5 out of 10.


Links


Steam
Website
YouTube
Fan-Made Wiki
37
General Discussion / E-Mail to Enterbrain
December 10, 2012, 04:36:58 pm
So we came up with this conspiracy that Enterbrain kidnapped ForeverZer0 which is why he has been gone. So I sent them a support ticket asking for him back, jokingly. Well they responded.

QuoteI know you have him, you bastards. We want him back. I demand you free him this instance!

We want the safe return of our pal, ForeverZer0, and would like him back. We're currently preparing to send an army of 1,000 specially trained soldiers to come fuck shit up, you have 48 hours to respond, if not, well, you've been warned.


Proof: ShowHide


QuoteDear Gameus Guyus,


A customer support staff member has replied to your support request, #24771 with the following response:
--------------------------------------------

Hi,

I'm sorry but you seem to be mistaken.

We've checked all our hostages and none of them go by that Alias. Perhaps try with YoYo Games?


Proof: ShowHide
38
Electronic and Computer Section / [Freeware] SageThumbs
December 01, 2012, 09:18:39 am
For awhile now, I've been looking for PSD Thumbnail support in explorer. I recently stumbled across SageThumbs, which is completely free and works with Windows XP/2003/Vista/2008/7 32/64-bit. Plus it's open source, which is pretty neat.

SageThumbs on Google Code

Quote from: FeaturesExtended thumbnail image view of Explorer folder
Thumbnail image in explorer context menu (right-click menu)
Extended info tips
Support 162 image formats (224 extensions) via GFL Library
Support additional 26 image formats via XnView plugins (if installed)
Send by mail support
One-click conversion to popular image formats support
Wallpaper selection support
Copy to clipboard support


Here's a screenshot I took.
Spoiler: ShowHide
39
Some of you may remember this. I do. I wanted to visit string encryption some more. I've definitely put some work into this one. This is a reversable string encryption method I've created. Which means you can put in a string, encrypt it with a password, and then decrypt it as long as you have said password. Anyways, I wanted to share my progress with you. I'm still trying to improve it, but I think I've done a pretty good job at masking the original string.

Fun Fact: Back when I managed Decisive Media with Branden, I used a similar method to encrypt Achievement Codes so people couldn't exploit the system into getting every achievement. I based this new one around this and improved on it.

What I'm basically doing is mixing characters together, using factors to decide which character to use, to pretty much mask the original input. The password that gets passed to the method is used to help mask the original string. Each character in the password is used as a factor to to decide which character to use as a mask. So if you try to decrypt a string with a different given password, it's just going to output gibberish. Along with a password, there are two numbers that are also used as a factor. Both these numbers get changed after each character is masked, which prevents consecutive characters from having the same mask. For example, "Hello", the two l's will have different masks, increasing the security. Then of course, each character in the original string is used as a deciding factor as well.

With these factors, characters are chosen from one of two strings which contain a list of characters. Which get mixed together to produce an end result. To try and strengthen encryption even more, I added an extra parameter. You have the option to pass an integer to the encryption method. This parameter is used to mask the length of the original string. For example, say you passed "Hello", which is five characters, you can pass an integer, let's say "32". The output will be 32 characters long and no one would even guess it'd be hello. However, if the integer you pass is less than the number of characters, it pretty much gets ignored. To show an example, here's an input and output. Notice how the password is one character off from the original, the string looks nothing like the original.

Encrypting:
Input: apple
Password: granny smith
Output Length: 16
Output: tnE3 BaN+f& ]7Jc

Decrypting:
Input: tnE3 BaN+f& ]7Jc
Password: granny smit
Output: brspj)*+,-./0123


Now onto the download. I only have a runnable application this time. Didn't want to take the time to port it to PHP. Download

It's pretty difficult to decode the output without the password. In order to do it, you'd need the two unique strings and two unique numbers to start. And even with these, the encryption method itself is still hidden. I think I've created a pretty solid system here. So with this, I leave a challenge. More specifically for ForeverZer0 (but anyone can try it). Only because he decompiled my program from my previous encryption method last time. xD Oh and I've learned from last time. I've obfuscated the hell out of this thing. I've only examined it in .NET Reflector but everything is pretty hidden.

Input: Hello world!
Output Length: 32
Output: eZ4H:<f]9/pj{SqDo9xS&mA`e5G8L#CV

The goal is to figure out the password. This is pretty damn near impossible to do without knowing any of the variables I used. It wouldn't be very fair if I kept those hidden, so here.

String1 = "! #$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~"
String2 = "f^jAE]okIOzU[2&q1{3`h5w_794p@6s8?BgP>dFV=m D<TcS%Ze|r:lGK/uCy.Jx)HiQ!#$~(;Lt-R}Ma,NvW+Ynb*0X"
Integer1 = 1.75 // I know it's "technically" not an integer
Integer2 = 3


Simply changing any one of these variables produces an entirely new output. Props to whomever successfully finds the password. If someone manages to get it (which I'm actually hoping someone does) it just means I need to improve the method even more. And even if someone doesn't I'm still going to try to improve it as much as possible.
40
Entertainment / Live Production of Princess Mononoke
September 25, 2012, 09:36:29 pm
If any of you are fan of Studio Ghibli films (Howl's Moving Castle, Princess Mononoke, My Neighbor Totoro, etc...), this might fascinate you. I myself am a huge fan. I ran across this interesting article, Ghibli licensed a theatre group in London to do a live performance of Princess Mononoke. This was announced back in July of this year and the actual production won't take place until April of next year. The entire production sold out within 72 hours. I thought that was pretty amazing.

More on it:
http://www.slashfilm.com/official-stage-adaptation-of-princess-mononoke-coming-to-london-sold-out-almost-a-year-in-advance/

Thoughts on this? Do you think a live performance of an animated movie will work out alright? I never imagined any of Ghibli's films to work out as live action, but I guess we'll see.
41
Express your Creativity / G_G Does Photoshop
September 25, 2012, 08:58:28 pm
I've decided to try and broaden my skills in other areas aside from programming. If the only thing I'm good at is programming, I'm probably not going to make it far in any solo project. (Which I haven't.) So I've decided to try and get better with graphics. I've scrapped pixel art, I can't get any of that stuff to look right. So I'll go ahead and use this topic on anything graphical wise that I accomplish. (Anything worthwhile anyways)

Lightning Signature
Lightning is a character from Final Fantasy 13 for anyone who's not aware.

First Attempt
Spoiler: ShowHide

Several issues here. Face doesn't match, text outline, pattern, and color don't match very well. The two backgrounds seem to clash a bit. The border is a bit odd, but matches the text.

Second Attempt
Spoiler: ShowHide

Changed a lot of things in this one. Looks a lot better in my opinion. Removed the lightning from the background. Applied some outer glows using a shade from her hair. Applied some color to the background to make it match the outerglow, came out pretty well. Changed text's pattern, much more fitting.

Third Attempt
Spoiler: ShowHide

After following Aqua's advice, I tried to spruce it up a bit. Though I feel I added way too much lightning in the background. I dunno, would like your opinions on this one. I tried changing the glow as she suggested but I wasn't quite able to get the result I wanted. Moved her face upwards a few pixels. Changed the text a bit, this includes glow and overall color.
Here's a slightly alternate version with more of the gunblade showing as Aqua suggested.
Spoiler: ShowHide


Final Attempt
Spoiler: ShowHide

Erased some of the lightning so it wasn't so parallel. (Thanks Aqua!)

Blastoise Signature (WIP)

First Attempt
Spoiler: ShowHide

Not bad for a first draft if I say so myself. I know it doesn't look all that great but I can't really tell what to improve on. Too much blue for starters, the text can easily be worked on. Perhaps change up the backgrounds a bit? Blastoise's water cannon probably looks odd, mostly because I had to edit the blast in myself. Any feedback is much appreciated.

Leon Chameleon
Spoiler: ShowHide

Wanted to do another siggie/avvie for myself. Had little advice from GAX but overall I think it turned out really well. Any thoughts or opinions on it would be great. :3
42
Entertainment / Best Action Scene Ever
August 19, 2012, 06:07:39 am
Kind of old. But still awesome.

http://www.youtube.com/watch?v=yysbbPStfWw
43
I found two nVidia powered graphics cards, manufactured both by EVGA. One has 192-bit RAM and the other 320-bit. I'm curious to know if there's any real performance difference here. Any input would be nice as to which card I should get as well.

The cards I was looking at.
http://www.newegg.com/Product/Product.aspx?Item=N82E16814130687
http://www.newegg.com/Product/Product.aspx?Item=N82E16814130810

EDIT: A friend already answered my question.

Quote"In all reality, the bit count that they are referring to is the number of binary digits that the card reads per line of machine ISA code. Generally, having more bits is better, but you probably won't ever know the difference in use between the two."


With that answer, it'd be more logical to get the 320-bit one, but the 192-bit one comes with a free copy of Borderlands 2. Thus I'm getting that. ^3^
44
Tutorials / [C#][.NET] Creating a Snake Game
August 05, 2012, 10:42:12 am
Creating a Snake Game


Quick Navigation
1. Understanding the Concept
2. Setting Up
3. Creating Necessary Classes
4. Creating an Input Manager
5. The Game Loop
6. Rendering Graphics
7. Creating Game Logic

I'm not quite sure why, but I decided to make a tutorial on a Snake game using .NET 4.0. This tutorial might seem a bit lengthy and probably went too in depth in some areas and not enough in others. Some of the code in here might not be "optimized" persay but it works. Anyways, each tutorial is separated into different posts with a quick navigation in each post. I hope this is a one time exception to creating 8 posts in a row. Anyways enjoy!

Download full source here.
Download a wordpad document version here.
45
Didn't know where else to put this, since it's an appliance, I figured it'd belong here.

Anyways, I'm trying to find a mini fridge to put into my room so I can be lazier than I already am. I was looking at a few on Wal-Mart's online store, I'm looking into this one more specifically.
http://www.walmart.com/ip/Igloo-3.2-cu-ft-Refrigerator/19895937?findingMethod=rr

Anyways, I was wondering if anyone could provide some insight here, maybe recommend one or whatnot.
46
Entertainment / Simple Troll, Escalates
July 23, 2012, 10:51:49 pm
Trolling is absolutely amazing. Having victims threaten you mindlessly makes it even more better. So let's start from the beginning. My friend Jayme sent one of those chain text messages to a shit ton of contacts. Well attached to this message was every recipient's number. Two people that I don't get along with, got my number. Now thankfully they have no clue who it is. They both started texting me, starting up normal conversations trying to befriend me and whatnot. Now, thanks to Jayme, my number was in horrible hands. Also thanks to Jayme, I was able to figure out who these people were exactly.

So I got their last names and where they lived, mix that with the info I already knew about them. Both of these people tried figuring out who I was. They were working together to do this, trying to act all smart and sneaky, thinking I wouldn't know. Well these two people happen to be sisters. I went under the alias of Doctor Sexy. I tried weirding them out at first in hopes they would stop texting me. It didn't work. So I started mindfucking with them. I told them I knew they were sisters. I knew their names and where they lived and so on and so fourth. Of course, they freaked out and only wanted to know who I was even more. They guessed over and over. Eventually one of them guessed right. I played it off "I know of Ronnie, but I'm not him. ;3". Eventually, the messages were getting annoying,
so I ignored it. Unfortunately, one can only handle so much of that. Oh and another thing, they also got my friend's number. Started bothering her as well. She asked both of them to stop repeatedly and they wouldn't. Eventually, I couldn't take it anymore. I decided to spam their phones. Each person got roughly 500 to 1000 text messages. Telling them to leave me and my friend alone. And they said they would stop. Of course, they used immature words and horrible grammar to tell me off, but they stopped overall.

Now one of them isn't so bright. She forgets just about everything that happens the previous day. So she made the stupid decision to text my friend and me, again. Numerous times throughout the day. Eventually, I spammed her phone again, telling her to knock it off and to leave both my friend and me alone. She then tried spamming me. Managed to send a whole 20 text messages in about 2 minutes. Hilarious. I ignored it, no need to spam her again.

A few hours later, after I got off of work, her dumb-ass boyfriend decided to call me up. Best part? He didn't make his number private, he made it well known to me. Conversation went something like this.
QuoteHim: "Who is this?"
Me: "You call me, who's this?"
Him: "Someone who's gonna slit your throat. You need to stop texting my girlfriend and her sister."
Me: "Riiiight, I wouldn't be texting them if they didn't text me in the first place."
Him: "Who the fuck are you? I'll come over and beat the shit out of you right now."
Me: "Why the fuck would I tell you who I am? *laughing* You can't be serious."
Him: "If you don't tell me who you are and where you live right now, I'm gonna kill you."
Me: "*laughing* What's gonna make me tell you who I am? You're a moron. I could see you winning a Darwin award in about 10 to 20 years."
Him: "Whatever, I'm gonna trace your phone and come kill you."
*hangs up*


Who the hell threatens someone's life over some text spamming? Seriously? I couldn't help but laugh through the entire conversation. This was far too funny. So I decided to piss this guy off even more. I spammed his phone since he didn't mark it as private. His reply:
"more u send txt your being fallowed and traced"
Mine:
"Right, I highly doubt that from someone who can't even properly speak. You know this whole ordeal wouldn't of happened if your girlfriend and her sister would have just stopped texting me."

Haven't received a text yet and I'm still waiting for this guy to show up at my door step. Honestly, I was just trying to have some fun messing with a couple of people. I find the entire situation hilarious. It's interesting how quickly things escalate when someone's boyfriend gets involved. Oh highschool drama, you never cease to amaze me.
47
Sea of Code / Anyone else hear about this?
July 19, 2012, 02:32:09 am
I got this comment on one of my youtube videos.

QuoteOuch, you're using C#? .NET isn't supported in Metro for Windows 8. So you'll have to switch to the desktop to play it. I'm sure you were prepared for this though, I am after Microsoft dropped Visual Basic and the hundreds of thousands of people who develop for it, just me like me, were prety much prepared to for Microsoft to drop .NET developers like a baby they don't want. Yeah, glad I stopped using it. Now I'm a little more "cross platform". So what is your plan for when MS drops the desktop?


I haven't heard of Microsoft dropping .NET support for Windows 8, in fact, they'd be pretty stupid to do so. I'm pretty sure this person is confused or was misinformed. Especially since there are Release Candidates for .NET 4.5 which includes Metro and an RC for Visual Studio 2012. All being prepared for Windows 8. Now either I completely missed out on a very important piece of information or this person is extremely confused. Thoughts or input anyone?

EDIT: I looked into it some and this article seems to sum it up pretty well. Basically, Microsoft is bringing a new development platform with HTML and JS but it's still going to support .NET, they're not gonna drop it.

http://geekswithblogs.net/simonc/archive/2012/03/28/.net-vs-windows-8.aspx
48
For about a month now, I've been using my TV as a second monitor. It's been working out great. Getting a nice nostalgia experience. Playing emulators full screen on my TV and whatnot. Now the only thing that irked me about this was that my TV has a resolution limit of 1360x768. Eventually I got used to it. Now a couple of days ago, out of nowhere I decided to look at my display settings, and all of a sudden, my TV's resolution limit was gone. It went all the way up to 2048x1536. I was actually able to change the resolution passed it's original limit and the changes were made on the TV. I was finally able to have both my monitors at a 1920x1080 resolution. I even started using a wallpaper specifically made for two monitors with that resolution. In fact, here's a screenshot I took.

http://i.imgur.com/igNCh.jpg

Still confused, I decided to ignore that it magically changed because it magically changed in a good way. Unfortunately, the change didn't last. I had to restart my computer and when it finished booting up, the resolution limit was back. And it went from saying "Generic PnP Monitor" (Which is how it was listed before I restarted my computer and before the resolution limit disappeared) to "Sanyo LCD" (Which is the TV brand). I'm curious is to how this is possible. Is there something I may have done to remove this limit? Is there something I can do again to remove it? As far as I'm concerned, I didn't do anything in particular to display settings or anything that may have caused this.
49
Electronic and Computer Section / Maxthon Browser?
July 07, 2012, 01:03:58 am
I stumbled upon HTML5Test.com (You can test your browser to see how well it supports HTML5 and whatnot). According to this link here, Maxthon has the highest score. This is the first time I've ever heard of this browser. Previously it had a (meaningless) score of 476, but after some research, apparently they scammed it.

http://www.favbrowser.com/maxthon-scams-its-score-in-html5test-com/

They enabled features that didn't work. It doesn't seem to support WebGL like the others. (Chrome, FireFox, Opera) I went ahead and tried it out. They have a speed dial which is slightly different but looks a lot like Opera's. The Speed Dial is limited to three pages it looks like, (Unless I'm missing a setting) As for speed, it runs fast, it seems smooth, but honestly, I think it's just a fancy UI.

QuoteExclusive Features
No other browser does more right out of the box. Maxthon 3 comes with free cloud services: store your bookmarks and notes securely on the web for anytime, anywhere access. Share screen grabs with the built-inSnap feature; To make a quick jump to power user watch this video or check out What´s New in Maxthon.


I'm pretty sure Opera and Chrome both do this. Not sure about FireFox, haven't used it in ages. They're trying to make it sound like no one else does this and they're coming off as original. (In my opinion anyways, you might disagree.)

QuoteMaxthon 3 comes with a browser engine that draws web pages 200% faster than Google Chrome. See for yourself. Not sure? See what others say about the speed of Maxthon.


Seems a little fishy to me. I have nothing else to say about this.

http://www.maxthon.com/mx3/

This entire page just makes me think the browser is trying to copy Chrome and Opera. The UI looks and feels a lot like Chrome. It has quite a few of the same features Opera and Chrome both provide.

Anyways, I just heard of this browser today, anybody else know about it or are they as clueless as I am? What are your thoughts on this browser?
50
I re-installed Windows 7 today and after it was all said and done, my Ethernet drivers were not installed. Thankfully my built in Wireless card works just fine but I'd really like to resolve this issue. I've tried googling it a bit but I haven't found a working solution yet. I have never ran into this issue before, could anyone provide some insight?
51
I'm building a new computer, my friend's been helping me choose my hardware and I've finally picked everything out that I want. However, he's not too sure about power units.

Here are the overall components I'm going to be using.

Case
Newegg.com - Antec Three Hundred Illusion Black Steel ATX Mid Tower Computer Case

Processor
Newegg.com - AMD Phenom II X4 965 Black Edition Deneb 3.4GHz Socket AM3 125W Quad-Core Processor HDZ965FBGMBOX

Motherboard
ASUS - Motherboards- ASUS SABERTOOTH 990FX
Newegg.com - ASUS Sabertooth 990FX AM3+ AMD 990FX SATA 6Gb/s USB 3.0 ATX AMD Motherboard with UEFI BIOS

RAM
Newegg.com - G.SKILL Ripjaws X Series 8GB (2 x 4GB) 240-Pin DDR3 SDRAM DDR3 1600 (PC3 12800) Desktop Memory Model F3-12800CL9Q-16GBXL

I'm not buying a new graphics card as I already have one. But this is what I plan on using.
GeForce GTS 450 - GeForce

I was looking around on newegg and I found this unit right here but my friend's not too sure if it'll be enough.
Newegg.com - XFX Core Edition PRO550W (P1-550S-XXB9) 550W ATX12V 2.2 & ESP12V 2.91 SLI Ready CrossFire Ready 80 PLUS BRONZE Certified Active PFC Power Supply

Anyways, if you can recommend a good PSU, I'd be really grateful. If at all possible, I'd like to order it from newegg. Thanks in advance!

52
Welcome! / My friend Jayme.
April 30, 2012, 09:28:59 pm
I've never been in a more depressing mood in my entire life. My best friend Jayme's dad passed away on Saturday. This was the first time I've seen him cry and something hit me hard. I haven't been the same the past couple of days and I'm gonna take an extended leave. Not for my sake, but his. What worries me is he seems already accepting of it and you never know when things like this will truly hit a person hard. I just don't want him to end up doing something stupid. This is the closest thing to losing a relative I've ever been to and it's hurt me quite a bit as well. His dad was a really nice guy. Jayme being one of my best friends for nearly five years now, I've grown to know his dad pretty well.

I'll be going to the funeral tomorrow and I probably won't be back for a week or more. This is my first experience with death and I'm not even sure how to cope with it. I'll see you guys around.
53
Entertainment / Sally Hates Feet
April 24, 2012, 11:30:03 pm
Just an amusing reaction of my friend Sally who doesn't like feet.

http://www.youtube.com/watch?v=cBsNFb3qO9A
54
JSON Encoder/Decoder
Authors: game_guy
Version: 1.1
Type: Script Utility
Key Term: Scripting Tool



Introduction

QuoteJSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate.

This is a simple JSON Parser or Decoder. It'll take JSON thats been formatted into a string and decode it into the proper object. You can also encode certain Ruby objects into JSON.

This is a scripter's utility and isn't meant to add any new functionality or prove usefulness to non-scripters.

(Released awhile ago on RMRK)


Features


  • Decodes JSON format into ruby strings, arrays, hashes, integers, booleans.

  • Encodes Ruby objects into JSON format.




Screenshots

N/A


Demo

No demo.


Script

Spoiler: ShowHide

#===============================================================================
# JSON Encoder/Decoder
# Version 1.1
# Author: game_guy
#-------------------------------------------------------------------------------
# Intro:
# JSON (JavaScript Object Notation) is a lightweight data-interchange
# format. It is easy for humans to read and write. It is easy for machines to
# parse and generate.
# This is a simple JSON Parser or Decoder. It'll take JSON thats been
# formatted into a string and decode it into the proper object.
# This script can also encode certain ruby objects into JSON.
#
# Features:
# Decodes JSON format into ruby strings, arrays, hashes, integers, booleans.
#
# Instructions:
# This is a scripters utility. To decode JSON data, call
# JSON.decode("json string")
# -Depending on "json string", this method can return any of the values:
#  -Integer
#  -String
#  -Boolean
#  -Hash
#  -Array
#  -Nil
#
# To Encode objects, use
# JSON.encode(object)
# -This will return a string with JSON. Object can be any one of the following
#  -Integer
#  -String
#  -Boolean
#  -Hash
#  -Array
#  -Nil
#
# Credits:
# game_guy ~ Creating it.
#===============================================================================
module JSON
 
 TOKEN_NONE = 0;
 TOKEN_CURLY_OPEN = 1;
 TOKEN_CURLY_CLOSED = 2;
 TOKEN_SQUARED_OPEN = 3;
 TOKEN_SQUARED_CLOSED = 4;
 TOKEN_COLON = 5;
 TOKEN_COMMA = 6;
 TOKEN_STRING = 7;
 TOKEN_NUMBER = 8;
 TOKEN_TRUE = 9;
 TOKEN_FALSE = 10;
 TOKEN_NULL = 11;
 
 @index = 0
 @json = ""
 @length = 0
 
 def self.decode(json)
   @json = json
   @index = 0
   @length = @json.length
   return self.parse
 end
 
 def self.encode(obj)
   if obj.is_a?(Hash)
     return self.encode_hash(obj)
   elsif obj.is_a?(Array)
     return self.encode_array(obj)
   elsif obj.is_a?(Fixnum) || obj.is_a?(Float)
     return self.encode_integer(obj)
   elsif obj.is_a?(String)
     return self.encode_string(obj)
   elsif obj.is_a?(TrueClass) || obj.is_a?(FalseClass)
     return self.encode_bool(obj)
   elsif obj.is_a?(NilClass)
     return "null"
   end
   return nil
 end
 
 def self.encode_hash(hash)
   string = "{"
   hash.each_key {|key|
     string += "\"#{key}\":" + self.encode(hash[key]).to_s + ","
   }
   string[string.size - 1, 1] = "}"
   return string
 end
 
 def self.encode_array(array)
   string = "["
   array.each {|i|
     string += self.encode(i).to_s + ","
   }
   string[string.size - 1, 1] = "]"
   return string
 end
 
 def self.encode_string(string)
   return "\"#{string}\""
 end
 
 def self.encode_integer(int)
   return int.to_s
 end
 
 def self.encode_bool(bool)
   return (bool.is_a?(TrueClass) ? "true" : "false")
 end
 
 def self.next_token(debug = 0)
   char = @json[@index, 1]
   @index += 1
   case char
   when '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-'
     return TOKEN_NUMBER
   when '{'
     return TOKEN_CURLY_OPEN
   when '}'
     return TOKEN_CURLY_CLOSED
   when '"'
     return TOKEN_STRING
   when ','
     return TOKEN_COMMA
   when '['
     return TOKEN_SQUARED_OPEN
   when ']'
     return TOKEN_SQUARED_CLOSED
   when ':'
     return TOKEN_COLON
   end
   @index -= 1
   if @json[@index, 5] == "false"
     @index += 5
     return TOKEN_FALSE
   elsif @json[@index, 4] == "true"
     @index += 4
     return TOKEN_TRUE
   elsif @json[@index, 4] == "null"
     @index += 4
     return TOKEN_NULL
   end
   return TOKEN_NONE
 end
 
 def self.parse(debug = 0)
   complete = false
   while !complete
     if @index >= @length
       break
     end
     token = self.next_token
     case token
     when TOKEN_NONE
       return nil
     when TOKEN_NUMBER
       return self.parse_number
     when TOKEN_CURLY_OPEN
       return self.parse_object
     when TOKEN_STRING
       return self.parse_string
     when TOKEN_SQUARED_OPEN
       return self.parse_array
     when TOKEN_TRUE
       return true
     when TOKEN_FALSE
       return false
     when TOKEN_NULL
       return nil
     end
   end
 end
 
 def self.parse_object
   obj = {}
   complete = false
   while !complete
     token = self.next_token
     if token == TOKEN_CURLY_CLOSED
       complete = true
       break
     elsif token == TOKEN_NONE
       return nil
     elsif token == TOKEN_COMMA
     else
       name = self.parse_string
       return nil if name == nil
       token = self.next_token
       return nil if token != TOKEN_COLON
       value = self.parse
       obj[name] = value
     end
   end
   return obj
 end
 
 def self.parse_string
   complete = false
   string = ""
   while !complete
     break if @index >= @length
     char = @json[@index, 1]
     @index += 1
     case char
     when '"'
       complete = true
       break
     else
       string += char.to_s
     end
   end
   if !complete
     return nil
   end
   return string
 end
 
 def self.parse_number
   @index -= 1
   negative = @json[@index, 1] == "-" ? true : false
   string = ""
   complete = false
   while !complete
     break if @index >= @length
     char = @json[@index, 1]
     @index += 1
     case char
     when "{", "}", ":", ",", "[", "]"
       @index -= 1
       complete = true
       break
     when "0", "1", "2", '3', '4', '5', '6', '7', '8', '9'
       string += char.to_s
     end
   end
   return string.to_i
 end
 
 def self.parse_array
   obj = []
   complete = false
   while !complete
     token = self.next_token(1)
     if token == TOKEN_SQUARED_CLOSED
       complete = true
       break
     elsif token == TOKEN_NONE
       return nil
     elsif token == TOKEN_COMMA
     else
       @index -= 1
       value = self.parse
       obj.push(value)
     end
   end
   return obj
 end
 
end



Instructions

Its recommended to place this script at the top, then it can be used in any script below it. To call the parsing method, use
JSON Decode Example: ShowHide

JSON.decode(json)
Returns any of the following depending on "json":
-Integer
-String
-Boolean
-Hash
-Array
-Nil


Example:
json = '{"result":true,"profile":{"id":23,"display_name":"game_guy","group":{"id":"1","name":"Administrator","color":"#FF0000"}},"array":[0,1,2,3]}'
data = JSON.decode(json)


Output
data = {'result' => true, 'profile' => {'id' => 23, 'display_name' => 'game_guy', 'group' => {'id' => 1, 'name' => 'Administrator', 'color' => '#FF0000'}}, 'array' => [0, 1, 2, 3]}

As you can see, it supports multi-level hashes and the method returned a hash object since the string started with a "{". The first character is what defines what object its going to return.


JSON Encode Example: ShowHide
This can encode the following Ruby objects into JSON format.
Integer
Boolean
String
Hash
Array
Nil

Here's your input.
data = {'result' => true, 'profile' => {'id' => 23, 'display_name' => 'game_guy', 'group' => {'id' => 1, 'name' => 'Administrator', 'color' => '#FF0000'}}, 'array' => [0, 1, 2, 3]}
json = JSON.encode(data)


Output
'{"result":true,"profile":{"id":23,"display_name":"game_guy","group":{"id":"1","name":"Administrator","color":"#FF0000"}},"array":[0,1,2,3]}'



Compatibility

Should work with anything.


Credits and Thanks


  • game_guy ~ For creating it.




Author's Notes

Enjoy! :) You guys are lucky that VX Ace uses Ruby 1.9, or else this script wouldn't have been released. With the example code I posted, it takes a few seconds for Ruby 1.8 to parse it all.
55
One Game Instance
Authors: game_guy
Version: 1.0
Type: System Utility
Key Term: Misc Add-on



Introduction

This script is to prevent multiple instances of your game. This is really only for online games so players can't cheat and PvP themselves.

(Released awhile ago on RMRK)


Features


  • Prevents Multiple Instances

  • Custom File/Error

  • XP/VX/VX Ace Compatible




Screenshots

N/A


Demo

N/A


Script

Place at very top!
Spoiler: ShowHide

#===============================================================================
# One Game Instance
# Version 1.0
# Author game_guy
#-------------------------------------------------------------------------------
# Intro:
# Prevents players from opening multiple instances of your games.
#
# Features:
# Prevents Multiple Instances
# Custom File/Error
# XP/VX Compatible
#
# Instructions:
# Place as first script.
# Configure the 2 variables and thats all!
#
# Compatibility:
# Works with everything.
#
# Credits:
# game_guy ~ For creating it.
# ZenVirZan ~ For requesting it.
#===============================================================================

# Custom error message.
ERROR = "Instance already running."
# Custom file name, I'd recommend leaving the ENV[Appdata]
TOKEN_FILE = ENV['APPDATA'] + "game_name.token"

begin
 if FileTest.exists?(TOKEN_FILE)
   begin
     File.delete(TOKEN_FILE)
   rescue Errno::EACCES
     if !DEBUG && !$TEST
       msgbox ERROR
       exit
     end
   end
 end
 $token = File.open(TOKEN_FILE, "w")
end



Instructions

In script.


Compatibility

Works with everything.
XP/VX/VX Ace compatibility.


Credits and Thanks


  • game_guy ~ For creating it.

  • ZenVirZan ~ For requesting it.




Author's Notes

Prevent dem hackahs! >:U
56
RMVX Ace Script Database / [VXA] More Self-Switches
April 17, 2012, 05:31:57 pm
More Self-Switches (VX Ace Edition)
Authors: game_guy
Version: 1.0
Type: Event Modification
Key Term: Environment Add-on



Introduction

Ever need more than 4 self switches? With this small script, you can now have as many self switches you want. You aren't just limited to letters either. You can have names for them.

(Released awhile ago on RMRK)


Features


  • More Self Switches

  • Name them whatever




Screenshots

You do not need to check the self-switch box anymore!
Spoiler: ShowHide



Demo

No demo. Check the VX or XP version out for a demo.


Script

Spoiler: ShowHide

#===============================================================================
# More Self-Switches (VX Ace Edition)
# Version 1.0
# Author game_guy
#-------------------------------------------------------------------------------
# Intro:
# Ever need more than 4 self switches? With this small script, you can now
# have as many self switches you want. You aren't just limited to letters
# either. You can have names for them.
#
# Features:
# -More Self Switches
# -Name them whatever
#
# Instructions:
# -First, lets create a self switch for our event. Anywhere in the event, add
# a comment and type this,
# Switch:switch_name.
# switch_name can be whatever you want to name the switch. Thats all you have
# to do to create a self switch for that page.
# There cannot be any spaces between the colon and the switch name.
# e.g. Switch: switch - Does not work.
# e.g. Switch:switch - Does work.
#
# -Now to turn this switch of or on, call this in a script call.
# self_switch("switch", true/false)
# switch is the switch name, this must be in double " " or single ' ' quotes.
# true/false tells the script whether to turn it off or on. true = on,
# false = off.
#
# -If you want to see if a self switch is on/off, use this script in a
# condtional branch.
# self_switch_state("switch") == true/false
# switch is the switch name, this must be in double " " or single ' ' quotes.
# true = on, false = off
#
# Compatibility:
# Should work with anything.
#
# Credits:
# game_guy ~ For creating it.
#===============================================================================

class Game_Event < Game_Character
 alias gg_init_more_switches_lat initialize
 def initialize(map_id, event)
   gg_init_more_switches_lat(map_id, event)
   @event.pages.each {|page| page.list.each {|command|
     if [108, 408].include?(command.code)
       command.parameters.each {|p| check_custom_switch(page, p) }
     end}}
   refresh
 end
 def check_custom_switch(page, code)
   a = code.split(':')
   if !a[0].nil? && a[0].downcase == "switch" && a[1] != nil
     page.condition.self_switch_ch = a[1]  
     page.condition.self_switch_valid = true
   end
 end
end

class Game_Interpreter
 def self_switch(switch, state)
   if @event_id > 0
     key = [$game_map.map_id, @event_id, switch]
     $game_self_switches[key] = state
   end
   $game_map.need_refresh = true
 end
 def self_switch_state(switch)
   key = [$game_map.map_id, @event_id, switch]
   return $game_self_switches[key]
 end
end


VX Version Here


Instructions

In the script.
Place above main, below Scene_Debug, the normal.


Compatibility

Should work with anything.


Credits and Thanks


  • game_guy ~ For creating it.




Author's Notes

Enjoy! :)
57
RMXP Script Database / [XP] Unlimited Fogs
April 09, 2012, 12:43:22 pm
Unlimited Fogs
Authors: game_guy
Version: 1.2
Type: Graphical Enhancement
Key Term: Environment Add-on



Introduction

No offense to LiTTleDRAgo or his script, but after I over viewed his Multiple Fogs script, I thought to myself it could have been done a lot better. And why limit it to just 3 extra fogs? I also noticed how he let users have little control over fogs. You couldn't set the z index, the hue, or anything of the sort. I had  bit of extra time on my hands, so I made this.

Ever need more than one fog for a map? Maybe more than two fogs? With this unique script, you can have unlimited fogs on one map! And with a few easy script calls, you can customize every aspect of a fog at anytime!


Features


  • Unlimited Fogs on Any Map

  • Change Fog's properties at any time

  • Easy to use script calls




Screenshots

Spoiler: ShowHide



Demo

Demo 1.1 (Bugged, but shows you how to setup fogs)


Script

Spoiler: ShowHide

#===============================================================================
# Unlimited Fogs
# Version 1.2
# Author game_guy
#-------------------------------------------------------------------------------
# Intro:
# Ever need more than one fog for a map? Maybe more than two fogs? With this
# unique script, you can have unlimited fogs on one map! And with a few
# easy script calls, you can customize every aspect of a fog at anytime!
#
# Features:
# Unlimited Fogs on Any Map
# Change Fog's properties at any time
# Easy to use script calls
#
# Instructions:
# There is nothing to configure so lets get onto the script calls!
#-------------------------------------------------------------------------------
# add_fog(index, file, [z, scroll_x, scroll_y, opacity, zoom, blend, hue])
#  index    - This is to keep track of the fogs on screen (more on this later)
#  file     - Filename for the fog
#  z        - The z index of the fog. This is used for layering. (Default: 3000)
#  scroll_x - Horizontal scrolling speed for the fog. (Default: 0)
#  scroll_y - Vertical scrolling speed for the fog. (Default: 0)
#  opacity  - Opacity level for the fog. (Default: 64)
#  zoom     - Zoom level for the fog. (Default: 1.0)
#  blend    - Blend type for the fog. (Default: 0)
#  hue      - Hue for the fog. (Default: 0)
#
#  Note: When using this script call, the parameters with default values don't
#        need to be set when calling it.
#        e.g. add_fox(1, "001-Fog01") - Works because all parameters after
#        has a default value.
# This script call simply adds a fog with the set parameters.
#-------------------------------------------------------------------------------
# remove_fog(index)
#  index - Remember the index we set in "add_fog"? Put the same number in here
#          to remove it.
#
# This script call simply removes a fog.
#-------------------------------------------------------------------------------
# fogs(index)
#  index - The index we used to create our original fog.
#
# This handy script call returns the actual fog so you can edit individual
# properties. For example:
#   fog = fogs(1)
#   fog.scroll_x = 2
#   fog.scroll_y = 2
# This grabs the fog at index "1" and sets the scroll speed for x and y.
# (See below for all the properties/methods you can use)
#-------------------------------------------------------------------------------
# Fog Properties:
# These are the following properties/methods you can use when editing
# individual fogs.
#   visible    = Whether fog is visible or not (true/false)
#   opacity    = Opacity of the fog. (0 to 255)
#   z          = Z index of the fog.
#   scroll_x   = Horizontal scroll speed.
#   scroll_y   = Vertical scroll speed.
#   zoom_x     = Horizontal zoom factor.
#   zoom_y     = Vertical zoom factor.
#   blend_type = Blend mode for fog. (0, 1, or 2)
#   filename(new_file, [hue])
#    -new_file = New fog file.
#    -hue      = Hue for new fog. (Default: 0)
#-------------------------------------------------------------------------------
# Thats about it. Due take warning that the more fogs you add, the more
# probable lag you'll run into. Adding an extra two or three shouldn't hurt too
# much though. ;)
#
# Compatibility:
# Not tested with SDK.
# Should be compatible with everything.
#
# Credits:
# game_guy ~ For making the script.
# LiTTleDRAgo ~ For the original idea.
#===============================================================================
class Spriteset_Map
 
 alias gg_fogs_init_spriteset_map_lat initialize
 def initialize
   @fogs = []
   gg_fogs_init_spriteset_map_lat
 end
 
 alias gg_fogs_update_spriteset_map_lat update
 def update
   @fogs.each {|fog| fog.update if fog != nil }
   gg_fogs_update_spriteset_map_lat
 end
 
 alias gg_fogs_dispose_spriteset_map_lat dispose
 def dispose
   @fogs.each {|fog| fog.dispose if fog != nil }
   gg_fogs_dispose_spriteset_map_lat
 end
 
 def fogs(n)
   if @fogs[n] == nil
     @fogs[n] = ScrollPlane.new(@viewport1)
   end
   return @fogs[n]
 end
 
 def add_fog(index, file, z = 3000, ox = 0, oy = 0, opacity = 64, zoom = 1.0, blend = 0, hue = 0)
   remove_fog(index)
   fog = ScrollPlane.new(@viewport1)
   fog.bitmap = RPG::Cache.fog(file, hue)
   fog.z = z
   fog.blend_type = blend
   fog.opacity = opacity
   fog.zoom_x = zoom
   fog.zoom_y = zoom
   fog.scroll_x = ox
   fog.scroll_y = oy
   @fogs[index] = fog
 end
 
 def remove_fog(index)
   if (@fogs[index] != nil)
     @fogs[index].dispose
     @fogs[index] = nil
   end
 end
 
end

class ScrollPlane < Plane
 
 attr_accessor :scroll_x
 attr_accessor :scroll_y
 
 def initialize(viewport = nil)
   super(viewport)
   @scroll_x = 0
   @scroll_y = 0
   @real_ox  = 0
   @real_oy  = 0
 end
 
 def update
   @real_ox -= @scroll_x / 8.0
   @real_oy -= @scroll_y / 8.0
   self.ox = $game_map.display_x / 4 + @real_ox
   self.oy = $game_map.display_y / 4 + @real_oy
 end
 
 def filename(file, hue = 0)
   self.bitmap = RPG::Cache.fog(file, hue)
 end
 
end

class Interpreter
 
 def spriteset
   return $scene.spriteset if $scene.is_a?(Scene_Map)
   return nil
 end
 
 def add_fog(index, file, z = 3000, ox = 0, oy = 0, opacity = 64, zoom = 1.0, blend = 0, hue = 0)
   spriteset.add_fog(index, file, z, ox, oy, opacity, zoom, blend, hue)
 end
 
 def remove_fog(index)
   spriteset.remove_fog(index)
 end
 
 def fogs(n)
   return spriteset.fogs(n)
 end
 
end

class Scene_Map
 attr_accessor :spriteset
end



Instructions

Place above main. All script calls and needed instructions are in the script. Be sure to check out the demo for a few script call examples.


Compatibility

Not tested with SDK.
Should be compatible with anything.


Credits and Thanks


  • game_guy ~ For creating it.

  • LiTTleDRAgo ~ For the original idea.




Author's Notes

Enjoy! (Okay, probably my last public script. I just had a bit of extra time on my hands.)
58
RMXP Script Database / [XP] Taunt States
April 07, 2012, 11:54:27 am
Taunt States
Authors: game_guy
Version: 1.0
Type: State Modification
Key Term: Battle Add-on



Introduction

When Taunting an enemy, the taunter has a higher chance of being attacked by all enemies. This script, rather than using skills, it uses states to control the taunt levels.


Features


  • Customizable Taunt States

  • Can Even Be Used to Avoid Attacks




Screenshots

N/A


Demo

N/A


Script

Spoiler: ShowHide

#===============================================================================
# Taunt States
# Version 1.0
# Author game_guy
#-------------------------------------------------------------------------------
# Intro:
# When Taunting an enemy, the taunter has a higher chance of being attacked
# by all enemies. This script, rather than using skills, it uses states to
# control the taunt levels.
#
# Features:
# Customizable Taunt States
# Can Even Be Used to Avoid Attacks
#
# Instructions:
# Hop down to the CONFIGURE STATES area and you'll add your state and taunt
# configurations there. Taunt can be reversed to also Avoid attacks. To do
# this, simply set the taunt level to a negative number. The number you assign
# to the state, is the number of times it'll add/remove the member to the
# roullette when being attacked by enemies.
#
# Now to have an actor "taunt" the enemies, all you need to do is give him a
# taunt state, which can easily be done through skills or items.
#
# Credits:
# game_guy ~ Creation of this fine script.
# GrimTrigger ~ For requesting it.
#===============================================================================
module TauntStates
  STATES = {
  #=========================
  # CONFIGURE STATES
  # -Add new lines.
  # state_id => taunt_level,
  #=========================
    17 => 1,
    18 => 2,
    19 => 4,
    20 => -4,
  }
end

class Game_Actor < Game_Battler
  def calculate_taunt
    taunt = 0
    TauntStates::STATES.each {|key, value|
      taunt += value if @states.include(key)}
    return taunt
  end
end

class Game_Party
  def random_target_actor(hp0 = false)
    roulette = []
    for actor in @actors
      if (not hp0 and actor.exist?) or (hp0 and actor.hp0?)
        position = $data_classes[actor.class_id].position
        n = [4 - position + actor.calculate_taunt, 1].max
        n.times do
          roulette.push(actor)
        end
      end
    end
    if roulette.size == 0
      return nil
    end
    return roulette[rand(roulette.size)]
  end
end



Instructions

In the script. Place above main. The usual. ;3


Compatibility

Should be compatible with anything, any battle system, assuming it uses the "random_target_actor" method from Game_Party.


Credits and Thanks


  • game_guy ~ Creation of this fine script.

  • GrimTrigger ~ For requesting it.




Author's Notes

Enjoy my probable last script!
59
Development Tools / [C#] GIF to Spritesheet
April 05, 2012, 12:28:47 am
GIF to Sheet
Authors: game_guy
Version: 1.0



Introduction

I'm working on a new project and all the resources I found were animated gifs. Rather than using ForeverZer0's GIF Ripper and putting them into a sheet myself, I decided to make a tool that splits the GIF and pastes it into one sheet for me.


Features


  • Splits frames from a GIF and pastes it into one sheet.

  • Export into PNG, JPEG, GIF, Bitmap

  • Define number of columns

  • Choose background color for output image




Screenshots

I know the UI isn't that great but it works.
Spoiler: ShowHide


Turns this...
Spoiler: ShowHide

Into this...
Spoiler: ShowHide



Download

GIF to Sheet.zip (6 KB)
GIF to Sheet Source.zip (77 KB)


Compatibility

Requires Microsoft's .NET Framework 2.0 or higher.


Credits


  • game_guy




Author's Notes

Enjoy! If you have any suggestions, lemme know.
60
So I apparently signed up for their newsletter or whatever when I downloaded some trials. Anyways, I got an e-mail linking me to some tutorials or whatever. Just look at the images.
Spoiler: ShowHide

Spoiler: ShowHide

Its now perfectly obvious Enterbrain does know about this place and sparks the theory of "Did Enterbrain push out RMVX Ace due to ARC?". Its hard to say, but its still nice to think about it. On top of the fact that we're apparently the best forum for RPGXP in their eyes. :3 Its pretty awesome.