Project1

标题: 【有偿】<椎名君的UI脚本委托屋> [打印本页]

作者: cinderelmini    时间: 2014-12-25 21:12
标题: 【有偿】<椎名君的UI脚本委托屋>
本帖最后由 cinderelmini 于 2020-5-20 21:07 编辑

□留意

今日(2019-03-12)起修改:


□业务范围

※前置说明:
①效率没有保障,所以不接急需的复杂系统定制真是抱歉了~
②确定图书馆没有想要的东西?||去外站逛逛?||经常去触触们的空间有惊喜~
③触触请放过!
【这边神仙这么多不来看看嘛?】
⑤委托前请留意本楼顶上的留意项目,也许什么时候会出现“暂不接单”。
⑥如果是战斗改造类的委托就不接啦~
本帖倒序~
※业务明细:

□委托方式

关于代码委托:
回帖,格式自己定(据说帅的人排版很好看),
(有素材需求的委托请留下素材或者接单后再私下提供也可以的)
不过请尽可能详尽明确地列出委托需求,
接单后窝会私信扣扣,或者您可以先留扣扣。
↓正确的代码委托例↓

其他委托方便的话就回帖说明简略委托内容,或者直接私信联系。

□支付相关

■支付方式:

■代码相关的委托:

【暂时不用看这里的内容】


□使用和版权


□谜

这次暂时先这样啦,大家请多指教啦。
作者: 龙和许也    时间: 2014-12-25 21:19
你是谁?认识下?还是RM组冠军?
作者: 永燃的狂炎    时间: 2014-12-25 21:22
本帖最后由 永燃的狂炎 于 2014-12-25 21:31 编辑

膜拜KAMI!

赞同@VIPArcher 的想法,我特爱前辈的菜单脚本~❤
作者: VIPArcher    时间: 2014-12-25 21:22
圣诞节快乐,(去创建个组群丢这些脚本吧,会比较方便的说。
Github更方便

作者: 天使喝可乐    时间: 2014-12-25 22:30
好闲呢~!
现在每天搬砖应接不暇回家就睡了完全没空搞类似活动233
作者: 美丽晨露    时间: 2014-12-25 22:41
不能接受"小游戏"工程的脚本制作好可惜的说。
最近魔女还是要专注VX,XP的功能快忘完了·······
作者: 2610408    时间: 2014-12-30 21:58
恩,这个主意很好,祝你成功!
作者: 550806810    时间: 2014-12-30 22:22
唔,这里是自力更生毁原自带脚本的小白一枚~来认识认识大角虫角虫哒!(*/ω\*)
感觉自己没什么难以解决的,(凸!你过来干嘛!)大部分东西自力更生都能勉强凑合但是连合格的处女作都没出现过的渣渣一枚……
实在想不到什么可以拿来应付的脚本需求来求助啊QAQ大部分默认系统都用了十几个外站抓来的脚本美化了一点点找不到更多可以下手的地方了QAQ
呐,呐……那就可以做个菜单图片化的脚本范例我来自学好了\(^o^)/
写得尽量通俗易懂就好啦~我是没看过教程这种东西所以只能自己意会OTZ
那么,以上!再写就太长了啦【凸凸凸凸凸-_-#这还不长?
作者: yangjunyin2002    时间: 2015-2-14 15:13
表示……VX脚本还会写……转VA后反而根本看不懂……
作者: 中野梓    时间: 2015-2-14 17:55
明尼卡卡问你你开店了还怎么和它私奔(啥
顺便是哪个手残点到呵上去了简直丧病23333
作者: gaofei677    时间: 2015-2-14 22:41
本帖最后由 gaofei677 于 2015-2-14 22:52 编辑

在每张bitmap上draw_text绘制文字,按照我的想法应该是每张图片只显示自己应该显示的文字,但是实际写出来以后,发现每张图片不仅显示了自己的文字,还显示了其他图片的文字,求大家帮帮忙,看看我哪儿写错了

  1.   #--------------------------------------------------------------------------
  2.   # ● 显示图片信息(行程安排用)
  3.   #--------------------------------------------------------------------------
  4.   def updata_info
  5.     return if (@picture.name[/行程底板/].nil?) or (@updata_info_switch == true)
  6.     self.bitmap.font.name = ["黑体"]
  7.     self.bitmap.font.outline = false
  8.     self.bitmap.font.size = 16
  9.     self.bitmap.font.color.set(129,81,28)
  10.     rect = Rect.new(60, -45, 130, 130)
  11.     self.bitmap.draw_text(rect, get_schedule_info)
  12.     x = @picture.x
  13.     y = @picture.y
  14.     viewport = self.viewport
  15.     @sprite_picture_icon = Sprite_Picture_icon.new(viewport, x, y, get_schedule_info)
  16.     @updata_info_switch = true
  17.   end
  18.   #--------------------------------------------------------------------------
  19.   # ● 获取行程图标信息
  20.   #--------------------------------------------------------------------------
  21.   def get_schedule_info
  22.     num = $schedule.size
  23.     for i in 0..(num-1)
  24.       if self.y == (200+i*40)
  25.         return $schedule[i]
  26.       end
  27.     end
  28.   end
复制代码

作者: cinderelmini    时间: 2015-2-15 13:45
gaofei677 发表于 2015-2-14 22:41
在每张bitmap上draw_text绘制文字,按照我的想法应该是每张图片只显示自己应该显示的文字,但是实际写出来 ...
  1.   #--------------------------------------------------------------------------
  2.   # ● 显示图片信息(行程安排用)
  3.   #--------------------------------------------------------------------------
  4.   def updata_info
  5.     return if (@picture.name[/行程底板/].nil?) or (@updata_info_switch == true)
  6.     self.bitmap.clear    # ←这样就可以了吧?
  7.     self.bitmap.font.name = ["黑体"]
  8.     self.bitmap.font.outline = false
  9.     self.bitmap.font.size = 16
  10.     self.bitmap.font.color.set(129,81,28)
  11.     rect = Rect.new(60, -45, 130, 130)
  12.     self.bitmap.draw_text(rect, get_schedule_info)
  13.     x = @picture.x
  14.     y = @picture.y
  15.     viewport = self.viewport
  16.     @sprite_picture_icon = Sprite_Picture_icon.new(viewport, x, y, get_schedule_info)
  17.     @updata_info_switch = true
  18.   end
复制代码
总之试试看~
作者: 欧买歌    时间: 2015-3-11 16:28
https://rpg.blue/thread-375120-1-1.html
就是楼主上次回答我的问题……
想要移植到VA里……
作者: 欧买歌    时间: 2015-3-11 16:40
本帖最后由 欧买歌 于 2015-3-11 16:42 编辑

嗯对就是介个脚本!
https://rpg.blue/thread-375120-1-1.html
想要移植到VA
另外还有一个就是平时把菜单中的角色状态隐藏,只有按下技能、装备或状态选项时才会出现状态窗口的脚本
最后建议楼主把楼主写的脚本发到空间日志,以流传下来
作者: summer92    时间: 2015-3-11 23:18
超懒癌晚期求LZ把 默认战斗脚本改成 类似FF的 前排后排 阵型战斗系统 不可越排攻击 后排免疫一定比例物理攻击
作者: 欧买歌    时间: 2015-3-13 13:07
新建 文本文档.zip (1.54 KB, 下载次数: 56)
作者: 长弓巡洋集团    时间: 2015-3-13 20:13
本集团是围观冠军先生的......
不过暂时没有问题要问,待编辑。{:2_283:}
作者: 欧买歌    时间: 2015-3-26 20:25
新的任务又来了~XP~
个体值脚本,类似口袋妖怪的说~
其实我自己也能做出来的说~只是有点儿麻烦~(雾)
可以多个同id角色加入,每次加入那个角色就会有一项独立的新能力值,类似上次那个学习力脚本~
我只是为了给楼主练练手~(大雾)
作者: 上贺茂润    时间: 2015-3-29 07:46
楼主 窝想要一个vx解密游戏的小饭粒,vx木有的话va的也可以,能不能给个【吗手很长吗不就一只手伸到了冥王星而已……
作者: cinderelmini    时间: 2015-3-29 12:55
上贺茂润 发表于 2015-3-29 07:46
楼主 窝想要一个vx解密游戏的小饭粒,vx木有的话va的也可以,能不能给个【吗手很长吗不就一只手伸到了冥王 ...

菜单的话能自己做?
谜题的话可以右转:【这里】
其他的大概不用窝多说~
作者: cinderelmini    时间: 2015-3-29 13:09
欧买歌 发表于 2015-3-26 20:25
新的任务又来了~XP~
个体值脚本,类似口袋妖怪的说~
其实我自己也能做出来的说~只是有点儿麻烦~(雾)[/ ...


不知道你那边加入角色的句子是怎么写的,我是这样写的,

  1. class Game_Party
  2.   #--------------------------------------------------------------------------
  3.   # ● 加入同伴
  4.   #     actor_id : 角色 ID
  5.   #--------------------------------------------------------------------------
  6.   def add_actor(actor_id)
  7.     # 获取角色
  8.     actor = $game_actors[actor_id]
  9.     # 同伴人数未满 4 人、本角色不在队伍中的情况下
  10.     if @actors.size < 4
  11.       # 添加角色
  12.       @actors.push(@actors.include?(actor) ? actor.dup : actor)
  13.       # 还原主角
  14.       $game_player.refresh
  15.     end
  16.   end
  17. end
复制代码
也就是说加入角色的时候判定一下是否队伍里存在这个角色,
如果存在的话就用克隆人加入,不至于改属性的时候影响全部。

然后这样一来事件里的恢复HP之类的指令只能对角色本人起效,
顺便写了个小东西方便事件回血什么的

  1. class Interpreter
  2.   def c_hp(index, val)
  3.     $game_party.actors[index].hp += val if $game_party.actors[index]
  4.   end
  5. end
复制代码
至于MP什么的,照猫画虎大丈夫?
作者: 电车之熊    时间: 2015-10-31 22:39
您好 能否请您帮我编写一个VA 简单的菜单脚本呢
仿照圣女之歌2的菜单 http://pan.baidu.com/s/1nty9dk1  (视频的4:33处是菜单)
画面不用太精美安VA 的风格来就行,是这个意思就行,


若实在没有时间的话,只做出,物品,魔法,装备三栏也可以。
谢谢了。
作者: cinderelmini    时间: 2015-11-1 15:10
电车之熊 发表于 2015-10-31 22:39
您好 能否请您帮我编写一个VA 简单的菜单脚本呢
仿照圣女之歌2的菜单 http://pan.baidu.com/s/1nty9dk1  ( ...

试做了一下,物品界面倒是做好了,
但是发现技能页面有点麻烦。。
做倒不是说做不出来,但得重写很多东西,外加素材规格之类的影响。。
得花不少时间整理逻辑和排版之类的。。

最近在填坑,暂时不想花太多时间做这个……
如果愿意等的话什么时候窝闲下来了可以接着做下去……
作者: 冷峻逸    时间: 2015-11-4 12:44
提示: 作者被禁止或删除 内容自动屏蔽
作者: 大云梦泽    时间: 2016-3-2 20:45
能不能做一个状态栏界面,包括修改状态栏UI,各个按钮内部的UI。
做的比原来好看就行,用以前做过的给我也可以,图片我可以对照游戏内部的工程修改。
最好能帮忙兼容其他脚本
风格是幻想类菜单风格,esc呼出后的一系列菜单栏。
作者: 卡奥尼特    时间: 2016-3-2 23:31
不知不覺隔壁的工程量好大……
作者: 欧买歌    时间: 2016-3-3 17:10
https://rpg.blue/thread-389836-1-1.html
作者: 欧买歌    时间: 2016-3-6 19:38
本帖最后由 欧买歌 于 2016-3-6 20:58 编辑

嗯大触你好ORZ我又来破事问了
2014年学的脚本现在基本全都忘光光了
想把装备界面的攻击力,魔法防御以及武器去掉
我试着去改,却改成了这样,武器不知道怎么完美去掉……











我这又是错哪里了ORZ
作者: cinderelmini    时间: 2016-3-6 22:31
本帖最后由 cinderelmini 于 2016-3-18 14:02 编辑
欧买歌 发表于 2016-3-6 19:38
嗯大触你好ORZ我又来破事问了
2014年学的脚本现在基本全都忘光光了
想把装备界面的攻击力,魔法防御以及武 ...





【代码】

作者: square320    时间: 2016-3-12 00:18
本帖最后由 square320 于 2016-3-12 00:29 编辑

楼主好人,这次我来你店里求助咯~因为想麻烦你帮我写篇脚本= =

委托内容:简单的称号系统
这个称号系统没别的作用,纯收集向。不附加任何属性。只是可以通过窗口查看自己已经收集了多少个称号。
然后下面是界面布局= = 我给标出来了~(布局只要添加一个指令和一个窗口就行了...)



像这样,在左边的指令框里添加“称号”选项
当玩家选择称号选项后,再选择要查看的角色,便会从屏幕右边跳出一个窗口,窗口大小参照我在图中用红笔框出来的那部分。而这个窗口就是用来显示该角色迄今为止获得的所有成就。选择其中一个成就再按确定后便能装备它(只是这些成就没有任何附加属性,纯粹玩玩儿的= =)

大体上的思路就是这样= = 至于具体流程...就是每当玩家完成特定事件后就会强制更换新称号(事件中设定),然后系统就会将这个新称号记录下来。玩家若是想更换称号的话可以通过“称号”指令进行更改。(尽管称号这玩意儿并没有什么用...)

以上,拜托啦

额...对了,还有个请求= = 不过这个更简单...只是单纯的想加一个窗口...原因只是因为我觉得系统默认的角色设置里面,那个说明栏太小了,能写的东西有限..所以我想换个更大的窗口来显示人物说明= =

具体做法是...



这是人物的状态界面= = 绿框是说明栏1,这个不变

新增说明框2,框的大小参照我图中红框标出来的部分= = 然后设置成人物状态界面下再按一次确定键就会从屏幕右边跳出说明框2,上面能显示更多的内容= =

就这些,每次都麻烦你真是有点不好意思~

这里先谢谢咯~至于2项委托的报酬,您可以私信我说哈~

作者: FHNBHJ    时间: 2016-3-12 17:46
UI废的新坑菜单打包完成啦~
本人脚本废,写的兼容性爆差的脚本都平安无事兼容了。
工时应该是三天。








作者: 欧买歌    时间: 2016-3-16 21:14
cinderelmini 发表于 2016-3-6 22:31

好吧求给个现成的Scenc_Eq那啥
我自己改的出现了两个不正常的地方
深深感受到自己的无能QAQ
作者: shencao    时间: 2016-3-17 11:33
虽然知道不要代入头像,但是无论何时都觉得lz说话(配上头像)真是好温柔啊(っ´ω`c)
嗯我想委托一个,不知道可不可以~
[va]
委托:在选择敌人的时候,对应敌人的战斗图闪烁。
说明:我用的默认的战斗。在选择敌人名字的时候,希望对应的敌人战斗图可以闪烁。
附加内容:如果能顺带自定义闪烁方式就更好了~(我想改个颜色,当然我自己再定义一遍也可以啦不过反正都委托了嘛嘿嘿~

这个我在站内找到过脚本,不过那个版本有bug,提问后也没解决,我自己解决不了_(:з」∠)_
以前的帖子在这里lz参考?(当然不参考也行?) https://rpg.blue/thread-381568-1-1.html
没用外站的脚本(比如Atelier-Rgss)是因为我就是用的默认战斗完全不需要辣么多附加的功能,而辣么多附加功能我插进去了又不用我觉得亏得慌干脆就不用了(喂
作者: 御曹司    时间: 2016-3-21 10:12
本帖最后由 御曹司 于 2016-3-21 19:59 编辑

那个、您好。

请问有没有方法、让RMVA的
“无法使用(没有对应装备、被禁用)的技能在战斗的技能栏里面无法显示“
最好菜单中还是能显示...不过不显示也无所谓
我试着仿照
RUBY 代码复制
  1. class Game_BattlerBase
  2.   alias ast_20141004 added_skill_types
  3.   def added_skill_types
  4.     ast_20141004.delete_if &method(:skill_type_sealed?)
  5.   end
  6. end

写但是失败了...


原来应该 class Window_BattleSkill < Window_SkillList

class Window_BattleSkill < Window_SkillList
    def include?(item)
    item && item.stype_id == @stype_id && [email protected]_sealed?(item.id) && @actor.skill_wtype_ok?(item)       
    end
end
就可以了,,,

非常感谢[某位[ 大大的其实是完全攒写指导。
话说这个也许能加到五行脚本里?  
作者: duzine    时间: 2016-3-29 00:06
本帖最后由 duzine 于 2016-3-29 00:08 编辑

商店有賣幫人修腳本的嗎?

已經困擾幾個月,訪問原作者也無果
可以的話,我願意付出大量經驗
拜託了  (順便感謝大大平日相助

mode7 與反lag腳本衝突,只要開啟飛船或3D功能就會發生
這兩個腳本都是無法割捨的重要腳本,反lag是當下唯一能解決lag問題,對我遊戲兼容度最高的
而mode7已經深根遊戲了,不可拋棄

BUG.rar (1.49 MB, 下载次数: 61)
作者: duzine    时间: 2016-3-30 13:41
本帖最后由 duzine 于 2016-3-30 14:38 编辑

看來還沒結束...
改變角度的功能失效了,剛好又是最關鍵的功能 (沒了這個,就好像冰淇淋只剩餅乾...


BUG.rar (1.49 MB, 下载次数: 43)



話說我好像已經找到反lag腳本那樣寫的原因了,單獨測試某些腳本跟反lag的相性所發現


奇怪的是雖然測試的腳本跟反lag單獨放一起會出錯,但在我遊戲本體裡面達成完美平衡....真不知道是哪個腳本當了和事佬...


我遊戲中的小遊戲,小精靈那種的 (別名吃豆人


用上了反lag修正版後


各種空中走鋼索...

作者: duzine    时间: 2016-3-30 14:50
如果沒弄錯應該是這一段604~609 (我有新增幾句錯誤說明,所以多幾行

作者: zx903193387    时间: 2016-3-30 18:45
{:2_276:}{:2_276:}求在VIPArcher的装备说明脚本上增加能够在白魔的装备合成脚本的界面上正确呼出说明窗口的功能,应该算是个小手术
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ 技能物品说明增强 蓝本:wyongcan
  4. # 修改 :VIPArcher
  5. #
  6. # 改动说明:
  7. # 改用新的帮助窗口和新定义draw_text_vip方法来增强兼容性
  8. # 更改初始化数据时机以支持跳过标题
  9. # 追加对普通物品和技能的说明内容
  10. # 修改了对帮助窗口行数的计算以支持控制符
  11. # 加上了各种颜色的设置,具体更高级的玩法自己领悟吧
  12. # 改成光标不动一段时间后才会出现帮助窗口
  13. #
  14. #  -- 本脚本来自 [url]https://rpg.blue[/url] 使用或转载请保留以上信息。
  15. #==============================================================================
  16. $VIPArcherScript ||= {};$VIPArcherScript[:help_ex] = 20141007
  17. $VIPArcherScript[:equip_limit] = false #是否使用了后知后觉的装备能力限制
  18. class << DataManager
  19.   alias_method :vip_load_database, :load_database
  20.   #--------------------------------------------------------------------------
  21.   # ● 读取数据库
  22.   #--------------------------------------------------------------------------
  23.   def load_database
  24.     vip_load_database
  25.     VIPArcher::Equipplus.equiphelpready
  26.   end
  27. end
  28. module VIPArcher;end
  29. module VIPArcher::Equipplus
  30.   TIME = 15 #帮助窗口自动出现的时间(单位帧
  31.   Font_Name = "微软雅黑" # 推荐"微软雅黑"
  32.   Font_Size = 20              # "微软雅黑"的话就20号字体
  33.   UP   = 24 #能力值提升颜色编号
  34.   DOWN = 25 #能力值下降颜色编号
  35.   VIP  = 14 #特殊能力颜色编号
  36.   MP   = 23
  37.   TP   = 29
  38.   CODE ={
  39.     11 => "属性抗性",
  40.     12 => "弱化抗性",
  41.     13 => "状态抗性",
  42.     14 => "状态免疫",
  43.     21 => "普通能力",
  44.     22 => "添加能力",
  45.     23 => "特殊能力",
  46.     31 => "附带属性",
  47.     32 => "附带状态",
  48.     33 => "攻击速度",
  49.     34 => "添加攻击次数",
  50.     41 => "添加技能类型",
  51.     42 => "禁用技能类型",
  52.     43 => "添加技能",
  53.     44 => "禁用技能",
  54.     51 => "可装备武器类型",
  55.     52 => "可装备护甲类型",
  56.     53 => "固定装备",
  57.     54 => "禁用装备",
  58.     55 => "装备风格",
  59.     61 => "添加行动次数",
  60.     62 => "特殊标志",
  61.     63 => "消失效果",
  62.     64 => "队伍能力"}
  63.   #特殊标志
  64.   FLAG ={
  65.     0 => "自动战斗",
  66.     1 => "擅长防御",
  67.     2 => "保护弱者",
  68.     3 => "特技专注"}
  69.   #技能效果范围
  70.   SCOPE ={
  71.     0 => "无",
  72.     1 => "单个敌人",
  73.     2 => "全体敌人",
  74.     3 => "一个随机敌人",
  75.     4 => "两个随机敌人",
  76.     5 => "三个随机敌人",
  77.     6 => "四个随机敌人",
  78.     7 => "单个队友",
  79.     8 => "全体队友",
  80.     9 => "单个队友(战斗不能)",
  81.     10 => "全体队友(战斗不能)",
  82.     11 => "使用者" }
  83.   #技能命中类型
  84.   HIT ={
  85.     0 => "必定命中",
  86.     1 => "物理攻击",
  87.     2 => "魔法攻击"}
  88.   #使用限制
  89.   OCCASION ={
  90.     0 => "随时可用",
  91.     1 => "仅战斗中",
  92.     2 => "仅菜单中",
  93.     3 => "不能使用"}
  94.   #添加能力
  95.   XPARAM ={
  96.     0 => "物理命中几率:",
  97.     1 => "物理闪避几率:",
  98.     2 => "必杀几率:",
  99.     3 => "必杀闪避几率:",
  100.     4 => "魔法闪避几率:",
  101.     5 => "魔法反射几率:",
  102.     6 => "物理反击几率:",
  103.     7 => "体力值再生速度:",
  104.     8 => "魔力值再生速度:",
  105.     9 => "特技值再生速度:"}
  106.   #特殊能力
  107.   SPARAM ={
  108.     0 => "受到攻击的几率",
  109.     1 => "防御效果比率",
  110.     2 => "恢复效果比率",
  111.     3 => "药理知识",
  112.     4 => "MP消费率",
  113.     5 => "TP消耗率",
  114.     6 => "物理伤害加成",
  115.     7 => "魔法伤害加成",
  116.     8 => "地形伤害加成",
  117.     9 => "经验获得加成"}
  118.   #装备风格  require 装备风格扩展脚本
  119.   SLOT_TYPE ={
  120.     0 => "普通",
  121.     1 => "双持武器",
  122.     2 => "索爷三刀流",
  123.     3 => "NPC",
  124.     4 => "233",
  125.     5 => "论坛@的BUG好烦啊"}
  126.   #队伍能力
  127.   PARTY_ABILITY ={
  128.     0 => "遇敌几率减半",
  129.     1 => "随机遇敌无效",
  130.     2 => "敌人偷袭无效",
  131.     3 => "先制攻击几率上升",
  132.     4 => "获得金钱数量双倍",
  133.     5 => "物品掉落几率双倍"}
  134.   #伤害类型
  135.   DAMAGE_TYPE = {
  136.     0 => "无",
  137.     1 => "体力值伤害",
  138.     2 => "魔力值伤害",
  139.     3 => "体力值恢复",
  140.     4 => "魔力值恢复",
  141.     5 => "体力值吸收",
  142.     6 => "魔力值吸收"}
  143.   #普通能力
  144.   #这只是个示范,你也可以依照个人喜好对这些用语添加颜色控制符
  145.   @params ={
  146.     0 => "\\c[17]最大HP",
  147.     1 => "\\c[16]最大MP",
  148.     2 => "\\c[20]力量",
  149.     3 => "\\c[21]智力",
  150.     4 => "\\c[30]敏捷",
  151.     5 => "\\c[31]防御",
  152.     6 => "\\c[14]速度",
  153.     7 => "\\c[17]幸运"}
  154.   #我举例技能类型的原因就是因为它 短
  155.   @skill_types = { # 这个和下面equiphelpready里注释掉的做的是一样的事
  156.                    # 只是下面是读取数据库添加用语,这里是手动枚举
  157.     1 => "\\c[1]特技",
  158.     2 => "\\c[2]魔法",
  159.     3 => "\\c[3]必杀",
  160.     4 => "\\c[5]卖萌"}
  161.   #初始化数据,当然如果你要用上面那样的控制符改变颜色的话
  162.   #欢迎枚举格式就是上面这样用Hash,用ID做键把用语对应起来
  163.   def self.equiphelpready
  164.     params = $data_system.terms.params
  165.     elements = $data_system.elements
  166.     weapon_types = $data_system.weapon_types
  167.     armor_types = $data_system.armor_types
  168.     etypes = $data_system.terms.etypes
  169.     skill_types = $data_system.skill_types
  170.     @states       ||= {}
  171.     @params       ||= {}
  172.     @weapon_types ||= {}
  173.     @armor_types  ||= {}
  174.     @etypes       ||= {}
  175.     @skill_types  ||= {}
  176.     @elements     ||= {}
  177.     skill_types.each_with_index{|x,y| @skill_types[y] = x if !x.nil?} if @skill_types == {}
  178.     $data_states.each{|x| @states[x.id] = x.name if !x.nil?} if @states == {}
  179.     elements.each_with_index{|x,y| @elements[y] = x if !x.nil?} if @elements == {}
  180.     weapon_types.each_with_index{|x,y| @weapon_types[y] = x if !x.nil?} if @weapon_types == {}
  181.     armor_types.each_with_index{|x,y| @armor_types[y] = x if !x.nil?} if @armor_types == {}
  182.     etypes.each_with_index{|x,y| @etypes[y] = x} if @etypes == {}
  183.     params.each_with_index{|x,y| @params[y] = x} if @params == {}
  184.   end
  185.   #获取装备帮助内容
  186.   def self.getequiphelp(equip)
  187.     help = ""
  188.     param = []
  189.     help += "\\c[16]装备位置:#{Vocab::etype(equip.etype_id)}\\c[0]\n"
  190.     if $VIPArcherScript[:equip_limit] #装备能力限制
  191.       help += "\\c[16]等级需求:#{equip.level_limit}\n" if equip.level_limit > 0
  192.       param_limit = []
  193.       for i in 0..7
  194.         if equip.params_limit(i) != 0
  195.           help += "\\c[16]#{@params[i]}需求:#{equip.params_limit(i)}\\c[0]\n"
  196.         end
  197.       end
  198.     end
  199.     equip.params.each_with_index{|x,y| param.push([@params[y],x])}
  200.     param = param.select{|x| x[1] != 0}
  201.     param.each{|x| help += "\\c[#{x[1]>0? UP : DOWN}]#{x[0]}:\\c[#{x[1]>0? UP : DOWN}]#{"﹢"if x[1]>0}#{x[1].to_int.to_s}\\c[0]\n"}
  202.     features = equip.features
  203.     featuresparam = []
  204.     featuresparam.push features.select{|x| x.code == 21}
  205.     featuresparam.push features.select{|x| x.code == 22}
  206.     featuresparam.push features.select{|x| x.code == 23}
  207.     featuresparam[0].each{|x| help += "\\c[#{x.value<0?DOWN: UP}]#{@params[x.data_id]}#{x.value<0?"﹣":"﹢"}#{(x.value.abs*100).to_i}%\n"}
  208.     featuresparam[1].each{|x| help += "\\c[#{x.value<0?DOWN: UP}]#{XPARAM[x.data_id]}#{x.value<0?"﹣":"﹢"}#{(x.value.abs*100).to_i}%\n"}
  209.     featuresparam[2].each{|x| help += "\\c[#{x.value<0?DOWN: UP}]#{SPARAM[x.data_id]}#{x.value<0?"﹣":"﹢"}#{(x.value.abs*100).to_i}%\n"}
  210.     if $VIPArcherScript[:slot_type]
  211.       help += "\\c[#{VIP}]#{CODE[55]}:#{SLOT_TYPE[$1.to_i]}\\c[0]\n" if equip.note =~ /<slot_type\s*[:](.*)>/i
  212.     else
  213.       features.select{|x| x.code == 55}.each{|x| help += "\\c[#{VIP}]#{CODE[x.code]}:双持武器\\c[0]\n"}
  214.     end
  215.     features.select{|x| x.code == 11}.each{|x| help += "\\c[#{UP}]#{CODE[x.code]}:#{@elements[x.data_id]}×#{(x.value*100).to_i}%\\c[0]\n"}
  216.     features.select{|x| x.code == 12}.each{|x| help += "\\c[#{UP}]#{CODE[x.code]}:#{@params[x.data_id]}×#{(x.value*100).to_i}%\\c[0]\n"}
  217.     features.select{|x| x.code == 13}.each{|x| help += "\\c[#{UP}]#{CODE[x.code]}:#{@states[x.data_id]}×#{(x.value*100).to_i}%\\c[0]\n"}
  218.     features.select{|x| x.code == 14}.each{|x| help += "\\c[#{VIP}]#{CODE[x.code]}:#{@states[x.data_id]}\\c[0]\n"}
  219.     features.select{|x| x.code == 31}.each{|x| help += "\\c[#{UP}]#{CODE[x.code]}:#{@elements[x.data_id]}\\c[0]\n"}
  220.     features.select{|x| x.code == 32}.each{|x| help += "\\c[#{UP}]#{CODE[x.code]}:#{@states[x.data_id]}#{(x.value*100).to_i}%\\c[0]\n"}
  221.     features.select{|x| x.code == 33}.each{|x| help += "\\c[#{x.value>0? UP : DOWN}]#{CODE[x.code]}:#{x.value}\\c[0]\n"}
  222.     features.select{|x| x.code == 34}.each{|x| help += "\\c[#{UP}]#{CODE[x.code]}:#{x.value}\\c[0]\n"}
  223.     features.select{|x| x.code == 41}.each{|x| help += "\\c[#{UP}]#{CODE[x.code]}:#{@skill_types[x.data_id]}\\c[0]\n"}
  224.     features.select{|x| x.code == 42}.each{|x| help += "\\c[#{DOWN}]#{CODE[x.code]}:#{@skill_types[x.data_id]}\\c[0]\n"}
  225.     features.select{|x| x.code == 43}.each{|x| help += "\\c[#{UP}]#{CODE[x.code]}:#{$data_skills[x.data_id].name}\\c[0]\n"}
  226.     features.select{|x| x.code == 44}.each{|x| help += "\\c[#{DOWN}]#{CODE[x.code]}:#{$data_skills[x.data_id].name}\\c[0]\n"}
  227.     features.select{|x| x.code == 51}.each{|x| help += "\\c[#{UP}]#{CODE[x.code]}:#{@weapon_types[x.data_id]}\\c[0]\n"}
  228.     features.select{|x| x.code == 52}.each{|x| help += "\\c[#{UP}]#{CODE[x.code]}:#{@armor_types[x.data_id]}\\c[0]\n"}
  229.     features.select{|x| x.code == 53}.each{|x| help += "\\c[#{DOWN}]#{CODE[x.code]}:#{@etypes[x.data_id]}\\c[0]\n"}
  230.     features.select{|x| x.code == 54}.each{|x| help += "\\c[#{DOWN}]#{CODE[x.code]}:#{@etypes[x.data_id]}\\c[0]\n"}
  231.     features.select{|x| x.code == 61}.each{|x| help += "\\c[#{VIP}]#{CODE[x.code]}:#{x.value}\\c[0]\n"}
  232.     features.select{|x| x.code == 62}.each{|x| help += "\\c[#{VIP}]#{CODE[x.code]}:#{FLAG[x.data_id]}\\c[0]\n"}
  233.     features.select{|x| x.code == 64}.each{|x| help += "\\c[#{VIP}]#{CODE[x.code]}:#{PARTY_ABILITY[x.data_id]}\\c[0]\n"}
  234.     help
  235.   end
  236.   #获取技能帮助内容
  237.   def self.getskillhelp(skill)
  238.     help = ""
  239.     effects = skill.effects
  240.     damage  = skill.damage
  241.     r = [skill.required_wtype_id1,skill.required_wtype_id2]
  242.     help += "\\c[16]消耗:\\c[#{MP}]MP:#{skill.mp_cost.to_s} \\c[#{TP}]TP:#{skill.tp_cost.to_s}\\c[0]\n" if skill.mp_cost > 0 && skill.tp_cost > 0
  243.     help += "\\c[16]消耗:\\c[#{MP}]MP:#{skill.mp_cost.to_s}\\c[0]\n" if skill.mp_cost > 0 && skill.tp_cost <= 0
  244.     help += "\\c[16]消耗:\\c[#{TP}]TP:#{skill.tp_cost.to_s}\\c[0]\n" if skill.tp_cost > 0 && skill.mp_cost <= 0
  245.     help += "\\c[#{skill.speed<0?DOWN: UP}]速度修正:#{skill.speed}\\c[0]\n" if skill.speed != 0
  246.     help += "\\c[#{DOWN}]成功率:#{skill.success_rate}%\\c[0]\n" if skill.success_rate != 100
  247.     help += "\\c[16]类型:#{HIT[skill.hit_type]}\\c[0]\n"
  248.     help += "\\c[16]范围:#{SCOPE[skill.scope]}\\c[0]\n" if skill.scope != 0
  249.     help += "\\c[16]效果:#{@elements[damage.element_id]}#{DAMAGE_TYPE[damage.type]}\\c[0]\n" if damage.type != 0
  250.     effects.select{|x| x.code == 31}.each{|x| help += "\\c[#{UP}]强化:#{@params[x.data_id]} #{x.value1.to_i}回合\\c[0]\n"}
  251.     effects.select{|x| x.code == 32}.each{|x| help += "\\c[#{UP}]弱化:#{@params[x.data_id]} #{x.value1.to_i}回合\\c[0]\n"}
  252.     effects.select{|x| x.code == 33}.each{|x| help += "\\c[#{UP}]解除:强化#{@params[x.data_id]}\n"}
  253.     effects.select{|x| x.code == 34}.each{|x| help += "\\c[#{UP}]解除:弱化#{@params[x.data_id]}\n"}
  254.     effects.select{|x| x.code == 21}.each{|x| help += "\\c[#{UP}]附加:#{x.data_id == 0 ? "普通攻击" : @states[x.data_id]} #{(x.value1*100).to_i}%\\c[0]\n"}
  255.     effects.select{|x| x.code == 22}.each{|x| help += "\\c[#{UP}]解除:#{@states[x.data_id]} #{(x.value1*100).to_i}%\\c[0]\n"}
  256.     effects.select{|x| x.code == 41}.each{|x| help += "\\c[#{VIP}]特殊效果:撤退\n"}
  257.     effects.select{|x| x.code == 42}.each{|x| help += "\\c[#{UP}]提升:#{@params[x.data_id]}#{x.value1.to_i}点\\c[0]\n"}
  258.     effects.select{|x| x.code == 43}.each{|x| help += "\\c[#{VIP}]学会:#{$data_skills[x.data_id].name}\\c[0]\n"}
  259.     help += "\\c[16]场合:#{OCCASION[skill.occasion]}\n"
  260.     help += "\\c[#{DOWN}]限制:#{$data_system.weapon_types[r[0]] if r[0] != 0} #{$data_system.weapon_types[r[1]] if r[1] != 0}\\c[0]\n" if r != [0,0]
  261.     help
  262.   end
  263.   #获取道具帮助内容
  264.   def self.getitemhelp(item)
  265.     help = ""
  266.     effects = item.effects
  267.     damage  = item.damage
  268.     help += "\\c[16]类型:\\c[#{VIP}]#{"贵重物品  "if item.itype_id != 1}\\c[#{DOWN}]#{item.consumable ? "消耗品":"非消耗品"}\\c[0]\n"
  269.     help += "\\c[16]范围:#{SCOPE[item.scope]}\\c[0]\n" if item.scope != 0
  270.     help += "\\c[16]效果:#{@elements[damage.element_id]}#{DAMAGE_TYPE[damage.type]}\\c[0]\n" if damage.type != 0
  271.     effects.select{|x| x.code == 31}.each{|x| help += "\\c[#{UP}]强化:#{@params[x.data_id]} #{x.value1.to_i}回合\\c[0]\n"}
  272.     effects.select{|x| x.code == 32}.each{|x| help += "\\c[#{UP}]弱化:#{@params[x.data_id]} #{x.value1.to_i}回合\\c[0]\n"}
  273.     effects.select{|x| x.code == 33}.each{|x| help += "\\c[#{UP}]解除:强化#{@params[x.data_id]}\\c[0]\n"}
  274.     effects.select{|x| x.code == 34}.each{|x| help += "\\c[#{UP}]解除:弱化#{@params[x.data_id]}\\c[0]\n"}
  275.     effects.select{|x| x.code == 21}.each{|x| help += "\\c[#{UP}]附加:#{x.data_id == 0 ? "普通攻击" : @states[x.data_id]} #{(x.value1*100).to_i}%\\c[0]\n"}
  276.     effects.select{|x| x.code == 22}.each{|x| help += "\\c[#{UP}]解除:#{@states[x.data_id]} #{(x.value1*100).to_i}%\\c[0]\n"}
  277.     effects.select{|x| x.code == 41}.each{|x| help += "\\c[#{VIP}]特殊效果:撤退\n"}
  278.     effects.select{|x| x.code == 42}.each{|x| help += "\\c[#{VIP}]提升:#{@params[x.data_id]}#{x.value1.to_i}点\\c[0]\n"}
  279.     effects.select{|x| x.code == 43}.each{|x| help += "\\c[#{VIP}]学会:#{$data_skills[x.data_id].name}\\c[0]\n"}
  280.     help += "\\c[16]场合:#{OCCASION[item.occasion]}\\c[0]\n"
  281.     help
  282.   end
  283.   #计算行数(有些字体的汉字和[字母,数字,符号]的宽度不同,
  284.   #有可能会照成行数计算不对,尽量用宽度相同的字体吧)
  285.   def self.getline(text,maxtext)
  286.     text_new = ""
  287.     xtext = []
  288.     line = 0
  289.     text.each_line{|x| text_new += x.gsub(/\\\S\[\d+\]/i){}} #去掉控制符
  290.     text_new.each_line{|x| xtext.push x.gsub(/\n/){}}        #去掉换行符
  291.     xtext.each{|x| line += (x.size / (maxtext.to_f + 1).to_i) + 1}
  292.     line
  293.   end
  294. end
  295. #==============================================================================
  296. # ■ Window_Help_Ex
  297. #------------------------------------------------------------------------------
  298. #  加强显示特技和物品等的说明
  299. #==============================================================================

  300. class Window_Help_Ex < Window_Base
  301.   include VIPArcher::Equipplus
  302.   #--------------------------------------------------------------------------
  303.   # ● 初始化对象
  304.   #--------------------------------------------------------------------------
  305.   def initialize(line_number = 0)
  306.     super(0, 0, 210, 0)
  307.     self.z = 150
  308.     contents.font.size = Font_Size
  309.     @time = 0
  310.   end
  311.   #--------------------------------------------------------------------------
  312.   # ● 设置内容
  313.   #--------------------------------------------------------------------------
  314.   def set_text(text)
  315.     @text = text
  316.     refresh
  317.   end
  318.   #--------------------------------------------------------------------------
  319.   # ● 清除
  320.   #--------------------------------------------------------------------------
  321.   def clear
  322.     set_text("")
  323.   end
  324.   #--------------------------------------------------------------------------
  325.   # ● 更新帮助位置
  326.   #--------------------------------------------------------------------------
  327.   def uppos(index,rect,window)
  328.     self.height = fitting_height_vip(VIPArcher::Equipplus.getline(@xtext,13))
  329.     create_contents
  330.     contents.font.name = Font_Name
  331.     contents.font.size = Font_Size
  332.     rect.x -= window.ox
  333.     rect.y -= window.oy
  334.     ax = rect.x + rect.width + 10
  335.     ax = rect.x - self.width + 10 if ax + self.width > window.width + 10
  336.     ax += window.x
  337.     ax = 0 if ax < 0
  338.     ay = rect.y + rect.height
  339.     ay = rect.y - self.height if ay + self.height > window.height
  340.     ay += window.y
  341.     ay = 0 if ay < 0
  342.     self.x = ax
  343.     self.y = ay
  344.     set_text(@xtext)
  345.     @time = TIME
  346.     self.show
  347.     self.openness = 0
  348.   end
  349.   #--------------------------------------------------------------------------
  350.   # ● 设置物品
  351.   #     item : 技能、物品等
  352.   #--------------------------------------------------------------------------
  353.   def set_item(item)
  354.     if item == nil
  355.       set_text("")
  356.       return
  357.     end
  358.     @xtext = ""
  359.     if $VIPArcherScript[:itemcolor] # require 物品描绘颜色脚本
  360.       @xtext = "\\c[16]名称:\\c[#{VIPArcher::ItemColor::Color_Lv[item.color]}]" +
  361.       "#{item.name}  #{item.color if item.color != 0}#{"★" if item.color != 0}\\c[0]\n"
  362.     else
  363.       @xtext = "\\c[16]名称:\\c[0]#{item.name}\n"
  364.     end
  365.     @xtext += "\\c[16]介绍:\\c[0]#{item.description}\n"
  366.     if $VIPArcherScript[:load]      # require 队伍负重脚本
  367.       @xtext += "\\c[16]售价:#{item.price} 重量:#{item.load}\\c[0]\n"
  368.     else
  369.       @xtext += item.price == 0 ? "\\c[16]售价:\\c[14]无法出售\\c[0]\n":"\\c[16]售价:#{item.price}\\c[0]\n"
  370.     end if item.is_a?(RPG::EquipItem) || item.is_a?(RPG::Item)
  371.     @xtext += VIPArcher::Equipplus.getequiphelp(item) if item.is_a?(RPG::EquipItem)
  372.     @xtext += VIPArcher::Equipplus.getskillhelp(item) if item.is_a?(RPG::Skill)
  373.     @xtext += VIPArcher::Equipplus.getitemhelp(item) if item.is_a?(RPG::Item)
  374.     if $VIPArcherScript[:exdrop_rate]   # require 队伍掉率扩展
  375.       @xtext += "\\c[#{$2.to_i > 0 ? UP : DOWN}]#{$1}掉率: #{$2}%\\c[0]\n" if
  376.       item.note =~ /<(\W+)掉率:\s*([0-9+.-]+)%>/i
  377.     end if item.is_a?(RPG::EquipItem) || item.is_a?(RPG::Skill)
  378.     @xtext = @xtext[0,@text.size - 2] if @xtext[@xtext.size - 2,2] == "\n"
  379.   end
  380.   #--------------------------------------------------------------------------
  381.   # ● 刷新
  382.   #--------------------------------------------------------------------------
  383.   def refresh
  384.     contents.clear
  385.     self.hide if @text == ""
  386.     draw_text_vip(4, 0, @text,width,40,false)
  387.   end
  388.   #--------------------------------------------------------------------------
  389.   # ● 更新画面
  390.   #--------------------------------------------------------------------------
  391.   def update
  392.     super
  393.     @time -= 1 if @time > 0
  394.     self.open if @time == 0
  395.   end
  396. end
  397. class Window_Base < Window
  398.   #--------------------------------------------------------------------------
  399.   # ● 计算窗口显示指定行数时的应用高度2*************************
  400.   #--------------------------------------------------------------------------
  401.   def fitting_height_vip(line_number)
  402.     line_number * contents.font.size + standard_padding * 2
  403.   end
  404.   # draw_text_ex的增强,使其可以自动换行  原作者:叶子 修改:wyongcan
  405.   #--------------------------------------------------------------------------
  406.   # ● 绘制带有控制符的文本内容
  407.   #   如果传递了width参数的话,会自动换行
  408.   #--------------------------------------------------------------------------
  409.   def draw_text_vip(x, y, text, width = nil,textwidth = nil,normalfont = true)
  410.     reset_font_settings if normalfont == true
  411.     text = convert_escape_characters(text)
  412.     pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
  413.     if width != nil
  414.       pos[:height] = contents.font.size
  415.       pos[:width] = width
  416.       pos[:textwidth] = textwidth
  417.     end
  418.     process_character(text.slice!(0, 1), text, pos) until text.empty?
  419.   end
  420.   #--------------------------------------------------------------------------
  421.   # ● 文字的处理
  422.   #     c    : 文字
  423.   #     text : 绘制处理中的字符串缓存(字符串可能会被修改)
  424.   #     pos  : 绘制位置 {:x, :y, :new_x, :height}
  425.   #--------------------------------------------------------------------------
  426.   def process_character(c, text, pos)
  427.     case c
  428.     when "\r"   # 回车
  429.       return
  430.     when "\n"   # 换行
  431.       process_new_line(text, pos)
  432.     when "\f"   # 翻页
  433.       process_new_page(text, pos)
  434.     when "\e"   # 控制符
  435.       process_escape_character(obtain_escape_code(text), text, pos)
  436.     else        # 普通文字
  437.       pos[:textwidth] == nil ? text_width = text_size(c).width : text_width = pos[:textwidth]
  438.       if pos[:width] != nil && pos[:x] - pos[:new_x] + text_width > pos[:width]
  439.         process_new_line(text, pos)
  440.       end
  441.       process_normal_character(c, pos)
  442.     end
  443.   end
  444.   #--------------------------------------------------------------------------
  445.   # ● 处理换行文字
  446.   #--------------------------------------------------------------------------
  447.   alias vip_20141007_process_new_line process_new_line
  448.   def process_new_line(text, pos)
  449.     vip_20141007_process_new_line(text, pos)
  450.     pos[:height] = contents.font.size if pos[:width] != nil
  451.   end
  452. end

  453. #==============================================================================
  454. # ■ 设置帮助增强窗口
  455. #==============================================================================
  456. class Window_Selectable < Window_Base
  457.   attr_reader   :help_ex_window
  458.   #--------------------------------------------------------------------------
  459.   # ● 调用帮助窗口的更新方法
  460.   #--------------------------------------------------------------------------
  461.   alias help_ex_call_update_help call_update_help
  462.   def call_update_help
  463.     help_ex_call_update_help
  464.     update_ex_help if active && @help_ex_window
  465.   end
  466.   #--------------------------------------------------------------------------
  467.   # ● 更新帮助内容
  468.   #--------------------------------------------------------------------------
  469.   def update_ex_help
  470.     @help_ex_window.set_item(item) if @help_ex_window
  471.     if index != -1 && item != nil
  472.       @help_ex_window.uppos(index,item_rect(index),self)
  473.     end
  474.   end
  475.   #--------------------------------------------------------------------------
  476.   # ● 设置帮助增强窗口
  477.   #--------------------------------------------------------------------------
  478.   def help_ex_window=(help_ex_window)
  479.     @help_ex_window = help_ex_window
  480.   end
  481. end
  482. #==============================================================================
  483. # ■ 在各场景处理帮助窗口
  484. #==============================================================================
  485. class Scene_Base
  486.   #--------------------------------------------------------------------------
  487.   # ● 生成帮助增强窗口
  488.   #--------------------------------------------------------------------------
  489.   def create_help_ex
  490.     @help_ex_window  = Window_Help_Ex.new
  491.     @help_ex_window .viewport = @viewport
  492.     @item_window.help_ex_window  = @help_ex_window if @item_window
  493.     @slot_window.help_ex_window  = @help_ex_window if @slot_window
  494.     @skill_window.help_ex_window = @help_ex_window if @skill_window
  495.     @buy_window.help_ex_window   = @help_ex_window if @buy_window
  496.     @sell_window.help_ex_window  = @help_ex_window if @sell_window
  497.   end
  498. end
  499. #道具栏
  500. class Scene_Item < Scene_ItemBase
  501.   #--------------------------------------------------------------------------
  502.   # ● 开始处理
  503.   #--------------------------------------------------------------------------
  504.   alias help_ex_start start
  505.   def start
  506.     help_ex_start
  507.     create_help_ex
  508.   end
  509.   #--------------------------------------------------------------------------
  510.   # ● 物品“取消”
  511.   #--------------------------------------------------------------------------
  512.   alias help_ex_on_item_cancel on_item_cancel
  513.   def on_item_cancel
  514.     help_ex_on_item_cancel
  515.     @help_ex_window.hide
  516.   end
  517. end
  518. #装备栏
  519. class Scene_Equip < Scene_MenuBase
  520.   #--------------------------------------------------------------------------
  521.   # ● 开始处理
  522.   #--------------------------------------------------------------------------
  523.   alias help_ex_start start
  524.   def start
  525.     help_ex_start
  526.     create_help_ex
  527.   end
  528.   #--------------------------------------------------------------------------
  529.   # ● 装备栏“取消”
  530.   #--------------------------------------------------------------------------
  531.   alias help_ex_on_slot_cancel on_slot_cancel
  532.   def on_slot_cancel
  533.     help_ex_on_slot_cancel
  534.     @help_ex_window.hide
  535.   end
  536. end
  537. #技能栏
  538. class Scene_Skill < Scene_ItemBase
  539.   #--------------------------------------------------------------------------
  540.   # ● 开始处理
  541.   #--------------------------------------------------------------------------
  542.   alias help_ex_start start
  543.   def start
  544.     help_ex_start
  545.     create_help_ex
  546.   end
  547.   #--------------------------------------------------------------------------
  548.   # ● 物品“确定”
  549.   #--------------------------------------------------------------------------
  550.   alias help_ex_on_item_ok on_item_ok
  551.   def on_item_ok
  552.     help_ex_on_item_ok
  553.     @help_ex_window.hide
  554.   end
  555.   #--------------------------------------------------------------------------
  556.   # ● 物品“取消”
  557.   #--------------------------------------------------------------------------
  558.   alias help_ex_on_item_cancel on_item_cancel
  559.   def on_item_cancel
  560.     help_ex_on_item_cancel
  561.     @help_ex_window.hide
  562.   end
  563. end
  564. #战斗界面
  565. class Scene_Battle < Scene_Base
  566.   #--------------------------------------------------------------------------
  567.   # ● 开始处理
  568.   #--------------------------------------------------------------------------
  569.   alias help_ex_start start
  570.   def start
  571.     help_ex_start
  572.     create_help_ex
  573.   end
  574.   #--------------------------------------------------------------------------
  575.   # ● 技能“确定”
  576.   #--------------------------------------------------------------------------
  577.   alias help_ex_on_skill_ok on_skill_ok
  578.   def on_skill_ok
  579.     help_ex_on_skill_ok
  580.     @help_ex_window.hide
  581.   end
  582.   #--------------------------------------------------------------------------
  583.   # ● 技能“取消”
  584.   #--------------------------------------------------------------------------
  585.   alias help_ex_on_skill_cancel on_skill_cancel
  586.   def on_skill_cancel
  587.     help_ex_on_skill_cancel
  588.     @help_ex_window.hide
  589.   end
  590.   #--------------------------------------------------------------------------
  591.   # ● 物品“确定”
  592.   #--------------------------------------------------------------------------
  593.   alias help_ex_on_item_ok on_item_ok
  594.   def on_item_ok
  595.     help_ex_on_item_ok
  596.     @help_ex_window.hide
  597.   end
  598.   #--------------------------------------------------------------------------
  599.   # ● 物品“取消”
  600.   #--------------------------------------------------------------------------
  601.   alias help_ex_on_item_cancel on_item_cancel
  602.   def on_item_cancel
  603.     help_ex_on_item_cancel
  604.     @help_ex_window.hide
  605.   end
  606. end
  607. #商店界面
  608. class Scene_Shop < Scene_MenuBase
  609.   #--------------------------------------------------------------------------
  610.   # ● 开始处理
  611.   #--------------------------------------------------------------------------
  612.   alias help_ex_start start
  613.   def start
  614.     help_ex_start
  615.     create_help_ex
  616.   end
  617.   #--------------------------------------------------------------------------
  618.   # ● 买入“确定”
  619.   #--------------------------------------------------------------------------
  620.   alias help_ex_on_buy_ok on_buy_ok
  621.   def on_buy_ok
  622.     help_ex_on_buy_ok
  623.     @help_ex_window.hide
  624.   end
  625.   #--------------------------------------------------------------------------
  626.   # ● 买入“取消”
  627.   #--------------------------------------------------------------------------
  628.   alias help_ex_on_buy_cancel on_buy_cancel
  629.   def on_buy_cancel
  630.     help_ex_on_buy_cancel
  631.     @help_ex_window.hide
  632.   end
  633.   #--------------------------------------------------------------------------
  634.   # ● 卖出“确定”
  635.   #--------------------------------------------------------------------------
  636.   alias help_ex_on_sell_ok on_sell_ok
  637.   def on_sell_ok
  638.     help_ex_on_sell_ok
  639.     @help_ex_window.hide
  640.   end
  641.   #--------------------------------------------------------------------------
  642.   # ● 卖出“取消”
  643.   #--------------------------------------------------------------------------
  644.   alias help_ex_on_sell_cancel on_sell_cancel
  645.   def on_sell_cancel
  646.     help_ex_on_sell_cancel
  647.     @help_ex_window.hide
  648.   end
  649. end
复制代码
  1. #==============================================================================
  2. # ■ RGSS3 アイテム合成 ver 1.04
  3. #------------------------------------------------------------------------------
  4. #  配布元:
  5. #     白の魔 http://izumiwhite.web.fc2.com/
  6. #
  7. #  利用規約:
  8. #     RPGツクールVX Aceの正規の登録者のみご利用になれます。
  9. #     利用報告・著作権表示とかは必要ありません。
  10. #     改造もご自由にどうぞ。
  11. #     何か問題が発生しても責任は持ちません。
  12. #==============================================================================


  13. #--------------------------------------------------------------------------
  14. # ★ 初期設定。
  15. #    合成レシピ等の設定
  16. #--------------------------------------------------------------------------
  17. module WD_itemsynthesis_ini
  18.   
  19.   Cost_view =  true #費用(G)の表示(合成の費用が全て0Gの場合はfalseを推奨)
  20.   
  21.   Category_i = true #カテゴリウィンドウに「アイテム」の項目を表示
  22.   Category_w = true #カテゴリウィンドウに「武器」の項目を表示
  23.   Category_a = true #カテゴリウィンドウに「防具」の項目を表示
  24.   Category_k = true #カテゴリウィンドウに「大事なもの」の項目を表示
  25.   
  26.   I_recipe = [] #この行は削除しないこと
  27.   W_recipe = [] #この行は削除しないこと
  28.   A_recipe = [] #この行は削除しないこと
  29.   
  30.   #以下、合成レシピ。
  31.   #例: I_recipe[3]  = [100, ["I",1,1], ["W",2,1], ["A",2,2], ["A",3,1]]
  32.   #と記載した場合、ID3のアイテムの合成必要は、100G。
  33.   #必要な素材は、ID1のアイテム1個、ID2の武器1個、ID2の防具2個、ID3の防具1個
  34.   #となる。
  35.   
  36.   #アイテムの合成レシピ
  37.   I_recipe[2]  = [10,  ["I",1,2]]
  38.   I_recipe[3]  = [100, ["I",1,1], ["I",2,1]]
  39.   I_recipe[17] = [500, ["I",1,10]]

  40.   #武器の合成レシピ
  41.   W_recipe[11]  = [50,   ["W",1,1], ["W",2,1]]
  42.   W_recipe[12]  = [600,  ["W",3,1], ["I",17,0]]
  43.   
  44.   #防具の合成レシピ  
  45.   A_recipe[2]  = [40,   ["A",1,2]]
  46.   A_recipe[5]  = [400,  ["A",2,1], ["W",2,2], ["I",17,0]]
  47.   
  48. end


  49. #==============================================================================
  50. # ■ WD_itemsynthesis
  51. #------------------------------------------------------------------------------
  52. #  アイテム合成用の共通メソッドです。
  53. #==============================================================================

  54. module WD_itemsynthesis
  55.   def i_recipe_switch_on(id)
  56.     $game_system.i_rcp_sw = [] if $game_system.i_rcp_sw == nil
  57.     $game_system.i_rcp_sw[id] = false if $game_system.i_rcp_sw[id] == nil
  58.     $game_system.i_rcp_sw[id] = true
  59.   end
  60.   def i_recipe_switch_off(id)
  61.     $game_system.i_rcp_sw = [] if $game_system.i_rcp_sw == nil
  62.     $game_system.i_rcp_sw[id] = false if $game_system.i_rcp_sw[id] == nil
  63.     $game_system.i_rcp_sw[id] = false
  64.   end
  65.   def i_recipe_switch_on?(id)
  66.     $game_system.i_rcp_sw = [] if $game_system.i_rcp_sw == nil
  67.     $game_system.i_rcp_sw[id] = false if $game_system.i_rcp_sw[id] == nil
  68.     return $game_system.i_rcp_sw[id]
  69.   end
  70.   def i_recipe_all_switch_on
  71.     for i in 1..$data_items.size
  72.       i_recipe_switch_on(i)
  73.     end
  74.   end
  75.   def i_recipe_all_switch_off
  76.     for i in 1..$data_items.size
  77.       i_recipe_switch_off(i)
  78.     end
  79.   end
  80.   def w_recipe_switch_on(id)
  81.     $game_system.w_rcp_sw = [] if $game_system.w_rcp_sw == nil
  82.     $game_system.w_rcp_sw[id] = false if $game_system.w_rcp_sw[id] == nil
  83.     $game_system.w_rcp_sw[id] = true
  84.   end
  85.   def w_recipe_switch_off(id)
  86.     $game_system.w_rcp_sw = [] if $game_system.w_rcp_sw == nil
  87.     $game_system.w_rcp_sw[id] = false if $game_system.w_rcp_sw[id] == nil
  88.     $game_system.w_rcp_sw[id] = false
  89.   end
  90.   def w_recipe_switch_on?(id)
  91.     $game_system.w_rcp_sw = [] if $game_system.w_rcp_sw == nil
  92.     $game_system.w_rcp_sw[id] = false if $game_system.w_rcp_sw[id] == nil
  93.     return $game_system.w_rcp_sw[id]
  94.   end
  95.   def w_recipe_all_switch_on
  96.     for i in 1..$data_weapons.size
  97.       w_recipe_switch_on(i)
  98.     end
  99.   end
  100.   def w_recipe_all_switch_off
  101.     for i in 1..$data_weapons.size
  102.       w_recipe_switch_off(i)
  103.     end
  104.   end
  105.   def a_recipe_switch_on(id)
  106.     $game_system.a_rcp_sw = [] if $game_system.a_rcp_sw == nil
  107.     $game_system.a_rcp_sw[id] = false if $game_system.a_rcp_sw[id] == nil
  108.     $game_system.a_rcp_sw[id] = true
  109.   end
  110.   def a_recipe_switch_off(id)
  111.     $game_system.a_rcp_sw = [] if $game_system.a_rcp_sw == nil
  112.     $game_system.a_rcp_sw[id] = false if $game_system.a_rcp_sw[id] == nil
  113.     $game_system.a_rcp_sw[id] = false
  114.   end
  115.   def a_recipe_switch_on?(id)
  116.     $game_system.a_rcp_sw = [] if $game_system.a_rcp_sw == nil
  117.     $game_system.a_rcp_sw[id] = false if $game_system.a_rcp_sw[id] == nil
  118.     return $game_system.a_rcp_sw[id]
  119.   end
  120.   def a_recipe_all_switch_on
  121.     for i in 1..$data_armors.size
  122.       a_recipe_switch_on(i)
  123.     end
  124.   end
  125.   def a_recipe_all_switch_off
  126.     for i in 1..$data_armors.size
  127.       a_recipe_switch_off(i)
  128.     end
  129.   end
  130.   def recipe_all_switch_on
  131.     i_recipe_all_switch_on
  132.     w_recipe_all_switch_on
  133.     a_recipe_all_switch_on
  134.   end
  135.   def recipe_all_switch_off
  136.     i_recipe_all_switch_off
  137.     w_recipe_all_switch_off
  138.     a_recipe_all_switch_off
  139.   end

  140. end

  141. class Game_Interpreter
  142.   include WD_itemsynthesis
  143. end

  144. class Game_System
  145.   #--------------------------------------------------------------------------
  146.   # ● 公開インスタンス変数
  147.   #--------------------------------------------------------------------------
  148.   attr_accessor :i_rcp_sw
  149.   attr_accessor :w_rcp_sw
  150.   attr_accessor :a_rcp_sw
  151.   #--------------------------------------------------------------------------
  152.   # ● オブジェクト初期化
  153.   #--------------------------------------------------------------------------
  154.   alias wd_orig_initialize004 initialize
  155.   def initialize
  156.     wd_orig_initialize004
  157.     @i_rcp_sw = []
  158.     @w_rcp_sw = []
  159.     @a_rcp_sw = []
  160.   end
  161. end


  162. #==============================================================================
  163. # ■ Scene_ItemSynthesis
  164. #------------------------------------------------------------------------------
  165. #  合成画面の処理を行うクラスです。
  166. #==============================================================================

  167. class Scene_ItemSynthesis < Scene_MenuBase
  168.   #--------------------------------------------------------------------------
  169.   # ● 開始処理
  170.   #--------------------------------------------------------------------------
  171.   def start
  172.     super
  173.     create_help_window
  174.     create_dummy_window
  175.     create_number_window
  176.     create_status_window
  177.     create_material_window
  178.     create_list_window
  179.     create_category_window
  180.     create_gold_window
  181.     create_change_window
  182.   end
  183.   #--------------------------------------------------------------------------
  184.   # ● ゴールドウィンドウの作成
  185.   #--------------------------------------------------------------------------
  186.   def create_gold_window
  187.     @gold_window = Window_Gold.new
  188.     @gold_window.viewport = @viewport
  189.     @gold_window.x = Graphics.width - @gold_window.width
  190.     @gold_window.y = @help_window.height
  191.     @gold_window.hide
  192.   end
  193.   #--------------------------------------------------------------------------
  194.   # ● 切り替え表示ウィンドウの作成
  195.   #--------------------------------------------------------------------------
  196.   def create_change_window
  197.     wx = 0
  198.     wy = @gold_window.y
  199.     ww = Graphics.width - @gold_window.width
  200.     wh = @gold_window.height
  201.     @change_window = Window_ItemSynthesisChange.new(wx, wy, ww, wh)
  202.     @change_window.viewport = @viewport
  203.     @change_window.hide
  204.   end
  205.   #--------------------------------------------------------------------------
  206.   # ● ダミーウィンドウの作成
  207.   #--------------------------------------------------------------------------
  208.   def create_dummy_window
  209.     wy = @help_window.y + @help_window.height + 48
  210.     wh = Graphics.height - wy
  211.     @dummy_window = Window_Base.new(0, wy, Graphics.width, wh)
  212.     @dummy_window.viewport = @viewport
  213.   end
  214.   #--------------------------------------------------------------------------
  215.   # ● 個数入力ウィンドウの作成
  216.   #--------------------------------------------------------------------------
  217.   def create_number_window
  218.     wy = @dummy_window.y
  219.     wh = @dummy_window.height
  220.     @number_window = Window_ItemSynthesisNumber.new(0, wy, wh)
  221.     @number_window.viewport = @viewport
  222.     @number_window.hide
  223.     @number_window.set_handler(:ok,     method(:on_number_ok))
  224.     @number_window.set_handler(:cancel, method(:on_number_cancel))
  225.     @number_window.set_handler(:change_window, method(:on_change_window))   
  226.   end
  227.   #--------------------------------------------------------------------------
  228.   # ● ステータスウィンドウの作成
  229.   #--------------------------------------------------------------------------
  230.   def create_status_window
  231.     wx = @number_window.width
  232.     wy = @dummy_window.y
  233.     ww = Graphics.width - wx
  234.     wh = @dummy_window.height
  235.     @status_window = Window_ShopStatus.new(wx, wy, ww, wh)
  236.     @status_window.viewport = @viewport
  237.     @status_window.hide
  238.   end
  239.   #--------------------------------------------------------------------------
  240.   # ● 素材ウィンドウの作成
  241.   #--------------------------------------------------------------------------
  242.   def create_material_window
  243.     wx = @number_window.width
  244.     wy = @dummy_window.y
  245.     ww = Graphics.width - wx
  246.     wh = @dummy_window.height
  247.     @material_window = Window_ItemSynthesisMaterial.new(wx, wy, ww, wh)
  248.     @material_window.viewport = @viewport
  249.     @material_window.hide
  250.     @number_window.material_window = @material_window
  251.   end
  252.   #--------------------------------------------------------------------------
  253.   # ● 合成アイテムリストウィンドウの作成
  254.   #--------------------------------------------------------------------------
  255.   def create_list_window
  256.     wy = @dummy_window.y
  257.     wh = @dummy_window.height
  258.     @list_window = Window_ItemSynthesisList.new(0, wy, wh)
  259.     @list_window.viewport = @viewport
  260.     @list_window.help_window = @help_window
  261.     @list_window.status_window = @status_window
  262.     @list_window.material_window = @material_window
  263.     @list_window.hide
  264.     @list_window.set_handler(:ok,     method(:on_list_ok))
  265.     @list_window.set_handler(:cancel, method(:on_list_cancel))
  266.     @list_window.set_handler(:change_window, method(:on_change_window))   
  267.   end
  268.   #--------------------------------------------------------------------------
  269.   # ● カテゴリウィンドウの作成
  270.   #--------------------------------------------------------------------------
  271.   def create_category_window
  272.     @category_window = Window_ItemSynthesisCategory.new
  273.     @category_window.viewport = @viewport
  274.     @category_window.help_window = @help_window
  275.     @category_window.y = @help_window.height
  276.     @category_window.activate
  277.     @category_window.item_window = @list_window
  278.     @category_window.set_handler(:ok,     method(:on_category_ok))
  279.     @category_window.set_handler(:cancel, method(:return_scene))
  280.   end
  281.   #--------------------------------------------------------------------------
  282.   # ● 合成アイテムリストウィンドウのアクティブ化
  283.   #--------------------------------------------------------------------------
  284.   def activate_list_window
  285.     @list_window.money = money
  286.     @list_window.show.activate
  287.   end
  288.   #--------------------------------------------------------------------------
  289.   # ● 合成[決定]
  290.   #--------------------------------------------------------------------------
  291.   def on_list_ok
  292.     @item = @list_window.item
  293.     @list_window.hide
  294.     @number_window.set(@item, max_buy, buying_price, currency_unit)
  295.     @number_window.show.activate
  296.   end
  297.   #--------------------------------------------------------------------------
  298.   # ● 合成[キャンセル]
  299.   #--------------------------------------------------------------------------
  300.   def on_list_cancel
  301.     @category_window.activate
  302.     @category_window.show
  303.     @dummy_window.show
  304.     @list_window.hide
  305.     @status_window.hide
  306.     @status_window.item = nil
  307.     @material_window.hide
  308.     @material_window.set(nil, nil)
  309.     @gold_window.hide
  310.     @change_window.hide
  311.     @help_window.clear
  312.   end
  313.   #--------------------------------------------------------------------------
  314.   # ● 表示切替
  315.   #--------------------------------------------------------------------------
  316.   def on_change_window
  317.     if @status_window.visible
  318.       @status_window.hide
  319.       @material_window.show
  320.     else
  321.       @status_window.show
  322.       @material_window.hide
  323.     end
  324.   end
  325.   #--------------------------------------------------------------------------
  326.   # ● カテゴリ[決定]
  327.   #--------------------------------------------------------------------------
  328.   def on_category_ok
  329.     activate_list_window
  330.     @gold_window.show
  331.     @change_window.show
  332.     @material_window.show
  333.     @category_window.hide
  334.     @list_window.select(0)
  335.   end
  336.   #--------------------------------------------------------------------------
  337.   # ● 個数入力[決定]
  338.   #--------------------------------------------------------------------------
  339.   def on_number_ok
  340.     Sound.play_shop
  341.     do_syntetic(@number_window.number)
  342.     end_number_input
  343.     @gold_window.refresh
  344.   end
  345.   #--------------------------------------------------------------------------
  346.   # ● 個数入力[キャンセル]
  347.   #--------------------------------------------------------------------------
  348.   def on_number_cancel
  349.     Sound.play_cancel
  350.     end_number_input
  351.   end
  352.   #--------------------------------------------------------------------------
  353.   # ● 合成の実行
  354.   #--------------------------------------------------------------------------
  355.   def do_syntetic(number)
  356.     $game_party.lose_gold(number * buying_price)
  357.     $game_party.gain_item(@item, number)
  358.    
  359.       @recipe = @list_window.recipe(@item)
  360.       for i in [email protected]
  361.         kind = @recipe[i][0]
  362.         id   = @recipe[i][1]
  363.         num  = @recipe[i][2]
  364.         if kind == "I"
  365.           item = $data_items[id]
  366.         elsif kind == "W"
  367.           item = $data_weapons[id]
  368.         elsif kind == "A"
  369.           item = $data_armors[id]
  370.         end
  371.         $game_party.lose_item(item, num*number)
  372.       end
  373.   end
  374.   #--------------------------------------------------------------------------
  375.   # ● 個数入力の終了
  376.   #--------------------------------------------------------------------------
  377.   def end_number_input
  378.     @number_window.hide
  379.     activate_list_window
  380.   end
  381.   #--------------------------------------------------------------------------
  382.   # ● 最大購入可能個数の取得
  383.   #--------------------------------------------------------------------------
  384.   def max_buy
  385.     max = $game_party.max_item_number(@item) - $game_party.item_number(@item)
  386.    
  387.     @recipe = @list_window.recipe(@item)
  388.       for i in [email protected]
  389.         kind = @recipe[i][0]
  390.         id   = @recipe[i][1]
  391.         num  = @recipe[i][2]
  392.         if kind == "I"
  393.           item = $data_items[id]
  394.         elsif kind == "W"
  395.           item = $data_weapons[id]
  396.         elsif kind == "A"
  397.           item = $data_armors[id]
  398.         end
  399.         if num > 0
  400.           max_buf = $game_party.item_number(item)/num
  401.         else
  402.           max_buf = 999
  403.         end
  404.         max = [max, max_buf].min
  405.       end
  406.       
  407.     buying_price == 0 ? max : [max, money / buying_price].min

  408.   end
  409.   #--------------------------------------------------------------------------
  410.   # ● 所持金の取得
  411.   #--------------------------------------------------------------------------
  412.   def money
  413.     @gold_window.value
  414.   end
  415.   #--------------------------------------------------------------------------
  416.   # ● 通貨単位の取得
  417.   #--------------------------------------------------------------------------
  418.   def currency_unit
  419.     @gold_window.currency_unit
  420.   end
  421.   #--------------------------------------------------------------------------
  422.   # ● 合成費用の取得
  423.   #--------------------------------------------------------------------------
  424.   def buying_price
  425.     @list_window.price(@item)
  426.   end
  427. end


  428. #==============================================================================
  429. # ■ Window_ItemSynthesisList
  430. #------------------------------------------------------------------------------
  431. #  合成画面で、合成可能なアイテムの一覧を表示するウィンドウです。
  432. #==============================================================================

  433. class Window_ItemSynthesisList < Window_Selectable
  434.   include WD_itemsynthesis
  435.   #--------------------------------------------------------------------------
  436.   # ● 公開インスタンス変数
  437.   #--------------------------------------------------------------------------
  438.   attr_reader   :status_window            # ステータスウィンドウ
  439.   #--------------------------------------------------------------------------
  440.   # ● オブジェクト初期化
  441.   #--------------------------------------------------------------------------
  442.   def initialize(x, y, height)
  443.     super(x, y, window_width, height)
  444.    
  445.     @shop_goods = []
  446.     @shop_recipes = []
  447.    
  448.     for i in 1..WD_itemsynthesis_ini::I_recipe.size
  449.       recipe = WD_itemsynthesis_ini::I_recipe[i]
  450.       if recipe
  451.         good = [0, i, recipe[0]]
  452.         if i_recipe_switch_on?(i)
  453.           @shop_goods.push(good)
  454.           @shop_recipes.push(recipe)
  455.         end
  456.       end
  457.     end
  458.     for i in 1..WD_itemsynthesis_ini::W_recipe.size
  459.       recipe = WD_itemsynthesis_ini::W_recipe[i]
  460.       if recipe
  461.         good = [1, i, recipe[0]]
  462.         if w_recipe_switch_on?(i)
  463.           @shop_goods.push(good)
  464.           @shop_recipes.push(recipe)
  465.         end
  466.       end
  467.     end
  468.     for i in 1..WD_itemsynthesis_ini::A_recipe.size
  469.       recipe = WD_itemsynthesis_ini::A_recipe[i]
  470.       if recipe
  471.         good = [2, i, recipe[0]]
  472.         if a_recipe_switch_on?(i)
  473.           @shop_goods.push(good)
  474.           @shop_recipes.push(recipe)
  475.         end
  476.       end
  477.     end
  478.    
  479.     @money = 0
  480.     refresh
  481.     select(0)
  482.   end
  483.   #--------------------------------------------------------------------------
  484.   # ● ウィンドウ幅の取得
  485.   #--------------------------------------------------------------------------
  486.   def window_width
  487.     return 304
  488.   end
  489.   #--------------------------------------------------------------------------
  490.   # ● 項目数の取得
  491.   #--------------------------------------------------------------------------
  492.   def item_max
  493.     @data ? @data.size : 1
  494.   end
  495.   #--------------------------------------------------------------------------
  496.   # ● アイテムの取得
  497.   #--------------------------------------------------------------------------
  498.   def item
  499.     @data[index]
  500.   end
  501.   #--------------------------------------------------------------------------
  502.   # ● 所持金の設定
  503.   #--------------------------------------------------------------------------
  504.   def money=(money)
  505.     @money = money
  506.     refresh
  507.   end
  508.   #--------------------------------------------------------------------------
  509.   # ● 選択項目の有効状態を取得
  510.   #--------------------------------------------------------------------------
  511.   def current_item_enabled?
  512.     enable?(@data[index])
  513.   end
  514.   #--------------------------------------------------------------------------
  515.   # ● 合成費用を取得
  516.   #--------------------------------------------------------------------------
  517.   def price(item)
  518.     @price[item]
  519.   end
  520.   #--------------------------------------------------------------------------
  521.   # ● 合成可否を取得
  522.   #--------------------------------------------------------------------------
  523.   def enable?(item)
  524.     @makable[item]
  525.   end
  526.   #--------------------------------------------------------------------------
  527.   # ● レシピを取得
  528.   #--------------------------------------------------------------------------
  529.   def recipe(item)
  530.     @recipe[item]
  531.   end
  532.   #--------------------------------------------------------------------------
  533.   # ● アイテムを許可状態で表示するかどうか
  534.   #--------------------------------------------------------------------------
  535.   def have_mat?(recipe)
  536.     flag = true
  537.     if @money >= recipe[0]
  538.       for i in 1...recipe.size
  539.         kind = recipe[i][0]
  540.         id   = recipe[i][1]
  541.         num  = recipe[i][2]
  542.         if kind == "I"
  543.           item = $data_items[id]
  544.         elsif kind == "W"
  545.           item = $data_weapons[id]
  546.         elsif kind == "A"
  547.           item = $data_armors[id]
  548.         end
  549.         if $game_party.item_number(item) < [num, 1].max
  550.           flag = false
  551.         end
  552.       end
  553.     else
  554.       flag = false
  555.     end
  556.     return flag
  557.   end
  558.   #--------------------------------------------------------------------------
  559.   # ● カテゴリの設定
  560.   #--------------------------------------------------------------------------
  561.   def category=(category)
  562.     return if @category == category
  563.     @category = category
  564.     refresh
  565.   end
  566.   #--------------------------------------------------------------------------
  567.   # ● リフレッシュ
  568.   #--------------------------------------------------------------------------
  569.   def refresh
  570.     make_item_list
  571.     create_contents
  572.     draw_all_items
  573.   end
  574.   #--------------------------------------------------------------------------
  575.   # ● アイテムをリストに含めるかどうか
  576.   #--------------------------------------------------------------------------
  577.   def include?(item)
  578.     case @category
  579.     when :item
  580.       item.is_a?(RPG::Item) && !item.key_item?
  581.     when :weapon
  582.       item.is_a?(RPG::Weapon)
  583.     when :armor
  584.       item.is_a?(RPG::Armor)
  585.     when :key_item
  586.       item.is_a?(RPG::Item) && item.key_item?
  587.     else
  588.       false
  589.     end
  590.   end
  591.   #--------------------------------------------------------------------------
  592.   # ● アイテムリストの作成
  593.   #--------------------------------------------------------------------------
  594.   def make_item_list
  595.     @data = []
  596.     @price = {}
  597.     @makable = {}
  598.     @recipe = {}
  599.     for i in 0...@shop_goods.size
  600.       goods = @shop_goods[i]
  601.       recipe = @shop_recipes[i]
  602.       case goods[0]
  603.       when 0;  item = $data_items[goods[1]]
  604.       when 1;  item = $data_weapons[goods[1]]
  605.       when 2;  item = $data_armors[goods[1]]
  606.       end
  607.       if item
  608.         if include?(item)
  609.           @data.push(item)
  610.           @price[item] = goods[2]
  611.           @makable[item] = have_mat?(recipe) && $game_party.item_number(item) < $game_party.max_item_number(item)
  612.           @recipe[item] = recipe
  613.         end
  614.       end
  615.     end
  616.   end
  617.   #--------------------------------------------------------------------------
  618.   # ● 項目の描画
  619.   #--------------------------------------------------------------------------
  620.   def draw_item(index)
  621.     item = @data[index]
  622.     rect = item_rect(index)
  623.     draw_item_name(item, rect.x, rect.y, enable?(item))
  624.     rect.width -= 4
  625.     draw_text(rect, price(item), 2)  if WD_itemsynthesis_ini::Cost_view
  626.   end
  627.   #--------------------------------------------------------------------------
  628.   # ● ステータスウィンドウの設定
  629.   #--------------------------------------------------------------------------
  630.   def status_window=(status_window)
  631.     @status_window = status_window
  632.     call_update_help
  633.   end
  634.   #--------------------------------------------------------------------------
  635.   # ● 素材ウィンドウの設定
  636.   #--------------------------------------------------------------------------
  637.   def material_window=(material_window)
  638.     @material_window = material_window
  639.     call_update_help
  640.   end
  641.   #--------------------------------------------------------------------------
  642.   # ● ヘルプテキスト更新
  643.   #--------------------------------------------------------------------------
  644.   def update_help
  645.     @help_window.set_item(item) if @help_window
  646.     @status_window.item = item if @status_window
  647.     @material_window.set(item, recipe(item)) if @material_window
  648.   end
  649.   #--------------------------------------------------------------------------
  650.   # ● Z ボタン(表示切替)が押されたときの処理
  651.   #--------------------------------------------------------------------------
  652.   def process_change_window
  653.     Sound.play_cursor
  654.     Input.update
  655.     call_handler(:change_window)
  656.   end
  657.   #--------------------------------------------------------------------------
  658.   # ● 決定やキャンセルなどのハンドリング処理
  659.   #--------------------------------------------------------------------------
  660.   def process_handling
  661.     super
  662.     if active
  663.       return process_change_window if handle?(:change_window) && Input.trigger?(:Z)
  664. #      return process_change_window if handle?(:change_window) && Input.trigger?(:Z)
  665.     end
  666.   end
  667. end


  668. #==============================================================================
  669. # ■ Window_ItemSynthesisMaterial
  670. #------------------------------------------------------------------------------
  671. #  合成画面で、合成に必要な素材を表示するウィンドウです。
  672. #==============================================================================

  673. class Window_ItemSynthesisMaterial < Window_Base
  674.   #--------------------------------------------------------------------------
  675.   # ● オブジェクト初期化
  676.   #--------------------------------------------------------------------------
  677.   def initialize(x, y, width, height)
  678.     super(x, y, width, height)
  679.     @item = nil
  680.     refresh
  681.   end
  682.   #--------------------------------------------------------------------------
  683.   # ● リフレッシュ
  684.   #--------------------------------------------------------------------------
  685.   def refresh
  686.     contents.clear
  687.     draw_possession(4, 0)
  688.     draw_material_info(0, line_height * 2)
  689.   end
  690.   #--------------------------------------------------------------------------
  691.   # ● アイテムの設定
  692.   #--------------------------------------------------------------------------
  693.   def set(item, recipe)
  694.     @item = item
  695.     @recipe = recipe
  696.     @make_number = 1
  697.     refresh
  698.   end
  699.   #--------------------------------------------------------------------------
  700.   # ● 作成個数の設定
  701.   #--------------------------------------------------------------------------
  702.   def set_num(make_number)
  703.     @make_number = make_number
  704.     refresh
  705.   end
  706.   #--------------------------------------------------------------------------
  707.   # ● 所持数の描画
  708.   #--------------------------------------------------------------------------
  709.   def draw_possession(x, y)
  710.     rect = Rect.new(x, y, contents.width - 4 - x, line_height)
  711.     change_color(system_color)
  712.     draw_text(rect, Vocab::Possession)
  713.     change_color(normal_color)
  714.     draw_text(rect, $game_party.item_number(@item), 2)
  715.   end
  716.   #--------------------------------------------------------------------------
  717.   # ● 素材情報の描画
  718.   #--------------------------------------------------------------------------
  719.   def draw_material_info(x, y)
  720.     rect = Rect.new(x, y, contents.width, line_height)
  721.     change_color(system_color)
  722.     contents.font.size = 18
  723.     draw_text(rect, "必要素材", 0)
  724.     if @recipe
  725.       for i in [email protected]
  726.         kind = @recipe[i][0]
  727.         id   = @recipe[i][1]
  728.         num  = @recipe[i][2]
  729.         if kind == "I"
  730.           item = $data_items[id]
  731.         elsif kind == "W"
  732.           item = $data_weapons[id]
  733.         elsif kind == "A"
  734.           item = $data_armors[id]
  735.         end
  736.         rect = Rect.new(x, y + line_height*i, contents.width, line_height)
  737.         enabled = true
  738.         enabled = false if [num*@make_number, 1].max  > $game_party.item_number(item)
  739.         draw_item_name(item, rect.x, rect.y, enabled)
  740.         change_color(normal_color, enabled)
  741.         if num > 0
  742.           draw_text(rect, "#{num*@make_number}/#{$game_party.item_number(item)}", 2)
  743.         end
  744.       end
  745.     end
  746.     change_color(normal_color)
  747.     contents.font.size = 24
  748.   end
  749. end


  750. #==============================================================================
  751. # ■ Window_ItemSynthesisNumber
  752. #------------------------------------------------------------------------------
  753. #  合成画面で、合成するアイテムの個数を入力するウィンドウです。
  754. #==============================================================================

  755. class Window_ItemSynthesisNumber < Window_ShopNumber
  756.   #--------------------------------------------------------------------------
  757.   # ● リフレッシュ
  758.   #--------------------------------------------------------------------------
  759.   def refresh
  760.     contents.clear
  761.     draw_item_name(@item, 0, item_y)
  762.     draw_number
  763.     draw_total_price if WD_itemsynthesis_ini::Cost_view
  764.   end
  765.   #--------------------------------------------------------------------------
  766.   # ● オブジェクト初期化
  767.   #--------------------------------------------------------------------------
  768.   def material_window=(material_window)
  769.     @material_window = material_window
  770.     call_update_help
  771.   end
  772.   #--------------------------------------------------------------------------
  773.   # ● 作成個数の変更
  774.   #--------------------------------------------------------------------------
  775.   def change_number(amount)
  776.     @number = [[@number + amount, @max].min, 1].max
  777.     call_update_help #追加
  778.   end
  779.   #--------------------------------------------------------------------------
  780.   # ● ヘルプテキスト更新
  781.   #--------------------------------------------------------------------------
  782.   def call_update_help
  783.     @material_window.set_num(@number) if @material_window
  784.   end
  785.   #--------------------------------------------------------------------------
  786.   # ● Z ボタン(表示切替)が押されたときの処理
  787.   #--------------------------------------------------------------------------
  788.   def process_change_window
  789.     Sound.play_cursor
  790.     Input.update
  791.     call_handler(:change_window)
  792.   end
  793.   #--------------------------------------------------------------------------
  794.   # ● 決定やキャンセルなどのハンドリング処理
  795.   #--------------------------------------------------------------------------
  796.   def process_handling
  797.     super
  798.     if active
  799.       return process_change_window if handle?(:change_window) && Input.trigger?(:Z)
  800. #      return process_change_window if handle?(:change_window) && Input.trigger?(:Z)
  801.     end
  802.   end
  803. end


  804. #==============================================================================
  805. # ■ Window_ItemSynthesisCategory
  806. #------------------------------------------------------------------------------
  807. #  合成画面で、通常アイテムや装備品の分類を選択するウィンドウです。
  808. #==============================================================================

  809. class Window_ItemSynthesisCategory < Window_ItemCategory
  810.   #--------------------------------------------------------------------------
  811.   # ● 桁数の取得
  812.   #--------------------------------------------------------------------------
  813.   def col_max
  814.     i = 0
  815.     i += 1 if WD_itemsynthesis_ini::Category_i
  816.     i += 1 if WD_itemsynthesis_ini::Category_w
  817.     i += 1 if WD_itemsynthesis_ini::Category_a
  818.     i += 1 if WD_itemsynthesis_ini::Category_k
  819.     return i
  820.   end
  821.   #--------------------------------------------------------------------------
  822.   # ● コマンドリストの作成
  823.   #--------------------------------------------------------------------------
  824.   def make_command_list
  825.     add_command(Vocab::item,     :item)     if WD_itemsynthesis_ini::Category_i
  826.     add_command(Vocab::weapon,   :weapon)   if WD_itemsynthesis_ini::Category_w
  827.     add_command(Vocab::armor,    :armor)    if WD_itemsynthesis_ini::Category_a
  828.     add_command(Vocab::key_item, :key_item) if WD_itemsynthesis_ini::Category_k
  829.   end
  830. end


  831. #==============================================================================
  832. # ■ Window_ItemSynthesisNumber
  833. #------------------------------------------------------------------------------
  834. #  合成画面で、切替を表示するウィンドウです。
  835. #==============================================================================

  836. class Window_ItemSynthesisChange < Window_Base
  837.   #--------------------------------------------------------------------------
  838.   # ● オブジェクト初期化
  839.   #--------------------------------------------------------------------------
  840.   def initialize(x, y, width, height)
  841.     super(x, y, width, height)
  842.     refresh
  843.   end
  844.   #--------------------------------------------------------------------------
  845.   # ● リフレッシュ
  846.   #--------------------------------------------------------------------------
  847.   def refresh
  848.     contents.clear
  849.     text = "D: 制作素材 / 装备对比 界面切换"
  850.     draw_text(0, 0, contents_width, line_height, text, 1)
  851.   end
  852. end
复制代码

作者: 有丘直方    时间: 2016-3-30 19:56
简单脚本不付费是吗?
那我求个简单的。自认为简单,写起来一直出错……主要因为不熟悉File类和Dir类的缘故。
求一个可以判断游戏文件夹中某一路径所指定的txt文件的内容的函数。
没错就这么简单。
作者: duzine    时间: 2016-3-31 12:59
我又登門囉

這次希望能整合兩個腳本,一個是倉庫腳本,另一個是物品破限腳本
這兩個腳本加在一起會很有意思,倉庫當你取得物品
假設你得到了10個麵包
那麼倉庫會顯示你持有10/99個麵包
可是用了破限後,物品持有都能超過99,這時就算你只拿10個麵包
畫面會顯示你持有 999/9999 的錯誤內容,雖然腳本沒出錯
但是能不能修正這個錯誤的顯示呢?
物品倉庫.rar (1.43 MB, 下载次数: 55)
作者: 喵呜喵5    时间: 2016-3-31 14:14
有丘直方 发表于 2016-3-30 19:56
简单脚本不付费是吗?
那我求个简单的。自认为简单,写起来一直出错……主要因为不熟悉File类和Dir类的缘故 ...

打开游戏目录下的 6r.txt 文件并判断内容
  1. open('6r.txt') do |file|
  2.   array = file.readlines
  3.   p array.length        # 文本文件总共几行
  4.   p array[0] == 'test'  # 第一行的内容是否是 test
  5.   p array[1] == 'hello' # 第二行的内容是否是 hello
  6. end
复制代码
注意txt文件必须为标准的utf-8格式不带bom,否则可能会有各种奇怪的转码问题


作者: sky40    时间: 2016-4-1 23:26
请问 实现我这个功能 复杂吗?(rpgxp 仿空轨的菜单中 仿洛川)

作者: cinderelmini    时间: 2016-4-3 20:53
zx903193387 发表于 2016-3-30 18:45
求在VIPArcher的装备说明脚本上增加能够在白魔的装备合成脚本的界面上正确呼出说明窗口 ...

试了一下好像可以了……(不愧是VIP菊苣的代码……好方便……
下面这一小段放在合成脚本的下面……
【召唤EXHELP的代码】

作者: duzine    时间: 2016-4-10 18:39
我又再度上門啦,這次的主角又是 反lag腳本了
場景效果.rar (285.44 KB, 下载次数: 38)

案情描述:這個場景效果是可以走過一塊設定區域的地區後
可以有類似走路痕跡的效果,可是偶然發現遊戲中的痕跡不會再消失
查了各版本,發現又是反lag惹的禍,不過新工程放上去是直接衝突了
(看來我那誇張的腳本量又再度互補成功了......
再次助我一臂之力吧! ><
作者: 仲秋启明    时间: 2016-4-12 23:08
问一下,XP的某个CP条移植VA可以接吗?
https://rpg.blue/thread-80324-1-1.html这个
作者: cinderelmini    时间: 2016-4-23 15:17
duzine 发表于 2016-4-10 18:39
我又再度上門啦,這次的主角又是 反lag腳本了

这个撑死也只能这样干了,事实上感觉跟直接放反lag下边应该也没什么区别,
下面这段放在反lag下面,不用担心,这个只是让反lag兼容地形效果更新而已,没改写和覆盖啥重要内容,
如果这都有问题就清放弃这个效果吧……………………
【反lag兼容Galv's Region Effects】

作者: duzine    时间: 2016-4-24 16:52
嗯.....希望大大還沒刪除有關反lag的腳本
經過了半天的大規模測試後,我掃除了不少系統BUG

凡事都有個但是,我想系統開發是時候劃下完美句點了,補上了一個新腳本 (為了清單上的家具系統
sion大的事件複製腳本 V1.2
於是,BUG再度來臨,披荊斬棘下,終於只剩最後一個BUG......又是反lag.. (哪尼!!
反lag會讓事件複製失效,沒報錯
本來有點灰心想著乾脆直接找原作者,但是sion大的腳本看起來井然有序
相信化腐朽為神奇的大大一定能明察秋毫,幫咱掃除這最後的錯誤
感謝!!
  1. =begin

  2.   事件管理器+事件复制功能
  3.   
  4.     2014/2/4   v1.2 添加复制事件保存功能
  5.     2013/12/13 v1.1 bug 修正
  6.   
  7.   
  8.   功能
  9.   
  10.   1. 优化默认脚本事件运行效率
  11.   2. 可以从其它地图复制事件;删除事件等
  12.   
  13.   使用说明
  14.   
  15.   
  16.   
  17.   
  18.   v1.2 新增
  19.   
  20.   save_copy_events
  21.   
  22.     保存从其它地图复制过来的事件
  23.   
  24.   remove_all_copy_events
  25.    
  26.     移除该地图全部从其它地图复制过来的事件,保存的事件也删除
  27.   
  28.    
  29.    
  30.   v1.1
  31.   
  32.   
  33.   copy_map_event(map_id, event_id, x, y)
  34.   
  35.     复制特定地图的特定事件 到坐标 x y
  36.     如果 x y 坐标不填,事件就复制到原本的坐标
  37.    
  38.     例 copy_map_event(2, 1) # 复制地图2的事件1到它原本地图的坐标
  39.        copy_map_event(3, 2, 0, 0) # 复制地图3的事件2到坐标(0,0)
  40.   
  41.   
  42.   关于独立开关
  43.   
  44.     现在每个“复制事件”有各自的独立开关
  45.     “复制事件”的独立开关优先级高于“源事件”的独立开关
  46.     也就是说一旦通过“复制事件”操作独立开关,“源事件”的独立开关就不再
  47.     对“复制事件”有效了
  48.    
  49.     要开/关“源事件”的某个独立开关可以用脚本
  50.       $game_self_switch[[map_id, event_id, "A"]] = true / false
  51.   
  52.    
  53.   remove_copy_event(map_id, event_id)
  54.   
  55.     移除从特定地图复制过来的事件,如果复制了多个则全部移除
  56.     需要一个一个移除使用下面的方法
  57.    
  58.    
  59.   remove_map_event(事件id)
  60.   
  61.     移除指定id的事件
  62.     复制过来的事件id为 当前地图事件id最大值 + 1
  63.   
  64. =end

  65. class Game_Event
  66. attr_reader\
  67. :copy_id,
  68. :map_id

  69. attr_accessor\
  70. :copy_self_switch
  71.   
  72.   # 开始 >-------
  73.   
  74.   # 默认脚本距离屏幕比较远的事件是不会自主移动的
  75.   
  76.   # 这段脚本让全屏的事件都可以按照设置好的自身移动路线前进,如果静止的事件比较多会
  77.   # 比较省资源。如果不需要这个功能,就删除 开始 ~ 结束 之间的脚本
  78.   
  79. #  def update_self_movement
  80. #    if @stop_count > stop_count_threshold
  81. #      case @move_type
  82. #      when 1;  move_type_random
  83. #      when 2;  move_type_toward_player
  84. #      when 3;  move_type_custom
  85. #      end
  86. #    end
  87. #  end
  88.   
  89.   # 结束 -------<
  90.   
  91.   
  92.   def event_copy_setup(id, x, y)
  93.     @copy_id = @id
  94.     @id = id
  95.     moveto(x, y) if x && y
  96.   end
  97.   def update #覆盖
  98.     super
  99.     check_event_trigger_auto
  100.     return unless @interpreter
  101.     @interpreter.setup(@list, @id) unless @interpreter.running? #@event.id-@id
  102.     @interpreter.update
  103.   end
  104.   def conditions_met?(page) #覆盖
  105.     c = page.condition
  106.     if c.switch1_valid
  107.       return false unless $game_switches[c.switch1_id]
  108.     end
  109.     if c.switch2_valid
  110.       return false unless $game_switches[c.switch2_id]
  111.     end
  112.     if c.variable_valid
  113.       return false if $game_variables[c.variable_id] < c.variable_value
  114.     end
  115.     if c.self_switch_valid #改了这里
  116.       return false unless @copy_self_switch ?
  117.         @copy_self_switch[c.self_switch_ch] :
  118.         $game_self_switches[[@map_id, @event.id, c.self_switch_ch]]
  119.     end
  120.     if c.item_valid
  121.       item = $data_items[c.item_id]
  122.       return false unless $game_party.has_item?(item)
  123.     end
  124.     if c.actor_valid
  125.       actor = $game_actors[c.actor_id]
  126.       return false unless $game_party.members.include?(actor)
  127.     end
  128.     return true
  129.   end
  130.   alias_method :sEventManager_init_public_members, :init_public_members
  131.   def init_public_members #覆盖
  132.     @gridding = $game_map.gridding
  133.     sEventManager_init_public_members
  134.   end
  135.   def moveto(x, y) #修改父类方法
  136.     gridding_remove
  137.     super
  138.     gridding_insert
  139.   end
  140.   def move_straight(d, turn_ok = true) #修改父类方法
  141.     gridding_remove
  142.     super
  143.     gridding_insert
  144.   end
  145.   def move_diagonal(horz, vert) #修改父类方法
  146.     gridding_remove
  147.     super
  148.     gridding_insert
  149.   end
  150.   def gridding_remove
  151.     @gridding[@x][@y].delete(self)
  152.   end
  153.   def gridding_insert
  154.     @gridding[@x][@y].push(self)
  155.   end
  156.   #
  157.   def saved_copy_load
  158.     @gridding = $game_map.gridding
  159.     gridding_insert
  160.   end
  161. end

  162. class Game_Map
  163. attr_reader\
  164. :copy_map_events,
  165. :gridding

  166.   def prepare_copy_event(event)
  167.     @copy_map_events ||= {}
  168.     @copy_map_events[event] = true
  169.   end
  170.   def prepare_remove_event(event)
  171.     @copy_map_events ||= {}
  172.     event.gridding_remove
  173.     @copy_map_events[event] = false
  174.   end
  175.   alias_method :sEventManager_update_events, :update_events
  176.   def update_events
  177.     sEventManager_update_events
  178.     if @copy_map_events
  179.       delete_ids = []
  180.       in_map = SceneManager.scene_is?(Scene_Map)
  181.       @copy_map_events.each {|event, copy|
  182.         if copy
  183.           @events[event.id] = event
  184.           SceneManager.scene.spriteset.add_event_sprite(event) if in_map
  185.         else
  186.           delete_ids.push(event.id)
  187.           SceneManager.scene.spriteset.remove_event_sprite(event) if in_map
  188.         end
  189.       }
  190.       delete_ids.each {|id| @events.delete(id)}
  191.       @copy_map_events = nil
  192.     end
  193.   end
  194.   alias_method :sEventManager_setup_events, :setup_events
  195.   def setup_events
  196.     @saved_copy_events ||= {}
  197.     @gridding = Array.new(width + 1) { Array.new(height + 1) {[]} }
  198.     sEventManager_setup_events
  199.     load_saved_copy_events
  200.   end
  201.   #
  202.   def refresh_tile_events #覆盖
  203.   end
  204.   def events_xy(x, y) #覆盖
  205.     @gridding[x][y]
  206.   end
  207.   def events_xy_nt(x, y) #覆盖
  208.     @gridding[x][y].select {|event| !event.through}
  209.   end
  210.   def tile_events_xy(x, y) #覆盖
  211.     @gridding[x][y].select {|event| event.tile? && !event.through}
  212.   end
  213.   def event_id_xy(x, y) #覆盖
  214.     list = events_xy(x, y)
  215.     list.empty? ? 0 : list[0].id
  216.   end
  217.   # 保存复制的事件
  218.   def save_copy_events
  219.     copy_events = []
  220.     @events.each_value {|event| copy_events.push(event) if event.copy_id}
  221.     @saved_copy_events[@map_id] = copy_events
  222.   end
  223.   # 读取保存的复制事件
  224.   def load_saved_copy_events
  225.     saved_copy_events = @saved_copy_events[@map_id]
  226.     saved_copy_events.each {|event|
  227.       event.saved_copy_load
  228.       @events[event.id] = event
  229.     } if saved_copy_events
  230.   end
  231.   
  232.    
  233.   # 移除所有复制事件
  234.   def remove_all_copy_events
  235.     @events.each_value {|event|
  236.       $game_map.prepare_remove_event(event) if event.copy_id
  237.     }
  238.     @saved_copy_events.delete @map_id
  239.   end
  240. end
  241. # 事件页脚本添加复制事件功能
  242. class Game_Interpreter
  243.   def copy_map_event(map_id, event_id, x = nil, y = nil)
  244.     map_filename = sprintf("Data/Map%03d.rvdata2", map_id)
  245.     if File.exist?(map_filename)
  246.       event = load_data(map_filename).events[event_id]
  247.       if event
  248.         event = Game_Event.new(map_id, event)
  249.         event_id = $game_map.events.keys.max + 1
  250.         event_id += $game_map.copy_map_events.size if $game_map.copy_map_events
  251.         event.event_copy_setup(event_id, x, y)
  252.         $game_map.prepare_copy_event(event)
  253.       elsif $TEST
  254.         msgbox("复制<地图#{map_id}>的<事件#{event_id}>失败,该事件不存在。")
  255.         exit
  256.       end
  257.     elsif $TEST
  258.       msgbox("从<地图#{map_id}>复制事件失败,该地图不存在。")
  259.       exit
  260.     end
  261.   end
  262.   #
  263.   def save_copy_events
  264.     $game_map.save_copy_events
  265.   end
  266.   def remove_all_copy_events
  267.     $game_map.remove_all_copy_events
  268.   end
  269.   def remove_copy_event(map_id, event_id)
  270.     $game_map.events.each_value {|event|
  271.       if event.copy_id == event_id && event.map_id == map_id
  272.         $game_map.prepare_remove_event(event)
  273.       end
  274.     }
  275.   end
  276.   def remove_map_event(event_id)
  277.     event = $game_map.events[event_id]
  278.     $game_map.prepare_remove_event(event) if event
  279.   end
  280.   #
  281.   alias_method :sEventManager_command_123, :command_123
  282.   def command_123
  283.     if @event_id > 0
  284.       event = get_character(@event_id)
  285.       event.copy_id ?
  286.         process_copy_self_switch(event) :
  287.         sEventManager_command_123
  288.     end
  289.   end
  290.   def process_copy_self_switch(event)
  291.     event.copy_self_switch ||= {}
  292.     event.copy_self_switch[@params[0]] = (@params[1] == 0)
  293.     all_off = true
  294.     event.copy_self_switch.each_value {|key| break all_off = false if key}
  295.     event.copy_self_switch = nil if all_off
  296.     $game_map.need_refresh = true
  297.   end
  298. end
  299. #
  300. # 精灵管理
  301. class Spriteset_Map
  302.   EventRadius = 1
  303.   def add_event_sprite(event)
  304.     @events_sprites[event] = nil
  305.   end
  306.   def remove_event_sprite(event)
  307.     sprite = @events_sprites.delete(event)
  308.     sprite.dispose if sprite
  309.   end
  310.   alias_method :sEventManager_create_characters, :create_characters
  311.   def create_characters
  312.     sEventManager_create_characters
  313.     setup_event_sprites
  314.   end
  315.   def setup_event_sprites
  316.     @events_sprites = {}
  317.     @character_sprites.each {|sp|
  318.       @events_sprites[sp.character] = sp if sp.character.class == Game_Event
  319.     }
  320.     @events_sprites.each_value {|sp| @character_sprites.delete(sp)}
  321.   end
  322.   alias_method :sEventManager_dispose_characters, :dispose_characters
  323.   def dispose_characters
  324.     @events_sprites.each_value {|sprite| sprite.dispose if sprite}
  325.     sEventManager_dispose_characters
  326.   end
  327.   alias_method :sEventManager_update_characters, :update_characters
  328.   def update_characters
  329.     sEventManager_update_characters
  330.     update_event_sprites
  331.   end
  332.   def update_event_sprites
  333.     ox = $game_map.display_x - EventRadius
  334.     ex = $game_map.display_x + Graphics.width / 32.0 + EventRadius - 1
  335.     oy = $game_map.display_y - EventRadius
  336.     ey = $game_map.display_y + Graphics.height / 32.0 + EventRadius - 0.875
  337.     mw = $game_map.width
  338.     mh = $game_map.height
  339.     lv = $game_map.loop_vertical?
  340.     lh = $game_map.loop_horizontal?
  341.     @events_sprites.each {|event, sprite|
  342.       x = event.real_x
  343.       y = event.real_y
  344.       if (x > ox && x < ex || lv && x + mw > ox && x + mw < ex) &&
  345.          (y > oy && y < ey || lh && y + mh > oy && y + mh < ey)
  346.         sprite ? sprite.update :
  347.           @events_sprites[event] = Sprite_Character.new(@viewport1, event)
  348.       elsif sprite
  349.         sprite.dispose
  350.         @events_sprites[event] = nil
  351.       end
  352.     }
  353.   end
  354. end
  355. class Scene_Map
  356. attr_reader :spriteset
  357. end
复制代码

作者: cinderelmini    时间: 2016-5-16 16:55
更新扩展了一下业务范围~
米娜桑之后也请多关照啦~
作者: 电车之熊    时间: 2016-12-15 21:59
厉害了 我的哥 啥都能干 我委托一个项目 画三个 科学实验室 地图

第一个是主控室 就是监控实验的房间 有这些玩意儿

第二个是一个种植蔬菜是实验室

第三个就是喜闻乐见的,禁忌研究实验室 应该有这玩意儿

素材可以用我提供的 但是大大要是有更好的 就用你的吧 (我没有蔬菜的素材)

可以用经验支付吗 大概要多少?


素材:
01.rar (1.26 MB, 下载次数: 62)
02.rar (1.21 MB, 下载次数: 65)
作者: OldtreeLethe    时间: 2016-12-19 10:28
接头像表情吗(参考我论坛头像(
以及到时候可能需要画UI(
作者: duzine    时间: 2017-2-15 13:57
請問能幫我整合一些腳本嗎?
一個是不知名的報錯,另一個是存檔腳本
看您好像很忙不方便處理,不過貌似其他人也暫時無法處理
只好先來這問問看
可以的話
2個整合3000經驗,接受的話訂金600經驗(應該沒錯?
6000經驗也可以的,大大已經幫過我很多忙了
不方便的話還是先感謝 (如果價位不夠,我還會加碼的^ ^
作者: q8832010    时间: 2017-4-6 01:24
本帖最后由 q8832010 于 2017-4-6 14:13 编辑

QQ多少,我积分不够发不了私信,在这发我不知算不算连发怕被扣经验
作者: 萌鹿小仙女    时间: 2017-9-28 09:56
请问现在还在接单嘛~
作者: 萌鹿小仙女    时间: 2017-9-29 05:42
就是一些简单的啦 比如更改对话框皮肤 对话人物、当在背包里选择时装&武器&坐骑的时候人物模型也会变、菜单界面更改、小游戏可以做吗?
作者: zdcao    时间: 2017-10-4 01:10
大大最近有空吗?这里有脚本求接单……
脚本内容(VA):地图场景里可以指定起点与终点的抛物线轨迹的投掷类运动
类似于事件里的跳跃但是希望能够增加图片的角度变化
比如弓箭手的箭或是投掷的标枪。
我知道的有这个功能的是Sideview的远程武器系统,但是代码量太庞大我拆不出来orz
不知道是不是复杂的问题,希望大大有空帮忙。
作者: 祭画櫻    时间: 2017-10-8 12:26
大大的联系方式是?想定制一些脚本,就是菜单界面更改这类的!我的联系方式是QQ11337420

作者: 御曹司    时间: 2019-6-10 12:02
椎名大大现在还接UI定制吗
作者: 雨落忧伤    时间: 2019-7-26 20:44
请问现在还接单子吗?
是关于UI的系统,主要是一些有特殊需求的搜集向系统,比如成就,人物图鉴,结局图鉴之类的。
作者: 暗幽雪花    时间: 2019-9-4 16:24
请问现在还接单吗?
这边有个战争迷雾的脚本边框太硬了想调整一下……
单个脚本调整的话要怎么算收费呀_(:з」∠)_
这边不怎么看论坛说不定会晚一点回复_(:з」∠)_
作者: 暗幽雪花    时间: 2019-9-5 06:36
本帖最后由 暗幽雪花 于 2019-9-5 14:49 编辑

【内容删除】

-4365aff92b8c5c70.jpg (49.28 KB, 下载次数: 14)

-4365aff92b8c5c70.jpg

作者: liujinjie9999    时间: 2019-10-15 02:32
请问还接脚本咩  需要一个UI脚本
作者: liujinjie9999    时间: 2019-11-16 00:59
RMXP   想请大大约一些脚本
作者: Wuyi无疑    时间: 2020-1-2 14:14
https://rpg.blue/thread-479698-1-1.html
求问这种UI可以做吗
作者: 云鸟    时间: 2020-5-30 00:59
本帖最后由 云鸟 于 2020-5-30 01:01 编辑

问问这个物品菜单大概要多少(Va)
因为是学生党资金不够
等我攒好钱再来 oz







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