设为首页收藏本站同能贴吧 切换语言 繁体中文
开启辅助访问 切换到窄版
扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 192|回复: 0

[转载发布] Trilobytes Message System XP

[复制链接]
累计送礼:
0 个
累计收礼:
1 个
  • TA的每日心情
    开心
    昨天 23:21
  • 签到天数: 212 天

    连续签到: 1 天

    [LV.7]常住居民III

    9085

    主题

    867

    回帖

    7万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    7
    卡币
    64471
    OK点
    16
    推广点
    0
    同能卷
    50
    积分
    74453

    灌水之王

    发表于 2026-7-27 18:08:20 | 显示全部楼层 |阅读模式
    Message System XP Version 1.00
    Trilobytes by Trihan
    ​


    Introduction
    This script gives RMXP most of the same additional message codes as are available in Yanfly's Ace Message System for VX Ace.

    Features
    - Ability to display more than 4 lines of text at a time, controlled by a configurable variable
    - Text codes for changing font name, size, colour, outlining and shadow
    - Text codes for displaying a name window to the left, centre or right
    - Text codes to show pictures and icons
    - Text codes to display actor/party names and attributes
    - Text codes to display names of database entries for classes, skills, items, weapons, armours and states

    Screenshots
    Spoiler: Screenshots











    How to Use
    In XP's Script Editor, insert a new line above Main, give it a descriptive name, and paste this script into the large window on the right. Then click Apply to save the changes.

    Script

                    Code:       
    1. #==============================================================================
    2. # Trilobytes - Message System XP v1.00
    3. #
    4. # - Updated: 14/03/22
    5. #==============================================================================
    6. module TLB_MSG
    7.   ROW_VAR = 21
    8.   def self.rows_for_text
    9.     return 4 if ROW_VAR <= 0 || $game_variables[ROW_VAR] <= 0
    10.     return $game_variables[ROW_VAR]
    11.   end
    12. end # TLB_MSG
    13. #==============================================================================
    14. # Version history
    15. #
    16. # 14/03/22 - Finished script
    17. #==============================================================================
    18. # Introduction
    19. # ------------
    20. # This script introduces to RPG Maker XP most of the text codes added to VX
    21. # Ace by Yanfly's Ace Message System. Some of them aren't applicable to XP,
    22. # such as those related to waiting (since XP shows all text at once) and faces
    23. # (since XP doesn't use them).
    24. #==============================================================================
    25. # Instructions
    26. # ------------
    27. # In XP's Script Editor, insert a new line above Main, give it a descriptive
    28. # name, and paste this script into the large window on the right. Then click
    29. # Apply to save the changes.
    30. #
    31. # Text Codes
    32. # ----------
    33. #   Code:           Result:
    34. #     \p[x]         - The name of the party member in slot x.
    35. #     \g            - The name of the currency unit.
    36. #     \c[x]         - Changes text colour to x.
    37. #     \i[x]         - Draws the icon with the filename x.
    38. #     \{            - Increases text size by 8.
    39. #     \}            - Decreases text size by 8.
    40. #     \$            - Opens the gold display window (was previously \g)
    41. #
    42. #   Name Window:    Result:
    43. #     \n<x>         - Opens a name window with the string x on the left side.
    44. #     \nc<x>        - Opens a name window with the string x in the centre.
    45. #     \nr<x>        - Opens a name window with the string x on the right side.
    46. #
    47. #   Position:       Result:
    48. #     \px[x]        - Places the following text at X position x.
    49. #     \py[x]        - Places the following text at Y position x.
    50. #
    51. #   Picture:        Result:
    52. #     \pic[x]       - Draws picture x from the Graphics/Pictures folder.
    53. #
    54. #   Outline:        Result:
    55. #     \oc[x]        - Sets the outline colour to x (as defined in windowskin)
    56. #     \oo[x]        - Sets outline opacity to x (0-255)
    57. #
    58. #   Font:           Result:
    59. #     \fn[x]        - Sets the font name to x.
    60. #     \fz[x]        - Sets the font size to x.
    61. #     \fb           - Toggles font's bold setting.
    62. #     \fi           - Toggles font's italic setting.
    63. #     \fo           - Toggles font's outline.
    64. #     \fs           - Toggles font's shadow.
    65. #     \fr           - Resets all font changes.
    66. #
    67. #   Actor:          Result:
    68. #     \ac[x]        - The name of actor x's class.
    69. #
    70. #     Note: Using 0 or a negative number for x  will use party index instead
    71. #           of actor ID.
    72. #
    73. #   Names:          Result:
    74. #     \nc[x]        - The name of class x.
    75. #     \ni[x]        - The name of item x.
    76. #     \nw[x]        - The name of weapon x.
    77. #     \na[x]        - The name of armour x.
    78. #     \nt[x]        - The name of state x.
    79. #
    80. #   Icon Names:     Result:
    81. #     \ii[x]        - The name of item x, with icon.
    82. #     \iw[x]        - The name of weapon x, with icon.
    83. #     \ia[x]        - The name of armour x, with icon.
    84. #     \is[x]        - The name of skill x, with icon.
    85. #==============================================================================
    86. #
    87. #  Special thanks to Yanfly for the codes used in the VX Ace message system.
    88. #
    89. #==============================================================================
    90. class Interpreter
    91.   #--------------------------------------------------------------------------
    92.   # * Show Text (overwrite)
    93.   #--------------------------------------------------------------------------
    94.   def command_101
    95.     # If other text has been set to message_text
    96.     if $game_temp.message_text != nil
    97.       # End
    98.       return false
    99.     end
    100.     # Set message end waiting flag and callback
    101.     @message_waiting = true
    102.     $game_temp.message_proc = Proc.new { @message_waiting = false }
    103.     # Set message text on first line
    104.     $game_temp.message_text = @list[@index].parameters[0] + "\n"
    105.     line_count = 1
    106.     # Loop
    107.     loop do
    108.       # Workaround for lines in a box that don't fit in the limit
    109.       if @list[@index+1].code == 401 && line_count >= TLB_MSG.rows_for_text
    110.           @list.insert(@index+2, RPG::EventCommand.new(101, @list[@index+1].indent, @list[@index+1].parameters))
    111.           @list.delete_at(@index+1)
    112.           return true
    113.       # If next event command text is on the second line or after
    114.       elsif @list[@index+1].code == 401 || (@list[@index+1].code == 101 && TLB_MSG.rows_for_text >= 4)
    115.         # Add the second line or after to message_text
    116.         #if @list[@index+1].code == 401
    117.           $game_temp.message_text += @list[@index+1].parameters[0] + "\n"
    118.           line_count += 1
    119.         #end
    120.       # If event command is not on the second line or after
    121.       else
    122.         # If next event command is show choices
    123.         if @list[@index+1].code == 102
    124.           # If choices fit on screen
    125.           if @list[@index+1].parameters[0].size <= 4 - line_count
    126.             # Advance index
    127.             @index += 1
    128.             # Choices setup
    129.             $game_temp.choice_start = line_count
    130.             setup_choices(@list[@index].parameters)
    131.           end
    132.         # If next event command is input number
    133.         elsif @list[@index+1].code == 103
    134.           # If number input window fits on screen
    135.           if line_count < 4
    136.             # Advance index
    137.             @index += 1
    138.             # Number input setup
    139.             $game_temp.num_input_start = line_count
    140.             $game_temp.num_input_variable_id = @list[@index].parameters[0]
    141.             $game_temp.num_input_digits_max = @list[@index].parameters[1]
    142.           end
    143.         end
    144.         # Continue
    145.         return true
    146.       end
    147.       # Advance index
    148.       return true if line_count > TLB_MSG.rows_for_text
    149.       @index += 1
    150.     end
    151.   end
    152. end
    153. class Bitmap
    154.   def draw_outline_text(*args)
    155.     if args[0].is_a?(Rect)
    156.       x, y, width, height = args[0].x, args[0].y, args[0].width, args[0].height
    157.       text = args[1]
    158.       alignment = args[2] ? args[2] : 0
    159.     else
    160.       x, y, width, height, text = args
    161.       alignment = args[5] ? args[5] : 0
    162.     end
    163.     draw_text(x+1, y, width, height, text, alignment)
    164.     draw_text(x-1, y, width, height, text, alignment)
    165.     draw_text(x, y+1, width, height, text, alignment)
    166.     draw_text(x, y-1, width, height, text, alignment)
    167.     draw_text(x, y, width, height, text, alignment)
    168.   end
    169. end
    170. class Window_Name < Window_Base
    171.   #--------------------------------------------------------------------------
    172.   # * Object Initialization
    173.   #--------------------------------------------------------------------------
    174.   def initialize(message_window, text, position)
    175.     @message_window = message_window
    176.     width = @message_window.contents.text_size(text).width + 40
    177.     x = @message_window.x
    178.     case position
    179.     when 1:
    180.       x = @message_window.x + @message_window.width - @message_window.width / 2 - width / 2
    181.     when 2;
    182.       x = @message_window.x + @message_window.width - width
    183.     end
    184.     super(x, @message_window.y - 64, width, 64)
    185.     self.contents = Bitmap.new(width - 32, height - 32)
    186.     self.back_opacity = 160
    187.     @text = text.clone
    188.     @position = position
    189.     refresh
    190.   end
    191.   #--------------------------------------------------------------------------
    192.   # * Refresh
    193.   #--------------------------------------------------------------------------
    194.   def refresh
    195.     self.contents.clear
    196.     self.contents.font.color = normal_color
    197.     self.contents.draw_text(4, 0, 120, 32, @text.to_s)
    198.   end
    199. end
    200. class Window_Message < Window_Selectable
    201.   def create_name_window(text, position)
    202.     if @name_window == nil
    203.       @name_window = Window_Name.new(self, text, position)
    204.     end
    205.   end
    206.   def reset_font_settings
    207.     self.contents.font.name = Font.default_name
    208.     self.contents.font.size = Font.default_size
    209.     self.contents.font.bold = Font.default_bold
    210.     self.contents.font.italic = Font.default_italic
    211.     self.contents.font.color = Font.default_color
    212.   end
    213.   def strip_string(text)
    214.     return text.sub!(/\[(.*)\]/, "")
    215.   end
    216.   def refresh
    217.     self.height = TLB_MSG.rows_for_text * 32 + 32
    218.     self.y = 480 - self.height - 16
    219.     if @name_window != nil
    220.       @name_window.y = self.y - 64
    221.     end
    222.     self.contents = Bitmap.new(self.width - 32, self.height - 32)
    223.     self.contents.clear
    224.     self.contents.font.color = normal_color
    225.     x = y = 0
    226.     y_override = nil
    227.     outline = false
    228.     shadow = false
    229.     out_color = Color.new(0, 0, 0, 255)
    230.     @cursor_width = 0
    231.     # Indent if choice
    232.     if $game_temp.choice_start == 0
    233.       x = 8
    234.     end
    235.     # If waiting for a message to be displayed
    236.     if $game_temp.message_text != nil
    237.       text = $game_temp.message_text
    238.       # Control text processing
    239.       begin
    240.         last_text = text.clone
    241.         text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
    242.       end until text == last_text
    243.       # Change "\\\" to "\000" for convenience
    244.       text.gsub!(/\\\\/) { "\000" }
    245.       text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
    246.         $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
    247.       end
    248.       text.gsub!(/\\[Pp]\[([0-9]+)\]/) do
    249.         $game_party.actors[$1.to_i] != nil ? $game_party.actors[$1.to_i].name : ""
    250.       end
    251.       text.gsub!(/\\[Gg]/) do
    252.         $data_system.words.gold
    253.       end
    254.       text.gsub!(/\\ac\[(-?[0-9]+)\]/) do
    255.         id = $1.to_i
    256.         if id > 0 && $game_actors[id] != nil
    257.           $data_classes[$game_actors[id].class_id].name
    258.         elsif id <= 0 && $game_party.actors[-id] != nil
    259.           $data_classes[$game_party.actors[-id].class_id].name
    260.         else
    261.           ""
    262.         end
    263.       end
    264.       text.gsub!(/\\nc\[([0-9]+)\]/) do
    265.         id = $1.to_i
    266.         $data_classes[id] != nil ? $data_classes[id].name : ""
    267.       end
    268.       text.gsub!(/\\ni\[([0-9]+)\]/) do
    269.         id = $1.to_i
    270.         $data_items[id] != nil ? $data_items[id].name : ""
    271.       end
    272.       text.gsub!(/\\nw\[([0-9]+)\]/) do
    273.         id = $1.to_i
    274.         $data_weapons[id] != nil ? $data_weapons[id].name : ""
    275.       end
    276.       text.gsub!(/\\na\[([0-9]+)\]/) do
    277.         id = $1.to_i
    278.         $data_armors[id] != nil ? $data_armors[id].name : ""
    279.       end
    280.       text.gsub!(/\\ns\[([0-9]+)\]/) do
    281.         id = $1.to_i
    282.         $data_skills[id] != nil ? $data_skills[id].name : ""
    283.       end
    284.       text.gsub!(/\\nt\[([0-9]+)\]/) do
    285.         id = $1.to_i
    286.         $data_states[id] != nil ? $data_states[id].name : ""
    287.       end
    288.       # Change "\\C" to "\001" and "\\G" to "\002"
    289.       text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
    290.       text.gsub!(/\\\$/) { "\002" }
    291.       text.gsub!(/\\[Ii]\[(.*)\]/) { "\003[#{$1}]" }
    292.       text.gsub!(/\\\{/) { "\004" }
    293.       text.gsub!(/\\\}/) { "\005" }
    294.       text.gsub!(/\\n\<(.*)\>/) { "\006[#{$1}]" }
    295.       text.gsub!(/\\nc\<(.*)\>/) { "\007[#{$1}]" }
    296.       text.gsub!(/\\nr\<(.*)\>/) { "\010[#{$1}]" }
    297.       text.gsub!(/\\px\[([0-9]+)\]/) { "\013[#{$1}]" }
    298.       text.gsub!(/\\py\[([0-9]+)\]/) { "\014[#{$1}]" }
    299.       text.gsub!(/\\pic\[(.*)\]/) { "\015[#{$1}]" }
    300.       text.gsub!(/\\oc\[([0-9]+)\]/) { "\016[#{$1}]" }
    301.       text.gsub!(/\\oo\[([0-9]+)\]/) { "\017[#{$1}]" }
    302.       text.gsub!(/\\fr/) { "\020" }
    303.       text.gsub!(/\\fz\[([0-9]+)\]/) { "\021[#{$1}]" }
    304.       text.gsub!(/\\fn\[(.*)\]/) { "\022[#{$1}]" }
    305.       text.gsub!(/\\fb/) { "\023" }
    306.       text.gsub!(/\\fi/) { "\024" }
    307.       text.gsub!(/\\fo/) { "\025" }
    308.       text.gsub!(/\\fs/) { "\026" }
    309.       text.gsub!(/\\ii\[([0-9]+)\]/) { "\027[#{$1}]" }
    310.       text.gsub!(/\\iw\[([0-9]+)\]/) { "\030[#{$1}]" }
    311.       text.gsub!(/\\ia\[([0-9]+)\]/) { "\031[#{$1}]" }
    312.       text.gsub!(/\\is\[([0-9]+)\]/) { "\032[#{$1}]" }
    313.       # Get 1 text character in c (loop until unable to get text)
    314.       while ((c = text.slice!(/./m)) != nil)
    315.         # If \\
    316.         if c == "\000"
    317.           # Return to original text
    318.           c = "\"
    319.         end
    320.         # If \C[n]
    321.         if c == "\001"
    322.           # Change text color
    323.           text.sub!(/\[([0-9]+)\]/, "")
    324.           color = $1.to_i
    325.           if color >= 0 and color <= 7
    326.             self.contents.font.color = text_color(color)
    327.           end
    328.           # go to next text
    329.           next
    330.         end
    331.         # If \G
    332.         if c == "\002"
    333.           # Make gold window
    334.           if @gold_window == nil
    335.             @gold_window = Window_Gold.new
    336.             @gold_window.x = 560 - @gold_window.width
    337.             if $game_temp.in_battle
    338.               @gold_window.y = 192
    339.             else
    340.               @gold_window.y = self.y >= 128 ? 32 : 384
    341.             end
    342.             @gold_window.opacity = self.opacity
    343.             @gold_window.back_opacity = self.back_opacity
    344.           end
    345.           # go to next text
    346.           next
    347.         end
    348.         if c == "\003"
    349.           text.sub!(/\[(.*)\]/, "")
    350.           icon_name = $1.to_s
    351.           bitmap = RPG::Cache.icon(icon_name)
    352.           self.contents.blt(x, 32 * y + 4, bitmap, Rect.new(0, 0, 24, 24))
    353.           x += 12
    354.           next
    355.         end
    356.         if c == "\004"
    357.           self.contents.font.size += 8 if self.contents.font.size <= 64
    358.           next
    359.         end
    360.         if c == "\005"
    361.           self.contents.font.size -= 8 if self.contents.font.size >= 16
    362.           next
    363.         end
    364.         if c == "\006"
    365.           text.sub!(/\[(.*)\]/, "")
    366.           name_text = $1.to_s
    367.           create_name_window(name_text, 0)
    368.           next
    369.         end
    370.         if c == "\007"
    371.           text.sub!(/\[(.*)\]/, "")
    372.           name_text = $1.to_s
    373.           create_name_window(name_text, 1)
    374.           next
    375.         end
    376.         if c == "\010"
    377.           text.sub!(/\[(.*)\]/, "")
    378.           name_text = $1.to_s
    379.           create_name_window(name_text, 2)
    380.           next
    381.         end
    382.         if c == "\013"
    383.           text.sub!(/\[([0-9]+)\]/, "")
    384.           x = $1.to_i
    385.           next
    386.         end
    387.         if c == "\014"
    388.           text.sub!(/\[([0-9]+)\]/, "")
    389.           y_override = $1.to_i
    390.           next
    391.         end
    392.         if c == "\015"
    393.           text.sub!(/\[(.*)\]/, "")
    394.           bitmap = RPG::Cache.picture($1.to_s)
    395.           cw = bitmap.width
    396.           ch = bitmap.height
    397.           src_rect = Rect.new(0, 0, cw, ch)
    398.           self.contents.blt(x, y, bitmap, src_rect)
    399.           next
    400.         end
    401.         if c == "\016"
    402.           text.sub!(/\[([0-9]+)\]/, "")
    403.           outline = true
    404.           out_color = text_color($1.to_i)
    405.           next
    406.         end
    407.         if c == "\017"
    408.           text.sub!(/\[([0-9]+)\]/, "")
    409.           outline = true
    410.           out_color.alpha = $1.to_i
    411.           next
    412.         end
    413.         if c == "\020"
    414.           reset_font_settings
    415.           outline = false
    416.           shadow = false
    417.           out_color = Color.new(0, 0, 0, 255)
    418.           next
    419.         end
    420.         if c == "\021"
    421.           text.sub!(/\[([0-9]+)\]/, "")
    422.           self.contents.font.size = $1.to_i
    423.           next
    424.         end
    425.         if c == "\022"
    426.           text.sub!(/\[(.*)\]/, "")
    427.           self.contents.font.name = $1.to_s
    428.           next
    429.         end
    430.         if c == "\023"
    431.           self.contents.font.bold = !self.contents.font.bold
    432.           next
    433.         end
    434.         if c == "\024"
    435.           self.contents.font.italic = !self.contents.font.italic
    436.           next
    437.         end
    438.         if c == "\025"
    439.           outline = !outline
    440.           next
    441.         end
    442.         if c == "\026"
    443.           shadow = !shadow
    444.           next
    445.         end
    446.         if c == "\027"
    447.           text.sub!(/\[([0-9]+)\]/, "")
    448.           item = $data_items[$1.to_i]
    449.           if item != nil
    450.             bitmap = RPG::Cache.icon(item.icon_name)
    451.             self.contents.blt(x, (y_override || (32 * y)) + 4, bitmap, Rect.new(0, 0, 24, 24))
    452.             text = item.name + text
    453.             x += 24
    454.           end
    455.           next
    456.         end
    457.         if c == "\030"
    458.           text.sub!(/\[([0-9]+)\]/, "")
    459.           item = $data_weapons[$1.to_i]
    460.           if item != nil
    461.             bitmap = RPG::Cache.icon(item.icon_name)
    462.             self.contents.blt(x, (y_override || (32 * y)) + 4, bitmap, Rect.new(0, 0, 24, 24))
    463.             text = item.name + text
    464.             x += 24
    465.           end
    466.           next
    467.         end
    468.         if c == "\031"
    469.           text.sub!(/\[([0-9]+)\]/, "")
    470.           item = $data_armors[$1.to_i]
    471.           if item != nil
    472.             bitmap = RPG::Cache.icon(item.icon_name)
    473.             self.contents.blt(x, (y_override || (32 * y)) + 4, bitmap, Rect.new(0, 0, 24, 24))
    474.             text = item.name + text
    475.             x += 24
    476.           end
    477.           next
    478.         end
    479.         if c == "\032"
    480.           text.sub!(/\[([0-9]+)\]/, "")
    481.           item = $data_skills[$1.to_i]
    482.           if item != nil
    483.             bitmap = RPG::Cache.icon(item.icon_name)
    484.             self.contents.blt(x, (y_override || (32 * y)) + 4, bitmap, Rect.new(0, 0, 24, 24))
    485.             text = item.name + text
    486.             x += 24
    487.           end
    488.           next
    489.         end
    490.         # If new line text
    491.         if c == "\n"
    492.           # Update cursor width if choice
    493.           if y >= $game_temp.choice_start
    494.             @cursor_width = [@cursor_width, x].max
    495.           end
    496.           # Add 1 to y
    497.           y += 1
    498.           x = 0
    499.           # Indent if choice
    500.           if y >= $game_temp.choice_start
    501.             x = 8
    502.           end
    503.           y_override += 32 if y_override
    504.           # go to next text
    505.           next
    506.         end
    507.         # Draw text
    508.         if shadow
    509.           color = self.contents.font.color.dup
    510.           self.contents.font.color = Color.new(0, 0, 0)
    511.           self.contents.draw_text(4 + x, (y_override || (32 * y)) + 1, 40, 32, c)
    512.           self.contents.font.color = color
    513.         end
    514.         if outline
    515.           color = self.contents.font.color.dup
    516.           self.contents.font.color = out_color
    517.           self.contents.draw_outline_text(4 + x, y_override || (32 * y), 40, 32, c)
    518.           self.contents.font.color = color
    519.         else
    520.           self.contents.draw_text(4 + x, y_override || 32 * y, 40, 32, c)
    521.         end
    522.         # Add x to drawn text width
    523.         x += self.contents.text_size(c).width
    524.       end
    525.     end
    526.     # If choice
    527.     if $game_temp.choice_max > 0
    528.       @item_max = $game_temp.choice_max
    529.       self.active = true
    530.       self.index = 0
    531.     end
    532.     # If number input
    533.     if $game_temp.num_input_variable_id > 0
    534.       digits_max = $game_temp.num_input_digits_max
    535.       number = $game_variables[$game_temp.num_input_variable_id]
    536.       @input_number_window = Window_InputNumber.new(digits_max)
    537.       @input_number_window.number = number
    538.       @input_number_window.x = self.x + 8
    539.       @input_number_window.y = self.y + $game_temp.num_input_start * 32
    540.     end
    541.   end
    542.   alias :tlb_msg_update :update unless $@
    543.   def update
    544.     tlb_msg_update
    545.     if !self.visible && @name_window != nil
    546.       @name_window.dispose
    547.       @name_window = nil
    548.     end
    549.   end
    550. end
    复制代码


    FAQ
    None yet

    Credit and Thanks
    - Trihan
    - Yanfly, for the message codes provided in the Ace Message System


    本贴来自国际rpgmaker官方论坛作者:Trihan处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/trilobytes-message-system-xp.145747/

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    简体中文
    繁體中文
    English(英语)
    日本語(日语)
    Deutsch(德语)
    Русский язык(俄语)
    بالعربية(阿拉伯语)
    Türkçe(土耳其语)
    Português(葡萄牙语)
    ภาษาไทย(泰国语)
    한어(朝鲜语/韩语)
    Français(法语)
    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2026-9-29 06:45 , Processed in 0.064550 second(s), 55 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表