扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 56|回复: 0

[转载发布] 冒头,哪位大佬能帮忙加个确定窗口

[复制链接]
累计送礼:
0 个
累计收礼:
0 个
  • TA的每日心情
    开心
    2025-2-4 02:05
  • 签到天数: 110 天

    连续签到: 2 天

    [LV.6]常住居民II

    2327

    主题

    395

    回帖

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    6
    卡币
    10465
    OK点
    16
    推广点
    0
    同能卷
    0
    积分
    13215

    灌水之王

    发表于 7 天前 | 显示全部楼层 |阅读模式
    这是按两次CTRL删除技能的脚本,但总觉得差点儿什么,哪位大佬能帮忙向下边那个道具舍弃的脚本一样,添加个弹出是否确认删除技能的窗口
    #==============================================================================
    # ■ Scene_Skill
    #==============================================================================
    class Scene_Skill < Scene_ItemBase
      #--------------------------------------------------------------------------
      # ● アイテムウィンドウの作成
      #--------------------------------------------------------------------------
      def create_item_window
        wx = 0
        wy = @status_window.y + @status_window.height
        ww = Graphics.width
        wh = Graphics.height - wy
        @item_window = Window_SkillList.new(wx, wy, ww, wh)
        @item_window.actor = @actor
        @item_window.viewport = @viewport
        @item_window.help_window = @help_window
        @item_window.set_handler(:ok,     method(:on_item_ok))
        @item_window.set_handler(:cancel, method(:on_item_cancel))
        @item_window.set_handler(:CTRL,   method(:on_item_del))
        @command_window.skill_window = @item_window
      end
      #--------------------------------------------------------------------------
      # ● スキルを忘れる
      #--------------------------------------------------------------------------
      def on_item_del
        if !item.nil?
          skill_id = item.id
          @actor.forget_skill(skill_id)
          @item_window.refresh
        end
      end
    end
    #==============================================================================
    # ■ Game_Actor
    #==============================================================================
    class Game_Actor < Game_Battler
      #--------------------------------------------------------------------------
      # ● スキルを忘れる
      #--------------------------------------------------------------------------
      alias _forget_skill_copy forget_skill
      def forget_skill(skill_id)
        _forget_skill_copy(skill_id)
        @copy_skills.delete(skill_id)
      end
    end
    #==============================================================================
    # ■ Window_Selectable
    #==============================================================================
    class Window_Selectable < Window_Base
      #--------------------------------------------------------------------------
      # ● 決定やキャンセルなどのハンドリング処理
      #--------------------------------------------------------------------------
      def process_handling
        return unless open? && active
        return process_ok       if ok_enabled?        && Input.trigger?(:C)
        return process_cancel   if cancel_enabled?    && Input.trigger?(:B)
        return process_pagedown if handle?(:pagedown) && Input.trigger?(:R)
        return process_pageup   if handle?(:pageup)   && Input.trigger?(:L)
        return process_ctrl     if Input.trigger?(:CTRL)
      end
      #--------------------------------------------------------------------------
      # ● CTRL ボタン(CTRL)が押されたときの処理
      #--------------------------------------------------------------------------
      def process_ctrl
        Sound.play_ok
        if Time.now - (@last_ctrl_time || Time.at(0)) < 1
          Sound.play_ok
          Input.update
          call_handler(:CTRL)
          @last_ctrl_time = nil
        else
          @last_ctrl_time = Time.now
        end
      end
    end

    #==============================================================================
    # ■ Window_ItemList
    #==============================================================================
    class Window_ItemList < Window_Selectable
      #--------------------------------------------------------------------------
      # ● 決定やキャンセルなどのハンドリング処理
      #--------------------------------------------------------------------------
      def process_handling
        return unless open? && active
        return call_handler(:append_ctrl) if handle?(:append_ctrl) && Input.trigger?(:CTRL)
        super
      end
    end
    #==============================================================================
    # ■ Window_ItemNumber
    #==============================================================================
    class Window_ItemNumber < Window_ShopNumber
      #--------------------------------------------------------------------------
      # ● 公開インスタンス変数
      #--------------------------------------------------------------------------
      attr_reader   :number                   # 入力された個数
      #--------------------------------------------------------------------------
      # ● オブジェクト初期化
      #--------------------------------------------------------------------------
      def initialize
        x = (Graphics.width - window_width) / 2
        super(x, 200, line_height * 2 + 32)
        @item = nil
        @Max = 1
        @number = 1
      end
      #--------------------------------------------------------------------------
      # ● アイテム、最大個数の設定
      #--------------------------------------------------------------------------
      def set(item, max)
        @item = item
        @max = max
        @number = 1
        refresh
      end
      #--------------------------------------------------------------------------
      # ● リフレッシュ
      #--------------------------------------------------------------------------
      def refresh
        contents.clear
        contents.draw_text(0, 0, 200, line_height, "捨てる数:")
        draw_item_name(@item, 4, line_height)
        draw_number
      end
      #--------------------------------------------------------------------------
      # ● アイテム名表示行の Y 座標
      #--------------------------------------------------------------------------
      def item_y
        line_height
      end
    end
    #==============================================================================
    # ■ Scene_Item
    #==============================================================================
    class Scene_Item < Scene_ItemBase
      #--------------------------------------------------------------------------
      # ● 開始処理
      #--------------------------------------------------------------------------
      alias start_dump start
      def start
        start_dump
        create_item_dump_window
      end
      #--------------------------------------------------------------------------
      # ● アイテムウィンドウの作成
      #--------------------------------------------------------------------------
      alias create_item_window_dump create_item_window
      def create_item_window
        create_item_window_dump
        @item_window.set_handler(:append_ctrl, method(:on_item_dump))
      end
      #--------------------------------------------------------------------------
      # ● アイテム数選択ウィンドウの作成
      #--------------------------------------------------------------------------
      def create_item_dump_window
        @number_window = Window_ItemNumber.new
        @number_window.viewport = @viewport
        @number_window.hide
        @number_window.set_handler(:ok,     method(:on_number_ok))
        @number_window.set_handler(:cancel, method(:on_number_cancel))
      end
      #--------------------------------------------------------------------------
      # ● アイテム[捨てる]
      #--------------------------------------------------------------------------
      def on_item_dump
        if item_dumpable?
          Sound.play_ok
          if Time.now - (@last_ctrl_time || Time.at(0)) < 1
            Sound.play_ok
            @number_window.set(item, max_item)
            @number_window.show.activate
            @item_window.deactivate
            @last_ctrl_time = nil
          else
            @last_ctrl_time = Time.now
          end
        else
          Sound.play_buzzer
        end
      end
      #--------------------------------------------------------------------------
      # ● 個数入力[決定]
      #--------------------------------------------------------------------------
      def on_number_ok
        Sound.play_ok
        do_item_dump(@number_window.number)
        @number_window.hide
        activate_item_window
      end
      #--------------------------------------------------------------------------
      # ● 個数入力[キャンセル]
      #--------------------------------------------------------------------------
      def on_number_cancel
        Sound.play_cancel
        @number_window.hide
        activate_item_window
      end
      #--------------------------------------------------------------------------
      # ● 捨てるの実行
      #--------------------------------------------------------------------------
      def do_item_dump(number)
        $game_party.lose_item(item, number)
      end
      #--------------------------------------------------------------------------
      # ● アイテムを捨てる判定
      #--------------------------------------------------------------------------
      def item_dumpable?
       item.is_a?(RPG::Item) ? !item.key_item? : (!item.nil?)
      end
      #--------------------------------------------------------------------------
      # ● 所持数の取得
      #--------------------------------------------------------------------------
      def max_item
        $game_party.item_number(item)
      end
    end
                本帖来自P1论坛作者间桐樱,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=496874  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2025-3-10 19:30 , Processed in 0.136588 second(s), 53 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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