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

Project1

 找回密码
 注册会员
搜索
楼主: DeathKing
打印 上一主题 下一主题

[RMVX发布] 【强势更新】技能消耗物品(SkillNeedItem)

[复制链接]

Lv2.观梦者

梦石
0
星屑
723
在线时间
530 小时
注册时间
2010-6-9
帖子
840
23
发表于 2010-7-26 06:54:48 | 只看该作者
目前出现一bug【默认脚本下】...请允许一个不太懂脚本的人这样描述
在地图上打开技能菜单,用键盘上W键不能查看下一角色技能,且无论光标最初指向哪个角色,打开的永远都是队列中第一个人的技能栏...有人提出过吗 或者我火星了 Project2.rar (261.45 KB, 下载次数: 42)

点评

汗,我的疏忽,242行alias后我忘记传递参数了: snitem_initialize( actor_index, equip_index )  发表于 2010-7-26 10:26
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1150
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

22
 楼主| 发表于 2010-7-25 10:34:13 | 只看该作者
回复 六祈 的帖子

{:nm_4:} 很好,FSL协议正是需要大家一起来找BUG,然后去修正他,这样的快速开发模式。下面我已经将你提出来的BUG修补好了,请你在上面把判定的部分更新上,并写上更新内容:

Game_Actor#skill_can_use?方法的问题是纯粹忘记了要用alias,{:nm_2:}
  1. #===============================================================================
  2. # ■ FSL 技能消耗物品
  3. #    FSL Skill Need Item
  4. #-------------------------------------------------------------------------------
  5. #    设定一些值,当拥有制定物品的制定个数及以上时才可发动特技。发动特技会
  6. #    消耗掉这些物品。
  7. #
  8. #    在技能的“注释”中如下书写(请确保使用的是西文半角而不是全角):
  9. #        <need_item 物品id,对应数量 物品id,对应数量 …… >
  10. #        <need_item 1,1 2,2 3,3>
  11. #   
  12. #-------------------------------------------------------------------------------
  13. #    更新作者: DeathKing 六祈
  14. #    许可协议: FSL -NOS ADK
  15. #    项目分类: VX \ 数据工程
  16. #    衍生关系:
  17. #    项目版本: 1.4.0725
  18. #    建立日期: 2010年05月29日
  19. #    最后更新: 2010年07月25日
  20. #    引用网址:
  21. #-------------------------------------------------------------------------------
  22. #    - 1.1.0725 (2010.07.25)  By 六祈
  23. #      * 修正了Game_Actor#skill_can_use?方法的错误;
  24. #      * 修正了Window_SNItem.skill_can_use?方法的错误;
  25. #
  26. #    - 1.1.0719 (2010.07.19)  By DeathKing
  27. #      * ADK的升级,可兼容沉影不器的读取装备注释脚本;
  28. #
  29. #    - 1.1.0714 (2010.07.14)  By DeathKing
  30. #      * 修改了消耗物品的算法;
  31. #
  32. #    - 1.1.0607 (2010.06.07)  By DeathKing
  33. #      * 改变了设置方法;
  34. #
  35. #    - 1.0.0529 (2010.05.29)  By DeathKing
  36. #      * 初始版本完成;
  37. #
  38. #===============================================================================


  39. #-------------------------------------------------------------------------------
  40. # ▼ 登记FSL
  41. #-------------------------------------------------------------------------------
  42. $fscript = {} if $fscript == nil
  43. $fscript["SkillNeedItem"] = "1.4.0725"


  44. #-------------------------------------------------------------------------------
  45. # ▼ 通用配置模块
  46. #-------------------------------------------------------------------------------
  47. module FSL
  48.   module Conf
  49.     module SNItem
  50.       
  51.       # 技能消耗物品存在着一些不是十分完美的地方,由于战斗系统并不是即时的,
  52.       # 我们不能随时对物品进行检查,事实上,我们尝试过很多方法,最后都没有成
  53.       # 功。因此我们放弃了对玩家的提示,这个脚本只有在技能实际上被使用时才会
  54.       # 扣除物品,因此如果技能发动时,条件不满足,技能将会丢失。
  55.       #                               ~~~~~~~~~~~~~~~~~~~~~~~~~
  56.       
  57.       # 窗口的相关配置,一般不修改
  58.       WINDOW_X     = 272  # X  544 / 2
  59.       WINDOW_Y     = 112  # Y  56  * 2
  60.       WINDOW_W     = 274  # 宽
  61.       WINDOW_H     = 640  # 高
  62.       BACK_OPACITY = 200  # 透明度,255为不透明
  63.       
  64.       
  65.       TEXT_NEED       = "需要:"        # “需要:”一词的字符
  66.       TEXT_NEED_X     = WINDOW_X - 104  # “需要:”字符的 X 坐标
  67.       TEXT_ITEM_NUM_X = WINDOW_X - 52   # 物品数量的 X 坐标
  68.       
  69.     end
  70.   end
  71. end


  72. #==============================================================================
  73. # ■ Window_SNItem
  74. #------------------------------------------------------------------------------
  75. #  需要的物品的窗口。
  76. #==============================================================================

  77. class Window_SNItem < Window_Base
  78.   
  79.   include FSL::Conf::SNItem
  80.   
  81.   #--------------------------------------------------------------------------
  82.   # ● 初始化对像
  83.   #     x      : 窗口 X 座标
  84.   #     y      : 窗口 Y 座标
  85.   #     width  : 窗口宽度
  86.   #     height : 窗口高度
  87.   #--------------------------------------------------------------------------
  88.   def initialize(x=WINDOW_X, y=WINDOW_Y, width=WINDOW_W, height=WINDOW_H)
  89.     super(x, y, width, height)
  90.     self.back_opacity = BACK_OPACITY
  91.     self.visible = false
  92.   end  
  93.   #--------------------------------------------------------------------------
  94.   # ● 判定技能可否使用(需要的物品是否满足)
  95.   #     skill  : 技能
  96.   #--------------------------------------------------------------------------
  97.   def self.skill_can_use?(skill)
  98.     # 如果传递过来的skill为空
  99.     return false if skill == nil
  100.     # 读取need_item项的参数
  101.     need_item = skill.read_notes["need_item"]
  102.     # need_item参数为空的话返回true
  103.     return true if need_item == nil
  104.     # 重新生成参数列表
  105.     need_item_clone = []
  106.     need_item.each do |e|
  107.       need_item_clone << [ e.split(",")[0].to_i , e.split(",")[1].to_i ]
  108.     end
  109.     need_item = need_item_clone
  110.     # 遍历
  111.     need_item.each_index do |i|
  112.       # 生成物品id
  113.       item_id  = need_item[i][0]
  114.       # 生成物品数量
  115.       item_num = need_item[i][1]
  116.       # 是否拥有物品,是的话返回物品的索引,不是的话返回nil
  117.       item_exist = $game_party.items.index($data_items[item_id])
  118.       # 不存在就返回false
  119.       return false if item_exist == nil
  120.       # 返回物品
  121.       test_item = $game_party.items[item_exist]
  122.       # 如果不可用就返回
  123.       return false if ($game_party.item_number(test_item) < item_num)
  124.     end
  125.     return true
  126.         end
  127.   #--------------------------------------------------------------------------
  128.   # ● 刷新窗口
  129.   #     skill  : 技能
  130.   #     index  : 技能在技能窗口的索引,用来判定本
  131.   #              窗口应该显示在左边还是右边
  132.   #--------------------------------------------------------------------------
  133.   def refresh( skill, index = 0)
  134.     # 清除之前产生的位图
  135.     self.contents.clear
  136.     # 如果skill为空就返回false
  137.     return false if skill == nil
  138.     # 先让需要窗口不可见
  139.     self.visible = false
  140.     # 读取参数
  141.     need_item = skill.read_notes["need_item"]
  142.     # 如果参数不是个数组就将需要窗口隐藏并返回false
  143.     return false unless need_item.is_a? Array
  144.     # 重新生成参数列表
  145.     need_item_clone = []
  146.     need_item.each do |e|
  147.             need_item_clone << [ e.split(",")[0].to_i , e.split(",")[1].to_i ]
  148.     end
  149.     need_item = need_item_clone
  150.     # 如果参数列表为空就返回
  151.     return false unless need_item.size >= 1
  152.     # 判定索引以决定窗口位置
  153.     self.x = index % 2 == 0 ? WINDOW_X : 0
  154.     # 改变窗口大小
  155.     self.height = need_item.size * 24 + 32
  156.     # 将窗口置为可见
  157.     self.visible = true
  158.     create_contents
  159.     # 遍历参数列表
  160.     need_item.each_index do |i|
  161.             # 生成物品id
  162.       item_id  = need_item[i][0]
  163.       # 生成物品数量
  164.       item_num = need_item[i][1]
  165.       # 生成物品
  166.       item = $data_items[item_id]
  167.       # 判定物品是否足够
  168.       enabled = $game_party.item_number(item) >= item_num ? true : false
  169.       # 绘制文字
  170.       draw_item_name(item, 0, WLH * i, enabled)
  171.       self.contents.font.color.alpha = enabled ? 255 : 128
  172.       self.contents.draw_text(TEXT_NEED_X, WLH * i, 96, WLH, TEXT_NEED) #
  173.       self.contents.draw_text(TEXT_ITEM_NUM_X,  WLH * i, 32, WLH, item_num) #
  174.     end # need_item.each_index
  175.   end
  176.   #--------------------------------------------------------------------------
  177.   # ● 执行对物品消耗
  178.   #     skill  : 技能
  179.   #--------------------------------------------------------------------------
  180.   def self.exec_cost( skill )
  181.     # 传递错误就直接返回false
  182.     return false if skill == nil
  183.     # 读取need_item项的参数
  184.     need_item = skill.read_notes["need_item"]
  185.     # 如果参数不是个数组就将需要窗口隐藏并返回false
  186.     return true unless need_item.is_a? Array
  187.     need_item.each do |e|
  188.       id  = e.split(",")[0].to_i
  189.       num = e.split(",")[1].to_i
  190.       $game_party.gain_item($data_items[id], -num)
  191.     end
  192.   end
  193.   
  194. end # Window_SNItem

  195. #==============================================================================
  196. # ■ Game_Actor
  197. #------------------------------------------------------------------------------
  198. #  处理角色的类。本类在 Game_Actors 类 ($game_actors) 的内部使用、
  199. # Game_Party 类请参考 ($game_party) 。
  200. #==============================================================================

  201. class Game_Actor
  202.   
  203.   alias snitem_skill_can_use? skill_can_use?
  204.   
  205.   #--------------------------------------------------------------------------
  206.   # ● 可用技能判断
  207.   #     skill : 技能
  208.   #--------------------------------------------------------------------------
  209.   def skill_can_use?(skill)
  210.     return false unless Window_SNItem.skill_can_use?(skill)
  211.     snitem_skill_can_use?(skill)
  212.   end
  213. end

  214. #==============================================================================
  215. # ■ Scene_Skill
  216. #------------------------------------------------------------------------------
  217. #  处理特技画面的类。
  218. #==============================================================================

  219. class Scene_Skill < Scene_Base

  220.   alias snitem_initialize          initialize
  221.   alias snitem_terminate           terminate
  222.   alias snitem_update              update
  223.   alias snitem_use_skill_nontarget use_skill_nontarget

  224.   #--------------------------------------------------------------------------
  225.   # ● 初始化对像
  226.   #     actor_index : 角色位置
  227.   #--------------------------------------------------------------------------
  228.   def initialize( actor_index = 0, equip_index = 0 )
  229.     snitem_initialize
  230.     @snitem_window = Window_SNItem.new
  231.   end
  232.   #--------------------------------------------------------------------------
  233.   # ● 结束处理
  234.   #--------------------------------------------------------------------------
  235.   def terminate
  236.     snitem_terminate
  237.     @snitem_window.dispose
  238.   end
  239.   #--------------------------------------------------------------------------
  240.   # ● 更新画面
  241.   #--------------------------------------------------------------------------
  242.   def update
  243.     snitem_update
  244.     @snitem_window.refresh( @skill_window.skill, @skill_window.index )
  245.   end
  246.   
  247.   #--------------------------------------------------------------------------
  248.   # ● 非同伴目标使用物品
  249.   #--------------------------------------------------------------------------
  250.   def use_skill_nontarget
  251.     # 执行对物品的消耗
  252.     Window_SNItem.exec_cost(@skill)
  253.     # 调用原方法
  254.     snitem_use_skill_nontarget
  255.   end
  256.   
  257. end # Scene_Skill

  258. #==============================================================================
  259. # ■ Scene_Battle
  260. #------------------------------------------------------------------------------
  261. #  处理战斗画面的类。
  262. #=============================================================================

  263. class Scene_Battle < Scene_Base
  264.   
  265.   include FSL::Conf::SNItem
  266.   
  267.   alias snitem_update_skill_selection update_skill_selection
  268.   alias snitem_start_skill_selection  start_skill_selection
  269.   alias snitem_end_skill_selection    end_skill_selection
  270.   alias snitem_execute_action_skill   execute_action_skill
  271.   
  272.   #--------------------------------------------------------------------------
  273.   # ● 开始技能选择
  274.   #--------------------------------------------------------------------------
  275.   def start_skill_selection
  276.     snitem_start_skill_selection
  277.     # 创建需要道具窗口,并把y坐标上移
  278.     @snitem_window = Window_SNItem.new(270,56)
  279.   end
  280.   #--------------------------------------------------------------------------
  281.   # ● 结束技能选择
  282.   #--------------------------------------------------------------------------
  283.   def end_skill_selection
  284.     if @skill_window != nil
  285.       @snitem_window.dispose
  286.       @snitem_window = nil
  287.     end
  288.     snitem_end_skill_selection
  289.   end
  290.   #--------------------------------------------------------------------------
  291.   # ● 更新技能选择
  292.   #--------------------------------------------------------------------------
  293.   def update_skill_selection
  294.     # 刷新技能
  295.     @snitem_window.refresh( @skill_window.skill, @skill_window.index )
  296.     # 调用原方法内容
  297.     snitem_update_skill_selection
  298.   end
  299.   #--------------------------------------------------------------------------
  300.   # ● 执行战斗行动:使用技能
  301.   #--------------------------------------------------------------------------
  302.   def execute_action_skill
  303.     # 执行原内容
  304.     snitem_execute_action_skill
  305.     # 生成skill
  306.     skill = @active_battler.action.skill
  307.     Window_SNItem.exec_cost( skill )
  308.   end
  309.   
  310. end # Scene_Battle

复制代码

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
21
发表于 2010-7-25 08:24:58 | 只看该作者
LZ要 看仔细了,谁说非要占用公共事件槽?
这个公共事件是在判断技能可否使用的时候调用的公共事件,完全是插入到脚本里面。

我想你还真以为我的就是用公共事件实现的,也许是我的表述能力太差
不过还是再请你看一遍我说的,这完全是脚本语句。

在判断技能可否使用,也就是显示这个技能名字的颜色的时候
就要执行一次这个公共事件,这个公共事件在递交了可否使用的同时,也递交了需要的物品
这个公共事件根本不需要放到技能公共事件槽,你要看仔细了,
这只不过是把你本来需要在技能名字后面加逗号以完成技能名字以及消耗物品的方法
搬到了事件上面,这样直观易懂。
如果需要占用公共事件槽,那么我还判断技能ID做什么。
还是那句话,仔细看,别把我当新手看,说实话,我学RM4年有了,重做一个整的系统没问题。

点评

我是新手,请原谅~~~  发表于 2010-7-25 10:14
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

Lv2.观梦者

旅之愚者

梦石
0
星屑
255
在线时间
812 小时
注册时间
2007-7-28
帖子
2148

贵宾

20
发表于 2010-7-25 03:21:47 | 只看该作者
本帖最后由 六祈 于 2010-7-25 05:40 编辑

回复 DeathKing 的帖子
死君有没有考虑过通过读取已经设定过的Battler_Action来获得已经需要的物品?

通过修改你脚本中Window_SNItem的类方法实现了一下
  1.   def self.skill_can_use?(skill,actor_id)
  2.     # 如果传递过来的skill为空
  3.     return false if skill == nil
  4.     # 读取need_item项的参数
  5.     need_item = skill.read_notes["need_item"]
  6.     # need_item参数为空的话返回true
  7.     return true if need_item == nil
  8.     # 重新生成参数列表
  9.     need_item_clone = []
  10.     need_item.each do |e|
  11.       need_item_clone << [ e.split(",")[0].to_i , e.split(",")[1].to_i ]
  12.     end
  13.     need_item = need_item_clone
  14.     # 遍历
  15.     party_items = Hash.new{0}
  16.     $game_party.items.each do |it|
  17.       party_items[it.id] = $game_party.item_number(it)
  18.     end
  19.     unless actor_id == 0
  20.       0.upto(actor_id-1) do |ai|
  21.         action = $game_party.members[ai].action
  22.         next if action.kind != 1
  23.         temp_cost = $data_skills[action.skill_id].read_notes["need_item"]
  24.         next if temp_cost == nil
  25.         temp_cost = temp_cost.collect{|e|[e.split(",")[0].to_i,e.split(",")[1].to_i]}
  26.         temp_cost.each do |e|
  27.           party_items[e[0]] -= e[1]
  28.         end
  29.       end
  30.     end
  31.    
  32.    
  33.     need_item.each do |e|
  34.       return false if (party_items[e[0]] < e[1])
  35.     end
  36.     return true
  37.         end
复制代码
改变了参数的数量,所以在Game_Actor#skill_can_use?中调用这个类方法时传递self.index过去
  1. class Game_Actor
  2.   #--------------------------------------------------------------------------
  3.   # ● 可用技能判断
  4.   #     skill : 技能
  5.   #--------------------------------------------------------------------------
  6.   def skill_can_use?(skill)
  7.     return false unless Window_SNItem.skill_can_use?(skill,self.index)
  8.     return false unless skill_learn?(skill)
  9.     return true
  10.   end
  11. end
复制代码
然后就可以实现如果只有两个物品的话,一号角色和二号角色都使用连续进攻则三号角色不能使用,esc回去改变二号的行动,三号或者四号又可以使用

这只是个基础,还有很多细节需要完善

顺便提一下这个脚本中的bug,原版只要满足第一个物品的条件就返回true了(因为你在循环中就果断的return了一个可真可假的结果- -)

第二个bug:skill_can_use?被你重写之后,不考虑使用场合了。。。连续进攻在菜单里也能使用
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1150
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

19
 楼主| 发表于 2010-7-25 02:27:49 | 只看该作者
回复 九夜神尊 的帖子

事件是完全可能达到的,但是最后能做到的效果全然不在脚本之上。其实这个方法我已经想过了,但是由于非即使的战斗系统那个ESC键很蛋疼,很抽风,没有办法。

当然,也可以Step by Step跟踪按键来统计消耗。

其实仔细想想,用公共事件反而会变得麻烦,由于占用了技能本来还要使用的一个公共事件槽,还要判定技能从而继续执行一个公共事件。同时,只需要极少技能发动消耗物品时完全可以考虑用公共事件,但是,这个数量到达一定程度的时候,整个页面将变得难以阅读和维护,况且全局变量是丑陋的,很难定位,如果真为了“界面”而传递一个值,不如直接交由这个“界面”来完成。

楼上可能有所不知,如果你传递了一个值,而窗口并没有刷新,那么窗口的内容是不会改变的。因此,窗口会先预读你的公共事件(为了获取需要的值),这时候你的公共事件就已经消耗了物品。

所谓的“人性化”是因人而异的,不存在使每个人都感到高兴的方法,能集思广益,当然也是很好的。

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
18
发表于 2010-7-25 01:00:57 | 只看该作者
为LZ提供一个简单的方法吧,虽说我的脚本能力可能不及LZ
但是我的怪方法倒是挺多。

以下是教程

如果是不懂的人,会第一个想到,在公共事件里面设置使用技能以后消耗某某不就可以了么?
当然,你会回答什么我们都清楚。首先就是不能判断物品是否充足。
以及就是你那貌似人性化的界面。

当然,你们后面的谈论,貌似要解决扩充很多很多条件的技能发动
那我就给你们提供一个建议吧
看图片


就这一个简单的方法实现了全域判断技能可否使用,而且使用者也会倍感容易学,冲突自然很少

但是你会想,大概这样就没有你那貌似人性化的界面了,在使用之前就能看到需要哪些物品

那,你在添加一点点脚本


这样就能轻松在脚本里面获得需要的物品,当然你也可以利用获得的这些变量直接在脚本里面判断以减轻
作者的工作量,但是任何条件判断都能使用的优点就……

怎么样解决你说的不是即使战斗导致物品技能提示上的问题,我提供一个协议
你可以参考一下

假设,超级治疗需要回复药6个,简单治疗需要回复药3个
那么LZ担心的是,在战斗中,如果有回复药6个,那就可以选择两个技能了,
如果这两个技能在两个角色上,那么战斗中肯定会出现不理想的事情,没有9个回复药
但是一样两个技能都发动了。或者像LZ那样,直接后面发动的技能就失效

我给的方法是这样的
第一个超级治疗,需要回复药6个,那么选择了超级治疗,就应该在中转站记录了已经
提交了6个回复药的申请,下一个技能如果在需要回复药,就应该在实际物品中
减去这6个回复药,然后在判断。
这样应该比LZ 原来的解决方案要人性化一些呢?

就这些,蛋疼之作
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2010-6-28
帖子
23
17
发表于 2010-7-24 02:41:58 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1150
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

16
 楼主| 发表于 2010-7-23 08:33:42 | 只看该作者
回复 tsy0302 的帖子


    http://wiki.pockethouse.com/index.php?title=Main_Page

收录了Yangfly的所有脚本。下面是一个成套的系统。

http://www.pockethouse.com/mambo/Melody_1.00l.zip
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2010-6-28
帖子
23
15
发表于 2010-7-22 22:32:27 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1150
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

14
 楼主| 发表于 2010-7-22 10:54:51 | 只看该作者
本帖最后由 DeathKing 于 2010-7-22 10:56 编辑
我把我发过的脚本删改了下,目前可以实现消耗指定物品/需要指定物品但不消耗/消耗生命(或者%)/金钱,理论上 ...
tsy0302 发表于 2010-7-22 06:15



yangfly的战斗引擎是神物,不只是这个脚本。我完全没有在这个脚本上mod的必要。Yangfly的战斗引擎是即使的,因此对条件的判断也是即使的,所以不会“浪费技能”。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-27 05:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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