这个小节主要介绍下雪月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("物品可丢弃")