铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 1768|回复: 5

关于读取对话的……

[复制链接]
发表于 2010-3-18 13:29 | 显示全部楼层 |阅读模式

马上注册,结交更多侠友!

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
避开广告
避开广告
避开广告
避开广告
避开广告
避开广告
避开广告
避开广告
避开广告
避开广告
避开广告
  1. idx := fileopen('resource\talk.idx', fmopenread);
  2.   grp := fileopen('resource\talk.grp', fmopenread);
  3.   if talknum = 0 then
  4.   begin
  5.     offset := 0;
  6.     fileread(idx, len, 4);
  7.   end
  8.   else
  9.   begin
  10.     fileseek(idx, (talknum - 1) * 4, 0);
  11.     fileread(idx, offset, 4);
  12.     fileread(idx, len, 4);
  13.   end;
  14.   len := (len - offset);
  15.   setlength(talkarray, len + 1);
  16.   fileseek(grp, offset, 0);
  17.   fileread(grp, talkarray[0], len);
  18.   fileclose(idx);
  19.   fileclose(grp);
  20.   for i := 0 to len - 1 do
  21.   begin
  22.     talkarray[i] := talkarray[i] xor $FF;
  23.     if talkarray[i] = 255 then
  24.       talkarray[i] := 0;
  25.   end;
  26.   talkarray[i] := 0;
  27.   tp := @talkarray[0];
复制代码
我想知道,上面这段kg新对话指令里面的代码,是直接读取对话到talkarray吗?
读取到talkarray后就可以当做字符串来显示了吗?
tp := @talkarray[0]这样是把talkarray里的对话赋值到tp吗?
完全搞不懂这里,求哪位大大来给我解释下吧!

[发帖际遇]: 轩辕夏禹找冯默风打造兵器,得到了一把大剪刀,见到岳老三,高价卖给他,赚了银两21。


[ 本帖最后由 轩辕夏禹 于 2010-3-18 13:38 编辑 ]
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-3-22 00:35 | 显示全部楼层
硬着头皮,帮忙楼主顶起,抛砖引玉,期待楼下
tp := @talkarray[0]
tp未声明,@难道表示指针所指的首地址?

[发帖际遇]: 夏海私入铁掌峰禁地,被裘千仞铁掌打伤,医疗花去银两41两。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-3-22 10:51 | 显示全部楼层
我想知道,上面这段kg新对话指令里面的代码,是直接读取对话到talkarray吗?
读取到talkarray后就可以当做字符串来显示了吗?
tp := @talkarray[0]这样是把talkarray里的对话赋值到tp吗?


是把文字读到talkarray,之后有一个解码。
tp是指针,@是取地址运算符。因为转码函数的参数是指针。

二当家纯粹胡扯。这段程序根本没有声明段,所有变量都没声明。

[发帖际遇]: scarscc去天宁寺抢夺连城宝藏,抢到有毒的宝藏,损失医药费银两10。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-3-22 10:57 | 显示全部楼层
看不懂!!!好复杂!!!
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-3-22 14:24 | 显示全部楼层
idx := fileopen('resource\talk.idx', fmopenread);
  grp := fileopen('resource\talk.grp', fmopenread);
  if talknum = 0 then
  begin
    offset := 0;
    fileread(idx, len, 4);
  end
  else
  begin
    fileseek(idx, (talknum - 1) * 4, 0);
    fileread(idx, offset, 4);
    fileread(idx, len, 4);
  end;
  len := (len - offset);
  setlength(talkarray, len + 1);
  fileseek(grp, offset, 0);
  fileread(grp, talkarray[0], len);
  fileclose(idx);
  fileclose(grp);
这部分是打开文件并把需要的内容读到动态数组talkarray中
  for i := 0 to len - 1 do
  begin
    talkarray := talkarray xor $FF;
    if talkarray = 255 then
      talkarray := 0;
  end;
这个应该是对加密对话的解密或类似的工作
tp := @talkarray[0];
tp应该是指针,并且与talkarray的类型不同。这句话这样写是为了类型兼容。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-3-23 00:26 | 显示全部楼层
感谢3当家和5当家解答

回3当家:
我知道pascal变量声明用var
又遇到您,我很惊喜,您真乃神龙见首
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-11-15 19:46

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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