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

Project1

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

[已经解决] 关于队伍跟随脚本的修改

 关闭 [复制链接]

Lv4.逐梦者

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
帖子
2402
跳转到指定楼层
1
发表于 2009-10-26 14:00:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 幻耶 于 2009-10-26 14:01 编辑

我希望的效果是:当20号开关打开,角色身后跟随的是自己的行走图,关闭开关就消失。一共跟随三个,而不要跟随队友的行走图

跟随脚本:
  1. module Train_Actor

  2.   #是否使用停止跟随的方法,也就是说,这里false改为true的时候,如果TRANSPARENT_SWITCHES_INDEX
  3.   #开关打开,跟随的人物就消失了(其实只是变成透明而已)
  4.   TRANSPARENT_SWITCH = true
  5.   TRANSPARENT_SWITCHES_INDEX = 10
  6.   #举例:第一个为true,第二个为20,则打开20号开关,后面的人都没了。

  7.   #跟随人数的最大数目,可以更改为2、3什么的。
  8.   TRAIN_ACTOR_SIZE_MAX = 4

  9.   # 定数
  10.   #Input::DOWN = 2
  11.   #Input::LEFT = 4
  12.   #Input::RIGHT = 6
  13.   #Input::UP = 6
  14.   DOWN_LEFT = 1
  15.   DOWN_RIGHT = 3
  16.   UP_LEFT = 7
  17.   UP_RIGHT = 9
  18.   JUMP = 5

  19.   class Game_Party_Actor < Game_Character
  20.    
  21.     def initialize
  22.         super()

  23.         @through = true
  24.     end
  25.       
  26.     def setup(actor)

  27.         # キャラクターのファイル名と色相を設定
  28.         if actor != nil
  29.            @character_name = actor.character_name
  30.            @character_hue = actor.character_hue
  31.            @tempneme = actor.name           
  32.         else
  33.            @character_name = ""
  34.            @character_hue = 0
  35.            @tempneme = ""      
  36.         end
  37.         # 不透明度と合成方法を初期化
  38.         @opacity = 255
  39.         @blend_type = 0
  40.     end

  41.     def screen_z(height = 0)
  42.         if $game_player.x == @x and $game_player.y == @y
  43.            return $game_player.screen_z(height) - 1
  44.         end
  45.         super(height)
  46.     end
  47.    
  48.     def name
  49.         return @tempneme
  50.     end
  51.    
  52.     #--------------------------------------------------------------------------
  53.     # ● 下に移動
  54.     # turn_enabled : その場での向き変更を許可するフラグ
  55.     #--------------------------------------------------------------------------
  56.     def move_down(turn_enabled = true)
  57.         # 下を向く
  58.         if turn_enabled
  59.            turn_down
  60.         end
  61.         # 通行可能な場合
  62.         if passable?(@x, @y, Input::DOWN)
  63.            # 下を向く
  64.            turn_down
  65.            # 座標を更新
  66.            @y += 1
  67.         end
  68.     end
  69. #--------------------------------------------------------------------------
  70. # ● 左に移動
  71. # turn_enabled : その場での向き変更を許可するフラグ
  72. #--------------------------------------------------------------------------
  73. def move_left(turn_enabled = true)
  74. # 左を向く
  75. if turn_enabled
  76. turn_left
  77. end
  78. # 通行可能な場合
  79. if passable?(@x, @y, Input::LEFT)
  80. # 左を向く
  81. turn_left
  82. # 座標を更新
  83. @x -= 1
  84. end
  85. end
  86. #--------------------------------------------------------------------------
  87. # ● 右に移動
  88. # turn_enabled : その場での向き変更を許可するフラグ
  89. #--------------------------------------------------------------------------
  90. def move_right(turn_enabled = true)
  91. # 右を向く
  92. if turn_enabled
  93. turn_right
  94. end
  95. # 通行可能な場合
  96. if passable?(@x, @y, Input::RIGHT)
  97. # 右を向く
  98. turn_right
  99. # 座標を更新
  100. @x += 1
  101. end
  102. end
  103. #--------------------------------------------------------------------------
  104. # ● 上に移動
  105. # turn_enabled : その場での向き変更を許可するフラグ
  106. #--------------------------------------------------------------------------
  107. def move_up(turn_enabled = true)
  108. # 上を向く
  109. if turn_enabled
  110. turn_up
  111. end
  112. # 通行可能な場合
  113. if passable?(@x, @y, Input::UP)
  114. # 上を向く
  115. turn_up
  116. # 座標を更新
  117. @y -= 1
  118. end
  119. end
  120. #--------------------------------------------------------------------------
  121. # ● 左下に移動
  122. #--------------------------------------------------------------------------
  123. def move_lower_left
  124. # 向き固定でない場合
  125. unless @direction_fix
  126. # 右向きだった場合は左を、上向きだった場合は下を向く
  127. @direction = (@direction == Input::RIGHT ? Input::LEFT : @direction == Input::UP ? Input::DOWN : @direction)
  128. end
  129. # 下→左、左→下 のどちらかのコースが通行可能な場合
  130. if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::LEFT)) or
  131. (passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::DOWN))
  132. # 座標を更新
  133. @x -= 1
  134. @y += 1
  135. end
  136. end
  137. #--------------------------------------------------------------------------
  138. # ● 右下に移動
  139. #--------------------------------------------------------------------------
  140. def move_lower_right
  141. # 向き固定でない場合
  142. unless @direction_fix
  143. # 左向きだった場合は右を、上向きだった場合は下を向く
  144. @direction = (@direction == Input::LEFT ? Input::RIGHT : @direction == Input::UP ? Input::DOWN : @direction)
  145. end
  146. # 下→右、右→下 のどちらかのコースが通行可能な場合
  147. if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::RIGHT)) or
  148. (passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::DOWN))
  149. # 座標を更新
  150. @x += 1
  151. @y += 1
  152. end
  153. end
  154. #--------------------------------------------------------------------------
  155. # ● 左上に移動
  156. #--------------------------------------------------------------------------
  157. def move_upper_left
  158. # 向き固定でない場合
  159. unless @direction_fix
  160. # 右向きだった場合は左を、下向きだった場合は上を向く
  161. @direction = (@direction == Input::RIGHT ? Input::LEFT : @direction == Input::DOWN ? Input::UP : @direction)
  162. end
  163. # 上→左、左→上 のどちらかのコースが通行可能な場合
  164. if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::LEFT)) or
  165. (passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::UP))
  166. # 座標を更新
  167. @x -= 1
  168. @y -= 1
  169. end
  170. end
  171. #--------------------------------------------------------------------------
  172. # ● 右上に移動
  173. #--------------------------------------------------------------------------
  174. def move_upper_right
  175. # 向き固定でない場合
  176. unless @direction_fix
  177. # 左向きだった場合は右を、下向きだった場合は上を向く
  178. @direction = (@direction == Input::LEFT ? Input::RIGHT : @direction == Input::DOWN ? Input::UP : @direction)
  179. end
  180. # 上→右、右→上 のどちらかのコースが通行可能な場合
  181. if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::RIGHT)) or
  182. (passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::UP))
  183. # 座標を更新
  184. @x += 1
  185. @y -= 1
  186. end
  187. end
  188. attr_writer :move_speed
  189. attr_writer :step_anime
  190. end
  191. module Spriteset_Map_Module
  192. def setup_actor_character_sprites?
  193. return @setup_actor_character_sprites_flag != nil
  194. end
  195. def setup_actor_character_sprites(characters)
  196. if !setup_actor_character_sprites?
  197. index_game_player = 0
  198. @character_sprites.each_index do |i|
  199. if @character_sprites[i].character.instance_of?(Game_Player)
  200. index_game_player = i
  201. break
  202. end
  203. end
  204. for character in characters.reverse
  205. @character_sprites.unshift(
  206. Sprite_Character.new(@viewport1, character)
  207. )
  208. end
  209. @setup_actor_character_sprites_flag = true
  210. end
  211. end
  212. end
  213. module Scene_Map_Module
  214. def setup_actor_character_sprites(characters)
  215. @spriteset.setup_actor_character_sprites(characters)
  216. end
  217. end
  218. module Game_Party_Module
  219. def set_transparent_actors(transparent)
  220. @transparent = transparent
  221. end
  222. def setup_actor_character_sprites
  223. if @characters == nil
  224. @characters = []
  225. for i in 2 ... TRAIN_ACTOR_SIZE_MAX
  226. @characters.push(Game_Party_Actor.new)
  227. end
  228. end
  229. for i in 2 ... TRAIN_ACTOR_SIZE_MAX
  230. @characters[i - 2].setup(actors[i])
  231. end
  232. if $scene.class.method_defined?('setup_actor_character_sprites')
  233. $scene.setup_actor_character_sprites(@characters)
  234. end
  235. end
  236. def update_party_actors
  237. setup_actor_character_sprites
  238. transparent = $game_player.transparent
  239. if transparent == false
  240. if TRANSPARENT_SWITCH
  241. transparent = $game_switches[TRANSPARENT_SWITCHES_INDEX]
  242. end
  243. end
  244. for character in @characters
  245. character.transparent = transparent
  246. character.move_speed = $game_player.move_speed
  247. character.step_anime = $game_player.step_anime
  248. character.update
  249. end
  250. end
  251. def moveto_party_actors( x, y )
  252. setup_actor_character_sprites
  253. for character in @characters
  254. character.moveto( x, y )
  255. end
  256. if @move_list == nil
  257. @move_list = []
  258. end
  259. move_list_setup
  260. end
  261. def move_party_actors
  262. if @move_list == nil
  263. @move_list = []
  264. move_list_setup
  265. end
  266. @move_list.each_index do |i|
  267. if @characters[i] != nil
  268. case @move_list[i].type
  269. when Input::DOWN
  270. @characters[i].move_down(@move_list[i].args[0])
  271. when Input::LEFT
  272. @characters[i].move_left(@move_list[i].args[0])
  273. when Input::RIGHT
  274. @characters[i].move_right(@move_list[i].args[0])
  275. when Input::UP
  276. @characters[i].move_up(@move_list[i].args[0])
  277. when DOWN_LEFT
  278. @characters[i].move_lower_left
  279. when DOWN_RIGHT
  280. @characters[i].move_lower_right
  281. when UP_LEFT
  282. @characters[i].move_upper_left
  283. when UP_RIGHT
  284. @characters[i].move_upper_right
  285. when JUMP
  286. @characters[i].jump(@move_list[i].args[0],@move_list[i].args[1])
  287. end
  288. end
  289. end
  290. end
  291. class Move_List_Element
  292. def initialize(type,args)
  293. @type = type
  294. @args = args
  295. end
  296. def type() return @type end
  297. def args() return @args end
  298. end
  299. def move_list_setup
  300. for i in 0 .. TRAIN_ACTOR_SIZE_MAX
  301. @move_list[i] = nil
  302. end
  303. end
  304. def add_move_list(type,*args)
  305. @move_list.unshift(Move_List_Element.new(type,args)).pop
  306. end
  307. def move_down_party_actors(turn_enabled = true)
  308. move_party_actors
  309. add_move_list(Input::DOWN,turn_enabled)
  310. end
  311. def move_left_party_actors(turn_enabled = true)
  312. move_party_actors
  313. add_move_list(Input::LEFT,turn_enabled)
  314. end
  315. def move_right_party_actors(turn_enabled = true)
  316. move_party_actors
  317. add_move_list(Input::RIGHT,turn_enabled)
  318. end
  319. def move_up_party_actors(turn_enabled = true)
  320. move_party_actors
  321. add_move_list(Input::UP,turn_enabled)
  322. end
  323. def move_lower_left_party_actors
  324. move_party_actors
  325. add_move_list(DOWN_LEFT)
  326. end
  327. def move_lower_right_party_actors
  328. move_party_actors
  329. add_move_list(DOWN_RIGHT)
  330. end
  331. def move_upper_left_party_actors
  332. move_party_actors
  333. add_move_list(UP_LEFT)
  334. end
  335. def move_upper_right_party_actors
  336. move_party_actors
  337. add_move_list(UP_RIGHT)
  338. end
  339. def jump_party_actors(x_plus, y_plus)
  340. move_party_actors
  341. add_move_list(JUMP,x_plus, y_plus)
  342. end
  343. end
  344. module Game_Player_Module
  345. def update
  346. $game_party.update_party_actors
  347. super
  348. end
  349. def moveto( x, y )
  350. $game_party.moveto_party_actors( x, y )
  351. super( x, y )
  352. end
  353. def move_down(turn_enabled = true)
  354. if passable?(@x, @y, Input::DOWN)
  355. $game_party.move_down_party_actors(turn_enabled)
  356. end
  357. super(turn_enabled)
  358. end
  359. def move_left(turn_enabled = true)
  360. if passable?(@x, @y, Input::LEFT)
  361. $game_party.move_left_party_actors(turn_enabled)
  362. end
  363. super(turn_enabled)
  364. end
  365. def move_right(turn_enabled = true)
  366. if passable?(@x, @y, Input::RIGHT)
  367. $game_party.move_right_party_actors(turn_enabled)
  368. end
  369. super(turn_enabled)
  370. end
  371. def move_up(turn_enabled = true)
  372. if passable?(@x, @y, Input::UP)
  373. $game_party.move_up_party_actors(turn_enabled)
  374. end
  375. super(turn_enabled)
  376. end
  377. def move_lower_left
  378. # 下→左、左→下 のどちらかのコースが通行可能な場合
  379. if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::LEFT)) or
  380. (passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::DOWN))
  381. $game_party.move_lower_left_party_actors
  382. end
  383. super
  384. end
  385. def move_lower_right
  386. # 下→右、右→下 のどちらかのコースが通行可能な場合
  387. if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::RIGHT)) or
  388. (passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::DOWN))
  389. $game_party.move_lower_right_party_actors
  390. end
  391. super
  392. end
  393. def move_upper_left
  394. # 上→左、左→上 のどちらかのコースが通行可能な場合
  395. if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::LEFT)) or
  396. (passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::UP))
  397. $game_party.move_upper_left_party_actors
  398. end
  399. super
  400. end
  401. def move_upper_right
  402. # 上→右、右→上 のどちらかのコースが通行可能な場合
  403. if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::RIGHT)) or
  404. (passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::UP))
  405. $game_party.move_upper_right_party_actors
  406. end
  407. super
  408. end
  409. def jump(x_plus, y_plus)
  410. # 新しい座標を計算
  411. new_x = @x + x_plus
  412. new_y = @y + y_plus
  413. # 加算値が (0,0) の場合か、ジャンプ先が通行可能な場合
  414. if (x_plus == 0 and y_plus == 0) or passable?(new_x, new_y, 0)
  415. $game_party.jump_party_actors(x_plus, y_plus)
  416. end
  417. super(x_plus, y_plus)
  418. end
  419. attr_reader :move_speed
  420. attr_reader :step_anime
  421. end
  422. end # module Train_Actor
  423. class Game_Party
  424. include Train_Actor::Game_Party_Module
  425. end
  426. class Game_Player
  427. include Train_Actor::Game_Player_Module
  428. end
  429. class Spriteset_Map
  430. include Train_Actor::Spriteset_Map_Module
  431. end
  432. class Scene_Map
  433. include Train_Actor::Scene_Map_Module
  434. end
复制代码
囡囚囨囚囨図囨囧

Lv1.梦旅人

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
帖子
946
2
发表于 2009-10-26 18:42:28 | 只看该作者
本帖最后由 secondsen 于 2009-10-26 19:16 编辑

237行
  1. @characters[i - 2].setup(actors[i])
复制代码
改成
  1. @characters[i - 2].setup(actors[0])
复制代码
另外,MS这个脚本不是很完善。。。。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-10-21
帖子
81
3
发表于 2009-10-26 18:50:01 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
帖子
946
4
发表于 2009-10-26 19:13:07 | 只看该作者
你试试更换角色的行走图。。。。我的报错了。。。。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-10-21
帖子
81
5
发表于 2009-10-26 19:24:36 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
帖子
946
6
发表于 2009-10-26 19:32:11 | 只看该作者
本帖最后由 secondsen 于 2009-10-26 19:36 编辑

做无用功了。。。。注释里不是有么。。。20号开关那个。。。。

开头那 TRANSPARENT_SWITCHES_INDEX = 10
该成 TRANSPARENT_SWITCHES_INDEX = 20  

不就变成20号开关控制了么
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-29 09:29

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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