战网中国

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2947|回复: 5
打印 上一主题 下一主题

kolbot 仓库物品查找小程序

[复制链接]

9

主题

44

帖子

247

积分

侠客

Rank: 3Rank: 3

积分
247
跳转到指定楼层
楼主
发表于 2017-1-19 19:14:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、到http://nodejs.org/ 下载nodejs的LTS版本,安装。
2、cmd进入小黑窗,运行2条指令 npm -g install bluebird 和 npm -g install co

3、下面的小程序,修改第一行为你的kolbot文件夹地址,注意是 / 不是 \ ,保存为 mitem.js
  1. var dirname="D:/kolbot/kolbot/d2bs/kolbot/mules/Asia";

  2. const Promise = require('bluebird'),
  3.         fs = Promise.promisifyAll(require('fs')),
  4.         co = require('co'),
  5.         readline = require('readline'),
  6.         handleFile = f => f;
  7.        
  8. var items={'count':0};

  9. function readdf(file) {
  10.         var keys = process.argv[2];
  11.         var fRead = fs.createReadStream(file);
  12.         var objReadline = readline.createInterface({
  13.                 input: fRead
  14.         });
  15.         objReadline.on('line', (line)=>{
  16.                 var tmp = JSON.parse(line);
  17.                 if(tmp.title.indexOf(keys) !== -1 ) {
  18.                         items['count']+=1;
  19.                         if (typeof(items[tmp.title]) == "undefined") {
  20.                                 items[tmp.title]={};
  21.                                 items[tmp.title]['count']=1;
  22.                         } else items[tmp.title]['count']+=1;
  23.                         if (typeof(items[tmp.title][file]) == "undefined") items[tmp.title][file]=1;
  24.                         else items[tmp.title][file]+=1;
  25.                 }
  26.         });
  27. }

  28. const walkAsync = co.wrap(function* (path) {
  29.         var files = yield fs.readdirAsync(path);
  30.         var ret = [];
  31.         for(let f of files) {
  32.                 let p = path + '/' + f;
  33.                 var s = yield fs.statAsync(p);
  34.                 if (s.isDirectory()) {
  35.                         var r = yield walkAsync(p);
  36.                         ret = ret.concat(r);
  37.                 } else {
  38.                         ret.push(p)
  39.                         handleFile(p);
  40.                         readdf(p);
  41.                 }
  42.         }
  43.         return ret;
  44. });

  45. co(function *(){
  46.         var files = yield walkAsync(dirname);
  47.         console.log(items);
  48. }).catch(e => console.error(e.stack || e));
复制代码

4、小黑窗中运行指令 node ditem.js Perfect>gems.txt
这个意思是查找宝石,并保存到文件gems.txt
如果要查找符文,则指令=node ditem.js Rune>runes.txt
其他以此类推,Perfect Rune 都是查找的关键字,也就是物品的title。

5、可以用notepad++来看产生的文件gems.txt runes.txt

回复

使用道具 举报

9

主题

44

帖子

247

积分

侠客

Rank: 3Rank: 3

积分
247
沙发
 楼主| 发表于 2017-1-19 19:23:31 | 只看该作者
为了卖宝石也是拼了,到处抄,总算抄成个能统计宝石数量的。
回复 支持 反对

使用道具 举报

14

主题

299

帖子

1440

积分

精灵王

Rank: 6Rank: 6

积分
1440

社区居民忠实会员

板凳
发表于 2017-1-25 08:13:40 来自手机 | 只看该作者
mark先
回复

使用道具 举报

6

主题

133

帖子

350

积分

骑士

Rank: 4

积分
350
地板
发表于 2017-1-25 12:17:01 | 只看该作者
这什么软件能识别行数啊
回复 支持 反对

使用道具 举报

7

主题

40

帖子

210

积分

侠客

Rank: 3Rank: 3

积分
210
5#
发表于 2017-3-15 10:43:33 | 只看该作者
牛逼
不知道楼主怎么联系
回复 支持 反对

使用道具 举报

74

主题

1906

帖子

6526

积分

风云使者

Rank: 7Rank: 7Rank: 7

积分
6526

社区居民忠实会员原创写手

6#
发表于 2017-3-15 12:08:25 来自手机 | 只看该作者
楼主已离开暗界
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|BattleCN ( 陕ICP备05006600号 )

GMT+8, 2025-2-7 23:20 , Processed in 0.042090 second(s), 22 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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