Project1
标题:
可以对敌也可以对友的技能
[打印本页]
作者:
中二病医生
时间:
2015-10-5 15:52
标题:
可以对敌也可以对友的技能
本帖最后由 中二病医生 于 2015-10-5 15:54 编辑
嗯……为增强游戏的灵活性弄了这么一种可以对敌也可以对友的技能……
不过代码比较散所以没有整合到一起……
应该不会有需求?
另外还做了技能冷却和装备加工……
但是看到站内已经有了而且做的比我完善我还是不发上来了……
QQ图片20151005155026.png
(282.52 KB, 下载次数: 20)
下载附件
保存到相册
2015-10-5 15:50 上传
作者:
落雪鸦杀
时间:
2015-10-5 16:43
实际上使用默认数据库的【混乱】也能起到相似的效果,只是是乱序的。
那么求发……我这边可能会用到
顺带问一句为什么一个叫做李的家伙会这么多符卡啊……
灵梦的梦想天生啊……这货会这么多不会是EX面BOSS吧
反白而已
作者:
中二病医生
时间:
2015-10-5 17:01
本帖最后由 中二病医生 于 2015-10-5 17:07 编辑
#encoding:utf-8
#==============================================================================
# ■ Window_BattleEnemy
#------------------------------------------------------------------------------
# 战斗画面中,选择目标的窗口。
#==============================================================================
class Window_BattleAim < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对象
# info_viewport : 信息显示用显示端口
#--------------------------------------------------------------------------
def initialize(info_viewport)
super(0, info_viewport.rect.y, window_width, fitting_height(4))
refresh
self.visible = false
@info_viewport = info_viewport
end
#--------------------------------------------------------------------------
# ● 获取窗口的宽度
#--------------------------------------------------------------------------
def window_width
Graphics.width - 128
end
#--------------------------------------------------------------------------
# ● 获取列数
#--------------------------------------------------------------------------
def col_max
return 2
end
#--------------------------------------------------------------------------
# ● 获取项目数
#--------------------------------------------------------------------------
def item_max
$game_troop.alive_members.size + $game_party.battle_alive_members.size
end
#--------------------------------------------------------------------------
# ● 获取所有项目
#--------------------------------------------------------------------------
def all_item
$game_troop.alive_members + $game_party.battle_alive_members
end
#--------------------------------------------------------------------------
# ● 获取目标实例
#--------------------------------------------------------------------------
def aim
all_item[@index]
end
#--------------------------------------------------------------------------
# ● 绘制项目
#--------------------------------------------------------------------------
def draw_item(index)
change_color(normal_color)
name = all_item[index].name
draw_text(item_rect_for_text(index), name)
end
#--------------------------------------------------------------------------
# ● 显示窗口
#--------------------------------------------------------------------------
def show
if @info_viewport
width_remain = Graphics.width - width
self.x = width_remain
@info_viewport.rect.width = width_remain
select(0)
end
super
end
#--------------------------------------------------------------------------
# ● 隐藏窗口
#--------------------------------------------------------------------------
def hide
@info_viewport.rect.width = Graphics.width if @info_viewport
super
end
end
#encoding:utf-8
#==============================================================================
# ■ Scene_Battle
#------------------------------------------------------------------------------
# 战斗画面
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● 生成所有窗口
#--------------------------------------------------------------------------
def create_all_windows
create_message_window
create_scroll_text_window
create_log_window
create_status_window
create_info_viewport
create_party_command_window
create_actor_command_window
create_help_window
create_skill_window
create_item_window
create_actor_window
create_enemy_window
create_aim_window
end
#--------------------------------------------------------------------------
# ● 生成目标窗口
#--------------------------------------------------------------------------
def create_aim_window
@aim_window = Window_BattleAim.new(@info_viewport)
@aim_window.set_handler(:ok, method(:on_aim_ok))
@aim_window.set_handler(:cancel, method(:on_aim_cancel))
end
#--------------------------------------------------------------------------
# ● 开始选择目标
#--------------------------------------------------------------------------
def select_aim_selection
@aim_window.refresh
@aim_window.show.activate
end
#--------------------------------------------------------------------------
# ● 目标“确定”
#--------------------------------------------------------------------------
def on_aim_ok
BattleManager.actor.input.target_index = @aim_window.index
@aim_window.hide
@skill_window.hide
@item_window.hide
next_command
end
#--------------------------------------------------------------------------
# ● 目标“取消”
#--------------------------------------------------------------------------
def on_aim_cancel
@aim_window.hide
case @actor_command_window.current_symbol
when :skill
@skill_window.activate
when :item
@item_window.activate
end
end
#--------------------------------------------------------------------------
# ● 技能“确定”
#--------------------------------------------------------------------------
def on_skill_ok
@skill = @skill_window.item
BattleManager.actor.input.set_skill(@skill.id)
BattleManager.actor.last_skill.object = @skill
if @skill.note.include?('目标不定')
select_aim_selection
elsif
[email protected]
_selection?
@skill_window.hide
next_command
elsif @skill.for_opponent?
select_enemy_selection
else
select_actor_selection
end
end
#--------------------------------------------------------------------------
# ● 物品“确定”
#--------------------------------------------------------------------------
def on_item_ok
@item = @item_window.item
BattleManager.actor.input.set_item(@item.id)
if @item.note.include?('目标不定')
select_aim_selection
elsif
[email protected]
_selection?
@item_window.hide
next_command
elsif @item.for_opponent?
select_enemy_selection
else
select_actor_selection
end
$game_party.last_item.object = @item
end
end
#encoding:utf-8
#==============================================================================
# ■ Game_Action
#------------------------------------------------------------------------------
# 处理战斗中的行动的类。本类在 Game_Battler 类的内部使用。
#==============================================================================
class Game_Action
#--------------------------------------------------------------------------
# ● 生成目标数组
#--------------------------------------------------------------------------
def make_targets
if item.note.include?('目标不定')
target_for_one
elsif !forcing && subject.confusion?
[confusion_target]
elsif item.for_opponent?
targets_for_opponents
elsif item.for_friend?
targets_for_friends
else
[]
end
end
#--------------------------------------------------------------------------
# ● 获取技能/使用物品的候选目标
#--------------------------------------------------------------------------
def item_target_candidates
if item.note.include?('目标不定')
opponents_unit.alive_members + friends_unit.alive_members
elsif item.for_opponent?
opponents_unit.alive_members
elsif item.for_user?
[subject]
elsif item.for_dead_friend?
friends_unit.dead_members
else
friends_unit.alive_members
end
end
end
复制代码
……回去整合了下,应该是这样
不过难免有遗漏,毕竟用Ruby也就一个星期。
有Bug请报告我hhh
另外这里的验证码区分大小写??
落了一段hhhh
是Action里的
#--------------------------------------------------------------------------
# ● 目标为一位不定势力
#--------------------------------------------------------------------------
def target_for_one
num = 1 + (attack? ? subject.atk_times_add.to_i : 0)
newunit = Game_Unit.new($game_troop.alive_members +
$game_party.battle_alive_members, true)
if @target_index < 0
[newunit.random_target] * num
else
[newunit.smooth_target(@target_index)] * num
end
end
#encoding:utf-8
#==============================================================================
# ■ Game_Unit
#------------------------------------------------------------------------------
# 管理游戏单位的类。是 Game_Party 和 Game_Troop 类的父类。
#==============================================================================
class Game_Unit
#--------------------------------------------------------------------------
# ● 定义实例变量
#--------------------------------------------------------------------------
attr_reader :in_battle # 战斗中的标志
attr_accessor :mymembers # 成员
#--------------------------------------------------------------------------
# ● 初始化对象
#--------------------------------------------------------------------------
def initialize(m = nil, ib = true)
@mymembers = m if m != nil
@in_battle = ib
end
#--------------------------------------------------------------------------
# ● 获取成员
#--------------------------------------------------------------------------
def members
return @mymembers
end
end
复制代码
作者:
cjlzbb
时间:
2016-2-26 23:51
楼主你好,之前用你这脚本发现个问题,
https://rpg.blue/forum.php?mod=v ... p;page=1#pid2667088
有人回复说是脚本里有个地方错了,麻烦你看一下,要是错了的话就顺便更新下吧,省得别的小白跟我一样纠结半天
作者:
chd114
时间:
2016-2-27 20:39
这个帖子沉的够久。。。到现在看到
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1