277287065 发表于 2025-4-14 15:33:53

请帮我用翎风引擎标准脚本语言写一份智能挂机脚本

请帮我用翎风引擎标准脚本语言写一份智能挂机脚本
要求身边20步以内有人自动随机
hp不足百分之15自动回城补血
自定义时间换图
记忆五个地图坐标

冉冉是个二笔 发表于 2025-4-14 15:34:43

# 翎风引擎智能挂机脚本

```lua
-- 智能挂机脚本
-- 功能:
-- 1. 身边20步以内有人自动随机
-- 2. HP不足15%自动回城补血
-- 3. 自定义时间换图
-- 4. 记忆五个地图坐标

-- 全局变量定义
local g = {
    -- 记忆的五个地图坐标
    savedPositions = {
      {map="3", x=100, y=100},-- 示例坐标1
      {map="3", x=120, y=120},-- 示例坐标2
      {map="5", x=80, y=80},   -- 示例坐标3
      {map="5", x=90, y=110},   -- 示例坐标4
      {map="7", x=150, y=150}   -- 示例坐标5
    },
    currentPosIndex = 1,          -- 当前使用的位置索引
    lastMapChangeTime = 0,         -- 上次换图时间
    mapChangeInterval = 1800,      -- 换图间隔(秒),默认30分钟
    lastRandomTime = 0,            -- 上次随机时间
    randomCooldown = 5,            -- 随机冷却时间(秒)
    townMap = "0",               -- 回城地图编号
    townX = 300,                   -- 回城X坐标
    townY = 300                  -- 回城Y坐标
}

-- 主循环函数
function main()
    while true do
      -- 检查HP是否低于15%
      if CheckHP() then
            BackToTown()
            RestoreHP()
            ReturnToHunt()
            continue
      end
      
      -- 检查周围是否有玩家
      if CheckNearbyPlayers() then
            RandomMove()
            continue
      end
      
      -- 检查是否需要换图
      if NeedChangeMap() then
            ChangeMap()
            continue
      end
      
      -- 正常挂机行为
      Hunt()
      
      -- 短暂延迟,避免CPU占用过高
      Delay(100)
    end
end

-- 检查HP是否低于15%
function CheckHP()
    local currentHP = GetHP()
    local maxHP = GetMaxHP()
    return (currentHP / maxHP) < 0.15
end

-- 回城函数
function BackToTown()
    Say("HP过低,回城补血")
    UseItem("回城卷")-- 使用回城卷
    WaitMap(g.townMap, 10000)-- 等待10秒内到达回城地图
    MoveTo(g.townX, g.townY)   -- 移动到安全区
end

-- 恢复HP函数
function RestoreHP()
    while true do
      local currentHP = GetHP()
      local maxHP = GetMaxHP()
      
      if currentHP / maxHP > 0.9 then-- HP恢复到90%以上
            break
      end
      
      -- 使用药品
      if GetItemCount("强效金创药") > 0 then
            UseItem("强效金创药")
      elseif GetItemCount("金创药") > 0 then
            UseItem("金创药")
      end
      
      -- 等待恢复
      Delay(2000)
    end
end

-- 返回挂机点
function ReturnToHunt()
    local pos = g.savedPositions
    Say("返回挂机点")
    UseItem("随机传送卷")-- 使用随机卷接近目标地图
   
    -- 尝试传送到目标地图
    if GetMapName() ~= pos.map then
      MoveToMap(pos.map)
      WaitMap(pos.map, 10000)-- 等待10秒内到达目标地图
    end
   
    -- 移动到记忆坐标
    MoveTo(pos.x, pos.y)
end

-- 检查周围20步内是否有玩家
function CheckNearbyPlayers()
    local players = GetNearbyPlayers(20)-- 获取20步内的玩家列表
    return #players > 0-- 如果有玩家返回true
end

-- 随机移动函数
function RandomMove()
    local currentTime = GetTime()
    if currentTime - g.lastRandomTime < g.randomCooldown then
      return-- 冷却时间内不执行随机
    end
   
    g.lastRandomTime = currentTime
    local directions = {"上", "下", "左", "右", "左上", "右上", "左下", "右下"}
    local dir = directions
    Move(dir, math.random(3, 10))-- 随机移动3-10步
end

-- 检查是否需要换图
function NeedChangeMap()
    local currentTime = GetTime()
    return currentTime - g.lastMapChangeTime > g.mapChangeInterval
end

-- 换图函数
function ChangeMap()
    g.lastMapChangeTime = GetTime()
    g.currentPosIndex = g.currentPosIndex % #g.savedPositions + 1-- 循环切换到下一个位置
   
    local pos = g.savedPositions
    Say("换图到 "..pos.map.."("..pos.x..","..pos.y..")")
   
    -- 如果已经在目标地图,只需移动
    if GetMapName() == pos.map then
      MoveTo(pos.x, pos.y)
    else
      -- 传送到目标地图
      MoveToMap(pos.map)
      WaitMap(pos.map, 10000)-- 等待10秒内到达目标地图
      MoveTo(pos.x, pos.y)
    end
end

-- 挂机行为函数
function Hunt()
    -- 攻击最近的怪物
    local monster = GetNearestMonster()
    if monster then
      Attack(monster.id)
    else
      -- 没有怪物时随机走动
      if math.random(1, 100) > 70 then-- 30%概率移动
            RandomMove()
      end
    end
   
    -- 拾取物品
    PickupItems()
end

-- 拾取物品函数
function PickupItems()
    local items = GetGroundItems()
    for _, item in ipairs(items) do
      if IsValuable(item.name) then-- 自定义判断物品价值
            Pickup(item.id)
            Delay(500)-- 拾取间隔
      end
    end
end

-- 判断物品是否有价值(需根据实际情况修改)
function IsValuable(itemName)
    local valuableItems = {
      "金币", "金条", "强效金创药", "强效魔法药",
      "沃玛装备", "祖玛装备", "赤月装备"-- 示例物品
    }
   
    for _, name in ipairs(valuableItems) do
      if itemName == name then
            return true
      end
    end
    return false
end

-- 脚本入口
main()
```

## 使用说明

1. **配置说明**:
   - 修改 `savedPositions` 中的五个坐标为你常用的挂机点
   - 调整 `mapChangeInterval` 设置换图间隔时间(秒)
   - 设置 `townMap`, `townX`, `townY` 为你的回城安全区坐标

2. **功能说明**:
   - 当检测到周围20步内有其他玩家时,会自动随机移动
   - HP低于15%时会自动回城补血,补满后返回挂机点
   - 每30分钟(可调)会自动切换到下一个记忆的挂机点
   - 会攻击附近怪物并自动拾取有价值物品

3. **注意事项**:
   - 需要根据实际游戏中的API调整函数名称
   - 药品名称和地图编号需要替换为游戏中的实际值
   - 建议先在安全区域测试脚本功能

如需进一步定制,可以根据实际游戏机制调整检测范围、冷却时间等参数。

admin 发表于 2025-4-14 16:03:45




你看我是怎么给他强调的,开始说明,最好还要强调
否则这个ai**得要死    只会用lua
页: [1]
查看完整版本: 请帮我用翎风引擎标准脚本语言写一份智能挂机脚本