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

Project1

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

[已经解决] 可能面临的兼容性问题以及解决方案

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1035
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

跳转到指定楼层
1
发表于 2010-7-8 13:19:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
兼容性一直是令人头疼的问题,因此我再次征询广大程序员在编写脚本时遇到的(或可能遇到的)一些兼容性的问题,同时我们可以探讨这个解决方案,我们也很乐意分享这些兼容性问题的解决方案,这将会作为一些有用的技巧写入FSL(Free Script License)中。

一个方案是来自于KGC系列脚本(很高兴的是,很多程序员也用了这个方案,比如PocketWiki上的优秀RGSS2脚本),使用了一个Hash的实例,是$imported变量,我喜欢戏称他为进口变量,美刀能够使他全局作用。他们用一个可以代表脚本的字符串作为Hash的键,一个TrueClass或是FalseClass的唯一实例来作为值,当脚本被使用时,改键的值为true,反之为false,类似于这样:

$imported = {} if $imported == nil
$imported["TestScript"] = true


接下来的事相比大家都能明白了吧?不过在目前的FSL中,采用的是这种方法的另一种实现方法,键——值对应关系中的值是一个数组,标志了脚本的版本,我们要相信脚本是会做出改动的吧!

$fscript = {} if $fscript == nil
$fscript["TestScript"] = [1,0,0]


但问题同样来了,脚本的执行总要有个先后顺序吧?对到底是我让你呢还是你让我呢?还是互相让?

一个人的智慧是有限的,结合大家的力量和经验将会变得十分有效,大家参与讨论吧!

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2010-6-28
帖子
23
21
发表于 2010-7-27 03:21:37 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
416 小时
注册时间
2006-10-21
帖子
1245
20
发表于 2010-7-11 18:28:08 | 只看该作者
问题最大的一个是“随机武器?”就是和暗黑类似的武器系统,哇咔咔……当时我郁闷了好一会儿。

还有武器升级 耐久度 镶嵌 这四个让我很纠结


点评

“复杂武器系统”,的确有点“复杂”。  发表于 2010-7-11 18:38
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1035
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

19
 楼主| 发表于 2010-7-11 18:25:33 | 只看该作者
沉影的脚本真的很好 可惜写的脚本之间都没法完全兼容。。
wangswz 发表于 2010-7-11 13:39


问题最大的一个是“随机武器?”就是和暗黑类似的武器系统,哇咔咔……当时我郁闷了好一会儿。

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
416 小时
注册时间
2006-10-21
帖子
1245
18
发表于 2010-7-11 13:39:04 | 只看该作者
沉影的脚本真的很好 可惜写的脚本之间都没法完全兼容。。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1035
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

17
 楼主| 发表于 2010-7-11 13:13:14 | 只看该作者
alias蛋疼的是我要插在中间怎么办?
或者是弄成全局嵌入点
Class Hooks
def self.hooks_XXX_xxx0
end
def s ...
tester 发表于 2010-7-10 19:58



有时候我们不必要去做兼容,可以和另外脚本的作者商议一下或者直接声明重构了XX方法,给个警告,当然,这是万不得已的时候才这样做。
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
539
在线时间
1238 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

16
发表于 2010-7-11 06:16:51 | 只看该作者
alias只允许修改方法开头和结尾,如果要改动中间任何部分还是要完全def,这个应该是冲突的主要根源之一
另外FSL协议咱想直接加进我那个XE的游戏制作工具当脚本规范了

点评

完全支持,不过现在准备把前辈的脚本给拉进来……好多前辈的优良脚本没有更新真是可惜。(特别是沉影前辈的,思想和FSL若合一契啊。)  发表于 2010-7-11 13:08
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
180
在线时间
0 小时
注册时间
2010-7-8
帖子
3
15
发表于 2010-7-10 19:58:12 | 只看该作者
alias蛋疼的是我要插在中间怎么办?
或者是弄成全局嵌入点
Class Hooks
def self.hooks_XXX_xxx0
end
def self.hooks_XXX_xxx1
end
end
class XXX
  def xxx
    xxxx
    Hooks.hooks_XXX_xxx0.runs
    xxxxx
    Hooks.hooks_XXX_xxx1.runs
    xxxxx
  end
end
对代码进行这样的处理
然后
alias Hooks类的方法

点评

你给 Hooks 定义的是模块单例方法,所以不能用 alias,只能在类上下文中用 method 方法返回一个 Method 对象,调用的时候用 Method#call  发表于 2010-7-11 08:42
这样写不会有错吗?  发表于 2010-7-10 20:20
回复 支持 反对

使用道具 举报

Lv1.梦旅人

辉瑞中国首席研究员<

梦石
0
星屑
50
在线时间
142 小时
注册时间
2008-1-18
帖子
2129
14
发表于 2010-7-9 17:32:18 | 只看该作者
各位大哥说啥呢  没看懂
哪位大神出来通俗易懂的解释一下
来6r就是等某位仁兄的巨坑

褴褛着身行无端,囊中羞涩空心酸。
平生几无得意事,倒塔泡面宅寝室。
惟羡隔壁高帅富,雨露春风月夜声。
青丝无处觅其踪,只有硬盘苍井空。
莫云男儿空悲愁,鸿鹄岂不天际游。
坐断天下执鹿首,千百金帛万兜鍪。
夜深忽梦某年月,再见女神欲语迟。
吊丝终有逆袭日,木耳再无回粉时。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1035
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

13
 楼主| 发表于 2010-7-9 17:00:20 | 只看该作者
回复 紫苏 的帖子

我不是这个意思,我是针对您提出来的这个方法提出的自己的疑惑。
   
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-19 14:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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