|
发表于 2010-2-16 11:32:04
|
显示全部楼层
当然可以了,如果变量不是用来放在触发语句中都尽量放在脚本中。
在主脚本中添加
modpath=string.match(GetInfo(35),"^.*\\").."mods\\"
mappath=string.match(GetInfo(35),"^.*\\").."maps\\"
package.path = string.format("%s?.lua;%s?.lua",modpath,mappath)
这样就可以直接引用主脚本所在目录下的mods和maps目录下的脚本文件
在每个脚本文件起始最好加上下面一句以免脚本内变量污染全局。
module (..., package.seeall)
在后在主脚本中添加
require "xxxx"
就可以加载脚本了
比如下面一个status.lua
--invcap
inv_count=0
hp={
jingxue=0,
max_jingxue=0,
jingxue_per=0,
jingli=0,
max_jingli=0,
jingli_limit=0,
qixue=0,
max_qixue=0,
qixue_per=0,
neili=0,
max_neili=0,
jiali=0,
shen=0,
neili_limit=0,
food=0,
pot=0,
max_pot=0,
water=0,
exps=0,
exps_per=0
}
score={
id="",
name="",
gender=0,
party="",
master="",
masterid="",
mastercity="",
masterroomid=0,
deposit=0,--gold
vip=0,
attack_des=0,
dodge_des=0,
parry_des=0,
str=0,
con=0,
dex=0,
int=0
}
inv={
mudao=0,
fire=0,
weight=0,
things=0,
chantuiyao=0,
huoxuedan=0,
chuanbeiwan=0,
gold=0,
silver=0,
coin=0,
sld_shengzi=0,
wearlist={}
}
function initinv()
inv_count=0
inv.chantuiyao=0
inv.huoxuedan=0
inv.chuanbeiwan=0
inv.gold=0
inv.silver=0
inv.coin=0
inv.sld_shengzi=0
inv.thinglist={}
inv.wearlist={}
EnableGroup("cap_inv")
end
--·气血· 2610 / 4792 (100%)
function judgehp()
if hp.qixue_per<80 and inv.chantuiyao>0 then Execute("fu yao;yun qi") end
if hp.jingxue_per<80 and inv.huoxuedan>0 then Execute("fu dan;yun jing") end
if hp.neili<1000 and inv.chuanbeiwan>0 then Execute("fu chuanbei wan") end
if hp.qixue
if hp.jingli
if hp.jingxue
end
这样你可以在status脚本外任何地方通过
status.hp.xxx来引用(status内部只需要hp.xxx)
但是如果在声明hp的时候前面加上local则hp表仅仅在status内部可见,不是全局变量,,function也是的。
只要变量不是在一个代码段(比如function end..repeat end 等等)中声明的将一直保存其值,知道你重新载入脚本。
[ 本帖最后由 sauron 于 2010-2-16 11:35 AM 编辑 ] |
|