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

Project1

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

[已经解决] 脚本盲求指教,我这样改有什么问题

[复制链接]

Lv4.逐梦者

梦石
0
星屑
12157
在线时间
4435 小时
注册时间
2014-4-11
帖子
5955

开拓者

跳转到指定楼层
1
发表于 2015-11-21 09:12:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 yang1zhi 于 2015-11-21 09:24 编辑

这个是跨地图航行脚本中的某一段
我想要的效果是按下某键后,船就会向前冲出一段距离,等待几秒后再次使用。
可是我改完后是会报错的。
添加了#####那部分

RUBY 代码复制
  1. =begin
  2.  --------------------------------------------------------------------------
  3.  =begin
  4.  --------------------------------------------------------------------------
  5.  跨地图航海辅佐脚本 v1.1
  6.  By 叶子
  7.  Date 4-8-2006
  8.  --------------------------------------------------------------------------
  9.  跨地图航海由一个脚本+一个事件完成
  10.  
  11.  使用方法(请耐心阅读完全部说明!每一步都必不可少):
  12.  
  13.  -插入本脚本到Main之上
  14.  
  15.  -二选一:
  16.  一)插入航海脚本懒人插件到Main之上,或者
  17.  二)仔细观察插件脚本,找到:
  18.     #-----------插入船命令-----------
  19.     setup_ship
  20.     #--------------------------------
  21.    和
  22.     #---------插入船刷新命令---------
  23.     $game_player.shipping_update
  24.     #--------------------------------
  25.  插入到Game_Map中相同位置(出现冲突时采用此方法)
  26.  
  27.  -小船事件设置方法:
  28.  小船为范例工程工程里湖中的矿道车,可以改成其它船的行走图
  29.  第二页出现条件设置为航行中标志开关打开(默认50号开关),第三页为独立开关A打开
  30.  
  31.  -水中通行设置方法:
  32.  把所有水的图块的地形标志设置为2,把水中不可通行图块(例如水中礁石)的地形标志
  33.  设置为3或以上(反正要大于水的地形标志)
  34.  
  35.  注意事项:
  36.  
  37.  -不明白小船实现原理的话最好不要改小船事件(除了注释说可以随便改的地方之外)
  38.  -默认角色航行中的话,50号开关打开,这时可以利用并行公共事件判断角色遇敌等
  39.  -航行中标志开关只能用于判断,不要在其它事件中打开或关闭,否则可能出错误
  40.  
  41. =end
  42.  
  43. SHIPPING_SWITCH = 50                # 默认50号开关为是否航行中标志开关
  44.  
  45. #==============================================================================
  46. # ■ Game_Player
  47. #------------------------------------------------------------------------------
  48. #  处理主角的类。事件启动的判定、以及地图的滚动等功能。
  49. # 本类的实例请参考 $game_player。
  50. #==============================================================================
  51.  
  52. class Game_Player < Game_Character
  53.   TERRAIN_TAG = 2                     # 默认2号地形标志为水的地形标志
  54.   attr_accessor :x                    # x坐标
  55.   attr_accessor :y                    # y坐标
  56.   attr_accessor :shipping             # 航海中标志
  57.   attr_accessor :ship                 # 船信息
  58.   #--------------------------------------------------------------------------
  59.   # ● 航海更新
  60.   #--------------------------------------------------------------------------
  61.   def shipping_update
  62.     return if !@shipping
  63.     @old_x = @x
  64.     @old_y = @y
  65.     # 着陆判断初始化
  66.     @land = false
  67.     # 移动中、事件执行中、强制移动路线中、
  68.     # 信息窗口一个也不显示的时候
  69.     unless moving? or $game_system.map_interpreter.running? or
  70.            @move_route_forcing or $game_temp.message_window_showing
  71.       # 如果方向键被按下、主角就朝那个方向移动
  72.       case Input.dir4
  73.       when 2
  74.         ship_move_down
  75.       when 4
  76.         ship_move_left
  77.       when 6
  78.         ship_move_right
  79.       when 8
  80.         ship_move_up
  81.       end
  82.       #################
  83.       if Input::C
  84.         @move_speed = 6
  85.         ship_move_forward
  86.         @move_speed = 4
  87.       end
  88.       ###############
  89.     end
  90.     # 着陆判断
  91.     if @land
  92.       end_shipping
  93.     end
  94.   end
  95.   #--------------------------------------------------------------------------
  96.   # ● 开始航海
  97.   #--------------------------------------------------------------------------
  98.   def start_shipping(ship)
  99.     $game_player.shipping = true
  100.     need_setup = false
  101.     # 处女航的话,刷新地图
  102.     if @ship.nil?
  103.       need_setup = true
  104.     end
  105.     # 把船事件添加入资料中
  106.     @ship = ship
  107.     # 移动角色
  108.     @x = @ship.x
  109.     @y = @ship.y
  110.     # 记录位置
  111.     @ship.ship_position = [$game_map.map_id, @ship.x, @ship.y]
  112.     if need_setup
  113.       $game_map.setup_ship
  114.     end
  115.     $game_map.need_refresh = true
  116.   end
  117.   #--------------------------------------------------------------------------
  118.   # ● 着陆
  119.   #--------------------------------------------------------------------------
  120.   def end_shipping
  121.     # 获取带头的角色
  122.     actor = $game_party.actors[0]
  123.     # 设置角色的文件名及对像
  124.     @character_name = actor.character_name
  125.     @character_hue = actor.character_hue
  126.     # 关闭标志
  127.     @shipping = false
  128.     $game_switches[SHIPPING_SWITCH] = false
  129.     # 关闭停止时动画
  130.     @step_anime = false
  131.     # 回复速度
  132.     @move_speed = 4
  133.     # 设置船位置
  134.     @ship.ship_position = [$game_map.map_id, @old_x, @old_y]
  135.     @ship.moveto(@ship.ship_position[1], @ship.ship_position[2])
  136.     # 刷新地图
  137.     $game_map.need_refresh = true
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ● 向下移动
  141.   #     turn_enabled : 本场地位置更改许可标志
  142.   #--------------------------------------------------------------------------
  143.   def ship_move_down(turn_enabled = true)
  144.     # 面向下
  145.     if turn_enabled
  146.       turn_down
  147.     end
  148.     # 可以通行的场合
  149.     if ship_passable?(@x, @y, 2)
  150.       # 面向下
  151.       turn_down
  152.       # 更新坐标
  153.       @y += 1
  154.       # 增加步数
  155.       increase_steps
  156.     # 不能通行的情况下
  157.     else
  158.       # 接触事件的启动判定
  159.       check_event_trigger_touch(@x, @y+1)
  160.     end
  161.   end
  162.   #--------------------------------------------------------------------------
  163.   # ● 向左移动
  164.   #     turn_enabled : 本场地位置更改许可标志
  165.   #--------------------------------------------------------------------------
  166.   def ship_move_left(turn_enabled = true)
  167.     # 面向左
  168.     if turn_enabled
  169.       turn_left
  170.     end
  171.     # 可以通行的情况下
  172.     if ship_passable?(@x, @y, 4)
  173.       # 面向左
  174.       turn_left
  175.       # 更新坐标
  176.       @x -= 1
  177.       # 增加步数
  178.       increase_steps
  179.     # 不能通行的情况下
  180.     else
  181.       # 接触事件的启动判定
  182.       check_event_trigger_touch(@x-1, @y)
  183.     end
  184.   end
  185.   #--------------------------------------------------------------------------
  186.   # ● 向右移动
  187.   #     turn_enabled : 本场地位置更改许可标志
  188.   #--------------------------------------------------------------------------
  189.   def ship_move_right(turn_enabled = true)
  190.     # 面向右
  191.     if turn_enabled
  192.       turn_right
  193.     end
  194.     # 可以通行的场合
  195.     if ship_passable?(@x, @y, 6)
  196.       # 面向右
  197.       turn_right
  198.       # 更新坐标
  199.       @x += 1
  200.       # 增加部数
  201.       increase_steps
  202.     # 不能通行的情况下
  203.     else
  204.       # 接触事件的启动判定
  205.       check_event_trigger_touch(@x+1, @y)
  206.     end
  207.   end
  208.   #--------------------------------------------------------------------------
  209.   # ● 向上移动
  210.   #     turn_enabled : 本场地位置更改许可标志
  211.   #--------------------------------------------------------------------------
  212.   def ship_move_up(turn_enabled = true)
  213.     # 面向上
  214.     if turn_enabled
  215.       turn_up
  216.     end
  217.     # 可以通行的情况下
  218.     if ship_passable?(@x, @y, 8)
  219.       # 面向上
  220.       turn_up
  221.       # 更新坐标
  222.       @y -= 1
  223.       # 歩数増加
  224.       increase_steps
  225.     # 不能通行的情况下
  226.     else
  227.       # 接触事件的启动判定
  228.       check_event_trigger_touch(@x, @y-1)
  229.     end
  230.   end
  231.   ################################
  232.     #--------------------------------------------------------------------------
  233.   # ● 向前移动
  234.   #     turn_enabled : 本场地位置更改许可标志
  235.   #--------------------------------------------------------------------------
  236.   def ship_move_forward(turn_enabled = true)
  237.         # 面向上
  238.     if turn_enabled
  239.       turn_up
  240.     end
  241.     # 可以通行的情况下
  242.     if ship_passable?(@x, @y, 8)
  243.       # 面向上
  244.       turn_up
  245.       # 更新坐标
  246.       @y -= 1
  247.       # 歩数増加
  248.       increase_steps
  249.     # 不能通行的情况下
  250.     else
  251.       # 接触事件的启动判定
  252.       check_event_trigger_touch(@x, @y-1)
  253.     end
  254.     # 面向右
  255.     if turn_enabled
  256.       turn_right
  257.     end
  258.     # 可以通行的场合
  259.     if ship_passable?(@x, @y, 6)
  260.       # 面向右
  261.       turn_right
  262.       # 更新坐标
  263.       @x += 1
  264.       # 增加部数
  265.       increase_steps
  266.     # 不能通行的情况下
  267.     else
  268.       # 接触事件的启动判定
  269.       check_event_trigger_touch(@x+1, @y)
  270.     end
  271.     # 面向左
  272.     if turn_enabled
  273.       turn_left
  274.     end
  275.     # 可以通行的情况下
  276.     if ship_passable?(@x, @y, 4)
  277.       # 面向左
  278.       turn_left
  279.       # 更新坐标
  280.       @x -= 1
  281.       # 增加步数
  282.       increase_steps
  283.     # 不能通行的情况下
  284.     else
  285.       # 接触事件的启动判定
  286.       check_event_trigger_touch(@x-1, @y)
  287.     end
  288.     # 面向下
  289.     if turn_enabled
  290.       turn_down
  291.     end
  292.     # 可以通行的场合
  293.     if ship_passable?(@x, @y, 2)
  294.       # 面向下
  295.       turn_down
  296.       # 更新坐标
  297.       @y += 1
  298.       # 增加步数
  299.       increase_steps
  300.     # 不能通行的情况下
  301.     else
  302.       # 接触事件的启动判定
  303.       check_event_trigger_touch(@x, @y+1)
  304.     end
  305.  
  306.   end
  307. #############################################
  308.   #--------------------------------------------------------------------------
  309.   # ● 可以通行判定
  310.   #     x : X 坐标
  311.   #     y : Y 坐标
  312.   #     d : 方向 (0,2,4,6,8)  ※ 0 = 全方向不能通行的情况判定 (跳跃用)
  313.   #--------------------------------------------------------------------------
  314.   def ship_passable?(x, y, d)
  315.     # 求得新的坐标
  316.     new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0)
  317.     new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0)
  318.     # 坐标在地图以外的情况
  319.     unless $game_map.valid?(new_x, new_y)
  320.       # 不能通行
  321.       return false
  322.     end
  323.     # 穿透是 ON 的情况下
  324.     if @through
  325.       # 可以通行
  326.       return true
  327.     end
  328.     # 循环全部事件
  329.     for event in $game_map.events.values
  330.       # 事件坐标于移动目标坐标一致的情况下
  331.       if event.x == new_x and event.y == new_y
  332.         # 穿透为 ON
  333.         unless event.through
  334.           # 自己就是事件的情况下
  335.           if self != $game_player
  336.             # 不能通行
  337.             return false
  338.           end
  339.           # 自己是主角、对方的图形是角色的情况下
  340.           if event.character_name != ""
  341.             # 不能通行
  342.             return false
  343.           end
  344.         end
  345.       end
  346.     end
  347.     # 主角的坐标与移动目标坐标一致的情况下
  348.     if $game_player.x == new_x and $game_player.y == new_y
  349.       # 穿透为 ON
  350.       unless $game_player.through
  351.         # 自己的图形是角色的情况下
  352.         if @character_name != ""
  353.           # 不能通行
  354.           return false
  355.         end
  356.       end
  357.     end
  358.     # 地形标志判断通行
  359.     for i in [2, 1, 0]
  360.       tile_id = $game_map.data[new_x, new_y, i]
  361.       return false if tile_id == nil
  362.     end
  363.     if $game_map.terrain_tag(new_x, new_y) != TERRAIN_TAG
  364.       if passable?(new_x, new_y, 0)
  365.         @land = true
  366.         return true
  367.       end
  368.       return false
  369.     end
  370.     # 可以通行
  371.     return true
  372.   end
  373. end
  374.  
  375. #==============================================================================
  376. # ■ Game_Map
  377. #------------------------------------------------------------------------------
  378. #  处理地图的类。包含卷动以及可以通行的判断功能。
  379. # 本类的实例请参考 $game_map 。
  380. #==============================================================================
  381.  
  382. class Game_Map
  383.   attr_accessor :events                    # 事件
  384.   def setup_ship
  385.     return if $game_player.ship.nil?
  386.     # 航行中或船停泊在此则创建船事件
  387.     if $game_player.shipping or $game_player.ship.ship_position[0] == @map_id
  388.       id = @events.values.size + 1
  389.       # 防止事件错误
  390.       while @events[id] != nil
  391.         id += 1
  392.       end
  393.       @events[id] = $game_player.ship
  394.       @events[id].id = id
  395.       @events[id].map_id = @map_id
  396.       @events[id].moveto($game_player.ship.ship_position[1],
  397.       $game_player.ship.ship_position[2])
  398.       # 不在航行中则关闭开关使船出现
  399.       if !$game_player.shipping
  400.         $game_switches[SHIPPING_SWITCH] = false
  401.       end
  402.     end
  403.   end
  404. end
  405.  
  406. #==============================================================================
  407. # ■ Game_Event
  408. #------------------------------------------------------------------------------
  409. #  处理事件的类。条件判断、事件页的切换、并行处理、执行事件功能
  410. # 在 Game_Map 类的内部使用。
  411. #==============================================================================
  412.  
  413. class Game_Event < Game_Character
  414.   #--------------------------------------------------------------------------
  415.   # ● 定义实例变量
  416.   #--------------------------------------------------------------------------
  417.   attr_accessor :id                               # 事件ID
  418.   attr_accessor :map_id                           # 地图ID
  419.   attr_accessor :ship_position                    # 记录船位置数组
  420.   #--------------------------------------------------------------------------
  421.   # ● 越过目标判定 (不能将相同位置作为启动条件)
  422.   #--------------------------------------------------------------------------
  423.   def over_trigger?
  424.     # 图形是角色、没有开启穿透的情况下
  425.     if @character_name != "" and not @through
  426.       # 启动判定是正面
  427.       return false
  428.     end
  429.     # 地图上的这个位置不能通行,并且不在航海中的情况下
  430.     if !$game_map.passable?(@x, @y, 0) and $game_player.shipping != true
  431.       # 启动判定是正面
  432.       return false
  433.     end
  434.     # 启动判定在同位置
  435.     return true
  436.   end
  437.   def id=(new_id)
  438.     @id = new_id
  439.     @event.id = new_id
  440.   end
  441. end
  442.  
  443. #==============================================================================
  444. # ■ Interpreter
  445. #------------------------------------------------------------------------------
  446. #  执行事件命令的解释器。本类在 Game_System 类
  447. # 与 Game_Event 类的内部使用。
  448. #==============================================================================
  449.  
  450. class Interpreter
  451.   #--------------------------------------------------------------------------
  452.   # ● 开始航海
  453.   #--------------------------------------------------------------------------
  454.   def start_shipping
  455.     $game_player.start_shipping($game_map.events[@event_id])
  456.   end
  457. end
  

评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 手动认可奖励

查看全部评分

Lv3.寻梦者

梦石
0
星屑
1759
在线时间
2524 小时
注册时间
2010-10-12
帖子
1454

开拓者

2
发表于 2015-11-21 10:49:38 | 只看该作者
83 行
改为  if Input.trigger?(Input::C)

点评

已经利用脚本加事件完成了。不过还是不明白为什么要打if Input.trigger?(Input::C),这么麻烦  发表于 2015-11-23 15:38
修改后,按键,然后只是面朝下。并没有前进。  发表于 2015-11-21 13:16

评分

参与人数 1星屑 +150 收起 理由
RyanBern + 150 认可答案

查看全部评分


回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
590
在线时间
392 小时
注册时间
2012-1-20
帖子
223

开拓者

3
发表于 2015-11-21 13:10:02 | 只看该作者
文字描述的部分没有注释掉??

点评

文字是正常的,就是我添加了82行和236行内容  发表于 2015-11-21 13:33
支持一下下我的这个游戏吧~~
大雄与空间军团
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
12157
在线时间
4435 小时
注册时间
2014-4-11
帖子
5955

开拓者

4
 楼主| 发表于 2015-11-23 15:27:05 | 只看该作者
刺夜之枪 发表于 2015-11-21 10:49
83 行
改为  if Input.trigger?(Input::C)

我这样写可以达到90%的效果了。可是问题是加速后的      
@move_speed = 6
怎么变回来。
       @move_speed = 4插入到END前就没有加速效果了
不加就一直是6速度

脚本
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-14 19:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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