【天龙八部】函数整理

------------以下方法函数由旅途查询测试整理 由于引擎问题 可能不适用于所有端 请自行斟酌--------------

LuaFnSetXinFaLevel(sceneId,selfId,x901031_g_XinFaInfo[nMenPai+1][i],119) ---设置心法为119级 这里需要心法 心法可以参考下面的定义的  

x901030_g_XinFaInfo = {

{1,2,3,4,5,6,55},

{7,8,9,10,11,12,56},

{13,14,15,16,17,18,57},

{19,20,21,22,23,24,58},

{25,26,27,28,29,30,59},

{31,32,33,34,35,36,60},

{37,38,39,40,41,42,61},

{43,44,45,46,47,48,62},

{49,50,51,52,53,54,63},

{0,0,0,0,0,0,0,0},

{64,65,66,67,68,69,70},

{81,82,83,84,85,86,87},

{64,65,66,67,68,69,70},

}

----这里可以使用for循环来设置1-7心法全部为119级

for i =1,7 do --循环1-7心法

    LuaFnSetXinFaLevel(sceneId,selfId,x901031_g_XinFaInfo[nMenPai+1][i],119)

end

--***************************以下函数由旅途查询测试整理 由于引擎问题 可能不适用于所有端 不足和错的地方劳驾各位大佬纠正补充***********-----------------------------------

sceneId-----场景ID 

selfId-----人物ID 

targetId-----目标ID

GetName(sceneId,selfId); --- 人物的名字获取 后面是场景的ID 和人物的ID

GetLevel(sceneId,selfId); -----人物等级获取

GetMenPai(sceneId,selfId);----------获取当前门派的ID号

LuaFnJoinMenpai(sceneId,selfId,targetId,6) ----加入门派 6就是天龙 其中(少林","明教","丐帮","武当","峨眉","星宿","天龙","天山","逍遥","无门派","慕容","唐门","鬼谷","桃花岛) 从0开始的 9为无门派

GetSceneName(sceneId);----获取当前场景的名称

TryRecieveItem(sceneId,selfId,50321101,1)---------物品领取 50321101为物品的ID 1为领取一次 这里可以使用for循环获取多次 太多了会卡

ZengDian(sceneId,selfId,-1,1,10000) -- 绑元增加后面的这个1是增加的意思 最后是数量 2的话就是减去 ZengDian(sceneId,selfId,targetId,3,0); --3就是查询剩余绑定元宝数量

YuanBao(sceneId,selfId,-1,1,10000)-- 元宝同理和上面的绑元是一样的

GetMoney(sceneId,selfId) -----获取剩余金币---这里获取的到的数量为铜板的数量 金币需要*10000

AddMoney(sceneId,selfId,10000)--增加1金币 比例为10000铜板=1金币

LuaFnCostMoney(sceneId,selfId,1*10000) ----扣除金币 后面的*10000就是金币数量 不加的话就是铜板 意思就是如果单是1 就是扣除了一个铜板 *10000就是扣除了一个金币

CallScriptFunction( 888899, "BuyRet", sceneId, selfId, 2,1,999) ---这里是增加充值点数的 CALL就是调用脚本 更新数据 ()中的第一个参数为调用的目标的脚本号 第二个就是方法名字 后面的1为增加的具体的数量

LuaFnGetAvailableItemCount(sceneId, selfId, 10157001)--获取某个物品的数量

GetItemCount(sceneId,selfId,10157001)--获取某个物品的数量-----只从玩家的装备和物品包中查找---已经穿戴的装备可以获取到

GetMissionData(sceneId,selfId,XYJ_HONGLI)---获取当前红利

SetMissionData(sceneId,selfId,XYJ_HONGLI,GetMissionData(sceneId,selfId,XYJ_HONGLI)-100000) --扣除红利 减号后面为扣除的具体的数量 换成+ 就是增加 这里的XYJ_HONGLI就代表 全局变量中 这个常量的名字

AddSkill(sceneId,selfId,4609)-------学习技能 后面的4609为技能的编号具体去Public Config SkillTemplate_V1.txt查找 不能乱加 因为门派和心法数据对应不上 可以自己新加

LuaFnDelSkill(sceneId,selfId,4609) -----删除某一个技能 --暂时还没测试

LuaFnHaveImpactOfSpecificDataIndex(sceneId, selfId) ---查询BUFF 返回1就是有

LuaFnCancelSpecificImpact(sceneId,selfId) --删除BUFF

LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,7524,0) ---增加BUFF 7524 为具体的 BUFF ID

GetMissionData(sceneId, selfId, MD_PET_HETI) ----附体状态查询 == 0 就是没有附体的状态

SetMissionData(sceneId, selfId, MD_PET_HETI, 0 ) ---设置附体状态分离 

CallScriptFunction((400900),"TransferFunc",sceneId,selfId,723,160,193,10); ----这里是传送的()里面的第一个参数为脚本号,第二个为函数名 貌似用于验证任务 漕运 坐骑等状态下限制传送 723,160,193,10 723就是需要传送到的场景ID 160.193 就是坐标 10为限制的等级

RestoreHp( sceneId, selfId ) ------满血

RestoreMp( sceneId, selfId ) ------满气

RestoreRage( sceneId, selfId ) ------满怒

LuaFnDelAvailableItem(sceneId,selfId,10157001,1)--------删除物品 倒数第二个为物品ID 后面为物品数量

LuaFnGetMaterialBagSpace( sceneId, selfId) ---道具栏

LuaFnGetPropertyBagSpace( sceneId, selfId )----材料栏

LuaFnGetItemCountInBagPos( sceneId, selfId )---得到某一个格子中物品的数量

LuaFnGetMenPaiMaster( sceneId, selfId ) ---获取玩家当前所在门派的帮主名称

LuaFnGetWorldPos( sceneId, selfId )---得到当前角色的坐标返回x和z的FLOAT类型值

LuaFnIsTeamLeader( sceneId, selfId )---判当前玩家是否为队长 返回0 和1 0代表不是 1代表是

LuaFnGetSex(sceneId,selfId)----返回玩家性别 返回值 0 和 1 0为女 1为男

GetHp(sceneId,selfId)--获取到当前玩家的最大生命值

GetMp(sceneId,selfId)--获取到当前玩家的最大内力就是蓝

AddXinFa(sceneId,selfId,56)---给当前玩家某一个心法 56就是心法ID

DelXinFa(sceneId,selfId,56)----删除玩家的某一个心法

HaveItem(sceneId,selfId,10157002)----判断玩家是否拥有某一个道具 返回0和1 0表示没有 1表示有

HaveItemInBag(sceneId,selfId,10157001)----效果和返回值同上 --只检测包裹是否拥有这个道具 装备穿戴后查询不到 上面的那个穿戴后也可以查询到

LuaFnEraseItem(sceneId,selfId,0)---删除背包中某一个格子的道具 0为格子的编号 0开始 最大看你的背包的数量

LuaFnHasTeam(sceneId,selfId) ---判断当前玩家是否为组队状态 返回0和1 0是没有 1是正在组队

GetNearTeamCount(sceneId,selfId) ---获取当前玩家附近所有队友的个数(包括自己) 没有队伍则返回-1

LuaFnGetTeamSize(sceneId,selfId)---返回当前队伍所在人数

GetTeamId(sceneId,selfId)---返回当前玩家所在队伍的ID

GetMonsterCount(sceneId,selfId)---返回当前场景所有NPC/怪物的数量

LuaFnGetCopyScene_HumanCount(sceneId) --返回当前场景存在人数

GetHumanMenpaiPoint(sceneId,selfId);---查询当前角色的门派贡献值

SetHumanMenpaiPoint(sceneId,selfId,3)---设置当前角色的门派贡献度 这里是直接设置后面的数字 不是增加 增加的需要先查询SetHumanMenpaiPoint(sceneId,selfId,GetHumanMenpaiPoint(sceneId,selfId)+3) 这样是增加3

SetPos(sceneId,selfId,250,128) ----跳转到当前地图的坐标 X Y

NewWorld(sceneId,selfId,1,250,128)----跳转到某一个场景的坐标 场景ID自行查看

HaveXinFa(sceneId,selfId,19)----检测当前角色有没有学习心法 19 为心法ID 返回0 就是没学习 学习了就返回心法等级

AddGlobalCountNews(sceneId,"公告:")----发布公告--可以打印字符串和数组

LuaFnAwardTitle( sceneId, selfId,11,394)----替换称号

SetCurTitle(sceneId,selfId,11,394)---显示称号 和上面的一起用 否者报错

LuaFnDispatchAllTitle(sceneId, selfId)---刷新客户端称号

            AddGlobalCountNews(sceneId,"2222")--公告

--删宝石

 

            local isEraseSuc = LuaFnEraseGemEx(sceneId,selfId,Xiaohei_minggezi,1)

            if( isEraseSuc == 0 ) then

    x900051_NotifyTip(sceneId,selfId,"请不要加锁冥石")

                return 

            end

            local isEraseSuc = LuaFnEraseGemEx(sceneId,selfId,Xiaohei_jinggezi,3)

            if( isEraseSuc == 0 ) then

    x900051_NotifyTip(sceneId,selfId,"请不要加锁晶石")

                return 

            end

 

GetMissionDataEx(sceneId,selfId,MDEX_SEVENDAYTIME_DATA)------全局变量里面的常量数据获取(登陆时间/天数,充值点,消费情况等。。。。)和GetMissionData不晓得为啥不一样 获取到的值不一样 不过有的端不能用Ex的 看具体情况

---这里全局变量中常量的 接口一般最大为511 除非的你的端是花了大价钱 或者有无限的MD 插件

BeginUICommand( sceneId ) --开始通知客户端刷新数据

UICommand_AddInt( sceneId,a2) --向客户端传递一个数据。Tnt为整数类型

UICommand_AddString( sceneId,"30503157") ---想客户端传递一个字符串类型的值,客户端接受到以后要改成数组类型

EndUICommand( sceneId ) --参数结束

DispatchUICommand( sceneId, selfId, 20240401 ) --UI的传值接受目的地 --这里可以在客户端 if agr0 接受

LuaFnGetGUID(sceneId,selfId)----获取到当前玩家的GUID 这个是 在服务器的唯一识别表示 注册时生成 具体从哪个值开始 去找数据库

LuaFnMtl_GetCostNum(sceneId,selfId,Baoshi[i])----获取背包中存在 的数量 ---可以加数组使用for循环获取 也可以直接写宝石的ID---当然也可以便利的背包的索引 和宝石的ID 来获取数量 这里要注意 材料的启示索引和结束索引位置

LuaFnGetItemTableIndexByIndex(sceneId,selfId,i) ---背包中的索引位置 后面的参数就是背包道具栏的中的第几个各自 如果你的背包道具栏为50格子 那么50应该就是材料栏的第一个

    local nItemId = LuaFnGetItemTableIndexByIndex( sceneId, selfId, nPos )--获取背包某个格子的物品id

        local Have = LuaFnGetAvailableItemCount(sceneId,selfId,nItemId)--判断某个id的物品是否符合数量

GetItemName(sceneId,newitem)--获得物品名

LuaFnCancelSpecificImpact(sceneId,selfId) ---应该是判断BUFF是否存在

LuaFnHaveImpactOfSpecificDataIndex(sceneId,selfId)-----BUFF的索引

---------待添加--------

-------------------***************服务端一些脚本或者文本的作用************----------------------

Script.dat-------脚本的索引或者说是总控 -----添加脚本的时候 注意不要重复 重复的话可能只会调用同一脚本号的最下面的一个

---------------***Server > Config ***------

AllowableScriptFunc.txt------客户端向服务端请求的一些函数 允许客户端向服务端查询或者传值的函数名字 需要在这里添加白名单 不然游戏掉线

AttrLevelUpTable.txt-----好像是各门派的成长率

BaseValueTable.ini------各个门派的 初始值和影响系数

ConfigInfo.ini-----移动速度,经验,上限,和一些东西的修正

DefaultChar.ini----初始的出生点 金币等

DropBoxContent.txt-----掉包添加 价值 是否绑定设置

ItemSegAffect.txt----段几 几率

ItemValue.txt---属性编号

ItemSegRate.txt----品质段 对应的属性值 

StandardImpact.txt-----BUFF的效果ID 对用的属性值领取时间等---

---待添加--------

---------------***Pubilc > Config ***------

CharTitle.txt---称号

CommonItem.txt-------物品材料

EquipBase.txt-----装备

EquipSetAttr.txt---套装 件数 效果修改 效果对应ItemValue.txt

GemInfo.txt----宝石

ImpactSEData_V1.txt-----BUFF的右上角显示

ImpactSEData_V1.txt---材料物品 装备宝石规则 ---是否拾取绑定 可否丢弃 叠加等--

ItemSegValue.txt---装备属性 -1表示没有只能修改1或者-1 具体的效果值去另一个文件找 具体请参考潇湘工具

MonsterAttrExTable.txt----怪物或者NPC模型ID

PetAttrTable.txt---宠物

SkillData_V1.txt---技能效果

SkillTemplate_V1.txt---技能设置添加修改

XinFa_V1.txt-----看名就知道是心法

XinFaStudySpend_V1.txt---升级心法参数修改

 

---------对话固定格式-----------------

----------事件列表入口

function x901030_OnDefaultEvent( sceneId, selfId, targetId ) --x901030脚本号 OnDefaultEvent 函数的名字 sceneId 场景的ID selfId人物的ID targetId目标NPC的ID

    BeginEvent(sceneId)

        AddNumText(sceneId, 901030, "#Y#旅途整理", 3, 1) --前面的3就是每个列表中前面的小图标 -1----11 都可以用 后面的 "1" 给这个列表或者选项定义一个编号 方便下面查找

    EndEvent()

    DispatchEventList(sceneId, selfId, targetId)

end

------获取上面事件列表选中一项

function x901030_OnEventRequest( sceneId, selfId, targetId, eventId)

   local Num == GetNumText(); ---- local的意思创建一个就是本地的 局部的变量 Num 为自己定义的局部变量的名称 ---GetNumText(); 获取到上面列表定义的编号 

   if Num == 1 then ---这里的if 是如果的意思 如果获取到的上面的编号等于1 执行这里  

   end

end

-------------------分隔符------------------------------------

 

----------------------for循环--------------------------

---------for 是便利循环的意思 可以用来查找 便利背包 查到物品, BUFF 等 这里我们可以这样写 

lvtu_JiNeng = {4608,4609} --这里的{} 按照应该就是定义类 方法 和循环等语言结构的开始和结束,这里我们就是定义了一个名为lvtu_JiNeng的循环

for i =1,2 do 

   if HaveSkill(sceneId,selfId,lvtu_JiNeng[i]) == 1 then ----HaveSkill 获取技能的函数 使用for 循环查找 有没有学习这两个技能的其中一个--从1 开始循环到2结束

    x901031_NotifyTip( sceneId, selfId,"#Y你已经过技能") ---如果循环到学习了其中一个技能 可以给一个提示 并且返回

    return --return是返回的意思 不在往下执行

   end

end