chuyiwen_gmsv/include/npc_lua.h
2017-01-14 00:37:03 +09:00

517 lines
28 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef __NPC_LUA__
#define __NPC_LUA__
#include "npc_lua_interface.h"
#include "../lua/lua.h"
#include "../lua/lauxlib.h"
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#define LUA_DATALINE0 0
#define LUA_DATALINE1 2000
#define LUA_DATALINE2 4000
#define LUA_DATALINE3 6000
#define LUA_DATALINE4 8000
#define LUA_DATALINE5 10000
typedef struct __CREATEENEMY
{
int EnemyId;
int BaseLevel;
int SkillType;
}CREATEENEMY,*PCREATEENEMY;
typedef struct __SCRIPTREGLIB
{
const char *LibName; //函数库名
luaL_reg *FuncRegList; //需要注册的函数库函数列表
}SCRIPTREGLIB,*PSCRIPTREGLIB;
typedef struct __SCRIPTREGCLASS
{
const char *ClassName; //类型名
PSCRIPTREGLIB NewLib; //用于申请类实例的 SCRIPTREGLIB
luaL_reg *FuncRegList; //需要注册的类函数列表
}SCRIPTREGCLASS,*PSCRIPTREGCLASS;
typedef struct __SCRIPTREGARRAY
{
const char *ArrayName; //数组名
const char **SetMetaTable; //用于设置数组响应动作
const char **SetFuncName; //用于设置数组响应动作的函数名字
PSCRIPTREGLIB FuncList; //用于响应对应 SetMetaTable 的处理函数列表
}SCRIPTREGARRAY,*PSCRIPTREGARRAY;
typedef struct __ARRAY_NTINT
{
size_t Size;
int Num[1];
}ARRAY_NTINT,*PARRAY_NTINT;
//创建NPC-返回NPC唯一索引
int NPC_Lua_Create(const char *_DoFile, const char *_InitFuncName, char *_seek, BOOL _IsFly);
//删除NPC 传入NPC唯一索引
int NPC_Lua_Del(int _index);
//创建战斗
int NPC_Lua_CreateVsEnemy(lua_State *_NLL, int _CharaIndex, int _NpcIndex, const char *_DoFunc, PCREATEENEMY _CreateEnemy, int _ARLen, int _Flg);
const char *NPC_Lua_SetErrorStr(const char *ErrStr);
//注册扩展调用接口
int NPC_Lua_RegCallEx(lua_State * _NLL, luaL_Reg *_RegList);
//注册扩展函数库接口
int NPC_Lua_RegLibEx(lua_State * _NLL, PSCRIPTREGLIB _RegLib);
//注册扩展类接口
int NPC_Lua_RegClassEx(lua_State * _NLL, PSCRIPTREGCLASS _RegClass);
//注册扩展数组接口
int NPC_Lua_RegArrayEx(lua_State * _NLL, PSCRIPTREGARRAY _RegArray);
//扩展类型接口函数
//NTInt
int NPC_Lua_NTInt_New(lua_State *_NLL);
int NPC_Lua_NTInt_Get(lua_State *_NLL);
int NPC_Lua_NTInt_Set(lua_State *_NLL);
int NPC_Lua_NTInt_Len(lua_State *_NLL);
//接口函数
////////////////////////////////////////////////NL/////////////////////////////////////////////////
int NPC_Lua_NL_GetErrorStr(lua_State *_NLL); //返回错误信息
int NPC_Lua_NL_CreateNpc(lua_State *_NLL); //创建NPC
int NPC_Lua_NL_DelNpc(lua_State *_NLL); //删除NPC
int NPC_Lua_NL_Mod(lua_State *_NLL); //求余数
int NPC_Lua_NL_GetStringFromIndexWithDelim(lua_State *_NLL); //使用指定字符分割字符串并返回调用者指定index位置的字符串
//int NPC_Lua_NL_ANSI_PlayerLoop(lua_State *_NLL); //遍历所有存在人物,返回索引号
int NPC_Lua_NL_PetLoopGetNext(lua_State *_NLL); //遍历所有存在宠物,返回宠物索引号 写法类似定时器
int NPC_Lua_NL_ItemLoopGetNext(lua_State *_NLL); //遍历所有存在道具,返回道具索引号 如上
int NPC_Lua_NL_PlayerLoopGetNext(lua_State *_NLL); //遍历所有存在人物,返回人物索引号 如上
int NPC_Lua_NL_GetConfigLineType(lua_State *_NLL); //返回0为字符串形。1为SHORT形。2为INT型。3为DOUBLE型。如果不存在该字段返回-1.
int NPC_Lua_NL_GetConfigLineVal(lua_State *_NLL); //总是返回[字符串]。如果需要转换为数字请用tonumber()函数。找不到该字段返回nil
BOOL NPC_Lua_CheckNpcEventFree(lua_State *_NLL); //检测对象是否满足某条件
int NPC_Lua_DoNpcEventAction(lua_State *_NLL); //执行NPC脚本命令
int NPC_Lua_NL_SetTimer(lua_State *_NLL); //设定一个计时器,所设的函数将按设定的间隔时间周期调用。
int NPC_Lua_NL_DelTimer(lua_State *_NLL); //删除一个计时器。一个计时器被删除,就不会再被周期调用;
int NPC_Lua_NL_RunSaFuncII(lua_State *_NLL); //调用一个服务端内定义好的2个INT参数的函数。
int NPC_Lua_NL_RunSaFuncIII(lua_State *_NLL); //调用一个服务端内定义好的3个INT参数的函数(如ITEM_USE等使用道具后的回调函数
int NPC_Lua_NL_ANSI_PlayerLoop(lua_State *_NLL); //遍历所有存在人物,返回索引号
int NPC_Lua_NL_ANSI_PetLoop(lua_State *_NLL); //遍历所有存在宠物,返回索引号
int NPC_Lua_NL_ANSI_ItemLoop(lua_State *_NLL); //遍历所有存在道具,返回索引号
int NPC_Lua_NL_ClsMk(lua_State *_NLL);
int NPC_Lua_NL_AddCheckNum(lua_State *_NLL);
int NPC_Lua_NL_Mkstring(lua_State *_NLL);
int NPC_Lua_NL_Mkint(lua_State *_NLL);
int NPC_Lua_NL_SendMesg(lua_State *_NLL);
////////////////////////////////////////////////NLG////////////////////////////////////////////////
//功能接口
int NPC_Lua_NLG_UpItem(lua_State *_NLL);
int NPC_Lua_NLG_GiveItemOne(lua_State *_NLL);
int NPC_Lua_NLG_GivePetOne(lua_State *_NLL);
int NPC_Lua_NLG_DelItemByIndex(lua_State *_NLL);
int NPC_Lua_NLG_FindPet(lua_State *_NLL); //查找宠物栏空位
int NPC_Lua_NLG_GetMap(lua_State *_NLL); //获得当前位置的建筑物
int NPC_Lua_NLG_PetUp(lua_State *_NLL); //宠物升级
int NPC_Lua_NLG_AddSk(lua_State *_NLL); //给职业技能
int NPC_Lua_NLG_SetZy(lua_State *_NLL); //设定职业
int NPC_Lua_Char_GetPlayerMaxNum(lua_State *_NLL); //获取最大人数
int NPC_Lua_NLG_GetXY(lua_State *_NLL); //获取一个地图的坐标
int NPC_Lua_NLG_WalkJc(lua_State *_NLL); //检查障碍物
int NPC_Lua_NLG_KickPlayer(lua_State *_NLL); //T除指定玩家
int NPC_Lua_NLG_HealOne(lua_State *_NLL); //指定一个对象 回复满HP 满MP
int NPC_Lua_NLG_HealAll(lua_State *_NLL); //指定一个玩家MP 回复所有包括宠物HP
int NPC_Lua_NLG_LevelUpTo(lua_State *_NLL); //提升对象的等级。
int NPC_Lua_NLG_AddExp(lua_State *_NLL); //给与一个对象经验。
int NPC_Lua_NLG_UpPet(lua_State *_NLL); //更新对象的宠物,用于更新【客户端】宠物数据,在某些后台道具属性被修改的情况下不能把更新数据发送到前台;
int NPC_Lua_NLG_DelPetByPos(lua_State *_NLL); //删除 对像 身上指定栏位的宠物
int NPC_Lua_NLG_DelPetByIndex(lua_State *_NLL); //删除 对像 身上指定索引号非ID的宠物
int NPC_Lua_NLG_GivePetByIndex(lua_State *_NLL); //给予一只指定索引号的宠物给指定 对像, 返回宠物栏位置
int NPC_Lua_NLG_GiveItemByIndex(lua_State *_NLL); //给与一个道具index指定玩家 返回道具栏位
int NPC_Lua_NLG_WarpToSpecificPoint(lua_State *_NLL); //移动NPC 可做团体移动
BOOL NPC_Lua_NLG_UpSkillupPoint(lua_State *_NLL); //更新人物点数
int NPC_Lua_NLG_StayEncount(lua_State *_NLL); //原地
int NPC_Lua_NLG_CheckInFront(lua_State *_NLL); //用于检查某个对象是否在某个对象面前
int NPC_Lua_NLG_CheckObj(lua_State *_NLL); //检查某个地图位置是否有对象存在
int NPC_Lua_NLG_CharLook(lua_State *_NLL); //设置人物方向(发送更新封包)
int NPC_Lua_NLG_CreateBattle(lua_State *_NLL); //创建战斗
int NPC_Lua_NLG_InputCard(lua_State *_NLL); //创建一个对话框让玩家输入虚拟卡号
int NPC_Lua_NLG_CreateBattlePvP(lua_State *_NLL);
int NPC_Lua_NLG_SearchWatchBattleRandIndex(lua_State *_NLL);
int NPC_Lua_NLG_DelPet(lua_State *_NLL); //删除指定玩家宠物栏一个或多个宠物
int NPC_Lua_NLG_DelHaveIndexPet(lua_State *_NLL);
int NPC_Lua_NLG_DelItem(lua_State *_NLL); //删除指定玩家道具栏一个或多个宠物
int NPC_Lua_NLG_DelItemByPos(lua_State *_NLL); //删除指定玩家道具栏一个或多个宠物
int NPC_Lua_NLG_DischargeParty(lua_State *_NLL); //解散 团队
int NPC_Lua_NLG_GivePet(lua_State *_NLL); //给指定玩家一个或多个宠物
int NPC_Lua_NLG_GiveOnePet(lua_State *_NLL); //给指定玩家一个宠物
int NPC_Lua_NLG_GiveItem(lua_State *_NLL); //给指定玩家一个或多个宠物
int NPC_Lua_NLG_GiveOneItem(lua_State *_NLL); //给指定玩家一个道具
int NPC_Lua_NLG_GiveRandItem(lua_State *_NLL);
int NPC_Lua_Char_GetOnLinePlayer(lua_State *_NLL); //获取当前在线人数
int NPC_Lua_NLG_ShowWindowTalked(lua_State *_NLL); //在指定玩家客户端显示指定内容、类型的对话框
int NPC_Lua_NLG_SetAction(lua_State *_NLL); //设置对象的动作
int NPC_Lua_NLG_TalkToCli(lua_State *_NLL); //普通说话,可以对全服务器人说
int NPC_Lua_NLG_TalkToFloor(lua_State *_NLL); //对在某一指定地图内的玩家说话
int NPC_Lua_NLG_UpChar(lua_State *_NLL); //向NPC周围的玩家发送NPC的数据更新封包
int NPC_Lua_NLG_UpStateBySecond(lua_State *_NLL); //向指定玩家发送第2类状态更新封包
int NPC_Lua_NLG_UpStateByThird(lua_State *_NLL); //向指定玩家发送第3类状态更新封包
int NPC_Lua_NLG_Update_Party(lua_State *_NLL); //向玩家所在的团队成员发送玩家的状态更新封包
int NPC_Lua_NLG_Warp(lua_State *_NLL); //传送一个对象
int NPC_Lua_NLG_WalkMove(lua_State *_NLL); //移动一个对象
int NPC_Lua_NLG_WatchEntry(lua_State *_NLL); //观战
int NPC_Lua_NLG_HealerAllHeal(lua_State *_NLL); //加血
int NPC_Lua_NLG_GetMaxPlayNum(lua_State *_NLL); //获取服务器最大在线数
int NPC_Lua_NLG_CheckPlayIndex(lua_State *_NLL); //检查玩家索引是否正常
int NPC_Lua_NLG_Save(lua_State *_NLL);
////add by mo
int NPC_Lua_NLG_SetExp(lua_State *_NLL); //设置服务器经验倍率
int NPC_Lua_NLG_GetExp(lua_State *_NLL); //获取服务器经验倍率
#ifdef _PETTRANS_RANGE
int NPC_Lua_NLG_SetPetTransRange(lua_State *_NLL); //设置宠物转生范围参数
int NPC_Lua_NLG_GetPetTransRange(lua_State *_NLL); //获得宠物转生范围参数
#endif
///////////////////////////////////////////////Char////////////////////////////////////////////////
//设置数据的接口
int NPC_Lua_Char_ClrEvtEnd(lua_State *_NLL); //设置清除结束任务标志
int NPC_Lua_Char_ClrEvtNow(lua_State *_NLL); //设置清除正在做任务标志
int NPC_Lua_Char_ClrEvt(lua_State *_NLL); //设置清除任务标志
int NPC_Lua_Char_GetAllocPoint(lua_State *_NLL); //获取宠物CharIndex的四维成长
int NPC_Lua_Char_GetDataFromEnemyBase(lua_State *_NLL); //获取对应 标志 的宠物模板数据enemybaseX.txt
int NPC_Lua_Char_GetPlayerIndex(lua_State *_NLL); //玩家索引
int NPC_Lua_Char_FindItemIndex(lua_State *_NLL); //搜索指定对像身上是否拥有某道具为指定的索引号
int NPC_Lua_Char_FindPetIndex(lua_State *_NLL); //搜索指定对像身上是否拥有宠物为指定的索引号
int NPC_Lua_CHAR_CHECKINDEX(lua_State *_NLL); //玩家索引
int NPC_Lua_Char_GetPetSkill(lua_State *_NLL); //取得宠物指定技能栏的技能编号
int NPC_Lua_Char_GetPetSkillNo(lua_State *_NLL); //获取Char数据
int NPC_Lua_Char_RidNo(lua_State *_NLL); //设置清除任务标志
int NPC_Lua_Char_GetEmptyItemBoxNum(lua_State *_NLL); //搜索指定对像身上道具栏空位的数量
int NPC_Lua_Char_GetEmptyPetBoxNum(lua_State *_NLL); //搜索指定对像身上宠物栏空位的数量
int NPC_Lua_Char_GetPlayerItemNum(lua_State *_NLL); //搜索指定对像身上为某ID的道具的数量
int NPC_Lua_Char_GetPlayerPetNum(lua_State *_NLL); //搜索指定对像身上为某ID的宠物的数量
int NPC_ABLua_char_getPlayerMaxNum(lua_State *_NLL); //玩家最大人数
int NPC_ABLua_char_getBattleexp(lua_State *_NLL); //战斗经验倍数
int NPC_Lua_Char_SetPetSkill(lua_State *_NLL); //设置宠物指定技能栏的技能编号
int NPC_Lua_Char_SetPetSkillNo(lua_State *_NLL);
int NPC_Lua_Char_ComplianceParameter(lua_State *_NLL); //根据对象属性来重新计算并设置WORK属性以达到生效的目的。
int NPC_Lua_Char_HcItemId(lua_State *_NLL); //合成用到的搜索身上符合物品。
int NPC_Lua_Char_DelHcItem(lua_State *_NLL); //删除身上某个位置的物品。
int NPC_Lua_Char_GETFM(lua_State *_NLL); //获取家族气势 声望 资金
int NPC_Lua_Char_FindPetEnemyBaseId(lua_State *_NLL); //搜索指定对象身上是否拥有宠物EnemyBase文件的对应ID
int NPC_Lua_Char_ITEMID_NAME(lua_State *_NLL); //获得指定道具ID的名字
int NPC_Lua_Char_ITEMID_NAME2(lua_State *_NLL); //获得指定道具ID的说明
int NPC_Lua_Char_ITEMID_LEVEL(lua_State *_NLL); //获得指定道具ID的等级
int NPC_Lua_Char_ITEMID_GOLD(lua_State *_NLL); //获得指定道具ID的价格
int NPC_Lua_Char_ITEMID_RANO(lua_State *_NLL); //获得指定道具ID的图形
//int NPC_Lua_Char_CharRidNo(lua_State *_NLL); //检查对像是否已经吃了某骑宠证;
int NPC_Lua_Char_GetPetOwner(lua_State *_NLL); //获得宠物主人的索引号
int NPC_Lua_Char_GetEnemyBaseIdFromEnemyId(lua_State *_NLL); //通过enemy.txt上所设置的宠物编号来查找enemybase.txt上所设定的宠物编号。
int NPC_Lua_Char_GetEnemyIdFromEnemyBaseId(lua_State *_NLL); //通过enemybase.txt上所设置的宠物编号来查找enemy.txt上所设定的宠物编号。
int NPC_Lua_Char_GetIp(lua_State *_NLL); //获取指定对像的IP地址
int NPC_Lua_Char_SetAllocPoint(lua_State *_NLL); //设置宠物CharIndex的四维成长
int NPC_Lua_Char_GetMaxPetIndex(lua_State *_NLL); //获取最大宠物索引
int NPC_Lua_Char_GetMaxPlayerIndex(lua_State *_NLL); //获取最大人物索引
int NPC_Lua_Char_SavePetToString(lua_State *_NLL); //生成一个描述宠物的字符串。
int NPC_Lua_Char_LoadPetFromString(lua_State *_NLL); //根据一个描述宠物的字符串,生成一个宠物。
int NPC_Lua_Char_GetPlayerFromAccAndName(lua_State *_NLL);//根据玩家的帐号和人物名来寻找玩家。帐号和人物名留空也可查找。不可都留空
int NPC_Lua_Char_CheckPet(lua_State *_NLL); //检查宠物索引是否有效。
int NPC_Lua_Char_CheckPlayer(lua_State *_NLL); //检查人物索引是否有效。
BOOL NPC_Lua_Char_JoinParty(lua_State *_NLL); //加入团队
int NPC_Lua_Char_getFamilyPlayIndex(lua_State *_NLL); //获得家族里边人数的索引。
int NPC_Lua_Char_SetEvtEnd(lua_State *_NLL); //设置任务标志为结束状态
int NPC_Lua_Char_SetEvtNow(lua_State *_NLL); //设置任务标志为正在做状态
int NPC_Lua_Char_SetData(lua_State *_NLL); //设置Char数据
int NPC_Lua_Char_getVipPoint(lua_State *_NLL); //会员点更新
int NPC_Lua_Char_getjfPoint(lua_State *_NLL); //积分更新
int NPC_Lua_Char_getxjPoint(lua_State *_NLL); //现金更新
int NPC_Lua_Char_setVipPoint(lua_State *_NLL); //会员点操作
int NPC_Lua_Char_setjfPoint(lua_State *_NLL); //积分操作
int NPC_Lua_Char_setxjPoint(lua_State *_NLL); //现金操作
//事件设置的接口
int NPC_Lua_Char_SetWalkPreEvent(lua_State *_NLL); //设置WalkPre事件响应
int NPC_Lua_Char_SetWalkPostEvent(lua_State *_NLL); //设置WalkPost事件响应
int NPC_Lua_Char_SetPreOverEvent(lua_State *_NLL); //设置PreOver事件响应
int NPC_Lua_Char_SetPostOverEvent(lua_State *_NLL); //设置PostOver事件响应
int NPC_Lua_Char_SetWatchEvent(lua_State *_NLL); //设置Watch事件响应
int NPC_Lua_Char_SetLoopEvent(lua_State *_NLL); //设置Loop事件响应
int NPC_Lua_Char_SetTalkedEvent(lua_State *_NLL); //设置Talked事件响应
int NPC_Lua_Char_SetOFFEvent(lua_State *_NLL); //设置OFF事件响应
int NPC_Lua_Char_SetLookedEvent(lua_State *_NLL); //设置Looked事件响应
int NPC_Lua_Char_SetItemPutEvent(lua_State *_NLL); //设置ItemPut事件响应
int NPC_Lua_Char_SetWindowTalkedEvent(lua_State *_NLL); //设置WindowTalked事件响应
#ifdef _USER_CHARLOOPS
int NPC_Lua_Char_SetCharLoopsEvent(lua_State *_NLL); //设置CharLoops事件响应
int NPC_Lua_Char_SetBattleProPertyEvent(lua_State *_NLL);//设置BattleProPerty事件响应
#endif
//获取数据的接口
int NPC_Lua_Char_IsEventEnd(lua_State *_NLL); //检查是否结束的任务标志
int NPC_Lua_Char_IsEventNow(lua_State *_NLL); //检查是否正在做的任务标志
int NPC_Lua_Char_FindItemId(lua_State *_NLL); //搜索指定对象身上是否拥有某道具ID
int NPC_Lua_Char_FindPetEnemyId(lua_State *_NLL); //搜索指定对象身上是否拥有宠物Enemy文件的对应ID
int NPC_Lua_Char_GetData(lua_State *_NLL); //获取Char数据
int NPC_Lua_Char_GetItemId(lua_State *_NLL); //获取指定对象身上指定位置的道具ID
int NPC_Lua_Char_GetPetEnemyId(lua_State *_NLL); //获取指定对象身上指定位置的宠物Enemy文件的对应ID
int NPC_Lua_Char_GetItemIndex(lua_State *_NLL); //获取指定对象身上指定位置的道具索引
int NPC_Lua_Char_GetPetIndex(lua_State *_NLL); //获取指定对象身上指定位置的宠物对象索引
int NPC_Lua_Char_GetTeamIndex(lua_State *_NLL); //获取队员的对象索引
int NPC_Lua_Char_GetPlayerIndexByCdkey(lua_State *_NLL); //通过帐号查询人物索引
int NPC_Lua_Char_VipPoint(lua_State *_NLL);
int NPC_Lua_Char_HealAll(lua_State *_NLL);
int NPC_Lua_Char_GetPetSkillId(lua_State *_NLL);
int NPC_Lua_Char_GetPetSkillName(lua_State *_NLL);
int NPC_Lua_Char_GetPetSkillMsg(lua_State *_NLL);
int NPC_Lua_Char_SetPetSkill(lua_State *_NLL);
int NPC_Lua_Char_RandMsg(lua_State *_NLL);
int NPC_Lua_Char_GetBeatitudeNum(lua_State *_NLL);
///////////////////////////////////////////////GAME////////////////////////////////////////////////
int NPC_Lua_Game_FMPOINT_GetData(lua_State *_NLL); //获得庄园据点的信息
int NPC_Lua_Game_FMPOINT_ACSetFMPoint(lua_State *_NLL); //设定家族据点信息。仅当据点未被占据时有效。
int NPC_Lua_Game_FMPOINT_ACFixFMPoint(lua_State *_NLL); //修改家族据点信息,并清空气势。一般用于族战结束。
int NPC_Lua_Game_FMPOINT_ACCleanFMPoint(lua_State *_NLL); //无条件清除家族据点。
///////////////////////////////////////////////Item////////////////////////////////////////////////
//获取数据的接口
int NPC_Lua_Item_GetData(lua_State *_NLL); //获取道具数据
int NPC_Lua_Item_GetDataFromItemSet(lua_State *_NLL); //获取ITEMSETX文件的数据
//设置数据的接口
int NPC_Lua_Item_SetData(lua_State *_NLL); //获取道具数据
//事件设置的接口
int NPC_Lua_Item_SetPreOverEvent(lua_State *_NLL); //设置PreOver事件响应
int NPC_Lua_Item_SetPostOverEvent(lua_State *_NLL); //设置PostOver事件响应
int NPC_Lua_Item_SetWatchEvent(lua_State *_NLL); //设置Watch事件响应
int NPC_Lua_Item_SetUseEvent(lua_State *_NLL); //设置Use事件响应
int NPC_Lua_Item_SetAttachEvent(lua_State *_NLL); //设置Attach事件响应
int NPC_Lua_Item_SetDetachEvent(lua_State *_NLL); //设置Detach事件响应
int NPC_Lua_Item_SetDropEvent(lua_State *_NLL); //设置Drop事件响应
int NPC_Lua_Item_SetPickUPEvent(lua_State *_NLL); //设置PickUP事件响应
#ifdef _Item_ReLifeAct
int NPC_Lua_Item_SetDieReLifeEvent(lua_State *_NLL); //设置DieReLife事件响应
#endif
///////////////////////////////////////////////BIT///////////////////////////////////////////////
int NPC_Lua_Bit_band(lua_State *_NLL);
int NPC_Lua_Bit_bor(lua_State *_NLL);
int NPC_Lua_Bit_bxor(lua_State *_NLL);
int NPC_Lua_Bit_lshift(lua_State *_NLL);
int NPC_Lua_Bit_rshift(lua_State *_NLL);
///////////////////////////////////////////////Obj////////////////////////////////////////////////
//获取数据的接口
int NPC_Lua_Obj_GetType(lua_State *_NLL); //获取OBJ的类型
/*
int NPC_Lua_Obj_GetName(lua_State *_NLL); //获取OBJ的名称
int NPC_Lua_Obj_GetDIR(lua_State *_NLL); //获取OBJ的方向
int NPC_Lua_Obj_GetImageNum(lua_State *_NLL); //获取OBJ的形象号
*/
int NPC_Lua_Obj_GetCharType(lua_State *_NLL); //获取OBJ对应的Char数据结构的类型
int NPC_Lua_Obj_GetCharIndex(lua_State *_NLL); //获取OBJ对应的Char数据结构的索引
int NPC_Lua_Obj_GetX(lua_State *_NLL); //获取OBJ的X坐标
int NPC_Lua_Obj_GetY(lua_State *_NLL); //获取OBJ的Y坐标
int NPC_Lua_Obj_GetFloor(lua_State *_NLL); //获取OBJ所在的地图编号
//int NPC_Lua_Obj_GetDelTime(lua_State *_NLL); //获取OBJ的删除时间
int NPC_Lua_Obj_SetType(lua_State *_NLL); //获取OBJ的类型
/*
int NPC_Lua_Obj_SetName(lua_State *_NLL); //获取OBJ的名称
int NPC_Lua_Obj_SetDIR(lua_State *_NLL); //获取OBJ的方向
int NPC_Lua_Obj_SetImageNum(lua_State *_NLL); //获取OBJ的形象号
*/
int NPC_Lua_Obj_SetCharType(lua_State *_NLL); //获取OBJ对应的Char数据结构的类型
int NPC_Lua_Obj_SetX(lua_State *_NLL); //获取OBJ的X坐标
int NPC_Lua_Obj_SetY(lua_State *_NLL); //获取OBJ的Y坐标
int NPC_Lua_Obj_SetFloor(lua_State *_NLL); //获取OBJ所在的地图编号
//int NPC_Lua_Obj_SetDelTime(lua_State *_NLL); //获取OBJ的删除时间
//////////////////////////////////////////////Battle///////////////////////////////////////////////
//获取数据的接口
int NPC_Lua_Battle_GetPlayIndex(lua_State *_NLL); //获取战斗中的玩家索引
int NPC_Lua_Battle_GetData(lua_State *_NLL); //获取战斗数据
int NPC_Lua_Battle_SetData(lua_State *_NLL); //设置战斗数据
int NPC_Lua_Battle_IndexToNo(lua_State *_NLL); //通过对象索引获取所在的战场编号
int NPC_Lua_Battle_NoToIndex(lua_State *_NLL); //通过战场编号获取他的索引
int NPC_Lua_Battle_CheckIndex(lua_State *_NLL); //检查战斗索引是否有效。
//设置数据的接口
int NPC_Lua_Battle_SetNORisk(lua_State *_NLL); //设置是否开启无风险模式
int NPC_Lua_Battle_SetMod(lua_State *_NLL); //设置战斗模式标志
int NPC_Lua_Battle_SetType(lua_State *_NLL); //设置战斗类型
int NPC_Lua_Battle_Exit(lua_State *_NLL); //退出战斗
//事件设置的接口
int NPC_Lua_Battle_SetWinEvent(lua_State *_NLL); //设置Win事件响应
int NPC_Lua_Battle_SetEndEvent(lua_State *_NLL); //设置Win事件响应
///////////////////////////////////////////////Other///////////////////////////////////////////////
int NPC_Lua_GetFuncPoint(lua_State *_NLL); //获取函数指针
//////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////MAP////////////////////////////////////////////////
int NPC_Lua_Map_CheckCoordinates(lua_State *_NLL); //检测某点是否在地图范围内。
int NPC_Lua_Map_GetExitFloorXY(lua_State *_NLL); //检测地图是否支持登出
int NPC_Lua_Map_GetfloorX(lua_State *_NLL); //获取地图X长度
int NPC_Lua_Map_GetfloorY(lua_State *_NLL); //获取地图Y长度
int NPC_Lua_Map_GetTileAndObjId(lua_State *_NLL); //获取地图某点的地板和装饰层
int NPC_Lua_Map_SetTileAndObjId(lua_State *_NLL); //设置地图某点的地板和装饰层
int NPC_Lua_Map_GetWalkAbleFromPoint(lua_State *_NLL); //获取某点是否可以行走
int NPC_Lua_Map_GetImageData(lua_State *_NLL); //获取图片数据
int NPC_Lua_Map_SetImageData(lua_State *_NLL); //设置图片数据
int NPC_Lua_Map_GetTopObj(lua_State *_NLL); //用来获取地图某点上对象
int NPC_Lua_Map_GetNextObj(lua_State *_NLL); //获取下一个对象索引
int NPC_Lua_Map_CheckImageIndex(lua_State *_NLL); //检测某地图号图片是否存在
int NPC_Lua_Map_CheckIndex(lua_State *_NLL); //检测某地图号地图是否存在
int NPC_Lua_Map_MakeNewMap(lua_State *_NLL); //制造一个新的地图 并返回地图的ID
int NPC_Lua_Map_DelNewMap(lua_State *_NLL); //删除一个副本地图
int NPC_Lua_Map_SetExWarp(lua_State *_NLL); //设置人物登出后地图的传送点
int NPC_Lua_Map_SetMapPoint(lua_State *_NLL); //添加地图传送点
int NPC_Lua_Map_DelMapPoint(lua_State *_NLL); //删除地图传送点
int NPC_Lua_Map_getFloorName(lua_State *_NLL); //获得地图名
int NPC_Lua_Map_Upmap(lua_State *_NLL); //更新地图
///////////////////////////////////////////////MAP////////////////////////////////////////////////
///////////////////////////////////////////////Spell////////////////////////////////////////////////
int NPC_Lua_Spell_PETSKILL_GetData(lua_State *_NLL); //获取宠物技能ID
int NPC_Lua_Spell_PROFESSION_GetData(lua_State *_NLL); //获取职业技能ID
int NPC_Lua_Spell_MAGIC_GetData(lua_State *_NLL); //获取精灵技能ID
int NPC_Lua_Spell_PETSKILL_SetData(lua_State *_NLL); //设置对应ID的技能数据
int NPC_Lua_Spell_PROFESSION_SetData(lua_State *_NLL); //设置对应ID的技能数据
int NPC_Lua_Spell_MAGIC_SetData(lua_State *_NLL); //设置对应ID的技能数据
///////////////////////////////////////////////Spell////////////////////////////////////////////////
///////////////////////////////////////////////SQL/////////////////////////////////////////////////
int NPC_Lua_SQL_Push(lua_State *_NLL); //用于推送MySQL指令
int NPC_Lua_SQL_PushPop(lua_State *_NLL); //用于推送MySQL指令并设置响应函数
int NPC_Lua_SQL_PushPopAdv(lua_State *_NLL); //向SAAC发出一个SQL查询请求并指定当SAAC返回处理结果时对结果进行处理的回调函数,该函数将返回第一行结果,并释放结果集。
int NPC_Lua_SQL_QueryFirstRow(lua_State *_NLL); //回调函数,该函数将返回第一行结果,并释放结果集。
int NPC_Lua_SQL_FetchRow(lua_State *_NLL); //下一条结果
int NPC_Lua_SQL_FreeResult(lua_State *_NLL); //释放结果集
///////////////////////////////////////////////SQL///////////////////////////////////////////////
#define LRet(r) \
{ \
NPC_Lua_SetErrorStr(NULL); \
return r; \
}
#define LRetErr(c,r) \
{ \
NPC_Lua_SetErrorStr(c); \
return r; \
}
//////////////////////////////////////////////////////////////////////
//返回一个nil
#define LRetNull(L) \
{ \
lua_pushnil(L); \
LRet(1); \
}
//返回一个BOOL给LUA引擎
#define LRetBool(L, b) \
{ \
lua_pushboolean(L, b); \
LRet(1); \
}
//返回一个int给LUA引擎
#define LRetInt(L, i) \
{ \
lua_pushinteger(L, i); \
LRet(1); \
}
#define LRetMsg(L, c) \
{ \
lua_pushstring(L, c); \
LRet(1); \
}
////////////////////////////////////////////////////////////////////
//设置一个错误状态和一个错信息
#define LRetErrInt(L, i, c) \
{ \
lua_pushinteger(L, i); \
LRetErr(c,1); \
}
//返回一个字符串给LUA引擎
#define LRetErrNull(L, c) \
{ \
lua_pushnil(L); \
LRetErr(c,1); \
}
//返回一个字符串给LUA引擎
#define LRetErrMsg(L, c) \
{ \
lua_pushstring(L, c); \
LRetErr(c,1); \
}
//用于检查参数是否足够
#define CheckEx(L, n) \
{ \
if(lua_gettop(L) != n) \
{ \
luaL_argerror(L, 1, "参数数量错误"); \
} \
}
#define CheckEx2(L, t, n) \
{ \
if(lua_gettop(L) < (t) || lua_gettop(L) > n) \
{ \
luaL_argerror(L, 1, "参数数量错误"); \
} \
}
#define CheckIndexNull(L, n) \
{ \
if(lua_isnil((L), (n))) \
{ \
luaL_argerror((L), 1, "对象索引不能为nil"); \
} \
}
#define CheckBattleIndexNull(L, n) \
{ \
if(lua_isnil((L), (n))) \
{ \
luaL_argerror((L), 1, "战斗索引不能为nil"); \
} \
}
#define CheckItemIndexNull(L, n) \
{ \
if(lua_isnil((L), (n))) \
{ \
luaL_argerror((L), 1, "道具索引不能为nil"); \
} \
}
#define CheckObjIndexNull(L, n) \
{ \
if(lua_isnil((L), (n))) \
{ \
luaL_argerror((L), 1, "物件索引不能为nil"); \
} \
}
#define LRetArray(L, Array, num) \
{ \
Lua_ReturnArray(L, Array, num); \
LRet(1); \
}
#ifdef _LUA_Debug
int pcall_callback_err_fun(lua_State* L,const char *_InitFuncName); //调试LUA脚本出错信息
#endif
#endif //#ifndef __NPC_LUA__