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

Project1

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

1100积分求局部画面放大的脚本?

 关闭 [复制链接]

Lv1.梦旅人

今、空を見上げ

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-8-11
帖子
2022
11
发表于 2008-8-11 20:13:23 | 只看该作者
RTAB系统啊...
http://rpg.blue/web/htm/news562.htm

这个系统真的感觉是很强大的....
但很难与其他脚本并用..
大人如果会抽出效果的话,那真是太强了
系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
做任何事,都不要为自己找借口。任何事都不存在困难的借口。你只有3个字“做得到”
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1624
在线时间
1609 小时
注册时间
2007-8-28
帖子
3253

第3届短篇游戏大赛主流游戏组冠军第1届Title华丽大赛新人奖

12
发表于 2008-8-11 20:20:08 | 只看该作者
战斗动画的放大?
改写一下显示动画里面的图片显示吧。
让所有图片显示的时候都带有zoom_x=2.0的效果
重新定义精灵和图片吧
“我推荐你一个游戏吧,avg的,剧情特感人”
“我擦,都是文字图片的游戏有啥好玩的,连个战斗都没有!”
“我推荐你一个游戏吧,rpg的,战斗也新颖”
“我擦,怎么米有作i弊器?“
”你不是喜欢战斗么?”
“不,我是剧情党!!”

继续阅读请点击
http://rpg.blue/blog-53316-10027.html
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
5 小时
注册时间
2008-6-28
帖子
292
13
 楼主| 发表于 2008-8-11 20:29:21 | 只看该作者
战斗动画的放大?
改写一下显示动画里面的图片显示吧。
让所有图片显示的时候都带有zoom_x=2.0的效果
重新定义精灵和图片吧

这句在那里,你说的zoom_x=2.0的效果,是rm自带的吗,如果是的话我直接写暴击是背景图放大(这个我效果我已经做出,就是战斗动画不能放大),真是如此的话,或许能够做成伪。局部放大效果。。。。我想这个已经足够了
不要小看偶哦~~偶可是雨血2和历史2的主系统哦
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
5 小时
注册时间
2008-6-28
帖子
292
14
 楼主| 发表于 2008-8-11 20:40:04 | 只看该作者
RTAB系统啊...
http://rpg.blue/web/htm/news562.htm

这个系统真的感觉是很强大的....
但很难与其他脚本并用..
大人如果会抽出效果的话,那真是太强了

RTAB系统是一个整合的系统,抽出效果的话其实并不是很困难,好像我现在用的动画叠加脚本最开始也是从这里抽取出来的,不过有很多可以参考它写就可以了,不一定 要完全贴上去,我会的东西主要是集中在战斗画面效果上。。。。。不过我还是会参考下它的写法,谢谢你了
不要小看偶哦~~偶可是雨血2和历史2的主系统哦
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
0 小时
注册时间
2005-11-5
帖子
98
15
发表于 2008-8-11 22:22:35 | 只看该作者
LS说的被整合的那块好象叫什么敌人镜头追踪……记不太清楚了
I like,I choose,Anta sport shoes.
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
5 小时
注册时间
2008-6-28
帖子
292
16
 楼主| 发表于 2008-8-12 01:52:27 | 只看该作者
LS说的被整合的那块好象叫什么敌人镜头追踪……记不太清楚了

真有这个脚本,这个名字太强悍了,“镜头追踪”。。(不过好像ratb没有这个特效把,我想不用api好像真的很难。。。)如果他能追踪敌人的话,那肯定可以追踪角色,请给地址,小弟真的是没有搜到啊。。。。还有就是我试过使用不断在每一帧调用截图脚本,可是动画是放大了,问题动画是一帧一帧慢到好像蜗牛一样,这个可能不是最好的办法。。。因为根本游戏没法进行下去,还会不断死机的说。。。。
不要小看偶哦~~偶可是雨血2和历史2的主系统哦
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39009
在线时间
5716 小时
注册时间
2006-11-10
帖子
6618
17
发表于 2008-8-12 02:01:16 | 只看该作者
战斗索引,这个就是局部放大效果。而且也是单独的功能。不过,不知道动画能不能放大~~

还有,XXX.zoom_x = 2.0  XXX.zoom_y = 2.0也是XP自己定义好了,不过只限于精灵类使用话说战斗部分都属于,所以不存在问题。
战斗索引脚本。
  1. # ▼▲▼ XRXS_BP 8. バトルバック?Full-View+可動カメラ ver..05d ▼▲▼
  2. # by 桜雅 在土

  3. #==============================================================================
  4. # ■ Game_Battler
  5. #==============================================================================
  6. class Game_Battler
  7. #--------------------------------------------------------------------------
  8. # ● 追加?公開インスタンス変数
  9. #--------------------------------------------------------------------------
  10. attr_accessor :x_pos # バトルフィールド 横 位置(+が右 )
  11. attr_accessor :y_pos # バトルフィールド 高さ 位置(+が上 )
  12. attr_accessor :z_pos # バトルフィールド奥行き位置(+が手前)
  13. attr_accessor :zoom # 現在のズーム倍率
  14. end
  15. #==============================================================================
  16. # ■ Game_Actor
  17. #==============================================================================
  18. class Game_Actor < Game_Battler
  19. #--------------------------------------------------------------------------
  20. # ● 追加?公開インスタンス変数
  21. #--------------------------------------------------------------------------
  22. attr_reader :actor_in_battlefield # アクターもフィールドに
  23. #--------------------------------------------------------------------------
  24. # ● セットアップ
  25. #--------------------------------------------------------------------------
  26. alias xrxs_bp8_setup setup
  27. def setup(actor_id)
  28. xrxs_bp8_setup(actor_id)
  29. # 機能"アクターもフィールドに"
  30. # trueを優先する
  31. @actor_in_battlefield = false if @actor_in_battlefield != true
  32. end
  33. end
  34. #==============================================================================
  35. # ■ Game_Enemy
  36. #==============================================================================
  37. class Game_Enemy < Game_Battler
  38. #--------------------------------------------------------------------------
  39. # ● 追加?公開インスタンス変数
  40. #--------------------------------------------------------------------------
  41. attr_reader :actor_in_battlefield # アクターもフィールドに
  42. #--------------------------------------------------------------------------
  43. # ● オブジェクト初期化
  44. #--------------------------------------------------------------------------
  45. alias xrxs_bp8_initialize initialize
  46. def initialize(troop_id, member_index)
  47. @actor_in_battlefield = false
  48. @x_pos = $data_troops[troop_id].members[member_index].x - 320
  49. @y_pos = -($data_troops[troop_id].members[member_index].y - 304)
  50. @field_x_offset = -192
  51. @field_y_offset = -144
  52. @z_pos = 0
  53. @zoom = 1.00
  54. xrxs_bp8_initialize(troop_id, member_index)
  55. end
  56. #--------------------------------------------------------------------------
  57. # ● バトル画面 X 座標の取得
  58. #--------------------------------------------------------------------------
  59. def screen_x
  60. $xcam_x = 0 if $xcam_x == nil
  61. return 320 - @field_x_offset + (@x_pos.to_i - $xcam_x) * @zoom
  62. end
  63. #--------------------------------------------------------------------------
  64. # ● バトル画面 Y 座標の取得
  65. #--------------------------------------------------------------------------
  66. def screen_y
  67. $xcam_y = 0 if $xcam_y == nil
  68. return 240 - @field_y_offset + (-@y_pos.to_i + 64 + $xcam_y) * @zoom
  69. end
  70. end
  71. #==============================================================================
  72. # ■ Sprite_Battler
  73. #==============================================================================
  74. class Sprite_Battler < RPG::Sprite
  75. #--------------------------------------------------------------------------
  76. # ● フレーム更新
  77. #--------------------------------------------------------------------------
  78. alias xrxs_bp8_update update
  79. def update
  80. # 初期化
  81. @z_offset = 0
  82. # 戻す
  83. xrxs_bp8_update
  84. # バトラーが nil の場合戻る
  85. return if @battler == nil
  86. # 敵のみにカメラが影響。
  87. # 見方もバトルフィールドにいる場合ここの if を外す。
  88. if (@battler.is_a?(Game_Actor) and @battler.actor_in_battlefield) or @battler.is_a?(Game_Enemy)
  89. # ズーム率
  90. zoom = 1.00 * 185 / (($xcam_z != nil ? $xcam_z : 185) - @z_offset)
  91. self.zoom_x = zoom
  92. self.zoom_y = zoom
  93. @battler.zoom = zoom
  94. # スプライトの座標を設定
  95. self.x = @battler.screen_x
  96. self.y = @battler.screen_y
  97. self.z = @battler.screen_z
  98. end
  99. end
  100. end
  101. #==============================================================================
  102. # ■ Spriteset_Battle
  103. #==============================================================================
  104. class Spriteset_Battle
  105. #--------------------------------------------------------------------------
  106. # ● オブジェクト初期化
  107. #--------------------------------------------------------------------------
  108. alias xrxs_bp8_initialize initialize
  109. def initialize
  110. # 初期化
  111. @now_bg_x = -1
  112. @now_bg_y = -1
  113. @now_bg_z = -1
  114. # 通常時の実行
  115. xrxs_bp8_initialize
  116. # ビューポートを作成
  117. @viewport1 = Viewport.new(-192, -144, 1024, 768)
  118. # バトルバックスプライトを作成
  119. @battleback_sprite = Sprite.new(@viewport1)
  120. @battleback_name = ""
  121. # エネミースプライトを作成
  122. @enemy_sprites = []
  123. for enemy in $game_troop.enemies.reverse
  124. @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
  125. end
  126. # 天候を作成
  127. @weather = RPG::Weather.new(@viewport1)
  128. # フレーム更新
  129. update
  130. end
  131. #--------------------------------------------------------------------------
  132. # ● フレーム更新
  133. #--------------------------------------------------------------------------
  134. alias xrxs_bp8_update update
  135. def update
  136. # バトルバックのファイル名が現在のものと違う場合
  137. if @battleback_name != $game_temp.battleback_name
  138. @battleback_name = $game_temp.battleback_name
  139. if @battleback_sprite.bitmap != nil
  140. @battleback_sprite.bitmap.dispose
  141. end
  142. bg_bitmap = RPG::Cache.battleback(@battleback_name)
  143. bg_bitmap_stretch = Bitmap.new(1024, 768)
  144. bg_bitmap_stretch.stretch_blt(Rect.new(0, 0, 1024, 768), bg_bitmap, bg_bitmap.rect)
  145. @battleback_sprite.bitmap = bg_bitmap_stretch
  146. end
  147. # カメラ位置が動いた場合
  148. if @now_bg_x != $xcam_x or @now_bg_y != $xcam_y or @now_bg_z != $xcam_z
  149. # ズーム率
  150. zoom = 1.00 * 185 / $xcam_z
  151. @battleback_sprite.zoom_x = zoom
  152. @battleback_sprite.zoom_y = zoom
  153. # カメラzによる位置の修正
  154. maximum = 192 * (296 - $xcam_z) / 111
  155. $xcam_x = [[$xcam_x, -maximum].max, maximum].min
  156. # 背景位置更新
  157. @battleback_sprite.x = -$xcam_x * zoom - 512 * (zoom - 1)
  158. @battleback_sprite.y = $xcam_y * zoom - 384 * (zoom - 1)
  159. # 値更新
  160. @now_bg_x = $xcam_x
  161. @now_bg_y = $xcam_y
  162. @now_bg_z = $xcam_z
  163. end
  164. # 戻す
  165. xrxs_bp8_update
  166. end
  167. end
  168. #==============================================================================
  169. # ■ Scene_Battle
  170. #==============================================================================
  171. class Scene_Battle
  172. #--------------------------------------------------------------------------
  173. # ● メイン処理
  174. #--------------------------------------------------------------------------
  175. alias xrxs_bp8_main main
  176. def main
  177. # カメラ初期位置決定
  178. $xcam_x = 0
  179. $xcam_y = 0
  180. $xcam_z = 295
  181. # カメラの最初の目的値
  182. @xcam_x_destination = 0
  183. @xcam_y_destination = 0
  184. @xcam_z_destination = 185
  185. # 今、注目バトラーは無し。
  186. @xcam_watch_battler = nil
  187. # 初期化
  188. @wait_count_xcam = 0
  189. # 戻す
  190. xrxs_bp8_main
  191. end
  192. #--------------------------------------------------------------------------
  193. # ● フレーム更新
  194. #--------------------------------------------------------------------------
  195. alias xrxs_bp8_update update
  196. def update
  197. # カメラ位置の更新。
  198. if @wait_count_xcam > 0
  199. # ウェイトカウントを減らす
  200. @wait_count_xcam -= 1
  201. else
  202. # カメラ: Z 座標
  203. if $xcam_z != @xcam_z_destination
  204. if $xcam_z < @xcam_z_destination
  205. distance = [(@xcam_z_destination - $xcam_z)/8, 1].max
  206. else
  207. distance = [(@xcam_z_destination - $xcam_z)/8, -1].min
  208. end
  209. $xcam_z = [[$xcam_z + distance, 74].max, 296].min
  210. end
  211. # カメラ: X 座標
  212. if @xcam_watch_battler != nil
  213. if $xcam_x != @xcam_watch_battler.x_pos
  214. if ($xcam_x - @xcam_watch_battler.x_pos).abs < 8
  215. distance = @xcam_watch_battler.x_pos - $xcam_x
  216. elsif $xcam_x < @xcam_watch_battler.x_pos
  217. distance = [(@xcam_watch_battler.x_pos - $xcam_x)/8, 8].max
  218. else
  219. distance = [(@xcam_watch_battler.x_pos - $xcam_x)/8, -8].min
  220. end
  221. maximum = 192 * (296 - $xcam_z) / 111
  222. $xcam_x = [[$xcam_x + distance, -maximum].max, maximum].min
  223. end
  224. elsif $xcam_x != @xcam_x_destination
  225. if ($xcam_x - @xcam_x_destination).abs < 8
  226. distance = @xcam_x_destination - $xcam_x
  227. elsif $xcam_x < @xcam_x_destination
  228. distance = [(@xcam_x_destination - $xcam_x)/8, 8].max
  229. else
  230. distance = [(@xcam_x_destination - $xcam_x)/8, -8].min
  231. end
  232. maximum = 192 * (296 - $xcam_z) / 111
  233. $xcam_x = [[$xcam_x + distance, -maximum].max, maximum].min
  234. end
  235. # カメラ: Y 座標
  236. if @xcam_watch_battler != nil
  237. y = @xcam_watch_battler.y_pos/2
  238. if $xcam_y != y
  239. if ($xcam_y - y).abs < 8
  240. distance = y - $xcam_y
  241. elsif $xcam_y < y
  242. distance = [(y - $xcam_y)/8, 8].max
  243. else
  244. distance = [(y - $xcam_y)/8, -8].min
  245. end
  246. maximum = 144 * (296 - $xcam_z) / 111
  247. $xcam_y = [[$xcam_y + distance, -maximum].max, maximum].min
  248. end
  249. elsif $xcam_y != @xcam_y_destination
  250. if $xcam_y < @xcam_y_destination
  251. distance = [(@xcam_y_destination - $xcam_y)/8, 1].max
  252. else
  253. distance = [(@xcam_y_destination - $xcam_y)/8, -1].min
  254. end
  255. maximum = 164 * (296 - $xcam_z) / 111
  256. $xcam_y = [[$xcam_y + distance, -maximum].max, maximum].min
  257. end
  258. end
  259. # 通常実行
  260. xrxs_bp8_update
  261. end
  262. #--------------------------------------------------------------------------
  263. # ● パーティコマンドフェーズ開始
  264. #--------------------------------------------------------------------------
  265. alias xrxs_bp8_start_phase2 start_phase2
  266. def start_phase2
  267. # カメラ:センタリング
  268. @xcam_watch_battler = nil
  269. @xcam_x_destination = 0
  270. @xcam_z_destination = 185
  271. # 戻す
  272. xrxs_bp8_start_phase2
  273. end
  274. #--------------------------------------------------------------------------
  275. # ● フレーム更新 (アクターコマンドフェーズ)
  276. #--------------------------------------------------------------------------
  277. alias xrxs_bp8_update_phase3 update_phase3
  278. def update_phase3
  279. # カメラをキャラ位置へ
  280. if @active_battler != nil and @active_battler.actor_in_battlefield
  281. @xcam_x_destination = @active_battler.x_pos
  282. @xcam_z_destination = 175
  283. end
  284. xrxs_bp8_update_phase3
  285. end
  286. #--------------------------------------------------------------------------
  287. # ● フレーム更新 (アクターコマンドフェーズ : エネミー選択)
  288. #--------------------------------------------------------------------------
  289. alias xrxs_bp8_update_phase3_enemy_select update_phase3_enemy_select
  290. def update_phase3_enemy_select
  291. # カメラ:敵ターゲットをズームアップ
  292. @xcam_x_destination = $game_troop.enemies[@enemy_arrow.index].x_pos * $game_troop.enemies[@enemy_arrow.index].zoom
  293. @xcam_z_destination = 175
  294. # 戻す
  295. xrxs_bp8_update_phase3_enemy_select
  296. end
  297. #--------------------------------------------------------------------------
  298. # ● エネミー選択終了
  299. #--------------------------------------------------------------------------
  300. alias xrxs_bp8_end_enemy_select end_enemy_select
  301. def end_enemy_select
  302. # カメラ:中心へ
  303. @xcam_x_destination = 0
  304. @xcam_z_destination = 185
  305. # 戻す
  306. xrxs_bp8_end_enemy_select
  307. end
  308. #--------------------------------------------------------------------------
  309. # ● フレーム更新 (メインフェーズ ステップ 2 : アクション開始)
  310. #--------------------------------------------------------------------------
  311. alias xrxs_bp8_update_phase4_step2 update_phase4_step2
  312. def update_phase4_step2
  313. # 戻す
  314. xrxs_bp8_update_phase4_step2
  315. # ステップ 3 に移行する場合
  316. if @phase4_step == 3
  317. if @active_battler.is_a?(Game_Enemy) or @active_battler.actor_in_battlefield
  318. # カメラ:行動バトラーへのズームアップを予約
  319. @xcam_x_destination = @active_battler.x_pos * @active_battler.zoom if @active_battler.x_pos != nil
  320. @xcam_z_destination = 175
  321. end
  322. # 最低 20 フレーム待つ
  323. @wait_count = 20
  324. end
  325. end
  326. #--------------------------------------------------------------------------
  327. # ● フレーム更新 (メインフェーズ ステップ 3 : 行動側アニメーション)
  328. #--------------------------------------------------------------------------
  329. alias xrxs_bp8_update_phase4_step3 update_phase4_step3
  330. def update_phase4_step3
  331. # 戻す
  332. xrxs_bp8_update_phase4_step3
  333. if @target_battlers.size > 0 and
  334. (@target_battlers[0].is_a?(Game_Enemy) or @target_battlers[0].actor_in_battlefield)
  335. # カメラ:ターゲットへのズームアップを予約
  336. @xcam_x_destination = @target_battlers[0].x_pos * @target_battlers[0].zoom if @target_battlers[0] != nil
  337. @xcam_z_destination = 185
  338. # もし対象アニメが「位置:画面」のものの場合
  339. if @animation2_id > 0 and $data_animations[@animation2_id].position == 3
  340. # カメラをセンタリング
  341. @xcam_x_destination = 0
  342. # ズームアウトまでやっちゃう?w?
  343. @xcam_z_destination = 222
  344. end
  345. end
  346. # 最低 20 フレーム待つ
  347. @wait_count = 20
  348. end
  349. #--------------------------------------------------------------------------
  350. # ● アフターバトルフェーズ開始
  351. #--------------------------------------------------------------------------
  352. alias xrxs_bp8_start_phase5 start_phase5
  353. def start_phase5
  354. @xcam_z_destination = 185
  355. xrxs_bp8_start_phase5
  356. end
  357. end
  358. #==============================================================================
  359. # ◇ RPG::再定義「戦闘中の"画面"アニメの位置修正」
  360. #==============================================================================
  361. module RPG
  362. class Sprite < ::Sprite
  363. def animation_set_sprites(sprites, cell_data, position)
  364. for i in 0..15
  365. sprite = sprites[i]
  366. pattern = cell_data[i, 0]
  367. if sprite == nil or pattern == nil or pattern == -1
  368. sprite.visible = false if sprite != nil
  369. next
  370. end
  371. sprite.visible = true
  372. sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
  373. if position == 3
  374. if self.viewport != nil
  375. if $scene.is_a?(Scene_Battle)
  376. sprite.x = self.viewport.rect.width / 2
  377. sprite.y = 304
  378. else
  379. sprite.x = self.viewport.rect.width / 2
  380. sprite.y = self.viewport.rect.height - 160
  381. end
  382. else
  383. sprite.x = 320
  384. sprite.y = 240
  385. end
  386. else
  387. sprite.x = self.x - self.ox + self.src_rect.width / 2
  388. sprite.y = self.y - self.oy + self.src_rect.height / 2
  389. sprite.y -= self.src_rect.height / 4 if position == 0
  390. sprite.y += self.src_rect.height / 4 if position == 2
  391. end
  392. sprite.x += cell_data[i, 1]
  393. sprite.y += cell_data[i, 2]
  394. sprite.z = 2000
  395. sprite.ox = 96
  396. sprite.oy = 96
  397. sprite.zoom_x = cell_data[i, 3] / 100.0
  398. sprite.zoom_y = cell_data[i, 3] / 100.0
  399. sprite.angle = cell_data[i, 4]
  400. sprite.mirror = (cell_data[i, 5] == 1)
  401. sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
  402. sprite.blend_type = cell_data[i, 7]
  403. end
  404. end
  405. end
复制代码

这个脚本不能在RTAB直接使用,要改下坐标,不过对楼主来说不是问题。
系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
5 小时
注册时间
2008-6-28
帖子
292
18
 楼主| 发表于 2008-8-12 02:06:45 | 只看该作者
我找到了,谢谢大家,这个特效真的是有(真有这种东西。。。强悍如此),作者太过天才了。特别感谢殲滅天使·玲。。。我把大部分的分都给你吧。。。菜刀也是,你也是太过高估我了,不过这个特效真是很他妈的难写。。
不要小看偶哦~~偶可是雨血2和历史2的主系统哦
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
5 小时
注册时间
2008-6-28
帖子
292
19
 楼主| 发表于 2008-8-12 02:43:14 | 只看该作者
还有,XXX.zoom_x = 2.0  XXX.zoom_y = 2.0也是XP自己定义好了,不过只限于精灵类使用话说战斗部分都属于,所以不存在问题。
其实战斗系统中画面也主要是精灵,因为背景图,战斗者都是,还有就是数据库动画也是精灵播放的,这个脚本直接把所有在战斗中的精灵分辨率减低,真是天才的构想。。。其实战斗系统都应该写在精灵中,而不是写在场景(就像超级横板那种),这样会好很多。。。小日本的ratb就是牛啊。。。。。
不要小看偶哦~~偶可是雨血2和历史2的主系统哦
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-14 15:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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