跳到主要内容

npc

是否是npc is_npc

  • args:
名字类型说明、描述
objuserdata对象
---
  • ret: boolean 是否

  • 示例:

function isc_test_npc:is_npc()
edi.scene:transfer_id(module.player, 1, -1, -1)

local bit_player = 1
local bit_monster = 1 << 1
local bit_npc = 1 << 2
local bit_pet = 1 << 3
local bit_scene_item = 1 << 4

local obj = edi.player:owner(module.player)
local scene = edi.object:get_scene(obj)
-- 查找场景内的npc
local objects = edi.scene:get_eye_objects(obj, bit_npc | bit_player)
for _, object in pairs(objects) do
LOGI("isc test: " .. edi.object:get_name(object) .. " is_npc? " .. tostring(edi.npc:is_npc(object)))
end
end

获得npc配置id get_id

  • args:
名字类型说明、描述
npcuserdatanpc
---
  • ret: number 配置id(npc_cs.xlsx nMetaId)

  • 示例:

function isc_test_npc:get_id()
edi.scene:transfer_id(module.player, 1, -1, -1)

local bit_player = 1
local bit_monster = 1 << 1
local bit_npc = 1 << 2
local bit_pet = 1 << 3
local bit_scene_item = 1 << 4

local obj = edi.player:owner(module.player)
local scene = edi.object:get_scene(obj)
-- 查找场景内的npc
local objects = edi.scene:get_eye_objects(obj, bit_npc)
for _, object in pairs(objects) do
local npc = edi.npc:cast(object)
LOGI("isc test: " .. edi.npc:get_id(npc))
end
end

获得npc唯一id get_uuid

  • args:
名字类型说明、描述
npcuserdatanpc
---
  • ret: number 唯一id

  • 示例:

function isc_test_npc:get_uuid()
edi.scene:transfer_id(module.player, 1, -1, -1)

local bit_player = 1
local bit_monster = 1 << 1
local bit_npc = 1 << 2
local bit_pet = 1 << 3
local bit_scene_item = 1 << 4

local obj = edi.player:owner(module.player)
local scene = edi.object:get_scene(obj)
-- 查找场景内的npc
local objects = edi.scene:get_eye_objects(obj, bit_npc)
for _, object in pairs(objects) do
local npc = edi.npc:cast(object)
LOGI("isc test: " .. edi.npc:get_uuid(npc))
end
end

获得npc名字 get_name

  • args:
名字类型说明、描述
npcuserdatanpc
---
  • ret: string 名字

  • 示例:

function isc_test_npc:get_name()
edi.scene:transfer_id(module.player, 1, -1, -1)

local bit_player = 1
local bit_monster = 1 << 1
local bit_npc = 1 << 2
local bit_pet = 1 << 3
local bit_scene_item = 1 << 4

local obj = edi.player:owner(module.player)
local scene = edi.object:get_scene(obj)
-- 查找场景内的npc
local objects = edi.scene:get_eye_objects(obj, bit_npc)
for _, object in pairs(objects) do
local npc = edi.npc:cast(object)
LOGI("isc test: " .. edi.npc:get_name(npc))
end
end

设置npc特效 set_effect

  • args:
名字类型说明、描述
npcuserdatanpc
effect_idnumber特效编号
---
  • ret: 无

  • 示例:

function isc_test_npc:set_effect()
edi.scene:transfer_id(module.player, 1, -1, -1)

local bit_player = 1
local bit_monster = 1 << 1
local bit_npc = 1 << 2
local bit_pet = 1 << 3
local bit_scene_item = 1 << 4

local obj = edi.player:owner(module.player)
local scene = edi.object:get_scene(obj)
-- 查找场景内的npc
local objects = edi.scene:get_eye_objects(obj, bit_npc)
for _, object in pairs(objects) do
local npc = edi.npc:cast(object)
-- todo: 纯特效绑定待开发
edi.npc:set_effect(npc, 999)
edi.object:refresh_appear(object)
LOGI("isc test: npc effect: " .. edi.npc:get_name(npc) .. " effect: " .. edi.npc:get_effect(npc))
break
end
end

获得npc特效 get_effect

  • args:
名字类型说明、描述
npcuserdatanpc
---
  • ret: number 特效编号

  • 示例:

function isc_test_npc:get_effect()
-- see isc_test_npc:set_effect
end

根据配置id查找npc get_by_id

  • args:
名字类型说明、描述
idnumber配置id(npc_cs.xlsx nMetaId)
---
  • ret: userdata npc

  • 示例:

function isc_test_npc:get_by_id()
edi.scene:transfer_id(module.player, 1, -1, -1)
-- 找新人大使
local npc = edi.npc:get_by_id(201)
if npc then
LOGI("isc test: " .. edi.npc:get_name(npc))
end
end

根据唯一id查找npc get_by_uuid

  • args:
名字类型说明、描述
uuidnumber唯一id
---
  • ret: userdata npc

  • 示例:

function isc_test_npc:get_by_uuid()
edi.scene:transfer_id(module.player, 1, -1, -1)
-- 找新人大使
local npc = edi.npc:get_by_id(201)
if npc then
local uuid = edi.npc:get_uuid(npc)
local same_npc = edi.npc:get_by_uuid(uuid)
LOGI("isc test: " .. edi.npc:get_name(same_npc))
end
end

获得npc与玩家的距离(不在同一场景返回-1) get_distance

  • args:
名字类型说明、描述
npcuserdatanpc
playeruserdata玩家
---
  • ret: number 距离

  • 示例:

function isc_test_npc:get_distance()
edi.scene:transfer_id(module.player, 1, -1, -1)
-- 先找到新人大使
local npc = edi.npc:get_by_id(201)
if npc then
LOGI("isc test: " .. edi.npc:get_distance(npc, module.player))
end
end

获取墓碑怪npc倒计时时间戳 get_tomb_check_time

  • args:
名字类型说明、描述
npcuserdatanpc
---
  • ret: number 倒计时时间戳(ms)

  • 示例:

function isc_test_npc:get_tomb_check_time()
local npc = edi.npc:get_by_id(6000)
if npc then
local time = edi.npc:get_tomb_check_time(npc)
LOGI("墓碑怪npc倒计时时间戳: ".. time)
end
end