找回密码
 注册
搜索
查看: 13638|回复: 253

真正的核心大招:教你如何加入40K俱乐部。

[复制链接]
门派:神龙教
发表于 2018-11-23 00:29:33 | 显示全部楼层 |阅读模式
<!-- Produced by MUSHclient v 4.84 - www.mushclient.com -->


11/22/18 22:45:12【cxi】任务奖励统计:共运行【2小时16分30秒】,获得经验【108050】点,平均每小时【47494】点!



其实呢,我早就突破45K的界限了,只不过我想挑战一下大神的定制版,证明一下有的东西并不是只能仰望遥不可及的。
我纠结了很久,有的东西要不要贴出来,倒不是说自私,只是觉得牵扯太多的地方我可能会被烦死,是自找麻烦,但是想想独乐乐不如众乐乐,还是放出来大家一起琢磨比较有乐趣吧。
以下是我的几个最核心的东西:

评分

2

查看全部评分

门派:桃花岛
发表于 2018-12-10 18:41:31 | 显示全部楼层
不能 让着贴 沉 了

先定一下                  
门派:神龙教
 楼主| 发表于 2018-11-23 00:31:39 | 显示全部楼层
在这个mush里,最核心的东西,其实就是locate,这个关系到你的流程是不是正常运行,但是公版里的locate是内嵌式的,你无法知道它到底是不是正确的取得了地点信息,所以只能wait,导致了效率的严重受损,我特地给locate做了一个出口,让它不再是一个封闭的func,楼下正文。
门派:神龙教
 楼主| 发表于 2018-11-23 00:33:55 | 显示全部楼层
locate=function()
        locatee()
        create_timer_s('loclWait',1,'locatecheck')
end
locatecheck=function()
    locatee()
end

local_exit=function(n,l,w)
        EnableTimer('loclWait',false)
        print('第五')
    local cnt
        localget=1
    exit.locl=exit_set(w[3])
    local l_set=exit.locl
    if roomNodir[locl.where] then
       l_set=del_element(l_set,roomNodir[locl.where])
    end
    cnt=table.getn(l_set)
    if cnt==0 or cnt==nil then
       cnt=1
    end
    cnt=math.random(1,cnt)
    locl.dir=l_set[cnt]
    if locl.dir==nil then
       locl.dir='east'
    end
    for _,p in pairs(exit.locl) do
       locl.exit[p]=true
    end
        if locate_finish~=0 then
            return _G[locate_finish]()
        end
end

注:这里其实结合了我第一课里说的ticktime,还给了locate一个出口,就是:
        if locate_finish~=0 then
            return _G[locate_finish]()
        end
门派:明教
发表于 2018-11-23 00:34:42 | 显示全部楼层
搬来小板凳,坐等听课!大神快讲!
门派:少林派
发表于 2018-11-23 00:35:12 | 显示全部楼层
大哥你终于发力了            
门派:明教
发表于 2018-11-23 00:35:29 | 显示全部楼层
前排买瓜子了啊!后边的来晚的别插队,都老实坐下,听大神讲课!!
门派:神龙教
 楼主| 发表于 2018-11-23 00:39:01 | 显示全部楼层
至于我加的这个东西有什么用,我就用渡江来举例子好了,下面是我渡江的几个func:
duCjiang=function()
        flag.dujiang=1
        locate_finish='duCjiang_check'
        return Locate()
end
duCjiang_check=function()
        EnableTimer('checkcj',false)
        locate_finish=0
        djdj=1
    if string.find(locl.room,'江南官道') then
       exe('halt;n')
           check_step_num1=check_step_num1+2
       return duCjiang_start()
    else
       return duCjiang_start()
    end
end
门派:神龙教
 楼主| 发表于 2018-11-23 00:41:24 | 显示全部楼层
是不是觉得很奇怪?我返回的func居然是locate,而不是duCjiang_check。
这就是那个变量locate_finish的作用了,它可以控制在locate结束后,做出一个跳转动作来。
这样做有什么好处呢?就是配合上面的ticktime,我可以每一次都准确的取得地点信息,而且不用等待时间,locate成了流程里的一环,而不是嵌入式的。
门派:少林派
发表于 2018-11-23 00:47:39 | 显示全部楼层
cxi@tj 发表于 2018-11-23 00:41
是不是觉得很奇怪?我返回的func居然是locate,而不是duCjiang_check。
这就是那个变量locate_finish的作 ...

太高深了  慢慢理解                    
门派:神龙教
 楼主| 发表于 2018-11-23 00:48:46 | 显示全部楼层
windy@tj 发表于 2018-11-23 00:47
太高深了  慢慢理解

简单说,就是,你们在locate后,都有一个checkwait(xxxx),而我没有这样的等待,取得地点信息后直接就做下一个动作了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|书剑永恒MUD ( 闽ICP备14012032号|闽公网安备 35050202000162号 )

GMT+8, 2025-6-7 18:21 , Processed in 0.034583 second(s), 29 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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