[RESOLVED] Al Bhed script? Is it possible?

Started by Holyrapid, July 14, 2009, 05:00:26 am

Previous topic - Next topic

Holyrapid

July 14, 2009, 05:00:26 am Last Edit: July 18, 2009, 07:00:01 am by Blizzard
So, is it possible to crete a ciphere substitution script? Like Al Bhed in FFX?
I mean, it would automatically put a certain color to letters that haven´t been learned, and a different color to the translated ones? Am i making any sense here? Anyway, if you´ve played Final Fantasy X (10) you know what i´m talking about.

I´ll put an example: Pmewwynt in this, you haven´t learned any letters.
The you find two letters, and next time you look at the text, it has become like this: B mewwynd
then eventually you have found the reamining letters so it now looks like this: Blizzard

So, that´s what i want. But, before making a request, i want to know if it´s even possible.

Jackolas

don't think you need a script for this... events can handle this without a problem

Holyrapid

?~? Well, it would take a whole lot of swiches, what 26. Well, i was in a kind of a dumb mood since i just had woken up, an for somereason thought this thing... :P
No wait, it would take more than 26 switches, since the maximum amount is 26*25*24*23...*1
aka 26! if i remeber my math techings correctly... So script would be a lot easier than eventing... or if not easier, simpler i think...

Hellfire Dragon

I'm almost certain I saw a script for this somewhere... :uhm:
@Jackolas, it would take alot of conditional branches :P

*goes to look for script*

Holyrapid

It would take millions if i got it right. Just multiply 26 backwars, to times 1. so like this 26*25*24...*2*1=?X?X?X?X?X?

Seox

I am positive that this can be scripted, as the RTP's scripts replace certain things, too, like the variable shortcuts, in message boxes. It'd be EXTREMELY easy to use, and as a matter of fact, you could/should probably have it so that you flip the "al bhed" switch, and....well, you get the drill. I'm pretty busy now, but PM me if a few days go by without any results, and I'll be glad to help. ^_^


Seox out.
... (<<<<<<<<<<<<<<< TEH DOTS OF DOOM. Hey, kinda catchy. :naughty:)

Hellfire Dragon

This is what I found

Though that's definetly not the one I was thinking about... :<_<:
Well, there is Seph's Multiple Languages Script but that needs the SDK.
Quote from: Blizzard @http://rmrk.net/index.php/topic,14223.msg181545.html#msg181545
Post Seph's script, I'll make it non-SDK.
(Lol, I always wanted to say that! ^__^ )

The lies Blizzy >:( (unless you already did :P)

Seox

Quote from: Hellfire Dragon on July 14, 2009, 10:43:48 am
The lies Blizzy >:( (unless you already did :P)


Lolz, let's go beat the shit out of him.

*Blizz walks in*


OH!. Errrr.....Hi Blizz, the most awesomeful person in da world. Hiya! *hides gun behind back*
... (<<<<<<<<<<<<<<< TEH DOTS OF DOOM. Hey, kinda catchy. :naughty:)

fugibo

Seox, I expect you to try this. It'll be very good for you as a scripter. >=V

Just kidding. But, you should take a shot at it; just add a message window command (\g, \c, etc) that makes everything until the next instance of that command be translated.

Aqua

This really isn't too hard.

You'd just need to tell which string is in Al Bhed, then split that string into individual letters, then if the letter is learned, pass it through a case statement that will spit out the unciphered letter, then put the string back together, and display it XD

I might make this for fun... o.o

Holyrapid

So, if i understand Aqua correctly, with a proper script, i just need 26 switches. One for each letter...
Let´s mark this a official request then, shant we? (is that even a proper word :P, well, i mean by that slaa we not... :P)

Aqua

You don't need any switches, just a case statement.

Seox

July 14, 2009, 12:10:00 pm #12 Last Edit: July 14, 2009, 12:47:03 pm by Seox
No, if you use a script, you should only need to start messages with a shortcut type thing.

IE

\albhed[So, you want to know what color my underwear is?]

And it would do everything else for you. No switches. No variables. No hassle. There are some things money can't buy. For everything else, there's mastercard.


Ya know, if Aqua doesn't do this, I will. Thanks, Longfellow ^_^


EDIT:

Ok, I've talked with Aqua, and I'm going to attempt this myself. Gimme a bit of time, I have a bit of a queue to work through >.<. Should be able to start within a few days. ^_^
... (<<<<<<<<<<<<<<< TEH DOTS OF DOOM. Hey, kinda catchy. :naughty:)

Blizzard

Quote from: Hellfire Dragon on July 14, 2009, 10:43:48 am
This is what I found

Though that's definetly not the one I was thinking about... :<_<:
Well, there is Seph's Multiple Languages Script but that needs the SDK.
Quote from: Blizzard @http://rmrk.net/index.php/topic,14223.msg181545.html#msg181545
Post Seph's script, I'll make it non-SDK.
(Lol, I always wanted to say that! ^__^ )

The lies Blizzy >:( (unless you already did :P)


Lol, how old is that post? xD
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

Hellfire Dragon

July 15, 2009, 05:23:18 am #14 Last Edit: July 15, 2009, 05:24:59 am by Hellfire Dragon
Over 2 years old
Quote
March 23, 2007, 04:03:50 AM

You'd think 2 years would be enough for blizz to finish a script :O.o: :V: :xD:

:P

Blizzard

July 15, 2009, 07:14:33 am #15 Last Edit: July 15, 2009, 03:22:15 pm by Blizzard
I'll do it somewhere later today if I can find the time.

EDIT: Here it is without AIDS. I mean SDK. It wasn't really dependant on SDK, it was just a bit badly coded.

Spoiler: ShowHide
#==============================================================================
# ** Multiple Languages
#------------------------------------------------------------------------------
# SephirothSpawn
# Version 2
# 2006-08-27
#------------------------------------------------------------------------------
# * Version History :
#
#   Version 1 ---------------------------------------------------- (2005-09-04)
#    - Note : 99% of the System Created By Makeamidget
#   Version 2 ---------------------------------------------------- (2006-08-27)
#    - Update : Rescripted Entire System System
#------------------------------------------------------------------------------
# * Description :
#
#   This script was designed to let you simulate multiple languages through
#   letter transfers. It allows you to transfer one letter to another, until
#   you learn the letter (One Letter = Another Letter). You can set up
#   multiple languages and control color of known and unknown letters for
#   each language.
#------------------------------------------------------------------------------
# * Instructions :
#
#   Place The Script Below the SDK and Above Main.
#
#   Turning on Different Language:
#    - $game_languages.language_id = language_id
#
#   Turning off multiple langauges:
#    - $game_languages.language_id = nil
#
#   To Learn a letter, use:
#    - $game_languages.learn_letter(language_id, 'letter')
#
#   ** NOTE: Due to the complexity of message systems, you cannot use special
#   commands such as the show gold window when displaying an alternate language
#------------------------------------------------------------------------------
# * Setting Up A Language
#
#   Setting Color for Known and Unknown letters
#    - Known_Letter_Color = {language_id => text_color, ...}
#    - Unknown_Letter_Color = {language_id => text_color, ...}
#
#   Setting Up Language Table
#    - Languages = {language_id => <language_table>, ...}
#
#   <language_table> is a hash of all letters and symbols that will transfer
#   to something else. The keys are what the letter is, and the values are
#   how the letters will appear until translated.
#
#   Example:
#    {'a' => 'j', 'b' => 'k', 'c' => 'l', 'd' => 'm', 'e' => 'n'}
#
#    CbaEBac -> LkjNKjl
#------------------------------------------------------------------------------
# * Credits :
#
#   Thanks To Makeamidget For helping me with previous versions
#==============================================================================

#==============================================================================
# ** Game_Languages
#==============================================================================

class Game_Languages
  #--------------------------------------------------------------------------
  # * Letter Colors
  #
  #  ~ language_id => text_colors
  #
  #  The Text Colors are the colors you would use when you use \c[n].
  #  By Default, these are the colors:
  #
  #  0 : White            1 : Dark Blue
  #  2 : Red              3 : Green
  #  4 : Light Blue       5 : Purple
  #  6 : Yellow           7 : Gray
  #--------------------------------------------------------------------------
  Known_Letter_Color = {
    1 => 0
  }
  Unknown_Letter_Color = {
    1 => 6
  }
  #--------------------------------------------------------------------------
  # * Languages
  #
  #  ~ language_id => {a => 'f', 'b' => 'c', ...}
  #
  # * Template For Letters
  #  = {'a' => '', 'b' => '', 'c' => '', 'd' => '', 'e' => '',
  #     'f' => '', 'g' => '', 'h' => '', 'i' => '', 'j' => '',
  #     'k' => '', 'l' => '', 'm' => '', 'n' => '', 'o' => '',
  #     'p' => '', 'q' => '', 'r' => '', 's' => '', 't' => '',
  #     'u' => '', 'v' => '', 'w' => '', 'x' => '', 'y' => '',
  #     'z' => ''}
  #--------------------------------------------------------------------------
  Languages = {
    1 => {'a' => 'y', 'b' => 'p', 'c' => 'l', 'd' => 't', 'e' => 'a',
          'f' => 'v', 'g' => 'k', 'h' => 'r', 'i' => 'e', 'j' => 'z',
          'k' => 'g', 'l' => 'm', 'm' => 's', 'n' => 'h', 'o' => 'u',
          'p' => 'b', 'q' => 'x', 'r' => 'n', 's' => 'c', 't' => 'd',
          'u' => 'i', 'v' => 'v', 'w' => 'f', 'x' => 'q', 'y' => 'o',
          'z' => 'w'
    }
  }
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :language_id
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    @language_id = nil
    @known_letters = {}
  end
  #--------------------------------------------------------------------------
  # * Learn Letter
  #--------------------------------------------------------------------------
  def learn_letter(language_id, letter)
    unless @known_letters.has_key?(language_id)
      @known_letters[language_id] = []
    end
    unless @known_letters[language_id].include?(letter.downcase)
      @known_letters[language_id] << letter.downcase
    end
  end
  #--------------------------------------------------------------------------
  # * Change To Language
  #--------------------------------------------------------------------------
  def change_to_language
    return_text = ''
    text = $game_temp.message_text
    last_color = 0
    begin
      while ((c = text.slice!(/./m)) != nil)
        if @known_letters.has_key?(@language_id)
          if @known_letters[@language_id].include?(c.downcase)
            next_color = Known_Letter_Color[@language_id]
            unless next_color == last_color
              last_color = next_color
              return_text += '\c' + "[#{next_color}]"
            end
            return_text += c
            next
          end
        end
        if Languages[@language_id].include?(c.downcase)
          if c.upcase == c
            c = Languages[@language_id][c.downcase].upcase
          else
            c = Languages[@language_id][c]
          end
        end
        next_color = Unknown_Letter_Color[@language_id]
        unless next_color == last_color
          last_color = next_color
          return_text += '\c' + "[#{next_color}]"
        end
        return_text += c
      end
    end
    $game_temp.message_text = return_text
  end
end

#==============================================================================
# ** Window_Message
#==============================================================================

class Window_Message
  #--------------------------------------------------------------------------
  # * Alias Listings
  #--------------------------------------------------------------------------
  alias seph_gmlngs_wdmsg_refresh refresh
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    # If Alternate Languages Isn't Nil
    unless $game_languages.language_id.nil?
      $game_languages.change_to_language
    end
    # Original Method Refresh
    seph_gmlngs_wdmsg_refresh
  end
end

#==============================================================================
# ** Scene_Title
#==============================================================================

class Scene_Title
  #--------------------------------------------------------------------------
  # * Alias Listings
  #--------------------------------------------------------------------------
  alias seph_gmlngs_scnttl_cng command_new_game
  #--------------------------------------------------------------------------
  # * Command : New Game
  #--------------------------------------------------------------------------
  def command_new_game
    # Original Command New Game
    seph_gmlngs_scnttl_cng
    # Creates Game Languages Game Data
    $game_languages = Game_Languages.new
  end
end

#==============================================================================
# ** Scene_Save
#==============================================================================

class Scene_Save
  #--------------------------------------------------------------------------
  # * Alias Listings
  #--------------------------------------------------------------------------
  alias seph_gmlngs_scnsave_wd write_save_data
  #--------------------------------------------------------------------------
  # * Command : New Game
  #--------------------------------------------------------------------------
  def write_save_data(file)
    # Original Write Data
    seph_gmlngs_scnsave_wd(file)
    # Saves Game Languages Data
    Marshal.dump($game_languages, file)
  end
end

#==============================================================================
# ** Scene_Load
#==============================================================================

class Scene_Load
  #--------------------------------------------------------------------------
  # * Alias Listings
  #--------------------------------------------------------------------------
  alias seph_gmlngs_scnload_rd read_save_data
  #--------------------------------------------------------------------------
  # * Command : New Game
  #--------------------------------------------------------------------------
  def read_save_data(file)
    # Original Write Data
    seph_gmlngs_scnload_rd(file)
    # Saves Game Languages Data
    $game_languages = Marshal.load(file)
  end
end
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

Seox

Quote from: Blizzard on July 15, 2009, 07:14:33 am
I'll do it somewhere later today if I can find the time.

EDIT: Here it is without AIDS. I mean SDK. It wasn't really dependant on SDK, it was just a bit badly coded.

Spoiler: ShowHide
#==============================================================================
# ** Multiple Languages
#------------------------------------------------------------------------------
# SephirothSpawn
# Version 2
# 2006-08-27
#------------------------------------------------------------------------------
# * Version History :
#
#   Version 1 ---------------------------------------------------- (2005-09-04)
#    - Note : 99% of the System Created By Makeamidget
#   Version 2 ---------------------------------------------------- (2006-08-27)
#    - Update : Rescripted Entire System System
#------------------------------------------------------------------------------
# * Description :
#
#   This script was designed to let you simulate multiple languages through
#   letter transfers. It allows you to transfer one letter to another, until
#   you learn the letter (One Letter = Another Letter). You can set up
#   multiple languages and control color of known and unknown letters for
#   each language.
#------------------------------------------------------------------------------
# * Instructions :
#
#   Place The Script Below the SDK and Above Main.
#
#   Turning on Different Language:
#    - $game_languages.language_id = language_id
#
#   Turning off multiple langauges:
#    - $game_languages.language_id = nil
#
#   To Learn a letter, use:
#    - $game_languages.learn_letter(language_id, 'letter')
#
#   ** NOTE: Due to the complexity of message systems, you cannot use special
#   commands such as the show gold window when displaying an alternate language
#------------------------------------------------------------------------------
# * Setting Up A Language
#
#   Setting Color for Known and Unknown letters
#    - Known_Letter_Color = {language_id => text_color, ...}
#    - Unknown_Letter_Color = {language_id => text_color, ...}
#
#   Setting Up Language Table
#    - Languages = {language_id => <language_table>, ...}
#
#   <language_table> is a hash of all letters and symbols that will transfer
#   to something else. The keys are what the letter is, and the values are
#   how the letters will appear until translated.
#
#   Example:
#    {'a' => 'j', 'b' => 'k', 'c' => 'l', 'd' => 'm', 'e' => 'n'}
#
#    CbaEBac -> LkjNKjl
#------------------------------------------------------------------------------
# * Credits :
#
#   Thanks To Makeamidget For helping me with previous versions
#==============================================================================

#==============================================================================
# ** Game_Languages
#==============================================================================

class Game_Languages
 #--------------------------------------------------------------------------
 # * Letter Colors
 #
 #  ~ language_id => text_colors
 #
 #  The Text Colors are the colors you would use when you use \c[n].
 #  By Default, these are the colors:
 #
 #  0 : White            1 : Dark Blue
 #  2 : Red              3 : Green
 #  4 : Light Blue       5 : Purple
 #  6 : Yellow           7 : Gray
 #--------------------------------------------------------------------------
 Known_Letter_Color = {
   1 => 0
 }
 Unknown_Letter_Color = {
   1 => 6
 }
 #--------------------------------------------------------------------------
 # * Languages
 #
 #  ~ language_id => {a => 'f', 'b' => 'c', ...}
 #
 # * Template For Letters
 #  = {'a' => '', 'b' => '', 'c' => '', 'd' => '', 'e' => '',
 #     'f' => '', 'g' => '', 'h' => '', 'i' => '', 'j' => '',
 #     'k' => '', 'l' => '', 'm' => '', 'n' => '', 'o' => '',
 #     'p' => '', 'q' => '', 'r' => '', 's' => '', 't' => '',
 #     'u' => '', 'v' => '', 'w' => '', 'x' => '', 'y' => '',
 #     'z' => ''}
 #--------------------------------------------------------------------------
 Languages = {
   1 => {'a' => 'y', 'b' => 'p', 'c' => 'l', 'd' => 't', 'e' => 'a',
         'f' => 'v', 'g' => 'k', 'h' => 'r', 'i' => 'e', 'j' => 'z',
         'k' => 'g', 'l' => 'm', 'm' => 's', 'n' => 'h', 'o' => 'u',
         'p' => 'b', 'q' => 'x', 'r' => 'n', 's' => 'c', 't' => 'd',
         'u' => 'i', 'v' => 'v', 'w' => 'f', 'x' => 'q', 'y' => 'o',
         'z' => 'w'
   }
 }
 #--------------------------------------------------------------------------
 # * Public Instance Variables
 #--------------------------------------------------------------------------
 attr_accessor :language_id
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize
   @language_id = nil
   @known_letters = {}
 end
 #--------------------------------------------------------------------------
 # * Learn Letter
 #--------------------------------------------------------------------------
 def learn_letter(language_id, letter)
   unless @known_letters.has_key?(language_id)
     @known_letters[language_id] = []
   end
   unless @known_letters[language_id].include?(letter.downcase)
     @known_letters[language_id] << letter.downcase
   end
 end
 #--------------------------------------------------------------------------
 # * Change To Language
 #--------------------------------------------------------------------------
 def change_to_language
   return_text = ''
   text = $game_temp.message_text
   last_color = 0
   begin
     while ((c = text.slice!(/./m)) != nil)
       if @known_letters.has_key?(@language_id)
         if @known_letters[@language_id].include?(c.downcase)
           next_color = Known_Letter_Color[@language_id]
           unless next_color == last_color
             last_color = next_color
             return_text += '\c' + "[#{next_color}]"
           end
           return_text += c
           next
         end
       end
       if Languages[@language_id].include?(c.downcase)
         if c.upcase == c
           c = Languages[@language_id][c.downcase].upcase
         else
           c = Languages[@language_id][c]
         end
       end
       next_color = Unknown_Letter_Color[@language_id]
       unless next_color == last_color
         last_color = next_color
         return_text += '\c' + "[#{next_color}]"
       end
       return_text += c
     end
   end
   $game_temp.message_text = return_text
 end
end

#==============================================================================
# ** Window_Message
#==============================================================================

class Window_Message
 #--------------------------------------------------------------------------
 # * Alias Listings
 #--------------------------------------------------------------------------
 alias seph_gmlngs_wdmsg_refresh refresh
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh
   # If Alternate Languages Isn't Nil
   unless $game_languages.language_id.nil?
     $game_languages.change_to_language
   end
   # Original Method Refresh
   seph_gmlngs_wdmsg_refresh
 end
end

#==============================================================================
# ** Scene_Title
#==============================================================================

class Scene_Title
 #--------------------------------------------------------------------------
 # * Alias Listings
 #--------------------------------------------------------------------------
 alias seph_gmlngs_scnttl_cng command_new_game
 #--------------------------------------------------------------------------
 # * Command : New Game
 #--------------------------------------------------------------------------
 def command_new_game
   # Original Command New Game
   seph_gmlngs_scnttl_cng
   # Creates Game Languages Game Data
   $game_languages = Game_Languages.new
 end
end

#==============================================================================
# ** Scene_Save
#==============================================================================

class Scene_Save
 #--------------------------------------------------------------------------
 # * Alias Listings
 #--------------------------------------------------------------------------
 alias seph_gmlngs_scnsave_wd write_save_data
 #--------------------------------------------------------------------------
 # * Command : New Game
 #--------------------------------------------------------------------------
 def write_save_data(file)
   # Original Write Data
   seph_gmlngs_scnsave_wd(file)
   # Saves Game Languages Data
   Marshal.dump($game_languages, file)
 end
end

#==============================================================================
# ** Scene_Load
#==============================================================================

class Scene_Load
 #--------------------------------------------------------------------------
 # * Alias Listings
 #--------------------------------------------------------------------------
 alias seph_gmlngs_scnload_rd read_save_data
 #--------------------------------------------------------------------------
 # * Command : New Game
 #--------------------------------------------------------------------------
 def read_save_data(file)
   # Original Write Data
   seph_gmlngs_scnload_rd(file)
   # Saves Game Languages Data
   $game_languages = Marshal.load(file)
 end
end




I'm powering you up, JUST FOR SAYING THAT.


With real AIDS, you can't get rid of it. At least with RGSSAIDS, you can. Hurray, CTRL + A + Delete!



Which is really quite ironic. Now you're going from lv 270 to 271. I just ruined a rifle round, and I'm the ballistics maven.

:/
... (<<<<<<<<<<<<<<< TEH DOTS OF DOOM. Hey, kinda catchy. :naughty:)

Holyrapid

Powers/levels up (one up something eh, ;))
Thank you Blizzard. You´re a scripting god!

Seox

Quote from: Pyhankoski on July 16, 2009, 03:32:10 am
Powers/levels up (one up something eh, ;))
Thank you Blizzard. You´re a scripting god!



That's demeaning. He's better than A scripting god. He's THE scripting god.  :haha:
... (<<<<<<<<<<<<<<< TEH DOTS OF DOOM. Hey, kinda catchy. :naughty:)

Blizzard

Eh, ok, let's lock this topic before it gets spammed more since the problem has already been solved.
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.