Project1
标题:
战棋脚本整合进其他功能的现有脚本【有偿】
[打印本页]
作者:
venom2000
时间:
2022-10-4 13:27
标题:
战棋脚本整合进其他功能的现有脚本【有偿】
本帖最后由 venom2000 于 2022-10-4 13:31 编辑
想把战棋脚本上整合(或者兼容)我找到的其他脚本。包括一个“弹药消耗”的脚本和一个“换装脚本”。
因为在这个战棋脚本中,角色没办法换形象。而且弹药是RM传统的不限量。(如果弹药用光,允许更换武器或者换成默认近战攻击。)
如果可以的话这个脚本能增加战斗中换武器的功能,和撤离战场、战场出口指定到某个地图的坐标(比如从山洞进入战棋战场战斗,移动进入到另一侧的门后,出到某个城市入口中)。
战棋原脚本https://rpg.blue/thread-479957-1-1.html
其他的脚本也是在论坛搜的。
希望价格合理。QQ:253655889
[qq]253655889[/qq]
作者:
venom2000
时间:
2022-10-4 13:29
弹药消耗
#encoding:utf-8
# =============================================================================
# MCCF - 弹药消耗
# 版本 : 1.0
# =============================================================================
$fscript = {} if $fscript == nil
$fscript["MCCFAmmunition"] = "1.0.0703"
# =============================================================================
# 更新记录:
# -----------------------------------------------------------------------------
# 2018.6.21 - V1.0制作完成,在P1发布
# =============================================================================
=begin
介绍:
可以设定某些武器普攻消耗弹药。
在武器备注栏备注
消耗弹药ID = ID
ID:该武器普通攻击消耗的弹药(物品)ID
<消耗弹药数量 = NUMBER>
NUMBER:该武器一次普通攻击消耗的弹药(物品)数量,默认为1
作者的测试比较粗略,若有BUG一定要回帖提出哦!
使用方法:
插入到插件脚本之下,Main之上即可。
兼容性:
为保险请放在其它更改攻击指令脚本的下面。(不过一般没有太大必要)
另外,敬请确保没有使用装备栏自定义脚本改变第一个装备,也就是第一个装备位置一定要是
武器。
使用条款:
只要署名MCCF即可。只要不以自己的名义发布,你可以自由修改此脚本。若用于商业游戏,
请给我一份免费的游戏拷贝。
备注:
建议搭配 战斗中切换装备 脚本,以便让玩家没有弹药时,不至于该角色整场战斗都无法攻击。
=end
# =============================================================================
# 设定部分:
# =============================================================================
module MCCF
module Ammunition
# 没有弹药的时候是直接不允许攻击(false)还是攻击时无效(true)
CAN_SELECT = true
# 没有弹药时的无效用语(%s是角色名字)
NO_AMMUNITION_VOCAB = "%s没有弹药了!"
end
end
# =============================================================================
# 设定结束
# =============================================================================
#------------------------------------------------------------------------------
# ■ 以下有关备注读取
#------------------------------------------------------------------------------
#==============================================================================
# ■ RPG
#==============================================================================
module RPG
#=============================================================================
# □ ReadNote
#=============================================================================
module ReadNote
def self.read(str, section, mismatch = nil)
str.each_line do |line|
eval("#{line}; return #{section}") if line =~ /^\s*#{section}\s*=/
end
return mismatch
end
end
#=============================================================================
# ■ BaseItem
#=============================================================================
class BaseItem
#-------------------------------------------------------------------------
# ○ 读取rmva备注栏字段
# section : 字段名
# mismatch : 未匹配时的返回值
#-------------------------------------------------------------------------
def read_note(section, mismatch = nil)
ReadNote.read(self.note, section, mismatch)
end
end
#=============================================================================
# ■ Actor
#=============================================================================
class Actor
def read_note(section, mismatch = nil)
ReadNote.read(self.note, section, mismatch)
end
end
end
#------------------------------------------------------------------------------
# ■ 以下有关数据判定
#------------------------------------------------------------------------------
module MCCF
module Ammunition
# 返回当前角色普通攻击消耗的弹药ID,同时作为是否需要弹药的判断标准
def self.Ammunition_id
note = $data_weapons[BattleManager.actor.weapons[0].id].read_note('消耗弹药ID')
if note != nil
return note
else
return false
end
end
# 返回当前角色一次攻击消耗的弹药数量
def self.Ammunition_once
note = $data_weapons[BattleManager.actor.weapons[0].id].read_note('消耗弹药数量')
if note != nil
return note
elsif MCCF::Ammunition.Ammunition_id
return 1
else
return 0
end
end
# 弹药是否足够的判定
def self.Ammunition_if
if MCCF::Ammunition.Ammunition_id
hold = $game_party.item_number($data_items[MCCF::Ammunition.Ammunition_id])
return hold >= MCCF::Ammunition.Ammunition_once
else
return true
end
end
end
end
#------------------------------------------------------------------------------
# ■ 以下有关实际的弹药消耗/弹药判断
#------------------------------------------------------------------------------
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● 指令“攻击”
#--------------------------------------------------------------------------
alias _command_attack command_attack
def command_attack
_command_attack
if MCCF::Ammunition.Ammunition_id
item = $data_items[MCCF::Ammunition.Ammunition_id]
$game_party.lose_item(item, MCCF::Ammunition.Ammunition_once)
end
end
end
class Game_BattlerBase
#--------------------------------------------------------------------------
# ● 判定是否能使用普通攻击
#--------------------------------------------------------------------------
def attack_usable?
usable?($data_skills[attack_skill_id]) && MCCF::Ammunition.Ammunition_if && MCCF::Ammunition::CAN_SELECT
end
end
复制代码
作者:
venom2000
时间:
2022-10-4 13:30
换装脚本
=begin
装备变更行走图 Ace 版 v1.0
( XP 版作者:亿万星辰 )
素材请使用 png 格式的去底图片
装备样式行走图放在 Graphics\DisplayEquips 文件夹内
装备的备注里填写 <display 图片名>,装备上以后在行走图上绘制对应的装备样式
可以双持的装备还需要另一个左手持武器的图片
在原图片的图片名后加“_dual”显示左手拿这个武器的效果
如果没有这个图片则不显示
=end
#-
class Sprite_Player < Sprite_Character
EquipDisplayPriority = {
#各个朝向对应的显示优先级,靠后的显示在最前 人物朝向
0 => [:body, :armor, :helmet, :weapon, :shield], #下
1 => [:weapon, :body, :armor, :helmet, :shield], #左
2 => [:shield, :body, :armor, :helmet, :weapon], #右
3 => [:body, :weapon, :shield, :armor, :helmet] #上
}
def graphic_changed?
super || equip_changed?
end
def equip_changed?
@character.actor && @character.actor.equip_changed
end
#
def set_character_bitmap
super
setup_bitmap_display_equips
end
#
def setup_bitmap_display_equips
w = @cw * 3
h = @ch * 4
i = @character.character_index
# 创建临时位图
orig_bitmap = Bitmap.new(w, h)
orig_bitmap.blt( 0, 0, self.bitmap, Rect.new(i%4*w, i/4*h, w, h) )
self.bitmap = Bitmap.new(w, h)
# 绘制装备
bitmap_draw_equips(orig_bitmap) if @character.actor
#~ if @character == $game_player
#~ $sprite = Sprite.new
#~ $sprite.bitmap = bitmap
#~ end
orig_bitmap.dispose
end
#
def bitmap_draw_equips(orig_bitmap)
@character.actor.equip_changed = false
# 创建装备临时位图
temp_equip_bitmaps = []
@character.actor.equips.each_with_index {|equip, index|
img_name = equip ? equip.display_equip_part : nil
temp_equip_bitmaps.push(
equip_bitmap(img_name, index == 1 && equip.class == RPG::Weapon)
)
}
dual_wield = @character.actor.dual_wield?
# 逐层绘制装备
btmp_rect = Rect.new(0, 0, @cw*3, @ch)
4.times {|i|
btmp_rect.y = @ch * i
EquipDisplayPriority[i].each {|part|
btmp = equip_part_bitmap(part, temp_equip_bitmaps, orig_bitmap)
bitmap.blt( 0, btmp_rect.y, btmp, btmp_rect ) if btmp
}
}
# 释放临时位图
temp_equip_bitmaps.each {|bitmap| bitmap.dispose if bitmap}
end
#
def equip_part_bitmap( part, temp_equip_bitmaps, orig_bitmap )
case part
when :body; orig_bitmap
when :weapon; temp_equip_bitmaps[0]
when :shield; temp_equip_bitmaps[1]
when :armor; temp_equip_bitmaps[2]
when :helmet; temp_equip_bitmaps[3]
end
end
def equip_bitmap(img_name, dual_weapon)
if img_name
img_file = "Graphics/DisplayEquips/#{img_name}"
if dual_weapon
img_dual = img_file + "_dual.png"
File.exist?(img_dual) ? Bitmap.new(img_dual) : nil
else
Bitmap.new(img_file)
end
else
nil
end
end
#
def update_src_rect
pattern = @character.pattern < 3 ? @character.pattern : 1
sx = pattern * @cw
sy = (@character.direction - 2) / 2 * @ch
self.src_rect.set(sx, sy, @cw, @ch)
end
#
def dispose
bitmap.dispose
super
end
end
module RPG
class Weapon
def display_equip_part
@note =~ /<display.(\S+)>/
return $1
end
end
class Armor
def display_equip_part
@note =~ /<display.(\S+)>/
return $1
end
end
end
#-
class Game_Actor
attr_accessor\
:equip_changed
alias_method :display_equip_change_equip, :change_equip
def change_equip(slot_id, item)
display_equip_change_equip(slot_id, item)
@equip_changed = true
end
end
class Game_Character
end
#-
class Spriteset_Map
def create_characters # 覆盖
@character_sprites = []
$game_map.events.values.each do |event|
@character_sprites.push(Sprite_Character.new(@viewport1, event))
end
$game_map.vehicles.each do |vehicle|
@character_sprites.push(Sprite_Character.new(@viewport1, vehicle))
end
$game_player.followers.reverse_each do |follower|
@character_sprites.push(Sprite_Player.new(@viewport1, follower))
end
@character_sprites.push(Sprite_Player.new(@viewport1, $game_player))
@map_id = $game_map.map_id
end
end
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1