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

Project1

 找回密码
 注册会员
搜索
123
返回列表 发新帖
楼主: pdjtjdds
打印 上一主题 下一主题

[已经解决] 如何实现教学性质的战斗处理

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
31 小时
注册时间
2013-9-6
帖子
28
21
 楼主| 发表于 2013-10-23 15:50:57 | 只看该作者
喵呜喵5 发表于 2013-10-14 14:43

要先选择战斗才能选择答题,感觉第一步没有意义,请问能不能把选择战斗那一步略过去?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
225
在线时间
245 小时
注册时间
2011-2-20
帖子
49
22
发表于 2013-10-23 17:09:46 | 只看该作者
替换脚本"教学式战斗脚本",其实就是把与@party_command_window有关的注释掉

  1. #请不要删除本脚本上方的两个脚本

  2. class Array
  3.   def random(number)
  4.     sort_by{rand}.slice(0...number)   
  5.   end
  6. end
  7. class Game_Interpreter
  8.   def chouti   
  9.     tiku = $data_enemies[$game_troop.members[0].enemy_id].read_note('题目')
  10.     if tiku != nil
  11.       $game_variables[1] = tiku.random(1)[0]
  12.     else
  13.       msgbox "这个敌人没有设置题目"
  14.       exit
  15.     end
  16.   end
  17.   def direndonghua
  18.     enemy = $game_troop.members[0]
  19.     index = $data_enemies[enemy.enemy_id].read_note('战斗动画')        
  20.     return true if !index   
  21.     false
  22.   end
  23. end
  24. class Game_Party < Game_Unit
  25.   def max_battle_members
  26.     return 1
  27.   end
  28. end
  29. class Window_ActorCommand < Window_Command
  30.   def make_command_list
  31.     return unless @actor
  32.     add_attack_command
  33.     add_skill_commands
  34.     add_item_command
  35.   end
  36. end
  37. class Window_BattleStatus < Window_Selectable
  38.   def item_max
  39.     1
  40.   end
  41.   def draw_item(index)
  42.     actor = $game_party.battle_members[index]
  43.     rect = item_rect(index)
  44.     draw_actor_face(actor, rect.x + 10, rect.y + 1)
  45.     draw_actor_simple_status(actor, rect.x + 120, rect.y)
  46.   end  
  47.   def draw_actor_simple_status(actor, x, y)
  48.     x += 20   
  49.     draw_actor_name(actor, x, y)   
  50.     draw_actor_icons(actor, x, y + line_height * 2)
  51.     draw_actor_class(actor, x + 120, y)
  52.     draw_actor_hp(actor, x + 25, y + line_height * 1 + 10)
  53.     draw_actor_mp(actor, x + 25, y + line_height * 2 + 10)
  54.   end
  55. end
  56. class Scene_Battle < Scene_Base
  57.   #--------------------------------------------------------------------------
  58.   # ● 生成所有窗口
  59.   #--------------------------------------------------------------------------
  60.   def create_all_windows
  61.     create_message_window
  62.     create_scroll_text_window
  63.     create_log_window
  64.     create_status_window
  65.     create_info_viewport
  66.     #create_party_command_window
  67.     create_actor_command_window
  68.     create_help_window
  69.     create_skill_window
  70.     create_item_window
  71.     create_actor_window
  72.     create_enemy_window
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   # ● 回合开始
  76.   #--------------------------------------------------------------------------
  77.   def turn_start
  78.     #@party_command_window.close
  79.     @actor_command_window.close
  80.     @status_window.unselect
  81.     @subject =  nil
  82.     BattleManager.turn_start
  83.     @log_window.wait
  84.     @log_window.clear
  85.   end
  86.   #--------------------------------------------------------------------------
  87.   # ● 更新信息显示的显示端口
  88.   #--------------------------------------------------------------------------
  89.   def update_info_viewport
  90.     #move_info_viewport(0)   if @party_command_window.active
  91.     move_info_viewport(128) if @actor_command_window.active
  92.     move_info_viewport(64)  if BattleManager.in_turn?
  93.   end
  94.   #--------------------------------------------------------------------------
  95.   # ● 开始角色指令的选择
  96.   #--------------------------------------------------------------------------
  97.   def start_actor_command_selection
  98.     @status_window.select(BattleManager.actor.index)
  99.     #@party_command_window.close
  100.     @actor_command_window.setup(BattleManager.actor)
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   # ● 信息窗口打开时的更新
  104.   #    在状态窗口关闭完成前,信息窗口的打开度设置为 0 。
  105.   #--------------------------------------------------------------------------
  106.   def update_message_open
  107.     if $game_message.busy? && !@status_window.close?
  108.       @message_window.openness = 0
  109.       @status_window.close
  110.       #@party_command_window.close
  111.       @actor_command_window.close
  112.     end
  113.   end
  114.   def start_party_command_selection
  115.     unless scene_changing?
  116.       refresh_status
  117.       @status_window.unselect
  118.       @status_window.open
  119.       if BattleManager.input_start
  120.        command_fight
  121.       else
  122.         #@party_command_window.deactivate
  123.         turn_start
  124.       end
  125.     end
  126.   end
  127.   
  128.   def command_attack
  129.     $game_temp.reserve_common_event(1)
  130.     turn_end
  131.   end
  132.   def apply_item_effects(target, item)
  133.     target.item_apply(@subject, item)
  134.     refresh_status
  135.   end
  136. end
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
31 小时
注册时间
2013-9-6
帖子
28
23
 楼主| 发表于 2013-10-24 07:22:24 | 只看该作者
Soy_meng 发表于 2013-10-23 17:09
替换脚本"教学式战斗脚本",其实就是把与@party_command_window有关的注释掉

非常感谢!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
31 小时
注册时间
2013-9-6
帖子
28
24
 楼主| 发表于 2014-2-25 14:28:45 | 只看该作者
喵呜喵5 发表于 2013-10-14 14:43

请问有两个地方有没有办法给进一步优化一下:1、战斗中敌我双方的攻击均是面向全体的,时间长了会有些单调,有没有办法改成对单个人(或怪物)的?2、选题时每个题目出现的几率一样,这样导致有的题目会频繁的重复出现,能不能设计一下,减少前面出现并回答正确的题目出现的几率?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
4 小时
注册时间
2014-2-25
帖子
11
25
发表于 2014-2-25 18:44:54 | 只看该作者
比较简单……
1、先显示题目,最好用AB、12之类的序号,方便玩家选择。
2、然后新建判断。
3、接着新建分支。
4、第一个分支是战斗处理。
5、第二个是剧情发展。

万能的事件啊!!!{:2_275:}
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
31 小时
注册时间
2013-9-6
帖子
28
26
 楼主| 发表于 2014-2-27 10:57:13 | 只看该作者
不明觉厉,看来还是得加强学习啊。
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21484
在线时间
9389 小时
注册时间
2012-6-19
帖子
7114

开拓者短篇九导演组冠军

27
发表于 2014-3-3 18:56:31 | 只看该作者
关于你的第一个要求……
本来写这个脚本的时候我考虑的就是一个敌人和一个主角的情况,多个战斗角色的情况我得再稍微想想怎么实现……

第二个不抽取重复题目的功能已经实现,只有全部题目抽完之后才能重新抽到重复的题目

Project1.rar (237.98 KB, 下载次数: 62)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
31 小时
注册时间
2013-9-6
帖子
28
28
 楼主| 发表于 2014-3-4 10:13:00 | 只看该作者
收到,谢谢,帮了大忙了。
最近也在学习脚本,刚开始只是想做一个非常简单的小游戏,现在工作没做多少,想法却越来越多,看来做游戏真不是件容易的事呢。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-25 07:24

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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