RMRK is retiring.
Registration is disabled. The site will remain online, but eventually become a read-only archive. More information.

RMRK.net has nothing to do with Blockchains, Cryptocurrency or NFTs. We have been around since the early 2000s, but there is a new group using the RMRK name that deals with those things. We have nothing to do with them.
NFTs are a scam, and if somebody is trying to persuade you to buy or invest in crypto/blockchain/NFT content, please turn them down and save your money. See this video for more information.
Simple CMS with Window edits + Location

0 Members and 1 Guest are viewing this topic.

*******
Rep:
Level 90
Returned from the dead.
Here you go, my second released CMS... hope you like :D

Everything here except the location and horizontal menu commands (Window_Command2) is by me, I merely edited Window_MenuStatus and Window_Base

Spoiler for Script:
Just replace this script with Scene_Menu
Code: [Select]
#===============================#
#               Rune's CMS                   #
#                No.2 Ver 1                       #
#===============================#

$data_mapinfos = load_data('Data/MapInfos.rxdata')

class Window_Steps
  def refresh
  contents.clear
  contents.font.color = system_color
  contents.draw_text(4, 0, 120, 32, 'Location')
  contents.font.color = normal_color
  name = $data_mapinfos[$game_map.map_id].name  
  contents.draw_text(0, 32, 128, 32, name)
  end
end

class Window_Base
  def draw_actor_graphic(actor, x, y)
bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
cw = bitmap.width / 4
ch = bitmap.height / 4
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  end
  def draw_actor_name(actor, x, y)
self.contents.font.color = crisis_color
self.contents.draw_text(x, y, 120, 32, actor.name)
  end
  def draw_actor_class(actor, x, y)
self.contents.font.color = Color.new(0, 255, 0)
self.contents.draw_text(x, y, 236, 32, actor.class_name)
  end
  def draw_actor_level(actor, x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, 32, "Level")
self.contents.font.color = normal_color
self.contents.draw_text(x + 32, y, 24, 32, actor.level.to_s, 2)
  end
  def make_battler_state_text(battler, width, need_normal)
brackets_width = self.contents.text_size("[]").width
text = ""
for i in battler.states
 if $data_states[i].rating >= 1
if text == ""
 text = $data_states[i].name
else
 new_text = text + "/" + $data_states[i].name
 text_width = self.contents.text_size(new_text).width
 if text_width > width - brackets_width
break
 end
 text = new_text
end
 end
end
if text == ""
 if need_normal
text = "[Normal]"
 end
else
 text = "[" + text + "]"
end
return text
  end
  def draw_actor_state(actor, x, y, width = 120)
text = make_battler_state_text(actor, width, true)
self.contents.font.color = actor.hp == 0 ? knockout_color : crisis_color
self.contents.draw_text(x, y, width, 32, text)
  end
  def draw_actor_exp(actor, x, y)
self.contents.font.color = system_color
self.contents.draw_text(x - 16, y - 8, 24, 32, "Exp")
self.contents.font.color = normal_color
self.contents.draw_text(x - 64, y + 16, 84, 32, actor.exp_s, 2)
self.contents.draw_text(x + 24, y + 16, 12, 32, "/", 1)
self.contents.draw_text(x + 36, y + 16, 84, 32, actor.next_exp_s)
  end
  def draw_actor_hp(actor, x, y, width = 144)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
if width - 32 >= 108
 hp_x = x + width - 108
 flag = true
elsif width - 32 >= 48
 hp_x = x + width - 48
 flag = false
end
self.contents.font.color = actor.hp == 0 ? knockout_color :
 actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
self.contents.draw_text(hp_x - 44, y + 16, 48, 32, actor.hp.to_s, 2)
if flag
 self.contents.font.color = normal_color
 self.contents.draw_text(hp_x + 4, y + 16, 12, 32, "/", 1)
 self.contents.draw_text(hp_x + 16, y + 16, 48, 32, actor.maxhp.to_s)
end
  end
  def draw_actor_sp(actor, x, y, width = 144)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
if width - 32 >= 108
 sp_x = x + width - 108
 flag = true
elsif width - 32 >= 48
 sp_x = x + width - 48
 flag = false
end
self.contents.font.color = actor.sp == 0 ? knockout_color :
 actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
self.contents.draw_text(sp_x - 44, y + 16, 48, 32, actor.sp.to_s, 2)
if flag
 self.contents.font.color = normal_color
 self.contents.draw_text(sp_x + 4, y + 16, 12, 32, "/", 1)
 self.contents.draw_text(sp_x + 16, y + 16, 48, 32, actor.maxsp.to_s)
end
  end
end

class Window_MenuStatus
  def initialize
super(0, 0, 640, 240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $defaultfonttype
self.contents.font.size = $defaultfontsize
refresh
self.active = false
self.index = -1
  end
  def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
 x = i * 160
 y = 116
 actor = $game_party.actors[i]
 draw_actor_graphic(actor, x + 16, y - 60)
 draw_actor_name(actor, x + 32, y - 120)
 draw_actor_class(actor, x + 32, y - 80)
 draw_actor_level(actor, x + 32, y - 100)
 draw_actor_state(actor, x + 16, y - 60)
 draw_actor_exp(actor, x + 16, y + 50)
 draw_actor_hp(actor, x, y - 40)
 draw_actor_sp(actor, x, y)
end
  end
  def update_cursor_rect
if @index < 0
 self.cursor_rect.empty
else
 self.cursor_rect.set(@index * 160, 0, 128, self.height - 32)
end
  end
end

class Window_Command < Window_Selectable
  def initialize(width, commands, column_max = 1, style = 0, inf_scroll = 1)
super(0, 0, width, (commands.size * 1.0 / column_max).ceil * 32 + 32)
@inf_scroll = inf_scroll
@item_max = commands.size
@commands = commands
@column_max = column_max
@style = style
self.contents = Bitmap.new(width - 32, (@item_max * 1.0 / @column_max).ceil * 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 22
refresh
self.index = 0
  end
  def refresh
self.contents.clear
for i in 0...@item_max
 draw_item(i, normal_color)
end
  end
  def draw_item(index, color)
self.contents.font.color = color
rect = Rect.new(index%@column_max * (self.width / @column_max) + 4, 32 * (index/@column_max), self.width / @column_max - 40, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.draw_text(rect, @commands[index], @style)
  end
  def disable_item(index)
draw_item(index, disabled_color)
  end
  def update_help
@help_window.set_actor($game_party.actors[$scene.actor_index])
  end
end

class Scene_Menu
  def initialize(menu_index = 0)
@menu_index = menu_index
  end
  def main
@spriteset = Spriteset_Map.new
s1 = "Items"
s2 = "Skills"
s3 = "Equip"
s4 = "Status"
s5 = "Save"
s6 = "Exit"
@command_window = Window_Command.new(320, [s1, s2, s3, s4, s5, s6], 3)
@command_window.index = @menu_index
@command_window.x = 160
@command_window.y = 144
if $game_party.actors.size == 0
 @command_window.disable_item(0)
 @command_window.disable_item(1)
 @command_window.disable_item(2)
 @command_window.disable_item(3)
end
if $game_system.save_disabled
 @command_window.disable_item(4)
end
@playtime_window = Window_PlayTime.new
@playtime_window.x = 0
@playtime_window.y = 144
@steps_window = Window_Steps.new
@steps_window.x = 480
@steps_window.y = 144
@gold_window = Window_Gold.new
@gold_window.x = 480
@gold_window.y = 0
@status_window = Window_MenuStatus.new
@status_window.x = 0
@status_window.y = 240
Graphics.transition
loop do
 Graphics.update
 Input.update
 update
 if $scene != self
break
 end
end
Graphics.freeze
@spriteset.dispose
@command_window.dispose
@playtime_window.dispose
@steps_window.dispose
@gold_window.dispose
@status_window.dispose
  end
  def update
@spriteset.update
@command_window.update
@playtime_window.update
@steps_window.update
@gold_window.update
@status_window.update
if @command_window.active
 update_command
 return
end
if @status_window.active
 update_status
 return
end
  end
  def update_command
if Input.trigger?(Input::B)
 $game_system.se_play($data_system.cancel_se)
 $scene = Scene_Map.new
 return
end
if Input.trigger?(Input::C)
 if $game_party.actors.size == 0 and @command_window.index < 4
$game_system.se_play($data_system.buzzer_se)
return
 end
 case @command_window.index
 when 0
$game_system.se_play($data_system.decision_se)
$scene = Scene_Item.new
 when 1
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@status_window.active = true
@status_window.index = 0
 when 2
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@status_window.active = true
@status_window.index = 0
 when 3
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@status_window.active = true
@status_window.index = 0
 when 4
if $game_system.save_disabled
 $game_system.se_play($data_system.buzzer_se)
 return
end
$game_system.se_play($data_system.decision_se)
$scene = Scene_Save.new
 when 5
$game_system.se_play($data_system.decision_se)
$scene = Scene_End.new
 end
 return
end
  end
  def update_status
if Input.trigger?(Input::B)
 $game_system.se_play($data_system.cancel_se)
 @command_window.active = true
 @status_window.active = false
 @status_window.index = -1
 return
end
if Input.trigger?(Input::C)
 case @command_window.index
 when 1
if $game_party.actors[@status_window.index].restriction >= 2
 $game_system.se_play($data_system.buzzer_se)
 return
end
$game_system.se_play($data_system.decision_se)
$scene = Scene_Skill.new(@status_window.index)
 when 2
$game_system.se_play($data_system.decision_se)
$scene = Scene_Equip.new(@status_window.index)
 when 3
$game_system.se_play($data_system.decision_se)
$scene = Scene_Status.new(@status_window.index)
 end
 return
end
  end
end

Spoiler for Screeny:


This script goes well with this script

[EDIT]
Found an error...
Put this at the end of Window_SkillStatus, just before the last end
Spoiler for:
Code: [Select]
  def draw_actor_hp(actor, x, y, width = 144)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
    if width - 32 >= 108
      hp_x = x + width - 108
      flag = true
    elsif width - 32 >= 48
      hp_x = x + width - 48
      flag = false
    end
    self.contents.font.color = actor.hp == 0 ? knockout_color :
      actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
    self.contents.draw_text(hp_x, y, 48, 32, actor.hp.to_s, 2)
        @hp = RPG::Cache.icon("HP.png")
    self.contents.blt(x - 30, y + 4, @hp, Rect.new(0, 0, 24, 24))
    if flag
      self.contents.font.color = normal_color
      self.contents.draw_text(hp_x + 48, y, 12, 32, "/", 1)
      self.contents.draw_text(hp_x + 60, y, 48, 32, actor.maxhp.to_s)
    end
  end
  def draw_actor_sp(actor, x, y, width = 144)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
    if width - 32 >= 108
      sp_x = x + width - 108
      flag = true
    elsif width - 32 >= 48
      sp_x = x + width - 48
      flag = false
    end
    self.contents.font.color = actor.sp == 0 ? knockout_color :
      actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
    self.contents.draw_text(sp_x, y, 48, 32, actor.sp.to_s, 2)
        @sp = RPG::Cache.icon("SP.png")
    self.contents.blt(x - 30, y + 4, @sp, Rect.new(0, 0, 24, 24))
    if flag
      self.contents.font.color = normal_color
      self.contents.draw_text(sp_x + 48, y, 12, 32, "/", 1)
      self.contents.draw_text(sp_x + 60, y, 48, 32, actor.maxsp.to_s)
    end
  end

That should make the HP and SP appear right in the Skill window

[EDIT 2]
And add this to the end of Window_BattleStatus, just before the last 'end'
Spoiler for:
Code: [Select]
  def draw_actor_name(actor, x, y)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 120, 32, actor.name)
  end
  def draw_actor_hp(actor, x, y, width = 144)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
    if width - 32 >= 108
      hp_x = x + width - 108
      flag = true
    elsif width - 32 >= 48
      hp_x = x + width - 48
      flag = false
    end
    self.contents.font.color = actor.hp == 0 ? knockout_color :
      actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
    self.contents.draw_text(hp_x, y, 48, 32, actor.hp.to_s, 2)
    if flag
      self.contents.font.color = normal_color
      self.contents.draw_text(hp_x + 48, y, 12, 32, "/", 1)
      self.contents.draw_text(hp_x + 60, y, 48, 32, actor.maxhp.to_s)
    end
  end
  def draw_actor_sp(actor, x, y, width = 144)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
    if width - 32 >= 108
      sp_x = x + width - 108
      flag = true
    elsif width - 32 >= 48
      sp_x = x + width - 48
      flag = false
    end
    self.contents.font.color = actor.sp == 0 ? knockout_color :
      actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
    self.contents.draw_text(sp_x, y, 48, 32, actor.sp.to_s, 2)
    if flag
      self.contents.font.color = normal_color
      self.contents.draw_text(sp_x + 48, y, 12, 32, "/", 1)
      self.contents.draw_text(sp_x + 60, y, 48, 32, actor.maxsp.to_s)
    end
  end
  def draw_actor_state(actor, x, y, width = 120)
    text = make_battler_state_text(actor, width, true)
    self.contents.font.color = actor.hp == 0 ? knockout_color : normal_color
    self.contents.draw_text(x, y, width, 32, text)
  end

This makes the BattleStatus window look right

[EDIT 3]
Change this with the whole of def refresh in Window_Target
Spoiler for:
Code: [Select]
  def refresh
    self.contents.clear
    for i in 0...$game_party.actors.size
      x = 4
      y = i * 116
      actor = $game_party.actors[i]
      draw_actor_graphic(actor, x + 16, y + 80)
      draw_actor_name(actor, x, y)
      draw_actor_class(actor, x + 144, y)
      draw_actor_level(actor, x + 32, y + 32)
      draw_actor_state(actor, x + 32, y + 48)
      draw_actor_hp(actor, x + 152, y + 16)
      draw_actor_sp(actor, x + 152, y + 48)
    end
  end

Should fix the problem with  the target window in Scene_Item, Scene_Skil and whatnot... plus it shows the character's sprite :P

That should be all... T.T'
« Last Edit: May 20, 2007, 12:48:28 PM by Rune »
Sincerely,
Your conscience.

*
Rep:
Level 97
2014 Most Unsung Member2014 Best RPG Maker User - Engine2013 Best RPG Maker User (Scripting)2012 Most Mature Member2012 Favorite Staff Member2012 Best RPG Maker User (Scripting)2012 Best MemberSecret Santa 2012 ParticipantProject of the Month winner for July 20092011 Best Use of Avatar and Signature Space2011 Best RPG Maker User (Scripting)2011 Most Mature Member2011 Favourite Staff Member2011 Best Veteran2010 Most Mature Member2010 Favourite Staff Member
nice little script.

I have no idea why your scripts always sort of move down the page so quickly. I always see them like a month after they were released.

*******
Rep:
Level 90
Returned from the dead.
Maybe because almost all my scripts are $%&*... i'm only a beginner ;9
Sincerely,
Your conscience.

***
Rep:
Level 86
I hate everyone except the ones I don't hate...
ARGH! I have a problem with mine: I'm missing some HP icon... what is that?!

Forget it, problem solved ::) Nice script! It's better than most of the others. It's just so original and cool!
« Last Edit: December 23, 2007, 09:01:31 PM by Demonic Blade »
I wonder how many of my-reps are there for a reason, and not just because some jackass wanted to show off in front of some other jackasses...?
Probably a lot of them - and those people sure as hell don't deserve my pity, let alone my disgust.
That's right, let's see some more -Rep'ing! BOOYEAH!!

***
Rep:
Level 88
How do you fix the HP icon glitch?
Games in progress:
Tome of Arastovia: 7% complete at 2 hours of gametime

***
Rep:
Level 86
I hate everyone except the ones I don't hate...
Well you just have to have an icon-sized picture named "HP" and one named "SP" (without the queotes of course) in your pictures or icons folder (not sure which one, think it was the icon folder, I stopped working on the project I used it in (problems with the scripting...).
I wonder how many of my-reps are there for a reason, and not just because some jackass wanted to show off in front of some other jackasses...?
Probably a lot of them - and those people sure as hell don't deserve my pity, let alone my disgust.
That's right, let's see some more -Rep'ing! BOOYEAH!!