verfx/lib996.lua
2024-12-23 01:17:14 +08:00

622 lines
23 KiB
Lua
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local SetofPlayer = {
set=setbaseinfo,
params={
level = 6, --角色等级
job = 7, --角色职业 0-战 1-法 2-道)
sex = 8, --角色性别
curhp = 9, --角色当前HP
curmp = 11, --角色当前MP
ac = 15, --角色物防下限
ac2 = 16, --角色物防上限
mac = 17, --角色魔防下限
mac2 = 18, --角色魔防上限
dc = 19, --角色物攻下限
dc2 = 20, --角色物攻上限
mc = 21, --角色魔攻下限
mc2 = 22, --角色魔攻上限
sc = 23, --角色道攻下限
sc2 = 24, --角色道攻上限
lucky = 25, --角色幸运值
hpadd = 26, --角色HP恢复
mpadd = 27, --角色MP恢复
poison_add = 28, --角色中毒恢复
poison_avoid = 29, --毒物躲避
magic_avoid = 30, --角色魔法躲避
accuracy = 31, --角色准确
agile = 32, --角色敏捷
hair = 33, --发型
renew_level = 39, --转生等级(仅人物)
exp_rate = 40, --杀怪经验倍数(仅人物)
exp_time = 41, --杀怪经验时间(仅人物)
drop_rate = 43, --人物杀怪爆率倍数(仅人物)
pkvalue = 46, --PK点
}
}
local GetofPlayer = {
get=getbaseinfo,
params={
isplayer = -1, --是否玩家
isdie = 0, --是否死亡(true:死亡状态)
name = 1, --角色名 (返回值字符型)
id = 2, --角色唯一ID (返回值字符型)
mapid = 3, --角色当前地图ID (返回值字符型)
x = 4, --角色X坐标
y = 5, --角色Y坐标
level = 6, --角色等级
job = 7, --角色职业 0-战 1-法 2-道)
sex = 8, --角色性别
curhp = 9, --角色当前HP
maxhp = 10, --角色当前MAXHP
curmp = 11, --角色当前MP
maxmp = 12, --角色当前MAXMP
curexp = 13, --角色当前Exp
maxexp = 14, --角色当前MaxExp
ac = 15, --角色物防下限
ac2 = 16, --角色物防上限
mac = 17, --角色魔防下限
mac2 = 18, --角色魔防上限
dc = 19, --角色物攻下限
dc2 = 20, --角色物攻上限
mc = 21, --角色魔攻下限
mc2 = 22, --角色魔攻上限
sc = 23, --角色道攻下限
sc2 = 24, --角色道攻上限
lucky = 25, --角色幸运值
hpadd = 26, --角色HP恢复
mpadd = 27, --角色MP恢复
poison_add = 28, --角色中毒恢复
poison_avoid = 29, --毒物躲避
magic_avoid = 30, --角色魔法躲避
accuracy = 31, --角色准确
agile = 32, --角色敏捷
hair = 33, --发型
bag_num = 34, --背包物品数量(仅人物)
team_num = 35, --队伍成员数量(仅人物)
guild = 36, --行会名(仅人物)
isboos = 37, --是否会长(仅人物)
pets_num = 38, --宠物数量
renew_level = 39, --转生等级(仅人物)
exp_rate = 40, --杀怪经验倍数(仅人物)
exp_time = 41, --杀怪经验时间(仅人物)
delay_call_time = 42, --显示延时TIMERECALL还剩多少秒仅人物
drop_rate = 43, --人物杀怪爆率倍数(仅人物)
revive_time = 44, --复活时间
map_title = 45, --地图名MAPTITLE
pkvalue = 46, --PK点
isnewhuman = 47, --是否新人(仅人物)
issaferect = 48, --是否安全区
isstall = 49, --是否摆摊中(仅人物)
istrade = 50, --是否交易中(仅人物)
custom_attr = 51, --自定义扩展属性,需要提供 参数3:属性IDcfg_att_score.xls设置1-91200~249
behavior = 52, --穿人/怪方式 0=恢复/1=穿人/2=穿怪/3=穿人穿怪
login = 53, --登录状态0正常1断线重连仅人物
userid = 54, --主人UserId
idx = 55, --Idx
color = 56, --颜色0~255
fashion = 58, --时装显示状态(仅人物) 0=不显示 1=显示
}
}
local CallofPlayer = {
SendMsg=jhxbbgame.sendmsg,
MKPosion=makeposion,
IncHP=jhxbbgame.IncHP,
DecHP=jhxbbgame.DecHP,
}
local Player = {}
PlayerCache = {Cache = {},freecnt=0}
local PlayerCache = PlayerCache
function Player:reset(keys)
local kvtab = {}
for key1, value in pairs(self._kv) do
local b = false
for i = 1, #keys, 1 do
local key = keys[i]
if key1 == key then
b = true
break
end
--rawset(self,key,nil)
end
if not b then
kvtab[key1] = value
end
end
self._kv = kvtab
end
function Player:resetpos()
self:reset({"x","y","map"})
end
function PlayerCache.new(actor)
local self = setmetatable({_kv={},uid=getbaseinfo(actor,2),_aid = actor}, PlayerCache)
for key, value in pairs(Player) do
--self[key]=value
rawset(self,key,value)
end
return self
end
function PlayerCache.get(actor)
return PlayerCache:Get(actor)
end
function PlayerCache:Add(actor)
local cp = self.new(actor)
for key, value in pairs(self.Cache) do
--release_print("ipairs:",key,value.a)
if value._uid == cp._uid and value.a ~= actor then
--release_print("remove:",key,value.a)
self.Cache[key] = nil
self.freecnt = self.freecnt + 1
if self.freecnt > 100 then
self.freecnt = 0
self.Cache = {}
end
break
end
end
--release_print("Add:",actor)
self.Cache[actor] = cp
return cp
end
function PlayerCache:Get(actor)
return self.Cache[actor] or self:Add(actor)
end
local mt = {}
for key, value in pairs(CallofPlayer) do
mt[key]=function(player,...)
local actor = player._aid
return value(actor,...)
end
end
PlayerCache.__index = function(player, key)
local function name(...)
local actor = player._aid
local idx = GetofPlayer.params[key]
local value = nil
if idx then
value = GetofPlayer.get(actor,idx)
else
value = mt[key]
end
--rawset(player,key,ret)
player._kv[key] = value
return value
end
return player._kv[key] or name()
end
PlayerCache.__newindex = function(player, key, value)
local actor = player._aid
print("Setting a new element via __newindex: ",actor,player.uid, key, value)
local idx = SetofPlayer.params[key]
if idx then
SetofPlayer.set(actor,idx,value)
player._kv[key] = value
--rawset(player,key,value)
else
idx = GetofPlayer.params[key]
if idx then
print("ReadOnly.: ",actor,player.uid, key, value)
else
print("undefined.: ",actor,player.uid, key, value)
end
end
end
setmetatable(PlayerCache, {__index=function (...)
print("getMetaTable __index: ",...)
end})
ConstCfg = {
--全局信息
global = {
openday = 1, --开服天数
opendate = 2, --开服时间
mergecount = 3, --合服次数
mergedate = 4, --合服时间
serverip = 5, --服务器IP
actornum = 6, --玩家数量
maxbagnum = 7, --背包最大数量
},
--设置人物怪物base字段
gbase = {
isplayer = -1, --是否玩家
isdie = 0, --是否死亡(true:死亡状态)
name = 1, --角色名 (返回值字符型)
id = 2, --角色唯一ID (返回值字符型)
mapid = 3, --角色当前地图ID (返回值字符型)
x = 4, --角色X坐标
y = 5, --角色Y坐标
level = 6, --角色等级
job = 7, --角色职业 0-战 1-法 2-道)
sex = 8, --角色性别
curhp = 9, --角色当前HP
maxhp = 10, --角色当前MAXHP
curmp = 11, --角色当前MP
maxmp = 12, --角色当前MAXMP
curexp = 13, --角色当前Exp
maxexp = 14, --角色当前MaxExp
ac = 15, --角色物防下限
ac2 = 16, --角色物防上限
mac = 17, --角色魔防下限
mac2 = 18, --角色魔防上限
dc = 19, --角色物攻下限
dc2 = 20, --角色物攻上限
mc = 21, --角色魔攻下限
mc2 = 22, --角色魔攻上限
sc = 23, --角色道攻下限
sc2 = 24, --角色道攻上限
lucky = 25, --角色幸运值
hpadd = 26, --角色HP恢复
mpadd = 27, --角色MP恢复
poison_add = 28, --角色中毒恢复
poison_avoid = 29, --毒物躲避
magic_avoid = 30, --角色魔法躲避
accuracy = 31, --角色准确
agile = 32, --角色敏捷
hair = 33, --发型
bag_num = 34, --背包物品数量(仅人物)
team_num = 35, --队伍成员数量(仅人物)
guild = 36, --行会名(仅人物)
isboos = 37, --是否会长(仅人物)
pets_num = 38, --宠物数量
renew_level = 39, --转生等级(仅人物)
exp_rate = 40, --杀怪经验倍数(仅人物)
exp_time = 41, --杀怪经验时间(仅人物)
delay_call_time = 42, --显示延时TIMERECALL还剩多少秒仅人物
drop_rate = 43, --人物杀怪爆率倍数(仅人物)
revive_time = 44, --复活时间
map_title = 45, --地图名MAPTITLE
pkvalue = 46, --PK点
isnewhuman = 47, --是否新人(仅人物)
issaferect = 48, --是否安全区
isstall = 49, --是否摆摊中(仅人物)
istrade = 50, --是否交易中(仅人物)
custom_attr = 51, --自定义扩展属性,需要提供 参数3:属性IDcfg_att_score.xls设置1-91200~249
behavior = 52, --穿人/怪方式 0=恢复/1=穿人/2=穿怪/3=穿人穿怪
login = 53, --登录状态0正常1断线重连仅人物
userid = 54, --主人UserId
idx = 55, --Idx
color = 56, --颜色0~255
fashion = 58, --时装显示状态(仅人物) 0=不显示 1=显示
},
--获取人物怪物base字段
sbase = {
level = 6, --设置等级
job = 7, --职业
sex = 8, --性别
curhp = 9, --当前HP
curmp = 11, --当前MP
ac = 15, --物防下限
ac2 = 16, --物防上限
mac = 17, --魔防下限
mac2 = 18, --魔防上限
dc = 19, --物攻下限
dc2 = 20, --物攻上限
mc = 21, --魔攻下限
mc2 = 22, --魔攻上限
sc = 23, --道攻下限
sc2 = 24, --道攻上限
lucky = 25, --幸运值
hpadd = 26, --HP恢复
mpadd = 27, --MP恢复
poison_add = 28, --中毒恢复
poison_avoid = 29, --毒物躲避
magic_avoid = 30, --魔法躲避
accuracy = 31, --准确
agile = 32, --敏捷
hair = 33, --发型
renew_level = 39, --转生等级(仅人物)
exp_rate = 40, --杀怪经验倍数(仅人物)
exp_time = 41, --杀怪经验时间(仅人物)
drop_rate = 43, --人物杀怪爆率倍数(仅人物)
pkvalue = 46, --人物PK点仅人物
behavior = 50, --行为方式只针对宠物包含多个行为时求和1禁止攻击玩家2不可被攻击4优先攻击 玩家攻击对象8优先攻击 玩家受击对象
mutiny = 51, --叛变(仅怪物)
through = 52, --穿人/怪方式 0=恢复/1=穿人/2=穿怪/3=穿人穿怪
color = 56, --颜色0~255
fashion = 57 --时装显示状态(仅人物) 0=不显示 1=显示
},
--永久属性
forever_attr = {
dc = 1, --攻击下限0~65535
dc2 = 2, --攻击上限0~65535
mc = 3, --魔法下限0~65535
mc2 = 4, --魔法上限0~65535
sc = 5, --道术下限0~65535
sc2 = 6, --道术上限0~65535
ac = 7, --防御下限0~65535
ac2 = 8, --防御上限0~65535
mac = 9, --魔防下限0~65535
mac2 = 10, --魔防上限0~65535
maxhp = 11, --生命值支持21亿
maxmp = 12, --魔法值支持21亿
accuracy = 13, --准确支持21亿
agile = 14, --躲避就是准确支持21亿
},
--自定义属性
custom_attr = {
attr200 = 200, --减少受到来自怪物的固定伤害
},
--人物模式
--第三个参数无敌,隐身,禁止攻击时没有使用.
--如果是禁锢时,第三个参数表示禁锢范围
pmode = {
god = 1, --无敌
unsee = 2, --隐身
hp = 3, --HP
mp = 4, --MP
dc2 = 5, --攻击力
mc2 = 6, --魔法力
sc2 = 7, --道术力
ias = 8, --攻击速度
ban_act = 9, --禁止攻击
lock = 10, --锁定
trap = 11, -- 禁锢(释放一个类似困魔咒的光圈,敌对人物或怪物只能在这个圈子里移动,无法走出圈子外面,所有传送失效,不能小退)
frost = 12, -- 冰冻
stick = 13, -- 蛛网
nopalsy = 14, -- 防麻痹
mptrap = 15, -- 防禁锢
nofrost = 16, -- 防冰冻
nostick = 17, -- 防蛛网
palsy = 18, -- 麻痹
protect = 19, -- 护身
inblood = 20, -- 吸血
inblue = 21, -- 吸蓝
lucent = 22, -- 隐身(类似隐身戒指)
realive = 23, -- 复活
norealive = 24, -- 破复活
},
--攻击模式
amode = {
qt = 0, --全体攻击
hp = 1, --和平攻击
fq = 2, --夫妻攻击
st = 3, --师徒攻击
bz = 4, --编组攻击
hh = 5, --行会攻击
hm = 6, --红名攻击
gg = 7, --国家攻击
},
--怪物表
stdmoninfo = {
name = 1, --怪物名 (返回值字符型)
color = 2, --怪物名颜色
},
--货币
money = {
gold = 1, --元宝
yb = 2, --玉币
bdgold = 3, --金条
bdyb = 4, --绑定玉币
lf = 7, --灵符
cent = 11, --充值点 1rmb = 1充值点
},
--物品信息
iteminfo = {
id = 1, --唯一ID
idx = 2, --物品ID
curdura = 3, --剩余持久
maxdura = 4, --最大持久
overlap = 5, --叠加数量
bind = 6, --绑定状态值
},
--物品基础信息
stditeminfo = {
idx = 0, --0:idx
name = 1, --1:名称
stdmode = 2, --2:StdMode
shape = 3, --3:Shape
weight = 4, --4:重量
anicount = 5, --5:AniCount
maxdura = 6, --6:最大持久
overlap = 7, --7:叠加数量
price = 8, --8:价格price
need = 9, --9:使用条件
needlevel = 10, --10:使用等级
custom25 = 11, --11:道具表自定义常量(25列)
custom26 = 12, --12:道具表自定义常量26列
},
--技能
skill = {
level = 1, --技能等级
superlevel = 2, --技能强化等级
proficiency = 3, --熟练度
},
--公告
notice = {
own = 1, --发送给自己
all = 2, --发送给全服
guild = 3, --发送给行会
map = 4, --发送给地图
team = 5, --发送给组队
},
--隐藏穿戴物品
unseen_equip = {
attr = { --隐藏属性
rule = 63, --隐藏装备绑定规则
idx = 50000, --隐藏装备Idx
where = 100, --穿戴位置
},
},
--获取沙巴克信息返回值
castle = {
info = { --castleinfo
name = 1, --沙城名称
guildname = 2, --沙城行会名称
guildmgr = 3, --沙城城主
day = 4, --占领天数返回number
state = 5, --当前是否在攻沙状态返回Bool
guilddeputy = 6, --沙城多个副城主 (返回类型table)
},
identity = { --castleidentity
no = 0, --非沙巴克成员
yes = 1, --沙巴克成员
boos = 2, --沙巴克老大
}
},
--stdmode 与 where 的映射关系
stdmodewheremap = {
[10] = {0}, --衣服(男)
[11] = {0}, --衣服(女)
[5] = {1}, --武器(男)
[6] = {1}, --武器(女)
[30] = {2}, --勋章
[19] = {3}, --项链
[20] = {3}, --项链
[21] = {3}, --项链
[15] = {4}, --头盔
[24] = {5, 6}, --手镯
[26] = {5, 6}, --手镯
[22] = {7, 8}, --戒指
[23] = {7, 8}, --戒指
[25] = {9}, --符、毒药
[54] = {10}, --腰带
[64] = {10}, --腰带
[52] = {11}, --靴子
[62] = {11}, --靴子
[53] = {12}, --宝石、魔血石
[63] = {12}, --宝石、魔血石
[7] = {12}, --宝石、魔血石
[16] = {13}, --斗笠
[65] = {14}, --军鼓
[28] = {15}, --马牌
[48] = {16}, --盾牌
[50] = {55}, --面巾
[66] = {17}, --时装衣服(男)
[67] = {17}, --时装衣服(男)
[68] = {18}, --时装衣服(女)
[69] = {18}, --时装衣服(女)
[71] = {19}, --时装斗笠
[75] = {20}, --时装项链
[76] = {20}, --时装项链
[77] = {20}, --时装项链
[78] = {21}, --时装头盔
[79] = {22, 23}, --时装手镯
[80] = {22, 23}, --时装手镯
[81] = {24, 25}, --时装戒指
[82] = {24, 25}, --时装戒指
[83] = {26}, --时装勋章
[84] = {27}, --时装腰带
[85] = {27}, --时装腰带
[86] = {28}, --时装靴子
[87] = {28}, --时装靴子
[88] = {29}, --时装宝石
[89] = {29}, --时装宝石
[100] = {30}, --首饰盒位置1
[101] = {31}, --首饰盒位置2
[102] = {32}, --首饰盒位置3
[103] = {33}, --首饰盒位置4
[104] = {34}, --首饰盒位置5
[105] = {35}, --首饰盒位置6
[106] = {36}, --首饰盒位置7
[107] = {37}, --首饰盒位置8
[108] = {38}, --首饰盒位置9
[109] = {39}, --首饰盒位置10
[110] = {40}, --首饰盒位置11
[111] = {41}, --首饰盒位置12
[90] = {42}, --时装马牌
[91] = {43}, --时装符印
[92] = {44}, --时装军鼓
[93] = {45}, --时装盾牌
[94] = {46}, --时装面巾
--自定义装备位
[219] = {71}, --无双装备
[220] = {72}, --无双装备
[221] = {73}, --无双装备
[222] = {74}, --无双装备
[223] = {75}, --无双装备
[224] = {76}, --无双装备
[225] = {77}, --无双装备
[226] = {78}, --无双装备
[10009] = {79}, --无双装备
[10010] = {80}, --无双装备
[10011] = {81}, --无双装备
[10021] = {82}, --官职装备
[10022] = {83}, --官职装备
[10023] = {84}, --官职装备
[10024] = {85}, --官职装备
[10025] = {86}, --官职装备
[10026] = {87}, --官职装备
[10027] = {88}, --官职装备
[10028] = {89}, --官职装备
[10031] = {90}, --侍女装备
[10032] = {91}, --侍女装备
[10033] = {92}, --侍女装备
[10034] = {93}, --侍女装备
[10035] = {94}, --侍女装备
},
activitystate = {
closing = 0, --关闭中
opening = 1, --进行中
ended = 2, --已结束
},
flag = {
no = 0,
yes = 1,
},
first_login_addskill = {
--初次登陆给予的技能id
25, --半月弯刀
7, --攻杀剑术
12, --刺杀剑术
27, --野蛮冲撞
26, --烈火剑法
25, --半月弯刀
},
binding = 354, --绑定物品规则
daysec = 86400, --一天的秒数
attrtime = 123456789, --附加属性时间
bagcellnum = 126, --固定背包有120个格子
warehousecellnum = 216, --仓库开启格子数量
-- pickuptime = 1000, --物品掉落只有自己可捡取时间
DEBUG = false, --调试模式
}
return ConstCfg