设为首页收藏本站同能贴吧 切换语言 繁体中文
开启辅助访问 切换到窄版
扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 76|回复: 0

[转载发布] SkkillUses XP

[复制链接]
累计送礼:
0 个
累计收礼:
1 个
  • TA的每日心情
    开心
    前天 04:10
  • 签到天数: 209 天

    连续签到: 2 天

    [LV.7]常住居民III

    4471

    主题

    864

    回帖

    2万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    7
    卡币
    22949
    OK点
    16
    推广点
    0
    同能卷
    50
    积分
    28314

    灌水之王

    发表于 6 天前 | 显示全部楼层 |阅读模式
    SkkillUses XP

    by Kyonides Arkanthes



    Introduction

    This scriptlet allows you to set a skill use system instead of consuming mana!


    It even allows you to set different use maximums for actors and enemies!



    skills.default = Number
    It lets you set a default maximum for actors and enemies in that order!

    It's mainly because it appears twice in my script.



    Warning!

    It overwrites a few default methods and aliases some other methods like initialize.

    Script
                    Code:        
    # * SkkillUses XP Default Version #   Scripter : Kyonides Arkanthes #   v1.0.0 - 2019-12-22  # * Script Calls * #  # Get an Actor #   battler = $game_party.actors[Index] # Get an Enemy #   battler = $game_troop.enemies[Index] # Change Skill Use Maximum - Checks Max and returns the New Maximum #   battler.change_skill_use_max(Skill_ID, USES_MAX) # Replenishes a Skill's Use Max #   battler.refill_skill_use(Skill_ID, USES) # Replenishes Skills' Use Max #   battler.refill_skill_uses  module Skkill   USES = { :actor => {}, :enemy => {} }   # Actors' Skill IDs   skills = USES[:actor]   skills.default = 3   skills[1] = 5   skills[57] = 5   # Enemies' Skill IDs   skills = USES[:enemy]   skills.default = 3   skills[1] = 5 end  class Game_Battler   def skill_can_use?(skill_id)     return false if dead? or self.skill_uses[skill_id] == 0     return false if $data_skills[skill_id].atk_f == 0 and self.restriction == 1     occasion = $data_skills[skill_id].occasion     if $game_temp.in_battle       return (occasion == 0 or occasion == 1)     else       return (occasion == 0 or occasion == 2)     end   end    def change_skill_use_max(sid, new_max)     temp_max = [@skill_use_max[sid], 0].max     @skill_use_max[sid] = [new_max, temp_max].min     skill_use_max(sid)   end    def refill_skill_use(sid, uses)     @skill_uses[sid] = [@skill_uses[sid] + uses, skill_use_max(sid)].min   end    def refill_skill_uses     @skill_uses.keys.each{|sid| @skill_uses[sid] = skill_use_max(sid) }   end   def skill_use_max(sid) Skkill::USES[kind][sid] + @skill_use_max[sid] end   def skill_use(sid) @skill_uses[sid] -= 1 end   attr_reader :skill_uses end  class Game_Actor   alias :kyon_skilluses_gm_actor_init :initialize   def initialize(actor_id)     kyon_skilluses_gm_actor_init(actor_id)     @skill_uses = {}     @skill_use_max = {}     @skill_use_max.default = 0     @skills.each{|sid| @skill_uses[sid] = Skkill::USES[:actor][sid] }   end    def kind() :actor end end  class Game_Enemy   alias :kyon_skilluses_gm_enemy_init :initialize   def initialize(troop_id, member_index)     kyon_skilluses_gm_enemy_init(troop_id, member_index)     @skill_uses = {}     @skill_use_max = {}     @skill_use_max.default = 0     $data_enemies[@enemy_id].actions.each do |action|       next if action.kind != 1       sid = action.skill_id       @skill_uses[sid] = Skkill::USES[:enemy][sid]     end   end   def kind() :enemy end end  class Window_Skill   def draw_item(index)     skill = @data[index]     usable = @actor.skill_can_use?(skill.id)     self.contents.font.color = usable ? normal_color : disabled_color     x = 4 + index % 2 * (288 + 32)     y = index / 2 * 32     rect = Rect.new(x, y, self.width / @column_max - 32, 32)     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))     bitmap = RPG::Cache.icon(skill.icon_name)     opacity = self.contents.font.color == normal_color ? 255 : 128     uses = @actor.skill_uses[skill.id].to_s     use_max = @actor.skill_use_max(skill.id).to_s     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)     self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)     self.contents.draw_text(x + 200, y, 48, 32, uses, 2)     self.contents.draw_text(x + 248, y, 8, 32, '/')     self.contents.draw_text(x + 256, y, 48, 32, use_max)   end end  class Scene_Skill   def update_skill     if Input.trigger?(Input::B)       $game_system.se_play($data_system.cancel_se)       $scene = Scene_Menu.new(1)       return     elsif Input.trigger?(Input::C)       @skill = @skill_window.skill       unless @skill and @actor.skill_can_use?(@skill.id)         return $game_system.se_play($data_system.buzzer_se)       end       $game_system.se_play($data_system.decision_se)       if @skill.scope >= 3         @skill_window.active = false         @target_window.x = (@skill_window.index + 1) % 2 * 304         @target_window.visible = true         @target_window.active = true         if @skill.scope == 4 || @skill.scope == 6           @target_window.index = -1         elsif @skill.scope == 7           @target_window.index = @actor_index - 10         else           @target_window.index = 0         end         return       else         if @skill.common_event_id > 0           $game_temp.common_event_id = @skill.common_event_id           $game_system.se_play(@skill.menu_se)           @actor.skill_use(@skill.id)           @status_window.refresh           @skill_window.refresh           @target_window.refresh           return $scene = Scene_Map.new         end       end     elsif Input.trigger?(Input::R)       $game_system.se_play($data_system.cursor_se)       @actor_index += 1       @actor_index %= $game_party.actors.size       return $scene = Scene_Skill.new(@actor_index)     elsif Input.trigger?(Input::L)       $game_system.se_play($data_system.cursor_se)       @actor_index += $game_party.actors.size - 1       @actor_index %= $game_party.actors.size       $scene = Scene_Skill.new(@actor_index)     end   end    def update_target     if Input.trigger?(Input::B)       $game_system.se_play($data_system.cancel_se)       @skill_window.active = true       @target_window.visible = false       @target_window.active = false       return     end     if Input.trigger?(Input::C)       unless @actor.skill_can_use?(@skill.id)         return $game_system.se_play($data_system.buzzer_se)       end       if @target_window.index == -1         used = false         for i in $game_party.actors           used |= i.skill_effect(@actor, @skill)         end       end       if @target_window.index <= -2         target = $game_party.actors[@target_window.index + 10]         used = target.skill_effect(@actor, @skill)       end       if @target_window.index >= 0         target = $game_party.actors[@target_window.index]         used = target.skill_effect(@actor, @skill)       end       if used         $game_system.se_play(@skill.menu_se)         @actor.skill_use(@skill.id)         @status_window.refresh         @skill_window.refresh         @target_window.refresh         return $scene = Scene_Gameover.new if $game_party.all_dead?         if @skill.common_event_id > 0           $game_temp.common_event_id = @skill.common_event_id           return $scene = Scene_Map.new         end       end       $game_system.se_play($data_system.buzzer_se) unless used     end   end end  class Scene_Battle   def make_skill_action_result     @skill = $data_skills[@active_battler.current_action.skill_id]     unless @active_battler.current_action.forcing       unless @active_battler.skill_can_use?(@skill.id)         $game_temp.forcing_battler = nil         return @phase4_step = 1       end     end     @active_battler.skill_use(@skill.id)     @status_window.refresh     @help_window.set_text(@skill.name, 1)     @animation1_id = @skill.animation1_id     @animation2_id = @skill.animation2_id     @common_event_id = @skill.common_event_id     set_target_battlers(@skill.scope)     @target_battlers.each{|target| target.skill_effect(@active_battler, @skill)}   end end


    Terms & Condition

    You can freely use it in non commercial games except for anybody that got a nickname, namely Silly.


    You must include my nickname in your game credits!
    Include the URL of the website where you found my script!
    Give me a free copy of your completed game if you include at least 2 of my scripts!



    本贴来自国际rpgmaker官方论坛作者:kyonides处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/skkilluses-xp.116520/

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

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

    本版积分规则

    简体中文
    繁體中文
    English(英语)
    日本語(日语)
    Deutsch(德语)
    Русский язык(俄语)
    بالعربية(阿拉伯语)
    Türkçe(土耳其语)
    Português(葡萄牙语)
    ภาษาไทย(泰国语)
    한어(朝鲜语/韩语)
    Français(法语)
    关闭

    幸运抽奖

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

    立即查看

    聊天机器人
    Loading...

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

    GMT+8, 2026-7-14 17:57 , Processed in 0.116951 second(s), 52 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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