PDA

View Full Version : [TLBB] Hỏi về cái script lua



caovanthanh22
09-11-16, 07:20 PM
Để cho cái script lua này chạy dc theo thời gian, ngoài khai bào ở script dat... ^^.. mình không biết làm thế nào cho nó hoạt động... mong các bác vô tình hay hữu tình đi qua đây giúp đỡ ạ ^^...


-- Vô Lßþng S½n

x002170_g_scriptId = 002170

x002170_g_AllBoss = {6}
x002170_g_BossSysMsgByGroupID={}
x002170_g_BossSysMsgByGroupID[1]={Msg="#cFF0000 Vô Lßþng S½n: #YTuyªn ð߶ng qua lÕi #cff6633ÐÕi Lý #Yvà #cff6633Kính H°cüa thß½ng nhân bang hµi #c0000FFTàTh¥n#Y. Chính là n½i ðây, ngay tÕi vùng ð¤t #cff6633Vô Lßþng S½n #Y này!!! Mµt miªng m°i ngon không th¬ bö qua... h·i các chiªn hæu! Chúng ta ði cß¾p tiêu thôi",isSended=0}

x002170_g_AllBoss[6]=
{
{ ID=45001, GroupId=1, Title="#-08#c00A8EBTàTh¥n Bang Chü", Name="Popi", PosX=45, PosY=170, BaseAI=1, Patrol=0, ExtAIScript=295, ScriptID=2107 },
{ ID=45012, GroupId=1, Title="#-07#c00A8EBTàTh¥n Nµi Vø SÑ", Name="XiTin", PosX=43, PosY=167, BaseAI=1, Patrol=1, ExtAIScript=300, ScriptID=2107 },
{ ID=45007, GroupId=1, Title="#-07#c00A8EBTàTh¥n Công Vø SÑ", Name="LéKim", PosX=45, PosY=173, BaseAI=1, Patrol=2, ExtAIScript=304, ScriptID=2107 },
{ ID=45013, GroupId=1, Title="#-06#c00A8EBTàTh¥n Thß½ng Nhân", Name="cTiêu", PosX=41, PosY=173, BaseAI=1, Patrol=3, ExtAIScript=301, ScriptID=2107 },
{ ID=45004, GroupId=1, Title="#-06#c00A8EBTàTh¥n Thß½ng Nhân", Name="DuyKute", PosX=37, PosY=174, BaseAI=1, Patrol=4, ExtAIScript=296, ScriptID=2107 },
}
--**********************************

function x002170_OnCharacterTimer( sceneId, objId, dataId, uTime )
local nHour = GetHour()
local nMinute = GetMinute()

if sceneId==6 then
if (nHour==19 and nMinute==30) or (nHour==19 and nMinute==40) or (nHour==19 and nMinute==50) or (nHour==20 and nMinute==00) or (nHour==20 and nMinute==10) or (nHour==20 and nMinute==20) or (nHour==20 and nMinute==30) then
x002170_CreateMonster( sceneId )
end
end
end

--**********************************

function x002170_CreateMonster( sceneId )

for j,msgData in x002170_g_BossSysMsgByGroupID do
msgData.isSended=0
end
for i,data in x002170_g_AllBoss[sceneId] do
local isExist = 0
local nMonsterNum = GetMonsterCount(sceneId)
for i=0, nMonsterNum-1 do
local MonsterId = GetMonsterObjID(sceneId,i)
local MosDataID = GetMonsterDataID( sceneId, MonsterId )
if MosDataID == data.ID then
isExist = 1
break
end
end
if isExist==0 then
local MstId = LuaFnCreateMonster(sceneId, data.ID, data.PosX, data.PosY, data.BaseAI, data.ExtAIScript, data.ScriptID )
SetCharacterTitle(sceneId, MstId, data.Title)
SetCharacterName(sceneId,MstId, data.Name)
SetPatrolId(sceneId, nNPC, data.Patrol)
x002170_SysMsg( sceneId, data.GroupId )
end
end

end

--**********************************

function x002170_SysMsg( sceneId, groupId )
if x002170_g_BossSysMsgByGroupID[groupId].isSended==0 then
AddGlobalCountNews( sceneId, x002170_g_BossSysMsgByGroupID[groupId].Msg )
x002170_g_BossSysMsgByGroupID[groupId].isSended=1
end
end

--**********************************

function x002170_MsgBox( sceneId, selfId, msg )
BeginEvent( sceneId )
AddText( sceneId, msg )
EndEvent( sceneId )
DispatchEventList( sceneId, selfId, -1 )
end

--**********************************

function x002170_NotifyTip( sceneId, selfId, Msg )
BeginEvent( sceneId )
AddText( sceneId, Msg )
EndEvent( sceneId )
DispatchMissionTips( sceneId, selfId )
end

--**********************************

function x002170_CloseMe(sceneId, selfId)
BeginUICommand(sceneId)
EndUICommand(sceneId)
DispatchUICommand(sceneId,selfId, 1000)
end

Welbi
09-11-16, 08:15 PM
Hình như khai báo thông báo trong notice nữa đó bạn. Đến tg nó sẽ tự kích hoạt script thì phải!

caovanthanh22
09-11-16, 10:39 PM
Hình như khai báo thông báo trong notice nữa đó bạn. Đến tg nó sẽ tự kích hoạt script thì phải!

ý bác là file ActivityNotice.txt ^^... dịch ra mấy cái kia đọc cũng có lý, chỉ ko hiểu rõ lắm cơ chế hoạt động của cột time_start.... chênh lệch rất lớn ko so sánh dc gì để ra thời gian ^^...

Dark.Hades
09-11-16, 11:39 PM
Call trong scene nhé
onplayer....

caovanthanh22
14-11-16, 09:49 PM
Call trong scene nhé
onplayer....
thanks bác....
code đối với mình hơi khó ^^...
mình phát hiện ra activitynotice.txt nó chỉnh thời gian như thế nào rùi ^^...
time_start (qui định từ 0 ~ 95 theo ngày) dựa vào time_type (qui định ngày, tuần, tháng và năm) để phân chia thời gian.....^^...
cứ mỗi 15 phút là 1 đơn vị => 4 đơn vị là 1 giờ => 24 giờ là 96 đơn vị (vẫn còn lẽ 1 đơn vị ^^...)
p/s: mình biết muộn còn hơn không biết ^^...
tìm dc code này xem ra ngon hơn

-- Vo luong son
x891000_g_ScriptId = 891000

x891000_g_BossData = {
-- { ID=42237, Title="C± mµ bá chü", PosX=66, PosY=66, BaseAI=29, ExtAIScript=244, ScriptID=-1, NeedCreate=1 },
-- { ID=42233, Title="Ti¬u lâu la", PosX=45, PosY=69, BaseAI=29, ExtAIScript=196, ScriptID=-1, NeedCreate=1 },
-- { ID=42234, Title="Ti¬u lâu la", PosX=51, PosY=54, BaseAI=29, ExtAIScript=194, ScriptID=-1, NeedCreate=1 },
-- { ID=42235, Title="Ti¬u lâu la", PosX=53, PosY=81, BaseAI=29, ExtAIScript=194, ScriptID=-1, NeedCreate=1 },
-- { ID=42236, Title="Ti¬u lâu la", PosX=72, PosY=79, BaseAI=29, ExtAIScript=196, ScriptID=-1, NeedCreate=1 },
{ ID=45001, Title="#-08#c00A8EBTàTh¥n Bang Chü", Nam="Popi", PosX=45, PosY=170, BaseAI=1, Patrol=0, ExtAIScript=295, ScriptID=2107, NeedCreate=1 },
{ ID=45012, Title="#-07#c00A8EBTàTh¥n Nµi Vø SÑ", Nam="XiTin", PosX=43, PosY=167, BaseAI=1, Patrol=1, ExtAIScript=300, ScriptID=2107, NeedCreate=1 },
{ ID=45007, Title="#-07#c00A8EBTàTh¥n Công Vø SÑ", Nam="LéKim", PosX=45, PosY=173, BaseAI=1, Patrol=2, ExtAIScript=304, ScriptID=2107, NeedCreate=1 },
{ ID=45013, Title="#-06#c00A8EBTàTh¥n Thß½ng Nhân", Nam="cTiêu", PosX=41, PosY=173, BaseAI=1, Patrol=3, ExtAIScript=301, ScriptID=2107, NeedCreate=1 },
{ ID=45004, Title="#-06#c00A8EBTàTh¥n Thß½ng Nhân", Nam="DuyKute", PosX=37, PosY=174, BaseAI=1, Patrol=4, ExtAIScript=296, ScriptID=2107, NeedCreate=1 },
}
function x891000_OnDefaultEvent( sceneId, actId, iNoticeType, param2, param3, param4, param5 )

StartOneActivity( sceneId, actId, 180*1000, iNoticeType )

if getn(x891000_g_BossData) < 1 then
return
end

for _, Data in x891000_g_BossData do
Data.NeedCreate = 1
end

local nMonsterNum = GetMonsterCount(sceneId)
for i=0, nMonsterNum-1 do
local MonsterId = GetMonsterObjID(sceneId,i)
local MosDataID = GetMonsterDataID( sceneId, MonsterId )
x891000_CurSceneHaveMonster( sceneId, MosDataID )
end

for _, BossData in x891000_g_BossData do
if BossData.NeedCreate == 1 then
local MonsterID = LuaFnCreateMonster(sceneId, BossData.ID, BossData.PosX, BossData.PosY, BossData.BaseAI, BossData.ExtAIScript, BossData.ScriptID )
SetMonsterFightWithNpcFlag(sceneId, MonsterID, 0)
SetUnitCampID(sceneId, MonsterID, MonsterID, 110)
SetCharacterTitle(sceneId, MonsterID, BossData.Title)
SetCharacterName(sceneId,MonsterID, BossData.Nam)
SetPatrolId(sceneId, MonsterID, BossData.Patrol)
end
end

end


function x891000_OnTimer( sceneId, actId, uTime )

if CheckActiviyValidity( sceneId, actId ) == 0 then
StopOneActivity( sceneId, actId )
end

end

function x891000_CurSceneHaveMonster( sceneId, DataID )

for i, Data in x891000_g_BossData do
if DataID == Data.ID then
x891000_g_BossData[i].NeedCreate = 0
break
end
end

end