how to check if a method has been aliased? - Printable Version +- Save-Point (https://www.save-point.org) +-- Forum: Games Development (https://www.save-point.org/forum-4.html) +--- Forum: Code Support (https://www.save-point.org/forum-20.html) +--- Thread: how to check if a method has been aliased? (/thread-850.html) |
how to check if a method has been aliased? - Charlie Fleed - 01-19-2010 What is the proper code to avoid that pressing F12 in rmxp an aliased method is aliased again causing the system to crash? I understand that this happens when one aliases one of the methods in the hidden classes, like Sprite for example. I'm looking for the code that checks out if the alias has been done, so that i can use it as a condition to decide if aliasing or not. [Resolved] how to check if a method has been aliased? - DerVVulfman - 01-20-2010 It isn't just hidden classes. No - no - no . :cheery: Place a condition to check an @instance value around your aliased method in question, and immediately set that @instance value to something other than 'nil'. Code: #-------------------------------------------------------------------------- As you can see (and thanks to SephirothSpawn for showing me this), I wrap an entire method in an if...end block that has a condition.... Code: if @derv_anim_bat_stack.nil? It will only perform this method if the @instance value is nil, whereupon I set the @instance to something else. And, yeah. This part of Animated Battlers did create the dreaded F12 crash years ago until this fixed it. [Resolved] how to check if a method has been aliased? - Charlie Fleed - 01-20-2010 I see. This is an option, thank you very much. I was wondering if there is something in Ruby that has been introduced specifically for this purpose. Something involving a defined? call, you know, this method that tells you if a name corresponds to a class, a variable, a method, a constant or nothing. But I had no luck trying to do it this way. I guess I'm going to go with the solution you suggested but I'm still interested in knowing if there's some other way to do it. So if anyone has other inputs... :) [Resolved] how to check if a method has been aliased? - PK8 - 01-21-2010 Hmm, I'm not sure if this would work. Check out method_defined? @ ruby-doc.org. :P [Resolved] how to check if a method has been aliased? - DerVVulfman - 01-21-2010 method_defined? That sounds more like a call to see if a method exists within a class rather than checking to see if one has been aliased. If that is the case, the statement would be useful to see if someone created a new method in their kickin' script for an existing class and you (as a scripter) was performing a compatibility check for that kickin' script. [Resolved] how to check if a method has been aliased? - Wyatt - 01-21-2010 There's a simpler way - there is actually a method for this in fact. method_defined When you alias you define a method, such as - - alias wy_main main So we can do: unless method_defined?(wy_main) alias wy_main main end Or simpler still just alias wy_main main unless method_defined?(wy_main) I can't believe that a couple of years ago Trickster made a "disable F12" script and everyone used it as a fix for this :x Edit: wha- where did those posts come from o.O [Resolved] how to check if a method has been aliased? - DerVVulfman - 01-21-2010 Interesting. So by using: method_defined?(wy_main) ... we can perform a check for an aliased method assuming we know that the actual alias statement looks for the 'new' method name rather than the name of the original method. Nice. |