Project1
标题:
求高手看下 这个脚本
[打印本页]
作者:
z2z4
时间:
2012-8-10 14:04
标题:
求高手看下 这个脚本
本帖最后由 z2z4 于 2012-8-10 14:05 编辑
不知道 这个脚本 可以不可以 自己设置图标 就是自己设置图标 这脚本只是个 背包格 默认是显示 系统带的图标
#==============================================================================
# XaiL System - Icon Item
# Author: Nicke
# Created: 09/04/2012
# Edited: 06/05/2012
# Version: 1.0b
#==============================================================================
# 介绍
# -----------------------------------------------------------------------------
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ▼ Materials but above ▼ Main. Remember to save.
#
# This script changes the item list to display icons as items instead.
# There is also a category feature which allows you to change the background
# color of each items/weapons/armour etc.
#
# Right now there is a setup of 6 categories one being the default one.
# You can easily edit the draw_item_rect method to add new ones.
#
# To setup a category for a item use the following code in the note field of the
# item:
# <category health>
# or
# <category mana>
# The above will only work if you did not edit the category list.
#
# *** Only for RPG Maker VX Ace. ***
#==============================================================================
($imported ||= {})["XAIL-ICON-SKILLS"] = true
module XAIL
module ICON_ITEM
#--------------------------------------------------------------------------#
# * 设置
#--------------------------------------------------------------------------#
# 字体 = [name, size, color, bold, shadow]
FONT = [["Anklada™", "Verdana"], 16, Color.new(255,225,255), true, true]
# Show/hide option for the item scene.
# DISPLAY = [show_help_icon, show_name, show_description,
# show_consumable, show_amount]
DISPLAY = [true, true, true, true, true]
# If this is false every item will have the same default black color.
# NO_CATEGORIES = true/false
NO_CATEGORIES = true
end
end
# *** 不要修改下面的除非你知道你在做什么. ***
#==============================================================================#
# ** 窗口_帮助
#==============================================================================#
class Window_Help < Window_Base
def set_item_help(item)
# // 方法设置项目窗口帮助.
contents.font.name = XAIL::ICON_ITEM::FONT[0]
contents.font.bold = XAIL::ICON_ITEM::FONT[3]
contents.font.shadow = XAIL::ICON_ITEM::FONT[4]
contents.font.out_color = Color.new(0,0,0,255)
if item
icon = XAIL::ICON_ITEM::DISPLAY[0] ? '\i[' + item.icon_index.to_s + ']' : ""
name = XAIL::ICON_ITEM::DISPLAY[1] ? '\c[2] »» ' + item.name + '\c[0]' : ""
weight = $imported["XAIL-INVENTORY-WEIGHT"] ? weight = " - Weight #{item.weight}." : ""
if item.is_a?(RPG::Item) and XAIL::ICON_ITEM::DISPLAY[2]
consumable = item.consumable ? " (消耗)" : " (不消耗)"
else
consumable = ""
end
desc = XAIL::ICON_ITEM::DISPLAY[3] ? item.description : ""
new_line = "\n"
item_text = icon + name + consumable + weight + new_line + desc
else
item_text = ""
end
set_text(item_text)
end
end
#==============================================================================#
# ** 窗口_ItemList_图标
#==============================================================================#
class Window_ItemList_Icon < Window_ItemList
def col_max
# // 方法 to get col_max.
return 14
end
def spacing
# // 图标格的距离.
return 14
end
def item_width
# // 图标格的宽度.
return 24
end
def item_height
# // 图标格的高度.
return 24
end
def row_max
# // 方法 to get row_max.
return item_max
end
def update_help
# // 方法更新的帮助信息.
@help_window.set_item_help(item)
end
def item_rect(index)
# // 方法绘制项目矩形.
rect = Rect.new
rect.width = item_width
rect.height = item_height
rect.x = index % col_max * (item_width + spacing)
rect.y = index / col_max * (item_height + 3)
rect
end
def page_row_max
# // 方法来确定页面行最大.
return 1
end
def scan_items(item)
# // 方法扫描注释的项目.
item.note.scan(/<category[:]*\s*(.+)>/i)
return $1 if !$1.nil?
end
def draw_item(index)
# // 方法重写绘制项目.
item = @data[index]
if item
rect = item_rect(index)
draw_item_rect(index, item, rect, rect.x, rect.y)
draw_item_number(rect, item) if $game_party.item_number(item) > 1 and XAIL::ICON_ITEM::DISPLAY[3]
end
end
def draw_item_icon(icon_index, x, y, enabled = true)
# // 方法绘制图标.
bitmap = Cache.system("Iconset")
rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
contents.blt(x, y, bitmap, rect, enabled ? 255 : 75)
end
def draw_item_rect(index, item, rect, x, y)
# // 方法绘制矩形.
outline = rect.clone
outline.width = rect.width + 1
outline.height = rect.height + 1
contents.fill_rect(outline,Color.new(255,255,255,80))
if XAIL::ICON_ITEM::NO_CATEGORIES
case scan_items(item)
when "health"
color = Color.new(150,0,0,45)
when "mana"
color = Color.new(0,0,150,45)
when "cure"
color = Color.new(0,130,0,45)
when "elixir"
color = Color.new(250,250,0,45)
when "herbs"
color = Color.new(0,215,0,45)
when nil
color = Color.new(0,0,0,128)
else
color = Color.new(0,0,0,128)
end
else
color = Color.new(0,0,0,128)
end
color = enable?(item) ? color : Color.new(0,0,0,128)
contents.fill_rect(rect, color)
draw_item_icon(item.icon_index, x + 1, y, enable?(item))
end
def check_color(color, enabled = true)
# // Method to set the color and alpha.
contents.font.color.set(color)
contents.font.color.alpha = 95 unless enabled
end
def draw_item_number(rect, item)
# // 方法绘制项目编号.
rect.y += 8
if $game_party.item_number(item) < 10
rect.x -= 2
end
contents.font = Font.new(XAIL::ICON_ITEM::FONT[0], XAIL::ICON_ITEM::FONT[1])
check_color(XAIL::ICON_ITEM::FONT[2], enable?(item))
contents.font.bold = XAIL::ICON_ITEM::FONT[3]
contents.font.shadow = XAIL::ICON_ITEM::FONT[4]
contents.font.out_color = Color.new(0,0,0,255)
draw_text(rect, sprintf("%2d", $game_party.item_number(item)), 1)
reset_font_settings
end
end
#==============================================================================#
# ** Scene_Item
#==============================================================================#
class Scene_Item < Scene_ItemBase
def create_item_window
# // 方法重写创建项目列表窗口.
wy = @category_window.y + @category_window.height
wh = Graphics.height - wy
@item_window = Window_ItemList_Icon.new(0, wy, Graphics.width, wh)
@item_window.viewport = @viewport
@item_window.help_window = @help_window
@item_window.set_handler(:ok, method(:on_item_ok))
@item_window.set_handler(:cancel, method(:on_item_cancel))
@category_window.item_window = @item_window
end
end # END OF FILE
#=*==========================================================================*=#
# ** END OF FILE
#=*==========================================================================*=#
复制代码
作者:
z2z4
时间:
2012-8-10 14:06
本帖最后由 z2z4 于 2012-8-10 14:06 编辑
不过和 装备强化帮助 有冲突 不知道 有高手 修改不
#encoding:utf-8
#==============================================================================
# ■ 装备说明增强 By wyongcan
#==============================================================================
module Equipplus
CODE ={
11 => "属性抗性",
12 => "弱化抗性",
13 => "状态抗性",
14 => "状态免疫",
21 => "普通能力",
22 => "添加能力",
23 => "特殊能力",
31 => "攻击附带属性",
32 => "攻击附带状态",
33 => "修正攻击速度",
34 => "添加攻击次数",
41 => "添加技能类型",
42 => "禁用技能类型",
43 => "添加技能",
44 => "禁用技能",
51 => "可装备武器类型",
52 => "可装备护甲类型",
53 => "固定装备",
54 => "禁用装备",
55 => "装备风格",
61 => "添加行动次数",
62 => "特殊标志",
63 => "消失效果",
64 => "队伍能力"}
#特殊标志
FLAG ={
0 => "自动战斗",
1 => "擅长防御",
2 => "保护弱者",
3 => "特技专注"}
#普通能力
PARAM ={
0 => "最大HP",
1 => "最大MP",
2 => "物理攻击",
3 => "物理防御",
4 => "魔法攻击",
5 => "魔法防御",
6 => "敏 捷 值",
7 => "幸 运 值"}
#添加能力
XPARAM ={
0 => "物理命中几率:",
1 => "物理闪避几率:",
2 => "必杀几率:",
3 => "必杀闪避几率:",
4 => "魔法闪避几率:",
5 => "魔法反射几率:",
6 => "物理反击几率:",
7 => "体力值再生速度:",
8 => "魔力值再生速度:",
9 => "特技值再生速度:"}
#特殊能力
SPARAM ={
0 => "受到攻击的几率",
1 => "防御效果比率",
2 => "恢复效果比率",
3 => "药理知识",
4 => "MP消费率",
5 => "TP消耗率",
6 => "物理伤害加成",
7 => "魔法伤害加成",
8 => "地形伤害加成",
9 => "经验获得加成"}
@队伍能力 ={
0 => "遇敌几率减半",
1 => "随机遇敌无效",
2 => "敌人偷袭无效",
3 => "先制攻击几率上升",
4 => "获得金钱数量双倍",
5 => "物品掉落几率双倍"}
def self.equiphelpready
@状态 = {}
@武器类型 = {}
@防具类型 = {}
@属性 = {}
$data_states.each{|x| @状态[x.id] = x.name if x != nil}
elements = $data_system.elements
weapon_types = $data_system.weapon_types
armor_types = $data_system.armor_types
elements.each_with_index{|x,y| @属性[y] = x if x != ""}
weapon_types.each_with_index{|x,y| @武器类型[y] = x if x != ""}
armor_types.each_with_index{|x,y| @防具类型[y] = x if x != ""}
end
def self.getequiphelp(equip)
help = ""
param = []
equip.params.each_with_index{|x,y| param.push([PARAM[y],x])}
param = param.select{|x| x[1] != 0}
param.each{|x| help += x[0] + ":" + x[1].to_int.to_s + "\n"}
features = equip.features
features.select{|x| x.code == 55}.each{|x| help += CODE[x.code] + ":双持武器" + "\n"}
features.select{|x| x.code == 11}.each{|x| help += CODE[x.code] + ":" + @属性[x.data_id] + "*" + x.value.to_s + "\n"}
features.select{|x| x.code == 12}.each{|x| help += CODE[x.code] + ":" + PARAM[x.data_id] + "*" + x.value.to_s + "\n"}
features.select{|x| x.code == 13}.each{|x| help += CODE[x.code] + ":" + @状态[x.data_id] + "*" + x.value.to_s + "\n"}
features.select{|x| x.code == 14}.each{|x| help += CODE[x.code] + ":" + @状态[x.data_id] + "\n"}
features.select{|x| x.code == 31}.each{|x| help += CODE[x.code] + ":" + @属性[x.data_id] + "\n"}
features.select{|x| x.code == 32}.each{|x| help += CODE[x.code] + ":" + @状态[x.data_id] + "+" + x.value.to_s + "\n"}
features.select{|x| x.code == 33}.each{|x| help += CODE[x.code] + ":" + x.value.to_s + "\n"}
features.select{|x| x.code == 34}.each{|x| help += CODE[x.code] + ":" + x.value.to_s + "\n"}
features.select{|x| x.code == 41}.each{|x| help += CODE[x.code] + ":" + (x.data_id == 1 ? "特技" : "魔法") + "\n"}
features.select{|x| x.code == 42}.each{|x| help += CODE[x.code] + ":" + (x.data_id == 1 ? "特技" : "魔法") + "\n"}
features.select{|x| x.code == 43}.each{|x| help += CODE[x.code] + ":" + $data_skills[x.data_id].name + "\n"}
features.select{|x| x.code == 44}.each{|x| help += CODE[x.code] + ":" + $data_skills[x.data_id].name + "\n"}
features.select{|x| x.code == 51}.each{|x| help += CODE[x.code] + ":" + @武器类型[x.data_id] + "\n"}
features.select{|x| x.code == 52}.each{|x| help += CODE[x.code] + ":" + @防具类型[x.data_id] + "\n"}
features.select{|x| x.code == 61}.each{|x| help += CODE[x.code] + ":" + x.value.to_s + "\n"}
features.select{|x| x.code == 62}.each{|x| help += CODE[x.code] + ":" + FLAG[x.data_id] + "\n"}
features.select{|x| x.code == 64}.each{|x| help += CODE[x.code] + ":" + @队伍能力[x.data_id] + "\n"}
featuresparam = []
featuresparam.push features.select{|x| x.code == 21}
featuresparam.push features.select{|x| x.code == 22}
featuresparam.push features.select{|x| x.code == 23}
featuresparam[0].each{|x| help += PARAM[x.data_id] + "*" + x.value.to_s + "\n"}
featuresparam[1].each{|x| help += XPARAM[x.data_id] + x.value.to_s + "\n"}
featuresparam[2].each{|x| help += SPARAM[x.data_id] + "*" + x.value.to_s + "\n"}
help
end
def self.getline(text,maxtext)
xtext = []
line = 0
text.each_line{|x| xtext.push x.sub(/\n/){}}
xtext.each{|x| x.size % maxtext != 0 ? line += x.size / maxtext + 1 : line += x.size / maxtext}
line
end
end
#==============================================================================
# ■ Window_Help
#------------------------------------------------------------------------------
# 显示特技和物品等的说明、以及角色状态的窗口
#==============================================================================
class Window_Help2 < Window_Base
#--------------------------------------------------------------------------
# ● 初始化对象
#--------------------------------------------------------------------------
def initialize(line_number = 0)
super(0, 0, 210, 0)
self.z = 150
contents.font.size = 14
hide
end
#--------------------------------------------------------------------------
# ● 设置内容
#--------------------------------------------------------------------------
def set_text(text)
@text = text
refresh
end
#--------------------------------------------------------------------------
# ● 清除
#--------------------------------------------------------------------------
def clear
set_text("")
end
#--------------------------------------------------------------------------
# ● 更新帮助位置
#--------------------------------------------------------------------------
def uppos(index,rect,window)
self.height = fitting_height2(Equipplus.getline(@xtext,13))
create_contents
contents.font.size = 14
rect.x -= window.ox
rect.y -= window.oy
ax = rect.x + rect.width + 10
ax = rect.x - self.width + 10 if ax + self.width > window.width + 10
ax += window.x
ax = 0 if ax < 0
ay = rect.y + rect.height
ay = rect.y - self.height if ay + self.height > window.height
ay += window.y
ay = 0 if ay < 0
self.x = ax
self.y = ay
set_text(@xtext)
show
end
#--------------------------------------------------------------------------
# ● 设置物品
# item : 技能、物品等
#--------------------------------------------------------------------------
def set_item(item)
if item == nil
set_text("")
return
end
@xtext = ""
@xtext = "名称:" + item.name + "\n"
@xtext += "介绍:" + item.description + "\n"
@xtext += "价格:" + item.price.to_s + "\n" if item.is_a?(RPG::EquipItem) || item.is_a?(RPG::Item)
@xtext += Equipplus.getequiphelp(item) if item.is_a?(RPG::EquipItem)
@xtext = @xtext[0,@text.size - 2] if @xtext[@xtext.size - 2,2] == "\n"
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
contents.clear
hide if @text == ""
draw_text_ex(4, 0, @text,width,40,false)
end
end
class Window_Base < Window
#--------------------------------------------------------------------------
# ● 计算窗口显示指定行数时的应用高度2*************************
#--------------------------------------------------------------------------
def fitting_height2(line_number)
line_number * contents.font.size + standard_padding * 2
end
#~ draw_text_ex的增强,使其可以自动换行 原作者:叶子 修改:wyongcan
#--------------------------------------------------------------------------
# ● 绘制带有控制符的文本内容
# 如果传递了width参数的话,会自动换行
#--------------------------------------------------------------------------
def draw_text_ex(x, y, text, width = nil,textwidth = nil,normalfont = true)
reset_font_settings if normalfont == true
text = convert_escape_characters(text)
pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
if width != nil
pos[:height] = contents.font.size
pos[:width] = width
pos[:textwidth] = textwidth
end
process_character(text.slice!(0, 1), text, pos) until text.empty?
end
#--------------------------------------------------------------------------
# ● 文字的处理
# c : 文字
# text : 绘制处理中的字符串缓存(字符串可能会被修改)
# pos : 绘制位置 {:x, :y, :new_x, :height}
#--------------------------------------------------------------------------
def process_character(c, text, pos)
case c
when "\r" # 回车
return
when "\n" # 换行
process_new_line(text, pos)
when "\f" # 翻页
process_new_page(text, pos)
when "\e" # 控制符
process_escape_character(obtain_escape_code(text), text, pos)
else # 普通文字
pos[:textwidth] == nil ? text_width = text_size(c).width : text_width = pos[:textwidth]
if pos[:width] != nil && pos[:x] - pos[:new_x] + text_width > pos[:width]
process_new_line(text, pos)
end
process_normal_character(c, pos)
end
end
end
class Window_ItemList < Window_Selectable
#--------------------------------------------------------------------------
# ● 更新帮助内容
#--------------------------------------------------------------------------
def update_help
@help_window.set_item(item)
@help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil
end
end
class Window_SkillList < Window_Selectable
#--------------------------------------------------------------------------
# ● 更新帮助内容
#--------------------------------------------------------------------------
def update_help
@help_window.set_item(item)
@help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil
end
end
class Window_ShopBuy < Window_Selectable
#--------------------------------------------------------------------------
# ● 更新帮助内容
#--------------------------------------------------------------------------
def update_help
@help_window.set_item(item) if @help_window
@help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil && @help_window
@status_window.item = item if @status_window
end
end
class Window_EquipSlot < Window_Selectable
#--------------------------------------------------------------------------
# ● 更新帮助内容
#--------------------------------------------------------------------------
def update_help
super
@help_window.set_item(item) if @help_window
@help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil && @help_window
@status_window.set_temp_actor(nil) if @status_window
end
end
class Scene_Shop < Scene_MenuBase
alias on_sell_ok_old on_sell_ok
def on_sell_ok
on_sell_ok_old
@help_window.hide
end
alias on_buy_ok_old on_buy_ok
def on_buy_ok
on_buy_ok_old
@help_window.hide
end
alias on_number_ok_old on_number_ok
def on_number_ok
on_number_ok_old
@help_window.refresh
@help_window.show
end
alias on_number_cancel_old on_number_cancel
def on_number_cancel
on_number_cancel_old
@help_window.refresh
@help_window.show
end
end
class Scene_Title < Scene_Base
alias start_old start
def start
start_old
Equipplus.equiphelpready
end
end
class Scene_ItemBase < Scene_MenuBase
alias old_on_actor_cancel on_actor_cancel
def on_actor_cancel
old_on_actor_cancel
@help_window.refresh
end
alias old_on_actor_ok on_actor_ok
def on_actor_ok
old_on_actor_ok
@help_window.refresh
end
end
class Window_Base < Window
alias old_process_new_line process_new_line
def process_new_line(text, pos)
old_process_new_line(text, pos)
pos[:height] = contents.font.size if pos[:width] != nil
end
end
class Scene_MenuBase < Scene_Base
def create_help_window
@help_window = Window_Help2.new
@help_window.viewport = @viewport
end
end
class Scene_Battle < Scene_Base
def create_help_window
@help_window = Window_Help2.new
@help_window.visible = false
end
end
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1