Project1
标题:
关于战斗系统的问题
[打印本页]
作者:
p7l8k90
时间:
2009-11-27 18:26
标题:
关于战斗系统的问题
我用了全动画战斗脚本,怎么才能把默认战斗的框框弄没?
我用了5人脚本,怎么修改血条位置?
我用了cp战斗,怎么才能把cp条弄成想仙剑3那样?
(我做的是仙剑3续传)
作者:
cinderelmini
时间:
2009-11-27 18:46
1。在Window_Battle_Status(大概吧。。。改了它的名很久了。。忘记原名了。。)
里的初始化的下面2-3行加上一句self.opacity = 0就能把窗口背景框透明掉。。。
2。基本上。。。把Status窗口里描画角色系列的 x = i * 160 里的160改成 640 / 5(口算不出。。自己算 算吧。。)
3。CP条脚本里有个计算宽度的公式。。。把它移植到自己做的图片CP条就能实现了。。。
作者:
p7l8k90
时间:
2009-11-29 07:26
2#
cinderelmini
我试过了,没用
作者:
p7l8k90
时间:
2009-11-29 07:27
2#
cinderelmini
恩,我用了全动画战斗脚本
作者:
libinsf
时间:
2009-11-29 07:29
晕。这个只是很简单的修改呀。如果你不太懂脚本的话,要么去学。要么就和别人合作。
因为你问的问题,基本上如果只用整合脚本是做不到的,数据肯定要自己修改。如果别人能做出来,你还做什么呢?
作者:
p7l8k90
时间:
2009-11-29 07:29
啊哈哈
作者:
p7l8k90
时间:
2009-11-29 07:31
2#
cinderelmini
太感谢你了,原来是5人战斗的原因,致使windows battelstaus 无法执行,我替换了一部分代码就管用了谢谢谢……
作者:
p7l8k90
时间:
2009-11-29 07:38
“actor_x = i * 160 + 4”这条代码是什么意思?
作者:
p7l8k90
时间:
2009-11-29 07:40
2#
cinderelmini
还有血条位置按你的方法做过了,不好使。不过还是谢谢你……也或许我找错东西了,恩,你看看是不是以下代码 #--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
actor = $game_party.actors
actor_x = i * 160 + 4
draw_actor_name(actor, actor_x, 0)
draw_actor_hp(actor, actor_x, 32, 120)
draw_actor_sp(actor, actor_x, 64, 120)
x = i * 640/5
a = actor.id.to_s + "_b"
bitmap=Bitmap.new("Graphics/pictures/#{a}")
src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
self.contents.blt(x, 0, bitmap, src_rect)
if @level_up_flags
self.contents.font.color = normal_color
self.contents.draw_text(actor_x, 96, 120, 32, "LEVEL UP!")
else
draw_actor_state(actor, actor_x, 96)
end
end
end
作者:
夏季冰川
时间:
2009-11-29 08:29
本帖最后由 夏季冰川 于 2009-11-29 08:32 编辑
“actor_x = i * 160 + 4”这条代码是什么意思?
p7l8k90 发表于 2009-11-29 07:38
代表我方角色的x坐标,由于是640*480的,所以横坐标刚好能放上4个角色.
比如一号角色的横坐标就是0*160+4=4,二号是1*160+4=164等等.
按照2L的算法,应当把 actor_x = i * 160 + 4 改成 actor_x = i * 128 + 4 (没算错吧,我
数学不好)
作者:
p7l8k90
时间:
2009-11-29 08:45
基本调试完毕,谢谢各位好心人的解答
作者:
风中承诺
时间:
2009-11-29 10:17
#==============================================================================
# ■ Window_BattleStatus
#------------------------------------------------------------------------------
# 显示战斗画面同伴状态的窗口。
#==============================================================================
class Window_BattleStatus < Window_Base
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
super(0, 320, 640, 160)
self.contents = Bitmap.new(width - 32, height - 32)
@level_up_flags = [false, false, false, false]
#........................................................................
self.opacity = 0
@sta_back = []
@sta_output = []
@cp_output = []
@hp_bitmap = RPG::Cache.picture("../system/battle/hmcp/hp_bar.png")
@mp_bitmap = RPG::Cache.picture("../system/battle/hmcp/mp_bar.png")
@cp_bitmap = RPG::Cache.picture("../system/battle/hmcp/cp_bar.png")
@cp_output = []
@cp_back_bar = Sprite.new
@cp_back_bar.bitmap = Bitmap.new("Graphics/system/battle/hmcp/cp_back_bar")
@cp_back_bar.x = 450
@cp_back_bar.y = 25
@cp_back_bar.z = self.z + 1
@actor_cp_sprite = []
@actor_cp_sprite_back = []
for actor in $game_party.actors
@actor_cp_sprite[actor.index] = Sprite.new
@actor_cp_sprite[actor.index].bitmap = Bitmap.new("Graphics/system/battle/hmcp/sprite/" + actor.name)
@actor_cp_sprite[actor.index].x = 450
@actor_cp_sprite[actor.index].y = 25 - 20
@actor_cp_sprite[actor.index].z = 102
@actor_cp_sprite_back[actor.index] = Sprite.new
@actor_cp_sprite_back[actor.index].bitmap = Bitmap.new("Graphics/system/battle/hmcp/cp_sprite")
@actor_cp_sprite_back[actor.index].x = 450
@actor_cp_sprite_back[actor.index].y = 25
@actor_cp_sprite_back[actor.index].z = 102
end
for actor_index in 1..$game_party.actors.size
@cp_output[actor_index] = Sprite.new
@cp_output[actor_index].bitmap = Bitmap.new(156, 78)
@cp_output[actor_index].x = 0 + (actor_index - 1) * 156
@cp_output[actor_index].y = 468 - 78 - 10
@cp_output[actor_index].z = self.z + 2
@cp_output[actor_index].bitmap.clear
@sta_back[actor_index] = Sprite.new
@sta_back[actor_index].bitmap = Bitmap.new("Graphics/System/Battle/sta_back/" + $game_party.actors[actor_index - 1].name + "_sta.png")
@sta_back[actor_index].x = 6 + (actor_index - 1) * 156
@sta_back[actor_index].y = 444 - 78 - 10
@sta_back[actor_index].z = self.z + 1
@sta_output[actor_index] = Sprite.new
@sta_output[actor_index].bitmap = Bitmap.new(156, 78)
@sta_output[actor_index].x = 6 + (actor_index - 1) * 156
@sta_output[actor_index].y = 444 - 78 - 10
@sta_output[actor_index].z = self.z + 2
@sta_output[actor_index].bitmap.clear
@sta_output[actor_index].bitmap.font.size = 10
@sta_output[actor_index].bitmap.font.name = "黑体"
hp_width = $game_party.actors[actor_index - 1].hp * @hp_bitmap.width/$game_party.actors[actor_index - 1].maxhp
hp_rect = Rect.new(0, 0, hp_width, 3)
mp_width = $game_party.actors[actor_index - 1].sp * @mp_bitmap.width/$game_party.actors[actor_index - 1].maxsp
mp_rect = Rect.new(0, 0, mp_width, 3)
@sta_output[actor_index].bitmap.blt(71, 36, @hp_bitmap, hp_rect)
@sta_output[actor_index].bitmap.blt(71, 56, @mp_bitmap, mp_rect)
@sta_output[actor_index].bitmap.font.color.set(255, 0, 0)
@sta_output[actor_index].bitmap.draw_text(100, 25, 78, 11,$game_party.actors[actor_index - 1].hp.to_s + "/" + $game_party.actors[actor_index - 1].maxhp.to_s)
@sta_output[actor_index].bitmap.font.color.set(0, 0, 255)
@sta_output[actor_index].bitmap.draw_text(100, 45, 78, 11,$game_party.actors[actor_index - 1].sp.to_s + "/" + $game_party.actors[actor_index - 1].maxsp.to_s)
end
#........................................................................
refresh
end
#--------------------------------------------------------------------------
# ● 释放
#--------------------------------------------------------------------------
def dispose
super
@hp_bitmap.bitmap.dispose
@hp_bitmap.dispose
@mp_bitmap.bitmap.dispose
@mp_bitmap.dispose
@cp_bitmap.bitmap.dispose
@cp_bitmap.dispose
for actor_index in 1..$game_party.actors.size
@sta_back[actor_index].bitmap.dispose
@sta_back[actor_index].dispose
@sta_output[actor_index].bitmap.dispose
@sta_output[actor_index].dispose
@cp_output[actor_index].bitmap.dispose
@cp_output[actor_index].dispose
end
end
#--------------------------------------------------------------------------
# ● 设置升级标志
# actor_index : 角色索引
#--------------------------------------------------------------------------
def level_up(actor_index)
@level_up_flags[actor_index] = true
end
#......................................................................
#--------------------------------------------------------------------------
# ● 设置正在攻击标志
# actor_index : 角色索引
#--------------------------------------------------------------------------
def in_atk(actor_index)
@sta_back[actor_index + 1].bitmap = Bitmap.new("Graphics/System/Battle/sta_back/" + $game_party.actors[actor_index].name + "_sta_atk.png")
end
#--------------------------------------------------------------------------
# ● 设置不在攻击标志
# actor_index : 角色索引
#--------------------------------------------------------------------------
def out_atk(actor_index)
@sta_back[actor_index + 1].bitmap = Bitmap.new("Graphics/System/Battle/sta_back/" + $game_party.actors[actor_index].name + "_sta.png")
end
#......................................................................
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
#......................................................................
actor_x = i * 160 + 4
@sta_output[i + 1].bitmap.clear
hp_width = $game_party.actors[i].hp * @hp_bitmap.width/$game_party.actors[i].maxhp
hp_rect = Rect.new(0, 0, hp_width, 3)
mp_width = $game_party.actors[i].sp * @mp_bitmap.width/$game_party.actors[i].maxsp
mp_rect = Rect.new(0, 0, mp_width, 3)
@sta_output[i + 1].bitmap.blt(71, 36, @hp_bitmap, hp_rect)
@sta_output[i + 1].bitmap.blt(71, 56, @mp_bitmap, mp_rect)
@sta_output[i + 1].bitmap.font.color.set(255, 0, 0)
@sta_output[i + 1].bitmap.draw_text(100, 25, 77, 11,$game_party.actors[i].hp.to_s + "/" + $game_party.actors[i].maxhp.to_s)
@sta_output[i + 1].bitmap.font.color.set(0, 0, 255)
@sta_output[i + 1].bitmap.draw_text(100, 45, 77, 11,$game_party.actors[i].sp.to_s + "/" + $game_party.actors[i].maxsp.to_s)
#......................................................................
if @level_up_flags[i]
self.contents.font.color = Color.new(255, 0, 0)
self.contents.draw_text(actor_x, 96, 120, 32, "阅历增加!")
else
draw_actor_state(actor, actor_x, 96)
end
end
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
super
# 主界面的不透明度下降
if $game_temp.battle_main_phase
self.contents_opacity -= 4 if self.contents_opacity > 1
else
self.contents_opacity += 4 if self.contents_opacity < 255
end
end
end
复制代码
System.rar
(330.19 KB, 下载次数: 26)
2009-11-29 10:16 上传
点击文件名下载附件
(素材)
作者:
cinderelmini
时间:
2009-11-29 18:23
饿。。。。。。不要让明尼OTZ了。。。怎么能直接“x = i * 640/5”呢。。。
先把640/5算出来嘛。。。还有。。。多数血条的默认宽度是4人的。。。LZ应该先把血条宽度修改一下。。。
再放在状态栏里就不回很乱了哦。。。。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1