战网中国

标题: kolbot 仓库物品查找小程序 [打印本页]

作者: 小符    时间: 2017-1-19 19:14
标题: kolbot 仓库物品查找小程序
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


作者: 小符    时间: 2017-1-19 19:23
为了卖宝石也是拼了,到处抄,总算抄成个能统计宝石数量的。
作者: blankness    时间: 2017-1-25 08:13
mark先
作者: 帅气猪    时间: 2017-1-25 12:17
这什么软件能识别行数啊
作者: 天边    时间: 2017-3-15 10:43
牛逼
不知道楼主怎么联系
作者: wowoaoao    时间: 2017-3-15 12:08
楼主已离开暗界




欢迎光临 战网中国 (http://battlecn.net/) Powered by Discuz! X3.1