duno 发表于 2009-5-3 02:52:46

[模块]人物信息

初始化模块,初始化当前人物信息,require 后调用 Init()即可完成全部初始化工作
初始化信息为 char table
结构:
char.id   人物id
char.name  人物名称
char.title 包括门派,头衔,昵称
char.skill 以技能id为key的列表,表中每一元素为{name,level,exp}结构
char.jifa  以激发基本技能id为key的列表,元素为对应于key的特殊功夫id
Init()结束后会删除所用临时Trigger,不使机器人逐渐冗余或产生副作用
使用,如
a) if (char.skill["dodge"].level > 100) then *StopJump* end
b) if char.skill].level > 100 then *StopPractice* end
c) Trigger"你的(*)进步了"
call
 for k, v in pairs(char.skill) do
   if v.name == %1 then
     v.level = v.level + 1
     break
   end
 end

[ 本帖最后由 duno 于 2009-5-5 04:06 AM 编辑 ]

duno 发表于 2009-5-3 02:55:11

初始化过程log举例

sk
jifa
sc
init
你目前所学过的技能:(共四项技能)
┌      一项知识    ──────────────────────┐
│读书写字 (literate)                      - 新学乍用   1/   0│
└────────────────────────────────┘
┌    二项基本功夫    ──────────────────────┐
│基本内功 (force)                         - 不堪一击   2/   0│
│基本招架 (parry)                         - 不堪一击   6/   0│
└────────────────────────────────┘
┌    一项特殊功夫    ──────────────────────┐
│□马屁神功 (flatter)                     - 不堪一击   1/   1│
└────────────────────────────────┘
> 以下是你目前使用中的特殊技能。
轻功 (dodge)                : 无                  有效等级:8
内功 (force)                : 无                  有效等级:1
招架 (parry)                : 马屁神功            有效等级:4
> ≡━◎个人档案◎━━━━━━━━━━━━━━━━━━━━━━━━≡
【青年男子】普通百姓「拾荒者」娃哈哈(Testgogogo)
say init name 娃哈哈 testgogogo
say title = 普通百姓「拾荒者」
say list char info
say clear init
你是一位二十岁的未婚男性人类,戊子年十二月八日戌时四刻生。
膂力:[ 19]悟性:[ 21]根骨:[ 18]身法:[ 22]
福缘:[ 19]容貌:[ 11]灵性:[ 30]
<精>■■■■■■■■■■■■■■■■■■■■■■■■■
<气>■■■■■■■■■■■■■■■■■■■■■■■■■
攻击 不堪一击 (+0)   躲闪 不堪一击   招架 不堪一击 (+1)
食物:□□□□□□□□□□□□□□□□□□□□□□□□□
饮水:□□□□□□□□□□□□□□□□□□□□□□□□□
你曾经结束过零个生命,其中有零个是其他玩家,零个是宠物。
你共经历过六次死亡的痛苦,其中有一次是命丧其他玩家之手。
你上一次于己丑年四月二十八日亥时四刻在花园别墅区死亡,死因为:被白骆驼(camel)杀死。
杀    气:正常
银行存款:二十七两白银八十三文铜板
道    德:0
潜    能:100
实战经验:120
等    级:零
师门忠诚:0
江湖声望:0
≡━━━━━━━━━━━━━━━━━━━━━━◎北大侠客行◎━━≡
> 你说道:「init name 娃哈哈 testgogogo」
> 你说道:「title = 普通百姓「拾荒者」」
> 你说道:「list char info」

*** char info ***
char.id = testgogogo
char.name = 娃哈哈
char.title = 普通百姓「拾荒者」
*** list char skills ***
char.skill -> name=读书写字 level=1 exp=0
char.skill -> name=基本内功 level=2 exp=0
char.skill -> name=马屁神功 level=1 exp=1
char.skill -> name=基本招架 level=6 exp=0
*** list char jifa ***
char.jifa = flatter


[ 本帖最后由 duno 于 2009-5-3 11:20 PM 编辑 ]

ddid 发表于 2009-5-3 04:41:21

不明白,有什么具体的功用?

chatter 发表于 2009-5-3 08:08:12

练技能的时候有用,不过俺不会用

duno 发表于 2009-5-3 16:50:36

只在一定程度上提高自动化比率,进入游戏后,不需要预先设定任务名称,id,比如慕容追叛徒需要用到名称,引入此模块可以不用再手动设定 char_name

duno 发表于 2009-5-3 16:54:39

领悟时,自动遍历skill,寻找 可领悟 或 可练习 的skill
下为目前使用的领悟机器人选择技能函数,task为领悟任务列表,每一元素有lingwu,lianxi两个域

function DoLingWu ()
        local lingwu = nil
        local lianxi = nil
        for i = 1, #task do
                local v = task
                if not lingwu and v.lingwu ~= "dodge" and skill.level < skill.level + 1 and skill.level < limit then
                        lingwu = v.lingwu
                end
                if not lianxi and skill.level < skill.level and skill.level < limit then
                        lianxi = v.lingwu
                end
        end
        if lingwu and (not task_type or task_type == "lingwu") then
                for i = 1, 3 do
                        Send ("yun regenerate")
                        Send ("lingwu " .. lingwu .. " 50")
                end
        elseif lianxi and (not task_type or task_type == "lianxi") then
                Send ("yun recover")
                Send ("lian " .. lianxi .. " 50")
        else
                Send ("say lingwu end")
                EnableTimer ("ticker_main", false)
        end
end

ddid 发表于 2009-5-3 17:11:18

太高深了yct30

duno 发表于 2009-5-3 21:05:54

就是领悟的时候,每次领悟前遍历char.skill,选择当前可以领悟的技能
判断条件为,领悟技能 小于 对应激发技能+1 (由char.jifa确定激发技能)
大致就是这个意思啦
上面的task是一个设定的任务列表,比如sword,blade,claw,之后就直从里面寻找需要领悟的技能

看别人的代码确实是很痛苦的,即使自己看自己几年前的写的东西也会痛苦,suffering 囧

[ 本帖最后由 duno 于 2009-5-3 09:08 PM 编辑 ]

maper 发表于 2009-8-18 10:29:31

也是个好东西!ttk_00

littlexi 发表于 2009-8-18 10:47:15

hz9 完全看不懂啊,papaya
页: [1] 2
查看完整版本: [模块]人物信息