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

Project1

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

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

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1185
在线时间
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
在线时间
5 小时
注册时间
2008-11-12
帖子
151
2
发表于 2010-7-8 13:21:11 | 只看该作者
哦!这方面俺不是很行啊!
没什么可说!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

万物创造者

梦石
0
星屑
54
在线时间
352 小时
注册时间
2008-2-15
帖子
2432
3
发表于 2010-7-8 13:30:15 | 只看该作者
我觉得处理兼容性最好的方法就是勤用alias= =

点评

其实 alias 用岔气了也会导致兼容问题……  发表于 2010-7-9 02:14
From mortal hope immortal power springs.
回复 支持 反对

使用道具 举报

Lv3.寻梦者

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

贵宾

4
 楼主| 发表于 2010-7-8 13:31:57 | 只看该作者
我觉得处理兼容性最好的方法就是勤用alias= =
小幽的马甲 发表于 2010-7-8 13:30


    alias已经被写入FSL,而且我个人认为alias应该是程序员的基础。

点评

3Q  发表于 2010-7-9 00:41
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
416 小时
注册时间
2006-10-21
帖子
1245
5
发表于 2010-7-8 15:45:49 | 只看该作者
alias还是我前不久才知道的东西。。。

点评

FSL 的 pdf 格式似乎有点问题,我这里显示不了第一页。$imported 的 pdf 文档正常  发表于 2010-7-9 02:13
[url]http://bbs.66rpg.com/forum.php?mod=viewthread&tid=139177[/url] 协议中介绍alias的用法,提供$imported的讲解(协议中有同思想的东西)  发表于 2010-7-9 00:14
[url]http://bbs.66rpg.com/forum.php?mod=viewthread&tid=139177[/url]  发表于 2010-7-9 00:13
回复 支持 反对

使用道具 举报

Lv3.寻梦者

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

贵宾

6
 楼主| 发表于 2010-7-8 22:30:42 | 只看该作者
alias还是我前不久才知道的东西。。。
wangswz 发表于 2010-7-8 15:45


alias十分好用,就如你的签名所言,日本的脚本兼容性超强除了$imported外还有就是善用alias。


点评

$imported来源于KGC  发表于 2010-7-9 00:14
刚看过就又给忘了。。  发表于 2010-7-8 23:57
有这方面的教学贴么。。 话说。。$imported是啥。。。  发表于 2010-7-8 23:56
尤其是KGC系列 好用+65535  发表于 2010-7-8 23:54
回复 支持 反对

使用道具 举报

Lv2.观梦者

姬魂

梦石
0
星屑
428
在线时间
400 小时
注册时间
2009-8-30
帖子
612

开拓者

7
发表于 2010-7-9 00:48:49 | 只看该作者
顶一下!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
8
发表于 2010-7-9 02:21:58 | 只看该作者
我在想是否能给每个脚本设计一个脚本唯一的优先级(可以由作者或使用者定),弄到版本数据后面,实际运行的时候两个相互不兼容的脚本比较优先级,低让高的
回复 支持 反对

使用道具 举报

Lv3.寻梦者

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

贵宾

9
 楼主| 发表于 2010-7-9 09:02:00 | 只看该作者
本帖最后由 DeathKing 于 2010-7-9 09:05 编辑
我在想是否能给每个脚本设计一个脚本唯一的优先级(可以由作者或使用者定),弄到版本数据后面,实际运行的 ...
紫苏 发表于 2010-7-9 02:21



A,B互不兼容,A的优先级低于B的优先级。
脚本按照A->B的顺序执行,如果按照这个顺序的话,问题同样不会解决。

我们是不是可以利用“约定优于配置”的原则来商议使用哪个脚本兼容哪个脚本(根据脚本完成时间状况)?或者给出脚本插入的顺序参考?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

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

开拓者贵宾

10
发表于 2010-7-9 09:11:11 | 只看该作者
Alias不是万能的,在内置类中会爆F12(当然可以避免),修改中位代码的时候也会有些问题……
外国的脚本还很喜欢用Moudule-Include,这也是一个避免的好方法。

现在我的策略(特别是Window_Message这种脚本的时候),就是衍生Window_Message类,然后修改对应代码位置(Window_Message生成位置唯一。)

其实还有一个妥善的方案——SDK。
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 00:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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