设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1874|回复: 2
打印 上一主题 下一主题

[已经过期] 图块扩张脚本肿么用来着的?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
196
在线时间
835 小时
注册时间
2012-9-16
帖子
1811
跳转到指定楼层
1
发表于 2013-6-17 18:12:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
表示脚本是挖来的。放了swapxt和extra_tiles文件夹后,我什么都没设置,就进游戏。。。脚本没出什么问题,只是我发现我所有的地图使用的图块都被改了,然后...。
表示英语盲,看不懂注释和作者笔记,翻译出的也都是些乱七八糟的东东...

请告诉我肿么使用吧,...怎么设置指定的地图使用指定的图块(例如1号地图就用默认的图块,2号用我那些图块中的指定一个。)
  1. =begin
  2.                                 SwapXT

  3. Version: 1.0
  4. Author: Marco Di Antonio ([email protected])
  5. Nickname: BulletXt
  6. Date: 14/07/2010

  7. This is SwapXT script that must be put in your VX game script section.
  8. It's Plug&Play.
  9. Use SwapXT application to do swaps once you put this into your VX game.

  10. =end


  11. ############################# CONFIGURATION ####################################

  12. #Switch ID.
  13. #If ON, your events will not swap according to tiles and will use default tiles.
  14. DISABLE_EVENT_SWAPPING = 100


  15. =begin
  16. IGNORE the following two switches IDs unless you are using
  17. old 0.4 swapping script found at:
  18. http://lodestone2d.svn.sourceforge.net/viewvc/lodestone2d/Scripts-Dev/Swap_TileSet/Swap_tile_new_passage_setting.rb .
  19. If you are, set the 2 ID switches to ensure compatibility
  20. with your current "old system" swaps.
  21. The meaning of these two switches are described on the old 0.4 script, and you
  22. should already have confidence with them if you need these.
  23. =end
  24. SWAP_TILE = 9999
  25. LOAD_PASSAGE_SETTING = 9998


  26. ########################## END CONFIGURATION ###################################


  27. #==============================================================================
  28. # ** Cache

  29. module Cache_Swap_Tiles

  30.   #error message in case user is swapping tiles
  31.   #on a map with both old and new system
  32.   def self.error_message(map_id)
  33.   $bulletxt_error_message_mixed_swapping_configuration = "BulletXt Message:
  34.   on this map ID " + map_id.to_s() + "
  35.   you have a dangerous configuration.
  36.   You are swapping tilesets from events and from the swapping application.
  37.   Mixed configuration is not allowed.
  38.   Please decide which system to use to swap your tiles.
  39.   I highly suggest to swap tilesets using the swapping application.
  40.   If you decide to do this, please be sure you turn off the swapping switch
  41.   ID " + SWAP_TILE.to_s() + " before entering this map.
  42.   I will close the game for security reasons."  
  43.   #get rid of \n
  44.   array = $bulletxt_error_message_mixed_swapping_configuration.split("\n")
  45.   size = array.length()
  46.   n = 0
  47.   f = ""
  48.   while n < size do
  49.     message = array[n]
  50.     f = f + message
  51.     n = n + 1
  52.   end
  53.   $bulletxt_error_message_mixed_swapping_configuration = f
  54.   end

  55.   #error message in case user is swapping passage settings
  56.   #on a map with both old and new system
  57.   def self.error_message_passage(map_id)
  58.   $bulletxt_error_message_mixed_swapping_configuration = "BulletXt Message:
  59.   on this map ID " + map_id.to_s() + "
  60.   you have a dangerous configuration.
  61.   You are swapping a passage settings from events and from the swapping application.
  62.   Mixed configuration is not allowed.
  63.   Please decide which system to use to swap your passage settings.
  64.   I highly suggest to swap passage settings using the swapping application.
  65.   If you decide to do this, please be sure you turn off the swapping passage
  66.   setting switch ID " + LOAD_PASSAGE_SETTING.to_s() + " before entering this map.
  67.   I will close the game for security reasons."  
  68.   #get rid of \n
  69.   array = $bulletxt_error_message_mixed_swapping_configuration.split("\n")
  70.   size = array.length()
  71.   n = 0
  72.   f = ""
  73.   while n < size do
  74.     message = array[n]
  75.     f = f + message
  76.     n = n + 1
  77.   end
  78.   $bulletxt_error_message_mixed_swapping_configuration = f
  79.   end  

  80.   
  81.   #--------------------------------------------------------------------------
  82.   # * Get Character Graphic
  83.   #     filename : Filename
  84.   #--------------------------------------------------------------------------
  85.   def self.swap(filename)
  86.     load_bitmap("Graphics/System/extra_tiles/", filename)
  87.   end
  88.   
  89.   #--------------------------------------------------------------------------
  90.   # * Clear Cache
  91.   #--------------------------------------------------------------------------
  92.   def self.clear
  93.     [url=home.php?mod=space&uid=341345]@Cache[/url] = {} if @cache == nil
  94.     @cache.clear
  95.     GC.start
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   # * Load Bitmap
  99.   #--------------------------------------------------------------------------
  100.   def self.load_bitmap(folder_name, filename, hue = 0)
  101.     @cache = {} if @cache == nil
  102.     path = folder_name + filename
  103.     if not @cache.include?(path) or @cache[path].disposed?
  104.       if filename.empty?
  105.         @cache[path] = Bitmap.new(32, 32)
  106.       else
  107.         @cache[path] = Bitmap.new(path)
  108.       end
  109.     end
  110.     if hue == 0
  111.       return @cache[path]
  112.     else
  113.       key = [path, hue]
  114.       if not @cache.include?(key) or @cache[key].disposed?
  115.         @cache[key] = @cache[path].clone
  116.         @cache[key].hue_change(hue)
  117.       end
  118.       return @cache[key]
  119.     end
  120.   end
  121. end


  122. ################################################################################



  123. ############ CHECK IF THERE ARE SWAPPED TILES AT START PLAY TIME ###############
  124. =begin
  125. We must ensure user is starting game and there are physically swapped tiles or
  126. passage settings,
  127. tiles that have been for example swapped from the application
  128. =end
  129. class Scene_Title < Scene_Base

  130.   alias swapxt_start start
  131.   def start
  132.     swapxt_start
  133.     check_if_tileset_swapped_exist
  134.     check_if_passage_swapped_exist
  135.   end
  136.   
  137.   def check_if_tileset_swapped_exist
  138.     tile = "Graphics/System/swapped_"
  139.     tileset_swap_loaded_message_error if FileTest.exist?(tile + "A1.png")
  140.     tileset_swap_loaded_message_error if FileTest.exist?(tile + "A2.png")
  141.     tileset_swap_loaded_message_error if FileTest.exist?(tile + "A3.png")
  142.     tileset_swap_loaded_message_error if FileTest.exist?(tile + "A4.png")
  143.     tileset_swap_loaded_message_error if FileTest.exist?(tile + "A5.png")
  144.     tileset_swap_loaded_message_error if FileTest.exist?(tile + "B.png")
  145.     tileset_swap_loaded_message_error if FileTest.exist?(tile + "C.png")
  146.     tileset_swap_loaded_message_error if FileTest.exist?(tile + "D.png")
  147.     tileset_swap_loaded_message_error if FileTest.exist?(tile + "E.png")
  148.   end

  149.   def tileset_swap_loaded_message_error
  150.     p sprintf("SwapXT Error: You are not allowed to start your game with swapped tilesets. You must unload your tilesets with SwapXT application first. Open SwapXT, click at top Tools->Restore all Tilesets")
  151.     exit
  152.   end

  153.   def check_if_passage_swapped_exist
  154.     passage = "swapxt/passage_warning.stx"
  155.     passage_swap_loaded_message_error if FileTest.exist?(passage)
  156.   end
  157.   
  158.   def passage_swap_loaded_message_error
  159.     p sprintf("SwapXT Error: You are not allowed to start your game with swapped passage settings. You must unload your passage setting with SwapXT application first. Open SwapXT, go on PassageSetting tab and click on Restore to Default.")
  160.     exit
  161.   end
  162.   
  163. end
  164. ################################################################################



  165. =begin
  166. this class takes care of checking if there is a map id file. this class does
  167. not swap tilesets but only prepares the tiles variables(if map id file found).
  168. this class handles loading the passage setting file, for both old and
  169. new system
  170. =end

  171. class Game_Map
  172.   include Cache_Swap_Tiles  
  173.   alias bulletxt_goodbye_vx_limit_tile_setup setup
  174.   def setup(map_id)
  175.   
  176.     #must be false at load time
  177.     $swapxt_realtime = false
  178.    
  179.     #this variable must always be false at runtime.
  180.     #becomes true only if it finds a map id file
  181.     $swap_tileset_profile_bulletxt = false
  182.   
  183.     #check if it must load a saved profile TILESET for this map id
  184.     profile_path_tile = "swapxt/tiles/" + map_id.to_s() + ".stx"
  185.     if FileTest.exist?(profile_path_tile)
  186.       #we must now check if user isn't fooling around with his configuration.
  187.       #he must not be swapping tiles on this map with old and new system
  188.       #at the same time. if this is the case, warn him we don't want issues and
  189.       #close the game
  190.       if $game_switches[SWAP_TILE] == true
  191.         Cache_Swap_Tiles.error_message(map_id)
  192.         p sprintf($bulletxt_error_message_mixed_swapping_configuration)
  193.         exit
  194.       end
  195.       #set this to true so we know we want to swap with new system
  196.       $swap_tileset_profile_bulletxt = true
  197.       #p sprintf(profile_path_tile + " found!")
  198.       #read the map id file, it has 8 lines with the name of the tileset to swap.
  199.       #set each tileset global variable with the corresponding found line, in order.
  200.       $tileA1,$tileA2,$tileA3,$tileA4,$tileA5,$tileB,$tileC,$tileD,$tileE = File.read(profile_path_tile).split("\n")
  201.     end
  202.   
  203.   
  204.     ##################### SWAP PASSSAGE SETTINGS ##########################
  205.     @swap_passagesetting_bulletxt = false
  206.     #for how this works, look at the code above
  207.     profile_path_passages = "swapxt/passages/" + map_id.to_s() + ".stx"
  208.     if FileTest.exist?(profile_path_passages)
  209.       #p sprintf("passage exists on map " + map_id.to_s())
  210.       if $game_switches[LOAD_PASSAGE_SETTING] == true
  211.         Cache_Swap_Tiles.error_message_passage(map_id)
  212.         p sprintf($bulletxt_error_message_mixed_swapping_configuration)
  213.         exit
  214.       end
  215.       @swap_passagesetting_bulletxt = true
  216.       $swap_passages = (File.read(profile_path_passages).split("\n"))[0]
  217.     end
  218.   
  219.    
  220.     #checks if it should load default passage setting, both for old and new system
  221.     if $game_switches[LOAD_PASSAGE_SETTING] == false and @swap_passagesetting_bulletxt == false
  222.       bulletxt_goodbye_vx_limit_tile_setup(map_id)
  223.       $swap_passages = nil
  224.       return  
  225.     end
  226.    

  227.     path = "Graphics/System/extra_tiles/" + $swap_passages.to_s() + ".rvdata" rescue nil

  228.     #check if user set $swap_passages to nil cause he wants to load default setting.
  229.     #if user is loading with new system checks if it's equal to empty::*::
  230.     if $swap_passages == nil or $swap_passages == "empty::*::"
  231.       bulletxt_goodbye_vx_limit_tile_setup(map_id)
  232.       return
  233.     end
  234.   

  235.     #when here, we are sure user wants to swap passage setting, either
  236.     #via old system or new system
  237.     #the file to swap is not default one, he wants to swap to a real new one
  238.     @map_id = map_id
  239.     @map = load_data(sprintf("Data/Map%03d.rvdata", @map_id))
  240.     @display_x = 0
  241.     @display_y = 0
  242.      
  243.     # load system settings from that file
  244.     new_system_rvdata = load_data(path)
  245.     # Use passage settings from that file
  246.     @passages = new_system_rvdata.passages
  247.       
  248.     #default vx code
  249.     referesh_vehicles
  250.     setup_events
  251.     setup_scroll
  252.     setup_parallax
  253.     @need_refresh = false
  254.   end
  255.   
  256.   
  257. ############################# REAL TIME SWAPS ##################################  
  258.   #if here, player has done a $game_map.tileset call. It must reload
  259.   #map with new passage setting (if it exists) and upate map.
  260.   #OLD SYSTEM
  261.   def tileset
  262.     #if false, we must update and load default passage
  263.     if $game_switches[LOAD_PASSAGE_SETTING] == false
  264.       @passages = $data_system.passages
  265.     else
  266.       #if nil, must reset passage setting to default  
  267.       if $swap_passages == nil
  268.         @passages = $data_system.passages
  269.         $scene = Scene_Map.new
  270.         return
  271.       end
  272.     path = "Graphics/System/extra_tiles/" + $swap_passages + ".rvdata" rescue nil
  273.     # load system settings from that file
  274.     new_system_rvdata = load_data(path)
  275.     # Use passage settings from that file
  276.     @passages = new_system_rvdata.passages
  277.     end   
  278.     #this updates the map tiles. it does not modify events or anything else.
  279.     $scene = Scene_Map.new
  280.   end
  281.   

  282.   
  283.   #if here, player has done a $game_map.swapxt() call. It must reload
  284.   #map with new passage setting (if it exists) and upate map.
  285.   #NEW SWAPXT SYSTEM
  286.   def swapxt(integer)
  287.     rtx_path = "swapxt/realtime/" + integer.to_s() + ".rtx"
  288.     if !FileTest.exist?(rtx_path )
  289.       p sprintf("SwapXT Error: You have called $game_map.swapxt(" + integer.to_s() + ") , but that Real-Time swap doesn't exist. Please better check it inside SwapXT app, under the Real-Time section.")
  290.       exit
  291.     end
  292.     $tileA1,$tileA2,$tileA3,$tileA4,$tileA5,$tileB,$tileC,$tileD,$tileE,passage = File.read(rtx_path).split("\n")
  293.     path = "Graphics/System/extra_tiles/" + passage + ".rvdata" rescue nil
  294.     if !FileTest.exist?(path)
  295.       p sprintf("SwapXT Error: Unable to find " + path + ". Please go and check your existant passages from SwapXT in the PassageSetting section.")
  296.       exit
  297.     end
  298.     $swapxt_realtime = true #warning,realtime update must occur
  299.     # load system settings from that file
  300.     new_system_rvdata = load_data(path)
  301.     # Use passage settings from that file
  302.     @passages = new_system_rvdata.passages
  303.     #this updates the map tiles. it does not modify events or anything else.
  304.     $scene = Scene_Map.new
  305.   end
  306.   
  307.   
  308. end


  309. #this class handles loading tilesets
  310. class Spriteset_Map
  311. include Cache_Swap_Tiles  

  312.   alias bulletxt_lodestone_create_tilemap create_tilemap
  313.   def create_tilemap
  314.     #if true, it means the map doesn't have to load tilesets,
  315.     #neither for old swapping system or new system.
  316.     #if true, also means no realtime update occured
  317.     #it must load DEFAULT tilesets
  318.     if $game_switches[SWAP_TILE] == false and $swap_tileset_profile_bulletxt == false and $swapxt_realtime == false
  319.       bulletxt_lodestone_create_tilemap
  320.       $tileA1 = nil
  321.       $tileA2 = nil
  322.       $tileA3 = nil
  323.       $tileA4 = nil
  324.       $tileA5 = nil
  325.       $tileB = nil
  326.       $tileC = nil
  327.       $tileD = nil
  328.       $tileE = nil
  329.       return
  330.     end
  331.   
  332.    
  333.    
  334. =begin
  335. calling the original function is a trick. if there are tiles to swap
  336. it will just replace them, otherwise if a tile is nil it won't swap anything,
  337. but still the tile will be loaded because it has already loaded the original tile
  338. when calling this function. in other words, if setting a tile$n = nil will simply
  339. make the script load default tile.
  340. =end
  341.     bulletxt_lodestone_create_tilemap
  342. =begin
  343. when here, some/all tiles must be swapped, either old or with new system.
  344. the tile can be equal to "empty::*::" only if it found the file id of the
  345. map and line$n is equal to empty::*::. in that case it must load default tileset.
  346. there are no chances a user with old system is swapping a tileset named
  347. "empty::*::" because you can't name files with ":" characters under
  348. Microsoft Windows OS.
  349. =end
  350.     path_to_graphic = "extra_tiles/"

  351.     #tileA1
  352.     if $tileA1 == "empty::*::"
  353.       @tilemap.bitmaps[0] = Cache.system("TileA1")
  354.     else
  355.       tile1 = Cache_Swap_Tiles.swap($tileA1 + ".png") rescue nil
  356.       @tilemap.bitmaps[0] = tile1 if $tileA1 != nil
  357.     end
  358.   
  359.     #tileA2
  360.     if $tileA2 == "empty::*::"
  361.       @tilemap.bitmaps[1] = Cache.system("TileA2")
  362.     else
  363.       tile2 = Cache_Swap_Tiles.swap($tileA2 + ".png") rescue nil
  364.       @tilemap.bitmaps[1] = tile2 if $tileA2 != nil
  365.     end
  366.    
  367.     #tileA3
  368.     if $tileA3 == "empty::*::"
  369.       @tilemap.bitmaps[2] = Cache.system("TileA3")
  370.     else
  371.       tile3 = Cache_Swap_Tiles.swap($tileA3 + ".png") rescue nil
  372.       @tilemap.bitmaps[2] = tile3 if $tileA3 != nil
  373.     end
  374.       
  375.     #tileA4
  376.     if $tileA4 == "empty::*::"
  377.       @tilemap.bitmaps[3] = Cache.system("TileA4")
  378.     else
  379.       tile4 = Cache_Swap_Tiles.swap($tileA4 + ".png") rescue nil
  380.       @tilemap.bitmaps[3] = tile4 if $tileA4 != nil
  381.     end
  382.       
  383.     #tileA5
  384.     if $tileA5 == "empty::*::"
  385.       @tilemap.bitmaps[4] = Cache.system("TileA5")
  386.     else
  387.       tile5 = Cache_Swap_Tiles.swap($tileA5 + ".png") rescue nil
  388.       @tilemap.bitmaps[4] = tile5 if $tileA5 != nil
  389.     end

  390.     #tileB
  391.     if $tileB == "empty::*::"
  392.       @tilemap.bitmaps[5] = Cache.system("TileB")
  393.     else
  394.       tile6 = Cache_Swap_Tiles.swap($tileB + ".png") rescue nil
  395.       @tilemap.bitmaps[5] = tile6 if $tileB != nil
  396.     end

  397.     #tileC
  398.     if $tileC == "empty::*::"
  399.       @tilemap.bitmaps[6] = Cache.system("TileC")
  400.     else
  401.       tile7 = Cache_Swap_Tiles.swap($tileC + ".png") rescue nil
  402.       @tilemap.bitmaps[6] = tile7 if $tileC != nil
  403.     end

  404.     #tileD
  405.     if $tileD == "empty::*::"
  406.       @tilemap.bitmaps[7] = Cache.system("TileD")
  407.     else
  408.       tile8 = Cache_Swap_Tiles.swap($tileD + ".png") rescue nil
  409.       @tilemap.bitmaps[7] = tile8 if $tileD != nil
  410.     end

  411.     #tileE
  412.     if $tileE == "empty::*::"
  413.       @tilemap.bitmaps[8] = Cache.system("TileE")
  414.     else
  415.       tile9 = Cache_Swap_Tiles.swap($tileE + ".png") rescue nil
  416.       @tilemap.bitmaps[8] = tile9 if $tileE != nil
  417.     end
  418.    
  419.   #closes def
  420.   end
  421. #closes class
  422. end


  423. ########################## SWAP EVENT'S GRAPHICS #############################
  424. #the following class handles swapping event's graphics according to the tiles
  425. class Sprite_Character < Sprite_Base
  426. include Cache_Swap_Tiles

  427.   alias swap_tileset_bitmap tileset_bitmap
  428.   def tileset_bitmap(tile_id)
  429.      #do not swap events if true
  430.      if $game_switches[DISABLE_EVENT_SWAPPING]
  431.         set_number = tile_id / 256
  432.         return Cache.system("TileB") if set_number == 0
  433.         return Cache.system("TileC") if set_number == 1
  434.         return Cache.system("TileD") if set_number == 2
  435.         return Cache.system("TileE") if set_number == 3
  436.         return nil
  437.         return
  438.      end
  439.      
  440.      if $game_switches[SWAP_TILE] == false and $swap_tileset_profile_bulletxt == false and $swapxt_realtime == false
  441.         set_number = tile_id / 256
  442.         return Cache.system("TileB") if set_number == 0
  443.         return Cache.system("TileC") if set_number == 1
  444.         return Cache.system("TileD") if set_number == 2
  445.         return Cache.system("TileE") if set_number == 3
  446.         return nil
  447.         return
  448.      end
  449.      
  450.     swap_tileset_bitmap(tile_id)
  451.     set_number = tile_id / 256
  452.    
  453.     if $tileB == "empty::*::"
  454.       return Cache.system("TileB") if set_number == 0
  455.     else
  456.       return Cache_Swap_Tiles.swap($tileB) if set_number == 0 rescue nil
  457.     end
  458.    
  459.     if $tileC == "empty::*::"
  460.       return Cache.system("TileC") if set_number == 1
  461.     else
  462.       return Cache_Swap_Tiles.swap($tileC) if set_number == 1 rescue nil
  463.     end
  464.    
  465.     if $tileD == "empty::*::"
  466.       return Cache.system("TileD") if set_number == 2
  467.     else
  468.       return Cache_Swap_Tiles.swap($tileD) if set_number == 2 rescue nil
  469.     end
  470.    
  471.     if $tileE == "empty::*::"
  472.       return Cache.system("TileE") if set_number == 3
  473.     else
  474.        return Cache_Swap_Tiles.swap($tileE) if set_number == 3 rescue nil
  475.     end

  476.     return nil
  477.   end
  478. end



  479. =begin
  480. saves tiles and passage setting variables,
  481. needed if you save on a map that has swapped stuff.
  482. this is only needed when using old system, because new system
  483. reads the value from the map id file
  484. =end
  485. class Scene_File < Scene_Base
  486.   alias bulletxt_swap_tiles_write_save_data write_save_data
  487.   def write_save_data(file)
  488.     bulletxt_swap_tiles_write_save_data(file)
  489.     Marshal.dump($tileA1,      file)
  490.     Marshal.dump($tileA2,      file)
  491.     Marshal.dump($tileA3,      file)
  492.     Marshal.dump($tileA4,      file)
  493.     Marshal.dump($tileA5,      file)
  494.     Marshal.dump($tileB,      file)
  495.     Marshal.dump($tileC,      file)
  496.     Marshal.dump($tileD,      file)
  497.     Marshal.dump($tileE,      file)
  498.     Marshal.dump($swap_passages.to_s(),   file)
  499.     Marshal.dump($swap_tileset_profile_bulletxt,  file)
  500.     Marshal.dump($swapxt_realtime, file)
  501.   end  

  502.   alias bulletxt_swap_tiles_read_save_data read_save_data
  503.   def read_save_data(file)
  504.     bulletxt_swap_tiles_read_save_data(file)
  505.     $tileA1        = Marshal.load(file)
  506.     $tileA2        = Marshal.load(file)
  507.     $tileA3        = Marshal.load(file)
  508.     $tileA4        = Marshal.load(file)
  509.     $tileA5        = Marshal.load(file)
  510.     $tileB        = Marshal.load(file)
  511.     $tileC        = Marshal.load(file)
  512.     $tileD        = Marshal.load(file)
  513.     $tileE        = Marshal.load(file)
  514.     $swap_passages = Marshal.load(file)
  515.     $swap_tileset_profile_bulletxt = Marshal.load(file)
  516.     $swapxt_realtime = Marshal.load(file)
  517.   end
  518. end
复制代码

——旧坑欢迎戳

Lv1.梦旅人

梦石
0
星屑
50
在线时间
256 小时
注册时间
2013-5-27
帖子
196
2
发表于 2013-6-23 21:58:37 | 只看该作者
我猜是第36行
SWAP_TILE = 9999
这个ID的开关来控制,你试试。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-15 09:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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