幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 5368|回复: 3

[KR] [原创]随手放出副产品……

[复制链接]

18

主题

428

帖子

5260

积分

⑦老手

在美工荒中挣扎的全能

积分
5260
QQ
发表于 2006-7-12 19:15:19 | 显示全部楼层 |阅读模式
Key Fans Club/OpenAVG Project
   MD5Sum Verify and File Movement Plugin
   Programmed by Miliardo (Whitefang Studio)

   http://whitefang.adn.cn/
   http://www.keyfc.net
   Copyright 2001-2006,Whitefang Studio & KEY FANS CLUB,All Rights Reserved


集成了MD5效验和移动文件功能的TVP2插件……

初始化用Plugin.link,消去用Plugin.unlink,不必我多说了吧……

定义函数如下:

md5chk(string s1,string s2);

打开文件名s1的文件,生成MD5效验和(虽然似乎现在这个算法也不再保险……),并将效验和与文件名s2的文件比对,正确返回0,不吻合返回1,打开文件错误返回-1。

这个功能大家可以在发布时对终端用户检验自己游戏的完整性和正确性……

movefile(string s1,string s2);

将文件名s1的文件移动为s2,如文件名s2的文件已经存在则覆盖,如原文件不存在将出错,请使用前先用Storages.isExistentStorage确认……

……以上……

本帖子中包含更多资源

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

x
回复

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2006-7-12 19:47:53 | 显示全部楼层
呵呵,好东西啊。
既然有md5校验了,那下面就是网络更新模块。
游戏就可以自己在线更新了。

ps.krkr自己带的那个win32ole.dll是干嘛用的?
え~え~お!!!
回复 支持 反对

使用道具 举报

18

主题

428

帖子

5260

积分

⑦老手

在美工荒中挣扎的全能

积分
5260
QQ
 楼主| 发表于 2006-7-13 09:06:02 | 显示全部楼层
引用第1楼shawind2006-07-12 19:47发表的“”:
呵呵,好东西啊。
既然有md5校验了,那下面就是网络更新模块。
游戏就可以自己在线更新了。

ps.krkr自己带的那个win32ole.dll是干嘛用的?

调用OLE控件啊…………

因为win32ole和wsh相关的资料集中在源代码里……所以你们那里可能没有……

下面放一个结构说明你就明白了……
/**
* 擬似記述マニュアル
*/

/**
* OLE を操作できるオブジェクトを生成します。
* OLE が IDispatch で持つメソッドを直接呼び出すことができます。
*/
class WIN32OLE {

    /**
     * コンストラクタ
     * @param name 識別名 または CLSIDを文字列で指定
     */
    function WIN32OLE(name);

    /**
     * メソッドの実行
     * @param name メソッド名
     * 以下パラメータ
     */
    function invoke(name, ...);

    /**
     * プロパティの設定
     * @param name プロパティ名
     * @parma value 設定値
     */
    function set(name, value);

    /**
     * プロパティの取得
     * @param name プロパティ名
     * @return 設定値
     */
    function get(name);
   
    /**
     * 定数の取得
     * @param obj 指定したオブジェクトのプロパティとして定数を取得します。
     * 省略した場合は自分のオブジェクト内部に取得します。
     */
    function getConstant(obj=this);

    /**
     * イベント受信オブジェクトの登録
     * @param eventName イベント種別名 (例: "DWebBrowser2Events2" )
     * @param receiver イベントをうけるオブジェクト
     * オブジェクトが持つイベント名と同じ名前のメソッドが呼び出されます。
     * 該当するメソッドが無い場合はなにも処理されません。
     */
    function addEvent(eventName, receiver);
};

/**
* ActiveX を操作できるオブジェクトを生成します。
* ActiveX が IDispatch で持つメソッドを直接呼び出すことができます。
*/
class ActiveX extends WIN32OLE {

    /**
     * コンストラクタ
     * @param name 識別名またはCLSID を文字列で指定。※WIN32OLE の指定とは CLSID の書式が違うので注意 CAxWindow::CreateControl の書式
     * @param win 指定するとそのウインドウの上に生成します。省略すると独立ウインドウになります。
     * @param left 表示座標 ウインドウ指定かつ省略の場合はウインドウのクライアント領域の左上
     * @param top 表示座標 ウインドウ指定かつ省略の場合はウインドウのクライアント領域の左上
     * @param width 表示サイズ   ウインドウ指定かつ省略の場合は親ウインドウのクライアント領域のサイズ
     * @param height 表示サイズ  ウインドウ指定かつ省略の場合は親ウインドウのクライアント領域のサイズ
     */
    function ActiveX(name, win=null, left=0, top=0, width=100, height=100);

    /**
     * 座標指定
     * @param left 左端座標
     * @param top 上端座標
     */
    function setPos(left, top);

    /**
     * サイズ指定
     * @param width 横幅
     * @param height 縦幅
     */
    function setSize(width, height);

    /**
     * 拡張UI指定
     * IEコンポーネントでのみ意味を持ちます。現在の版では、これ呼び出すことで
     * コンテキストメニューが抑制されます。
     */
    function setExternalUI();

   
    /**
     * 左端座標
     */
    property left;

    /**
     * 上端座標
     */
    property top;

    /**
     * 横幅
     */
    property width;

    /**
     * 縦幅
     */
    property height;

    /**
     * 表示状態
     */
    property visible;

};

这个是使用Win32OLE的例子
Plugins.link("win32ole.dll");

var win = new Window();
win.setInnerSize(420, 440);
win.visible = true;

// IE はりつけ
var ie = new ActiveX("Shell.Explorer.2", win);

// 場所とサイズを指定して表示
ie.setPos(10,10);
ie.setSize(400,200);
ie.visible = true;

// IEコンポーネントは、Asynchronous Pluggable Protocols に対応しているので
// krkr: プロトコル指定で、
// アーカイブ中のファイルも開くことができる
ie.Navigate2("krkr:test.html");

// 外部UIハンドラ登録。空で指定するとコンテキストメニューが消える
//ie.setExternalUI();

// イベントハンドラ用のクラス
class WebEventHandler {
    // イベント名に合致するファンクションが呼び出される
    function DocumentComplete(disp,url) {
        Debug.message("document complete!!");
    }
};
// 第一引数がイベントの種別の名前。タイプライブラリに登録されている必要がある。
ie.addEvent("DWebBrowserEvents2", new WebEventHandler());

// MediaPlayerはりつけ
var mp = new ActiveX("MediaPlayer.MediaPlayer.1", win);
mp.setPos(10,220);
mp.setSize(400,200);
mp.visible = true;
mp.AutoStart = true;
//mp.Open("c:test.wma");

// EXCEL 呼び出し
var    excel = new WIN32OLE("Excel.Application");
excel.Visible = true;
var workbook = excel.Workbooks.Add();
var worksheet = workbook.Worksheets(1);
worksheet.Range("A1").value = 99;
worksheet.Range("A2").value = 10;
// 定数情報の取得
excel.getConstant();
Debug.message("xlinfo:" + excel.xlInfo);
回复 支持 反对

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2006-7-13 12:13:34 | 显示全部楼层
感谢你详细的文档。差不多了解了一些。
看来krkr的扩充性还不错,可以做出来的东西也应该很有趣。
え~え~お!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-4-27 07:41 , Processed in 0.022956 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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