KCDDP ADV综合创作站 » 高级技术区 » [某D的KRKR笔记本]DLL插件的应用(09/1/2更新)


2008-11-14 12:39 全局变量D
[某D的KRKR笔记本]DLL插件的应用(09/1/2更新)

[b]利用win32ole.dll读入unicode文本[/b]
一开始的起源是这个:
[url]http://hpcgi1.nifty.com/gutchie/wifky/wifky.pl?p=%B5%C8%CE%A4%B5%C8%CE%A4%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3%A4%CB%B4%D8%A4%B9%A4%EB%A5%E1%A5%E2+-+win32ole.dll#p1.3.2[/url]

想想既然可以写当然是可以读的了...于是就实验了一下...幸好win32ole相关的东西满大街都是说明,所以就随手弄了个实验记录下.

用来读取"E://实验用工程/function.ks"(自己随便搞的脚本),并显示出来.

[code]
*start

[iscript]
//载入插件
Plugins.link("win32ole.dll");

var objFileSystem = new WIN32OLE("Scripting.FileSystemObject");

//打开文件
var objTextFile = objFileSystem.OpenTextFile("E://实验用工程/function.ks",1,false,-1);
//参数:文件名,读写方式(只读1/只写2/续写8),不存在是否新建(true/false),编码(系统默认-2/UNICODE-1/ASCII 0)

//把所有内容读入变量f.LoadScript
f.LoadScript=objTextFile.ReadAll();

//用数组f.脚本记录每行的内容
f.脚本=f.LoadScript.split('\r\n',,true);

//垃圾回收
objTextFile.Close();
invalidate objTextFile;
invalidate objFileSystem;

[endscript]

;逐行显示脚本
[eval exp="f.循环=0"]

*循环
[nowait]
[emb exp="f.脚本[f.循环]"][r]
[endnowait]
[eval exp="f.循环++"]
[jump target=*循环 cond="f.循环<f.脚本.count"]

[s]

[/code]


[b]使用dirlist.dll读取某个文件夹下的所有文件名[/b]

代码 FROM 船长 某日Q群内记录...=_=

[code]
@loadplugin module=dirlist.dll

@iscript
var list = getDirList("c:/");
dm(list.count);
for(var i=0; i<list.count; i++)
{
        dm(list[i]);
        dm("\n");
}
@endscript

[/code]

[b]使用addFont.dll加载不位于windows font文件夹下的字体文件(.ttf/.otf)[/b]

鉴于预渲染字体的大小不好调整,
而把字体包进安装程序,在玩家的系统文件夹下面装东西又很流氓,这个方法值得一试.
字体文件和普通素材一样,丢在素材文件夹里即可.

缺点是不支持9X系统...嗯,win2000及以上都OK...==b

[code]

@loadplugin module=addFont.dll

[iscript]
System.addFont("字体文件名.ttf", true);
[endscript]

[/code]

[[i] 本帖最后由 全局变量D 于 2009-1-2 17:17 编辑 [/i]]

2008-11-14 17:37 keakon
呃,莫非不支持unicode编码么…

2008-11-15 09:59 全局变量D
[quote]原帖由 [i]keakon[/i] 于 2008-11-14 17:37 发表 [url=http://kcddp.keyfc.net/bbs/redirect.php?goto=findpost&pid=5218&ptid=916][img]http://kcddp.keyfc.net/bbs/images/common/back.gif[/img][/url]
呃,莫非不支持unicode编码么… [/quote]

这个不就支持着么...?

2009-7-19 22:49 jasson15
大大,addFont的功用是做什麼嗎?引數有兩個,我想問的是:
第一個引數中,字型包一定只能是ttf或otf嗎?
第二個引數的True,False是做什麼用的?
最後,addFont的效果是什麼?會在selectFont()中多加進指定的字型嗎?(好像不會),還是說當用到選字型的時候,也就是用face=""(可能是deffont或是font)時,就會自己加進去?
我是這樣寫的:
@loadplugin module=addfont.dll
@eval exp="System.addFont('MSJH.ttf', true)"
@deffont face="微軟正黑體"
最後還是沒效...
另外,我是用XP的...應該可以才對啊= =

2009-7-21 22:29 全局变量D
1.是的
2.是否在字体选择菜单里可见(就是菜单栏上的字体框里)
繁体XP可能无效...Vista好像可以.
但是有些字体,像是你说的微软正黑体,很可能是在机器里有装的情况下用font face指定都无法正常显示的,那样的话当然用addfont也没效果了.(那字体没被KR识别出来.)

页: [1]


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.