is there any scripts for battle narration similar to earthbound for RMXP, i have found this forum but the link seems to no longer work ( Battle Narration ) and I can not find other scripts
The site in question was in an old host service that was shut down long ago, and unfortunately can’t find traces of it either. So far seems that it would be either asking people if someone has it on their drive for some reason.
Second option is finding another one, but I can’t seem to find one either. Funny enough found another thread directing to that same thread you posted… ![]()
Third option is making one, but I think this takes more than 5 minutes. ![]()
okay, i will keep looking but im also trying to learn ruby so it might be something i have to make.
Here is an unstable version of a script I made in 2020, feel free to modify it.
It’s a battle log, but I’d recommend waiting a bit longer, as I’m currently working on a script pack that recreates most of the EarthBound systems.
I’m repurposing some scripts that Cap’n Coco Charm released on Starmen.net ages ago. Anyway, I could look into developing a more complete version, but for now, I’ll send you this one, you’re free to modify it.
#==============================================================================
# ** Moveto's Battle Log 1.0 - 10/28/2020 **
#
#-------------------------------------------------
# This version isn't very stable, it was
# created for a discarded project, but it
# works normally—though it hasn't been reviewed.
#==============================================================================
module MVBLSYS
#-------
# CONFIG
#-------
# Log Window Position
X = 8
Y = 8
# Log Area Sizze
WIDTH = 624
HEIGHT = 82
# Lines
MAX_LINES = 4
# Font Size
FONT_SIZE = 20
# Wite Speed
# 1 = faster
# 2 = normal
# 3 = slow
LETTER_SPEED = 2
# Line spacing
LINE_HEIGHT = 20
# Time the message remains on the screen after finishing
MESSAGE_WAIT = 35
#-------------
# * Create Log
#-------------
def self.create
dispose
@sprite = Sprite.new
@sprite.x = X
@sprite.y = Y
@sprite.z = 9999
@bitmap = Bitmap.new(WIDTH, HEIGHT)
@sprite.bitmap = @bitmap
@messages = []
@current_text = ""
@display_text = ""
@text_index = 0
@wait = 0
@active = true
refresh
end
#---------
# * Update
#---------
def self.update
return if @sprite == nil
return if @bitmap == nil
# If no message is being written
if @current_text == nil or @current_text == ""
return
end
# Wait before continuing
if @wait > 0
@wait -= 1
return
end
# Typing the message
if @text_index < @current_text.length
if Graphics.frame_count % LETTER_SPEED == 0
@text_index += 1
@display_text = @current_text[0, @text_index]
refresh
end
else
# Message ended
@wait = MESSAGE_WAIT
end
end
#--------------
# * Add message
#--------------
def self.add(text)
return if text == nil
text = text.to_s
@messages = [] if @messages == nil
@messages.push(text)
while @messages.size > MAX_LINES
@messages.shift
end
@current_text = text
@display_text = ""
@text_index = 0
@wait = 0
refresh
end
#---------------
# * Show message
#---------------
def self.message(text)
add(text)
end
#----------------------
# * Updates the drawing
#----------------------
def self.refresh
return if @bitmap == nil
@bitmap.clear
# Log background
@bitmap.fill_rect(
0,
0,
WIDTH,
HEIGHT,
Color.new(0, 0, 0, 180)
)
# Edge
border = Color.new(255, 255, 255, 255)
@bitmap.fill_rect(0, 0, WIDTH, 2, border)
@bitmap.fill_rect(0, HEIGHT - 2, WIDTH, 2, border)
@bitmap.fill_rect(0, 0, 2, HEIGHT, border)
@bitmap.fill_rect(WIDTH - 2, 0, 2, HEIGHT, border)
# Font
@bitmap.font.name = "Arial"
@bitmap.font.size = FONT_SIZE
@bitmap.font.bold = false
@bitmap.font.italic = false
@bitmap.font.color = Color.new(255, 255, 255, 255)
#------------------------
# Draws previous messages
#------------------------
if @messages != nil
count = @messages.size
# The last message will be replaced by the version currently being typed
if count > 0
last_index = count - 1
else
last_index = -1
end
y = 5
for i in 0...count
text = @messages[i]
# If it's the current message, use the typed version
if i == last_index and
@current_text != nil and
@current_text != ""
text = @display_text
end
@bitmap.draw_text(
10,
y,
WIDTH - 20,
LINE_HEIGHT,
text,
0
)
y += LINE_HEIGHT
end
end
end
#----------------------
# * Checks if it exists
#----------------------
def self.exist?
return false if @sprite == nil
return false if @bitmap == nil
return true
end
#----------
# * Deletye
#----------
def self.clear
@messages = []
@current_text = ""
@display_text = ""
@text_index = 0
@wait = 0
refresh
end
#-----------------
# * Remove the log
#-----------------
def self.dispose
if @sprite != nil
@sprite.bitmap = nil
@sprite.dispose
@sprite = nil
end
if @bitmap != nil
@bitmap.dispose
@bitmap = nil
end
@messages = []
@current_text = ""
@display_text = ""
@text_index = 0
@wait = 0
end
end
#==============================================================================
# ** Scene_Battle
#==============================================================================
class Scene_Battle
#------------------
# * Main Processing
#------------------
alias mvbl_battle_log_main main
def main
# Create the log BEFORE the battle starts.
MVBLSYS.create
# Mensagem inicial
MVBLSYS.add("The battle has begun!")
# Runs the original Scene_Battle
mvbl_battle_log_main
# Security
MVBLSYS.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
alias mvbl_battle_log_update update
def update
# Updates the original battle system
mvbl_battle_log_update
# Updates the log
MVBLSYS.update
end
#-------------
# * End Battle
#-------------
alias mvbl_battle_log_battle_end battle_end
def battle_end(result)
MVBLSYS.dispose
mvbl_battle_log_battle_end(result)
end
#---------------
# * Basic Action
#---------------
alias mvbl_battle_log_basic_action make_basic_action_result
def make_basic_action_result
# Hold the attacker before the action
battler = @active_battler
# Executes the original action
mvbl_battle_log_basic_action
# If the battler does not exist
return if battler == nil
# Normal attack
if battler.current_action.basic == 0
name = battler.name
if name == nil or name == ""
name = "Enemy"
end
MVBLSYS.add(name + " attack!")
# Result
if @target_battlers != nil
for target in @target_battlers
next if target == nil
if target.damage == "Miss"
MVBLSYS.add("Miss!")
elsif target.damage.is_a?(Numeric)
if target.critical
MVBLSYS.add("Critical Hit!")
end
if target.damage < 0
MVBLSYS.add(
target.name + " recovered " +
(-target.damage).to_s + " HP!"
)
else
MVBLSYS.add(
target.name + " suffer " +
target.damage.to_s + " of damage!"
)
end
end
if target.hp <= 0
MVBLSYS.add(target.name + " fall!")
end
end
end
end
end
#---------------
# * Skill Action
#---------------
alias mvbl_battle_log_skill_action make_skill_action_result
def make_skill_action_result
battler = @active_battler
# Save the ability
skill_id = nil
if battler != nil
skill_id = battler.current_action.skill_id
end
skill = nil
if skill_id != nil
skill = $data_skills[skill_id]
end
# Executes the original action
mvbl_battle_log_skill_action
return if battler == nil
return if skill == nil
name = battler.name
if name == nil or name == ""
name = "Enemy"
end
MVBLSYS.add(
name + " used " + skill.name + "!"
)
# Result
if @target_battlers != nil
for target in @target_battlers
next if target == nil
if target.damage == "Miss"
MVBLSYS.add("Miss!")
elsif target.damage.is_a?(Numeric)
if target.critical
MVBLSYS.add("Critical Hit!")
end
if target.damage < 0
MVBLSYS.add(
target.name + " recoverec " +
(-target.damage).to_s + " HP!"
)
elsif target.damage > 0
MVBLSYS.add(
target.name + " suffer " +
target.damage.to_s + " of damage!"
)
end
end
if target.hp <= 0
MVBLSYS.add(target.name + " caiu!")
end
end
end
end
#--------------------------------------------------------------------------
# * Item Action
#--------------------------------------------------------------------------
alias mvbl_battle_log_item_action make_item_action_result
def make_item_action_result
battler = @active_battler
item_id = nil
if battler != nil
item_id = battler.current_action.item_id
end
item = nil
if item_id != nil
item = $data_items[item_id]
end
# Executes the original action
mvbl_battle_log_item_action
return if battler == nil
return if item == nil
name = battler.name
if name == nil or name == ""
name = "Enemy"
end
MVBLSYS.add(
name + " used " + item.name + "!"
)
# Resultado
if @target_battlers != nil
for target in @target_battlers
next if target == nil
if target.damage == "Miss"
MVBLSYS.add("It Didn't Work...")
elsif target.damage.is_a?(Numeric)
if target.damage < 0
MVBLSYS.add(
target.name + " recovered " +
(-target.damage).to_s + " HP!"
)
elsif target.damage > 0
MVBLSYS.add(
target.name + " suffer " +
target.damage.to_s + " of damage!"
)
end
end
if target.hp <= 0
MVBLSYS.add(target.name + " fall!")
end
end
end
end
end
#==============================================================================
# ** Game_Temp
#------------------------------------------------------------------------------
# Allows the log to be called via an event.
#
# Example:
#
# $game_temp.battle_log("The enemy looks furious!")
#==============================================================================
class Game_Temp
def battle_log(text)
MVBLSYS.add(text)
end
end
I still have an old *EarthBound* “Cap’n Coco Charm Starter Kit” project; it’s quite incomplete, but it’s the closest thing to *EarthBound* in RPG Maker XP. I can send the project over, since I’m probably the only one who still has it.
Yeah that would be great! also I will ceck out that script you sent earlier!
I tried out the script and it works really good! its a little confusing to try and customize it but other than that its amazing!
Well, if I were you, I’d wait until my EarthBound system for RMXP is finished. I’m working on it right now, I recommend checking out the video I made about it, It’s still in the early stages, but I’m working on it daily so I can release it later this year.
Earthbound no RPG Maker XP! - The Earthbound XP Kit (em desenvolvimento)