设为首页收藏本站同能贴吧 切换语言 繁体中文
开启辅助访问 切换到窄版
搜索附件  
同能RPG制作大师 › 附件中心 › 同能RM技术讨论区 › RPG Maker XP 讨论区 › SkkillUses XP: SkkillUses XP-2.gif

SkkillUses XP: SkkillUses XP-2.gif

 

SkkillUses XP:
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/
SkkillUses XP: SkkillUses XP-2.gif
         同一主题附件:
    SkkillUses XP-1.gif
    SkkillUses XP-2.gif
    SkkillUses XP-4.gif
    SkkillUses XP-5.gif
简体中文
繁體中文
English(英语)
日本語(日语)
Deutsch(德语)
Русский язык(俄语)
بالعربية(阿拉伯语)
Türkçe(土耳其语)
Português(葡萄牙语)
ภาษาไทย(泰国语)
한어(朝鲜语/韩语)
Français(法语)
关闭

幸运抽奖

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

立即查看

Loading...

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

GMT+8, 2026-10-3 11:44 , Processed in 0.063118 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部