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

Project1

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

[已经解决] 脚本没效果

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3591
在线时间
1890 小时
注册时间
2010-6-19
帖子
1211
跳转到指定楼层
1
发表于 2014-12-30 07:21:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 RyanBern 于 2015-1-4 22:15 编辑

下面这段脚本
  1.      if @anime_count > 14 - @move_speed * 2
  2.      if not @step_anime and @stop_count > 0
  3.        @pattern = @original_pattern
  4.      else
  5.        @l = @character_name.split(/★/)[1] != nil ? @character_name.split(/★/)[1].to_i : 4
  6.        @pattern = (@pattern + 1) % @l
  7.      end
复制代码
我改成
  1.      if @anime_count > 14 - @move_speed * 2
  2.      if not @step_anime and @stop_count > 0
  3.        @pattern = @original_pattern
  4.      elsif
  5.        @l = @character_name.split(/★/)[1] != nil ? @character_name.split(/★/)[1].to_i : 4
  6.        @pattern = (@pattern + 1) % @l
  7.      elsif
  8.        @l = @character_name.split(/☆/)[1] != nil ? @character_name.split(/☆/)[1].to_i : 4
  9.        @pattern = (@pattern + 1) % @l  
  10.      end
复制代码
可是怎么这句没效果
  1.        @l = @character_name.split(/☆/)[1] != nil ? @character_name.split(/☆/)[1].to_i : 4
  2.        @pattern = (@pattern + 1) % @l  
复制代码
来个朋友帮看下改怎么改。      

点评

如果不希望被人看到帖子里的一些隐私黑历史一类的东西可以去版主申请删帖吧?,(可用举报功能  发表于 2015-1-4 22:19
进入帖子编辑回去不就完了?可能是误操作  发表于 2015-1-4 22:19
阅读权限是做啥?  发表于 2015-1-4 17:36
阅读权限是什么情况= =  发表于 2015-1-1 15:51

评分

参与人数 1星屑 +35 收起 理由
︶ㄣ牛排ぶ + 35 手动认可奖励

查看全部评分

Lv1.梦旅人

梦石
0
星屑
50
在线时间
52 小时
注册时间
2014-11-6
帖子
23
2
发表于 2014-12-30 14:18:41 | 只看该作者
那个其实我对语法也不太了解,不知道对不对
elsif
       @l = @character_name.split(/★/)[1] != nil ? @character_name.split(/★/)[1].to_i : 4
中,"@l = @character_name.split(/★/)[1] != nil ? @character_name.split(/★/)[1].to_i : 4 "视为elsif的条件,且恒为真,所以不可能执行到
elsif
       @l = @character_name.split(/☆/)[1] != nil ? @character_name.split(/☆/)[1].to_i : 4
       @pattern = (@pattern + 1) % @l
这一步。
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

3
发表于 2014-12-30 14:42:59 | 只看该作者
不懂楼主要做什么,没有上下文或说明无法理解。顺便:
  1. if 表达式
  2.   表达式 ...
  3. elsif 表达式
  4.   表达式 ...
  5. ...
  6. else
  7.   表达式 ...
  8. end
复制代码
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3591
在线时间
1890 小时
注册时间
2010-6-19
帖子
1211
4
 楼主| 发表于 2014-12-30 17:24:53 | 只看该作者
VIPArcher 发表于 2014-12-30 14:42
不懂楼主要做什么,没有上下文或说明无法理解。顺便:

貌似是这样的
  1. def update
  2.    # 跳跃中、移动中、停止中的分支
  3.    if jumping?
  4.      update_jump
  5.    elsif moving?
  6.      update_move
  7.    else
  8.      update_stop
  9.    end
  10.     if @anime_count > 14 - @move_speed * 2
  11.      if not @step_anime and @stop_count > 0
  12.        @pattern = @original_pattern
  13.      else
  14.        @l = @character_name.split(/★/)[1] != nil ? @character_name.split(/★/)[1].to_i : 4
  15.        @pattern = (@pattern + 1) % @l
  16.      end
  17.      # 清除动画计数
  18.      @anime_count = 0
  19.    end
  20.    # 等待中的情况下
  21.    if @wait_count > 0
  22.      # 减少等待计数
  23.      @wait_count -= 1
  24.      return
  25.    end
  26.    # 强制移动路线的场合
  27.    if @move_route_forcing
  28.      # 自定义移动
  29.      move_type_custom
  30.      return
  31.    end
  32.    # 事件执行待机中并且为锁定状态的情况下
  33.    if @starting or lock?
  34.      # 不做规则移动
  35.      return
  36.    end
  37.    # 如果停止计数超过了一定的值(由移动频度算出)
  38.    if @stop_count > (40 - @move_frequency * 2) * (6 - @move_frequency)
  39.      # 移动类型分支
  40.      case @move_type
  41.      when 1  # 随机
  42.        move_type_random
  43.      when 2  # 接近
  44.        move_type_toward_player
  45.      when 3  # 自定义
  46.        move_type_custom
  47.      end
  48.    end
  49. end
  50. end
复制代码
我给改成这样就不行了,
  1. def update
  2.    # 跳跃中、移动中、停止中的分支
  3.    if jumping?
  4.      update_jump
  5.    elsif moving?
  6.      update_move
  7.    else
  8.      update_stop
  9.    end
  10.     if @anime_count > 14 - @move_speed * 2
  11.      if not @step_anime and @stop_count > 0
  12.        @pattern = @original_pattern
  13.      elsif
  14.        @l = @character_name.split(/★/)[1] != nil ? @character_name.split(/★/)[1].to_i : 4
  15.        @pattern = (@pattern + 1) % @l
  16.      else
  17.        @l = @character_name.split(/☆/)[1] != nil ? @character_name.split(/☆/)[1].to_i : 4
  18.        @pattern = (@pattern + 1) % @l
  19.      end
  20.      # 清除动画计数
  21.      @anime_count = 0
  22.    end
  23.    # 等待中的情况下
  24.    if @wait_count > 0
  25.      # 减少等待计数
  26.      @wait_count -= 1
  27.      return
  28.    end
  29.    # 强制移动路线的场合
  30.    if @move_route_forcing
  31.      # 自定义移动
  32.      move_type_custom
  33.      return
  34.    end
  35.    # 事件执行待机中并且为锁定状态的情况下
  36.    if @starting or lock?
  37.      # 不做规则移动
  38.      return
  39.    end
  40.    # 如果停止计数超过了一定的值(由移动频度算出)
  41.    if @stop_count > (40 - @move_frequency * 2) * (6 - @move_frequency)
  42.      # 移动类型分支
  43.      case @move_type
  44.      when 1  # 随机
  45.        move_type_random
  46.      when 2  # 接近
  47.        move_type_toward_player
  48.      when 3  # 自定义
  49.        move_type_custom
  50.      end
  51.    end
  52. end
  53. end
复制代码

点评

所以说泥对脚本的控制结构还不熟悉啦,你给我看脚本我也不会知道你想干嘛啊。  发表于 2014-12-30 17:49
回复 支持 反对

使用道具 举报

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
5
发表于 2014-12-30 19:39:35 | 只看该作者
本帖最后由 恐惧剑刃 于 2014-12-30 19:42 编辑

其实八方向走没有想象中的那么复杂!
Sprite_Character 中
  1. sx = @character.pattern * @cw
  2. sy = (@character.direction - 2) / 2 * @ch
  3. self.src_rect.set(sx, sy, @cw, @ch)
复制代码
就是控制方向的,可以简单修改为
  1. sx = @character.pattern * @cw
  2. case @character.direction
  3. when 2,4,6,8
  4.   sy = (@character.direction - 2) / 2 * @ch
  5. when 1
  6.   sy = 4 * @ch
  7. when 3
  8.   sy = 5 * @ch
  9. when 7
  10.   sy = 6 * @ch
  11. when 9
  12.   sy = 7 * @ch
  13. end
  14. self.src_rect.set(sx, sy, @cw, @ch)
复制代码
再找到Game_Player
  1. case Input.dir4
  2. when 2
  3.   move_down
  4. when 4
  5.   move_left
  6. when 6
  7.   move_right
  8. when 8
  9.   move_up
  10. end
复制代码
改为
  1. case Input.dir8
  2. when 2
  3.   move_down
  4. when 4
  5.   move_left
  6. when 6
  7.   move_right
  8. when 8
  9.   move_up
  10. when 1
  11.   @direction = 1
  12.   move_lower_left
  13. when 3
  14.   @direction = 3
  15.   move_lower_right
  16. when 7
  17.   @direction = 7
  18.   move_upper_left
  19. when 9
  20.   @direction = 9
  21.   move_upper_right
  22. end
复制代码
可以看到,再移动的时候手动调整方向,在活动块中取得不同的图形
以上,应该没有错吧


如果是待机动画,加一行判断
RUBY 代码复制
  1. case Input.dir8
  2. when 2
  3.   # 更改图形什么的
  4.   move_down
  5. when 4
  6.   move_left
  7. when 6
  8.   move_right
  9. when 8
  10.   move_up
  11. when 1
  12.   @direction = 1
  13.   move_lower_left
  14. when 3
  15.   @direction = 3
  16.   move_lower_right
  17. when 7
  18.   @direction = 7
  19.   move_upper_left
  20. when 9
  21.   @direction = 9
  22.   move_upper_right
  23. else
  24.   # 更改图形什么的,并且打开停止时动画
  25. end


要修改速度在Game_Character 2中
RUBY 代码复制
  1. if @anime_count > 18 - @move_speed * 2

就是这句
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3591
在线时间
1890 小时
注册时间
2010-6-19
帖子
1211
6
 楼主| 发表于 2014-12-30 21:19:54 | 只看该作者
恐惧剑刃 发表于 2014-12-30 19:39
其实八方向走没有想象中的那么复杂!
Sprite_Character 中就是控制方向的,可以简单修改为再找到Game_Playe ...

貌似最后还是自己解决了,前段时间自己弄了个支持全方位行走的脚本,4方向素材和8方向素材放游戏里自动识别成8方向的,这样弄素材就方便多了。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
7
发表于 2014-12-31 17:50:39 | 只看该作者
本帖最后由 恐惧剑刃 于 2014-12-31 17:56 编辑

宠物系统  很多东西没有完成   不过大概思路就是这样

仅供参考
随便新建一个工程,去捕捉幽灵看看吧   呵呵
剩下的把对应角色加入队伍,删除角色等需要专用宠物界面  我没有完成。。。
babies 当前角色的所有宠物
canzhan 参战
  1. module Battle
  2. end

  3. #==============================================================================
  4. # ■ Battle::Actor
  5. #------------------------------------------------------------------------------
  6. #  角色模块。
  7. #==============================================================================

  8. module Battle::Actor
  9.   
  10.   Commands = []
  11.   # 一般指令
  12.   Default_Commands = ["攻击", "特技", "防御", "物品"]
  13.   # 特殊指令
  14.   Commands[1] = ["捕捉", "攻击", "防御"]
  15.   Commands[2] = ["攻击", "特技", "防御"]
  16.   Commands[7] = ["魔法", "防御", "物品"]
  17.   Commands[8] = ["魔法", "防御", "物品"]
  18.   
  19. end

  20. #==============================================================================
  21. # ■ Game_Actor
  22. #------------------------------------------------------------------------------
  23. #  处理角色的类。本类在 Game_Actors 类 ($game_actors)
  24. # 的内部使用、Game_Party 类请参考 ($game_party) 。
  25. #==============================================================================

  26. class Game_Actor < Game_Battler
  27.   attr_writer :babies # baby列表,角色当前所有的宠物
  28.   attr_accessor :canzhan
  29.   def babies
  30.     @babies = [] if @babies.nil?
  31.     return @babies
  32.   end
  33. end

  34. #==============================================================================
  35. # ■ Battle::Enemy
  36. #------------------------------------------------------------------------------
  37. #  敌人模块。
  38. #==============================================================================

  39. module Battle::Enemy
  40.   
  41.   Babies = []
  42.   # 可以捕捉的敌人设置
  43.   Babies = [1]
  44.   
  45.   Acid = []
  46.   # 对应角色id
  47.   Acid[1] = 37
  48.   
  49.   Ani = []
  50.   # [角色id] = [动画1, 动画2]
  51.   Ani[1] = [19, 20]
  52.   
  53. end

  54. #==============================================================================
  55. # ■ Window_BattleCommand
  56. #------------------------------------------------------------------------------
  57. #  角色指令窗口。
  58. #==============================================================================

  59. class Window_BattleCommand < Window_Selectable
  60.   #--------------------------------------------------------------------------
  61.   # ● 初始化对像
  62.   #--------------------------------------------------------------------------
  63.   def initialize
  64.     super(0, 0, 160, 0)
  65.     self.active = false
  66.     self.index = -1
  67.     self.visible = false
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   # ● 设置
  71.   #--------------------------------------------------------------------------
  72.   def setup(index)
  73.     return if @actor_index == index
  74.     @actor_index = index
  75.     id = $game_party.actors[index].id
  76.     if not (commands = Battle::Actor::Commands[id])
  77.       commands = Battle::Actor::Default_Commands
  78.     end
  79.     @commands = commands
  80.     @item_max = @commands.size
  81.     self.height = (@item_max + 1) * 32
  82.     self.y = 320 - self.height
  83.     if self.contents
  84.       self.contents.dispose
  85.       self.contents = nil
  86.     end
  87.     self.contents = Bitmap.new(self.width - 32, @item_max * 32)
  88.     refresh
  89.   end
  90.   #--------------------------------------------------------------------------
  91.   # ● 指令
  92.   #--------------------------------------------------------------------------
  93.   def command
  94.     return @commands[self.index]
  95.   end
  96.   #--------------------------------------------------------------------------
  97.   # ● 刷新
  98.   #--------------------------------------------------------------------------
  99.   def refresh
  100.     for i in 0...@item_max
  101.       draw_item(i, normal_color)
  102.     end
  103.     self.visible = true
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # ● 描绘项目
  107.   #     index : 项目编号
  108.   #     color : 文字色
  109.   #--------------------------------------------------------------------------
  110.   def draw_item(index, color)
  111.     self.contents.font.color = color
  112.     x = 4
  113.     y = 32 * index
  114.     sw = self.contents.width - 8
  115.     sh = 32
  116.     self.contents.draw_text(x, y, sw, sh, @commands[index])
  117.   end
  118. end

  119. #==============================================================================
  120. # ■ Scene_Battle (分割定义 3)
  121. #------------------------------------------------------------------------------
  122. #  处理战斗画面的类。
  123. #==============================================================================

  124. class Scene_Battle
  125.   include Battle::Actor
  126.   #--------------------------------------------------------------------------
  127.   # ● 设置角色指令窗口
  128.   #--------------------------------------------------------------------------
  129.   alias bljrwg phase3_setup_command_window
  130.   def phase3_setup_command_window
  131.     @actor_command_window.setup(@actor_index)
  132.     bljrwg
  133.   end
  134.   #--------------------------------------------------------------------------
  135.   # ● 刷新画面 (角色命令回合 : 基本命令)
  136.   #--------------------------------------------------------------------------
  137.   alias ymxjrwg update_phase3_basic_command
  138.   def update_phase3_basic_command
  139.     # 按下 B 键的情况下
  140.     if Input.trigger?(Input::B)
  141.       # 演奏取消 SE
  142.       $game_system.se_play($data_system.cancel_se)
  143.       # 转向前一个角色的指令输入
  144.       phase3_prior_actor
  145.       return
  146.     end
  147.     # 按下 C 键的情况下
  148.     if Input.trigger?(Input::C)
  149.       # 角色指令窗口光标位置分之
  150.       case @actor_command_window.command
  151.       when "攻击"
  152.         # 演奏确定 SE
  153.         $game_system.se_play($data_system.decision_se)
  154.         # 设置行动
  155.         @active_battler.current_action.kind = 0
  156.         @active_battler.current_action.basic = 0
  157.         # 开始选择敌人
  158.         start_enemy_select
  159.       when "特技", "魔法"
  160.         # 演奏确定 SE
  161.         $game_system.se_play($data_system.decision_se)
  162.         # 设置行动
  163.         @active_battler.current_action.kind = 1
  164.         # 开始选择特技
  165.         start_skill_select
  166.       when "防御"
  167.         # 演奏确定 SE
  168.         $game_system.se_play($data_system.decision_se)
  169.         # 设置行动
  170.         @active_battler.current_action.kind = 0
  171.         @active_battler.current_action.basic = 1
  172.         # 转向下一位角色的指令输入
  173.         phase3_next_actor
  174.       when "物品"
  175.         # 演奏确定 SE
  176.         $game_system.se_play($data_system.decision_se)
  177.         # 设置行动
  178.         @active_battler.current_action.kind = 2
  179.         # 开始选择物品
  180.         start_item_select
  181.       when "捕捉"
  182.         # 演奏确定 SE
  183.         $game_system.se_play($data_system.decision_se)
  184.         # 设置行动
  185.         @active_battler.current_action.kind = 3
  186.         # 开始选择敌人
  187.         start_enemy_select
  188.       end
  189.       return
  190.     end
  191.   end
  192.   #--------------------------------------------------------------------------
  193.   # ● 刷新画面 (主回合步骤 2 : 开始行动)
  194.   #--------------------------------------------------------------------------
  195.   alias mdhdjwg update_phase4_step2
  196.   def update_phase4_step2
  197.     # 如果不是强制行动
  198.     unless @active_battler.current_action.forcing
  199.       # 限制为 [敌人为普通攻击] 或 [我方为普通攻击] 的情况下
  200.       if @active_battler.restriction == 2 or @active_battler.restriction == 3
  201.         # 设置行动为攻击
  202.         @active_battler.current_action.kind = 0
  203.         @active_battler.current_action.basic = 0
  204.       end
  205.       # 限制为 [不能行动] 的情况下
  206.       if @active_battler.restriction == 4
  207.         # 清除行动强制对像的战斗者
  208.         $game_temp.forcing_battler = nil
  209.         # 移至步骤 1
  210.         @phase4_step = 1
  211.         return
  212.       end
  213.     end
  214.     # 清除对像战斗者
  215.     @target_battlers = []
  216.     # 行动种类分支
  217.     case @active_battler.current_action.kind
  218.     when 0  # 基本
  219.       make_basic_action_result
  220.     when 1  # 特技
  221.       make_skill_action_result
  222.     when 2  # 物品
  223.       make_item_action_result
  224.     when 3  # 捕捉
  225.       make_buzhuo_action_result
  226.     end
  227.     # 移至步骤 3
  228.     if @phase4_step == 2
  229.       @phase4_step = 3
  230.     end
  231.   end
  232.   #--------------------------------------------------------------------------
  233.   # ● 生成捕捉行动结果
  234.   #--------------------------------------------------------------------------
  235.   def make_buzhuo_action_result
  236.     index = @active_battler.current_action.target_index
  237.     target = $game_troop.smooth_target_enemy(index)
  238.     @target_battlers = [target]
  239.     if !Battle::Enemy::Babies.include?(target.id)
  240.       @phase4_step = 1
  241.       return
  242.     end
  243.     if 20 > rand(100)
  244.       print "捕捉 #{target.name} 失败!"
  245.       @phase4_step = 1
  246.       return
  247.     end
  248.     print "成功捕捉 #{target.name} !"
  249.     @animation1_id = Battle::Enemy::Ani[@active_battler.id][0]
  250.     @animation2_id = Battle::Enemy::Ani[@active_battler.id][1]
  251.     @help_window.set_text("捕捉", 1)
  252.     @active_battler.babies << Battle::Enemy::Acid[target.id]
  253.   end
  254. end
复制代码

点评

忘记考虑重复捕捉了,不过问题不大。。。  发表于 2014-12-31 17:52
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3591
在线时间
1890 小时
注册时间
2010-6-19
帖子
1211
8
 楼主| 发表于 2014-12-31 20:00:09 | 只看该作者
恐惧剑刃 发表于 2014-12-31 17:50
宠物系统  很多东西没有完成   不过大概思路就是这样

仅供参考

貌似现在就差这个捕捉系统了,能给梦幻群侠传的脚本里弄个捕捉的功能吗,战斗的时候可以捕捉特定的怪物当作宠物,不过群侠传的宠物系统好像有点问题,因为里面的宠物等同于角色,所以同种召唤兽不能两个以上的角色同时拥有(能改掉这个问题就好了。。。)。貌似好像很难的样子,你有空的话帮我看下,能弄的话最好了,就差这个功能了。、

梦幻群侠传.rar

1.27 MB, 下载次数: 44

回复 支持 反对

使用道具 举报

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
9
发表于 2015-1-1 08:17:45 | 只看该作者
大概就是这样
遗憾的是 独立宠物依然没有做

貌似不太好改啊
我想用一个数据记录独立的宠物HP MP EXP LV等
在战斗前初始化一个绝对独立的角色,不知道可不可以, 反正我没试过。。

baby.zip

1.27 MB, 下载次数: 54

点评

发现个问题,当敌人被捕捉之后,第二回合战斗结束了,然后设置改宠物为参战,接着进入战斗就出现脚本错误  发表于 2015-1-1 09:05
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3591
在线时间
1890 小时
注册时间
2010-6-19
帖子
1211
10
 楼主| 发表于 2015-1-1 08:59:39 | 只看该作者
恐惧剑刃 发表于 2015-1-1 08:17
大概就是这样
遗憾的是 独立宠物依然没有做

能否改成这样,捕捉有几率,HP越低越容易捕捉成功,
失败的时候显示

成功的时候显示

当敌人被捕捉成功的时候,对应的敌人就直接消失掉。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-14 18:58

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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