Jump to content
Rikifive

[SOLVED] Help Description of Highlighted Commands

Recommended Posts

Hello everybody,
It's just me and my stupid ideas.
 
This time I would like to ask how hard it would be to implement custom help window, where description of highlighted command would show up.
UxIP10U.png
 
It seems like a simple thing, but I know Ruby can be unfriendly sometimes, so... Any help appreciated.
Thank you for reading.

Share this post


Link to post
Share on other sites

I've actually heard it said that Ruby is, in fact, one of the most friendly languages there are (certainly one of the most readable).

 

And it's actually not that hard to do what you're thinking, as it happens. Window_Selectable (and anything that inherits from it) is coded by default to be able to link with a Window_Help. Go take a look at how the classes that use a help window (Window_ItemList, Window_SkillList, ect.) are coded. It's just a matter of modifying Window_MenuCommand to do the same thing. Scene_Menu itself might not make a help window, but its superclass already has a method to make one (which is called by the Scenes that DO make a help window, like Scene_Item and Scene_Skill).

 

Once you know the basic syntax and structure of Ruby, scripting in RPGMaker is really just about getting familiar with all the scripts that exist in the engine. There's no shortcut for that, unfortunately - the only way you'll get to know them is read through the default scripts.

Edited by Traverse

Share this post


Link to post
Share on other sites

I really love Ruby, but sometimes making small things requires hours of work or is kinda impossible. xD

 

That's a good point, I'll check that, thanks for suggestion! =)

Share this post


Link to post
Share on other sites

I actually did that! Not for the main menu though. I noticed mostly the script scripts added a bunch of menus in scenes with Window_Help showing that didn't have help text sooo... I made this!

 

 

 

module KZIsAwesome
  module MenuHelp
    
    SYMBOL_HELP_TEXT = {
      :learn_skill => 'Learn new skills',
      :tp_mode => 'Set TP gain mode.',
      :equip => 'Equip items.',
      :optimize => 'Optimize equipment.',
      :clear => 'Clear equipment.',
      :primary => 'Set primary class.',
      :subclass => 'Set subclass.',
    }
    
    SKILL_TYPE_HELP_TEXT = {
      6 => 'Toggle passive skills.',
    }
    
    SKILL_TYPE_HELP_NAME = {
      0 => 'basic actions',
      1 => 'special skills',
      2 => 'special techniques',
      3 => 'magical spells',
      4 => 'metaskills',
      5 => 'TP modes',
      6 => 'passive skills',
    }
    
    SCENE_SKILL_FORMAT = {
      :default  => 'Use or list learned %s.',
      Scene_LearnSkill => 'Learn %s.',
    }
    
  end
end

#==============================================================================
# ? Window_SkillCommand
#==============================================================================

class Window_Command < Window_Selectable
 
  include KZIsAwesome::MenuHelp
 
  def update_help
    return if current_data.nil? || @help_window.nil?
    
    if current_symbol == :skill
      if SceneManager.scene_is?(Scene_Skill)
        str = SKILL_TYPE_HELP_TEXT[current_data[:ext]]
      end
      unless str
        name = SKILL_TYPE_HELP_NAME[current_data[:ext]] ||
               $data_system.skill_types[current_data[:ext]].downcase
        if fmt = SCENE_SKILL_FORMAT[SceneManager.scene.class]
          str = sprintf(fmt, name)
        else
          str = sprintf(SCENE_SKILL_FORMAT[:default], name)
        end
      end
    else
        str = SYMBOL_HELP_TEXT[current_symbol]
    end
    str = '' if str.nil?
    @help_window.set_text(str)
  end
 
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  alias_method :refresh_help_base, :refresh
  def refresh
    refresh_help_base
    update_help if @help_window
  end
 
end

if $imported && $imported["YEA-MessageSystem"]
 
  class Window_Help < Window_Base
    
    alias window_help_initialize_ams initialize
    def initialize(line_number = 2)
      window_help_initialize_ams(line_number = 2)
      setup_message_font
    end
    
  end
 
end

 

 

 

Will let you automatically add menu symbols and have associated text for them. If you add a Window_Help to the main menu and add the menu symbols you need to the array. You can also have descriptions for each skill type and such. This may have to be modified a bit for duplicate symbols if needed. I could have this be indexed per scene instead.

 

Edit: Also if you ask me, Ruby is really friendly, more so then any other language... if you can wrap your head around what it is actually doing. This was easy for me, but that might be because I had so much experience with programing before I found Ruby. There are some pretty advanced computer sciencey things going on with Ruby that I think a lot of people don't even really realize or think about. Sometimes explaining the basics can be like explaining the basics of philosophy. There is just a whole bunch of questions you need to answer that most people never even think to ask or have any idea it is even a question in the first place. Like what is an "object"? How do you define what "type" or "class" an "object" belongs to? And that's before you get into all of the really interesting details. I don't think it's too much of a stretch to say it's like obtaining enlightenment when you really get it.

 

It's not something you can do though rote memorization and repeating the dogma of your programing manuals. You have to get it, feel it, understand the zen of the code, the message it's been trying to tell you all along. The code is life, and life is code. A computer is just another extension of the universe, it all follows the same rules... maybe abstracted to make it simpler sometimes but it's all the same. We are the code and the coders, code modifying code, turtles all the way down.

 

But even after all that, it's still not gonna be easy. Of course that is pretty much true for anything isn't it?

Edited by KilloZapit

Share this post


Link to post
Share on other sites

Hehe, I managed to create help window, which is not an achievement at all, but I have no idea how to put text in here. Perhaps I could figure it out, but it would took so much time. (;一_一)

How to add help description to these commands ~ I just need that in main menu ~ description for "Inventory" "Equipment" etc...

Share this post


Link to post
Share on other sites

Well, each menu option has a symbol associated to it. Not sure what scripts you are using that are altering what shows up on the menu. I use Yanfly's, but it doesn't matter. Every command has a symbol associated to it. Usually you can figure out what they are by looking though a command window's make_command_list method. The default ones for the main menu are :item, :skill, :equip, :status, :formation, :save, and :game_end I think. All you have to do with my script is use those symbols in my SYMBOL_HELP_TEXT hash and the code I use with automatically look them up for you.

 

The way I do it is by adding to the Window_Command class's refresh method and making code to look up the help from a hash and call @help_window.set_text(str) to it. My code could probably be much more simple actually.

Share this post


Link to post
Share on other sites

I'm using Yanfly Engine Ace - Ace Menu Engine v1.08, but putting the :something in your script not works...

Am I missing something?

Share this post


Link to post
Share on other sites

I did this on my Destiny Engine - Menu Meteor. What I did was to create an array of the menu descriptions first:

    # What is showed up on the item indicator above the menu is no other
    # than this. This means when we select a part of your menu, these
    # help indicators show up to tell them what it means. Ya know,
    # its boring to use the same terms over and over again. Mind naming
    # your menu Item as Meliadul, that's also cool...indicate what it means
    # above though, lol.
    
    MENU_HELP = [
    "ITEMS: The present items in your inventory.",   
    "REGALIA: Change your equipments.",
    "STREGA: Your skills present to use.",     
    "STATUS: View your current status",
    "PATROL: Change your party formation",
    "RECORD: Save your current progress.",
    "EGRESS: Quit or restart game."
    ]

Then, I have to create the window:

 

Then create the window for the header:

class Window_MeteorHeader < Window_Base
  include Destiny_Engine::Meteor
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, Graphics.width, 48)
    self.opacity = MENU_ELEMENTS.values[1]
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    draw_text(4, 0, Graphics.width, line_height, MENU_HELP[$game_system.counter_variable])
  end
  #--------------------------------------------------------------------------
  # * Open Window
  #--------------------------------------------------------------------------
  def open
    refresh
    super
  end
end

update that, because you'll have to make sure the window help updates per selected command in index:

class Window_MenuCommand < Window_Command
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 47)
    select_last
    self.opacity = 0
  end

  def update_help
    @help_window.set_rgss3spvii_help(@index)
  end  
end

But of course you'll need to set up the method like I did there:

class Window
  #--------------------------------------------------------------------------
  # * Set Mirai Help
  #--------------------------------------------------------------------------  
  def set_rgss3spvii_help(index)
    return if @index == index # To prevent excessive redrawing
    @index = index
    $game_system.counter_variable = index
    refresh
  end
end

This will take time to explain of all the things I did on the engine, but if you want a reference, look at my 3 Actors Theme, as it uses the same thing. You can download it here for reference.

Share this post


Link to post
Share on other sites

After looking/trying/experimenting/crashing I still don't know how to setup that properly.

My scripting skills are as awesome as potato in the basement and I can't figure out many things.

 

Could I get more info what, where and how should I setup things?

Sorry for being that stupid.

Share this post


Link to post
Share on other sites

 

Could I get more info what, where and how should I setup things?

 

You could and you should, but getting it from these forums is at best like getting an analgesic for a long-lasting flu. It might help you with one problem, but you will be having many more in the future (and the responses aren't guaranteed to come in a timely fashion either). That's just coding and debugging for you.

 

Like I said before, I find the best way to find out how to do it is to take a look at the examples already present in the default scripts. For example, I know that the help window is displayed and used when I take a look at my party's skills, so I'll take a look at Scene_Skill. I instantly see a method called "create_help_window" called, but I do a Ctrl-F and the method isn't defined in Scene_Skill. So I do a Ctrl-Shift-F (global search) and find that it's created in Scene_MenuBase, Scene_File and Scene_Battle. Or I could go up the inheritance chain and look through Scene_Skill's superclass, Scene_ItemBase (and find it's not defined there either, so I go up to Scene_MenuBase).

 

Reading the method tells me that the it assigns the help window Window_Help to the instance variable "@help_window". I go back to Scene_Skill and do a search for "@help_window". I find it has been passed to two other variables, "@command_window" and "@item_window" respectively through a setter method and that these are the variables that have been assigned to create Window_SkillCommand and Window_SkillList.

 

I know that Window_SkillCommand is the window that shows the skill categories ("Special", "Magic", ect.) and does not normally display any help text, so I take a look at Window_SkillList. I do a search for "def help_window". It's not there, so I do a global search and find it's defined in Window_Selectable, which happens to be Window_SkillList's superclass. I find the method does two things - sets Window_Selectable's own "@help_window" instance variable to Window_Help and then calls the method "call_update_help". I look at "call_update_help" and see that it calls "update_help" (on the condition that the window is activated and that there is, in fact, anything assigned to "@help_window"). I look at "update_help" and see that it calls a method called "clear" from @help_window - which is to say, it calls the "clear" method from Window_Help.

 

I take a look at Window_Help to see what "clear" does. Lo and behold, what's this? The "clear" method calls something named "set_text" with an argument of a blank string. Taking at look at"set_text" tells me that it sets an instance variable "@text" to the argument and then calls the method "refresh". What does refresh do? Besides clearing the contents, it calls "draw_text_ex", which takes the variable "@text" as an argument. At this point, it is probably somewhat clear how Window_Help operates. After all, I have just gone through three of its only five methods.

 

If you were completely unfamiliar with the whole RMVXAce system of scripts, you would then need to look up what "draw_text_ex" does and go all the way up to the help manual and hidden classes to find it's basically a souped-up version of the hidden Window class's "draw_text" method, which is what the engine uses to display text in the message boxes.

 

But you probably wouldn't need to go that far; by now you've probably realized that "set_text" basically displays whatever text is fed in as an argument onto the help window.

 

If you wanted to go further, you might realize that Window_SkillList doesn't use "set_text" and after running a search on "set_item" find that Window_SkillList calls that method instead under its "update_help" (which yes, means it overwrites that method from its superclass). The comments for "set_item" also tell you that the argument is meant to be an item or skill object (which you will probably not know without looking through the help manual can be any RPG:BaseItem object), which works for Window_SkillList, but not for your menu. But that's a moot point, since "set_item" calls "set_text" anyway and you know what that does. And now you know that the help window is created in a Scene and then passed to other Windows, which then call "set_text" or "set_item" to display its text.

 

I could have used a much shorter example involving Scene_File, which both creates Window_Help and directly calls its "set_text". Or I could have said to run a search for "help_window" on Window_SkillList and showed that it calls "set_item" in order to avoid looking through Window_Selectable. But it is not always going to be that quick. I deliberately used a longer example to attempt to illustrate more realistically what the process of finding out how everything works is like. The more familiar you are with the system, the less time it will take - but you're not going to get familiar without actually digging into it.

 

And even that long-winded example I used will probably take only ten or twenty minutes as opposed to waiting for days to get an answer on forums.

 

Of course, this still only works when you have an actual example to refer to. If you're trying to do something without any or many similar examples to work off (i.e. displaying 3D models or something - though even then there's probably a few scripts floating around for that too) then you'll have to be creative. That's when asking online could be worth it.

 

I'm not trying to suggest asking the community is a bad thing by any means, but when there are readily-available examples, it is usually faster just to study from them than wait for an answer to come to you online. Of course, there's also just not knowing how to read the syntax, but that's a different matter entirely.

 

EDIT: By the way, if you bothered to pay attention to the whole wall of text, bravo and you'll probably now realize that soulpour's example is less than neat and that I cannot see a reason for all that is holy why anyone would want to make a whole new help window that does essentially exactly the same thing as the existing help window, much less edit the hidden Window class in order to add a random text setting method that creates some random global counter variable for gawd know's what reason when you can just use the index from the menu window instead.... you know what. I'm just gonna stop ranting now.

 

No offense soulpour. I'm sure you have a good reason for it.

Edited by Traverse

Share this post


Link to post
Share on other sites

HOLY BALLS what a wall of text.

I'll try going through all that stuff and find how to replicate that window to main menu.

To be honest, I was trying to do that at the first place, I'm always referring to base scripts, when trying to do something, but there are things, that I still don't understand...

 

Well... I'll try again ~

The adventure begins!

Share this post


Link to post
Share on other sites

heres a basic example for the default menu to have a help window at the bottom

 

class Window_MenuCommand < Window_Command
 
  alias menuhelpwindow_init initialize
 
  def initialize(*args)
    menuhelpwindow_init(*args)
    @menu_help_window = Window_Help2.new
    @menu_help_window.visible = false
    @menu_help_window.z = 200
  end
 
  def update
    super
    case current_symbol
    when :item
      htext = "Opens the inventory menu"
    when :skill
      htext = "Opens the list of skills the selected actor knows"
    when :equip
      htext = "Opens the equipment menu"
    when :status
      htext = "Displays basic information about the selected actor"
    when :formation
      htext = "Allows you to edit the party formation"
    when :save
      htext = "Opens the save menu"
    else
      htext = "Exit to title or desktop"
    end
    @menu_help_window.set_text(htext)
    if self.visible && self.active
      @menu_help_window.visible = true
    else
      @menu_help_window.visible = false
    end
  end
 
  def dispose
    super
    @menu_help_window.dispose unless @menu_help_window.disposed?
  end
 
end


class Window_Help2 < Window_Base

  def initialize(line_number = 2)
    super(0, Graphics.height - fitting_height(line_number), Graphics.width, fitting_height(line_number))
  end

  def set_text(text)
    if text != @text
      @text = text
      refresh
    end
  end

  def clear
    set_text("")
  end

  def refresh
    contents.clear
    draw_text_ex(4, 0, @text)
  end
end

Share this post


Link to post
Share on other sites

Hi Traverse. I coded that when I was like like 4 month old in scripting, I never even know there's a method called index. So the way I did it was like to make a counter variable. You're right, its actually not that neat. I'd also want to point out that my example for the three actors menu is kinda old, so let me do a simple way I know.

 

First, I would create a module to hold the numbers of texts displayed in the help form. Like so:

module HelpWindow
  Help_Text = [
  "Items: Items in your library.",
  "Skills: Your particular set of skills.",
  "Equip: Change equipments",
  "Status: Your stats",
  "Formation: Change formation.",
  "Save: Save progress",
  "End: Game End"
  ]
end

Second, I would make an instance variable inside Game_System, which we would equate the value of the @command_window.index later.

class Game_System
  attr_accessor :menu_index
  alias point_menu_item_init initialize
  def initialize
    point_menu_item_init
    @menu_index = 0
  end
end

as you can see, we originally made it 0.

 

Second, from the Window_Gold, we can replicate that and make a help window.

class Window_MenuHelp < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, window_width, fitting_height(1))
    refresh
  end
  #--------------------------------------------------------------------------
  # * Get Window Width
  #--------------------------------------------------------------------------
  def window_width
    return 400
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    draw_text_ex(0, 0, HelpWindow::Help_Text[$game_system.menu_index])
  end
  #--------------------------------------------------------------------------
  # * Open Window
  #--------------------------------------------------------------------------
  def open
    refresh
    super
  end
end

Notice that inside the draw_text_ex, there's the 0 and 0 there which is the x and y. Make sure you put values in em, or else, it won't show. We said that it should draw the text from here HelpWindow::Help_Text[$game_system.menu_index]. It means that it should display the element id value of the menu_index from game system. That would always be Item or element id 0. We haven't updated it yet, that's why. So on Scene_Menu, I can do something like this:

class Scene_Menu < Scene_MenuBase
  alias scene_menu_commands_start start
  #--------------------------------------------------------------------------
  # * Start Processing
  #--------------------------------------------------------------------------
  def start
    scene_menu_commands_start
    create_help_window
  end
  
  def update
    super
    $game_system.menu_index = @command_window.index
    @window_help.refresh
  end
  
  
  def create_help_window
    @window_help = Window_MenuHelp.new
    @window_help.x = 0
    @window_help.y = 80
  end
  
end

and this is what it looks like:

 

hgts146.jpg

 

You can organize the values later.

Share this post


Link to post
Share on other sites

WOW thank you all for creating that wall of texts for me. =3
 
@Xypher @Soulpour777 these are golden answers!
Well... both seems to work, now I'm not sure which one should I use... =P

 

@Xypher - Your script looks and works great! ~ I liked the "case" here, which would be great for me, but the window seems to be disposed too early ~ when selecting "Equip" etc. and the cursor goes to actor selection - the help window is disposed and that looks kinda weird.

 

@Soulpour777 - This works just perfect! But I have a question - What if some commands will be added/removed in mid-game? For example, the save command would be disabled in some places (removed from menu) ~ what will happen to the array? Will the description go off from some commands?

Edited by Rikifive

Share this post


Link to post
Share on other sites

 

class Window_MenuCommand < Window_Command
 
  alias menuhelpwindow_init initialize
 
  def initialize(*args)
    menuhelpwindow_init(*args)
    @menu_help_window = Window_Help2.new
    @menu_help_window.visible = true
    @menu_help_window.z = 200
  end
 
  def update
    super
    case current_symbol
    when :item
      htext = "Opens the inventory menu"
    when :skill
      htext = "Opens the list of skills the selected actor knows"
    when :equip
      htext = "Opens the equipment menu"
    when :status
      htext = "Displays basic information about the selected actor"
    when :formation
      htext = "Allows you to edit the party formation"
    when :save
      htext = "Opens the save menu"
    else
      htext = "Exit to title or desktop"
    end
    @menu_help_window.set_text(htext)
    if self.visible # && self.active
      @menu_help_window.visible = true
    else
      @menu_help_window.visible = false
    end
  end
 
  def dispose
    super
    @menu_help_window.dispose unless @menu_help_window.disposed?
  end
 
end


class Window_Help2 < Window_Base

  def initialize(line_number = 2)
    super(0, Graphics.height - fitting_height(line_number), Graphics.width, fitting_height(line_number))
  end

  def set_text(text)
    if text != @text
      @text = text
      refresh
    end
  end

  def clear
    set_text("")
  end

  def refresh
    contents.clear
    draw_text_ex(4, 0, @text)
  end
end
  • Like 1

Share this post


Link to post
Share on other sites

@Soulpour777 - This works just perfect! But I have a question - What if some commands will be added/removed in mid-game? For example, the save command would be disabled in some places (removed from menu) ~ what will happen to the array? Will the description go off from some commands?

 

The array would still be the same in element contents. If you'd like it to be changeable over time, what I'd do would be to change the module into a changeable value. I'd make sure to create a value, could be an instance from Game_System and clone the module, and add or delete elements of the array mid game.

 

This could be a viable solution or presentation to what I just said:

class Game_System
  attr_accessor :menu_index
  attr_accessor :original_commands
  alias point_menu_item_init initialize
  def initialize
    point_menu_item_init
    @menu_index = 0
    @original_commands = HelpWindow::Help_Text.clone
  end
end

There, you can see that I made an attr_acessor called original_commands. It's value is a cloned Help_Text array. So whenever you removed the save game option, all you have to do is remove that particular element on your original commands:

@original_commands.delete(HelpWindow::Help_Text[5])

of course, you can find a way to assign which you want to delete as well via a variable and make sure to point that to the array. Then, that is where you'd exactly get the values for the text displayed on the window:

class Window_MenuHelp < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, window_width, fitting_height(1))
    refresh
  end
  #--------------------------------------------------------------------------
  # * Get Window Width
  #--------------------------------------------------------------------------
  def window_width
    return 400
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    draw_text_ex(0, 0, $game_system.original_commands[$game_system.menu_index])
  end
  #--------------------------------------------------------------------------
  # * Open Window
  #--------------------------------------------------------------------------
  def open
    refresh
    super
  end
end
Edited by Soulpour777

Share this post


Link to post
Share on other sites

@Xypher Now it's absolutely perfect! Simple and easy to setup! I LOVE IT! Thank you so much for that!

 

@Soulpour777 Everything works perfect now! But Xypher's is easier to setup, everything is automatic. =P Don't get me wrong, please.

 

Thank you both so much for help! I really appreciate that!

Now everything is fine and I can start customizing my menu. =) *there's one more problem, but that can be done later*

Share this post


Link to post
Share on other sites

I wonder why my script didn't work? Oh well.

Share this post


Link to post
Share on other sites

Maybe I just broke something ~ your script worked fine, but not in main menu ~ I tried some things but with no effect.

Share this post


Link to post
Share on other sites

Well you would have needed to add the help window to the main menu right I guess, I just assumed you knew how to do that.

Share this post


Link to post
Share on other sites

I kinda added, but I think it has missing refreshes etc. =P

Share this post


Link to post
Share on other sites

Ah I see. Well glad you seemed to solve this issue! *sprinkles fairy dust on you*

Edited by KilloZapit

Share this post


Link to post
Share on other sites

Thank you ~ and thank you for fairy dust! =)

Share this post


Link to post
Share on other sites

I know this topic is already resolved, but I can't help but throw my hands up in exasperation when I look back at all of the answers that have been given for a problem that, really, is this:

 

 

 

module COMMAND_DESCRIPTIONS
  COMMAND = {
  :item => "View and use items.",
  :skill => "View and use skills.",
  :equip => "View and change actor equipment.",
  :status => "View actor status.",
  :formation => "Change party formation.",
  :save => "Save the game.",
  :game_end => "Return to title screen.",
  :cancel => "Exit main menu.",
  }  
end

class Scene_Menu < Scene_MenuBase
  
  alias menu_help_window_start start
  def start 
    menu_help_window_start
    create_help_window
  end

  def update_basic
    update_help
    super
  end  
  
  def update_help
    return if @command_window.current_data.nil?
    selected_command = @command_window.current_data[:symbol]
    @help_window.set_text(COMMAND_DESCRIPTIONS::COMMAND[selected_command])
  end

  def create_help_window # <== This doesn't even need to be here.
    super                # I just threw it in as a reminder that you can alter
  end                    # the dimensions of the window after creating it.

end

 

 

 

easy to write a solution to. Seriously guys? Whole new custom help windows? New Game_System variables? Overwriting Window_MenuCommand? Really?

 

The only thing I didn't do here was adjust the dimensions of the windows to make space for the help window, but I'm sure you guys all already know how to do that.

 

EDIT: And before anyone asks, yes - this extremely simple modification to Scene_Menu WILL work with custom menu commands too. All you need to do is add a new key to the hash corresponding to the symbol of the custom command. But I'm sure you could work that out by reading the code.

Edited by Traverse
  • Like 3

Share this post


Link to post
Share on other sites

I... don't understand what you mean ~ I'm confused.

Is there something wrong with previous answers?

Edited by Rikifive

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
Top ArrowTop Arrow Highlighted