sm

龙族引擎官网,新人接触龙族引擎Lua语言设计介绍

已有 530 次阅读2023-4-15 04:51 |个人分类:龙族引擎| 龙族引擎, LUa语言

(1) 通过id获取 M2游戏对象(人物/hero/npc/怪物等): server.getObjectById(id); 
 示例:
        local gameObject = server.getObjectById(id);
        server.PRINT(gameObject.name);


(2)通过标识号获取 M2游戏对象(人物/npc/怪物等): server.getObjectByRecog(recogId);
    recogId: 游戏对象的标识id。
    注:结合客户端脚本命令 GETSELECTGAMEOBJECTLIST()使用;
 

示例:
-- 响应客户端鼠标框选对象列表
function responseSelectList() 
  local msg = server.GETSOCKETMSG();
  local t = {};

  string.gsub(msg,'[^'..'|'..']+', function(w) table.insert(t,w) end); -- split
 
for i = 1,#t do
    local monster=server.getObjectByRecog(t[i]);
    if monster  ~= nil then
      monster.gotoxy(330, 330); -- 向指定位置靠拢
    end;
  end;

end;

(3)通过人物名称获取人物对象: server.getPlayer(人物名称);
    playerName: 角色名称; 
    返回人物对象;

示例:
   local player = server.getPlayer("某某某");  -- 查找人物是否在线
   if player ~= nil then
     if player.mp > 100 then
       ...
     end;
   end;


(4)获取当前人物对象: server.getMyself();
    返回人物对象;

示例:
   local myself = server.getMyself();

(5) 获取玩家对象列表: server.getPlayerList([范围编号]); 
范围编号:
   0或空 -- 全服;
   1 -- 行会;
   2 -- 组队;
   3 -- 国家;
   4 -- 好友;  
   5 -- 同地图;
   5 -- 同阵营;
返回玩家对象数组;

示例:
local playerList = server.getPlayerList(5); -- 返回当前玩家所在地图上的所有玩家列表
for i = 1,#playerList do
  local player = playerList[i];
  if player ~= nil then
     server.print(player.name);
  end;
end;

  (6) 获取怪物列表: GETMONLIST(地图名,x,y,范围); 
(7) 获取怪物对象: server.getMon(怪物id); 
示例如下:
local myself = server.getMyself();
local monlist=server.getMonList(3, myself.x, myself.y, 10);

for i = 1,#monlist do
  local monster=monlist[i];
  if monster ~= nil then
    monster.gotoxy(myself.x, myself.y); -- 向玩家靠拢
  end;
end;
 
(8) 获取 NPC 对象: server.getNpc(地图名,x,y); 
示例如下:
local npc = server.getNpc(); 
(9) 获取 地图对象: server.getMap(地图名); 
示例如下:
local map = server.getMap(player.mapName); 
(10) 获取地图单元格对象数组: server.getMapObjects(地图名, x, y[, range]); 
示例如下:
local gameObjects = server.getMapObjects(3, 360, 200);
  
if #gameObjects == 0 then
  server.print("没有获取到地图对象.");
else
  for i=1,#gameObjects do
     server.print(gameObjects[i].name);
  end;
end;


(11) 创建怪物: server.createMonsters(分组名, 怪物名, 数量, 地图名, x, y
[, 范围]);

     分组名: 用于区分创建的怪物所属组别;不同组别的怪物会相互攻击;

示例:
local myself = server.getMyself();
local monlist=server.createMonsters("RED", "鸡", 10, 3, 330, 333, 10);
for i = 1,#monlist do
  local monster=monlist[i];
  if monster ~= nil then
    monster.gotoxy(myself.selfx, myself.selfy); -- 向玩家靠拢
  end;
end;

(12) 创建 Lua 怪物: server.createLuaMon(分组名, 怪物名, 类别, 数量, 地图名, x, y);
     以指定的怪物名创建新的180怪物;
     分组名: 用于区分创建的怪物所属组别;不同组别的怪物会相互攻击;
 
     类别: 1--近战怪;大于1为远程怪, 2--飞箭特效,3--火球特效, 4--冰咆哮特效, 5--寒冰掌特效, 6--灭天火特效; 200~499为自定义特效; 

示例:
local myself = server.getMyself();

local monsterList=server.createLuaMon("RED", "鸡", 3, 5, 3, 330, 333);
for i = 1,#t do
  local monster= monsterList[i];
  if monster ~= nil then
    monster.gotoxy(myself.x - 2, myself.y - 2); -- 向玩家靠拢
    monster.setRunEvent("lua\\run.lua", "monRunHandler"); -- 绑定lua怪run事件
  end;
end;

lua\run.lua 脚本文件:
function monRunHandler(monid)
  local monster = server.getMon(monid);
  if monster ~= nil then
    monster.AttackTarget( );
    if not monster.haveTarget then
       monster.Wondering( );
    end;
  end;
end;
;
(13) 创建物品相关: 
 (a) 创建物品: server.makeNewItem(物品名称);

    物品名称: 物品DB中的名称;返回新的物品对象;

示例:
local newUserItem = server.makeNewItem("木剑");

if newUserItem ~= nil then
  server.Print("新创建了物品:"..newUserItem.Name);
end;


  (b) 获取一个新创建的物品: server.getMakeItem(itemMakeIndex);
    itemMakeIndex: 物品的makeIndex;返回新的物品对象;

示例:
local userItem = server.getMakeItem(15836847);

if userItem ~= nil then
  server.Print("获得新创建的物品:"..newUserItem.Name);
end;


  (c) 获取创建物品列表: server.getMakeItemList();
    返回新的物品对象列表;

示例:
local userItemList = server.getMakeItemList();
for i:=1, #userItemList  do 
  userItem = userItemList[i];
  if userItem ~= nil then

    server.Print("物品名称:"..newUserItem.Name);
  end;
end;




路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

© 2001-2024 Discuz! Team. Powered by Discuz! X3.5

GMT+8, 2025-1-3 11:30 , Processed in 0.160352 second(s), 19 queries 手机版|美林GM论坛 ( 蜀ICP备2020030293号-2 )|网站地图

禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.如遇版权问题,请及时QQ联系

返回顶部