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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: 沙漠点灰
打印 上一主题 下一主题

[制作工具] [Ruby Game Maker]计划(5.19更新:界面预览版)

[复制链接]

Lv3.寻梦者

孤独守望

梦石
0
星屑
3126
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

11
发表于 2014-5-17 09:33:56 | 只看该作者
本帖最后由 IamI 于 2014-5-17 09:52 编辑
fux2 发表于 2014-5-17 00:54
最近才知道已经有人在做类似工作了(自由扩充数据库及排版的编辑器)。
@IamI 大概你们能扯两句。  ...


一个月前的消息现在才来找我怎么想都是你的错啦(误)。

应该说,这个轮子造了好多年了……现在我却连让它滚都很难滚起来。
主体采用C#编写,编辑器开放编辑,采用IronRuby。
只写数据库界面,其他基本不考虑,不过数据库的工作量基本上和写一整个RM有的一比(趴)
Marshal 数年前就已经完备,布局引擎基本完好,只不过出于个人原因一直提不快库的开发速度。
近期和事件搏斗中。


为了解决库数量不足的问题不得已采用的策略。
基本已经可用。


全部可用,顺带一提下面那个防具配置差点让我想死,XP是没有双刀的,它的配置已经这么长:
RUBY 代码复制
  1. Builder.Add(:lazy_choose , {:actual => :armor2_id ,  :label => 0, :textbook => Help.Get_Default_Text , :choice => { 0 => "(无)" },
  2.                                         :source => Proc.new do |target, parent, control|
  3.                                                 Data["armor"][Data["class"][parent["@class_id"]]["@armor_set"]].select {|target| target["@kind"].Value == 1}
  4.                                         end })

有双刀的VA就是这个样子了
RUBY 代码复制
  1. def search_weapon(control)
  2.                         actor_class = Data["class"][control.Container.Container.Value["@class_id"]]
  3.                         actor_features = control.Container.Container.Value["@features"]
  4.                         class_features = actor_class["@features"]
  5.                         type = []
  6.                         banish = false
  7.                         actor_features.each do |feature|
  8.                                 type.push(feature["@data_id"]) if feature["@code"].Value == 51
  9.                                 banish = true if feature["@code"].Value == 54 && feature["@data_id"] == 0
  10.                         end
  11.                         class_features.each do |feature|
  12.                                 type.push(feature["@data_id"]) if feature["@code"].Value == 51
  13.                                 banish = true if feature["@code"].Value == 54 && feature["@data_id"] == 0
  14.                         end
  15.                         return [] if banish
  16.                         return Data["weapon"].select {|weapon| type.include?(weapon["@wtype_id"]) }
  17.                 end
  18.                 def search_armor(control, id)
  19.                         actor_class = Data["class"][control.Container.Container.Value["@class_id"]]
  20.                         actor_features = control.Container.Container.Value["@features"]
  21.                         class_features = actor_class["@features"]
  22.                         type = []
  23.                         banish = false
  24.                         actor_features.each do |feature|
  25.                                 type.push(feature["@data_id"]) if feature["@code"].Value == 52
  26.                                 banish = true if feature["@code"].Value == 54 && feature["@data_id"] == id
  27.                         end
  28.                         class_features.each do |feature|
  29.                                 type.push(feature["@data_id"]) if feature["@code"].Value == 52
  30.                                 banish = true if feature["@code"].Value == 54 && feature["@data_id"] == id
  31.                         end
  32.                         return [] if banish
  33.                         return Data["armor"].select {|weapon| type.include?(weapon["@atype_id"]) && weapon["@etype_id"].Value == id }
  34.                 end
  35.                 def isDouble(control)
  36.                         actor_class = Data["class"][control.Container.Container.Value["@class_id"]]
  37.                         actor_features = control.Container.Container.Value["@features"]
  38.                         class_features = actor_class["@features"]
  39.                         for feature in class_features
  40.                                 return true if feature["@code"].Value == 55
  41.                         end
  42.                         for feature in actor_features
  43.                                 return true if feature["@code"].Value == 55
  44.                         end
  45.                         false
  46.                 end



写了超过2000行配置代码了,依然看不到头。

我在使用XML描述的编辑器界面上浪费了两年时间。编辑器逻辑用Ruby描述尚显的吃力,用XML描述基本达不到目标要求。
如果您有兴趣,请造访这里
这个是最后一个使用XML描述的版本。已经废弃。
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv2.观梦者 (暗夜天使)

梦石
0
星屑
266
在线时间
2355 小时
注册时间
2009-3-13
帖子
2309

贵宾

12
发表于 2014-5-17 13:25:52 | 只看该作者
有什么需要帮忙的就告诉我吧,反正写点 ruby 代码还是可以的;
c++ 代码写得少,但也能写,不过只会基础的像数组、内存这类的操作。
那些代码我不想看了,看起来太头痛 - -b
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
550
在线时间
1286 小时
注册时间
2011-6-14
帖子
4086
13
发表于 2014-5-18 20:07:52 | 只看该作者
为什么我越看这个界面越恶心……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
帖子
666
14
 楼主| 发表于 2014-5-19 23:28:42 | 只看该作者
5.19更新

@satgo1546 界面恶心么,{:2_258:},不过也是多亏XML布局,可以自行修改的{:2_275:}
>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
帖子
1839

开拓者

15
发表于 2014-6-12 15:55:02 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-12 00:09

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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