### 怪物AI脚本
#### 普通攻击型怪物
这类脚本适用于基础的怪物,让它们对靠近的玩家进行攻击。
```lua
-- 怪物攻击玩家函数
function MonsterAttack(player)
if player and player:IsAlive() then
local damage = math.random(10, 20) -- 随机造成10 - 20点伤害
player:TakeDamage(damage)
print("怪物攻击了玩家,造成 ".. damage .. " 点伤害。")
end
end
-- 主循环
while true do
local nearbyPlayer = FindNearbyPlayer() -- 自定义函数,查找附近玩家
if nearbyPlayer then
MonsterAttack(nearbyPlayer)
end
Wait(1000) -- 每秒尝试攻击一次
end
```
#### 技能释放型怪物
有些怪物可以释放特殊技能攻击玩家。
```lua
-- 怪物技能释放函数
function MonsterSkillAttack(player)
if player and player:IsAlive() then
local skillDamage = 30
player:TakeDamage(skillDamage)
print("怪物释放技能攻击了玩家,造成 ".. skillDamage .. " 点伤害。")
end
end
-- 主循环
local skillCoolDown = 5000 -- 技能冷却时间5秒
local lastSkillTime = 0
while true do
local nearbyPlayer = FindNearbyPlayer()
if nearbyPlayer then
local currentTime = GetCurrentTime()
if currentTime - lastSkillTime >= skillCoolDown then
MonsterSkillAttack(nearbyPlayer)
lastSkillTime = currentTime
else
MonsterAttack(nearbyPlayer)
end
end
Wait(1000)
end
```
### 任务脚本
#### 简单击杀任务
玩家需要击杀一定数量的怪物来完成任务。
```lua
-- 任务信息
local task = {
targetMonster = "野猪",
targetCount = 10,
currentCount = 0
}
-- 玩家击杀怪物事件处理
function OnPlayerKillMonster(player, monster)
if monster.name == task.targetMonster then
task.currentCount = task.currentCount + 1
print(player.name .. " 击杀了 " .. task.currentCount .. " 只 " .. task.targetMonster)
if task.currentCount >= task.targetCount then
player:CompleteTask()
print(player.name .. " 完成了击杀 " .. task.targetMonster .. " 的任务!")
end
end
end
-- 注册事件
RegisterEvent("OnPlayerKillMonster", OnPlayerKillMonster)
```
#### 物品收集任务
玩家需要收集特定物品来完成任务。
```lua
-- 任务信息
local itemTask = {
targetItem = "草药",
targetCount = 5,
currentCount = 0
}
-- 玩家拾取物品事件处理
function OnPlayerPickItem(player, item)
if item.name == itemTask.targetItem then
itemTask.currentCount = itemTask.currentCount + 1
print(player.name .. " 收集了 " .. itemTask.currentCount .. " 个 " .. itemTask.targetItem)
if itemTask.currentCount >= itemTask.targetCount then
player:CompleteTask()
print(player.name .. " 完成了收集 " .. itemTask.targetItem .. " 的任务!")
end
end
end
-- 注册事件
RegisterEvent("OnPlayerPickItem", OnPlayerPickItem)
```
### 活动脚本
#### 定时活动
在特定时间开启活动,玩家参与可获得奖励。
```lua
-- 活动开始时间和持续时间
local activityStartTime = "20:00"
local activityDuration = 60 * 60 * 1000 -- 活动持续1小时
-- 检查是否到活动时间
function CheckActivityTime()
local currentTime = GetCurrentTimeString()
if currentTime == activityStartTime then
StartActivity()
SetTimer(activityDuration, EndActivity)
end
end
-- 活动开始函数
function StartActivity()
BroadcastMessage("活动开始!大家快来参与!")
-- 可以在这里添加活动相关的怪物刷新、奖励设置等逻辑
end
-- 活动结束函数
function EndActivity()
BroadcastMessage("活动结束!感谢大家参与!")
-- 清理活动相关的设置
end
-- 主循环
while true do
CheckActivityTime()
Wait(60 * 1000) -- 每分钟检查一次活动时间
end
```
以上脚本只是示例,实际应用中可能需要根据996引擎的具体接口和规则进行调整和完善。

