Saturday, August 29, 2009

女友送的补天士


P8260481 P8290489



昨日与Hanne聊发少年狂,想去收一个补天士。前天在淘宝网上看到一个109的经典版热破,差点就下单了,后来一商量,决定先去他的实体店看看。


一大早睡得很死,敲门声都没听见……



大概10点一刻的时候出来,到了崇文门附近的搜秀动漫城,发现那家店居然还没开(开店的人也不勤快……)。在附近转了一圈,居然看到这家店主正在开张,就过去问,居然没有!又问他网上不是才挂出来不久吗,他说网上更新比较慢,这个东西早就没货了。在同一层楼上转了一圈,基本上卖变形金刚的店都问过了,还打电话问了一家店主没来的,都说没有这个。



吃饭时间到了,先找地方吃东西,发现一家呷哺呷哺开张大吉5折酬宾,觉得很划算就拿了一个号,差了150多位,无奈转了一会之后还是在旁边一家好像是韩式的店吃了午饭。受呷哺的影响,他们不得不5折,不过总觉得他们的5折不光是价钱,连配料都折了。



中午找了一个网吧,又上淘宝看了看别人的店,找了两家北京的,还在同一个地方,叫天美时尚购物广场,感觉那个地方是不是也是卖这些东西。于是临时取消了在搜秀再转转的想法,直接去了天美,在新街口附近。



坐了大概40分钟的111电车,又走了20分钟左右终于到了这个奇怪的购物广场,到了6楼连呼上当,这里居然没几家门面是开着的,那两家店也是关的,连看都没法子。照着店面上贴的名片打电话问,也是没有这个货,而且对网上为什么有这个的消息也装糊涂,实在非常不负责任。


想了想,也快4点了,还是回中关村看看,也快要吃晚饭了。



47路车回到了中关村的动漫城,这里还没搜秀大,卖变形金刚的店也只有一家,显然他们也没有。在海龙倒是有卖黑色钛系列补天士的,不过还不是我们心中想要的那个。



又来到e世界地下看看。中关村标着动漫的实际上都在做电玩,还是难找到玩具店。基本没啥希望的时候到了这里的唯一一家玩具店来问问,想不到这里的那位mm店主有个朋友也做这个,而且还小有名气。打电话过去,他说他那里至少有4款补天士。我们这时根本搞不清楚是哪4款,无论如何这也算是今天最后的希望了,我们还是打算去看看。



这时地铁里面的人多得不像话,随着人流转到了安定门,发现没有那个店主说的C口,从B口出去走了一阵,坐124路车,最开始还走反方向半站,又过到马路另一边等车。124来得特别慢,大约半小时才过来,上面全是人。我们这时很着急,又只有3站地,就挤在了车门旁边,车慢慢爬到了小经厂。


找店面时把价钱210记成了店面号,幸好没这个编号……



终于到了39号,想不到这个大胡子店主真的有经典版的日版热破,还有两个!弄不好全北京还在卖的也就这两个了,跟他砍价无论如何砍不下来,看来人家真的是不着急。把钛的补天士拿在手里看了看,还是决定买了这个经典热破。


想去吃半价的火锅,结果没赶上。这顿一定要补上。


回到宿舍已经11点了,趁着水热洗了个澡,到了一半还是冷了下来。


把经典热破拿在手里,实在爱不释手。


Thursday, July 23, 2009

DOS时代的问题

以下是dos时期很多人问过的问题,当然现在这些问题大部分甚至在dos开发中已经解决了。以下只是为了记住这段历史。

 

对z.dat文件的开发是艰辛的,在你玩到新的MOD的时候,不要忘记背后许多人无私的努力。
以下是我整理的在发展过程中曾被提出的一些重要的技术问题,多数加上了我的简单评论,通过它们你可以了解到MOD技术开发的一些历史。你可以发现问问题最多的几个人都是如今很熟悉的名字,这是他们当年努力研究的见证。
这些问题中的大部分如今已经得到解决,少部分被认为难以解决或无必要解决。

1.看到伤害计算公式能改变,不知能否让公式加入更多影响元素?因为武功多元性太少了,希望加入一些特色,让每个武功不再只是比较"威力范围格数"如此简单。
比如公式能加入命中率,记得R*中的武功栏有一些没使用的位址变量,可使用一个作为命中率,计算方式大概为:
假设命中率85,if 随机(0-100)<85 then 伤害正常,else 伤害 x 85%。
计算公式时能访问该武功的命中率,不知可行否?甚至能再加入更多影响元素。(guest)
已经由“伤害公式事件”实现。

2.能否实现主角从场景a,经由事件遣送到场景b,且出来大地图是场景b的外面?(KG)
已经由KG等研究实现,并在《笑梦游记》中获得应用。原理为动态修改跳转口。

3.能不能扩展道具的种类代号?举个例子,就像攻击分为,0点,1线,2十字,3面一样,把物品用参数分类,武器,防具,暗器,药材,特殊等原来有的之外再详细分类。(龙吟星落)
已经由“物品调用事件”基本实现。

4.要是能做出更强大的战斗系统就好了,比如增加攻击反噬、点穴等状态,或者可以判断玩家战斗后一共使用了几回合等。(南宫梦)
反噬效果已经实现。特别地,已经有人在研究其他特技的实现,点穴因需要增加太多内容可能比较困难。回合数判断已经由“战斗起始事件”和“回合结束事件”实现。

5.当玩家装备某物品的时候,自动修改一些内存地址,比如装备裘千仞的鞋子,则开启水上飘,加上您之前说的把改变内存地址放到r*中,下次读档自动改变,就可以做好多新的功能。(南宫梦)
已经由“读档事件”实现。

6.能不能实现使用一个物品便执行一个指定的事件?(南宫梦)
已经由“物品调用事件”实现。

7.那些“用毒”“状态”那些选单(场景地图里的)可不可以从调用Z.dat改为调用事件?(KG)
已经实现。需要阅读原版的反汇编文件并手动修改指令。

8.能不能把大地图读取进度取消。(南宫梦)
能。

9.我将人物的生命上限调到9999但显示起来很不美观,不知道有没有解决的办法。(孤山印月)
已经解决。

10.对话的头像边框能不能自定义长宽?或者只要自定义长度就好了,因为我要导入的新游戏头像都很大,我怎么切割都放不进游戏的框框里,除非缩很小,但游戏效果就很丑,很像被打烂的脸,主要是长度,宽度应该够。(guest)
能,但是“对话框修改器”中并没有这个选项,需要手动修改。或者改用新对话指令。

11.修改人物状态栏显示的属性及位置。(KG)
已经可以,但是需要手动修改,比较复杂。

12.可不可以把一些文件放到目录里,比如把所有npc战斗文件放到一个目录里,把所有声音文件放到一个目录里?发现很多人拿到修改档后找不到可执行文件。(南宫梦)
仅复刻版有过这方面尝试。

13.我发现当物品贴图的起始位置过于靠后的话,大地图上第一次显示物品图片还是不正常。(南宫梦)
以前的修改器中漏改了一个地址,此外需要修改大地图实际贴图个数。

14.能不能扩大战斗的人数呢?(KG)
不能,但是已经可以在人数不足26个的时候添加人物。

15.能不能实现函数或过程。(南宫梦)
已经由50指令中的43号指令实现。

16.可否利用现在的指令,另外写一套战斗事件,就是战斗不用去战斗地图。直接在场景地图上,这样可以在战斗中利用事件层触发事件,因为战斗靠新的战斗事件控制,则可以随意定义伤害公式,使武功有更多变数,比如斗转星移之类有实现的可能。(无名)
这可能是一个伟大的想法,但更接近空中楼阁。即使使用高级语言重现战斗系统,代码也非常复杂,更何况是近似机器指令的50指令集。

17.能不能把那两个自宫武功的编号改掉?(KG)
参考前面的相关内容。

18.能不能任意指定物品显示的图片?(KG)
似乎是不能。

19.0.72有几个BUG:Z.dat方面:最高等级貌似不能超过30,否则当升级到31级等级自动变成64级。(KG)
参考前面的相关内容。

20.小宝商店最多能有几项?(KG)
从R文件的结构来看,似乎有7个地点,每个地点5种货物。但是游戏中只使用了5个地点。

21.什么时候可以修改大地图大小?(无名)
至今仍不能。并非是技术上的问题,而是许多数据结构需重新定义,现有的资源也大多无法使用。不过目前看来仍没有必要。

22.游戏中任意调出输入法,这个希望有时间能加上,现在很流行自创的,自创的话让大家自己输入名称不是很好吗。(南宫梦)
输入法的部分目前来看并不是那么简单,所以仍不能。仅复刻版能够调出输入框并使用系统输入法。

23.游戏的场景大小能变得更大吗?(南宫梦)
至今仍不能,问题也在于数据结构的重定义。

24.另外游戏中好像贴图最大200*200,再大游戏不支持,这个能改吗?(南宫梦)
从RLE8压缩的算法来看,应该能够更大,但是列数超过256的话图像格式会有问题,而行数似乎并无限制。但是最好不要这样做。

25.能否加上新的音乐,比较好的音质的。(qja)
仅复刻引擎能使用mp3文件。原Dos引擎的声音文件有很大限制。

26.我希望可以在遊戲內增設一個小地圖,可以較容易知道自己身處那裡。還有不要有水上飄,雖然是方便,但很不好看,可唔可以增設多些船,在地圖上中下都有架,較省時找船,
或者當主角一踏出陸地就會自動變做一架船,這樣就方便得多la~又不難看~(陸無雙)
增加一个小地图并不划算,我的建议是在罗盘上挂一个事件。复刻引擎中尝试过主角在海上自动变成船。

27.突破队友数上限,突破跟随的队友数上限,突破主角武功数上限。(Cloud)
技术上可以,但并不划算。可以使用变通的方法实现。

28.旧指令“得到物品”能显示数量。(guest)
已经有新指令。

29.问个问题,可以让一个人多装备几个东西哇,而且不分武器或者防具哇,譬如一个人可以穿5件衣服什么的?(kingzlw)
可以用“物品调用事件”写一个复杂的事件实现。

30.原来指令中有个场景变暗,能不能再弄个场景变半暗,这样可以弄出黑天的效果。(南宫梦)
已由KG制作出修改调色板的事件。

31.能否在原游戏的“人物状态”中某个位置或
用某个已有的状态(如“用毒能力”位置)来显示“资质”或“道德”等?(曾大虾)
以前并未实现是由于重定位表的问题。现在已经可以了。

32.修改伤害公式,当前内力或最大内力影响伤害,同样的七伤拳级别,内力999的张无忌和内力250的崆峒五老打出的伤害应该大有差别。内力700的铁丑使出的1级腐尸毒比内力50的阿紫的5级腐尸毒伤害要高。武学常识不累加,而取最高值。否则人越多武学常识越高。(碧落)
由“新版伤害公式”部分实现。

33.能扩展物品说明栏的字数吗?(guest)
物品名称出现了两次,有可能把其中一个合并到说明里并设法显示出来。但是似乎没有足够的显示位置。

34.或者新增的菜单指令能容纳6人以上,且可以选择要上场的人吗?(最多6人)(guest)
至今仍不能。但是KG似乎能够用其他方法解决这个问题。

35.能不能实现根据角色在战斗中的表现,如零伤害完成战斗,对敌方造成更多的伤害,给予额外的奖励。(江湖小虾)
大概可以,但是判断指令会写得很复杂吧。

36.秘笈可不可以限制修练次数。(lichao001486)
技术上可以,但是比较复杂。而且,一本书总不能看几次就坏掉吧。

37.队友列表和战斗选人可以改成显示4个汉字吧。(KG)
参考KG签名档。

38.还有能否增加这一功能:如练6脉需要10级一阳,10级缺3掌才能练18掌等判断指令。(张良计)
“物品调用指令”似乎可以实现这个想法。

39.废掉L键或改为别的键(这个应该好弄吧)(南宫梦)
容易。
虽然游泳的鱼这样说,但是我还没找到这个键值的位置。

40.以前有人说大地图飘云的速度能改吗?(guest)
可以,但需要找到控制的地方。
同上。

Wednesday, July 08, 2009

有关《北方密使》

一直以来想给《北方密使》写些什么。
我还是很喜欢这部游戏的,偶尔就会拿出来玩一遍。这个游戏有两个地方很有意思,一个是转职系统,一个是自动作战。
除了男女主角,其他人物都是可以任意转职的,而转职前的能力也都保留着。《北方密使》的前作《复仇魔神》中,即使之前学过剑招,如果转成非剑手的职业,还是不能使用剑法的。
对于我这种玩游戏都喜欢偷懒的人来说,自动作战是一个非常好的选项。在《复仇魔神》的AI中,法师类的角色总喜欢在战场后面加很多的状态,一直不肯冲上前去,而《北方密使》则是真正猛打猛冲,比较符合我的性格。
《北方密使》有两个主角,也有两条不同的线路。男主角名字叫白志超,女主角叫娜塔莉雅,从剧情来看,两个人似乎有些许的好感,但是游戏里面从没有明确提到。在最终的大战结束之后,两个人的对白使人感到坚强的娜塔莉雅也有柔弱的一面,只是不知那时她会不会把白志超当成一个依靠。而白志超和他身边的飞霜和萝莎莉似乎并没什么发展的可能,娜塔莉雅看起来也不会喜欢上她身边的伙伴。
《北方密使》里面的白志超武艺高强又有些玩世不恭,总是随着性子胡闹,跟《复仇魔神》里面沉稳中略带莽撞的性格完全不符。而在《复仇魔神》结尾的时候,很多人想让白志超当国家的首席剑士,但是最后他居然开溜了,这才是《北方密使》中塑造的男主角的性格。
我是先玩的《北方密使》后玩的《复仇魔神》,所以玩《复仇魔神》的时候,尽管白志超只是有大众的职业,但还是喜欢将他作为队中的第一剑手,刻意让他拥有队伍第一攻击手的位置。
总的来说,白志超在《北方密使》中的性格很讨人喜欢,但是故事里面却没什么女人缘。后来的娜塔莉雅成了她们部落的首领,不知两个人会不会有发展的可能。
《北方密使》的第一关名字叫“第一神剑”不知指的是白志超还是中途加入的刑天。

Saturday, June 20, 2009

事件的修改

群芳谱的代码扔给金圭子了,不知他能改到什么地步,会很深入吧。

此外许多新的修改需要用源码级实现。一些功能用脚本比较好。我发现某些实现用脚本比用代码更简单,更别提50指令了。

Tuesday, June 16, 2009

雨后


偶尔还是会下雨,但是太阳还会出来的。

Wednesday, June 03, 2009

近期的情况

最近比较忙,大概不能做源码的更新了。现在源码已经基本上稳定,kg 在进行 txdx 官方出品 MOD 的系统维护工作,我几乎不做什么事了。群芳的风波之后,这部分源码也基本上想找个其他人维护了。群芳的源码是修改得最多的,也不止一个人做过。

此外就是一些人提出了移植的方案,我的观点是将移植工作留给时间。当手机的性能足够和 PC 机相比的时候,移植也是水到渠成的事了。现在的手机平台大部分性能都不高。而鱼提出的 C + Lua 的解决方案无疑不是什么好办法,如果全用 C 编写会更加通用些。或者找一个好的 pascal 在其他平台的编译器也是一个可行的方案。

Monday, April 20, 2009

又是无题



很想写些文字。


但是没写出什么来,让生活多一些阳光吧。


即使天空下着雨,我们的世界永远都是晴天。


感谢你。


Monday, March 16, 2009

无题


当思念一个人的时候,好像很难集中精力思考其他问题。


Thursday, February 19, 2009

为Delphi的控制台程式添加图标

一般来说,在delphi中可以通过 Project – Options – Application 来加载图标,但是有时这个选项是灰掉的,特别在控制台程序中是不可用的。让它出现的方法如下:

在dpr文件uses部分添加 form
在begin之前添加 {$R *.res}
在运行的部分添加 Application.Initialize;

如果提示没有res文件的话,就自己建立一个,可以随意建立一个空文件用 工程名.res 命名,之后 Load Icon 就变成可用了。你可以注意到在我发布的源码中这些部分已经添加过,只是注释掉了。

这就是说,让 Load Icon 这个按钮不为灰色必须同时满足上面说的4个条件,即3处代码和一个res文件。这样实际上是认为此程序是一个基于Form的程序,而使得这个选项能够被使用。

但是在编译的时候,是否载入res文件则只由 {$R *.res} 是否存在决定,这就是说完全可以在载入图标之后将另外两处代码注释掉。

Tuesday, January 27, 2009

金庸群侠传之回忆

DOS下的安装程序总是非常无聊的,一大串白色的文字和永远不变的黑色背景。许多排文字刷过去之后,最好再看看磁盘空间是不是足够。毕竟100MB的空间在当时并不是一个小数目。

或许正版游戏的安装程序会绚丽一些?

经历大约两分钟左右硬盘的哀号之后,终于看到了游戏画面,一个拳套和一把剑和一个磁盘。拳套好像是拳击时候用的,中国古代可能没这个东西;而剑的做工看来十分粗糙,磁盘更不必提了,大侠们行侠仗义时是不会带这种可靠性低的东西的。

终于进了游戏,一个看起来明显不是人的东西讲了一些莫名其妙的话,而每句话都要等半天才能出现下一句。不要作任何怀疑,没有加载smartdrv的硬盘效率就是这么低。

image

终于软体之星把废话说完了,出来还得跟跟南贤废话。废话完了想存个档,再次经历一分钟的硬盘哀号之后,几个英文字输了出来,之后计算机死机了。

有一个软件叫诺顿,可以检测硬盘文件的逻辑错误,于是检测一番,果然有几个文件有错,修复之后满怀希望再次进入游戏存档(中间浪费至少一个小时),再次出错,于是陷入了一个存档出错查错再存档的死循环。

在经历了出招的不可理喻的速度之后,我决定放弃在486电脑上运行这个游戏的念头。

终于数月之后,找了一台Pentium 100MHz的电脑,重新找了一个安装版,终于能够顺利运行这个游戏了,于是开始了一个旷日持久的旅程。我开始并未打算能够通关,只是碰运气,能撞到啥算啥。

在用debug将主角的许多属性改为100之后,我发现还是到处被人灭掉。在这个武侠世界,光有体格是没用的。还要有绝世武功。

于是我试着将主角的第一门武功改成10级,我是绝不会老老实实打那680下的(这个计算结果其实是错误的)。于是我开始试着修改存档的其余部分,终于成功将野球拳改成了343级,在经历了一下莫名的满屏拳影之后,又回到了1级。大概是修改得太大了,于是再次修改,结果又变成了4级和了85级,终于85级在一下之后变成了10级,从此之后明白了e7 03代表着属性的终极。

而再次之前,第一次的失踪,是来自阎基的痛苦回忆,第二次则是番僧。这个江湖之上,主角只是个武功低劣的无名小辈。

那么我得到的第一本书是什么来着?是《飞狐外传》还是《书剑恩仇录》?后者的可能性也许大些,因为主角武力高便可以,而花大力气练胡斐我不一定干的出来。至少我记得我是喝着什么酒,扔了一大堆金蛇锥,才搞定了这个难缠的苗大伯。

练了一堆奇怪武功之后,本想抢到葵花宝典,体会一下东方不败的绝世神功,想不到这里的葵花宝典只是一本单纯增加属性的秘籍。于是读回先前的存档,把宝典给了石破天。

许多的回忆杂糅在一起,已经不记得是哪一次了:
武功全满之后,心想战斗经验不要浪费,就一直挂着一本医书,后来得到了50多个九转熊蛇丸。

主角练九阳神功特别的慢,张无忌好一点,但是因为攻击差抢经验少,也练得很慢。谁规定打架主角必须上的?

生生造化丹是个好东西,但是金轮法王身上的好像又不是,是啥呢?

令狐冲的独孤九剑,看到就能打到。

林平之居然冲上去单挑,结果全体失踪了。

程瑛虚竹狄云不跟我走,于是改掉道德,有多少都跟来吧。

经历过多方提示之后,终于干掉了10大邪派高手,成功通关了。

这是一个引擎,画面落后时代的游戏,但同时也是一个创意极度超前的游戏。中文游戏的历史上永远会有这一座伟大的丰碑。

Delphi中使用Lua脚本语言的几点注意

1. 想在delphi里面使用lua,如果不懂安装那么就可以不安装,把下来的lua.pas文件和两个dll文件放在工程目录里,并且在工程里的uses部分加上lua就可以了。

2. 如果想仅仅运行文件中的一个函数,似乎必须先运行整个文件,也就是需要两次调用pcall函数。这可能是运行函数之前需要先给出一个函数列表。

lua_pcall(Lua_script, 0, 0, 0);
lua_getglobal(Lua_script, functionname);
result := lua_pcall(Lua_script, 0, 1, 0);

3. 若函数的某个参数是表,即{1, 2, 3}这样的形式,那么如果想读取表中的第三个值(就是3),必须按照以下顺序使用4个函数:

lua_pushnumber(L, 3); //3指表中第3位
lua_gettable(L, -2); //-2指表在栈中的位置。这个例子里表参数是最后一个入栈,一般的说应是-1,但是由于方才又压入了一个值,所以变成了-2,同时,表在栈中的位置这个值会被出栈,而从表中读取到的值会入栈。
p := lua_tostring(L, -1); //把栈顶的数据读出来。
lua_pop(L, 1); //清栈。

4. lua的delphi译本似乎很多,我用的是http://www.matrix44.de/lua/下载的。

Thursday, January 15, 2009

Lua复刻版

由游泳的鱼制作,大部分使用脚本编写。

如果在2007年或2008前半年这个东西能出来的话,那确是一个伟大的进步,但是现在这个版本,与开了源的复刻版相比,竞争力并不大。

不过我可能是不适宜讲这些话的。

Sunday, January 04, 2009

换一个主题色


很久没更新,借MSN终于能重新登陆之机换一个主题。


看起来比较暗淡,说不定过几天再换一个。


Saturday, January 03, 2009

是不是该写点什么

但是该写什么呢?