489 lines
14 KiB
Lua
489 lines
14 KiB
Lua
|
require( "common" )
|
|||
|
require( "KQ/KDSpring/KDSpring_Data" )
|
|||
|
require( "KQ/KDSpring/KDSpring_StepFunc" )
|
|||
|
|
|||
|
|
|||
|
------------------------------------------------------------------------------------------
|
|||
|
-- ŷ<><C5B7> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ --
|
|||
|
------------------------------------------------------------------------------------------
|
|||
|
function KF_INIT( Field, KSMemory, nCurSec )
|
|||
|
cExecCheck "KF_INIT"
|
|||
|
|
|||
|
if Field == nil
|
|||
|
then -- <20>ʵ<EFBFBD> <20≯<EFBFBD> Ȯ<><C8AE>
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if KSMemory == nil
|
|||
|
then -- ŷ<><C5B7> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> Ȯ<><C8AE>
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if nCurSec == nil
|
|||
|
then -- <20>ð<EFBFBD> Ȯ<><C8AE>
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
-- ŷ<><C5B7> <20><><EFBFBD><EFBFBD>Ʈ <20>ʵ<EFBFBD> <20><>ũ<EFBFBD><C5A9>Ʈ <20><><EFBFBD><EFBFBD>
|
|||
|
cSetFieldScript( Field, KQ_SCRIPT_NAME )
|
|||
|
cFieldScriptFunc( Field, "MapLogin", "KF_MAP_LOGIN" ) -- ij<><C4B3><EFBFBD><EFBFBD> <20>ʷα<CAB7><CEB1>ν<EFBFBD> ȣ<><C8A3><EFBFBD>Ǵ<EFBFBD> <20>Լ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ
|
|||
|
KSMemory["FIELD_NAME"] = Field
|
|||
|
KSMemory["WORK_TICK"] = 0
|
|||
|
KSMemory["STEP_NO"] = 1
|
|||
|
KSMemory["STEP_NEXT_TIME"] = nCurSec + KQ_STEP[1]["KS_NEXT_TIME"]
|
|||
|
KSMemory["MSG_NO"] = 1
|
|||
|
KSMemory["MSG_NEXT_TIME"] = 1
|
|||
|
KSMemory["GAME_TYPE"] = KQ_GAME_TYEP["KGT_NORMAL"]
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ
|
|||
|
KSMemory["FLAG_INFO"] = {}
|
|||
|
KSMemory["FLAG_INFO"]["FHND"] = KQ_INVALID_HANDLE
|
|||
|
KSMemory["FLAG_INFO"]["FINDEX"] = ""
|
|||
|
KSMemory["FLAG_INFO"]["FPHND"] = KQ_INVALID_HANDLE
|
|||
|
KSMemory["FLAG_INFO"]["FPICK_TIME"] = 0
|
|||
|
KSMemory["FLAG_INFO"]["FREGEN_TIME"] = 0
|
|||
|
KSMemory["FLAG_INFO"]["FREGEN_X"] = KQ_FLAG_POINT["KFP_X"]
|
|||
|
KSMemory["FLAG_INFO"]["FREGEN_Y"] = KQ_FLAG_POINT["KFP_Y"]
|
|||
|
|
|||
|
-- <20>÷<EFBFBD><C3B7>̾<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20>ʱ<EFBFBD>ȭ
|
|||
|
KSMemory["PLAYER_LIST"] = {}
|
|||
|
-- KSMemory["PLAYER_LIST"][n] = {}
|
|||
|
-- KSMemory["PLAYER_LIST"][n]["PHND"] = KQ_INVALID_HANDLE
|
|||
|
-- KSMemory["PLAYER_LIST"][n]["PREG_NO"] = KQ_INVALID_HANDLE
|
|||
|
-- KSMemory["PLAYER_LIST"][n]["PNAME"] = ""
|
|||
|
-- KSMemory["PLAYER_LIST"][n]["PTEAM_NO"] = 0
|
|||
|
-- KSMemory["PLAYER_LIST"][n]["PIS_MAP"] = false
|
|||
|
-- KSMemory["PLAYER_LIST"][n]["PPICK_TIME"] = 0
|
|||
|
|
|||
|
|
|||
|
-- <20><> <20><><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ
|
|||
|
KSMemory["TEAM_LIST"] =
|
|||
|
{
|
|||
|
{ -- RED TEAM
|
|||
|
TSCORE = 0,
|
|||
|
TPOINT_HND = KQ_INVALID_HANDLE,
|
|||
|
TMEMBER_LIST = {},
|
|||
|
},
|
|||
|
|
|||
|
{ -- BLUE TEAM
|
|||
|
TSCORE = 0,
|
|||
|
TPOINT_HND = KQ_INVALID_HANDLE,
|
|||
|
TMEMBER_LIST = {},
|
|||
|
},
|
|||
|
}
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
KSMemory["MOB_LIST"] = {}
|
|||
|
-- KSMemory["MOB_LIST"][n] = {}
|
|||
|
-- KSMemory["MOB_LIST"][n]["MHND"] = KQ_INVALID_HANDLE
|
|||
|
-- KSMemory["MOB_LIST"][n]["MREGEN_TIME"] = 0
|
|||
|
|
|||
|
-- <20><> <20><>ȯ
|
|||
|
KSMemory["DOOR_LIST"] = {}
|
|||
|
for i = 1, #KQ_DOOR
|
|||
|
do
|
|||
|
KSMemory["DOOR_LIST"][i] = cDoorBuild( KSMemory["FIELD_NAME"], KQ_DOOR[i]["KD_INDEX"], KQ_DOOR[i]["KD_X"], KQ_DOOR[i]["KD_Y"], KQ_DOOR[i]["KD_DIR"], KQ_DOOR[i]["KD_SCALE"] )
|
|||
|
cDoorAction( KSMemory["DOOR_LIST"][i], KQ_DOOR[i]["KD_BLOCK"], "open" )
|
|||
|
end
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
------------------------------------------------------------------------------------------
|
|||
|
-- <20><> <20>α<EFBFBD><CEB1><EFBFBD> --
|
|||
|
------------------------------------------------------------------------------------------
|
|||
|
function KF_MAP_LOGIN( Field, Handle )
|
|||
|
cExecCheck "KF_MAP_LOGIN"
|
|||
|
|
|||
|
local KSMemory = InstanceField[Field] -- ŷ<><C5B7> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
|||
|
local nCurSec = cCurSec(); -- <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD>(<28><>)
|
|||
|
|
|||
|
if KSMemory == nil
|
|||
|
then -- ŷ<><C5B7> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> Ȯ<><C8AE>
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if Handle == nil
|
|||
|
then -- <20>÷<EFBFBD><C3B7>̾<EFBFBD> <20>ڵ<EFBFBD> Ȯ<><C8AE>
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if nCurSec == nil
|
|||
|
then -- <20>ð<EFBFBD> Ȯ<><C8AE>
|
|||
|
nCurSec = 0
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
local nAdminLevel = cGetAdminLevel( Handle ) -- <20><EFBFBD><EEBFB5> <20><><EFBFBD><EFBFBD>
|
|||
|
local nCharNo = cGetCharNo( Handle ) -- ij<><C4B3><EFBFBD><EFBFBD> <20><>ȣ
|
|||
|
local TeamInfo = KSMemory["TEAM_LIST"] -- ŷ<><C5B7> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> : <20><> <20><><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
if nAdminLevel > 0
|
|||
|
then -- <20><EFBFBD><EEBFB5> <20><><EFBFBD><EFBFBD> Ȯ<><C8AE>
|
|||
|
if cAbstateRestTime( Handle, "StaGMHideMode" ) ~= nil
|
|||
|
then -- Hide <20><><EFBFBD><EFBFBD> Ȯ<><C8AE>
|
|||
|
return
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
if nCharNo == nil
|
|||
|
then -- ij<><C4B3><EFBFBD><EFBFBD> <20><>ȣ Ȯ<><C8AE>
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if TeamInfo == nil
|
|||
|
then -- <20><> <20><><EFBFBD><EFBFBD> Ȯ<><C8AE>
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
local bLinkto = false -- <20><> <20><>ġ<EFBFBD><C4A1> <20>̵<EFBFBD>
|
|||
|
local bNewPlayer = true -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7>̾<EFBFBD>
|
|||
|
local nPlayerNum = #KSMemory["PLAYER_LIST"] -- <20><><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7>̾<EFBFBD> <20><>
|
|||
|
local nPlayerIndex = nPlayerNum + 1 -- <20>÷<EFBFBD><C3B7>̾<EFBFBD> <20><><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD>
|
|||
|
local nTeamNo = KQ_TEAM_NO["KTN_DEFAULT"] -- <20><> <20><>ȣ
|
|||
|
|
|||
|
for i = 1, nPlayerNum
|
|||
|
do -- <20>÷<EFBFBD><C3B7>̾<EFBFBD> <20><><EFBFBD><EFBFBD> Ž<><C5BD>
|
|||
|
|
|||
|
if KSMemory["PLAYER_LIST"][i]["PREG_NO"] == nCharNo
|
|||
|
then -- <20>÷<EFBFBD><C3B7>̾<EFBFBD> <20><><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>÷<EFBFBD><C3B7>̾<EFBFBD>
|
|||
|
|
|||
|
bNewPlayer = false
|
|||
|
nPlayerIndex = i
|
|||
|
nTeamNo = KSMemory["PLAYER_LIST"][i]["PTEAM_NO"]
|
|||
|
|
|||
|
if KSMemory["PLAYER_LIST"][i]["PHND"] ~= Handle
|
|||
|
then -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD> <20>ٲ<EFBFBD> <20>÷<EFBFBD><C3B7>̾<EFBFBD>
|
|||
|
|
|||
|
cAssertLog( "Handle Change" )
|
|||
|
KSMemory["PLAYER_LIST"][i]["PHND"] = Handle
|
|||
|
|
|||
|
for j = 1, #TeamInfo[nTeamNo]
|
|||
|
do -- <20><> <20><><EFBFBD><EFBFBD> Ž<><C5BD>
|
|||
|
|
|||
|
if TeamInfo[nTeamNo]["TMEMBER_LIST"][j] == KSMemory["PLAYER_LIST"][i]["PHND"]
|
|||
|
then -- <20><> <20><><EFBFBD><EFBFBD> Ȯ<><C8AE>
|
|||
|
TeamInfo[nTeamNo]["TMEMBER_LIST"][j] = Handle
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
KSMemory["PLAYER_LIST"][i]["PPICK_TIME"] = nCurSec + KQ_PLAYER_PICK_DELAY -- <20><><EFBFBD><EFBFBD> ȹ<><C8B9> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD>
|
|||
|
|
|||
|
if KSMemory["PLAYER_LIST"][i]["PIS_MAP"] == false
|
|||
|
then -- ŷ<><C5B7> <20>ۿ<EFBFBD> <20>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD> Ȯ<><C8AE>
|
|||
|
bLinkto = true
|
|||
|
KSMemory["PLAYER_LIST"][i]["PIS_MAP"] = true
|
|||
|
end
|
|||
|
|
|||
|
break
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
if bNewPlayer == true and -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7>̾<EFBFBD>
|
|||
|
nPlayerNum >= KQ_MAX_PLAYER -- <20><><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7>̾<EFBFBD><CCBE><EFBFBD> <20><>
|
|||
|
then -- <20><><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7>̾<EFBFBD> <20>ִ<EFBFBD> <20><> Ȯ<><C8AE>
|
|||
|
cLinkTo( Handle, KQ_RETURN_MAP["KRM_INDEX"], KQ_RETURN_MAP["KRM_X"],KQ_RETURN_MAP["KRM_Y"] )
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
if bNewPlayer == true
|
|||
|
then -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7>̾<EFBFBD>
|
|||
|
KSMemory["PLAYER_LIST"][nPlayerIndex] = {}
|
|||
|
KSMemory["PLAYER_LIST"][nPlayerIndex]["PHND"] = Handle -- <20>ڵ<EFBFBD>
|
|||
|
KSMemory["PLAYER_LIST"][nPlayerIndex]["PREG_NO"] = nCharNo -- ij<><C4B3><EFBFBD><EFBFBD> <20><>ȣ
|
|||
|
KSMemory["PLAYER_LIST"][nPlayerIndex]["PNAME"] = cGetPlayerName( Handle ) -- ij<><C4B3><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
|||
|
KSMemory["PLAYER_LIST"][nPlayerIndex]["PTEAM_NO"] = KQ_TEAM_NO["KTN_DEFAULT"] -- <20><> <20><>ȣ
|
|||
|
KSMemory["PLAYER_LIST"][nPlayerIndex]["PIS_MAP"] = true -- <20>ʿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD>
|
|||
|
KSMemory["PLAYER_LIST"][nPlayerIndex]["PPICK_TIME"] = nCurSec + KQ_PLAYER_PICK_DELAY -- <20><><EFBFBD><EFBFBD> ȹ<><C8B9> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD>
|
|||
|
|
|||
|
-- <20><>Ƽ <20><><EFBFBD><EFBFBD>
|
|||
|
cPartyLeave( Handle )
|
|||
|
end
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cScoreInfo( Handle, #KQ_TEAM, TeamInfo[KQ_TEAM_NO["KTN_RED"]]["TSCORE"], TeamInfo[KQ_TEAM_NO["KTN_BLUE"]]["TSCORE"] )
|
|||
|
|
|||
|
|
|||
|
-- <20><> <20>α<EFBFBD><CEB1>ν<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̻<EFBFBD> <20>ɱ<EFBFBD>
|
|||
|
cSetAbstate( Handle, KQ_MAPLOGIN_ABSTATE["KMA_INDEX"], KQ_MAPLOGIN_ABSTATE["KMA_STR"], KQ_MAPLOGIN_ABSTATE["KMA_KEEPTIME"] )
|
|||
|
|
|||
|
|
|||
|
if nTeamNo == KQ_TEAM_NO["KTN_DEFAULT"]
|
|||
|
then -- <20><> <20><>ȣ Ȯ<><C8AE>
|
|||
|
|
|||
|
local RedMemberNum = #TeamInfo[KQ_TEAM_NO["KTN_RED"]]["TMEMBER_LIST"]
|
|||
|
local BlueMemberNum = #TeamInfo[KQ_TEAM_NO["KTN_BLUE"]]["TMEMBER_LIST"]
|
|||
|
|
|||
|
if RedMemberNum > 0 or BlueMemberNum > 0
|
|||
|
then -- <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ȯ<><C8AE>
|
|||
|
|
|||
|
if cPermileRate( 500 ) == 1
|
|||
|
then -- <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><> <20><>ȣ <20><><EFBFBD><EFBFBD>
|
|||
|
nTeamNo = KQ_TEAM_NO["KTN_RED"]
|
|||
|
|
|||
|
if RedMemberNum > BlueMemberNum
|
|||
|
then -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ο<EFBFBD><CEBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
nTeamNo = KQ_TEAM_NO["KTN_BLUE"]
|
|||
|
end
|
|||
|
else
|
|||
|
nTeamNo = KQ_TEAM_NO["KTN_BLUE"]
|
|||
|
|
|||
|
if BlueMemberNum > RedMemberNum
|
|||
|
then -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ο<EFBFBD><CEBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
nTeamNo = KQ_TEAM_NO["KTN_RED"]
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local nIndex = (#TeamInfo[nTeamNo]["TMEMBER_LIST"] + 1)
|
|||
|
|
|||
|
-- <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD>
|
|||
|
TeamInfo[nTeamNo]["TMEMBER_LIST"][nIndex] = Handle
|
|||
|
KSMemory["PLAYER_LIST"][nPlayerIndex]["PTEAM_NO"] = nTeamNo
|
|||
|
|
|||
|
-- <20><>Ƽ <20><><EFBFBD><EFBFBD>
|
|||
|
cPartyJoin( TeamInfo[nTeamNo]["TMEMBER_LIST"][1], Handle )
|
|||
|
|
|||
|
-- <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>
|
|||
|
cLinkTo( Handle, KSMemory["FIELD_NAME"], KQ_TEAM[nTeamNo]["KT_POINT_X"], KQ_TEAM[nTeamNo]["KT_POINT_Y"] )
|
|||
|
end
|
|||
|
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
if bLinkto == true and -- <20><> <20><>ġ<EFBFBD><C4A1> <20>̵<EFBFBD>
|
|||
|
KQ_STEP[KSMemory["STEP_NO"]]["KS_LINKTO_TEAM"] == true -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><> <20><>ġ<EFBFBD><C4A1> <20>̵<EFBFBD>
|
|||
|
then -- <20>÷<EFBFBD><C3B7>̾<EFBFBD> <20><> <20><>ġ<EFBFBD><C4A1> <20>̵<EFBFBD>
|
|||
|
cLinkTo( Handle, KSMemory["FIELD_NAME"], KQ_TEAM[nTeamNo]["KT_POINT_X"], KQ_TEAM[nTeamNo]["KT_POINT_Y"] )
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
for j = 1, #KQ_TEAM[nTeamNo]["KT_UNIFORM"]
|
|||
|
do -- <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cViewSlotEquip( Handle, KQ_TEAM[nTeamNo]["KT_UNIFORM"][j] )
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
if KQ_STEP[KSMemory["STEP_NO"]]["KS_TIMER"] == true
|
|||
|
then -- Ÿ<≯<EFBFBD> ǥ<><C7A5> <20><><EFBFBD><EFBFBD> Ȯ<><C8AE>
|
|||
|
local nTime = (KSMemory["STEP_NEXT_TIME"] - nCurSec)
|
|||
|
cTimer_Obj( Handle, nTime )
|
|||
|
end
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
------------------------------------------------------------------------------------------
|
|||
|
-- <20><EFBFBD><DEBC><EFBFBD> <20><><EFBFBD><EFBFBD> --
|
|||
|
------------------------------------------------------------------------------------------
|
|||
|
function KF_MESSAGE( KSMemory, nCurSec )
|
|||
|
cExecCheck "KF_MESSAGE"
|
|||
|
|
|||
|
if KSMemory == nil
|
|||
|
then -- ŷ<><C5B7> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> Ȯ<><C8AE>
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
if nCurSec == nil
|
|||
|
then -- <20>ð<EFBFBD> Ȯ<><C8AE>
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
if KQ_STEP[KSMemory["STEP_NO"]]["KS_MSG"] == nil
|
|||
|
then -- <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><DEBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ȯ<><C8AE>
|
|||
|
return true
|
|||
|
end
|
|||
|
|
|||
|
if KSMemory["MSG_NEXT_TIME"] > nCurSec
|
|||
|
then -- <20><EFBFBD><DEBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> Ȯ<><C8AE>
|
|||
|
return true
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
local MsgData = KQ_MSG[KQ_STEP[KSMemory["STEP_NO"]]["KS_MSG"]] -- <20><EFBFBD><DEBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
local MsgStep = KSMemory["MSG_NO"] -- <20><EFBFBD><DEBD><EFBFBD> <20>ܰ<EFBFBD>
|
|||
|
|
|||
|
if MsgData == nil
|
|||
|
then -- <20><EFBFBD><DEBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ȯ<><C8AE>
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
if MsgStep == nil
|
|||
|
then -- <20><EFBFBD><DEBD><EFBFBD> <20>ܰ<EFBFBD> Ȯ<><C8AE>
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
if #MsgData < MsgStep
|
|||
|
then --<2D><EFBFBD><DEBD><EFBFBD> <20>ܰ<EFBFBD> <20>ִ<EFBFBD>ġ Ȯ<><C8AE>
|
|||
|
return true
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
if MsgData[MsgStep]["KM_TYPE"] == KQ_MSG_TYPE["KMT_SHN"]
|
|||
|
then -- ScriptMessage
|
|||
|
cScriptMessage( KSMemory["FIELD_NAME"], MsgData[MsgStep]["KM_INDEX"], MsgData[MsgStep]["KM_VAL"] )
|
|||
|
elseif MsgData[MsgStep]["KM_TYPE"] == KQ_MSG_TYPE["KMT_TXT"]
|
|||
|
then -- Notice
|
|||
|
cNotice( KSMemory["FIELD_NAME"], MsgData[MsgStep]["KM_FILE_NAME"], MsgData[MsgStep]["KM_INDEX"] )
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
-- <20><EFBFBD><DEBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ܰ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
MsgStep = MsgStep + 1
|
|||
|
|
|||
|
if #MsgData < MsgStep
|
|||
|
then -- <20><><EFBFBD><EFBFBD> <20><EFBFBD><DEBD><EFBFBD> ó<><C3B3>
|
|||
|
KSMemory["MSG_NO"] = 1
|
|||
|
KSMemory["MSG_NEXT_TIME"] = KSMemory["STEP_NEXT_TIME"]
|
|||
|
else -- <20><><EFBFBD><EFBFBD> <20>ܰ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
KSMemory["MSG_NO"] = MsgStep
|
|||
|
KSMemory["MSG_NEXT_TIME"] = nCurSec + MsgData[MsgStep]["KM_TIME"]
|
|||
|
end
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
------------------------------------------------------------------------------------------
|
|||
|
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><>ƾ --
|
|||
|
------------------------------------------------------------------------------------------
|
|||
|
function KF_FLGAG_OBJECT( Handle, Field )
|
|||
|
cExecCheck "KF_FLGAG_OBJECT"
|
|||
|
|
|||
|
local KSMemory = InstanceField[Field] -- ŷ<><C5B7> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
|||
|
local nCurSec = cCurSec() -- <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD>(<28><>)
|
|||
|
|
|||
|
if KSMemory == nil
|
|||
|
then -- ŷ<><C5B7> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> Ȯ<><C8AE>
|
|||
|
return ReturnAI.END
|
|||
|
end
|
|||
|
|
|||
|
if KSMemory["FLAG_INFO"] == nil
|
|||
|
then -- ŷ<><C5B7> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ȯ<><C8AE>
|
|||
|
return ReturnAI.END
|
|||
|
end
|
|||
|
|
|||
|
if KSMemory["FLAG_INFO"]["FPHND"] ~= KQ_INVALID_HANDLE
|
|||
|
then -- ŷ<><C5B7> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
cNPCVanish( Handle )
|
|||
|
return ReturnAI.END
|
|||
|
end
|
|||
|
|
|||
|
if KSMemory["PLAYER_LIST"] == nil
|
|||
|
then -- ŷ<><C5B7> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> : <20>÷<EFBFBD><C3B7>̾<EFBFBD> <20><><EFBFBD><EFBFBD> Ȯ<><C8AE>
|
|||
|
return ReturnAI.END
|
|||
|
end
|
|||
|
|
|||
|
if nCurSec == nil
|
|||
|
then -- <20>ð<EFBFBD> <20><><EFBFBD><EFBFBD> Ȯ<><C8AE>
|
|||
|
return ReturnAI.END
|
|||
|
end
|
|||
|
|
|||
|
if nCurSec < KSMemory["FLAG_INFO"]["FPICK_TIME"]
|
|||
|
then -- <20>ð<EFBFBD> Ȯ<><C8AE>
|
|||
|
return ReturnAI.END
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
local nCheckDist = KQ_FLAG["KF_CHECK_DIST"] -- <20><><EFBFBD><EFBFBD> üũ <20>Ÿ<EFBFBD>(<28>⺻ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20>Ÿ<EFBFBD>)
|
|||
|
if KSMemory["FLAG_INFO"]["FINDEX"] == KQ_FLAG_POINT["KFP_INDEX"]
|
|||
|
then -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ȯ<><C8AE> ( <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ )
|
|||
|
nCheckDist = KQ_FLAG_POINT["KFP_CHECK_DIST"]
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD> üũ <20>Ÿ<EFBFBD> <20>ȿ<EFBFBD> <20>ִ<EFBFBD> <20>÷<EFBFBD><C3B7>̾<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
local PlayerList = { cNearObjectList( Handle, nCheckDist, ObjectType["Player"] ) }
|
|||
|
|
|||
|
for i = 1, #PlayerList
|
|||
|
do
|
|||
|
for j = 1, #KSMemory["PLAYER_LIST"]
|
|||
|
do
|
|||
|
if KSMemory["PLAYER_LIST"][j]["PHND"] == PlayerList[i] and -- <20>ڵ<EFBFBD>
|
|||
|
KSMemory["PLAYER_LIST"][j]["PTEAM_NO"] ~= KQ_TEAM_NO["KTN_DEFAULT"] and -- <20><> <20><>ȣ
|
|||
|
KSMemory["PLAYER_LIST"][j]["PPICK_TIME"] <= nCurSec -- <20><><EFBFBD><EFBFBD> ȹ<>氡<EFBFBD><E6B0A1> <20>ð<EFBFBD>
|
|||
|
then -- <20><><EFBFBD><EFBFBD> ȹ<><C8B9> <20><><EFBFBD><EFBFBD> <20>ʰ<EFBFBD> Ȯ<><C8AE>
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
KSMemory["FLAG_INFO"]["FHND"] = KQ_INVALID_HANDLE -- <20><><EFBFBD><EFBFBD> <20>ڵ<EFBFBD>
|
|||
|
KSMemory["FLAG_INFO"]["FPHND"] = PlayerList[i] -- <20><><EFBFBD><EFBFBD> ȹ<><C8B9> <20>÷<EFBFBD><C3B7>̾<EFBFBD> <20>ڵ<EFBFBD>
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̻<EFBFBD> <20>ɱ<EFBFBD>
|
|||
|
for k = 1, #KQ_FLAG_ABSTATE
|
|||
|
do
|
|||
|
cSetAbstate( KSMemory["FLAG_INFO"]["FPHND"], KQ_FLAG_ABSTATE[k]["KFA_INDEX"], KQ_FLAG_ABSTATE[k]["KFA_STR"], KQ_FLAG_ABSTATE[k]["KFA_KEEPTIME"] )
|
|||
|
end
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD> ȹ<><C8B9> <20>˸<EFBFBD>
|
|||
|
cScriptMessage( KSMemory["FIELD_NAME"], KQ_FLAG_SCRIPT_MSG["KFSM_HAVE"], KSMemory["PLAYER_LIST"][j]["PNAME"] )
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
|||
|
local nTeamNo = KSMemory["PLAYER_LIST"][j]["PTEAM_NO"]
|
|||
|
|
|||
|
if nTeamNo ~= nil
|
|||
|
then -- <20><> <20><>ȣ Ȯ<><C8AE>
|
|||
|
if KSMemory["TEAM_LIST"][nTeamNo]["TPOINT_HND"] == KQ_INVALID_HANDLE
|
|||
|
then -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20>ڵ<EFBFBD> Ȯ<><C8AE>
|
|||
|
KSMemory["TEAM_LIST"][nTeamNo]["TPOINT_HND"] = cMobRegen_XY( Field, KQ_TEAM[nTeamNo]["KT_POINT_INDEX"], KQ_TEAM[nTeamNo]["KT_POINT_X"], KQ_TEAM[nTeamNo]["KT_POINT_Y"], 0 )
|
|||
|
end
|
|||
|
|
|||
|
for k = 1, #KSMemory["TEAM_LIST"][nTeamNo]["TMEMBER_LIST"]
|
|||
|
do
|
|||
|
cPlaySound( KSMemory["TEAM_LIST"][nTeamNo]["TMEMBER_LIST"][k], KQ_SOUND["KS_GETFLAG"] );
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
cNPCVanish( Handle )
|
|||
|
return ReturnAI.END
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
return ReturnAI.END
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
------------------------------------------------------------------------------------------
|
|||
|
-- <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD> --
|
|||
|
------------------------------------------------------------------------------------------
|
|||
|
function Main( Field )
|
|||
|
cExecCheck "Main"
|
|||
|
|
|||
|
local nCurSec = cCurSec() -- <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD>(<28><>)
|
|||
|
local KSMemory = InstanceField[Field] -- ŷ<><C5B7> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
if KSMemory == nil
|
|||
|
then -- ŷ<><C5B7> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> Ȯ<><C8AE>
|
|||
|
|
|||
|
-- ŷ<><C5B7> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ
|
|||
|
InstanceField[Field] = {}
|
|||
|
KSMemory = InstanceField[Field]
|
|||
|
|
|||
|
KF_INIT( Field, KSMemory, nCurSec )
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
if KSMemory["STEP_NO"] == nil
|
|||
|
then -- ó<><C3B3> <20>ܰ<EFBFBD> Ȯ<><C8AE>
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if KQ_STEP[KSMemory["STEP_NO"]]["KS_FUNC"]( KSMemory, nCurSec ) == false
|
|||
|
then -- <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
cLinkToAll( KSMemory["FIELD_NAME"], KQ_RETURN_MAP["KRM_INDEX"], KQ_RETURN_MAP["KRM_X"], KQ_RETURN_MAP["KRM_Y"] )
|
|||
|
cEndOfKingdomQuest( KSMemory["FIELD_NAME"] )
|
|||
|
end
|
|||
|
|
|||
|
end
|