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

Project1

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

[我要悬赏] 战棋脚本整合进其他功能的现有脚本【有偿】

[复制链接]

Lv2.观梦者

梦石
0
星屑
669
在线时间
77 小时
注册时间
2022-7-29
帖子
42
跳转到指定楼层
1
发表于 2022-10-4 13:27:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 venom2000 于 2022-10-4 13:31 编辑

想把战棋脚本上整合(或者兼容)我找到的其他脚本。包括一个“弹药消耗”的脚本和一个“换装脚本”。
因为在这个战棋脚本中,角色没办法换形象。而且弹药是RM传统的不限量。(如果弹药用光,允许更换武器或者换成默认近战攻击。)
如果可以的话这个脚本能增加战斗中换武器的功能,和撤离战场、战场出口指定到某个地图的坐标(比如从山洞进入战棋战场战斗,移动进入到另一侧的门后,出到某个城市入口中)。

战棋原脚本https://rpg.blue/thread-479957-1-1.html
其他的脚本也是在论坛搜的。

希望价格合理。QQ:253655889

Lv2.观梦者

梦石
0
星屑
669
在线时间
77 小时
注册时间
2022-7-29
帖子
42
2
 楼主| 发表于 2022-10-4 13:29:19 | 只看该作者
弹药消耗

  1. #encoding:utf-8
  2. # =============================================================================
  3. # MCCF - 弹药消耗
  4. # 版本 : 1.0
  5. # =============================================================================
  6. $fscript = {} if $fscript == nil
  7. $fscript["MCCFAmmunition"] = "1.0.0703"
  8. # =============================================================================
  9. # 更新记录:
  10. # -----------------------------------------------------------------------------
  11. # 2018.6.21 - V1.0制作完成,在P1发布
  12. # =============================================================================
  13. =begin

  14.   介绍:
  15.   可以设定某些武器普攻消耗弹药。
  16.   
  17.   在武器备注栏备注
  18.   消耗弹药ID = ID
  19.   ID:该武器普通攻击消耗的弹药(物品)ID
  20.   
  21.   <消耗弹药数量 = NUMBER>
  22.   NUMBER:该武器一次普通攻击消耗的弹药(物品)数量,默认为1
  23.   
  24.   作者的测试比较粗略,若有BUG一定要回帖提出哦!
  25.   
  26.   使用方法:
  27.   插入到插件脚本之下,Main之上即可。
  28.   
  29.   兼容性:
  30.   为保险请放在其它更改攻击指令脚本的下面。(不过一般没有太大必要)
  31.   另外,敬请确保没有使用装备栏自定义脚本改变第一个装备,也就是第一个装备位置一定要是
  32.   武器。
  33.   
  34.   使用条款:
  35.   只要署名MCCF即可。只要不以自己的名义发布,你可以自由修改此脚本。若用于商业游戏,
  36.   请给我一份免费的游戏拷贝。
  37.   
  38.   备注:
  39.   建议搭配 战斗中切换装备 脚本,以便让玩家没有弹药时,不至于该角色整场战斗都无法攻击。

  40. =end
  41. # =============================================================================
  42. # 设定部分:
  43. # =============================================================================
  44. module MCCF
  45.   module Ammunition
  46.   
  47.     # 没有弹药的时候是直接不允许攻击(false)还是攻击时无效(true)
  48.     CAN_SELECT = true
  49.    
  50.     # 没有弹药时的无效用语(%s是角色名字)
  51.     NO_AMMUNITION_VOCAB = "%s没有弹药了!"
  52.   
  53.   end
  54. end
  55. # =============================================================================
  56. # 设定结束
  57. # =============================================================================

  58. #------------------------------------------------------------------------------
  59. # ■ 以下有关备注读取
  60. #------------------------------------------------------------------------------
  61. #==============================================================================
  62. # ■ RPG
  63. #==============================================================================
  64. module RPG
  65.   #=============================================================================
  66.   # □ ReadNote
  67.   #=============================================================================
  68.   module ReadNote
  69.     def self.read(str, section, mismatch = nil)
  70.       str.each_line do |line|
  71.         eval("#{line}; return #{section}") if line =~ /^\s*#{section}\s*=/
  72.       end
  73.       return mismatch
  74.     end
  75.   end
  76.   #=============================================================================
  77.   # ■ BaseItem
  78.   #=============================================================================
  79.   class BaseItem
  80.     #-------------------------------------------------------------------------
  81.     # ○ 读取rmva备注栏字段
  82.     #     section  : 字段名
  83.     #     mismatch : 未匹配时的返回值
  84.     #-------------------------------------------------------------------------
  85.     def read_note(section, mismatch = nil)
  86.       ReadNote.read(self.note, section, mismatch)
  87.     end
  88.   end
  89.   #=============================================================================
  90.   # ■ Actor
  91.   #=============================================================================
  92.   class Actor
  93.     def read_note(section, mismatch = nil)
  94.       ReadNote.read(self.note, section, mismatch)
  95.     end
  96.   end
  97. end

  98. #------------------------------------------------------------------------------
  99. # ■ 以下有关数据判定
  100. #------------------------------------------------------------------------------
  101. module MCCF
  102.   module Ammunition
  103.   
  104.     # 返回当前角色普通攻击消耗的弹药ID,同时作为是否需要弹药的判断标准
  105.     def self.Ammunition_id
  106.       note = $data_weapons[BattleManager.actor.weapons[0].id].read_note('消耗弹药ID')
  107.       if note != nil
  108.         return note
  109.       else
  110.         return false
  111.       end
  112.     end
  113.   
  114.     # 返回当前角色一次攻击消耗的弹药数量
  115.     def self.Ammunition_once
  116.       note = $data_weapons[BattleManager.actor.weapons[0].id].read_note('消耗弹药数量')
  117.       if note != nil
  118.         return note
  119.       elsif MCCF::Ammunition.Ammunition_id
  120.         return 1
  121.       else
  122.         return 0
  123.       end
  124.     end
  125.    
  126.     # 弹药是否足够的判定
  127.     def self.Ammunition_if
  128.       if MCCF::Ammunition.Ammunition_id
  129.         hold = $game_party.item_number($data_items[MCCF::Ammunition.Ammunition_id])
  130.         return hold >= MCCF::Ammunition.Ammunition_once
  131.       else
  132.         return true
  133.       end
  134.     end
  135.   
  136.   end
  137. end
  138. #------------------------------------------------------------------------------
  139. # ■ 以下有关实际的弹药消耗/弹药判断
  140. #------------------------------------------------------------------------------

  141. class Scene_Battle < Scene_Base
  142.   #--------------------------------------------------------------------------
  143.   # ● 指令“攻击”
  144.   #--------------------------------------------------------------------------
  145.   alias _command_attack command_attack
  146.   def command_attack
  147.     _command_attack
  148.     if MCCF::Ammunition.Ammunition_id
  149.       item = $data_items[MCCF::Ammunition.Ammunition_id]
  150.       $game_party.lose_item(item, MCCF::Ammunition.Ammunition_once)
  151.     end
  152.   end
  153. end

  154. class Game_BattlerBase
  155.   #--------------------------------------------------------------------------
  156.   # ● 判定是否能使用普通攻击
  157.   #--------------------------------------------------------------------------
  158.   def attack_usable?
  159.     usable?($data_skills[attack_skill_id]) && MCCF::Ammunition.Ammunition_if && MCCF::Ammunition::CAN_SELECT
  160.   end
  161. end
复制代码
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
669
在线时间
77 小时
注册时间
2022-7-29
帖子
42
3
 楼主| 发表于 2022-10-4 13:30:25 | 只看该作者
换装脚本

  1. =begin

  2.   装备变更行走图 Ace 版 v1.0
  3.   
  4.   ( XP 版作者:亿万星辰 )
  5.   
  6.   素材请使用 png 格式的去底图片
  7.   
  8.   装备样式行走图放在 Graphics\DisplayEquips 文件夹内
  9.   装备的备注里填写 <display 图片名>,装备上以后在行走图上绘制对应的装备样式
  10.   
  11.   可以双持的装备还需要另一个左手持武器的图片
  12.   在原图片的图片名后加“_dual”显示左手拿这个武器的效果
  13.   如果没有这个图片则不显示
  14.   
  15. =end

  16. #-
  17. class Sprite_Player < Sprite_Character
  18.   
  19. EquipDisplayPriority = {
  20.   #各个朝向对应的显示优先级,靠后的显示在最前       人物朝向
  21.   0 => [:body, :armor, :helmet, :weapon, :shield], #下
  22.   1 => [:weapon, :body, :armor, :helmet, :shield], #左
  23.   2 => [:shield, :body, :armor, :helmet, :weapon], #右
  24.   3 => [:body, :weapon, :shield, :armor, :helmet]  #上
  25. }

  26.   def graphic_changed?
  27.     super || equip_changed?
  28.   end
  29.   def equip_changed?
  30.     @character.actor && @character.actor.equip_changed
  31.   end
  32.   #
  33.   def set_character_bitmap
  34.     super
  35.     setup_bitmap_display_equips
  36.   end
  37.   #
  38.   def setup_bitmap_display_equips
  39.     w = @cw * 3
  40.     h = @ch * 4
  41.     i = @character.character_index
  42.     # 创建临时位图
  43.     orig_bitmap = Bitmap.new(w, h)
  44.     orig_bitmap.blt( 0, 0, self.bitmap, Rect.new(i%4*w, i/4*h, w, h) )
  45.     self.bitmap = Bitmap.new(w, h)
  46.     # 绘制装备
  47.     bitmap_draw_equips(orig_bitmap) if @character.actor
  48. #~     if @character == $game_player
  49. #~       $sprite = Sprite.new
  50. #~       $sprite.bitmap = bitmap
  51. #~     end
  52.     orig_bitmap.dispose
  53.   end
  54.   
  55.   #
  56.   def bitmap_draw_equips(orig_bitmap)
  57.     @character.actor.equip_changed = false
  58.     # 创建装备临时位图
  59.     temp_equip_bitmaps = []
  60.     @character.actor.equips.each_with_index {|equip, index|
  61.       img_name = equip ? equip.display_equip_part : nil
  62.       temp_equip_bitmaps.push(
  63.           equip_bitmap(img_name, index == 1 && equip.class == RPG::Weapon)
  64.         )
  65.     }
  66.     dual_wield = @character.actor.dual_wield?
  67.     # 逐层绘制装备
  68.     btmp_rect = Rect.new(0, 0, @cw*3, @ch)
  69.     4.times {|i|
  70.       btmp_rect.y = @ch * i
  71.       EquipDisplayPriority[i].each {|part|
  72.         btmp = equip_part_bitmap(part, temp_equip_bitmaps, orig_bitmap)
  73.         bitmap.blt( 0, btmp_rect.y, btmp, btmp_rect ) if btmp
  74.       }
  75.     }
  76.     # 释放临时位图
  77.     temp_equip_bitmaps.each {|bitmap| bitmap.dispose if bitmap}
  78.   end
  79.   #
  80.   def equip_part_bitmap( part, temp_equip_bitmaps, orig_bitmap )
  81.     case part
  82.     when :body;     orig_bitmap
  83.     when :weapon;   temp_equip_bitmaps[0]
  84.     when :shield;   temp_equip_bitmaps[1]
  85.     when :armor;    temp_equip_bitmaps[2]
  86.     when :helmet;   temp_equip_bitmaps[3]
  87.     end
  88.   end
  89.   def equip_bitmap(img_name, dual_weapon)
  90.     if img_name
  91.       img_file = "Graphics/DisplayEquips/#{img_name}"
  92.       if dual_weapon
  93.         img_dual = img_file + "_dual.png"
  94.         File.exist?(img_dual) ? Bitmap.new(img_dual) : nil
  95.       else
  96.         Bitmap.new(img_file)
  97.       end
  98.     else
  99.       nil
  100.     end
  101.   end
  102.   #
  103.   def update_src_rect
  104.     pattern = @character.pattern < 3 ? @character.pattern : 1
  105.     sx = pattern * @cw
  106.     sy = (@character.direction - 2) / 2 * @ch
  107.     self.src_rect.set(sx, sy, @cw, @ch)
  108.   end
  109.   #
  110.   
  111.   def dispose
  112.     bitmap.dispose
  113.     super
  114.   end
  115. end


  116. module RPG
  117.   class Weapon
  118.     def display_equip_part
  119.       @note =~ /<display.(\S+)>/
  120.       return $1
  121.     end
  122.   end
  123.   class Armor
  124.     def display_equip_part
  125.       @note =~ /<display.(\S+)>/
  126.       return $1
  127.     end
  128.   end
  129. end

  130. #-
  131. class Game_Actor
  132. attr_accessor\
  133. :equip_changed

  134.   alias_method :display_equip_change_equip, :change_equip
  135.   def change_equip(slot_id, item)
  136.     display_equip_change_equip(slot_id, item)
  137.     @equip_changed = true
  138.   end
  139. end

  140. class Game_Character

  141. end


  142. #-
  143. class Spriteset_Map
  144.   def create_characters # 覆盖
  145.     @character_sprites = []
  146.     $game_map.events.values.each do |event|
  147.       @character_sprites.push(Sprite_Character.new(@viewport1, event))
  148.     end
  149.     $game_map.vehicles.each do |vehicle|
  150.       @character_sprites.push(Sprite_Character.new(@viewport1, vehicle))
  151.     end
  152.     $game_player.followers.reverse_each do |follower|
  153.       @character_sprites.push(Sprite_Player.new(@viewport1, follower))
  154.     end
  155.     @character_sprites.push(Sprite_Player.new(@viewport1, $game_player))
  156.     @map_id = $game_map.map_id
  157.   end
  158. end
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-28 06:58

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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