设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 130|回复: 7
打印 上一主题 下一主题

[有事请教] 求一个合成台的脚本

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
4 小时
注册时间
2024-4-30
帖子
8
跳转到指定楼层
1
发表于 2025-3-23 15:22:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
15星屑
就是那种打开之后是一个合成台,可以消耗各种材料来合成物品,最好是简单一点的,比如用ID来指代材料和合成物。
如果可以的话,想要那种可以不同合成台区分开的,比如一个烹饪台只能做食物,一个锻造台只能做武器装备,一个饰品台只能做饰品和杂物。
感谢各位

最佳答案

查看完整内容

写了个超级简陋的合成功能 (x 使用方式:事件脚本 $scene = Scene_Synthesis.new(:Food) #调用Food合成台 module MFXRB Food = {} Food[1] = [2,3,4] #合成台代号(首字母大写)[成品id] = [材料1,材料2,....,材料n] Food[2] = [3,5] Food[3] = [7,8] Forge = {} Forge[10] = [20,30] end class Scene_Synthesis def initialize(type) @type = type end def main @synthesis_window = Window_Synthesis.n ...

Lv4.逐梦者

梦石
0
星屑
6060
在线时间
1438 小时
注册时间
2015-7-25
帖子
611

极短25参与开拓者

2
发表于 2025-3-23 15:22:33 | 只看该作者
写了个超级简陋的合成功能 (x
使用方式:事件脚本 $scene = Scene_Synthesis.new(:Food) #调用Food合成台
RUBY 代码复制
  1. module MFXRB
  2.   Food = {}
  3.   Food[1] = [2,3,4] #合成台代号(首字母大写)[成品id] = [材料1,材料2,....,材料n]
  4.   Food[2] = [3,5]
  5.   Food[3] = [7,8]
  6.   Forge = {}
  7.   Forge[10] = [20,30]
  8. end
  9. class Scene_Synthesis
  10.   def initialize(type)
  11.     @type = type
  12.   end
  13.   def main
  14.     @synthesis_window = Window_Synthesis.new(@type)
  15.     Graphics.transition
  16.     # 主循环
  17.     loop do
  18.       # 刷新游戏画面
  19.       Graphics.update
  20.       # 刷新输入信息
  21.       Input.update
  22.       # 刷新画面
  23.       update
  24.       # 如果切换画面就中断循环
  25.       if $scene != self
  26.         break
  27.       end
  28.     end
  29.     # 准备过渡
  30.     Graphics.freeze
  31.     # 释放窗口
  32.     @synthesis_window.dispose
  33.   end
  34.   def update
  35.     @synthesis_window.update
  36.     # 刷新窗口
  37.     if @synthesis_window.active
  38.       update_synthesis
  39.       return
  40.     end
  41.   end
  42.   def update_synthesis
  43.     # 按下 B 键的情况下
  44.     if Input.trigger?(Input::B)
  45.       # 演奏取消 SE
  46.       $game_system.se_play($data_system.cancel_se)
  47.       $scene = Scene_Map.new
  48.       return
  49.     end
  50.     # 按下 C 键的情况下
  51.     if Input.trigger?(Input::C)
  52.       item = @synthesis_window.item
  53.       return unless @synthesis_window.can_synthesis?(item.id)
  54.       type = @synthesis_window.get_type
  55.       $game_party.gain_item(item.id,1)
  56.       type[item.id].each {|id| $game_party.gain_item(id,-1)}
  57.       @synthesis_window.refresh
  58.       @synthesis_window.active = true
  59.     end
  60.   end
  61. end
  62. class Window_Synthesis < Window_Selectable
  63.   def initialize(type)
  64.     super(0, 0, 640, 480)
  65.     @type = type
  66.     @data = []
  67.     get_type.keys.each {|i| @data << $data_items[i]}
  68.     @item_max = @data.size
  69.     self.contents = Bitmap.new(width - 32, row_max * 32)
  70.     self.active = true
  71.     refresh
  72.     self.index = 0
  73.   end
  74.   def item
  75.     return @data[self.index]
  76.   end
  77.   def get_type
  78.     MFXRB.const_get(@type)
  79.   end
  80.   def refresh
  81.     self.contents.clear
  82.     @item_max.times {|i|draw_item(i)}
  83.   end
  84.   def can_synthesis?(id)
  85.     get_type[id].each {|i| return false if $game_party.item_number(i) == 0}
  86.     true
  87.   end
  88.   def draw_item(index)
  89.     item = @data[index]
  90.     self.contents.font.color = can_synthesis?(item.id) ? normal_color : disabled_color
  91.     x = 4
  92.     y = index * 32
  93.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  94.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  95.     bitmap = RPG::Cache.icon(item.icon_name)
  96.     opacity = self.contents.font.color == normal_color ? 255 : 128
  97.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  98.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  99.     get_type[item.id].each {|i| self.contents.draw_text(x+200+get_type[item.id].index(i)*150, y, 212, 32, $data_items[i].name, 0)}
  100.   end
  101. end
目前的坑
??? #像素风OC游戏 准备中 短篇-约5小时
花城梦之心 #像素风OC游戏 系统开发+素材绘制中
【不可思议的迷宫】幽灵契约外传:歌莉娅 v0.30 大版本更新!(但文件尚未上传,请稍等...
同时更新中~
这是属于笨肉包一个人的旅行~(再见了...蚊子湯,七重酱,笨肉包永远想你们!TwT
旅途的最终目标~ ???(保密~
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
4 小时
注册时间
2024-4-30
帖子
8
3
 楼主| 发表于 7 天前 | 只看该作者
魔法丶小肉包 发表于 2025-3-23 19:27
写了个超级简陋的合成功能 (x
使用方式:事件脚本 $scene = Scene_Synthesis.new(:Food) #调用Food合成台
...

我纯废物,可以把详细用法告诉我吗

点评

使用方式:事件脚本 $scene = Scene_Synthesis.new(:Food) #调用Food合成台这行就是详细用法,代表你打开的是Food合成台,比如料理台,换个名字就是别的  发表于 6 天前
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
4 小时
注册时间
2024-4-30
帖子
8
4
 楼主| 发表于 6 天前 | 只看该作者
头酱233 发表于 2025-3-24 20:58
我纯废物,可以把详细用法告诉我吗

谢谢了,我怎么把悬赏的那些星屑给你

点评

应该有选为正确答案的选项的吧,星屑也没什么用的,复数材料就是写重复的[1,1,2]就是2个1和1个2  发表于 5 天前
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
4 小时
注册时间
2024-4-30
帖子
8
5
 楼主| 发表于 6 天前 | 只看该作者
头酱233 发表于 2025-3-24 20:58
我纯废物,可以把详细用法告诉我吗

对了哥,再来一个小小的过分要求,这个合成材料能是复数吗,就是我用2个a和3个b合成一个c,a和b不是只能用一个,如果不是怎么添上那种
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
4 小时
注册时间
2024-4-30
帖子
8
6
 楼主| 发表于 4 天前 | 只看该作者
魔法丶小肉包 发表于 2025-3-23 15:22
写了个超级简陋的合成功能 (x
使用方式:事件脚本 $scene = Scene_Synthesis.new(:Food) #调用Food合成台
...

最后一个问题了,我要做好几个合成台,就是有烹饪的,锻造的,各种各样的,要怎么弄不一样的合成台,然后他合成出来的成品和材料,好像都是读取的是“物品”这一栏,但是我做装备,要合成出来的成品在“武器”“防具”两栏,材料在“物品一栏”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-3-31 18:13

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表