作者hmml (hmml)
看板mud_sanc
标题Re: [心得] MushClient 挂角色图档
时间Sat Sep 21 01:58:13 2013
改成由 MUSHclient 自己去所设定的目录(这里是角色档存放目录)下寻找
符合命名条件的档名(本篇格式为"角色小写ID-三位数.bmp",如:hmml-001.bmp
),并存成一个表,遍历表的内容以得到可用的档案总数;接着用随机数去选择
档案,再将选中的图档载入挂上。
使用者只要将图档丢到设定的目录下,取个符合格式的档名就可以了!
由於随机乱数并非真正的乱数,使用的种子是系统时间,精度只到整数秒,
故刷新换图的时候,频率不要低於一秒,否则容易得到相同的结果。
shoimg 更新迷你视窗,shoimg0 隐藏迷你视窗。
--
==-==--==-==--==-==--==-==--==-==--==-==--==-==--==-==--==-==--==-==--==-==--
<aliases>
<alias
match="^shoimg(0*)$"
enabled="y"
echo_alias="y"
regexp="y"
send_to="12"
keep_evaluating="y"
sequence="100"
>
<send>
--设定迷你视窗ID到imgchar
imgchar = 'img'..
GetAlphaOption("name"
)
--取得角色名称,并变换小写
Char_Name =
string.lower(GetAlphaOption("player"
))
--取得图档目录下符合条件的档名列表。
bmpall =
utils.readdir (GetInfo(67
)..
Char_Name.."-*.bmp"
)
--图档数量先设为零
bmpall_n = 0
--如果有找到符合条件的档案
if
bmpall ~= nil then
--计算这个表的档名数量,这个表是字典型态,所以不能用table.getn()
for k, v in pairs (
bmpall) do
bmpall_n =
bmpall_n + 1
end --for
end --if
--观测讯息用,减轻 debug 时洗画面的情况。
InfoClear()
Info ("图片数量:"..
bmpall_n)
--制造随机数,改用 MUSHclient 所附的梅森旋转演算法函数,期望效果会较好。
--随机种子。将系统时间数值颠倒後取前七位数。
MtSrand (tostring(os.time()):
reverse():
sub(1, 7
))
--随机得出不大於bmpall_n的三位元长度的数字。
img_choice =
string.format("%%03d
",math.floor (MtRand () *
bmpall_n)+1
)
-- └───────────────────┐
--将路径和档名组合。 ↓
imgpatch = GetInfo(67)..
Char_Name..'-'..bmp_choice..".bmp"
--建立角色图的迷你视窗
WindowCreate (imgchar, --迷你视窗ID
739
, 23
, 204
, 303
, --位置,左,上,宽,高。
6
, --因下个参数的设定,无效。
3
, --以座标值为位置设定,并置於最底。
ColourNameToRGB("black"
)) --视窗底色。
--载入图档,套上 Note 和 ErrorDesc,方便除错。
--显示 执行结果 载入图档
Note (ErrorDesc(WindowLoadImage (imgchar, --迷你视窗名称
"im"
, --物件ID
imgpatch))) --图档目录
-嵌入图片
--显示 执行结果 载入图档
Note (ErrorDesc(WindowImageOp (imgchar, --迷你视窗名称
miniwin.image_fill_rectangle
, --矩形
4
, 4
, 200
, 400
, --位置,左,上,右,下。
ColourNameToRGB("lime"
), --外框线条颜色
miniwin.pen_null
, --外框线条常数:无框
1
, --外框线条粗细
ColourNameToRGB("cyan"
), --底色
"im"
, --图档ID
20
, 20
))) --圆角矩形才有用。
--用来显示或隐藏图片
if tonumber('
%1') == 0 then
WindowShow (
imgchar, false)
else
WindowShow (
imgchar, true)
end --if
</send>
</alias>
</aliases>
--==-==--==-==--==-==--==-==--==-==--==-==--==-==--==-==--==-==--==-==--==-==--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.132.196.45