北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
12
返回列表 发新帖
楼主: afact

请教下一个抓id的触发难题

[复制链接]
发表于 2010-11-27 12:38:05 | 显示全部楼层
如果是mush的话,我这里有个现成的,我自己写的。
触发器:

      enabled="y"
   match="^[>]*\s*看起来(.*)想杀死你!.*$"
   regexp="y"
   send_to="12"
   sequence="999"
  >
  BeKilledBy("%1")
  



      enabled="y"
   keep_evaluating="y"
   match="^[>]*(\S*)\s*=\s*(\w*\s*\w*).*$"
   regexp="y"
   repeat="y"
   send_to="12"
   sequence="999"
  >
  CheckKiller("%1","%2")
  


脚本函数:
function BeKilledBy(name)
        Killername = name;
        DoAfter(0.3,"id here");
end

function CheckKiller(name,id)
        if (name == Killername) then
                temp = split(id,",");
                if (table.getn(temp) > 0) then
                        StartFight(temp[1],0.1);
                end
        end
end

function StartFight(name,tm)

        pfbusy = GetAliasInfo("pfbusy",2)
        if (pfbusy ~= nil) then
                if (string.sub(pfbusy,string.len(pfbusy)) == "1") then
                        pfbusy = string.sub(pfbusy,1,sttring.len(pfbusy) - 2) .. name;
                end
                DoAfterSpecial(tm,"RunBusyPerform(\"busy_timer\",\""..pfbusy.."\")",12);
        end
        pfbusy1 = GetAliasInfo("pfbusy1",2)
        if (pfbusy1 ~= nil) then
                if (string.sub(pfbusy1,string.len(pfbusy1)) == "1") then
                        pfbusy1 = string.sub(pfbusy1,1,string.len(pfbusy1) - 2) .. name;
                end
                DoAfterSpecial(tm+0.5,"RunBusyPerform(\"busy_timer1\",\""..pfbusy1.."\")",12);
        end

        AddTimer("ls_timer",0,0,1,"yun recover\nyun regenerate",1,"")
end

我这里没有叫杀,而是被叫杀的时候启动战斗。 战斗的话,就是设置出busy perform的timer(支持2个),以及每秒一次的吸气。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-11-27 12:40:16 | 显示全部楼层
还有两个方法,

function RunBusyPerform(name,pfbusy)
        AddTimer(name,0,0,1,pfbusy,1,"")
end


function split(szFullString, szSeparator)
local nFindStartIndex = 1
local nSplitIndex = 1
local nSplitArray = {}
while true do
   local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex)
   if not nFindLastIndex then
    nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString))
    break
   end
   nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1)
   nFindStartIndex = nFindLastIndex + string.len(szSeparator)
   nSplitIndex = nSplitIndex + 1
end
return nSplitArray
end
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-25 02:49 AM , Processed in 0.008160 second(s), 12 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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