Jump to content

AD-Blocker detected, please disable your ad-blocker when surfing in makerando.com - There is no invasive Ad.

 

  • Chatbox

    You don't have permission to chat.
    Load More
Sign in to follow this  

Recommended Posts

Nome Script: MMO_Skill level by use

Versione: 1.01

Autore/i: Kentaro

 

Informazioni:

Bella lì.

Scommetto che tutti voi conoscete, che dico, avete realizzato PER ANNI giochi con questo script di Tomoaky:

http://hikimoki.saku....jp/zip/mmo.zip

Praticamente, crea una sorta di gioco in stile Ragnarok online (ma...offline; chiaro no?)

 

Bene.

Ho realizzato una piccola snippet per questo sistema che permette di impostare un livello per ciascuna skill, modificandone alcuni

parametri; ogni volta che usi la skill, aumenti i punti exp di +1; quando raggiungi la quantità stabilita (puoi creare una curva di exp) la skill aumenta il proprio livello e modifica i parametri secondo le impostazioni:

 

# skill#ID; [dmg, mp, atk_f, spi_f, exp, curve, maxlv]
when 33; return [ 9, 2, 0, 3, 3, 3, 10] # Heal
when 67; return [ 4, 1, 2, 1, 4, 2, 6] # Thunder
Es. la skill con ID#67, per livello, aumenta il proprio danno di 4, il consumo mp di 1, atk_f di 2, spi_f di 1, exp necessaria per aumentare livello è di base 4 ed aumenta di 2 (curve) per livello, fino ad un livello max di 6.

 

Istruzioni:

Istruzioni nello script. Si, le ho scritte in inglese. No, non ve lo traduco: imparatevelo, che vi fa bene. X-D

Cheerio,

Ken

 

http://pastebin.com/NUYq8J6e

 

Script:

#==============================================================================
# MMO_Skill level by use [v1.01]
# by Kentaro, 2013
# credits: 시옷전사(SiotWarrior)
# License: Creative Commons BY-NC
#==============================================================================
# Snippet for Tomoaky's MMO v.(09/10/24) [url="http://hikimoki.sakura.ne.jp/"]http://hikimoki.sakura.ne.jp/[/url]
#------------------------------------------------------------------------------
# This is a snippet for Tomoaky's MMO.
# Each skill can gain level after x times you use it; for each level, damage and
# mp cost, atk_f and spi_f, will increase.
#
# Plug&play: put it below Tomo's MMO. Setup Constants.
# Under self.skill_perlevel, you set up the skills you want to levelup. Skill
# gains 1 exp each time you use it: if you set 6 exp needed, you'll levelup
# the skill the 7th time you use it.
#==============================================================================

#------------------------------------------------------------------------------
# * KEN::SkillLvl
#------------------------------------------------------------------------------
module KEN
  module SkillLvl
	#--------------------------------------------------------------------------
	# Constants
	#--------------------------------------------------------------------------
	SKILL_LVL_ON = true						  # use skill levels? true/false
	
	LVLUP_TXT = "Skill %s has reached level %d!" # text when skill lvup
	
	LVLUP_CLR = Color.new(180, 130, 255)		 # levelup text colour
	
	NOLVL_SKILL_TEXT = ""   # if skill has no levelgain, instead of level number
							# this text appears...
				
	NOLVL_SKILL_COL = Color.new(48, 48, 48, 128) # ...with this colour
	
	#--------------------------------------------------------------------------
	# ● self.skill_perlevel(skill_id)
	# ex. skill#67 (Thunder) will level up the 5th time its used (it has exp to
	# levelup = 4), mp cost +1/lv; damage +4/lv; atk_f +2/lv; spi_f +1/lv.
	# Each time the skill levels up, the exp needed will rise by 2 (curve):
	# to lv 1 = exp needed 3
	# to lv 2 = exp needed 5
	# to lv 3 = exp needed 7 etc.
	# Then, setup the max level the skill can reach. Ex. skill#67 maxlv is 6.
	#--------------------------------------------------------------------------
	def self.skill_perlevel(skill_id)
	  case skill_id
	  # skill#ID;	 [dmg, mp, atk_f, spi_f, exp, curve, maxlv]
	  when 33; return [  9,  2,	 0,	 3,   3,	 3,	10]  # Heal
	  when 67; return [  4,  1,	 2,	 1,   4,	 2,	 6]  # Thunder
	  else
		# default: skill gain level but nothing changes
		return [0, 0, 0, 0, 0, 0, 0]
	  end
	end
  end
end

#-----------------------------------------------------------------------------
# * RPG::Skill
#-----------------------------------------------------------------------------
module RPG
  class Skill < UsableItem
	def base_damage
	  if @base_damage > 0
		return [[@base_damage + ((skill_level) * (KEN::SkillLvl.skill_perlevel(@id)[0])), 9999].min, 0].max
	  elsif @base_damage < 0
		return [[@base_damage - ((skill_level) * (KEN::SkillLvl.skill_perlevel(@id)[0])), -9999].max, 0].min
	  else
		return @base_damage
	  end
	end
	def mp_cost
	  return [[@mp_cost + ((skill_level) * (KEN::SkillLvl.skill_perlevel(@id)[1])), 9999].min, 0].max
	end
	# remember: max atk_f/spi_f is 200
	def atk_f
	  return [[@atk_f + ((skill_level) * (KEN::SkillLvl.skill_perlevel(@id)[2])), 200].min, 0].max
	end
	def spi_f
	  return [[@[member=Spiderman 2099]_f + ((skill_level) * (KEN::SkillLvl.skill_perlevel(@id)[3])), 200].min, 0].max
	end
	#--
	def skill_level
	  @skill_level = 0 if @skill_level == nil
	  return @skill_level
	end
	def skill_max_level
	  return (KEN::SkillLvl.skill_perlevel(@id)[6])
	end
	def change_skill_level(skill_lvl)
	  if skill_lvl > (KEN::SkillLvl.skill_perlevel(@id)[6])
		@skill_level = (KEN::SkillLvl.skill_perlevel(@id)[6])
	  else
		@skill_level = [skill_lvl, 0].max
	  end
	end
	def raise_skill_level
	  @skill_level = 0 if @skill_level == nil
	  change_skill_level(@skill_level + 1)
	  $game_temp.shortwin_refresh = true
	  $game_temp.skillwin_refresh = true
	  text = sprintf(KEN::SkillLvl::LVLUP_TXT, @name, @skill_level)
	  $game_temp.add_message(text, KEN::SkillLvl::LVLUP_CLR)
	end
	#--
	def skill_exp
	  @skill_exp = 0 if @skill_exp == nil
	  return @skill_exp
	end
	def change_skill_exp(skill_exp)
	  @skill_exp = 0 if @skill_exp == nil
	  base_exp = (KEN::SkillLvl.skill_perlevel(@id)[4])
	  curve_exp = ((KEN::SkillLvl.skill_perlevel(@id)[5]) * (skill_level))
	  exp_needed =  base_exp + curve_exp
	  if @skill_exp != exp_needed
		@skill_exp = [skill_exp, 0].max
	  else
		raise_skill_level
		@skill_exp = 0
	  end
	end
	def raise_skill_exp
	  @skill_exp = 0 if @skill_exp == nil
	  change_skill_exp(@skill_exp + 1)
	end
  end
end
#-----------------------------------------------------------------------------
# * Class Game_Character
#-----------------------------------------------------------------------------
class Game_Character
  alias ken_skill_event skill_event
  def skill_event(target)
	ken_skill_event(target)
	@target_obj.raise_skill_exp if KEN::SkillLvl::SKILL_LVL_ON
  end
end
#-----------------------------------------------------------------------------
# * class Sprite_SkillWindow
#-----------------------------------------------------------------------------
class Sprite_SkillWindow < Sprite_Window
  def refresh
	@data = []
	for skill in @actor.skills
	  @data.push(skill)
	end
	@item_max = @data.size
	line = line_num			 # 表示行数
	line_max = line_num_max	 # 全行数
	@index_line = [line_max - line, 0].max if @index_line + line > line_max
	self.bitmap.clear_rect(0, 12, self.width, self.height - 16)
	rect = Rect.new(0, 16, 192, 24)
	for i in 0...line
	  self.bitmap.blt(0, i * 24 + 16, @bitmap, rect)
	end
	self.bitmap.blt(0, 12, @bitmap, rect.set(0, 12, 192, 4))
	return if @item_max == 0				# 表示するアイテムがなければ終了
	for i in 0...line * 7
	  break if i == @item_max - @index_line * 7
	  icon_index = @data[@index_line * 7 + i].icon_index
	  rect.set(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
	  self.bitmap.blt(i % 7 * 24 + 12, i / 7 * 24 + 16, @bitmap_icon, rect)
	  #ken --------------------------------------------------------------- begin
	  sl = @data[@index_line * 7 + i].skill_level
	  sml = @data[@index_line * 7 + i].skill_max_level
	  self.bitmap.font.size = 12
	  if sl == sml
		self.bitmap.font.color = Color.new(255, 0, 0)
	  else
		self.bitmap.font.color = Color.new(220, 220, 220)
	  end
	  if sl == 0 and sml == 0
		sl = KEN::SkillLvl::NOLVL_SKILL_TEXT
		self.bitmap.font.color = KEN::SkillLvl::NOLVL_SKILL_COL
	  end
	  self.bitmap.draw_text(i % 7 * 24 + 12, i / 7 * 24 + 16, 24, 12, sl.to_s, 2)
	  #ken ----------------------------------------------------------------- end
	end
	refresh_scroll(line, line_max)	  # スクロールバーの描画
	$game_temp.skillwin_refresh = false		# 再描画フラグを倒す
  end
end
#-----------------------------------------------------------------------------
# * class Sprite_ShortWindow
#-----------------------------------------------------------------------------
class Sprite_ShortWindow < Sprite_Window
  # overwritten method
  def refresh
	rect = Rect.new(12, 16, 120, 24)
	self.bitmap.clear_rect(rect)
	self.bitmap.blt(rect.x, rect.y, @bitmap, rect)
	rect.set(0, 0, 24, 24)
	self.bitmap.font.size = 12
	for i in 0...5
	  obj = get_icon_obj(i)
	  next if obj == nil
	  if $game_variables[44 + i * 2] == 4
		# オブジェクトがスキルの場合
		# se obj è una skill
		n = obj.skill_level #ken
		flag = true
	  else
		# オブジェクトがアイテム(武器、防具含む)の場合
		n = $game_party.item_number(obj)
		flag = n > 0
	  end
	  rect.set(obj.icon_index % 16 * 24, obj.icon_index / 16 * 24, 24, 24)
	  self.bitmap.blt(i * 24 + 12, 16, @bitmap_icon, rect, flag ? 255 : 128)
	  self.bitmap.draw_text(i * 24 + 12, 28, 24, 12, n.to_s, 2) if flag
	end
	$game_temp.shortwin_refresh = false		# 再描画フラグを倒す
  end
end
#------------------------------------------------------------------------------
# * class Scene_File
#------------------------------------------------------------------------------
class Scene_File < Scene_Base
  # alias method
  alias ken_write_save_data write_save_data
  def write_save_data(file)
	ken_write_save_data(file)
	Marshal.dump($data_skills, file)
  end
  # alias method
  alias ken_read_save_data read_save_data
  def read_save_data(file)
	ken_read_save_data(file)
	$data_skills = Marshal.load(file)
  end
end

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By KenzaMe92
      Nome Script: KZM - Limit
      Versione: 1.0
      Autore:
      Descrizione:
      Questo script aggiunge la barra del limit e le abilità usate con questa barra in stile FFVII.
       
      Istruzioni:
      Installare sotto "▼ Materials" e sopra "▼ Main", dopodiché nel database creare un nuovo tipo di tecniche, chiamato limit e per ogni tecnica inserita in quel tipo, mettere il seguente tag nelle note dell'abilità:
              <limit>
      per farla riconoscere dallo script e permetterne l'uso solo a barra completamente carica.
       
      Screenshot:
      Devo ancora farne uno decente.
       
      Script:
      Pastebin [guarda] o [scarica]
       
      Bug e Conflitti Noti:
      Nessuno
       
      Note dell'autore:
      Condividetelo, usatelo nei vostri progetti free o commerciali, l'importante è creditare l'autore.
    • By Ally
      Nome Script: Crystal Engine - Mimic
      Versione: N/D
      Autore/i: Crystal Noel
       
      Informazioni:
      Questo script fornisce due abilità da utilizzare in battaglia. Uno degli effetti copia semplicemente l'effetto e lo utilizza sul nemico. L'altra mossa è quella di mimare l'abilità fino alla fine della battaglia.
       
      Features:
      - Imparare temporaneamente (sostituisce l'abilità mimica fino alla fine della battaglia)
      - Copia Azione (Copia l'azione del bersaglio)
       
      Istruzioni:
      Script e istruzioni all'interno della demo.
       
      Nel note tag dei nemici, impostate in questo modo a seconda delle vostre esigenze:
       
      <mimic> Imposta la capacità di copiare l'ultima azione del bersaglio
       
      <borrow move> Imposta la capacità di prendere in prestito l'ultima abilità del bersaglio per il resto della battaglia
       
      Utilizzate questa opzione se desiderate che i nemici siano in grado di prendere in 'prestito' anche le abilità:
       
       
      class RPG::Enemy < RPG::BaseItem def actions set = [] set += @actions ids = [] set.each {|action| ids.push(action.skill_id)} $data_skills.each do |skill| next if skill.nil? action = RPG::Enemy::Action.new action.skill_id = skill.id set.push(action) unless ids.include?(skill.id) end set endend Demo:http://crystalnoel42.wordpress.com/2013/06/10/crystal-engine-mimic/
    • By Ally
      Nome Script: Actor Battler Graphics
      Versione: 1.05
      Autore/i: Victor Sant
       
      Informazioni:
      Bisogna avere lo script "Victor's Engine - Basic Module" installato per far funzionare gli script di Victor.
      http://victorscripts.wordpress.com/rpg-maker-vx-ace/basic-scripts/basic-module/
       
      Istruzioni:
      Lo script va inserito sotto la sezione "Materials" e sotto lo script *NECESSARIO* "Victor's Engine - Basic Module"
      LE ISTRUZIONI SONO ALL'INTERNO DELLO SCRIPT
       
      Script:
       
       
      #==============================================================================# ** Victor Engine - Actors Battlers#------------------------------------------------------------------------------# Author : Victor Sant## Version History:# v 1.00 - 2011.12.19 > First relase# v 1.01 - 2011.12.30 > Faster Regular Expressions# v 1.02 - 2012.01.15 > Compatibility with Target Arrow# v 1.03 - 2012.01.28 > Compatibility with Animated Battle# v 1.04 - 2012.03.11 > Added position distance settings# v 1.05 - 2012.03.17 > Fixed battle test glitch#------------------------------------------------------------------------------# This script adds visible battler graphics for the party actors actors# during combat. With the visible battlers, new options will be available# like setting actor's battlers positions and attack animations.#------------------------------------------------------------------------------# Compatibility# Requires the script 'Victor Engine - Basic Module' v 1.11 or higher# If used with 'Victor Engine | Animated Battle' paste this one bellow it.# # * Overwrite methods (Default)# class Spriteset_Battle# def create_actors# def update_actors## class Scene_Battle < Scene_Base# def show_attack_animation(targets)## * Alias methods (Default)# class << DataManager# def setup_new_game# def create_game_objects# def make_save_contents# def extract_save_contents(contents)## class Game_Actor < Game_Battler# def setup(actor_id)## * Alias methods (Basic Module)# class Game_Interpreter# def comment_call##------------------------------------------------------------------------------# Instructions:# To instal the script, open you script editor and paste this script on# a new section on bellow the Materials section. This script must also# be bellow the script 'Victor Engine - Basic'##------------------------------------------------------------------------------# Comment calls note tags:# Tags to be used in events comment box, works like a script call.# # <battler name id: x># This tag allows to change the actor battler graphic.# id : actor ID# x : battler graphic filename## <battler hue id: x># This tag allows to change the actor battler graphic.# id : actor ID# x : battler graphic hue (0-360)## <battler position i: x, y># This tag allows to change the battler position during combat.# only valid if VE_BATTLE_FORMATION = :custom# i : position index# x : new coorditante X# y : new coorditante X##------------------------------------------------------------------------------# Actors note tags:# Tags to be used on the Actors note box in the database## <battler name: x># This tag allows to set the initial battler graphic filename for the actor.# x : battler graphic filename## <battler hue: x># This tag allows to set the initial battler graphic hur for the actor.# x : battler graphic hue (0-360)##------------------------------------------------------------------------------# Enemies note tags:# Tags to be used on the Enemies note box in the database## <attack animation: x># This tag allows to set the normal attack animation for the enemy# x : animation ID# #==============================================================================#==============================================================================# ** Victor Engine#------------------------------------------------------------------------------# Setting module for the Victor Engine#==============================================================================module Victor_Engine #-------------------------------------------------------------------------- # * Set the battle formation # Choose here how the actors battlers will be placed on the combat. # :front : horizontal placement # :side : vertical placement # :iso : isometric placement # :custom : custom placement #-------------------------------------------------------------------------- VE_BATTLE_FORMATION = :front #-------------------------------------------------------------------------- # * Set battler centralization # When true, battlers are centralized automatically. # Not valid if VE_BATTLE_FORMATION = :custom #-------------------------------------------------------------------------- VE_BATTLE_CENTRALIZE = true #-------------------------------------------------------------------------- # * Set battlers custom positions # Only if VE_BATTLE_FORMATION = :custom, allows to set the position of # all party actors, don't forget to add values for all positions # available if using a party bigger than the default. #-------------------------------------------------------------------------- VE_CUSTOM_POSITION = { # Position 1 => {x: 460, y: 180}, # Position for the first actor. 2 => {x: 480, y: 210}, # Position for the second actor. 3 => {x: 500, y: 240}, # Position for the thrid actor. 4 => {x: 520, y: 270}, # Position for the fourth actor. } # Don't remove #-------------------------------------------------------------------------- # * Actors battlers position adjust # Used to adjust the position of all actors battlers. #-------------------------------------------------------------------------- VE_POSITION_ADJUST = {x: 0, y: 0} #-------------------------------------------------------------------------- # * Actors battlers position adjust # Used to adjust the position of all actors battlers. #-------------------------------------------------------------------------- VE_DISTANCE_ADJUST = {x: 48, y: 32} #-------------------------------------------------------------------------- # * required # This method checks for the existance of the basic module and other # VE scripts required for this script to work, don't edit this #-------------------------------------------------------------------------- def self.required(name, req, version, type = nil) if !$imported[:ve_basic_module] msg = "The script '%s' requires the scriptn" msg += "'VE - Basic Module' v%s or higher above it to work properlyn" msg += "Go to http://victorscripts.wordpress.com/ to download this script." msgbox(sprintf(msg, self.script_name(name), version)) exit else self.required_script(name, req, version, type) end end #-------------------------------------------------------------------------- # * script_name # Get the script name base on the imported value, don't edit this #-------------------------------------------------------------------------- def self.script_name(name, ext = "VE") name = name.to_s.gsub("_", " ").upcase.split name.collect! {|char| char == ext ? "#{char} -" : char.capitalize } name.join(" ") endend$imported ||= {}$imported[:ve_actor_battlers] = 1.04Victor_Engine.required(:ve_actor_battlers, :ve_basic_module, 1.11, :above)#==============================================================================# ** DataManager#------------------------------------------------------------------------------# This module handles the game and database objects used in game.# Almost all global variables are initialized on this module#==============================================================================class << DataManager #-------------------------------------------------------------------------- # * Alias method: setup_new_game #-------------------------------------------------------------------------- alias :setup_new_game_ve_actor_battlers :setup_new_game def setup_new_game setup_new_game_ve_actor_battlers $game_custom_positions = VE_CUSTOM_POSITION.dup end #-------------------------------------------------------------------------- # * Alias method: setup_battle_test #-------------------------------------------------------------------------- alias :setup_battle_test_ve_actor_battlers :setup_battle_test def setup_battle_test setup_battle_test_ve_actor_battlers $game_custom_positions = VE_CUSTOM_POSITION.dup end #-------------------------------------------------------------------------- # * Alias method: create_game_objects #-------------------------------------------------------------------------- alias :create_game_objects_ve_actor_battlers :create_game_objects def create_game_objects create_game_objects_ve_actor_battlers $game_custom_positions = {} end #-------------------------------------------------------------------------- # * Alias method: make_save_contents #-------------------------------------------------------------------------- alias :make_save_contents_ve_actor_battlers :make_save_contents def make_save_contents contents = make_save_contents_ve_actor_battlers contents[:formations_ve] = $game_custom_positions contents end #-------------------------------------------------------------------------- # * Alias method: extract_save_contents #-------------------------------------------------------------------------- alias :extract_save_contents_ve_actor_battlers :extract_save_contents def extract_save_contents(contents) extract_save_contents_ve_actor_battlers(contents) $game_custom_positions = contents[:formations_ve] endend#==============================================================================# ** Game_Actor#------------------------------------------------------------------------------# This class handles actors. It's used within the Game_Actors class# ($game_actors) and referenced by the Game_Party class ($game_party).#==============================================================================class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_accessor :screen_x # Coordenada X na tela attr_accessor :screen_y # Coordenada Y na tela #-------------------------------------------------------------------------- # * Alias method: setup #-------------------------------------------------------------------------- alias :setup_ve_actor_battlers :setup def setup(actor_id) setup_ve_actor_battlers(actor_id) @battler_name = actor_battler_name @battler_hue = actor_battler_hue end #-------------------------------------------------------------------------- # * Overwrite method: use_sprite? #-------------------------------------------------------------------------- def use_sprite? return true end #-------------------------------------------------------------------------- # * Overwrite method: screen_z #-------------------------------------------------------------------------- def screen_z return 100 end #-------------------------------------------------------------------------- # * New method: actor_battler_name #-------------------------------------------------------------------------- def actor_battler_name actor.note =~ /<BATTLER NAME: ([^><]*)>/i ? $1.to_s : "" end #-------------------------------------------------------------------------- # * New method: actor_battler_hue #-------------------------------------------------------------------------- def actor_battler_hue actor.note =~ /<BATTLER HUE: (d+)>/i ? $1.to_i : 0 end #-------------------------------------------------------------------------- # * New method: battler_name #-------------------------------------------------------------------------- def battler_name=(name) @battler_name = name if name.is_a?(String) end #-------------------------------------------------------------------------- # * New method: battler_hue #-------------------------------------------------------------------------- def battler_hue=(hue) @battler_hue = hue if hue.numeric? end #-------------------------------------------------------------------------- # * New method: screen_x #-------------------------------------------------------------------------- def screen_x setup_x end #-------------------------------------------------------------------------- # * New method: screen_y #-------------------------------------------------------------------------- def screen_y setup_y end #-------------------------------------------------------------------------- # * New method: setup_x #-------------------------------------------------------------------------- def setup_x case VE_BATTLE_FORMATION when :front then position = get_frontal_x when :side then position = get_sideview_x when :iso then position = get_isometric_x when :custom then position = $game_custom_positions[index + 1][:x] end position + VE_POSITION_ADJUST[:x] end #-------------------------------------------------------------------------- # * New method: setup_y #-------------------------------------------------------------------------- def setup_y case VE_BATTLE_FORMATION when :front then position = get_frontal_y when :side then position = get_sideview_y when :iso then position = get_isometric_y when :custom then position = $game_custom_positions[index + 1][:y] end position + VE_POSITION_ADJUST[:y] end #-------------------------------------------------------------------------- # * New method: get_frontal_x #-------------------------------------------------------------------------- def get_frontal_x if VE_BATTLE_CENTRALIZE size = $game_party.battle_members.size position = (index + 1) * Graphics.width / (size + 1) else size = $game_party.max_battle_members position = index * Graphics.width / size + 64 end position end #-------------------------------------------------------------------------- # * New method: get_frontal_y #-------------------------------------------------------------------------- def get_frontal_y Graphics.height - 16 end #-------------------------------------------------------------------------- # * New method: get_sideview_x #-------------------------------------------------------------------------- def get_sideview_x if VE_BATTLE_CENTRALIZE size = $game_party.max_battle_members x = dist[:x] / 8 position = -index * (index * x - x * size) + Graphics.width - 160 else position = index * dist[:x] + Graphics.width - 192 end position end #-------------------------------------------------------------------------- # * New method: get_sideview_y #-------------------------------------------------------------------------- def get_sideview_y if VE_BATTLE_CENTRALIZE size = $game_party.battle_members.size height = Graphics.height position = (index - size) * dist[:y] + size * dist[:y] / 2 + height - 160 else position = index * dist[:y] + Graphics.height - 192 end position end #-------------------------------------------------------------------------- # * New method: get_isometric_x #-------------------------------------------------------------------------- def get_isometric_x if VE_BATTLE_CENTRALIZE position = -index * (index * dist[:x] - 32) + Graphics.width - 160 else position = index * dist[:x] + Graphics.width - 192 end position end #-------------------------------------------------------------------------- # * New method: get_isometric_y #-------------------------------------------------------------------------- def get_isometric_y if VE_BATTLE_CENTRALIZE position = index * (dist[:y] - index * 6) + Graphics.height - 160 else position = Graphics.height - 96 - index * dist[:y] end position end #-------------------------------------------------------------------------- # * New method: dist #-------------------------------------------------------------------------- def dist VE_DISTANCE_ADJUST endend#==============================================================================# ** Game_Enemy#------------------------------------------------------------------------------# This class handles enemy characters. It's used within the Game_Troop class# ($game_troop).#==============================================================================class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # * New method: atk_animation_id1 #-------------------------------------------------------------------------- def atk_animation_id1 enemy.note =~ /<ATTACK ANIM(?:ATION): (d+)>/i ? $1.to_i : 1 end #-------------------------------------------------------------------------- # * New method: atk_animation_id2 #-------------------------------------------------------------------------- def atk_animation_id2 return 0 endend#==============================================================================# ** Game_Interpreter#------------------------------------------------------------------------------# An interpreter for executing event commands. This class is used within the# Game_Map, Game_Troop, and Game_Event classes.#==============================================================================class Game_Interpreter #-------------------------------------------------------------------------- # * Alias method: comment_call #-------------------------------------------------------------------------- alias :comment_call_ve_actor_battlers :comment_call def comment_call change_battler_name change_battler_hue change_position comment_call_ve_actor_battlers end #-------------------------------------------------------------------------- # * New method: change_battler_name #-------------------------------------------------------------------------- def change_battler_name note.scan(/<BATTLER NAME (d+): ([^><]*)>/i) do |id, name| $game_actors[id.to_i].battler_name = name end end #-------------------------------------------------------------------------- # * New method: change_battler_hue #-------------------------------------------------------------------------- def change_battler_hue note.scan(/<BATTLER HUE (d+): (d+)>/i) do |id, hue| $game_actors[id.to_i].battler_hue = hue end end #-------------------------------------------------------------------------- # * New method: change_position #-------------------------------------------------------------------------- def change_position regexp = /<BATTLER POSITION (d+): (d+) *, *(d+)>/i note.scan(regexp) do |i, x, y| $game_custom_positions[i.to_i][:x] = x.to_i $game_custom_positions[i.to_i][:y] = y.to_i end endend#==============================================================================# ** Spriteset_Battle#------------------------------------------------------------------------------# This class brings together battle screen sprites. It's used within the# Scene_Battle class.#==============================================================================class Spriteset_Battle #-------------------------------------------------------------------------- # * Overwrite method: create_actors #-------------------------------------------------------------------------- def create_actors @actor_sprites = $game_party.battle_members.reverse.collect do |actor| Sprite_Battler.new(@viewport1, actor) end @actors_party = $game_party.battle_members.dup end #-------------------------------------------------------------------------- # * Overwrite method: update_actors #-------------------------------------------------------------------------- def update_actors update_party if $game_party.battle_members != @actors_party @actor_sprites.each {|sprite| sprite.update } end #-------------------------------------------------------------------------- # * New method: update_party #-------------------------------------------------------------------------- def update_party @actor_sprites.each_index do |i| next if $game_party.battle_members.include?(@actor_sprites[i].battler) @actor_sprites[i].dispose @actor_sprites[i] = nil end $game_party.battle_members.collect do |actor| next if @actors_party.include?(actor) @actor_sprites.push(Sprite_Battler.new(@viewport1, actor)) end @actor_sprites.compact! @actors_party = $game_party.battle_members.dup $game_party.battle_members.each do |actor| old_position = [actor.screen_x, actor.screen_y] actor.setup_position if old_position != [actor.screen_x, actor.screen_y] sprite(actor).start_effect(:appear) end end endend#==============================================================================# ** Scene_Battle#------------------------------------------------------------------------------# This class performs battle screen processing.#==============================================================================class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # * Overwrite method: show_attack_animation #-------------------------------------------------------------------------- def show_attack_animation(targets) show_normal_animation(targets, @subject.atk_animation_id1, false) show_normal_animation(targets, @subject.atk_animation_id2, true) endend
    • By Ally
      Nome Script: Equipment Requirements
      Versione: 1.2
      Autore/i: Fomar0153
       
      Informazioni:
      Consente di definire i requisiti per Armi e Armature, ed è possibile utilizzare sia il loro livello o una delle loro statistiche.
       
      Istruzioni:
      Inserite lo script sotto Material.
      Istruzioni all'interno dello script.
       
      Script:
       
       
      =beginEquipment Requirementsby Fomar0153Version 1.2----------------------Notes----------------------Adds a level requirement to equipment.----------------------Instructions----------------------Notetag the weapons/armors like so:<levelreq x><mhpreq x><mmpreq x><atkreq x><defreq x><matreq x><mdfreq x><agireq x><lukreq x><switchreq x><wepreq x><armreq x>----------------------Change Log----------------------1.0 -> 1.1 Added stat requirements Changed script name from Equipment Level Requirements to just Equipment Requirements1.1 -> 1.2 Added switch and other equipment requirements----------------------Known bugs----------------------None=endclass Game_BattlerBase #-------------------------------------------------------------------------- # ● If set to true then it compares the requirement with the actor's base # stat rather than their current. #-------------------------------------------------------------------------- EQUIPREQ_USE_BASE_STAT = true #-------------------------------------------------------------------------- # ● Check the requirements #-------------------------------------------------------------------------- alias level_equippable? equippable? def equippable?(item) return false unless item.is_a?(RPG::EquipItem) return false if @level < item.levelreq return false if reqstat(0) < item.mhpreq return false if reqstat(1) < item.mmpreq return false if reqstat(2) < item.atkreq return false if reqstat(3) < item.defreq return false if reqstat(4) < item.matreq return false if reqstat(5) < item.mdfreq return false if reqstat(6) < item.agireq return false if reqstat(7) < item.lukreq if item.switchreq > 0 return false unless $game_switches[item.switchreq] end if item.wepreq > 0 e = [] for equip in @equips if equip.is_weapon? e.push(equip.object.id) end end return false unless e.include?(item.wepreq) unless equip.object.nil? end if item.armreq > 0 e = [] for equip in @equips if equip.is_armor? e.push(equip.object.id) unless equip.object.nil? end end return false unless e.include?(item.armreq) end return level_equippable?(item) end #-------------------------------------------------------------------------- # ● New Method #-------------------------------------------------------------------------- def reqstat(id) if EQUIPREQ_USE_BASE_STAT return param_base(id) else return param(id) end endendmodule RPG #-------------------------------------------------------------------------- # ● Equip Item is inherited by both Weapon and Armor #-------------------------------------------------------------------------- class EquipItem def levelreq if self.note =~ /<levelreq (.*)>/i return $1.to_i else return 0 end end def mhpreq if self.note =~ /<mhpreq (.*)>/i return $1.to_i else return 0 end end def mmpreq if self.note =~ /<mmpreq (.*)>/i return $1.to_i else return 0 end end def atkreq if self.note =~ /<atkreq (.*)>/i return $1.to_i else return 0 end end def defreq if self.note =~ /<defreq (.*)>/i return $1.to_i else return 0 end end def matreq if self.note =~ /<matreq (.*)>/i return $1.to_i else return 0 end end def mdfreq if self.note =~ /<mdfreq (.*)>/i return $1.to_i else return 0 end end def agireq if self.note =~ /<agireq (.*)>/i return $1.to_i else return 0 end end def lukreq if self.note =~ /<lukreq (.*)>/i return $1.to_i else return 0 end end def switchreq if self.note =~ /<switchreq (.*)>/i return $1.to_i else return 0 end end def wepreq if self.note =~ /<wepreq (.*)>/i return $1.to_i else return 0 end end def armreq if self.note =~ /<armreq (.*)>/i return $1.to_i else return 0 end end endend
    • By Ally
      Nome Script: Dynamic Class Changer
      Versione: 1.1
      Autore/i: ???nOBodY???

      Informazioni:
      Lo script permette di cambiare Classe ai propri personaggi =)

      Istruzioni:
      Inserite lo script sotto Material.
      Istruzioni all'interno dello script.

      Script:


      #=============================================================================== # Dynamic Class Changer v1.1 (RGSS3) # by ???nOBodY??? # Last Updated: 12/12/2011 # # Version 1.1 # #=============================================================================== # # Update History: # - Version 1.1  - Actors' noteboxes implemented /w notetag support # - Version 1.0  - Initial release; RGSS2 => RGSS3 # #=============================================================================== # # This snippet allows an actor's class name to be changed according to who is # using the class. For example, the default setup below changes "Magician" to # "Wizard" for males, and "Witch" for females, for the first four party members. # This can be used in a variety of ways, from gender-based to Zodiac-sign-based, # to even having every class be named something unique for every character in the # game! Slightly modified for RMVX Ace. # # New to RMVXA's v1.1, is the ability to use the new editor's built-in noteboxes # for actors: # #   <class name: ID New Name> # # Ex. # #   <class name: 3 Wizard> #   <class name: 4 Priest> #   <class name: 5 » Super Hero! «> # #=============================================================================== # Credits: # # -???nOBodY??? (aka sUBzeR_0) # -Special Thanks to Victor Sant #=============================================================================== # # Overwrites: # - Window_Base: draw_actor_class # #=============================================================================== $imported = {} if $imported == nil $imported["DynamicClassChanger"] = true module SUBZERO_MODULE   #only include the class ids you wish to have their names changed   INITIAL_CLASS_NAMES = {     # actor id => [ [class id,name],[class id,name],[class id,name] ]     0 => 0, # DO NOT REMOVE     1 => [ [3,"Wizard"],[4,"Priest"] ],     2 => [ [3,"Witch"],[4,"Cleric"], ],     3 => [ [3,"Wizard"],[4,"Priest"] ],     4 => [ [3,"Witch"],[4,"Cleric"] ],     5 => [  ],     6 => [  ],     7 => [  ],     8 => [  ],   }   # <class name: ID New Name>   CLASS_NAME = /<CLASS[ _]*NAME:?[ ]*(d+)[ ]*(.*)>/i end #=============================================================================== # CUSTOMIZATION END. FURTHER EDITTING IS DONE AT YOUR OWN RISK. YOU HAVE BEEN WARNED. #=============================================================================== #=============================================================================== # Window_Base #=============================================================================== class Window_Base < Window   #--------------------------------------------------------------------------     # * Draw Class     #     actor : actor     #     x     : draw spot x-coordinate     #     y     : draw spot y-coordinate     #--------------------------------------------------------------------------     def draw_actor_class(actor, x, y, width = 112)       change_color(normal_color)       #sUBzeR_0 Patch       text = actor.class.name       i = 0       until i == SUBZERO_MODULE::INITIAL_CLASS_NAMES[actor.id].size         if SUBZERO_MODULE::INITIAL_CLASS_NAMES[actor.id][i].include?(actor.class.id)           text = SUBZERO_MODULE::INITIAL_CLASS_NAMES[actor.id][i][1]           break         end         i += 1       end       note = $data_actors[actor.id].note       note.scan(SUBZERO_MODULE::CLASS_NAME).each do |id, name|         text = name if actor.class_id == id.to_i       end       draw_text(x, y, width, line_height, text)       #sUBzeR_0 Patch     end end #class Window_Base < Window
×