让openkore 更节省你的CPU和内存

节省内存,主要靠……最小化,呵呵,降低物理内存占用,提高虚拟内存占用

消耗cpu主要在4个地方:

1、主循环
2、macro插件
3、debug、benchmark
4、屏蔽没用的输出

 

1、主循环
openkore的config.txt里面有一项: sleepTime,这个参数控制了主流程每秒的循环次数。
默认的是10000,也就是说,每10毫秒做一次循环,检测怪物、npc、血量等等的事情。这个数字太小了,
我个人的建议是修改到50000左右,基本上不会影响效率。但是cpu却可以节省非常明显。

总结:修改 config.txt 中: sleepTime 50000

 

2、macro插件
现在很多服都有反挂,搞的大家macro插件不得不装。
现在新做反挂已经开始费除macro插件,直接在源码基础上修改。这样可以得到最高的运行效率,减少不必要的流程。
macro插件里面的automacro尤其损耗cpu,如果一个macro脚本里面有很多automacro判断,cpu会很恐怖的。
即使没有automacro,在这个插件运行时,也会给主循环添加大量的负担。所以个人建议,没用的话,删掉。

总结:删除macro插件(删除plugins目录,以及cvsdebug.pm)

 

3、debug、benchmark处理
这个问题稍稍不那么突出,因为这些占用cpu的效果没有上面两个明显,呵呵,不过追求完美的话,也处理一下。
openkore官网建议用set ndebug=0这样的语句来禁用benchmark,是一个方法,或者干脆直接用ultraedit之类的修改工具,搜索含有“benchmark“的语句,统统删掉,世界清静了……不过,要注意语法结构,新手不建议做这个操作。
debug由于数量太大,还是留着吧……等官网发布新的版本,自然会去除不必要的东西的。

 

总结:1、cmd输入:set ndebug=0 或手动删除benchmark源码

 

4、屏蔽没用的输出

 
  
attacked 攻击信息
attackedMiss 攻击miss
attackMon 你攻击怪物
attackMonMiss 你攻击怪物miss
connection 连接信息
deal 交易信息
drop 掉落物品
emotion 表情
equip 换装备
gmchat GM聊天
guildchat 工会聊天
info 状态信息
input 输入信息
inventory 身上物品相关
useItem 使用物品
list 各种列表
load 读取config文件
menu 选择菜单
npc npc信息
party 组队信息
partychat 队伍聊天
plugins 插件相关信息
pm 私聊信息 publicchat Public chat message
route 计算路线信息
sold 出售物品
skill 使用技能
selfSkill 对自己使用技能
startup 初始化信息
storage 仓库相关
success 成功信息
syntax 语法检查
system 系统信息
teleport 瞬移信息
xkore X
- Kore信息

这个直接影响到console的输出量,如果你用macro,而且用了automacro中的console语句,那么这样做可以省很多cpu。
在config.txt里面有一行,是:squelchDomains,指屏蔽列表,把你要屏蔽的东西添在后面就行了。常用的有:


哎累死勒,手动翻译--
举个例子,你不想看到工会聊天和掉落物品,就把squelchDomains设置为下面的样子:

squelchDomains guildchat,drop
简单吧。呵呵

总结:使用squelchDomains 屏蔽显示输出。

 

 

转载于:https://www.cnblogs.com/leakl/articles/1946836.html

很好的初级教程 KoreEasy指令表[完整版] 其实是通用参数,Kore相关系列皆可通用 ( ) - 必要参数,没填写指令就不会动作 [ ] - 选用参数,没填写即为默认 -=-=-=-=-=-=-=-= 状态查询 =-=-=-=-=-=-=-=- s - 人物状态,列出跟人物有关的重要讯息,相当于仙境传说内无法关掉的状态窗口 i [u/eq/nu] - 物品栏列表,分为可使用物品栏、装备物品栏,及不可使用物品栏 例如:只要列出可使用物品栏 i u cart - 手推车物品列表,商人/铁匠/练金术士 专用 st - 属性数据,列出人物的细部数据(像str力量、agi敏捷、attack攻击力之类的) skills - 技能列表,列出技能名称、技能等级,及其所会消耗的 SP 值 skills desc [(技能标码 #)] - 技能描述 ※注:(技能标码 #) - 请按skills查询 exp 查询目前打怪的经验值效率 -=-=-=-=-=-=-=-= 环境查询 =-=-=-=-=-=-=-=- where - 显示人物目前所有的地图及坐标 who - 显示目前的在线人数 il - 物品列表,列出附近地面所有的物品清单 ml - 怪物列表,列出附近区域所有的怪物清单 nl - NPC 列表,列出附近区域所有的 NPC 清单 pl - 玩家列表,列出附近区域所有的玩家清单 party - 队伍列表,列出队员的联机状态、所在地点,及健康状态 pml - 密语列表,相同于仙境传说内的悄悄话清单,送出/收到的密语人名都会存在这里,以便快速响应 portals - 传送点列表,传送点连接了地图的交通,你可列出附近区域所有的传送点 petl - 宠物列表,列出附近区域所有的宠物清单 -=-=-=-=-=-=-=-= 人物动作 =-=-=-=-=-=-=-=- respawn - 飞回储存点,任何时候皆可用(蝴蝶翅膀) tele - 瞬间移动到地图的任意地点(苍蝇翅膀) sit - 指示人物坐下 stand - 指示人物站起 a (怪物标码 #) - 使用武器攻击指定编号怪物 ※注:(怪物标码 #) -请按ml查询 -=-=-=-=-=-=-= 人物成长加点 =-=-=-=-=-=-=- stat_add (str | agi | vit | int | dex | luk) - 将属性点数加到指定属性上 ※注:必须有可用属性点数才能加,属性点数可突破99(异常状态,会被冻)。 skills add (技能标码 #) - 将技能点数加到指定技能上 ※注1:(技能标码 #) - 请按skills查询 ※注2:必须有可用技能点数才能加 ※注3:技能点数可跳着加,不必管前置点数,即俗称的"跳技" PS. 跳技的BUG已经被修正了,无法再使用,仅供参考 -=-=-=-=-=-=-=-= 物品相关 =-=-=-=-=-=-=-=- take (物件标码 #) - 捡拾地上物品 ※注:(对象标码 #) - 请按il查询 is (物品栏对象标码 #) - 对自己使用物品 eq (物品栏物件标码 #) - 装备物品栏内的物品 uneq (物品栏物件标码 #) - 卸下装备,放到物品栏 drop (物品栏物件标码 #) [(数量)] - 将物品丢到地上,没有指定数量的话,即会将该对象全都丢弃 ※注:(物品栏对象标码 #) - 请按i查询 idenitify - 物品辨识列表,使用放大镜或物品鉴定技能,便能辨识表中的物品 identify (辨识对象标码 #) - 施展物品鉴定技能,或使用放大镜来辨识对象 ※注:(辨识物品标码 #) - 由辨识列表查出的对象指定号码 im (物品栏对象标码 #) (怪物标码 #) - 对怪物使用物品 ※注1:(对象标码 #) - 请按il查询 ※注2:(怪物标码 #) - 请按ml查询 ip (物品栏物件标码 #) (玩家标码 #) - 对玩家使用物品 ※注1:(对象标码 #) - 请按il查询 ※注2:(玩家标码 #) - 请按pl查询 -=-=-=-=-=-=-=-= 技能相关 =-=-=-=-=-=-=-=- sm (技能标码 #) (怪物标码 #) [(技能等级)] - 对怪物施展技能,没有指定技能等级视为施展最高等级 sp (技能标码 #) (玩家标码 #) [(技能等级)] - 对玩家施展技能,没有指定技能等级视为施展最高等级 ss (技能标码 #) [(技能等级)] - 对自己施展技能,没有指定技能等级视为施展最高等级 skills desc (技能标码 #) - 对该技能加入备注描述 ※注1:(技能标码 #) - 请按skills查询 ※注2:(玩家标码 #) - 请按pl查询 ※注3:(怪物标码 #) - 请按ml查询 -=-=-=-=-=-=-=-= 对话功能 =-=-=-=-=-=-=-=- c (讯息) - 公开频道谈话,也能在聊天室内时用 p (讯息) - 队伍频道谈话 g (讯息) - 工会频道谈话 pm (玩家名称 | 密语标码 #) (讯息) - 密语谈话 ※注:(密语标码 #) - 请按pml查询 例如:pm "GM01" Hello~~ e (表情标码 #) - 传送表情符号(爱心、流汗、生气…之类的) ※注:(表情标码 #) - 请按e查询 ignore (旗标:0关 1开) (玩家名称) 忽略该玩家的谈话讯息,仙境传说的服务器不会代为储存忽略名单,重登后数据便会遗失 -=-=-=-=-=-=-=-= 聊天室功能 =-=-=-=-=-=-=-=- crl - 聊天室列表,列出附近区域所有的聊天室 join (聊天室标码 #) [(密码)] - 加入聊天室 ※注:聊天室标码 # - 由聊天室列表查出的聊天室指定号码 leave - 离开目前的聊天室 cri - 聊天室信息表,列出目前所在聊天室的细部信息,及聊天室内玩家的名单 chat "(标题)" [(人数限制) (公开旗标) (密码)] - 建立聊天室,预设为 20 人的公开聊天室 ※注1:"标题" - 聊天室的标题,必须用引号括起来 ※注2:人数限制 - 聊天室可容纳的最大人数,范围1-20 ※注3:公开旗标 - 1(公开) 0(未公开) chatmod "(标题)" [(人数限制) (公开旗标) (密码)] - 修改目前的聊天室属性,不用关闭再重新建立新的聊天室,功能同建立聊天室 kick (聊天室玩家标码 #) - 踢除并挡掉该名玩家进入聊天室 ※注:聊天室玩家标码 # - 由聊天室信息表查出的玩家指定号码 bestow (聊天室玩家标码 #) - 将聊天室管理者的权力让渡给其它玩家 -=-=-=-=-=-=-= 队伍管理功能 =-=-=-=-=-=-=- party - 显示队伍成员的在线状态/所在地/生命值 party create ("队伍名称") - 组织一支队伍 ※注:("队伍名称") - 队伍的名称必须写在两个""内 party join (旗标:0关 1开) - 接受/拒绝收到的组队请求 party kick (队员标号 #) - 将该队员除名 ※注:队员标号 # - 由队伍列表查出的队员指定号码 party leave - 自行脱队 party request (玩家标号 #) - 请求该玩家加入你的队伍 ※注:(玩家标号 #) - 由玩家列表(pl)查出的玩家指定号码 party share (旗标) - 设定队伍经验值分配制度 ※注:(旗标) - 0(各自取得经验值) 1(均分取得经验值) -=-=-=-=-=-=-=-= 仓库功能 =-=-=-=-=-=-=-=- storage - 仓库列表,跟卡普拉女郎沟通过,付出费用后,可列出你仓库中的物品 storage add (物品栏物件标码 #) [(数量)] - 将物品存放到开启的仓库,没有指定数量的话,则以最大数量计 物品栏对象标码 # - 由物品栏对象列表查出的对象指定号码 storage get (仓库物件标码 #) [(数量)] - 由开启的仓库中取回物品,没有指定数量的话,则以最大数量计 仓库对象标码 # - 由仓库列表查出的对象指定号码 storage close - 关闭仓库 -=-=-=-=-=-=-=-= 交易功能 =-=-=-=-=-=-=-=- dl - 交易列表,列出目前交易的细部信息,如: 你/其它人的物品+数量、金钱 deal 用法 1: 接受交易请求 用法 2: 结束我方交易 用法 3: 两方皆结束时进行交易 deal (玩家标码 #) - 向玩家请求交易 玩家标码 # - 由玩家列表查出的玩家指定号码 deal no 用法 1: 取消交易请求 用法 2: 取消目前交易 deal add (物品栏物件标码 # | "z") [(数量)] - 放入物品栏对象/金钱进行交易,没有指定数量的话,则以最大数量计 物品栏对象标码 # - 由物品栏对象列表查出的对象指定号码 z - 指定要加入的金钱数 对象/物品栏管理功能: -=-=-=-=-=-=-=-= 商店相关 =-=-=-=-=-=-=-=- store - 商店列表,可列出上一个所造访商店内的物品及价格 store desc [(商店对象标码 #)] - 对该物品加入备注描述 商店对象标码 # - 由商店列表查出的对象指定号码 buy (商店物件标码 #) [(数量)] - 从商店购买物品,没有指定数量的话,则以 1 件物品计;必须*近商店才能购买物品 商店对象标码 # - 由商店列表查出的对象指定号码 sell (物品栏物件标码 #) [(数量)] - 将物品转卖给商店,没有指定数量的话,则以最大数量计 物品栏对象标码 # - 由物品栏对象列表查出的对象标码 shop - 查询自己的商店状态 (假如有用KoreC开店的话) -=-=-=-=-=-=-=-= 手推车相关 =-=-=-=-=-=-=-=- cart add (物品栏物件标码 #) [(数量)] - 把商品放进手推车里面,没有指定数量的话,则以最大数量计 物品栏对象标码 # - 由物品栏对象列表查出的对象标码 cart get (手推车物品栏物件标码#) [(数量)] - 从手推车中取出商品,没有指定数量的话,则将所有物品取出计 手推车物品栏物件标码# - 由手推车物品列表查出的物品标码 -=-=-=-=-=-=-=-= NPC相关 =-=-=-=-=-=-=-=- talk (NPC 标码 #) - 与 NPC 交谈 NPC 标码 # - 由 NPC 列表查出的 NPC 指定号码 talk resp - 响应列表,列出 NPC 可能给你的响应 talk cont - 继续与目前的 NPC 交谈(当提示要继续时) talk no - 取消与目前的 NPC 交谈 talk resp (回应标码 #) - 回应 NPC(当提示要回应时) 回应标码 # - 由回应列表查出的响应指定号码 -=-=-=-=-=-=-=-= 跟随相关 =-=-=-=-=-=-=-=- follow (玩家标码 #) - 跟随玩家 ※注:(玩家标号 #) - 由玩家列表(pl)查出的玩家指定号码 follow stop - 停止跟随 -=-=-=-=-=-=-=-= 肉盾相关 =-=-=-=-=-=-=-=- tank (玩家标码 #) - 为玩家做肉盾 ※注:(玩家标号 #) - 由玩家列表(pl)查出的玩家指定号码 tank stop - 停止做肉盾 -=-=-=-=-=-=-=-= 修改设置相关 =-=-=-=-=-=-=-=- a no - 关闭自动攻击 a yes - 开启自动攻击 maplock (旗标:0关 1开) -是否锁定地图 -=-=-=-=-=-=-= 传送之阵相关 =-=-=-=-=-=-=- memo - 记忆传送之阵技能的坐标 pw_open - 开启传送之阵 pw_open2 (旗标) - 开启/关闭一个永久的传送点(传送之阵只能维持开启 20 秒) 施展传送之阵无需任何蓝宝石及消耗任何 SP,只有在移动传送点坐标时才需要 SP 你若要改变传送地点,只消运用 conf 指令: conf partyWarper_slot_current 0 如此,下一次的传送点便会开往 partyWarper_slot_0 所指定的地图 pw_auth (玩家名称) (旗标) - 将传送功能授权给该玩家,可使其经由对话指令执行所有的传送相关功能 pw_setup [(x) (y)] - 将传送点设定在坐标(x, y),传送点可在地图的任何地方开启 若是没有指定坐标,传送点便会开往上次所设定的地点 每次 Bot 登入后,传送点都必须先行设定才能开启 -=-=-=-=-=-=-=-= 系统设定 =-=-=-=-=-=-=-=- auth (玩家名称) (旗标) 经由对话指令授权该名玩家操控 Bot conf (变数) [(数值)] - 设定组态变量值,并回写进 config.txt,若没有指定数值,则会显示该变量的数值设定 变数 - config.txt 档案内的某一变量 timeout (形态) (秒数) 设定 Timeout 秒数,并回写进 timeouts.txt,若没有指定数值,则会显示该形态的数值设定 形态 - Timeout 表内的指定名称(档案在 Control 数据夹) 秒数 - 以秒计数,可能有小数点的值(例如 0.5) dump - 离开 Bot 并将要进行解析的封包数据存成 DUMP.txt reload (部份檔名 | "all") ["except" (部份檔名)] - 重新戴入所有符合部份档名的组态/列表档案,若有指定,排除载入符合列在 except 后面的任何档案 例如: reload tables except monsters - 重新载入所有列表档案,除了 monsters 表(monsters.txt) ※注:一般改设定后不必重开,直接打reload all就会加载新设定了 relog - 与主伺服器重新联机并登 quit - 结束 Bot ,按窗口的[X]有同样效果 ai - 设定开启/关闭AI cl - 清空chat里面的聊天纪录栏
基于OpenKore开发的一款客户端 use strict; use Time::HiRes qw(time); use base qw/Actor::Slave/; use Globals; use Log qw/message warning error debug/; use Utils; use Misc; use Translation; use AI::Slave::Homunculus; use AI::Slave::Mercenary; # homunculus commands/skills can only be used # if the homunculus is within this range use constant MAX_DISTANCE => 17; sub checkSkillOwnership {} sub action { my $slave = shift; my $i = (defined $_[0] ? $_[0] : 0); return $slave->{slave_ai_seq}[$i]; } sub args { my $slave = shift; my $i = (defined $_[0] ? $_[0] : 0); return \%{$slave->{slave_ai_seq_args}[$i]}; } sub dequeue { my $slave = shift; shift @{$slave->{slave_ai_seq}}; shift @{$slave->{slave_ai_seq_args}}; } sub queue { my $slave = shift; unshift @{$slave->{slave_ai_seq}}, shift; my $args = shift; unshift @{$slave->{slave_ai_seq_args}}, ((defined $args) ? $args : {}); } sub clear { my $slave = shift; if (@_) { my $changed; for (my $i = 0; $i < @{$slave->{slave_ai_seq}}; $i++) { if (defined binFind(\@_, $slave->{slave_ai_seq}[$i])) { delete $slave->{slave_ai_seq}[$i]; delete $slave->{slave_ai_seq_args}[$i]; $changed = 1; } } if ($changed) { my (@new_seq, @new_args); for (my $i = 0; $i < @{$slave->{slave_ai_seq}}; $i++) { if (defined $slave->{slave_ai_seq}[$i]) { push @new_seq, $slave->{slave_ai_seq}[$i]; push @new_args, $slave->{slave_ai_seq_args}[$i]; } } @{$slave->{slave_ai_seq}} = @new_seq; @{$slave->{slave_ai_seq_args}} = @new_args; } } else { undef @{$slave->{slave_ai_seq}}; undef @{$slave->{slave_ai_seq_args}}; } } sub suspend { my $slave = shift; my $i = (defined $_[0] ? $_[0] : 0); $slave->{slave_ai_seq_args}[$i]{suspended} = time if $i < @{$slave->{slave_ai_seq_args}}; } sub mapChanged { my $slave = shift; my $i = (defined $_[0] ? $_[0] : 0); $slave->{slave_ai_seq_args}[$i]{mapChanged} = time if $i < @{$slave->{slave_ai_seq_args}}; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值