需要的文档编辑器Notepad++载地址
https://www.123pan.com/s/7M3qVv-LwjGh.html 提取码:1234
首先我们要添加一个NPC脚本我这里定义一个脚本号588888 脚本文件为xb_meiri.lua 文件放在public/data/script目录下
内容如下
x588888_g_scriptId = 588888
--**********************************
--交互入口
--**********************************
function x588888_OnDefaultEvent(sceneId,selfId)
BeginEvent(sceneId)
local ntext="#G欢迎您来到本服务器,在我这里您可以领取每日工资任务福利。如果全部完成则奖励#Y10万元宝、10万绑定元宝、1000金币、1000交子和1000万经验。"
--上面先给出一个提示 然后下面我们写每日完成情况
local old_date=XB_Get_meiri(sceneId,selfId,XB_MR_Date) --读取上一次完成任务的日期
local now_date=GetDayTime() --获取今天日期
if now_date ~= old_date then --判断今天是否做过这些任务
XB_Set_meiri(sceneId,selfId,XB_MR_Date,now_date) --如果今天没做过这些任务则记录今天的日期
XB_Set_meiri(sceneId,selfId,XB_MR_QJ,0) --下面开始清零所有任务次数为0
XB_Set_meiri(sceneId,selfId,XB_MR_FZ,0)
XB_Set_meiri(sceneId,selfId,XB_MR_XX,0)
XB_Set_meiri(sceneId,selfId,XB_MR_WBT,0)
XB_Set_meiri(sceneId,selfId,XB_MR_XB,0)
XB_Set_meiri(sceneId,selfId,XB_MR_BPRW,0)
end
local qiju=XB_Get_meiri(sceneId,selfId,XB_MR_QJ) --读取棋局完成任务次数
local fanzei=XB_Get_meiri(sceneId,selfId,XB_MR_FZ) --读取反贼完成任务次数
local xiaoxiao=XB_Get_meiri(sceneId,selfId,XB_MR_XX) --读取宵小完成任务次数
local wabaotu=XB_Get_meiri(sceneId,selfId,XB_MR_WBT) --读取挖宝图完成任务次数
local xunbao=XB_Get_meiri(sceneId,selfId,XB_MR_XB) --读取楼兰寻宝完成任务次数
local bangpairw=XB_Get_meiri(sceneId,selfId,XB_MR_BPRW) --读取帮派任务完成任务次数
local wc_fz ="#Y不满足"
local wc_qj ="#Y不满足"
if qiju ==1 then --判断棋局参与次数如果参与过1次 则显示完成否则显示不满足
wc_qj="#G已满足"
end
if fanzei >=5 then --反贼参与次数是否为5 完成5次显示满足
wc_fz="#G已满足"
XB_Set_meiri(sceneId,selfId,XB_MR_FZ,5)--如果超过5次 则重置次数为5
fanzei=5
end
AddText(sceneId,ntext)
AddText(sceneId," ")
AddText(sceneId, "反贼完成次数: "..fanzei.."/5 "..wc_fz)
AddText(sceneId," ")
AddText(sceneId, "棋局参与次数: "..qiju.."/1 "..wc_qj)
if qiju==1 then
if fanzei==5 then
AddNumText(sceneId, x588888_g_scriptId, "#G领取工资任务奖励", 6, 1)
end
end
EndEvent(sceneId)
DispatchEventList(sceneId,selfId,-1)
end
function x588888_OnEventRequest( sceneId, selfId, targetId, eventId)
local key = GetNumText()
--满血满怒
if key == 1 then
YuanBao(sceneId,selfId,-1,1,100000)
x588888_tips(sceneId, selfId, "成功领取10万元宝")
--领取金币
-- if x588888_CheckGMName(sceneId,selfId) == 0 then
-- x588888_tips(sceneId, selfId, "你不是GM不能使用此功能")
-- return
-- end
AddMoney(sceneId,selfId, 10000000)
x588888_tips(sceneId, selfId, "角色成功增加1000金币")
--领取1000万经验
if GetLevel(sceneId, selfId) > 119 then
x588888_tips(sceneId, selfId, "你等级过高!")
return
end
for i = 1,10 do
--修复错误经验一次最多获取70万 所以这里循环10次 一次获取1000万经验
LuaFnAddExp(sceneId,selfId, 700000)
LuaFnAddExp(sceneId,selfId, 300000)
end
x588888_tips( sceneId,selfId,"角色成功增加1000万经验")
--领取10000赠点
ZengDian(sceneId,selfId,selfId,1,100000)
x588888_tips( sceneId,selfId,"成功领取10万绑定元宝")
--领取1000交子
AddMoneyJZ (sceneId,selfId, 10000000)
x588888_tips( sceneId,selfId,"角色成功增加1000交子")
end
end
--**********************************
--提示函数
--**********************************
function x588888_tips(sceneId, selfId, Tip)
BeginEvent(sceneId)
AddText(sceneId, Tip)
EndEvent(sceneId)
DispatchMissionTips(sceneId, selfId)
end
现在我们去public/data目录下找到文件 script.dat 文件 在这个文件中将我们的脚本进行连接
588888=\xb_meiri.lua
然后打开服务端public/data/script目录下的ScriptGlobal.lua文件 添加如下内容
----雪宝科技添加开始-----------------
--定义每个数据变量名称和在数组中的位置 对应文件中的行数 以此类推行数
XB_MR_Date = 1 --定义日期 用来判断今天是否第一次做这个任务还是已经做过这些任务 对应文件中第一行
XB_MR_QJ=2 --定义棋局任务完成次数 文件中第二行
XB_MR_FZ=3 --定义反贼任务完成次数 文件中第三行
XB_MR_XX=4 --定义宵小任务完成次数 文件中第四行
XB_MR_XB=5 --定义楼兰寻宝任务完成次数 文件中第五行
XB_MR_WBT=6 --定义挖藏宝图完成次数 文件中第六行
XB_MR_BPRW=7 --定义帮派任务完成次数 文件中第七行
--注意我们这里一共向文件中读写7行数据那么下面每次读取 和写入数据时要循环7次
function XB_Get_meiri(sceneId,selfId,nIndex) --先写一个读取函数 注意nIndex是从程序中传递过来的
local nGuid = LuaFnGetID(sceneId,selfId) --获取玩家ID
--打开服务器ServerBD/MissIonData目录中XBMR+玩家ID.txt文件
local handle = openfile("./ServerBD/MissIonData/XBMR"..nGuid..".txt", "r")
--定义一个数组
local nServerData = {}
--判断文件是否存在 如果存在
if handle and handle ~= nil then
--如果存在则循环7次 这里就是我们上面定义的最大行数
for i = 1,7 do
--每次循环会读取一行数据存到变量nData中
local nData = read(handle, "*l")
--判断读变量nData是不是空的
if nData ~= nil then
--如果读取到的nData不是空的则将变量转换成数字保存到数组中
nServerData[i] = tonumber(nData)
else
--如果读取到的nData是空的 则对应数组设置为 0
nServerData[i] = 0
end
end
--关闭文件
closefile(handle)
else
--如果没有找到这个文件,因为玩家第一次登陆肯定没有创建这个文件
for i = 1,7 do
--循环7次 将所有数组赋值 0
nServerData[i] = 0
end
end
if nServerData[nIndex] == nil then
nServerData[nIndex] = 0
end
return nServerData[nIndex]
end
function XB_Set_meiri(sceneId,selfId,nIndex,insetData)
local nServerData = XB_GET_ExData(sceneId,selfId)
local nTextData = ""
local nGuid = LuaFnGetID(sceneId,selfId)
local handle = openfile("./ServerBD/MissIonData/XBMR"..nGuid..".txt", "wb")
nServerData[nIndex] = insetData
for i = 1,7 do
nTextData = nTextData..nServerData[i].."\n"
end
if nTextData ~= "" then
write(handle, nTextData)
closefile(handle);
end
end
--读取所有数据返回数组
function XB_GET_ExData(sceneId,selfId)
local nGuid = LuaFnGetID(sceneId,selfId)
local handle = openfile("./ServerBD/MissIonData/XBMR"..nGuid..".txt", "r")
local nServerData = {}
if handle and handle ~= nil then
for i = 1,7 do
local nData = read(handle, "*l")
if nData ~= nil then
nServerData[i] = tonumber(nData)
else
nServerData[i] = 0
end
end
closefile(handle)
else
for i = 1,7 do
nServerData[i] = 0
end
end
return nServerData
end
----大鹏添加结束-----------------
现在我们在需要的副本脚本添加我们写的函数
这里以棋局 和反贼为例来讲解
找到棋局副本脚本路径 /public/data/script/fuben/efuben_1_zhenlong_huodong.lua
然后搜索 SetMissionData(sceneId, memId,
找到后我们添加如下脚本内容
--这里添加上我们添加的日期 即写入今天日期
XB_Set_meiri(sceneId,memId,XB_MR_Date,day)
XB_Set_meiri(sceneId,memId,XB_MR_QJ,1) --棋局每天只需要完成一次那么我们这里就直接设置1
这里我们棋局脚本就做好了 现在去找反贼副本所在位置
/public/data/script/xunhuan/eDynamicNPC_ThiefSoldier.lua
然后搜索 x050013_CreateBoss( sceneId, CurLevel )
这里我们要添加如下脚本
local now_date=GetDayTime() --读取今天日期
local old_date=XB_Get_meiri(sceneId,selfId,Date) --读取文件中记录的上次日期
local fanzei=XB_Get_meiri(sceneId,selfId,XB_MR_FZ) --读取刷反次数
if old_date~=now_date then --判断今天日期和文件中记录的日期是否相同
XB_Set_meiri(sceneId,selfId,XB_MR_Date,now_date) --如果不同 则写入今天日期
XB_Set_meiri(sceneId,selfId,XB_MR_FZ,1) --如果不同则写入今天刷反次数 1
else
XB_Set_meiri(sceneId,selfId,XB_MR_FZ,fanzei+1) --如果相同则说明今天已经刷过一次反贼 则在原来的次数上+1
end
对了我们还要建立一个NPC来指向我们创建的588888脚本
打开服务端/public/Scene目录 因为我们回城点是在洛阳 那么就找到洛阳的NPC设置文件
luoyang_monster.ini
然后把第一行 monstercount=223 这个数字加1
在文件最后加上下面代码
[monster223]
guid=16223372
type=49296
name=#b#e660066#gffff00工资任务
title=每日工资任务
pos_x=93
pos_z=177
dir=27
script_id=588888
respawn_time=1000
group_id=-1
team_id=-1
base_ai=3
ai_file=0
patrol_id=-1
shop0=-1
shop1=-1
shop2=-1
shop3=-1
ReputationID=-1
level=3
到此我们脚本就做好了可以登录游戏来测试了
没有回复内容