Project1

标题: 状态界面排版 [打印本页]

作者: 89444640    时间: 2018-6-20 18:21
标题: 状态界面排版
本帖最后由 89444640 于 2018-6-20 18:26 编辑

还是想套接近rmxp默认窗口的样式,
这个是现在的显示

都顶四个犄角了
感觉还是应该加个边框,大概排版是这样,每个横排32*32,角色半身像用的格子128*160,精灵显示的格子96*96,

背后加背景图,辅助指的是盾,因为有二刀流存在,我盾这里还有的不是盾,是一些杂七杂八东西代替盾的,虽然写左手也行,但是不如辅助通用范围广。

但是有点问题,首先是精灵主角不装备,这样会造成右上角空出来一块

考虑换成,如果装备枪械时候,显示枪装备的械大图256*64,子弹图标 32*32 剩余子弹/枪械最大装弹量。

不装备时候右上角空着,应该还行。
然后我对界面没什么想法……觉得能用而且能看得清楚就可以了,不知还有没有和默认界面比较配合的好的想法呢?

战斗属性先相关,miss太闹心,干脆命中只受到回避这个数值的影响,灵巧这个数值,改成影响暴击和回避,50点换1暴击1回避。
游戏中的回避修正改成绝对值,1就是绝对回避1%不受其他数值影响。

目前脚本是这样。
Scripts.rar (433.92 KB, 下载次数: 120)
作者: 灯笼菜刀王    时间: 2018-6-20 19:29
本帖最后由 灯笼菜刀王 于 2018-6-20 19:35 编辑

往窗口里面塞东西你不是会了, 自己 添图 添字 添槽 就可以啦. 这些东西就是调坐标的体力活罢了~ 自己动手丰衣足食

背景要加框的话, 直接把框画到背景里呗, 要什么框还不是为所欲为

状态窗口的话, 在 Window_Status 里面的  def refresh 下面, 第一句 self.contents.clear 保留 , 其他都可以擦掉,  然后随便你重新添, 记得最后的两个end别丢就好.

相关写法:  
攻击:  actor.atk
防御:  actor.pdef
魔防:  actor.mdef
力量:  actor.str
魔力:  actor.int
速度:  actor.agi
灵活:  actor.dex
HP:  actor.hp  actor.maxhp
SP:  actor.sp  actor.maxsp
等级: actor.level
经验: actor.exp
注意,以上这些是数字,  用在 添槽 的UP, 可以直接添,  如果是用于 添字的txt,就是要描绘数字的话, 后面要加上 .to_s  即:  actor.hp.to_s   标点全部半角, 英文全部小写.

名字:  actor.name
职业:  $data_classes[actor.class_id].name
以上这些是字符串, 直接添到 txt 就好

状态:  draw_actor_state(actor, x, y)  
经验/剩余经验 draw_actor_exp(actor, x, y)
以上直接用该命令即可.



武器和防具嘛,  把下面这个塞到 window_base 最后一个end前,  

  1. def 添武器(weapon_id,x,y)
  2.     return if weapon_id == 0
  3.     bitmap = RPG::Cache.icon($data_weapons[weapon_id].icon_name)
  4.     self.contents.blt(x,y, bitmap, Rect.new(0, 0 ,32, 32))
  5.     self.contents.draw_text(x+36,y,160,32,$data_weapons[weapon_id].name)
  6.   end
  7.   def 添防具(armor_id,x,y)
  8.     return if armorid == 0
  9.     bitmap = RPG::Cache.icon($data_armors[armor_id].icon_name)
  10.     self.contents.blt(x,y, bitmap, Rect.new(0, 0 ,32, 32))
  11.     self.contents.draw_text(x+36,y,160,32,$data_armors[armor_id].name)
  12.   end
复制代码

然后,用 添武器(id,x,y )  添防具(id,x,y)  这两个命令就可以了
武器 : actor.weapon_id
防具: 盾 actor.armor1_id   下面的分别 2 3 4 (如果有增加的话)5,6......

剩下的, 精灵和枪械预留着等你系统搞完再加

教个小技巧.  用PS定位大法



圈子里的就是这张图片在窗口里的坐标,  直接照抄即可, 可以精确到1像素
作者: b565185756    时间: 2018-6-21 00:38
大佬真的不考虑跟我学一下美术吗
作者: 89444640    时间: 2018-6-21 08:50
本帖最后由 89444640 于 2018-6-21 09:57 编辑

我这个是不是……应该在这里改?

我全局搜索,描绘名字那段,看了半天都觉得是在这里。
先试试看,有问题我再问。

问题1
    draw_actor_hp(@actor, 192, line_height(3.5), 128)
    draw_actor_sp(@actor, 192, line_height(4.5), 128)
这里面的
line_height(3.5)   line_height(4.5)是什么东西
我改成
    draw_actor_hp(@actor, 192,128)
    draw_actor_sp(@actor, 192,160)
显示如下


不知道是哪里重定义的,包括主界面,都是变成这种1000 1350的显示方式
分隔号 / 不见了
习惯的显示的方式应该为 1000/1350
怎么把/加回来?

问题2
哪里的脚本把HP MP重定义了?我怎么搜索才能给改回来?
我记得明明写的是血 气  有可能能话界面里一个英文都不想见,exp我都写的是经验值又变成英文了,好难受啊…………


问题3
下一级经验这个我找不到……或者说不知道怎么写。
如果把EXP显示弄成主界面这种显示方式

下面的条用直的吧,别的那个斜条我实在不知道怎么弄的,我喜欢看直的。
显示方式是
经验(文字) 条长度代表本次升级所需的总经验,数值表示还剩多少升级。自己觉得容易阅读。


作者: 灯笼菜刀王    时间: 2018-6-21 10:49
本帖最后由 灯笼菜刀王 于 2018-6-21 11:04 编辑
89444640 发表于 2018-6-21 08:50
我这个是不是……应该在这里改?

我全局搜索,描绘名字那段,看了半天都觉得是在这里。


确实是这里,猫大在这重定义了

不知道那些字母是什么意思的话,你可以用"添字" 这个命令,要写什么字都自己添, 数字,符号都一样, 无视其他的那些默认设置。

像HP, 想1000/1000 这样显示 就

添字(@actor.hp.to_s + "/" + @actor.maxhp.to_s, x, y, v,size,width,height,color)  #不要阴影就"添白字"

就可以了, 记得调整好给文字显示的矩形width,height,否则会显示不完整或者缩放。 v 就是PS字符工具里的"0左对齐,1中对齐,2右对齐"

※咱上面提到的"数字" 要作为文字显示, 后面一定要加  .to_s , 切记。要显示的文字一定要加"" 切记。可以通过 + 号把几个字符串放到一起一块显示, 就像上面的那个就是三个字符串(HP, 斜杠, MAXHP)组合在一起一块显示。

另外,color.new 不会用的话, 就把 window_base里, 添字,添白字的定义换成下面这个

RUBY 代码复制
  1. def 添字(txt, x, y, v=0,size=20,width = 120,height = 32,color=0)
  2.     self.contents.font.size = size
  3.     self.contents.font.color = Color.new(9, 9, 9, 255)
  4.     self.contents.draw_text(x+1, y+1, width, height, txt,v)
  5.     self.contents.font.color = text_color(color)
  6.     self.contents.draw_text(x, y, width, height, txt,v)
  7.   end
  8.   def 添白字(txt, x, y, v=0,size=20,width = 120,height = 32,color=0)
  9.     self.contents.font.size = size
  10.     self.contents.font.color = Color.new(9, 9, 9, 255)
  11.     self.contents.draw_text(x+1, y+1, width, height, txt,v)
  12.     self.contents.font.color = text_color(color)
  13.     self.contents.draw_text(x, y, width, height, txt,v)
  14.   end


这样, color直接添数字就可以改变颜色了, 颜色代码数字和\C的一样。


至于槽, 直接用 添槽 这个命令就好了, 要什么样的槽自己画, 为所欲为,  图片槽可比填充矩形华丽得多了, 你甚至可以画环形槽之类的-。-  

添槽(bar,up,down,x,y,v=0) #v槽类型,0 上下底, 1不要底

其中,up,代表变化的槽代表的数值,  down代表固定的数值,也就是槽底。 像要做HP槽, 那就  添槽("HP血条",@actor.hp,@actor.maxhp,x,y) 要显示槽底可以省略V不添。 然后做个2血条, 素材起名"HP血条"  槽底起名 "HP血条2" 放到windowskin文件夹里就好了


最后,

下一级所需经验 :  actor.next_exp_s      
还差多少经验升级:  actor.next_rest_exp_s   

上面两个都是字符串, 可以直接放到txt, 不可作为数字使用,
作者: 空值异常    时间: 2018-6-21 13:47
灯笼菜刀王 发表于 2018-6-20 19:29
往窗口里面塞东西你不是会了, 自己 添图 添字 添槽 就可以啦. 这些东西就是调坐标的体力活罢了~  ...

看到定位我不得不说,之前美术教我用 ps cc 2017 的新功能,选中一个图层之后按住 ctrl 键,然后移动鼠标到其它元素或者背景,就会自动显示四边到目标的距离,简直不能更好用ε=ε=(ノ≧∇≦)ノ
作者: 89444640    时间: 2018-6-21 14:12
本帖最后由 89444640 于 2018-6-21 14:14 编辑

添加文字勉强算过去了,显示的是这样

HP后面总是紧跟着数值,可能是没有血槽的原因,
然后我添血槽
添槽(bar,up,down,x,y,v=0) #v槽类型,0 上下底, 1不要底
理解为
BAR是用来表示血条的图片,up是数值当前值,down是数值最大值。
于是这么写
添槽("HP血条",192,128,v=0)   

显示无法定义变量什么什么的,哪里理解出现问题了?
作者: 灯笼菜刀王    时间: 2018-6-21 14:29
本帖最后由 灯笼菜刀王 于 2018-6-21 14:37 编辑
89444640 发表于 2018-6-21 14:12
添加文字勉强算过去了,显示的是这样

HP后面总是紧跟着数值,可能是没有血槽的原因,


第一个你理解对了, 后面的192是什么? 坐标?  X坐标必须填第4个, Y坐标填第5个。第二和第三必须要"血槽的上和下数值"  

简单的说,你的血条长短 是用  up/down 得到的百分比来显示的, 这样懂了么?  后面的V是一个有默认值的变量, 表示省略不添的话, 就默认为0,

正确写法:  添槽("HP血条",@actor.hp,@actor.maxhp,192,128)  

#弟6个值不填, 表示用默认的0,也就是显示上下底。 如果是要不显示底的槽,那128后面在加个1, 添槽("HP血条",@actor.hp,@actor.maxhp,192,128,1)  

up处添 当前HP的代码, down处添最大HP的代码, 这样这个血条就会按 当前HP/最大HP的百分比来显示, 这个就是槽的效果了。

如果你的能力值比如力量,也要有个槽, 但是力量并没有maxstr是吧, down要怎么添呢?   答案,直接添数值, 添你设置的"上限值" :  up 填 @actor.str, down 填 999 ,搞定。 能力值就可以使用"没有底的槽"模式, 这样避免整个界面到处都是槽=。=

up和down都添固定数值的话, 那就是一条永远不会变化的槽~~


最后, 文字的地方, 是可以加上空格的哦, 你想要让数值离文字远一点, 在"血"后面加上几个空格就可以了 , "血     " 这样



作者: 89444640    时间: 2018-6-21 15:41
本帖最后由 89444640 于 2018-6-21 15:59 编辑
灯笼菜刀王 发表于 2018-6-21 14:29
第一个你理解对了, 后面的192是什么? 坐标?  X坐标必须填第4个, Y坐标填第5个。第二和第三必须 ...


如果底框长度和槽长度不一样怎么处理?刚才等的时候画了个框,为了好看边缘比血条长出来一点

我改来改去还是现实不正常,我让两个图像一样长让血条不顶到头,减血从没有的地方开始减
我让图像短一点吧,就这样……而且文字还给盖住了


使用图像如下


底框



底框


我刚想起来,我用X-n行不行?试试看…………
不对-了以后连框一起动……不会了,等回复T T
作者: 89444640    时间: 2018-6-21 16:52
本帖最后由 89444640 于 2018-6-21 17:18 编辑

调成这样了

为什么显示数值的文字不见了?
看到回答了……改下顺序去。试了好几种,血槽只能改暗色才便于阅读,亮色瞎狗眼。
数值可以能正常显示了,但是为啥我一改血槽的字体大小,连装备什么的字体都变大了,

隶书果然是字大了才好看。
然后我看了一下别人的状态,

这字体显示位置怎么还不固定ORZ,明明是一个数值,
血 气字的大小都不一样是脑哪出……

主界面的HP显示位置在哪里呢?主界面显示HP时没有 / 想去加一个找不到位置

然后,exp的摆放位置
查到默认的exp下一级描绘这段是这么写的
    self.contents.draw_text(320, 80, 80, 32, "NEXT")
我说试试行不行  
  self.contents.draw_text("下一级",192,96,0,24,96,24,1 )
结果不行。
作者: 灯笼菜刀王    时间: 2018-6-21 17:28
本帖最后由 灯笼菜刀王 于 2018-6-21 17:30 编辑
89444640 发表于 2018-6-21 16:52
调成这样了

为什么显示数值的文字不见了?


self.contents.draw_text(320, 80, 80, 32, "NEXT")  这个只是描绘 NEXT 这个字符串而已

你想改,就要 self.contents.draw_text(320, 80, 80, 32, "下一级"),  这样写

那个格式排列是咱定义的 "添字"这个命令 的格式, 其他的命令可不适用哦~~


主界面 搜索 class Window_MenuStatus  这个就是主菜单的队伍状态窗口, 你也可以按改这里的方法改它

另外, 亮色槽可以配合暗色字嘛,  添字可以改颜色的哦。



字体变大那是因为它们在HP的句子下面咯, 如果没有设定它们的字体大小,就会直接继承上面的大小。(以及颜色)

想改的话,加上这句 self.contents.font.size = 22  这样这句下面的文本字体大小都会变成22
self.contents.font.color = text_color(n)   加上这句就是改颜色, n 就是颜色数字代码,和\C一样。

PS:添字命令内置了字体大小和颜色, 所以它就有和上面那两句子一样的功能, 即这个句子下面的字体和颜色就跟着它设置了。
作者: soulsaga    时间: 2018-6-21 21:41
路过问下..有没MUGEN人物头身比例大小跟PXZ的比较相近的?
作者: 89444640    时间: 2018-6-21 22:28
soulsaga 发表于 2018-6-21 21:41
路过问下..有没MUGEN人物头身比例大小跟PXZ的比较相近的?


跑题了,还是回一下吧,这个画风的,

动作挺多,刻画相对较为精细,位移是脸太大,跟我头像对比一下就知道了,身高接近但是这个头……这个头至少得缩成三分之一才正常,这个画风慎用,话多了都不会画正经画风了,而且全都会是变形动作,你看下这手够不到头顶的,应该算三头,但是身体结构又是四头左右的,所以我挺讨厌这种变形画风的,

那个什么……机器人大战OG无限边境,战斗时候的人物,画风应该是跟卡婊的乱斗系列一样,的就是那个太难提素材了,没见过全套的,以前听想好好学学的,现在就拉只能倒吧,

其他的只能说是,接近吧,其实差很多,放一起看就知道了

卡婊的街机龙与地下城也建议好好看看,那个我可是非常喜欢,

国产(台湾IGS)的三国战记人物也挺不错,
形意拳也挺好,不过这个游戏最大问题是基板,由于长宽比例造成了用的是cps2基板卡婊的画风(我估计是同一批像素美工干的)人物哪都好,为了适合屏幕画的太扁,也鼠疫一种变形人物了。

大恶司格斗的人物也可以看看 不过那个比例似乎,应该算kof画风的了。

Arcana Heart1~?这个系列人物其实应该算放大了的那个画风,你自己缩小为50%,邻近,看一下大概一个比例吧?


如果有兴趣,建议还是拿什么什么来着……心绮楼还是什么的,黄昏后来出的东方同人格斗游戏,换了画风的那个,把永恒格斗 cmx fxt fxtz的那批画风换了,换成6头的了,
不过那个也是有一些我不喜欢的缺点,第一就是描黑,我讨厌描黑边的,再有就是色太少,好歹cmx还算4色,心绮楼同色调只有3色,加上黑色边算4色。
虽然是省时间了,但是不利于立体感的表现,好好画同色调6色起,记得95年的街机美少女战士街机场景简直逆了天,同色调过度居然12~16色,cg描的?

不建议过多的学画三头身萌图,大多数时候是卖萌,打起来手只能摆姿势,手手脚太短,大多数时候光靠光效打人,而且很可能会造成画6头或者以上比例不会画,看游戏表现需求,就是个卖萌的游戏三头足矣,正经表现的,头身比越接近动画越好,别的不说,场景演出,控制好渲染就是动画。真手绘动画,有几个能来帮着做个人游戏,但是自己能画,就可以用动画的方式啦胶带剧情,
作者: soulsaga    时间: 2018-6-21 22:32
本帖最后由 soulsaga 于 2018-6-21 22:36 编辑

你说这个?我也想有全套..但是不现实..
还有在P站找到这个..

NEATT2.gif (940.82 KB, 下载次数: 21)

NEATT2.gif

作者: 89444640    时间: 2018-6-22 08:16
本帖最后由 89444640 于 2018-6-22 08:19 编辑

  #--------------------------------------------------------------------------
  # ● 获取数据项高
  #--------------------------------------------------------------------------
  def item_height
    [(self.height - 32) / [@item_max, 4].max,line_height(3)].max
  end

这里,class Window_MenuStatus  受到了相关信息,我加了/也不行

然后就是
# ■ Window_MenuStatus
#------------------------------------------------------------------------------
#  显示菜单画面和同伴状态的窗口。
#==============================================================================
module RPG
  module Cache
    def self.facefile(filename)
      self.load_bitmap("Graphics/Characters/Face/", filename)
    end
  end
end
class Window_MenuStatus < Window_Selectable

这里有一个。但是似乎继承到别的地方了,无从下手

那个
    self.contents.draw_text(192,96,32,128,"下一级")
加了以后无任何效果,估计是别的地方定义了
我有心好好找找,但是大多数都被改过了,实在无从下手ORZ,关键是我这上班老干扰思路实,连打字都大不了完整的一句话程序这活在没法干啊ORZ
当前调节成了这样,还请帮帮忙,实在不行了。
Scripts.rar (426.63 KB, 下载次数: 48)

作者: 灯笼菜刀王    时间: 2018-6-22 10:37
本帖最后由 灯笼菜刀王 于 2018-6-22 11:06 编辑
89444640 发表于 2018-6-22 08:16
#--------------------------------------------------------------------------
  # ● 获取数据项高
   ...


  其实咱的意思是让你Window_MenuStatus 也像状态菜单那样 "重新写" 这样就不用去纠结那些英文字母什么用途了~

要找回主菜单的斜杠, 搜索 def draw_current_and_max_values 这句, 把里面被注释掉的那句(绿色的) 前面的#去掉就好了,

我看不懂你一直纠结 self.contents.draw_text(192,96,32,128,"下一级") 干嘛用,  这句就是在坐标192,96的地方显示三个汉字, "下一级". 除此之外没任何效果. (你的脚本里,添的这句被你的血槽盖住了, 你当然看不到效果)

你要的效果在这里

添字("下一级",192,96,0,62,128) 这样写和它的效果是完全一样,还附赠 阴影+22字号+白色填充~ 你干嘛要去纠结那串字母呢?

咱给的三个方法是完全足够让你改UI,不去使用原本方法的, 给你定义这三个方法初衷就是让你方便理解和记忆 这三个命令的用途, 靠它们就可以实现基本全窗口的重制.  不用去费力记忆那一堆字母.

然后你一边揣着 F4F雄猫, 又一边去纠结怎么用零式, 何必呢?  雄猫性能压倒性的比零式强好不好=.=


最后, 你HPMP字符空间压得太厉害了,难怪HP的字符一变化就被压缩, 这样写还不如把 汉字"血" 和数字HP分两次描绘, 让显示HP/MHP的字符自己独享空间, 就不会出现系统给你压缩的情况了

想要HP数字靠到血槽右边去, 即文字"右对齐", 不需要加一堆空格.

添字(文本,  x,  y, 对齐 , 字号, 矩形宽, 矩形高, 颜色)   对齐这格 填上 2就右对齐了.  0是左对齐, 1是中间对齐, 2是右对齐  对齐方式用得很多, 所以咱才给它这么靠前的位置~ 好好记得它的存在,  

要加文字的时候, 设置矩形别太小气,尽量给大一些, 然后用对齐方式来调整文字的位置, 避免框太小,文字被压缩了.




作者: 89444640    时间: 2018-6-22 11:13
本帖最后由 89444640 于 2018-6-22 11:36 编辑

我以为每一个那啥……代码,每一行代码都要用固定的格式来写才不会出错,那我试试填字这句……
添白字("下一级",192,96,0,24)
下一级能在需要的位置显示了,然后
添白字("下一级",192,96,0,24,@actor.next_rest_exp_s)试图让后面显示下一级的exp数值
出现了

插件公共核心
645    sailcat_sepcore_draw_text(x, y, width, height, text, align)
可能是语法不同?
那么我应该如何添加
@actor.next_rest_exp_s这句表示exp的话呢?应该叫做引用变量什么的吧?不知道怎么写。


描绘exp的可能是这句
draw_current_and_max_values(x + 24, y, width - 24, actor.exp_s,actor.next_exp_s, normal_color, normal_color)
描绘变量 X+24 Y-24 角色 exp 角色下一级exp 眼色 颜色
但是这个/无论加在哪里都不对。

刚按照您说的改了一下,
把血放到槽前面写了,字体大小24,留位置128,没有再出现压缩。

刚想起来把字体做槽子上面当图片使也行--b
然后下一级这里可以按照获取的下一级exp变量,描绘进度槽,但是这个好像是减法增加槽?又不会了ORZ
作者: 灯笼菜刀王    时间: 2018-6-22 11:46
本帖最后由 灯笼菜刀王 于 2018-6-22 11:53 编辑
89444640 发表于 2018-6-22 11:13
我以为每一个那啥……代码,每一行代码都要用固定的格式来写才不会出错,那我试试填字这句……
添白字("下 ...


一个萝卜一个坑 牢牢记住这句话  看来一次和你说太多不行, 一句一句说你才记得住= =

添字(文本,  x,  y, 对齐 , 字号, 矩形宽, 矩形高, 颜色)   每个坑添的东西都是固定的,固定的,固定的,重要的话说三次,  再重复
一个萝卜一个坑 刷红加大加粗加斜加底下划删除线, 牢牢记住了

文本------就是填"要显示出来的东西",  填什么东西都不行, 写在第一格的 必须是你要显示的东西, 必须是字符串, 必须是文本 必须三连

x,y --------就是填坐标, 填什么东西都不行, 写在 二, 三个格子的, 必须是数字,必须是整数, 必须在窗口WH范围里否则会显示到外太空去让你以为没效果 必须三连

对齐------ 就是让第一格的那串文本 在5,6格画出来的那个矩形里的位置, 0靠左,1靠中间,2靠右.  写在第四格的必须是0,1,2这三个数字, 必须是半角字, 必须文本比矩形小才有效果 必须三连

字号------ 就是字体大小, 写在第五格必须是数字,必须是整数,必须大于8(再小看不清), 必须三连

矩形宽,矩形高 -------就是填要描绘文字区域的宽和高, 类似用PS文字工具拉出来的框. 填第六和第七格的,必须是数字,必须是整数,必须大于0 必须三连

颜色---- 就是内置颜色代码, 填第八个格子的, 必须是数字,必须是半角,必须是0-7的整数(除非你在text_color里新加其他颜色) 必须三连

然后看你的作业  添白字("下一级",192,96,0,24,@actor.next_rest_exp_s)  第六格塞个字符串干嘛? 想显示它,就只能填到第一格,  第一格有萝卜了, 那就再新建一个坑去插!!
作者: 灯笼菜刀王    时间: 2018-6-22 12:12
本帖最后由 灯笼菜刀王 于 2018-6-22 12:17 编辑
89444640 发表于 2018-6-22 11:13
我以为每一个那啥……代码,每一行代码都要用固定的格式来写才不会出错,那我试试填字这句……
添白字("下 ...


经验要用槽显示的话, 默认是没有直接提供外接函数给你up和down的,

要先定义(估计你早就有其他脚本定义过了,不管了, 新定义一个,省得有什么乱七八糟的冲突=.=)

在 game_actor 最后一个end前塞进下面的脚本
  1.   def 经验条数值
  2.    return @exp_list[@level+1] > 0 ? @exp - @exp_list[@level] : 1
  3.   end
  4.   def 经验槽数值
  5.    return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 1
  6.   end
复制代码


然后 up 填 @actor.经验条数值,  down 填 @actor.经验槽数值

这样会用了吧~ 记得
一个萝卜一个坑

别再想把它顺便塞到什么地方去= =
作者: soulsaga    时间: 2018-6-22 13:09
本帖最后由 soulsaga 于 2018-6-22 13:21 编辑

添白字("下一级:"+@actor.next_rest_exp_s,192,96,0,24)
字符串之间用加号可以连接起来。。请记住。。
作者: 89444640    时间: 2018-6-22 14:26
果然一会就开始作……有画了个经验槽,

但是“升级还需经验”这个词汇太难受了。和左侧的血 气 没有对齐还多占了一行。
还得好好思考,怎么就用一个字表示还差多少升级

然后右侧那个下一级是猫大定义的
    VOCAB_NEXT_LEVEL  = "下一级"        # 下一级经验 用语
我把下一级擦了还行,但是那个数值一直在这个位置显示,
我全局搜索VOCAB_NEXT_LEVEL只有这一行描述了这个,

怎么能给擦了?

上面默认脚本显示的
    draw_actor_name(@actor, 32, 32)
    draw_actor_class(@actor, 32, 64)
    draw_actor_level(@actor, 192,64)
    draw_actor_state(@actor, 192,32)
不知道是从哪里继承的,估计等级这里又压字了。
作者: 89444640    时间: 2018-6-22 15:13
干净多了

然后是添加怒气槽,这个就不添加动态的了
复制前面的好像不行。

if $game_switches[TP_VISIBLE]
    a = $game_variables[MAX_TP_ID][actor.id] != nil ? $game_variables[MAX_TP_ID][actor.id] : 0
    添槽("TP血条",这里是啥变量?,这里是啥变量?,192,160,1) if not ZERO_TP
    添图片("水晶体"+a.to_s,actor_x+6+(3-a)*13,108) if a != 0
end
作者: 89444640    时间: 2018-6-22 15:34
菜单那个EXP描绘异常应该是这里造成的
这个脚本不是我添的- -b不知道干什么用的

这段怎么改才能描出一每个角色XXX/XXX的直条经验值,看斜线太蛋疼。

#==========================================================================
  # * Draw EXP
  #     actor : actor
  #     x     : draw spot x-coordinate
  #     y     : draw spot y-coordinate
  #==========================================================================
  alias raz_bars_base_exp draw_actor_exp  
  def draw_actor_exp(actor, x, y, width = 204)
    if actor.level == 99
      draw_slant_bar(x, y + 18, 1, 1, 190, 6, bar_color = Color.new(0, 100, 0, 255), end_color = Color.new(0, 255, 0, 255))
    else
      draw_slant_bar(x, y + 18, actor.now_exp, actor.next_exp, 190, 6, bar_color = Color.new(0, 100, 0, 255), end_color = Color.new(255, 255, 255, 255))
    end
    raz_bars_base_exp(actor, x, y)
  end


作者: 灯笼菜刀王    时间: 2018-6-22 16:02
本帖最后由 灯笼菜刀王 于 2018-6-22 16:05 编辑

怒气槽还是帮你写好吧, 涉及一堆开关~出错就头大了

if $game_switches[TP_VISIBLE] and (not  ZERO_TP)
    x =
    y =
    a = $game_variables[MAX_TP_ID][@actor.id] != nil ? $game_variables[MAX_TP_ID][@actor.id] : 0
    添槽("TP血条",@actor.tp%1000,1000,x,y,0)
    #要槽底图片加这里
   if a != 0
    添槽("水晶体"+a.to_s,@actor.tp/1000,a,(3-a)*13-6-x,y)
    #要槽底图片加这里
  end
end

用槽当参照物把上面的x 和 y 填好就行了

水晶槽要做三个,1个水晶的图,2个水晶的图,3个水晶的图, 分别用 水晶体1, 水晶体2, 水晶体3 命名, 槽底的素材后面还要加上2, 就是 水晶体12, 水晶体22, 水晶体32
作者: 89444640    时间: 2018-6-22 17:03
灯笼菜刀王 发表于 2018-6-22 16:02
怒气槽还是帮你写好吧, 涉及一堆开关~出错就头大了

if $game_switches[TP_VISIBLE] and (not  Z ...

战斗中,使用增加怒气的技能,

Scene_Battle 4

      when 7  # 使用者
        @target_battlers.push(@active_battler)

然后显示这里因为没法增加还没看到效果,
    if $game_switches[TP_VISIBLE] and (not  ZERO_TP)
    x =208
    y =224
    a = $game_variables[MAX_TP_ID][@actor.id] != nil ? $game_variables[MAX_TP_ID][@actor.id] : 0
    添图片("TP血条菜单用2",208,224)
    添槽("TP血条菜单用",@actor.tp%1000,1000,x,y,0)
   if a != 0
    添图片("水晶体2",164,235)
    添槽("水晶体"+a.to_s,@actor.tp/1000,a,(3-a)*13-6-x,y)
  end
end
显示是这样的

条那边是正常的,但是水晶体显示不对劲,我写水晶体N就是水晶体N的图片,
命名应该没错,这个和敌人的通用


作者: 灯笼菜刀王    时间: 2018-6-22 20:55
本帖最后由 灯笼菜刀王 于 2018-6-22 20:59 编辑
89444640 发表于 2018-6-22 17:03
战斗中,使用增加怒气的技能,

Scene_Battle 4


这个不是怒气槽的问题,

    @战斗对像 = @target_battlers if @战斗对像.nil?
    @target_battlers = []
    @target_battlers = @战斗对像 if $game_variables[COMBO::COMBODPID] != ""

这里这句怎么这样写, 这样,满足第一条的时候, @战斗对象就变nil(因为此时@target_battlers是nil)
然后下面给@target_battlers数组化,
然后第三句,满足条件后, @target_battlers 又给变回 @战斗对象, 也就是nil , 接下来当然@target_battlers就不能是用push了.

这里有严重的逻辑问题, 好好理理吧,


然后水晶槽, 我看不出什么问题~ 唯一看出的问题就是, 添槽 最后一格不填,或者填0的话, 那是自带槽底的,就不用添图了
作者: soulsaga    时间: 2018-6-22 21:30
上Q收一下东西..
作者: 89444640    时间: 2018-6-24 06:43
灯笼菜刀王 发表于 2018-6-22 20:55
这个不是怒气槽的问题,

    @战斗对像 = @target_battlers if @战斗对像.nil?

不显示底槽不对劲,
如果只写一句
添槽("水晶体"+a.to_s,@actor.tp/1000,a,(3-a)*13-6-x,y)
显示的时候没有空水晶体,无法知道自己的怒气值上限是几个豆
还是说因为没调节好位置被遮挡住了?这个位置怎么调?

a是取得角色对应的怒气槽当前数值
(3-a)是啥
13-6-x是什么
这个对应的X Y数值从上面
x =208
y =224
继承了?

作者: 灯笼菜刀王    时间: 2018-6-24 15:40
89444640 发表于 2018-6-24 06:43
不显示底槽不对劲,
如果只写一句
添槽("水晶体"+a.to_s,@actor.tp/1000,a,(3-a)*13-6-x,y)


觉得坐标不好计算的话, 你也可以干脆直接用a的值来开分歧,依次画上不同数量的水晶槽, 反正只有3个~~

case a
when 1
添槽("水晶体1", @actor.tp/1000, a, x, y)
when 2
添槽("水晶体2", @actor.tp/1000, a, x, y)
when 3
添槽("水晶体3", @actor.tp/1000, a, x, y)
end

这样就容易理解了吧,
作者: 89444640    时间: 2018-6-24 16:26
灯笼菜刀王 发表于 2018-6-24 15:40
觉得坐标不好计算的话, 你也可以干脆直接用a的值来开分歧,依次画上不同数量的水晶槽, 反正只有 ...

直接改图,然后指定固定坐标。这回好受多了。

然后新的问题
1、用默认的描述方式没问题
    self.contents.draw_text(32, 256, 96, 32, $data_system.words.weapon)
    self.contents.draw_text(32, 288, 96, 32, $data_system.words.armor1)
    self.contents.draw_text(32, 320, 96, 32, $data_system.words.armor2)
    self.contents.draw_text(32, 352, 96, 32, $data_system.words.armor3)
    self.contents.draw_text(32, 384, 96, 32, $data_system.words.armor4)

    draw_item_name($data_weapons[@actor.weapon_id],128, 256)
    draw_item_name($data_armors[@actor.armor1_id], 128, 288)
    draw_item_name($data_armors[@actor.armor2_id], 128, 320)
    draw_item_name($data_armors[@actor.armor3_id], 128, 352)
    draw_item_name($data_armors[@actor.armor4_id], 128, 384)
    draw_item_name($data_armors[@actor.armor5_id], 128, 416)
   
但是道具后面名字跟的太近了,没法调到192 256开始的位置

2、增加了2号饰品,但是2号饰品肯定不能用armor5_id来写,怎么才能让5号饰品正常显示呢?
目前可以显示二号饰品的图标 和名字,但是无法显示二号饰品的文字
但是用这个
    self.contents.draw_text(32, 416, 96, 32, $data_system.words.armor5)
就会出错
目前想到的方法是,直接显示个文字,装饰品 反正效果是一样的
但是显示出来的字体会略微不一样。
如图

所有系统默认方式描绘出来的字体都没有哪一点小阴影
但是用脚本描绘出来的字体,即使描白字也有一点点小阴影,看起来不统一。

3、二刀流影响
二刀流第二把是武器,这个装备通用性,字面上我可以糊弄过去,辅助,武器也可以归类是辅助,盾牌也可以,扫帚也可以,
但是装备后的武器,在状态界面不能正常显示武器,

作者: 灯笼菜刀王    时间: 2018-6-24 16:46
本帖最后由 灯笼菜刀王 于 2018-6-24 17:06 编辑
89444640 发表于 2018-6-24 16:26
直接改图,然后指定固定坐标。这回好受多了。

然后新的问题


=v= 不好意思,添白字之前直接复制, 没删掉影子部分

  def 添白字(txt, x, y, v=0,size=20,width = 120,height = 32,color=0)
    self.contents.font.size = size
       self.contents.font.color = Color.new(9, 9, 9, 255)
    self.contents.draw_text(x+1, y+1, width, height, txt,v)

    self.contents.font.color = text_color(color)
    self.contents.draw_text(x, y, width, height, txt,v)
  end

到 window_base里,把红色的那两行删了它就没阴影了


------------------------------------------------------

二刀流  的武器这样写 draw_item_name($data_weapons[@actor.weapon2_id],x, y)

另外, 你可以不用"盾"这个字, 如果你每个角色的左手带的东西都不同,你可以用角色id来分歧

case @actor.id
when 1 #主角
   添字("副武器",XXXXX
when 2 #灵梦
  添字("灵符", XXXXX
when 3 #魔理沙
  添字("八卦炉",XXXXX
when 4 #阿尔西斯
  添字("盾",XXXXZ
end

嫌 道具图标和名字靠得太近, 那就把这段脚本塞到 window_base 最后一个end前。

  def 添武器(weapon_id,x,y)
    return if weapon_id == 0
    bitmap = RPG::Cache.icon($data_weapons[weapon_id].icon_name)
    self.contents.blt(x,y, bitmap, Rect.new(0, 0 ,32, 32))
    self.contents.draw_text(x+36,y,160,32,$data_weapons[weapon_id].name)
  end
  def 添防具(armor_id,x,y)
    return if armorid == 0
    bitmap = RPG::Cache.icon($data_armors[armor_id].icon_name)
    self.contents.blt(x,y, bitmap, Rect.new(0, 0 ,32, 32))
    self.contents.draw_text(x+36,y,160,32,$data_armors[armor_id].name)
  end

然后改红色字就可以调整距离

使用方法  添武器(@actor.weapon_id,x,y)  添装备(@actor.armor1_id,x,y)

二刀流    添武器(@actor.weapon2_id,x,y)

作者: soulsaga    时间: 2018-6-24 20:33
上下....QQ?
作者: Tsar_NicholasII    时间: 2018-6-24 22:25
魔塔样板7630改用不了
作者: 89444640    时间: 2018-6-25 11:28
灯笼菜刀王 发表于 2018-6-24 16:46
=v= 不好意思,添白字之前直接复制, 没删掉影子部分

  def 添白字(txt, x, y, v=0,size=20,width = 120,h ...

我只能设置一样大的了,现在是这样的情况,比如
第一行
添白字("血",160,162,0,24,96,28,0)
下面需要显示武器,用默认方式
draw_item_name($data_weapons[@actor.weapon2_id],128, 288)
这时候字体就是从上面继承下来的28号
比如我想让这个装备用更大的32号字体显示,如何书写?


【那就把这段脚本塞到 window_base 最后一个end前。
  def 添武器(weapon_id,x,y)】

这段复制过去了,无效
X数值没有+32显示装备的文字描述,还是在原位置。
作者: yang1zhi    时间: 2018-6-25 13:06
第一张图,你把头像改成全身CG,显示在背景上不是好看吗
作者: 89444640    时间: 2018-6-25 14:01
灯笼菜刀王 发表于 2018-6-24 16:46
=v= 不好意思,添白字之前直接复制, 没删掉影子部分

  def 添白字(txt, x, y, v=0,size=20,width = 120,h ...

嫌 道具图标和名字靠得太近, 那就把这段脚本塞到 window_base 最后一个end前。

  def 添武器(weapon_id,x,y)
    return if weapon_id == 0
    bitmap = RPG::Cache.icon($data_weapons[weapon_id].icon_name)
    self.contents.blt(x,y, bitmap, Rect.new(0, 0 ,32, 32))
    self.contents.draw_text(x+36,y,160,32,$data_weapons[weapon_id].name)
  end
  def 添防具(armor_id,x,y)
    return if armorid == 0
    bitmap = RPG::Cache.icon($data_armors[armor_id].icon_name)
    self.contents.blt(x,y, bitmap, Rect.new(0, 0 ,32, 32))
    self.contents.draw_text(x+36,y,160,32,$data_armors[armor_id].name)
  end
这段复制放到这里了,但是无效。


是什么原因呢?
作者: soulsaga    时间: 2018-6-25 14:57
89444640 发表于 2018-6-25 14:01
嫌 道具图标和名字靠得太近, 那就把这段脚本塞到 window_base 最后一个end前。

  def 添武器(weapon_id ...


https://home.gamer.com.tw/creationDetail.php?sn=2325335
你需要看一下脚本基础..注意用代理..
作者: 89444640    时间: 2018-6-25 15:37
本帖最后由 89444640 于 2018-6-25 16:28 编辑

    默认的描述方式是这样 ,我备份一下
    draw_item_name($data_weapons[@actor.weapon_id],128, 256)
    draw_item_name($data_armors[@actor.armor1_id], 128, 288)
    draw_item_name($data_armors[@actor.armor2_id], 128, 320)
    draw_item_name($data_armors[@actor.armor3_id], 128, 352)
    draw_item_name($data_armors[@actor.armor4_id], 128, 384)
    draw_item_name($data_armors[@actor.armor5_id], 128, 416)

现在改成了
    添武器(@actor.weapon_id,128,256)
武器显示正常
但是只要
    添防具(@actor.armor1_id,128,288)
    添防具(@actor.armor2_id,128,320)
    添防具(@actor.armor3_id,128,352)
    添防具(@actor.armor4_id,128,384)
    添防具(@actor.armor5_id,128,416)
出现

请问是什么情况呢?
原来查了个_

下一个问题
第二把武器的没有往后挪

怎么才能挪一下?

我这里是这么写的
    #二刀流的刀,描绘在默认盾的位置,只有当角色为6号妖梦时候文字描述为武器
case @actor.id
    when 6 #妖梦
    self.contents.draw_text(32, 292, 96, 24, $data_system.words.weapon)
    draw_item_name($data_weapons[@actor.weapon2_id],128, 288)
    else


作者: 89444640    时间: 2018-6-26 09:16
写角色属性数值这里出了问题
默认脚本是
    draw_actor_parameter(@actor, 96, 192, 0)
在某个坐标描绘角色参数0 可能参数0是攻击力

我用   
添槽("能力值血条",@actor.atk.to_s,@actor.maxatk.to_s,416,224,0)
显示错误……那个maxatk不对
最大值是怎么写的?
作者: soulsaga    时间: 2018-6-26 09:22
89444640 发表于 2018-6-26 09:16
写角色属性数值这里出了问题
默认脚本是
    draw_actor_parameter(@actor, 96, 192, 0)

最大值写999啊喂..之前菜刀不是说过了么..
作者: 89444640    时间: 2018-6-26 11:33
本帖最后由 89444640 于 2018-7-4 07:55 编辑
soulsaga 发表于 2018-6-26 09:22
最大值写999啊喂..之前菜刀不是说过了么..


大概这样……下面的数字还没填。

现在该弄精灵这两个字的位置了,找不到在哪里……

作者: soulsaga    时间: 2018-6-26 11:38
89444640 发表于 2018-6-26 11:33
大概这样……下面的数字还没填。

现在该弄精灵这两个字的位置了,找不到在哪里…… ...

#==============================================================================
# ■ Window_Status
#==============================================================================
class Window_Status < Window_Base
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  alias refresh_spirit refresh
  def refresh
    refresh_spirit
    draw_partner_name(@actor, 320, 0)
  end
end
作者: soulsaga    时间: 2018-6-26 11:56
本帖最后由 soulsaga 于 2018-6-26 11:57 编辑
89444640 发表于 2018-6-26 11:33
大概这样……下面的数字还没填。

现在该弄精灵这两个字的位置了,找不到在哪里…… ...


#==============================================================================
# ■ Window_Base
#==============================================================================
class Window_Base < Window
  #--------------------------------------------------------------------------
  # ● パートナー名表示(アクター用)
  #--------------------------------------------------------------------------
  def draw_partner_name(actor, x, y)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 80, 32, "精霊")
    self.contents.font.color = normal_color
    name = actor.partner.disable? ? "―" : actor.partner.obj.name
    self.contents.draw_text(x+60, 0, 120, 32, name)
  end

把self.contents.draw_text(x+60, 0, 120, 32, name)
的0改成y?
作者: 89444640    时间: 2018-6-26 15:21
先能正常显示再说吧,刚才单位连续跳闸,吓死我了,跳闸会造成数据库损坏虽然有备份。

字体压缩是因为原来用的默认写法,现在用添白字,就可以改正常位置了。

然后那个颜色……怎么改?其实没必要改了,但是后面精灵那个非得显示个浅蓝色- -b我也不知道怎么改成白的……

然后主界面这个经验和HP最大HP之间分隔的/还是没加上


全局搜索出来这么一片,其中好几个脚本不是我加的,加脚本以前没有/不显示的情况,所以只能猜测,

可能是这个脚本闹得

话说,折叠代码怎么用来着?太长了。

RUBY 代码复制
  1. # ————————————————————————————————————
  2. # 本脚本来自[url]www.66rpg.com[/url],转载请保留此信息
  3. # ————————————————————————————————————
  4.  
  5. # HP/SP/EXPゲージ表示スクリプト Ver 1.00
  6. # 配布元・サポートURL
  7. # [url]http://members.jcom.home.ne.jp/cogwheel/[/url]
  8.  
  9. #==============================================================================
  10. # ■ Game_Actor
  11. #------------------------------------------------------------------------------
  12. #  アクターを扱うクラスです。このクラスは Game_Actors クラス ($game_actors)
  13. # の内部で使用され、Game_Party クラス ($game_party) からも参照されます。
  14. #==============================================================================
  15.  
  16. class Game_Actor < Game_Battler
  17.   def now_exp
  18.     return @exp - @exp_list[@level]
  19.   end
  20.   def next_exp
  21.     return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
  22.   end
  23. end
  24.  
  25. #==============================================================================
  26. # ■ Window_Base
  27. #------------------------------------------------------------------------------
  28. #  ゲーム中のすべてのウィンドウのスーパークラスです。
  29. #==============================================================================
  30.  
  31. class Window_Base < Window
  32.   #--------------------------------------------------------------------------
  33.   # ● HP ゲージの描画
  34.   #--------------------------------------------------------------------------
  35.   # オリジナルのHP描画を draw_actor_hp_original と名前変更
  36.   alias :draw_actor_hp_original :draw_actor_hp
  37.    def draw_actor_hp(actor, x, y, width = 144)
  38.     # 変数rateに 現在のHP/MHPを代入
  39.     if actor.maxhp != 0
  40.       rate = actor.hp.to_f / actor.maxhp
  41.     else
  42.       rate = 0
  43.     end
  44.     # plus_x:X座標の位置補正 rate_x:X座標の位置補正(%) plus_y:Y座標の位置補正
  45.     # plus_width:幅の補正 rate_width:幅の補正(%) height:縦幅
  46.     # align1:描画タイプ1 0:左詰め 1:中央揃え 2:右詰め
  47.     # align2:描画タイプ2 0:上詰め 1:中央揃え 2:下詰め
  48.     # align3:ゲージタイプ 0:左詰め 1:右詰め
  49.     plus_x = 0
  50.     rate_x = 0
  51.     plus_y = 25
  52.     plus_width = 0
  53.     rate_width = 100
  54.     height = 10
  55.     align1 = 1
  56.     align2 = 2
  57.     align3 = 0
  58.     # グラデーション設定 grade1:空ゲージ grade2:実ゲージ
  59.     # (0:横にグラデーション 1:縦にグラデーション 2:斜めにグラデーション(激重))
  60.     grade1 = 1
  61.     grade2 = 0
  62.     # 色設定。color1:外枠,color2:中枠
  63.     # color3:空ゲージダークカラー,color4:空ゲージライトカラー
  64.     # color5:実ゲージダークカラー,color6:実ゲージライトカラー
  65.     color1 = Color.new(0, 0, 0, 192)
  66.     color2 = Color.new(255, 255, 192, 192)
  67.     color3 = Color.new(0, 0, 0, 192)
  68.     color4 = Color.new(64, 0, 0, 192)
  69.     color5 = Color.new(255 - 24* rate, 30 * rate, 14 * rate, 192)
  70.     color6 = Color.new(240 - 72 * rate, 240 * rate, 62 * rate, 192)
  71.     # 変数spに描画するゲージの幅を代入
  72.     if actor.maxhp != 0
  73.       hp = (width + plus_width) * actor.hp * rate_width / 100 / actor.maxhp
  74.     else
  75.       hp = 0
  76.     end
  77.     # ゲージの描画
  78.     gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
  79.                 width, plus_width + width * rate_width / 100,
  80.                 height, hp, align1, align2, align3,
  81.                 color1, color2, color3, color4, color5, color6, grade1, grade2)
  82.     # オリジナルのHP描画処理を呼び出し
  83.     draw_actor_hp_original(actor, x, y, width)
  84.   end
  85.   #--------------------------------------------------------------------------
  86.   # ● SP ゲージの描画
  87.   #--------------------------------------------------------------------------
  88.   # オリジナルのSP描画を draw_actor_sp_original と名前変更
  89.   alias :draw_actor_sp_original :draw_actor_sp
  90.   def draw_actor_sp(actor, x, y, width = 144)
  91.     # 変数rateに 現在のSP/MSPを代入
  92.     if actor.maxsp != 0
  93.       rate = actor.sp.to_f / actor.maxsp
  94.     else
  95.       rate = 1
  96.     end
  97.     # plus_x:X座標の位置補正 rate_x:X座標の位置補正(%) plus_y:Y座標の位置補正
  98.     # plus_width:幅の補正 rate_width:幅の補正(%) height:縦幅
  99.     # align1:描画タイプ1 0:左詰め 1:中央揃え 2:右詰め
  100.     # align2:描画タイプ2 0:上詰め 1:中央揃え 2:下詰め
  101.     # align3:ゲージタイプ 0:左詰め 1:右詰め
  102.     plus_x = 0
  103.     rate_x = 0
  104.     plus_y = 25
  105.     plus_width = 0
  106.     rate_width = 100
  107.     height = 10
  108.     align1 = 1
  109.     align2 = 2
  110.     align3 = 0
  111.     # グラデーション設定 grade1:空ゲージ grade2:実ゲージ
  112.     # (0:横にグラデーション 1:縦にグラデーション 2:斜めにグラデーション(激重))
  113.     grade1 = 1
  114.     grade2 = 0
  115.     # 色設定。color1:外枠,color2:中枠
  116.     # color3:空ゲージダークカラー,color4:空ゲージライトカラー
  117.     # color5:実ゲージダークカラー,color6:実ゲージライトカラー
  118.     color1 = Color.new(0, 0, 0, 192)
  119.     color2 = Color.new(255, 255, 192, 192)
  120.     color3 = Color.new(0, 0, 0, 192)
  121.     color4 = Color.new(0, 64, 0, 192)
  122.     color5 = Color.new(14 * rate, 80 - 24 * rate, 80 * rate, 192)
  123.     color6 = Color.new(62 * rate, 240 - 72 * rate, 240 * rate, 192)
  124.     # 変数spに描画するゲージの幅を代入
  125.     if actor.maxsp != 0
  126.       sp = (width + plus_width) * actor.sp * rate_width / 100 / actor.maxsp
  127.     else
  128.       sp = (width + plus_width) * rate_width / 100
  129.     end
  130.     # ゲージの描画
  131.     gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
  132.                 width, plus_width + width * rate_width / 100,
  133.                 height, sp, align1, align2, align3,
  134.                 color1, color2, color3, color4, color5, color6, grade1, grade2)
  135.     # オリジナルのSP描画処理を呼び出し
  136.     draw_actor_sp_original(actor, x, y, width)
  137.   end
  138.   #--------------------------------------------------------------------------
  139.   # ● 延迟时间描画
  140.   #--------------------------------------------------------------------------
  141.   def draw_actor_delay_time(actor, x, y, width = 144)
  142.     # 変数rateに 現在のSP/MSPを代入
  143.     if actor.delay_time_max != 0
  144.       rate = actor.delay_time.to_f / actor.delay_time_max
  145.     else
  146.       rate = 0
  147.     end
  148.     # plus_x:X座標の位置補正 rate_x:X座標の位置補正(%) plus_y:Y座標の位置補正
  149.     # plus_width:幅の補正 rate_width:幅の補正(%) height:縦幅
  150.     # align1:描画タイプ1 0:左詰め 1:中央揃え 2:右詰め
  151.     # align2:描画タイプ2 0:上詰め 1:中央揃え 2:下詰め
  152.     # align3:ゲージタイプ 0:左詰め 1:右詰め
  153.     plus_x = 0
  154.     rate_x = 0
  155.     plus_y = 25
  156.     plus_width = 0
  157.     rate_width = 100
  158.     height = 10
  159.     align1 = 1
  160.     align2 = 2
  161.     align3 = 0
  162.     # グラデーション設定 grade1:空ゲージ grade2:実ゲージ
  163.     # (0:横にグラデーション 1:縦にグラデーション 2:斜めにグラデーション(激重))
  164.     grade1 = 1
  165.     grade2 = 0
  166.     # 色設定。color1:外枠,color2:中枠
  167.     # color3:空ゲージダークカラー,color4:空ゲージライトカラー
  168.     # color5:実ゲージダークカラー,color6:実ゲージライトカラー
  169.     color1 = Color.new(0, 0, 0, 192)
  170.     color2 = Color.new(255, 255, 192, 192)
  171.     color3 = Color.new(0, 0, 0, 192)
  172.     color4 = Color.new(0, 64, 0, 192)
  173.     color5 = Color.new(100 * rate, 100 * rate, 0, 192)
  174.     color6 = Color.new(255 * rate, 255 * rate, 0, 192)
  175.     # 変数spに描画するゲージの幅を代入
  176.     if actor.delay_time_max != 0
  177.       sp = (width + plus_width) * actor.delay_time * rate_width / 100 / actor.delay_time_max
  178.     else
  179.       sp = (width + plus_width) * rate_width / 100
  180.     end
  181.     # ゲージの描画
  182.     gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
  183.                 width, plus_width + width * rate_width / 100,
  184.                 height, sp, align1, align2, align3,
  185.                 color1, color2, color3, color4, color5, color6, grade1, grade2)
  186.     # 描绘字符串 "行动时间"
  187.     self.contents.font.color = system_color
  188.     self.contents.font.size = 20
  189.     self.contents.draw_text(x, y, 120, 32, 'Delay')
  190.     self.contents.font.color = normal_color
  191.     self.contents.draw_text(x, y, 120, 32, actor.delay_time.to_s, 2)
  192.   end
  193.   #--------------------------------------------------------------------------
  194.   # ● 咏唱时间描画
  195.   #--------------------------------------------------------------------------
  196.   def draw_actor_casting_time(actor, x, y, width = 144)
  197.     # 変数rateに 現在のSP/MSPを代入
  198.     time = actor.casting_time_max - actor.casting_time
  199.     if actor.casting_time_max != 0
  200.       rate = time.to_f / actor.casting_time_max
  201.     else
  202.       rate = 0
  203.     end
  204.     # plus_x:X座標の位置補正 rate_x:X座標の位置補正(%) plus_y:Y座標の位置補正
  205.     # plus_width:幅の補正 rate_width:幅の補正(%) height:縦幅
  206.     # align1:描画タイプ1 0:左詰め 1:中央揃え 2:右詰め
  207.     # align2:描画タイプ2 0:上詰め 1:中央揃え 2:下詰め
  208.     # align3:ゲージタイプ 0:左詰め 1:右詰め
  209.     plus_x = 0
  210.     rate_x = 0
  211.     plus_y = 25
  212.     plus_width = 0
  213.     rate_width = 100
  214.     height = 10
  215.     align1 = 1
  216.     align2 = 2
  217.     align3 = 0
  218.     # グラデーション設定 grade1:空ゲージ grade2:実ゲージ
  219.     # (0:横にグラデーション 1:縦にグラデーション 2:斜めにグラデーション(激重))
  220.     grade1 = 1
  221.     grade2 = 0
  222.     # 色設定。color1:外枠,color2:中枠
  223.     # color3:空ゲージダークカラー,color4:空ゲージライトカラー
  224.     # color5:実ゲージダークカラー,color6:実ゲージライトカラー
  225.     color1 = Color.new(0, 0, 0, 192)
  226.     color2 = Color.new(255, 255, 192, 192)
  227.     color3 = Color.new(0, 0, 0, 192)
  228.     color4 = Color.new(0, 64, 0, 192)
  229.     color5 = Color.new(100 * rate, 100 * rate, 0, 192)
  230.     color6 = Color.new(255 * rate, 255 * rate, 0, 192)
  231.     # 変数spに描画するゲージの幅を代入
  232.     if actor.casting_time_max != 0
  233.       sp = (width + plus_width) * time * rate_width / 100 / actor.casting_time_max
  234.     else
  235.       sp = (width + plus_width) * rate_width / 100
  236.     end
  237.     # ゲージの描画
  238.     gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
  239.                 width, plus_width + width * rate_width / 100,
  240.                 height, sp, align1, align2, align3,
  241.                 color1, color2, color3, color4, color5, color6, grade1, grade2)
  242.     # 描绘字符串 "行动时间"
  243.     self.contents.font.color = system_color
  244.     self.contents.font.size = 20
  245.     self.contents.draw_text(x, y, 120, 32, 'Cast')
  246.     self.contents.font.color = normal_color
  247.     self.contents.draw_text(x, y, 120, 32, time.to_s, 2)
  248.   end
  249.   #--------------------------------------------------------------------------
  250.   # ● ゲージの描画
  251.   #--------------------------------------------------------------------------
  252.   def gauge_rect(x, y, rect_width, width, height, gauge, align1, align2, align3,
  253.                 color1, color2, color3, color4, color5, color6, grade1, grade2)
  254.     case align1
  255.     when 1
  256.       x += (rect_width - width) / 2
  257.     when 2
  258.       x += rect_width - width
  259.     end
  260.     case align2
  261.     when 1
  262.       y -= height / 2
  263.     when 2
  264.       y -= height
  265.     end
  266.     # 枠描画
  267.     self.contents.fill_rect(x, y, width, height, color1)
  268.     self.contents.fill_rect(x + 1, y + 1, width - 2, height - 2, color2)
  269.     if align3 == 0
  270.       if grade1 == 2
  271.         grade1 = 3
  272.       end
  273.       if grade2 == 2
  274.         grade2 = 3
  275.       end
  276.     end
  277.     if (align3 == 1 and grade1 == 0) or grade1 > 0
  278.       color = color3
  279.       color3 = color4
  280.       color4 = color
  281.     end
  282.     if (align3 == 1 and grade2 == 0) or grade2 > 0
  283.       color = color5
  284.       color5 = color6
  285.       color6 = color
  286.     end
  287.     # 空ゲージの描画
  288.     self.contents.gradation_rect(x + 2, y + 2, width - 4, height - 4,
  289.                                   color3, color4, grade1)
  290.     if align3 == 1
  291.       x += width - gauge
  292.     end
  293.     # 実ゲージの描画
  294.     self.contents.gradation_rect(x + 2, y + 2, gauge - 4, height - 4,
  295.                                   color5, color6, grade2)
  296.   end
  297. end
  298.  
  299. #------------------------------------------------------------------------------
  300. #  Bitmapクラスに新たな機能を追加します。
  301. #==============================================================================
  302.  
  303. class Bitmap
  304.   #--------------------------------------------------------------------------
  305.   # ● 矩形をグラデーション表示
  306.   #     color1 : スタートカラー
  307.   #     color2 : エンドカラー
  308.   #     align  :  0:横にグラデーション
  309.   #               1:縦にグラデーション
  310.   #               2:斜めにグラデーション(激重につき注意)
  311.   #--------------------------------------------------------------------------
  312.   def gradation_rect(x, y, width, height, color1, color2, align = 0)
  313.     if align == 0
  314.       for i in x...x + width
  315.         red   = color1.red + (color2.red - color1.red) * (i - x) / (width - 1)
  316.         green = color1.green +
  317.                 (color2.green - color1.green) * (i - x) / (width - 1)
  318.         blue  = color1.blue +
  319.                 (color2.blue - color1.blue) * (i - x) / (width - 1)
  320.         alpha = color1.alpha +
  321.                 (color2.alpha - color1.alpha) * (i - x) / (width - 1)
  322.         color = Color.new(red, green, blue, alpha)
  323.         fill_rect(i, y, 1, height, color)
  324.       end
  325.     elsif align == 1
  326.       y = Integer(y)
  327.       for i in y...y + height
  328.         red   = color1.red +
  329.                 (color2.red - color1.red) * (i - y) / (height - 1)
  330.         green = color1.green +
  331.                 (color2.green - color1.green) * (i - y) / (height - 1)
  332.         blue  = color1.blue +
  333.                 (color2.blue - color1.blue) * (i - y) / (height - 1)
  334.         alpha = color1.alpha +
  335.                 (color2.alpha - color1.alpha) * (i - y) / (height - 1)
  336.         color = Color.new(red, green, blue, alpha)
  337.         fill_rect(x, i, width, 1, color)
  338.       end
  339.     elsif align == 2
  340.       for i in x...x + width
  341.         for j in y...y + height
  342.           red   = color1.red + (color2.red - color1.red) *
  343.                   ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  344.           green = color1.green + (color2.green - color1.green) *
  345.                   ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  346.           blue  = color1.blue + (color2.blue - color1.blue) *
  347.                   ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  348.           alpha = color1.alpha + (color2.alpha - color1.alpha) *
  349.                   ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  350.           color = Color.new(red, green, blue, alpha)
  351.           set_pixel(i, j, color)
  352.         end
  353.       end
  354.     elsif align == 3
  355.       for i in x...x + width
  356.         for j in y...y + height
  357.           red   = color1.red + (color2.red - color1.red) *
  358.                 ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  359.           green = color1.green + (color2.green - color1.green) *
  360.                 ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  361.           blue  = color1.blue + (color2.blue - color1.blue) *
  362.                 ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  363.           alpha = color1.alpha + (color2.alpha - color1.alpha) *
  364.                 ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  365.           color = Color.new(red, green, blue, alpha)
  366.           set_pixel(i, j, color)
  367.         end
  368.       end
  369.     end
  370.   end
  371. end

作者: soulsaga    时间: 2018-6-26 15:53
本帖最后由 soulsaga 于 2018-6-26 16:09 编辑
89444640 发表于 2018-6-26 15:21
先能正常显示再说吧,刚才单位连续跳闸,吓死我了,跳闸会造成数据库损坏虽然有备份。

字体压缩是因为原来 ...


#--------------------------------------------------------------------------
  # ● 描绘当前和最大值
  #     current : 当前值
  #     max     : 最大值
  #     color1  : 当前值颜色
  #     color2  : 最大值颜色
  #--------------------------------------------------------------------------
  def draw_current_and_max_values(x, y, width, current, max, color1, color2)
    change_color(color1)
    half = (width - 12) >> 1
    if half < text_size(max).width
      draw_text(x, y, width, line_height, current, 2)
    else
      draw_text(x, y, half, line_height, current, 2)
      change_color(color2)
      #draw_text(x + half, y, 12, line_height, "/", 1)
      draw_text(x + half + 12, y, half, line_height, max, 0)
    end
  end

显示/去掉注译就行..

def draw_partner_name(actor, x, y)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 80, 32, "精霊")

这里第2行换了颜色..你懂的..
作者: 灯笼菜刀王    时间: 2018-6-26 17:32
本帖最后由 灯笼菜刀王 于 2018-6-26 18:36 编辑

  给你个数字大写插件, 可以把0-99999的数字转化为大写格式,  使用方法, 数字(n)   n填要转化的数字。

栗子:

a = 数字(@actor.level)   这样  a就是角色等级的 大写数字。 然后用 添字(a,XXXXXXX) 就可以了显示出来了

RUBY 代码复制
  1. #==============================
  2. #  数字大写化插件1.1      灯笼菜刀酱
  3. #==============================
  4. class Window_Base < Window
  5. def 大写(n)
  6.   case n
  7.   when 1
  8.     return "壹"
  9.   when 2
  10.     return "贰"
  11.   when 3
  12.     return "叁"
  13.   when 4
  14.     return "肆"
  15.   when 5
  16.     return "伍"
  17.   when 6
  18.     return "陆"
  19.   when 7
  20.     return "柒"
  21.   when 8
  22.     return "捌"
  23.   when 9
  24.     return "玖"
  25.   when 0
  26.     return ""
  27.   end
  28. end
  29. def 数字(n)
  30. return "超范围" if n < 0 and n > 99999
  31. return "零" if n == 0
  32.   a = 大写(n%10)
  33.   m = n / 10
  34.   b = n < 10 ? "" : m == 1 ? "拾" : m == 0 ? n%10 == 0 ? "" : "零" : 大写(m%10)+"拾"
  35.   m = n / 100
  36.   c = n < 100 ? "" : m == 0 ? n/10 == 0 ? "" : "零" : 大写(m%10)+"佰"
  37.   m = n / 1000
  38.   d = n < 1000 ? "" : m == 0 ? n/100 == 0 ? "" : "零" : 大写(m%10)+"仟"
  39.   m = n / 10000
  40.   e = n < 10000 ? "" : m == 0 ? n/1000 == 0 ? "" : "零" : 大写(m%10)+"萬"
  41.   return e+d+c+b+a
  42. end
  43. end

作者: 89444640    时间: 2018-6-26 17:34
可以把以前因为画不过来开除的角色,当做精灵使用叫回来了,但是精灵系统还得好好问问,加属性不能加太多了。

截止到风神录为止,萃香和芙兰在前面,因为动作不全我一直没做己方用,
说实话,风神录角色我都有点不想加,因为早苗国籍我实在给说不圆。
后面就只能无视了,我根本给说不圆,人家本来原作就没连着说。

即使每个角色画一个招式,只要不是那种摆个手卖萌的简单动作,好好画近身动作,还是挺累人的,我量力而为吧。

话说菜刀王,我这个精灵系统和子弹消耗系统一起调会不会混乱……是弄完一样再弄一样好吧?
作者: 89444640    时间: 2018-6-26 17:48
本帖最后由 89444640 于 2018-6-26 17:58 编辑
灯笼菜刀王 发表于 2018-6-26 17:32
给你个数字大写插件, 可以把0-99999的数字转化为大写格式,  使用方法, 数字(n)   n填要转化的数 ...



这个感觉是外国人做的
拾零…………
贰拾叁什么的到是没问题

优化一下文字显示看看

截个传说中的 五十零 留念XD

作者: soulsaga    时间: 2018-6-26 19:32
晚上了..说好的和大神的亲密交流呢..




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1