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

Project1

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

[已经过期] 请教个人物跟随脚本的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
52
在线时间
586 小时
注册时间
2012-5-31
帖子
768
跳转到指定楼层
1
发表于 2012-12-22 13:07:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
RUBY 代码复制
  1. # ————————————————————————————————————
  2.  
  3. # ▼▲▼ XRXS13. パーティ列車移動 ver.1.02 ▼▲▼
  4. #
  5. # Train_Actor
  6. #
  7. #
  8.  
  9. module Train_Actor
  10.  
  11.  
  12.  
  13.  
  14. #是否使用停止跟随的方法,也就是说,这里false改为true的时候,如果TRANSPARENT_SWITCHES_INDEX
  15. #开关打开,跟随的人物就消失了(其实只是变成透明而已)
  16. TRANSPARENT_SWITCH = false
  17. TRANSPARENT_SWITCHES_INDEX = 20
  18. #举例:第一个为true,第二个为20,则打开20号开关,后面的人都没了。
  19.  
  20.  
  21.  
  22.  
  23.  
  24. #跟随人数的最大数目,可以更改为2、3什么的。
  25. TRAIN_ACTOR_SIZE_MAX = 5
  26.  
  27.  
  28.  
  29.  
  30.  
  31. # 定数
  32. #Input::DOWN = 2
  33. #Input::LEFT = 4
  34. #Input::RIGHT = 6
  35. #Input::UP = 6
  36. DOWN_LEFT = 1
  37. DOWN_RIGHT = 3
  38. UP_LEFT = 7
  39. UP_RIGHT = 9
  40. JUMP = 5
  41. #==============================================================================
  42. # ■ Game_Party_Actor
  43. #------------------------------------------------------------------------------
  44. #  
  45. #==============================================================================
  46. class Game_Party_Actor < Game_Character
  47. attr :name
  48. def initialize
  49.  
  50. super()
  51. @x = $game_player.x
  52. @y = $game_player.y
  53. @through = true
  54. end
  55. def setup(actor)
  56. # キャラクターのファイル名と色相を設定
  57. if actor != nil
  58. if $game_player.moving?
  59. @character_name = actor.character_name
  60. else
  61. if actor.id < 30
  62. @character_name = actor.character_name + "_W1"
  63. else
  64. @character_name = actor.character_name
  65. end
  66. end
  67. @character_hue = actor.character_hue
  68. @tempneme = actor.name
  69. else
  70. @character_name = ""
  71. @character_hue = 0
  72. @tempneme = ""
  73. end
  74. # 不透明度と合成方法を初期化
  75. [url=home.php?mod=space&uid=316553]@opacity[/url] = 255
  76. @blend_type = 0
  77. end
  78. def screen_z(height = 0)
  79. if $game_player.x == @x and $game_player.y == @y
  80. return $game_player.screen_z(height) - 1
  81. end
  82. super(height)
  83. end
  84.     def name
  85.         return @tempneme
  86.       end
  87. #--------------------------------------------------------------------------
  88. # ● 下に移動
  89. # turn_enabled : その場での向き変更を許可するフラグ
  90. #--------------------------------------------------------------------------
  91. def move_down(turn_enabled = true)
  92.   # 下を向く
  93.   if turn_enabled
  94.     turn_down
  95.   end
  96.   # 通行可能な場合
  97.   if passable?(@x, @y, Input::DOWN)
  98.     # 下を向く
  99.     turn_down
  100.     # 座標を更新
  101.     @y += 1
  102.     increase_steps
  103.   end
  104. end
  105. #--------------------------------------------------------------------------
  106. # ● 左に移動
  107. # turn_enabled : その場での向き変更を許可するフラグ
  108. #--------------------------------------------------------------------------
  109. def move_left(turn_enabled = true)
  110.   # 左を向く
  111.   if turn_enabled
  112.     turn_left
  113.   end
  114.   # 通行可能な場合
  115.   if passable?(@x, @y, Input::LEFT)
  116.     # 左を向く
  117.     turn_left
  118.     # 座標を更新
  119.     @x -= 1
  120.     increase_steps
  121.   end
  122. end
  123. #--------------------------------------------------------------------------
  124. # ● 右に移動
  125. # turn_enabled : その場での向き変更を許可するフラグ
  126. #--------------------------------------------------------------------------
  127. def move_right(turn_enabled = true)
  128.   # 右を向く
  129.   if turn_enabled
  130.     turn_right
  131.   end
  132.   # 通行可能な場合
  133.   if passable?(@x, @y, Input::RIGHT)
  134.     # 右を向く
  135.     turn_right
  136.     # 座標を更新
  137.     @x += 1
  138.     increase_steps
  139.   end
  140. end
  141. #--------------------------------------------------------------------------
  142. # ● 上に移動
  143. # turn_enabled : その場での向き変更を許可するフラグ
  144. #--------------------------------------------------------------------------
  145. def move_up(turn_enabled = true)
  146.   # 上を向く
  147.   if turn_enabled
  148.     turn_up
  149.   end
  150.   # 通行可能な場合
  151.   if passable?(@x, @y, Input::UP)
  152.     # 上を向く
  153.     turn_up
  154.     # 座標を更新
  155.     @y -= 1
  156.     increase_steps
  157.   end
  158. end
  159. #--------------------------------------------------------------------------
  160. # ● 左下に移動
  161. #--------------------------------------------------------------------------
  162. def move_lower_left
  163.   # 向き固定でない場合
  164.   unless @direction_fix
  165.     # 右向きだった場合は左を、上向きだった場合は下を向く
  166.     @direction = 1
  167.   end
  168.   # 下→左、左→下 のどちらかのコースが通行可能な場合
  169.   if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::LEFT)) or
  170.      (passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::DOWN))
  171.     # 座標を更新
  172.     @x -= 1
  173.     @y += 1
  174.     increase_steps
  175.   end
  176. end
  177. #--------------------------------------------------------------------------
  178. # ● 右下に移動
  179. #--------------------------------------------------------------------------
  180. def move_lower_right
  181.   # 向き固定でない場合
  182.   unless @direction_fix
  183.     # 左向きだった場合は右を、上向きだった場合は下を向く
  184.     @direction = 3
  185.   end
  186.   # 下→右、右→下 のどちらかのコースが通行可能な場合
  187.   if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::RIGHT)) or
  188.      (passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::DOWN))
  189.     # 座標を更新
  190.     @x += 1
  191.     @y += 1
  192.     increase_steps
  193.   end
  194. end
  195. #--------------------------------------------------------------------------
  196. # ● 左上に移動
  197. #--------------------------------------------------------------------------
  198. def move_upper_left
  199.   # 向き固定でない場合
  200.   unless @direction_fix
  201.     # 右向きだった場合は左を、下向きだった場合は上を向く
  202.     @direction = 7
  203.   end
  204.   # 上→左、左→上 のどちらかのコースが通行可能な場合
  205.   if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::LEFT)) or
  206.      (passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::UP))
  207.     # 座標を更新
  208.     @x -= 1
  209.     @y -= 1
  210.     increase_steps
  211.   end
  212. end
  213. #--------------------------------------------------------------------------
  214. # ● 右上に移動
  215. #--------------------------------------------------------------------------
  216. def move_upper_right
  217.   # 向き固定でない場合
  218.   unless @direction_fix
  219.     # 左向きだった場合は右を、下向きだった場合は上を向く
  220.     @direction = 9
  221.   end
  222.   # 上→右、右→上 のどちらかのコースが通行可能な場合
  223.   if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::RIGHT)) or
  224.      (passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::UP))
  225.     # 座標を更新
  226.     @x += 1
  227.     @y -= 1
  228.     increase_steps
  229.   end
  230. end
  231. attr_writer :move_speed
  232. attr_writer :step_anime
  233. end
  234. #==============================================================================
  235. # ■ Spriteset_Map_Module
  236. #------------------------------------------------------------------------------
  237. #  
  238. #==============================================================================
  239. module Spriteset_Map_Module
  240. def setup_actor_character_sprites?
  241.   return @setup_actor_character_sprites_flag != nil
  242. end
  243. def setup_actor_character_sprites(characters)
  244.   if !setup_actor_character_sprites?
  245.     index_game_player = 0
  246.     @character_sprites.each_index do |i|
  247.       if @character_sprites[i].character.instance_of?(Game_Player)
  248.         index_game_player = i
  249.         break
  250.       end
  251.     end
  252.     for character in characters.reverse
  253.       @character_sprites.unshift(
  254.        Sprite_Character.new(@viewport1, character)
  255.        )
  256.     end
  257.     @setup_actor_character_sprites_flag = true
  258.   end
  259. end
  260. end
  261. #==============================================================================
  262. # ■ Scene_Map_Module
  263. #------------------------------------------------------------------------------
  264. #  
  265. #==============================================================================
  266. module Scene_Map_Module
  267. def setup_actor_character_sprites(characters)
  268.   @spriteset.setup_actor_character_sprites(characters)
  269. end
  270. end
  271. #==============================================================================
  272. # ■ Game_Party_Module
  273. #------------------------------------------------------------------------------
  274. #  
  275. #==============================================================================
  276. module Game_Party_Module
  277. def return_char(i)
  278. return @characters[i]
  279. end
  280. def set_transparent_actors(transparent)
  281.   @transparent = transparent
  282. end
  283. def setup_actor_character_sprites
  284.   if @characters == nil
  285.     @characters = []
  286.     for i in 1 ... TRAIN_ACTOR_SIZE_MAX
  287.       @characters.push(Game_Party_Actor.new)
  288.     end
  289.   end
  290.   for i in 1 ... TRAIN_ACTOR_SIZE_MAX
  291.     @characters[i - 1].setup(actors[i])
  292.   end
  293.   if $scene.class.method_defined?('setup_actor_character_sprites')
  294.     $scene.setup_actor_character_sprites(@characters)
  295.   end
  296. end
  297. def update_party_actors
  298.   setup_actor_character_sprites
  299.   transparent = $game_player.transparent
  300.   if transparent == false
  301.     if TRANSPARENT_SWITCH
  302.       transparent = $game_switches[TRANSPARENT_SWITCHES_INDEX]
  303.     end
  304.   end
  305.   for character in @characters
  306.     character.transparent = transparent
  307.     character.move_speed = $game_player.move_speed
  308.       character.step_anime = $game_player.step_anime
  309.     character.update
  310.   end
  311. end
  312. def moveto_party_actors( x, y )
  313.   setup_actor_character_sprites
  314.   for character in @characters
  315.     character.moveto( x, y )
  316.   end
  317.   if @move_list == nil
  318.     @move_list = []
  319.   end
  320.   move_list_setup
  321. end
  322. def move_party_actors
  323.   if @move_list == nil
  324.     @move_list = []
  325.     move_list_setup
  326.   end
  327.   @move_list.each_index do |i|
  328.   if @characters[i] != nil
  329.     case @move_list[i].type
  330.     when Input::DOWN
  331.       @characters[i].move_down(@move_list[i].args[0])
  332.     when Input::LEFT
  333.       @characters[i].move_left(@move_list[i].args[0])
  334.     when Input::RIGHT
  335.       @characters[i].move_right(@move_list[i].args[0])
  336.     when Input::UP
  337.       @characters[i].move_up(@move_list[i].args[0])
  338.     when DOWN_LEFT
  339.       @characters[i].move_lower_left
  340.     when DOWN_RIGHT
  341.       @characters[i].move_lower_right
  342.     when UP_LEFT
  343.       @characters[i].move_upper_left
  344.     when UP_RIGHT
  345.       @characters[i].move_upper_right
  346.     when JUMP
  347.       @characters[i].jump(@move_list[i].args[0],@move_list[i].args[1])
  348.     end
  349.   end
  350. end
  351. end
  352. #==============================================================================
  353. # ■ Move_List_Element
  354. #------------------------------------------------------------------------------
  355. #  
  356. #==============================================================================
  357. class Move_List_Element
  358.   def initialize(type,args)
  359.     @type = type
  360.     @args = args
  361.   end
  362.   def type()
  363.     return @type
  364.   end
  365.   def args()
  366.     return @args
  367.   end
  368. end
  369. def move_list_setup
  370.   for i in 0 .. TRAIN_ACTOR_SIZE_MAX
  371.     @move_list[i] = nil
  372.   end
  373. end
  374. def add_move_list(type,*args)
  375.   @move_list.unshift(Move_List_Element.new(type,args)).pop
  376. end
  377. def move_down_party_actors(turn_enabled = true)
  378.   move_party_actors
  379.   add_move_list(Input::DOWN,turn_enabled)
  380. end
  381. def move_left_party_actors(turn_enabled = true)
  382.   move_party_actors
  383.   add_move_list(Input::LEFT,turn_enabled)
  384. end
  385. def move_right_party_actors(turn_enabled = true)
  386.   move_party_actors
  387.   add_move_list(Input::RIGHT,turn_enabled)
  388. end
  389. def move_up_party_actors(turn_enabled = true)
  390.   move_party_actors
  391.   add_move_list(Input::UP,turn_enabled)
  392. end
  393. def move_lower_left_party_actors
  394.   move_party_actors
  395.   add_move_list(DOWN_LEFT)
  396. end
  397. def move_lower_right_party_actors
  398.   move_party_actors
  399.   add_move_list(DOWN_RIGHT)
  400. end
  401. def move_upper_left_party_actors
  402.   move_party_actors
  403.   add_move_list(UP_LEFT)
  404. end
  405. def move_upper_right_party_actors
  406.   move_party_actors
  407.   add_move_list(UP_RIGHT)
  408. end
  409. def jump_party_actors(x_plus, y_plus)
  410.   move_party_actors
  411.   add_move_list(JUMP,x_plus, y_plus)
  412. end
  413. end
  414. module Game_Player_Module
  415. def update
  416.   $game_party.update_party_actors
  417.   super
  418. end
  419. def moveto( x, y )
  420.   $game_party.moveto_party_actors( x, y )
  421.   super( x, y )
  422. end
  423. def move_down(turn_enabled = true)
  424.   if passable?(@x, @y, Input::DOWN)
  425.     $game_party.move_down_party_actors(turn_enabled)
  426.  
  427.   end
  428.   super(turn_enabled)
  429. end
  430. def move_left(turn_enabled = true)
  431.   if passable?(@x, @y, Input::LEFT)
  432.     $game_party.move_left_party_actors(turn_enabled)
  433.   end
  434.   super(turn_enabled)
  435. end
  436. def move_right(turn_enabled = true)
  437.   if passable?(@x, @y, Input::RIGHT)
  438.     $game_party.move_right_party_actors(turn_enabled)
  439.   end
  440.   super(turn_enabled)
  441. end
  442. def move_up(turn_enabled = true)
  443.   if passable?(@x, @y, Input::UP)
  444.     $game_party.move_up_party_actors(turn_enabled)
  445.   end
  446.   super(turn_enabled)
  447. end
  448. def move_lower_left
  449.   # 下→左、左→下 のどちらかのコースが通行可能な場合
  450.   unless @direction_fix
  451.     @direction = 1
  452.   end
  453.   if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::LEFT)) or
  454.      (passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::DOWN))
  455.     $game_party.move_lower_left_party_actors
  456.     increase_steps
  457.   end
  458.   super
  459. end
  460. def move_lower_right
  461.   # 下→右、右→下 のどちらかのコースが通行可能な場合
  462.   unless @direction_fix
  463.     @direction = 3
  464.   end
  465.   if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::RIGHT)) or
  466.      (passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::DOWN))
  467.     $game_party.move_lower_right_party_actors
  468.     increase_steps
  469.   end
  470.   super
  471. end
  472. def move_upper_left
  473.   # 上→左、左→上 のどちらかのコースが通行可能な場合
  474.   unless @direction_fix
  475.     @direction = 7
  476.   end
  477.   if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::LEFT)) or
  478.      (passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::UP))
  479.     $game_party.move_upper_left_party_actors
  480.     increase_steps
  481.     end
  482.   super
  483. end
  484. def move_upper_right
  485.   # 上→右、右→上 のどちらかのコースが通行可能な場合
  486.   unless @direction_fix
  487.     @direction = 9
  488.   end
  489.   if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::RIGHT)) or
  490.      (passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::UP))
  491.     $game_party.move_upper_right_party_actors
  492.     increase_steps
  493.  
  494.   end
  495.   super
  496. end
  497. def jump(x_plus, y_plus)
  498.   # 新しい座標を計算
  499.   new_x = @x + x_plus
  500.   new_y = @y + y_plus
  501.   # 加算値が (0,0) の場合か、ジャンプ先が通行可能な場合
  502.   if (x_plus == 0 and y_plus == 0) or passable?(new_x, new_y, 0)
  503.     $game_party.jump_party_actors(x_plus, y_plus)
  504.   end
  505.   super(x_plus, y_plus)
  506. end
  507. attr_reader :move_speed
  508. attr_reader :step_anime
  509. end
  510. end # module Train_Actor
  511. #==============================================================================
  512. # ■ Game_Party
  513. #------------------------------------------------------------------------------
  514. #  
  515. #==============================================================================
  516. class Game_Party
  517.   include Train_Actor::Game_Party_Module
  518. end
  519. #==============================================================================
  520. # ■ Game_Player
  521. #------------------------------------------------------------------------------
  522. #  
  523. #==============================================================================
  524. class Game_Player
  525.   include Train_Actor::Game_Player_Module
  526. end
  527. #==============================================================================
  528. # ■ Spriteset_Map
  529. #------------------------------------------------------------------------------
  530. #  
  531. #==============================================================================
  532. class Spriteset_Map
  533.   include Train_Actor::Spriteset_Map_Module
  534. end
  535. #==============================================================================
  536. # ■ Scene_Map
  537. #------------------------------------------------------------------------------
  538. #  
  539. #==============================================================================
  540. class Scene_Map
  541.   include Train_Actor::Scene_Map_Module
  542. end


这是个人物跟随脚本,运行没问题,可是一点存档就出错,请教高手

报错好像是说方法“ setup_actor_character_sprites”不对。可是上面不是有“ setup_actor_character_sprites”定义了吗?

点评

看了一下,应该是Scene_Map_Module的内容没有完全复制进去,所以调用@spriteset.的时候就因为找不到变量而出错  发表于 2012-12-22 17:55

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
2
发表于 2012-12-22 15:18:36 | 只看该作者
试试使用新存档

点评

内容不全?这脚本我在站里下的呀?  发表于 2012-12-22 18:58
重玩也没问题,可是一存档就会出错  发表于 2012-12-22 17:42

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
52
在线时间
586 小时
注册时间
2012-5-31
帖子
768
3
 楼主| 发表于 2012-12-22 19:37:35 | 只看该作者
我又试了几次,还是存档 时出问题。
回复 支持 反对

使用道具 举报

Lv2.观梦者

故九江太守

梦石
0
星屑
640
在线时间
2169 小时
注册时间
2012-12-5
帖子
4464
4
发表于 2012-12-22 22:11:26 手机端发表。 | 只看该作者
下载下范例试试
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2015-5-22
帖子
7
5
发表于 2015-5-22 09:58:44 | 只看该作者
你最珍贵 发表于 2012-12-22 22:11
下载下范例试试

珍贵啊  脚本老是出错怎么办呀TAT
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-8 22:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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