这个小节主要介绍下雪月Lua框架xLua\module\Item文件夹内与单位有关的方法。
xLua\module\Item文件夹内包含物品相关的模块和方法。
1. 基础物品类 (cItem)
- 文件路径:
xLua\module\Item\init.lua - 描述: 定义了物品的基本属性和方法。
方法列表:
item:new(params):- 描述: 创建一个新的物品对象。
参数:
params(table): 包含创建物品所需参数的表,如id,x,y。id(string): 物品ID,支持格式如@药水,*攻击,afac。x(number, 可选): 物品创建位置的X坐标,默认为0。y(number, 可选): 物品创建位置的Y坐标,默认为0。
- 返回值: 返回一个物品对象。
示例:
local potion = item:new({ id = "azhr", x = 500, y = 500 })
item:bind_handle(h):- 描述: 绑定物品的句柄。
参数:
h(handle): 物品句柄。
- 内部使用,无需手动调用。
item:generate(params):- 描述: 生成物品对象。
参数:
params(table): 包含生成物品所需参数的表。
- 内部使用,无需手动调用。
item:init():- 描述: 初始化物品对象。
- 内部使用,无需手动调用。
item:h2o(h):- 描述: 将物品句柄转换为物品对象。
参数:
h(handle): 物品句柄。
- 返回值: 返回一个物品对象。
示例:
local itemHandle = CreateItem('afac', 500, 500) local potion = item:h2o(itemHandle)
item:isVisible():- 描述: 检查物品是否可见。
- 返回值: 返回布尔值,
true表示可见,false表示不可见。 示例:
if potion:isVisible() then print("物品可见") end
item:setVisible(v):- 描述: 设置物品的可见性。
参数:
v(bool): 是否可见。
- 返回值: 返回设置的可见性。
示例:
potion:setVisible(false)
item:setXY(x, y):- 描述: 设置物品的坐标。
参数:
x(number, 可选): X坐标。y(number, 可选): Y坐标。
示例:
potion:setXY(600, 600)
item:getX():- 描述: 获取物品的X坐标。
- 返回值: 返回X坐标。
示例:
local x = potion:getX() print("物品X坐标:", x)
item:getY():- 描述: 获取物品的Y坐标。
- 返回值: 返回Y坐标。
示例:
local y = potion:getY() print("物品Y坐标:", y)
item:setHP(hp):- 描述: 设置物品的生命值。
参数:
hp(real): 生命值。
示例:
potion:setHP(100)
item:getHP():- 描述: 获取物品的生命值。
- 返回值: 返回生命值。
示例:
local hp = potion:getHP() print("物品生命值:", hp)
item:setCharges(num):- 描述: 设置物品的使用次数。
参数:
num(int): 使用次数。
示例:
potion:setCharges(3)
item:getCharges():- 描述: 获取物品的使用次数。
- 返回值: 返回使用次数。
示例:
local charges = potion:getCharges() print("物品使用次数:", charges)
item:setInvul(flag):- 描述: 设置物品是否无敌。
参数:
flag(bool): 是否无敌。
示例:
potion:setInvul(true)
item:getInvul():- 描述: 获取物品是否无敌。
- 返回值: 返回布尔值,
true表示无敌,false表示不无敌。 示例:
if potion:getInvul() then print("物品无敌") end
item:setPawnable(flag):- 描述: 设置物品是否可抵押。
参数:
flag(bool): 是否可抵押。
示例:
potion:setPawnable(true)
item:getPawnable():- 描述: 获取物品是否可抵押。
- 返回值: 返回布尔值,
true表示可抵押,false表示不可抵押。 示例:
if potion:getPawnable() then print("物品可抵押") end
item:setDroppable(flag):- 描述: 设置物品是否可丢弃。
参数:
flag(bool): 是否可丢弃。
示例:
potion:setDroppable(true)
item:getDroppable():- 描述: 获取物品是否可丢弃。
- 返回值: 返回布尔值,
true表示可丢弃,false表示不可丢弃。 示例:
if potion:getDroppable() then print("物品可丢弃") end
item:del():- 描述: 删除物品并销毁相关数据。
示例:
potion:del()
2. 物品事件 (event)
- 文件路径:
xLua\module\Item\Event\init.lua - 描述: 提供了注册和处理物品事件的功能。
方法列表:
item:event(event_name, func):- 描述: 注册特定物品的事件。
参数:
event_name(string): 事件名称,如 "物品-销毁数据"。func(function): 回调函数,接收两个参数:event和params。
- 返回值: 返回事件对象或
nil(如果事件不存在)。 示例:
potion:event("物品-销毁数据", function(event, params) print("物品被销毁") end)
3. 物品扩展 (extends)
- 文件路径:
xLua\module\Item\extends\*.lua - 描述: 提供了对物品的扩展功能。
扩展模块:
powerup.lua:- 描述: 提供了对增益物品的扩展功能。
方法:
item:applyPowerup(player): 将增益物品应用到玩家。
示例:
local powerup = item:new({ id = "*增益物品", x = 500, y = 500 }) powerup:applyPowerup(player1)
logic.lua:- 描述: 提供了物品行为逻辑的扩展。
方法:
item:setLogic(logic): 设置物品的行为逻辑。
示例:
potion:setLogic(function() print("执行物品的行为逻辑") end)
实操练习
以下是一个完整的示例,展示如何创建一个物品并使用上述方法来设置和获取物品的属性。
-- 引入必要的模块
require 'xLua.module.Item'
require 'xLua.module.Player'
-- 创建一个玩家对象
local player1 = player:new(0)
-- 创建一个物品对象
local potion = item:new({
id = "asbl",
x = 500,
y = 500
})
-- 设置物品的可见性
potion:setVisible(true)
-- 设置物品的坐标
potion:setXY(600, 600)
-- 获取物品的X坐标
local x = potion:getX()
print("物品X坐标:", x)
-- 获取物品的Y坐标
local y = potion:getY()
print("物品Y坐标:", y)
-- 设置物品的生命值
potion:setHP(100)
-- 获取物品的生命值
local hp = potion:getHP()
print("物品生命值:", hp)
-- 设置物品的使用次数
potion:setCharges(3)
-- 获取物品的使用次数
local charges = potion:getCharges()
print("物品使用次数:", charges)
-- 设置物品是否无敌
potion:setInvul(true)
-- 获取物品是否无敌
if potion:getInvul() then
print("物品无敌")
end
-- 设置物品是否可抵押
potion:setPawnable(true)
-- 获取物品是否可抵押
if potion:getPawnable() then
print("物品可抵押")
end
-- 设置物品是否可丢弃
potion:setDroppable(true)
-- 获取物品是否可丢弃
if potion:getDroppable() then
print("物品可丢弃")