| 原帖由 KG 于 2007-1-7 22:14 发表这里的format是C语言里的变量格式,即“%d”“%c”“%f”等(本人只用过%d)
 使用时要先把“%d”这两个字符做成一个对话,记下对话编号N
 然后用“读取对话到字符串”把N号对话赋给字符串 STR Y
 然后用sprintf(9, type,s, Y, x, -1, -1)这个命令把变量x的值以Y的格式做为字符串赋给字符串s
这是论坛里关于这个指令用法的最早记录,但也大大误导了以后如无色之类的一大批MOD制作者
 
 经我测试,其实sprintf可以这样用
 
 第一轮测试
 talk[26]:我是%d,= =今天天气不错~复制代码;Kdefnum=测试指令1
  0                              ;  0(0)::空语句(清屏)
  50 5 0 0 0 0 0 0               ;  50(32):全部变量清零 
  50 8 0 26 1000 0 0 0           ;  50(32):读对话到字符串  Str[X1000]=talk(26)
  50 9 0 1100 1000 1200 0 0      ;  50(32):Sprintf  Str[X1100]=CStr(1200) FORMAT=Str[X1000]//这个是重点
  50 33 0 1100 0 40 1797 0       ;  50(32):显示字符串 显示字符串1100 (0,40)Color1797
  50 35 0 0 0 0 0 0              ;  50(32):读取键盘 [X0]=键值
  -1                             ;  -1(FFFF):事件结束
 测试结果:
 
   
 
 
 第二轮测试
 talk26=我是%c,= =今天天气不错~复制代码;Kdefnum=测试指令2
  0                              ;  0(0)::空语句(清屏)
  50 5 0 0 0 0 0 0               ;  50(32):全部变量清零 
  50 8 0 26 1000 0 0 0           ;  50(32):读对话到字符串  Str[X1000]=talk(26)
  50 8 0 27 1200 0 0 0           ;  50(32):读对话到字符串  Str[X1200]=talk(27)
  50 9 1 1100 1000 1200 0 0      ;  50(32):Sprintf  Str[X1100]=CStr([X1200]) FORMAT=Str[X1000]
  50 33 0 1100 0 40 1797 0       ;  50(32):显示字符串 显示字符串1100 (0,40)Color1797
  50 35 0 0 0 0 0 0              ;  50(32):读取键盘 [X0]=键值
  -1                             ;  -1(FFFF):事件结束
talk27=A
 
 
 测试结果:
 
   
 
 第三轮测试
 talk26=我是%9d,= =今天天气不错~复制代码;Kdefnum=测试指令3
  0                              ;  0(0)::空语句(清屏)
  50 5 0 0 0 0 0 0               ;  50(32):全部变量清零 
  50 8 0 26 1000 0 0 0           ;  50(32):读对话到字符串  Str[X1000]=talk(26)
  50 9 0 1100 1000 1200 0 0      ;  50(32):Sprintf  Str[X1100]=CStr(1200) FORMAT=Str[X1000]//这个是重点
  50 33 0 1100 0 40 1797 0       ;  50(32):显示字符串 显示字符串1100 (0,40)Color1797
  50 35 0 0 0 0 0 0              ;  50(32):读取键盘 [X0]=键值
  -1                             ;  -1(FFFF):事件结束
 测试结果:
 
   
 
 
 总结:
 sprintf是一个很可怕的指令,他几乎和C里的format一样,不需要单独将%d放在一个对话里
 故最开始的那个引用里的某个人误导了我们将近三年。。。。
 
 
 
 [ 本帖最后由 黄顺坤 于 2010-2-21 17:51 编辑 ]
 |