You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
SigFiesta/LuaScript/KQ/KDFargels/KDFargels.lua

152 lines
3.8 KiB

--------------------------------------------------------------------------------
-- KDFargels Main File --
--------------------------------------------------------------------------------
require( "common" )
require( "KQ/KDFargels/Data/Name" ) -- 파일경로, 파일이름, 역참조를 위한 네임 테이블
require( "KQ/KDFargels/Data/Regen" ) -- 리젠 데이터(그룹, 몹, NPC, 문, 아이템 등의 리젠 종류, 위치 및 속성 관련)
require( "KQ/KDFargels/Data/Process" ) -- 각종 딜레이타임과 링크 정보, 공지, 퀘스트 등의 진행 관련 데이터
require( "KQ/KDFargels/Data/Boss" ) -- 던전 Boss의 행동 관련(채팅 및 보스전 페이즈 제어를 위한 데이터(몹소환 정보 포함))
require( "KQ/KDFargels/Functions/SubFunc" ) -- 전체적인 진행에 필요한 각종 Sub Functions
require( "KQ/KDFargels/Functions/Routine" ) -- 몹 등에 붙는 AI 관련 루틴들
require( "KQ/KDFargels/Functions/Progress" ) -- 각 단계가 정의된 진행 함수들
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- -- --
-- -- 메인함수 -- --
-- -- -- --
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
function Main( Field )
cExecCheck( "Main" )
local EventMemory = InstanceField[Field]
if EventMemory == nil then
cDebugLog( "EventMemory == nil" )
InstanceField[Field] = { }
EventMemory = InstanceField[Field]
EventMemory["MapIndex"] = Field
EventMemory["CurrentTime"] = 0
EventMemory["EventNumber"] = 1
EventMemory["EventData"] = { }
EventMemory["CheckTime"] = 1
EventMemory["EM_STATE"] = EM_STATE["Start"]
EventMemory["EventState"] = ES_STATE["STATE_1"]
EventMemory["CameraMove"] = { }
EventMemory["CameraMove"]["CameraState"] = CAMERA_STATE["NORMAL"]
EventMemory["CameraMove"]["CheckTime"] = 0
EventMemory["CameraMove"]["Number"] = 1
EventMemory["CameraMove"]["Focus"] = { }
EventMemory["CameraMove"]["Focus"]["X"] = 0
EventMemory["CameraMove"]["Focus"]["Y"] = 0
EventMemory["CameraMove"]["Focus"]["DIR"] = 0
EventMemory["FaceCut"] = { }
EventMemory["FaceCut"]["Number"] = 1
EventMemory["FaceCut"]["CheckTime"] = 0
EventMemory["PlayerList"] = { }
EventMemory["PlayerLogin"] = false
EventMemory["CheckLimitTime"] = 999999999;
DoorCreate( EventMemory )
cSetFieldScript( Field, SCRIPT_MAIN )
cFieldScriptFunc( EventMemory["MapIndex"], "MapLogin", "PlayerMapLogin" )
end
MainRoutine( EventMemory )
end
function MainRoutine( EventMemory )
cExecCheck( "MainRoutine" )
if EventMemory == nil then
return
end
if EventMemory["PlayerLogin"] == false then
return
end
if EVENT_GAME_OVER == true then
return
end
-- 0.1초 마다 실행
if EventMemory["CurrentTime"] + 0.1 > cCurrentSecond() then
return
else
EventMemory["CurrentTime"] = cCurrentSecond()
-- 제한시간 체크
if EventMemory["CheckLimitTime"] ~= nil then
if EventMemory["CheckLimitTime"] <= EventMemory["CurrentTime"] then
cTimer( EventMemory["MapIndex"], 0 )
cLinkToAll( EventMemory["MapIndex"], LINK_INFO["RETURNMAP1"]["MAP_INDEX"], LINK_INFO["RETURNMAP1"]["X"], LINK_INFO["RETURNMAP1"]["Y"])
cEndOfKingdomQuest( EventMemory["MapIndex"] )
end
end
end
if EventMemory["EM_STATE"] == EM_STATE["Play"] then
local ReturnValue = EVENT_ROUTINE[EventMemory["EventNumber"]]( EventMemory )
if ReturnValue == EVENT_ROUTINE_END then
EventMemory["EM_STATE"] = EM_STATE["End"]
end
return
elseif EventMemory["EM_STATE"] == EM_STATE["Start"] then
EVENT_INIT_FUCTION[EventMemory["EventNumber"]]( EventMemory )
EventMemory["EM_STATE"] = EM_STATE["Play"]
return
elseif EventMemory["EM_STATE"] == EM_STATE["End"] then
EVENT_DEINIT_FUNCTION( EventMemory )
return
end
end