请选择 进入手机版 | 继续访问电脑版

 找回密码
 点一下
查看: 4163|回复: 10

[通向轩辕剑的第二步][WE外部数据输入用Excel脚本]

[复制链接]
发表于 2008-2-14 23:00:29 | 显示全部楼层 |阅读模式
这几天研究了下JassGenPack的功能,真的十分强大~
尤其是它可以导入外部SLK文件,等于让WE挂接了简单的数据表。

不过JGP不太稳定,经常会不能编译地图,所以我模仿它的作法用Excel写了一个VBA脚本,使得按照一定规则的Excel数据表可以转换成WE能读取的代码

该脚本转换出的代码需要CSCache13.0以上版本支持!

要运行该宏脚本需要将Excel的安全性设定调整至中级以下,选择“菜单-工具-宏-Generate-运行”

执行后会先询问该数据段的名字,输入一个英文名字后,会询问是否将第一列设定为索引字段(所谓索引字段就是指可以利用该字段搜到整行的数据,比如可以把物品的id放在第一列,后面放物品的一些其他数据;如果放弃索引字段,则只能采用数组序号的方式查找数据)

程序会在原Excel文件目录下生成一个和Excel文件同名的TxT文件,里面就是代码。
然后在WE中新建一个触发器,转换成自定义脚本,将TXT中的内容复制进自定义脚本的函数中就可以了。最后的最后,别忘记我们是用了一个全局函数来储存数据的,所以按Ctrl+B打开变量编辑窗口,创建一个和刚才你选择英文名字同名的整数数组变量


例子:
原始表格
rawcode real string integer  <-第一行用来定义下面数据的类型
I000        1.2  云岚    1
I001        3.2  寒光    5
I002        3.4  清秋    11
I003        4.5  寒山   
I004      231.23            31
I005      64      烟波    41

转换出的代码(英文名字取Temp,“索引字段”选Yes)
//****************************************************************
//*** This Data was generated by Helanmouse's WE Data Importer ***
//*** Version 1.3

//Line Summary
udg_Temp[0] = 6

//Line 1
udg_Temp[1] = NewArray(5, true)

call SetTableInt( "[Temp]", I2S('I000'), udg_Temp[1] )   
//这就是索引字段,在其他函数中可以直接用 GetTableInt() 函数调出该行数据
call SetArrayReal( udg_Temp[1], 2, 1.2 )
call SetArrayString( udg_Temp[1], 3, "云岚" )
call SetArrayInt( udg_Temp[1], 4, 1 )

//Line 2
udg_Temp[2] = NewArray(5, true)
call SetTableInt( "[Temp]", I2S('I001'), udg_Temp[2] )
call SetArrayReal( udg_Temp[2], 2, 3.2 )
call SetArrayString( udg_Temp[2], 3, "寒光" )
call SetArrayInt( udg_Temp[2], 4, 5 )

//Line 3
udg_Temp[3] = NewArray(5, true)
call SetTableInt( "[Temp]", I2S('I002'), udg_Temp[3] )
call SetArrayReal( udg_Temp[3], 2, 3.4 )
call SetArrayString( udg_Temp[3], 3, "清秋" )
call SetArrayInt( udg_Temp[3], 4, 11 )

//Line 4
udg_Temp[4] = NewArray(5, true)
call SetTableInt( "[Temp]", I2S('I003'), udg_Temp[4] )
call SetArrayReal( udg_Temp[4], 2, 4.5 )
call SetArrayString( udg_Temp[4], 3, "寒山" )

//Line 5
udg_Temp[5] = NewArray(5, true)
call SetTableInt( "[Temp]", I2S('I004'), udg_Temp[5] )
call SetArrayReal( udg_Temp[5], 2, 231.23 )
call SetArrayInt( udg_Temp[5], 4, 31 )

//Line 6
udg_Temp[6] = NewArray(5, true)
call SetTableInt( "[Temp]", I2S('I005'), udg_Temp[6] )
call SetArrayReal( udg_Temp[6], 2, 6423 )
call SetArrayString( udg_Temp[6], 3, "烟波" )
call SetArrayInt( udg_Temp[6], 4, 41 )

WE Data Importer.rar

13 KB, 下载次数: 50

v1.3

发表于 2008-2-14 23:13:40 | 显示全部楼层
第二步
占沙发
回复

使用道具 举报

发表于 2008-2-14 23:45:47 | 显示全部楼层
第3步,灌水
回复

使用道具 举报

发表于 2008-2-15 01:07:43 | 显示全部楼层
楼上果然很水。
恩这个不错。。
回复

使用道具 举报

发表于 2008-2-15 09:12:36 | 显示全部楼层
55,没EXCEL研究不了
回复

使用道具 举报

发表于 2008-2-15 11:29:09 | 显示全部楼层
其实只要魔兽是“正版”(不是指有能上BN的CDKEY,只要有能过安装的就行)光盘版,而且是1.21的,JGP很稳定的。至少我还没出过问题,现在JassCraft都不用老。大不了用虚拟光驱。
因为要用到线程注入,WC3C的大大们HACK的应该用的是正版的,像中国普遍的剑心水货在线程注入的时候就可能发生问题。
回复

使用道具 举报

发表于 2008-2-15 12:11:44 | 显示全部楼层
留个mpq导出模型……
回复

使用道具 举报

 楼主| 发表于 2008-2-15 20:44:07 | 显示全部楼层
我就是用光盘版的 在某些地图可以用 某些地图会死机……在官方论坛问过 原软件是针对英文版WE的,中文版可能会出现问题
回复

使用道具 举报

发表于 2008-2-15 22:08:41 | 显示全部楼层
5#的同志不要那么明显的表扬剑心同志生产水货麽
回复

使用道具 举报

发表于 2008-2-16 00:08:56 | 显示全部楼层
哪个是剑心?
回复

使用道具 举报

发表于 2008-2-16 01:55:23 | 显示全部楼层
我要找剑心额
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-4-16 16:35 , Processed in 0.116568 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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