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.
1100 lines
31 KiB
1100 lines
31 KiB
------------------------------------------------------------------------------------------
|
|
-- 팀 나누기 대기 --
|
|
------------------------------------------------------------------------------------------
|
|
function SF_DIVIDE_TEAM_WAIT( KSMemory, nCurSec )
|
|
cExecCheck "SF_DIVIDE_TEAM_WAIT"
|
|
|
|
if KSMemory == nil
|
|
then -- 킹덤 퀘스트 버퍼 확인
|
|
return false
|
|
end
|
|
|
|
if nCurSec == nil
|
|
then -- 시간 확인
|
|
return false
|
|
end
|
|
|
|
|
|
if #KSMemory["PLAYER_LIST"] >= KQ_MAX_PLAYER
|
|
then -- 게임 참여 인원 확인
|
|
KSMemory["STEP_NEXT_TIME"] = nCurSec -- 다음 단계(팀 나누기)로 진행하기 위해 시간 설정
|
|
end
|
|
|
|
|
|
if KSMemory["STEP_NEXT_TIME"] <= nCurSec
|
|
then -- 현재 단계 진행 시간 확인
|
|
|
|
for i = 1, #KSMemory["PLAYER_LIST"]
|
|
do -- 모든 플레이어 파티 해제
|
|
cPartyLeave( KSMemory["PLAYER_LIST"][i]["PHND"] )
|
|
end
|
|
|
|
|
|
if #KQ_STEP >= (KSMemory["STEP_NO"] + 1)
|
|
then -- 다음 단계 확인
|
|
|
|
-- 단계 설정
|
|
KSMemory["STEP_NO"] = KSMemory["STEP_NO"] + 1 -- 다음 단계
|
|
KSMemory["STEP_NEXT_TIME"] = nCurSec + KQ_STEP[KSMemory["STEP_NO"]]["KS_NEXT_TIME"] -- 다음 단계 진행 시간
|
|
|
|
|
|
local MsgIndex = KQ_STEP[KSMemory["STEP_NO"]]["KS_MSG"] -- 메세지 정보
|
|
|
|
if MsgIndex ~= nil
|
|
then -- 메세지 인덱스 확인
|
|
|
|
local MsgData = KQ_MSG[MsgIndex] -- 메세지 정보
|
|
|
|
if MsgData ~= nil
|
|
then -- 메세지 정보 학인
|
|
KSMemory["MSG_NO"] = 1 -- 메세지 단계
|
|
KSMemory["MSG_NEXT_TIME"] = nCurSec + MsgData[1]["KM_TIME"] -- 메세지 출력 시간
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
-- 메시지 출력
|
|
KF_MESSAGE( KSMemory, nCurSec )
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
|
|
------------------------------------------------------------------------------------------
|
|
-- 팀 나누기 --
|
|
------------------------------------------------------------------------------------------
|
|
function SF_DIVIDE_TEAM( KSMemory, nCurSec )
|
|
cExecCheck "SF_DIVIDE_TEAM"
|
|
|
|
if KSMemory == nil
|
|
then -- 킹덤 퀘스트 버퍼 확인
|
|
return false
|
|
end
|
|
|
|
if nCurSec == nil
|
|
then -- 시간 확인
|
|
return false
|
|
end
|
|
|
|
|
|
if KSMemory["STEP_NEXT_TIME"] <= nCurSec
|
|
then -- 현재 단계 진행 시간 확인
|
|
|
|
local nConnectNum = #KSMemory["PLAYER_LIST"] -- 킹덤 퀘스트 맵에 접속해있는 플레이어 수
|
|
|
|
-- 게임 참가 플레이어 확인
|
|
for i = 1, nConnectNum
|
|
do
|
|
if cIsInMap( KSMemory["PLAYER_LIST"][i]["PHND"], KSMemory["FIELD_NAME"] ) == nil
|
|
then -- 킹덤 퀘스트 맵에 접속해있는지 확인
|
|
nConnectNum = nConnectNum - 1
|
|
KSMemory["PLAYER_LIST"][i]["PIS_MAP"] = false
|
|
end
|
|
end
|
|
|
|
if nConnectNum <= 1
|
|
then -- 킹덤 퀘스트맵에 접속해있는 플레이어 수 확인
|
|
return false
|
|
end
|
|
|
|
|
|
-- 문 닫기
|
|
for i = 1, #KSMemory["DOOR_LIST"]
|
|
do
|
|
cDoorAction( KSMemory["DOOR_LIST"][i], KQ_DOOR[i]["KD_BLOCK"], "close" )
|
|
end
|
|
|
|
|
|
for i = 1, #KQ_NPC
|
|
do -- NPC 소환
|
|
cNPCRegen( KSMemory["FIELD_NAME"], KQ_NPC[i] )
|
|
end
|
|
|
|
|
|
local TeamInfo = KSMemory["TEAM_LIST"] -- 팀 정보
|
|
local nTeamNo = KQ_TEAM_NO["KTN_DEFAULT"] -- 팀 번호
|
|
local nTeamMemberMaxNum = nConnectNum / 2 -- 팀 멤버 최대맴수
|
|
|
|
if TeamInfo == nil
|
|
then -- 팀 정보 확인
|
|
return false
|
|
end
|
|
|
|
-- 게임 참가 플레이어 팀 나누기
|
|
for i = 1, #KSMemory["PLAYER_LIST"]
|
|
do
|
|
if KSMemory["PLAYER_LIST"][i]["PIS_MAP"] == true
|
|
then -- 킹덤 퀘스트맵에 접속해있는 플레이어
|
|
|
|
-- 50% 확률로 팀 설정
|
|
if cPermileRate( 500 ) == 1
|
|
then -- 레드 팀
|
|
|
|
nTeamNo = KQ_TEAM_NO["KTN_RED"]
|
|
|
|
if #TeamInfo[KQ_TEAM_NO["KTN_RED"]]["TMEMBER_LIST"] >= nTeamMemberMaxNum
|
|
then -- 레드 팀 멤버 수 확인
|
|
if #TeamInfo[KQ_TEAM_NO["KTN_BLUE"]]["TMEMBER_LIST"] < nTeamMemberMaxNum
|
|
then -- 블루 팀 멤버 수 확인
|
|
nTeamNo = KQ_TEAM_NO["KTN_BLUE"]
|
|
end
|
|
end
|
|
else -- 블루 팀
|
|
|
|
nTeamNo = KQ_TEAM_NO["KTN_BLUE"]
|
|
|
|
if #TeamInfo[KQ_TEAM_NO["KTN_BLUE"]]["TMEMBER_LIST"] >= nTeamMemberMaxNum
|
|
then -- 블루 팀 멤버 수 확인
|
|
if #TeamInfo[KQ_TEAM_NO["KTN_RED"]]["TMEMBER_LIST"] < nTeamMemberMaxNum
|
|
then -- 레드 팀 멤버 수 확인
|
|
nTeamNo = KQ_TEAM_NO["KTN_RED"]
|
|
end
|
|
end
|
|
end
|
|
|
|
local nIndex = (#TeamInfo[nTeamNo]["TMEMBER_LIST"] + 1) -- 팀 멤버 리스트 인덱스
|
|
|
|
TeamInfo[nTeamNo]["TMEMBER_LIST"][nIndex] = KSMemory["PLAYER_LIST"][i]["PHND"] -- 팀 멤버 리스트
|
|
KSMemory["PLAYER_LIST"][i]["PTEAM_NO"] = nTeamNo -- 플레이어 팀 번호
|
|
|
|
if nIndex > 1
|
|
then -- 파티 참가
|
|
cPartyJoin( TeamInfo[nTeamNo]["TMEMBER_LIST"][1], TeamInfo[nTeamNo]["TMEMBER_LIST"][nIndex] )
|
|
end
|
|
|
|
-- for j = 1, #KQ_TEAM[nTeamNo]["KT_UNIFORM"]
|
|
-- do -- 유니폼 설정
|
|
-- cViewSlotEquip( TeamInfo[nTeamNo]["TMEMBER_LIST"][nIndex], KQ_TEAM[nTeamNo]["KT_UNIFORM"][j] )
|
|
-- end
|
|
end
|
|
|
|
end
|
|
|
|
|
|
-- 게임 참가자 팀 위치로 이동
|
|
for i = 1, #KSMemory["PLAYER_LIST"]
|
|
do
|
|
nTeamNo = KSMemory["PLAYER_LIST"][i]["PTEAM_NO"]
|
|
|
|
if nTeamNo ~= KQ_TEAM_NO["KTN_DEFAULT"]
|
|
then -- 팀 번호 확인
|
|
cLinkTo( KSMemory["PLAYER_LIST"][i]["PHND"], KSMemory["FIELD_NAME"], KQ_TEAM[nTeamNo]["KT_POINT_X"], KQ_TEAM[nTeamNo]["KT_POINT_Y"] )
|
|
end
|
|
end
|
|
|
|
|
|
if #KQ_STEP >= (KSMemory["STEP_NO"] + 1)
|
|
then -- 다음 단계 확인
|
|
|
|
-- 단계 설정
|
|
KSMemory["STEP_NO"] = KSMemory["STEP_NO"] + 1 -- 다음 단계
|
|
KSMemory["STEP_NEXT_TIME"] = nCurSec + KQ_STEP[KSMemory["STEP_NO"]]["KS_NEXT_TIME"] -- 다음 단계 진행 시간
|
|
|
|
|
|
local MsgIndex = KQ_STEP[KSMemory["STEP_NO"]]["KS_MSG"] -- 메세지 정보
|
|
|
|
if MsgIndex ~= nil
|
|
then -- 메세지 인덱스 확인
|
|
|
|
local MsgData = KQ_MSG[MsgIndex] -- 메세지 정보
|
|
|
|
if MsgData ~= nil
|
|
then -- 메세지 정보 학인
|
|
KSMemory["MSG_NO"] = 1 -- 메세지 단계
|
|
KSMemory["MSG_NEXT_TIME"] = nCurSec + MsgData[1]["KM_TIME"] -- 메세지 출력 시간
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
-- 메시지 출력
|
|
KF_MESSAGE( KSMemory, nCurSec )
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
|
|
------------------------------------------------------------------------------------------
|
|
-- 시작 대기 --
|
|
------------------------------------------------------------------------------------------
|
|
function SF_START_WAIT( KSMemory, nCurSec )
|
|
cExecCheck "SF_START_WAIT"
|
|
|
|
if KSMemory == nil
|
|
then -- 킹덤 퀘스트 버퍼 확인
|
|
return false
|
|
end
|
|
|
|
if nCurSec == nil
|
|
then -- 시간 확인
|
|
return false
|
|
end
|
|
|
|
|
|
if KSMemory["STEP_NEXT_TIME"] <= nCurSec
|
|
then -- 현재 단계 진행 시간 확인
|
|
|
|
if KSMemory["FLAG_INFO"] == nil
|
|
then -- 깃발 정보 확인
|
|
return false
|
|
end
|
|
|
|
|
|
cStartMsg_AllInMap( KSMemory["FIELD_NAME"] ) -- 킹퀘 시작 카운트 다운
|
|
|
|
|
|
-- 아이템 몬스터 소환
|
|
for i = 1, #KQ_ITEM_MOB
|
|
do
|
|
KSMemory["MOB_LIST"][i] = {}
|
|
KSMemory["MOB_LIST"][i]["MHND"] = cMobRegen_XY( KSMemory["FIELD_NAME"], KQ_ITEM_MOB[i]["KIM_INDEX"], KQ_ITEM_MOB[i]["KIM_X"], KQ_ITEM_MOB[i]["KIM_Y"], KQ_ITEM_MOB[i]["KIM_DIR"] )
|
|
KSMemory["MOB_LIST"][i]["MREGEN_TIME"] = 0
|
|
end
|
|
|
|
|
|
local nNextStep = KSMemory["STEP_NO"] + 1 -- 다음 단계
|
|
|
|
|
|
-- 깃발 소환
|
|
KSMemory["FLAG_INFO"]["FHND"] = cMobRegen_XY( KSMemory["FIELD_NAME"], KQ_FLAG_POINT["KFP_INDEX"], KQ_FLAG_POINT["KFP_X"], KQ_FLAG_POINT["KFP_Y"], KQ_FLAG_POINT["KFP_DIR"] )
|
|
if KSMemory["FLAG_INFO"]["FHND"] == nil then
|
|
nNextStep = 10 -- SF_END_WAIT
|
|
else
|
|
|
|
KSMemory["FLAG_INFO"]["FINDEX"] = KQ_FLAG_POINT["KFP_INDEX"]
|
|
|
|
-- 깃발 루아 스크립트 설정
|
|
cSetAIScript( KQ_SCRIPT_NAME, KSMemory["FLAG_INFO"]["FHND"] )
|
|
cAIScriptFunc( KSMemory["FLAG_INFO"]["FHND"], "Entrance", "KF_FLGAG_OBJECT" )
|
|
end
|
|
|
|
if #KQ_STEP >= nNextStep
|
|
then -- 다음 단계 확인
|
|
|
|
-- 단계 설정
|
|
KSMemory["STEP_NO"] = nNextStep -- 다음 단계
|
|
KSMemory["STEP_NEXT_TIME"] = nCurSec + KQ_STEP[KSMemory["STEP_NO"]]["KS_NEXT_TIME"] -- 다음 단계 진행 시간
|
|
|
|
|
|
local MsgIndex = KQ_STEP[KSMemory["STEP_NO"]]["KS_MSG"] -- 메세지 정보
|
|
|
|
if MsgIndex ~= nil
|
|
then -- 메세지 인덱스 확인
|
|
|
|
local MsgData = KQ_MSG[MsgIndex] -- 메세지 정보
|
|
|
|
if MsgData ~= nil
|
|
then -- 메세지 정보 학인
|
|
KSMemory["MSG_NO"] = 1 -- 메세지 단계
|
|
KSMemory["MSG_NEXT_TIME"] = nCurSec + MsgData[1]["KM_TIME"] -- 메세지 출력 시간
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
-- 메시지 출력
|
|
KF_MESSAGE( KSMemory, nCurSec )
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
|
|
------------------------------------------------------------------------------------------
|
|
-- 시작 --
|
|
------------------------------------------------------------------------------------------
|
|
function SF_START( KSMemory, nCurSec )
|
|
cExecCheck "SF_START"
|
|
|
|
if KSMemory == nil
|
|
then -- 킹덤 퀘스트 버퍼 확인
|
|
return false
|
|
end
|
|
|
|
if nCurSec == nil
|
|
then -- 시간 확인
|
|
return false
|
|
end
|
|
|
|
|
|
if KSMemory["STEP_NEXT_TIME"] <= nCurSec
|
|
then -- 현재 단계 진행 시간 확인
|
|
|
|
-- 문 열기
|
|
for i = 1, #KSMemory["DOOR_LIST"]
|
|
do
|
|
cDoorAction( KSMemory["DOOR_LIST"][i], KQ_DOOR[i]["KD_BLOCK"], "open" )
|
|
end
|
|
|
|
|
|
if #KQ_STEP >= (KSMemory["STEP_NO"] + 1)
|
|
then -- 다음 단계 확인
|
|
|
|
-- 단계 설정
|
|
KSMemory["STEP_NO"] = KSMemory["STEP_NO"] + 1 -- 다음 단계
|
|
KSMemory["STEP_NEXT_TIME"] = nCurSec + KQ_STEP[KSMemory["STEP_NO"]]["KS_NEXT_TIME"] -- 다음 단계 진행 시간
|
|
|
|
|
|
-- 타이머 표시
|
|
cTimer( KSMemory["FIELD_NAME"], KQ_STEP[KSMemory["STEP_NO"]]["KS_NEXT_TIME"] )
|
|
|
|
|
|
local MsgIndex = KQ_STEP[KSMemory["STEP_NO"]]["KS_MSG"] -- 메세지 정보
|
|
|
|
if MsgIndex ~= nil
|
|
then -- 메세지 인덱스 확인
|
|
|
|
local MsgData = KQ_MSG[MsgIndex] -- 메세지 정보
|
|
|
|
if MsgData ~= nil
|
|
then -- 메세지 정보 학인
|
|
KSMemory["MSG_NO"] = 1 -- 메세지 단계
|
|
KSMemory["MSG_NEXT_TIME"] = nCurSec + MsgData[1]["KM_TIME"] -- 메세지 출력 시간
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
-- 메시지 출력
|
|
KF_MESSAGE( KSMemory, nCurSec )
|
|
|
|
end
|
|
|
|
|
|
------------------------------------------------------------------------------------------
|
|
-- 진행 --
|
|
------------------------------------------------------------------------------------------
|
|
function SF_ROUTINE( KSMemory, nCurSec )
|
|
cExecCheck "SF_ROUTINE"
|
|
|
|
if KSMemory == nil
|
|
then -- 킹덤 퀘스트 버퍼 확인
|
|
return false
|
|
end
|
|
|
|
if nCurSec == nil
|
|
then -- 시간 확인
|
|
return false
|
|
end
|
|
|
|
|
|
local TeamInfo = KSMemory["TEAM_LIST"]
|
|
local FlagInfo = KSMemory["FLAG_INFO"]
|
|
|
|
if TeamInfo == nil
|
|
then
|
|
return false
|
|
end
|
|
|
|
if FlagInfo == nil
|
|
then
|
|
return false
|
|
end
|
|
|
|
-- 깃발 들고 있는 플레이어 확인
|
|
FLAG_PLAYER_CHECK( KSMemory, nCurSec )
|
|
|
|
|
|
if FlagInfo["FREGEN_TIME"] ~= 0
|
|
then -- 깃발 포인트 리젠 대기 중
|
|
|
|
if nCurSec >= FlagInfo["FREGEN_TIME"]
|
|
then -- 깃발 리젠 시간 확인
|
|
|
|
-- 깃발 소환
|
|
FlagInfo["FHND"] = cMobRegen_XY( KSMemory["FIELD_NAME"], KQ_FLAG_POINT["KFP_INDEX"], KQ_FLAG_POINT["KFP_X"], KQ_FLAG_POINT["KFP_Y"], KQ_FLAG_POINT["KFP_DIR"] )
|
|
|
|
if FlagInfo["FHND"] == nil then
|
|
FlagInfo["FHND"] = KQ_INVALID_HANDLE
|
|
else
|
|
-- 깃발 루아 스크립트 설정
|
|
cSetAIScript( KQ_SCRIPT_NAME, FlagInfo["FHND"] )
|
|
cAIScriptFunc( FlagInfo["FHND"], "Entrance", "KF_FLGAG_OBJECT" )
|
|
|
|
-- 깃발 정보 초기화
|
|
FlagInfo["FPHND"] = KQ_INVALID_HANDLE
|
|
FlagInfo["FINDEX"] = KQ_FLAG_POINT["KFP_INDEX"]
|
|
FlagInfo["FPICK_TIME"] = 0
|
|
FlagInfo["FREGEN_TIME"] = 0
|
|
FlagInfo["FREGEN_X"] = KQ_FLAG_POINT["KFP_X"]
|
|
FlagInfo["FREGEN_Y"] = KQ_FLAG_POINT["KFP_Y"]
|
|
|
|
-- 깃발 소환 알림
|
|
cScriptMessage( KSMemory["FIELD_NAME"], KQ_FLAG_SCRIPT_MSG["KFSM_REGEN02"] )
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
if FlagInfo["FHND"] == KQ_INVALID_HANDLE and -- 깃발 핸들
|
|
FlagInfo["FPHND"] == KQ_INVALID_HANDLE and -- 깃발 획득 플레이어 핸들
|
|
FlagInfo["FREGEN_TIME"] == 0 -- 깃발 리젠 타임
|
|
then -- 킹덤 퀘스트 맵에 깃발이 존재하지는 확인
|
|
FlagInfo["FREGEN_TIME"] = KQ_FLAG_POINT["KFP_REGEN_TIME"] + nCurSec
|
|
end
|
|
|
|
|
|
if KSMemory["WORK_TICK"] <= nCurSec
|
|
then -- 일정 시간마다 처리되는 작업(1초에 한번)
|
|
|
|
if FlagInfo["FHND"] ~= KQ_INVALID_HANDLE or -- 깃발
|
|
FlagInfo["FPHND"] ~= KQ_INVALID_HANDLE -- 깃발 획득 플레이어
|
|
then
|
|
local MapMarkTable = {}
|
|
local mmData = {}
|
|
|
|
mmData["Group"] = 0
|
|
mmData["x"] = FlagInfo["FREGEN_X"]
|
|
mmData["y"] = FlagInfo["FREGEN_Y"]
|
|
mmData["KeepTime"] = 1000
|
|
mmData["IconIndex"] = KQ_FLAG_ICON
|
|
|
|
MapMarkTable[mmData["Group"]] = mmData
|
|
|
|
-- 깃발 마킹 정보 알림
|
|
cMapMark( KSMemory["FIELD_NAME"], MapMarkTable )
|
|
end
|
|
|
|
-- 게임 참가 플레이어 킹덤 퀘스트맵 접속 여부 확인
|
|
local nLogOut_RedTeam = 0 -- 레드 팀 접속하지 않은 멤버 수
|
|
local nLogOut_BlueTeam = 0 -- 블루 팀 접속하지 않은 멤버 수
|
|
|
|
for i = 1, #KSMemory["PLAYER_LIST"]
|
|
do
|
|
if KSMemory["PLAYER_LIST"] [i]["PIS_MAP"] == true
|
|
then -- 킹덤 퀘스트맵에 접속해있는 플레이어
|
|
if cIsInMap( KSMemory["PLAYER_LIST"][i]["PHND"], KSMemory["FIELD_NAME"] ) == nil
|
|
then -- 킹덤 퀘스트맵에 접속해있는지 확인
|
|
KSMemory["PLAYER_LIST"][i]["PIS_MAP"] = false
|
|
end
|
|
end
|
|
|
|
if KSMemory["PLAYER_LIST"][i]["PIS_MAP"] == false
|
|
then -- 킹덤 퀘스트맵에 접속하지 않은 팀원
|
|
if KSMemory["PLAYER_LIST"][i]["PTEAM_NO"] == KQ_TEAM_NO["KTN_RED"]
|
|
then
|
|
nLogOut_RedTeam = nLogOut_RedTeam + 1
|
|
elseif KSMemory["PLAYER_LIST"][i]["PTEAM_NO"] == KQ_TEAM_NO["KTN_BLUE"]
|
|
then
|
|
nLogOut_BlueTeam = nLogOut_BlueTeam + 1
|
|
end
|
|
end
|
|
end
|
|
|
|
if nLogOut_RedTeam >= #TeamInfo[KQ_TEAM_NO["KTN_RED"]]["TMEMBER_LIST"] or -- 레드 팀
|
|
nLogOut_BlueTeam >= #TeamInfo[KQ_TEAM_NO["KTN_BLUE"]]["TMEMBER_LIST"] -- 블루 팀
|
|
then -- 킹덤 퀘스트맵에 접속하지 않은 멤버 수 확인
|
|
TeamInfo[KQ_TEAM_NO["KTN_RED"]]["TSCORE"] = 0
|
|
TeamInfo[KQ_TEAM_NO["KTN_BLUE"]]["TSCORE"] = 0
|
|
|
|
KSMemory["GAME_TYPE"] = KQ_GAME_TYEP["KGT_EXTRATIME"]
|
|
KSMemory["STEP_NEXT_TIME"] = 0
|
|
end
|
|
|
|
|
|
-- 몬스터 확인( 아이템 몬스터 )
|
|
for i = 1, #KSMemory["MOB_LIST"]
|
|
do
|
|
if cIsObjectDead( KSMemory["MOB_LIST"][i]["MHND"] ) ~= nil
|
|
then -- 몬스터 죽었는지 확인
|
|
|
|
if KSMemory["MOB_LIST"][i]["MREGEN_TIME"] == 0
|
|
then -- 리젠 시간 설정
|
|
KSMemory["MOB_LIST"][i]["MREGEN_TIME"] = KQ_ITEM_MOB[i]["KIM_REGEN_TICK"] + nCurSec
|
|
else -- 리젠 시간 확인
|
|
if KSMemory["MOB_LIST"][i]["MREGEN_TIME"] <= nCurSec
|
|
then -- 몬스터 리젠
|
|
KSMemory["MOB_LIST"][i]["KSMM_HND"] = cMobRegen_XY( KSMemory["FIELD_NAME"], KQ_ITEM_MOB[i]["KIM_INDEX"], KQ_ITEM_MOB[i]["KIM_X"],
|
|
KQ_ITEM_MOB[i]["KIM_Y"], KQ_ITEM_MOB[i]["KIM_DIR"] )
|
|
KSMemory["MOB_LIST"][i]["MREGEN_TIME"] = 0
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
-- 다음 시간 설정
|
|
KSMemory["WORK_TICK"] = nCurSec + 1
|
|
|
|
end
|
|
|
|
|
|
if KSMemory["STEP_NEXT_TIME"] <= nCurSec
|
|
then -- 현재 단계 진행 시간 확인
|
|
|
|
if FlagInfo["FPHND"] ~= KQ_INVALID_HANDLE
|
|
then -- 깃발 상태이상 해제
|
|
for k = 1, #KQ_FLAG_ABSTATE
|
|
do
|
|
cResetAbstate( FlagInfo["FPHND"], KQ_FLAG_ABSTATE[k]["KFA_INDEX"] )
|
|
end
|
|
end
|
|
|
|
if FlagInfo["FHND"] ~= KQ_INVALID_HANDLE
|
|
then -- 깃발 오브젝트 삭제
|
|
cNPCVanish( FlagInfo["FHND"] )
|
|
end
|
|
|
|
-- 깃발 정보 초기화
|
|
FlagInfo["FHND"] = KQ_INVALID_HANDLE
|
|
FlagInfo["FPHND"] = KQ_INVALID_HANDLE
|
|
FlagInfo["FINDEX"] = ""
|
|
FlagInfo["FPICK_TIME"] = 0
|
|
FlagInfo["FREGEN_TIME"] = 0
|
|
FlagInfo["FREGEN_X"] = KQ_FLAG_POINT["KFP_X"]
|
|
FlagInfo["FREGEN_Y"] = KQ_FLAG_POINT["KFP_Y"]
|
|
|
|
|
|
-- 몬스터 삭제( 아이템 몬스터 )
|
|
for i = 1, #KSMemory["MOB_LIST"]
|
|
do
|
|
cNPCVanish( KSMemory["MOB_LIST"][i]["MHND"] )
|
|
KSMemory["MOB_LIST"][i] = nil
|
|
end
|
|
|
|
|
|
-- 팀별 득점 포인트 삭제
|
|
for i = 1, #TeamInfo
|
|
do
|
|
if TeamInfo[i]["TPOINT_HND"] ~= KQ_INVALID_HANDLE
|
|
then -- 득점 포인트 핸들 확인
|
|
cNPCVanish( TeamInfo[i]["TPOINT_HND"] )
|
|
TeamInfo[i]["TPOINT_HND"] = KQ_INVALID_HANDLE
|
|
end
|
|
end
|
|
|
|
|
|
cTimer( KSMemory["FIELD_NAME"], 0 )
|
|
|
|
|
|
local nNextStep = 10 -- SF_END_WAIT
|
|
if KSMemory["GAME_TYPE"] == KQ_GAME_TYEP["KGT_NORMAL"] and -- 일반 경기
|
|
TeamInfo[KQ_TEAM_NO["KTN_RED"]]["TSCORE"] == TeamInfo[KQ_TEAM_NO["KTN_BLUE"]]["TSCORE"] -- 무승부
|
|
then
|
|
nNextStep = KSMemory["STEP_NO"] + 1 -- SF_EXTRATIME_INIT
|
|
else
|
|
for i = 1, #KSMemory["PLAYER_LIST"]
|
|
do
|
|
cSetAbstate( KSMemory["PLAYER_LIST"][i]["PHND"], KQ_STUN_ABSTATE["KSA_INDEX"], KQ_STUN_ABSTATE["KSA_STR"], KQ_STUN_ABSTATE["KSA_KEEPTIME"] )
|
|
end
|
|
end
|
|
|
|
|
|
if KSMemory["STEP_NEXT_TIME"] ~= 0
|
|
then
|
|
cScriptMessage( KSMemory["FIELD_NAME"], KQ_MSG["KM_GAME_TIME"][1]["KM_INDEX"] )
|
|
end
|
|
|
|
|
|
if #KQ_STEP >= nNextStep
|
|
then -- 다음 단계 확인
|
|
|
|
-- 단계 설정
|
|
KSMemory["STEP_NO"] = nNextStep -- 다음 단계
|
|
KSMemory["STEP_NEXT_TIME"] = nCurSec + KQ_STEP[KSMemory["STEP_NO"]]["KS_NEXT_TIME"] -- 다음 단계 진행 시간
|
|
|
|
|
|
local MsgIndex = KQ_STEP[KSMemory["STEP_NO"]]["KS_MSG"] -- 메세지 정보
|
|
|
|
if MsgIndex ~= nil
|
|
then -- 메세지 인덱스 확인
|
|
|
|
local MsgData = KQ_MSG[MsgIndex] -- 메세지 정보
|
|
|
|
if MsgData ~= nil
|
|
then -- 메세지 정보 학인
|
|
KSMemory["MSG_NO"] = 1 -- 메세지 단계
|
|
KSMemory["MSG_NEXT_TIME"] = nCurSec + MsgData[1]["KM_TIME"] -- 메세지 출력 시간
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
-- 메시지 출력
|
|
KF_MESSAGE( KSMemory, nCurSec )
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
------------------------------------------------------------------------------------------
|
|
-- 연장전 진행을 위한 초기화 --
|
|
------------------------------------------------------------------------------------------
|
|
function SF_EXTRATIME_INIT( KSMemory, nCurSec )
|
|
cExecCheck "SF_EXTRATIME_INIT"
|
|
|
|
if KSMemory == nil
|
|
then -- 킹덤 퀘스트 버퍼 확인
|
|
return false
|
|
end
|
|
|
|
if nCurSec == nil
|
|
then -- 시간 확인
|
|
return false
|
|
end
|
|
|
|
|
|
if KSMemory["STEP_NEXT_TIME"] <= nCurSec
|
|
then -- 현재 단계 진행 시간 확인
|
|
|
|
-- 문 닫기
|
|
for i = 1, #KSMemory["DOOR_LIST"]
|
|
do
|
|
cDoorAction( KSMemory["DOOR_LIST"][i], KQ_DOOR[i]["KD_BLOCK"], "close" )
|
|
end
|
|
|
|
-- 팀위치로 이동
|
|
for i = 1, #KSMemory["PLAYER_LIST"]
|
|
do
|
|
local nTeamNo = KSMemory["PLAYER_LIST"][i]["PTEAM_NO"] -- 팀 번호
|
|
|
|
if KSMemory["PLAYER_LIST"][i]["PIS_MAP"] == true
|
|
then -- 킹덤 퀘스트맵에 접속해있는지 확인
|
|
cLinkTo( KSMemory["PLAYER_LIST"][i]["PHND"], KSMemory["FIELD_NAME"], KQ_TEAM[nTeamNo]["KT_POINT_X"], KQ_TEAM[nTeamNo]["KT_POINT_Y"] )
|
|
end
|
|
end
|
|
|
|
|
|
-- 연장전 설정
|
|
KSMemory["GAME_TYPE"] = KQ_GAME_TYEP["KGT_EXTRATIME"]
|
|
|
|
|
|
if #KQ_STEP >= (KSMemory["STEP_NO"] + 1)
|
|
then -- 다음 단계 확인
|
|
|
|
-- 단계 설정
|
|
KSMemory["STEP_NO"] = KSMemory["STEP_NO"] + 1 -- 다음 단계
|
|
KSMemory["STEP_NEXT_TIME"] = nCurSec + KQ_STEP[KSMemory["STEP_NO"]]["KS_NEXT_TIME"] -- 다음 단계 진행 시간
|
|
|
|
|
|
local MsgIndex = KQ_STEP[KSMemory["STEP_NO"]]["KS_MSG"] -- 메세지 정보
|
|
|
|
if MsgIndex ~= nil
|
|
then -- 메세지 인덱스 확인
|
|
|
|
local MsgData = KQ_MSG[MsgIndex] -- 메세지 정보
|
|
|
|
if MsgData ~= nil
|
|
then -- 메세지 정보 학인
|
|
KSMemory["MSG_NO"] = 1 -- 메세지 단계
|
|
KSMemory["MSG_NEXT_TIME"] = nCurSec + MsgData[1]["KM_TIME"] -- 메세지 출력 시간
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
-- 메시지 출력
|
|
KF_MESSAGE( KSMemory, nCurSec )
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
|
|
------------------------------------------------------------------------------------------
|
|
-- 게임 끝 대기 --
|
|
------------------------------------------------------------------------------------------
|
|
function SF_END_WAIT( KSMemory, nCurSec )
|
|
cExecCheck "SF_END_WAIT"
|
|
|
|
if KSMemory == nil
|
|
then -- 킹덤 퀘스트 버퍼 확인
|
|
return false
|
|
end
|
|
|
|
if nCurSec == nil
|
|
then -- 시간 확인
|
|
return false
|
|
end
|
|
|
|
|
|
if KSMemory["STEP_NEXT_TIME"] <= nCurSec
|
|
then -- 현재 단계 진행 시간 확인
|
|
|
|
local TeamInfo = KSMemory["TEAM_LIST"] -- 팀 정보
|
|
local RedTeamResult = nil -- 레드 팀 결과 정보
|
|
local BlueTeamResult = nil -- 블루 팀 결과 정보
|
|
local PlayerReward = nil -- 플레이어 결과 정보
|
|
|
|
if TeamInfo == nil
|
|
then -- 팀 정보 확인
|
|
return false
|
|
end
|
|
|
|
if TeamInfo[KQ_TEAM_NO["KTN_RED"]]["TSCORE"] == TeamInfo[KQ_TEAM_NO["KTN_BLUE"]]["TSCORE"]
|
|
then -- 무승부
|
|
RedTeamResult = KQ_RESULT["KR_DRAW"]
|
|
BlueTeamResult = KQ_RESULT["KR_DRAW"]
|
|
elseif TeamInfo[KQ_TEAM_NO["KTN_RED"]]["TSCORE"] > TeamInfo[KQ_TEAM_NO["KTN_BLUE"]]["TSCORE"]
|
|
then -- 레드팀 승리
|
|
RedTeamResult = KQ_RESULT["KR_WIN"]
|
|
BlueTeamResult = KQ_RESULT["KR_LOSE"]
|
|
else -- 블루팀 승리
|
|
RedTeamResult = KQ_RESULT["KR_LOSE"]
|
|
BlueTeamResult = KQ_RESULT["KR_WIN"]
|
|
end
|
|
|
|
|
|
-- 게임 결과 처리
|
|
for i = 1, #KSMemory["PLAYER_LIST"]
|
|
do
|
|
if KSMemory["PLAYER_LIST"][i]["PIS_MAP"] == true
|
|
then -- 킹덤 퀘스트맵에 접속해있는지 확인
|
|
|
|
if KSMemory["PLAYER_LIST"][i]["PTEAM_NO"] == KQ_TEAM_NO["KTN_RED"]
|
|
then -- 레드 팀
|
|
PlayerReward = RedTeamResult
|
|
elseif KSMemory["PLAYER_LIST"][i]["PTEAM_NO"] == KQ_TEAM_NO["KTN_BLUE"]
|
|
then -- 블루 팀
|
|
PlayerReward = BlueTeamResult
|
|
end
|
|
|
|
cPartyLeave( KSMemory["PLAYER_LIST"][i]["PHND"] ) -- 파티 해제
|
|
cViewSlotUnEquipAll( KSMemory["PLAYER_LIST"][i]["PHND"] ) -- 코스튬 해제
|
|
cResetAbstate( KSMemory["PLAYER_LIST"][i]["PHND"], KQ_MAPLOGIN_ABSTATE["KMA_INDEX"] ) -- 이동 속도 증가 상태이상 제거
|
|
cKQRewardIndex( KSMemory["PLAYER_LIST"][i]["PHND"], PlayerReward["KRE_REWAED"] ) -- 보상
|
|
cEffectMsg( KSMemory["PLAYER_LIST"][i]["PHND"], PlayerReward["KRE_EFFECT_MSG"] ) -- 이펙트 메세지
|
|
cEmoticon( KSMemory["PLAYER_LIST"][i]["PHND"], PlayerReward["KRE_EMOTICON"] ) -- 이모션
|
|
end
|
|
|
|
-- 팀 번호 초기화
|
|
KSMemory["PLAYER_LIST"][i]["PTEAM_NO"] = KQ_TEAM_NO["KTN_DEFAULT"]
|
|
end
|
|
|
|
-- 팀 정보 초기화
|
|
for i = 1, #KSMemory["TEAM_LIST"]
|
|
do
|
|
KSMemory["TEAM_LIST"][i]["TSCORE"] = 0
|
|
KSMemory["TEAM_LIST"][i]["TPOINT_HND"] = KQ_INVALID_HANDLE
|
|
KSMemory["TEAM_LIST"][i]["TMEMBER_LIST"] = nil
|
|
KSMemory["TEAM_LIST"][i]["TMEMBER_LIST"] = {}
|
|
end
|
|
|
|
|
|
-- 타이머 초기화
|
|
cTimer( KSMemory["FIELD_NAME"], 0 )
|
|
|
|
|
|
if #KQ_STEP >= (KSMemory["STEP_NO"] + 1)
|
|
then -- 다음 단계 확인
|
|
|
|
-- 단계 설정
|
|
KSMemory["STEP_NO"] = KSMemory["STEP_NO"] + 1 -- 다음 단계
|
|
KSMemory["STEP_NEXT_TIME"] = nCurSec + KQ_STEP[KSMemory["STEP_NO"]]["KS_NEXT_TIME"] -- 다음 단계 진행 시간
|
|
|
|
|
|
local MsgIndex = KQ_STEP[KSMemory["STEP_NO"]]["KS_MSG"] -- 메세지 정보
|
|
|
|
if MsgIndex ~= nil
|
|
then -- 메세지 인덱스 확인
|
|
|
|
local MsgData = KQ_MSG[MsgIndex] -- 메세지 정보
|
|
|
|
if MsgData ~= nil
|
|
then -- 메세지 정보 학인
|
|
KSMemory["MSG_NO"] = 1 -- 메세지 단계
|
|
KSMemory["MSG_NEXT_TIME"] = nCurSec + MsgData[1]["KM_TIME"] -- 메세지 출력 시간
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
-- 메시지 출력
|
|
KF_MESSAGE( KSMemory, nCurSec )
|
|
|
|
end
|
|
|
|
|
|
------------------------------------------------------------------------------------------
|
|
-- 게임 끝 --
|
|
------------------------------------------------------------------------------------------
|
|
function SF_END( KSMemory, nCurSec )
|
|
cExecCheck "SF_END"
|
|
|
|
if KSMemory == nil
|
|
then -- 킹덤 퀘스트 버퍼 확인
|
|
return false
|
|
end
|
|
|
|
if nCurSec == nil
|
|
then -- 시간 확인
|
|
return false
|
|
end
|
|
|
|
|
|
if KSMemory["STEP_NEXT_TIME"] <= nCurSec
|
|
then -- 현재 단계 진행 시간 확인
|
|
|
|
-- 마을로 이동
|
|
cLinkToAll( KSMemory["FIELD_NAME"], KQ_RETURN_MAP["KRM_INDEX"], KQ_RETURN_MAP["KRM_X"], KQ_RETURN_MAP["KRM_Y"] )
|
|
|
|
-- 킹덤 퀘스트 종료
|
|
cEndOfKingdomQuest( KSMemory["FIELD_NAME"] )
|
|
|
|
|
|
-- 다음 단계 설정
|
|
KSMemory["STEP_NO"] = nil
|
|
KSMemory["STEP_NEXT_TIME"] = nil
|
|
return true
|
|
end
|
|
|
|
|
|
-- 메시지 출력
|
|
KF_MESSAGE( KSMemory, nCurSec )
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
|
|
------------------------------------------------------------------------------------------
|
|
-- 플레이어 깃발 확인 --
|
|
------------------------------------------------------------------------------------------
|
|
function FLAG_PLAYER_CHECK( KSMemory, nCurSec )
|
|
cExecCheck "FLAG_PLAYER_CHECK"
|
|
|
|
if KSMemory == nil
|
|
then -- 킹덤 퀘스트 버퍼 확인
|
|
return false
|
|
end
|
|
|
|
if nCurSec == nil
|
|
then -- 시간 확인
|
|
return false
|
|
end
|
|
|
|
|
|
local TeamInfo = KSMemory["TEAM_LIST"]
|
|
local FlagInfo = KSMemory["FLAG_INFO"]
|
|
|
|
if TeamInfo == nil
|
|
then -- 팀 정보 확인
|
|
return
|
|
end
|
|
|
|
if FlagInfo == nil
|
|
then -- 깃발 정보 확인
|
|
return
|
|
end
|
|
|
|
if FlagInfo["FREGEN_TIME"] ~= 0
|
|
then -- 깃발 리젠 타임 확인
|
|
return
|
|
end
|
|
|
|
if FlagInfo["FPHND"] == KQ_INVALID_HANDLE
|
|
then -- 깃발 획득 플레이어 확인
|
|
return
|
|
end
|
|
|
|
|
|
local PlayerInfo = nil -- 플레이어 정보
|
|
local PlayerMaxNum = #KSMemory["PLAYER_LIST"] -- 게임 참가 플레이어 수
|
|
|
|
-- 깃발 획득 플레이어 찾기
|
|
for i = 1, PlayerMaxNum
|
|
do
|
|
if FlagInfo["FPHND"] == KSMemory["PLAYER_LIST"][i]["PHND"]
|
|
then
|
|
PlayerInfo = KSMemory["PLAYER_LIST"][i]
|
|
end
|
|
end
|
|
|
|
if PlayerInfo == nil
|
|
then -- 플레이어 정보 확인
|
|
return
|
|
end
|
|
|
|
|
|
if cIsInMap( PlayerInfo["PHND"], KSMemory["FIELD_NAME"] ) == nil
|
|
then -- 킹덤 퀘스트맵에 접속해있지 않을 경우
|
|
|
|
-- 마지막 위치에 깃발 소환
|
|
FlagInfo["FHND"] = cMobRegen_XY( KSMemory["FIELD_NAME"], KQ_FLAG["KF_INDEX"], FlagInfo["FREGEN_X"], FlagInfo["FREGEN_Y"], 0 )
|
|
|
|
if FlagInfo["FHND"] == nil then
|
|
FlagInfo["FHND"] = KQ_INVALID_HANDLE
|
|
else
|
|
-- 깃발 루아 스크립트 설정
|
|
cSetAIScript( KQ_SCRIPT_NAME, FlagInfo["FHND"] )
|
|
cAIScriptFunc( FlagInfo["FHND"], "Entrance", "KF_FLGAG_OBJECT" )
|
|
|
|
-- 깃발 드랍 알림
|
|
cScriptMessage( KSMemory["FIELD_NAME"], KQ_FLAG_SCRIPT_MSG["KFSM_DROP"], PlayerInfo["PNAME"] )
|
|
|
|
-- 깃발 정보 설정
|
|
FlagInfo["FPHND"] = KQ_INVALID_HANDLE
|
|
FlagInfo["FINDEX"] = KQ_FLAG["KF_INDEX"]
|
|
FlagInfo["FPICK_TIME"] = nCurSec + KQ_FLAG["KF_PICK_DELAY"]
|
|
FlagInfo["FREGEN_TIME"] = 0
|
|
|
|
-- 득점 포인트 삭제
|
|
if TeamInfo[PlayerInfo["PTEAM_NO"]]["TPOINT_HND"] ~= KQ_INVALID_HANDLE
|
|
then
|
|
cNPCVanish( TeamInfo[PlayerInfo["PTEAM_NO"]]["TPOINT_HND"] )
|
|
TeamInfo[PlayerInfo["PTEAM_NO"]]["TPOINT_HND"] = KQ_INVALID_HANDLE
|
|
end
|
|
end
|
|
else
|
|
|
|
-- 깃발 상태이상 지속시간
|
|
local RestTime = cAbstateRestTime( PlayerInfo["PHND"], KQ_FLAG_ABSTATE[1]["KFA_INDEX"] )
|
|
|
|
if RestTime == nil
|
|
then -- 깃발 상태이상 지속시간 확인
|
|
|
|
-- 깃발 화살표 상태이상 제거
|
|
cResetAbstate( FlagInfo["FPHND"], KQ_FLAG_ABSTATE[2]["KFA_INDEX"] )
|
|
|
|
-- 깃발 소환
|
|
FlagInfo["FHND"] = cMobRegen_Obj( KQ_FLAG["KF_INDEX"], PlayerInfo["PHND"] )
|
|
|
|
if FlagInfo["FHND"] == nil then
|
|
FlagInfo["FHND"] = KQ_INVALID_HANDLE
|
|
else
|
|
-- 깃발 루아 스크립트 설정
|
|
cSetAIScript( KQ_SCRIPT_NAME, FlagInfo["FHND"] )
|
|
cAIScriptFunc( FlagInfo["FHND"], "Entrance", "KF_FLGAG_OBJECT" )
|
|
|
|
-- 깃발 드랍 알림
|
|
cScriptMessage( KSMemory["FIELD_NAME"], KQ_FLAG_SCRIPT_MSG["KFSM_DROP"], PlayerInfo["PNAME"] )
|
|
|
|
-- 깃발 정보 설정
|
|
FlagInfo["FPHND"] = KQ_INVALID_HANDLE
|
|
FlagInfo["FINDEX"] = KQ_FLAG["KF_INDEX"]
|
|
FlagInfo["FPICK_TIME"] = nCurSec + KQ_FLAG["KF_PICK_DELAY"]
|
|
FlagInfo["FREGEN_TIME"] = 0
|
|
|
|
-- 깃발 위치 설정
|
|
FlagInfo["FREGEN_X"], FlagInfo["FREGEN_Y"] = cObjectLocate( PlayerInfo["PHND"] )
|
|
|
|
if FlagInfo["FREGEN_X"] == nil or FlagInfo["FREGEN_Y"] == nil
|
|
then -- 플레이어 위치 정보 확인
|
|
FlagInfo["FREGEN_X"] = KQ_FLAG_POINT["KFP_X"]
|
|
FlagInfo["FREGEN_X"] = KQ_FLAG_POINT["KFP_Y"]
|
|
end
|
|
|
|
-- 득점 포인트 삭제
|
|
if TeamInfo[PlayerInfo["PTEAM_NO"]]["TPOINT_HND"] ~= KQ_INVALID_HANDLE
|
|
then
|
|
cNPCVanish( TeamInfo[PlayerInfo["PTEAM_NO"]]["TPOINT_HND"] )
|
|
TeamInfo[PlayerInfo["PTEAM_NO"]]["TPOINT_HND"] = KQ_INVALID_HANDLE
|
|
end
|
|
end
|
|
else
|
|
if TeamInfo[PlayerInfo["PTEAM_NO"]] ~= nil
|
|
then -- 플레이어 정보 확인
|
|
|
|
-- 플레이어 위치
|
|
FlagInfo["FREGEN_X"], FlagInfo["FREGEN_Y"] = cObjectLocate( PlayerInfo["PHND"] )
|
|
|
|
if FlagInfo["FREGEN_X"] == nil or FlagInfo["FREGEN_Y"] == nil
|
|
then -- 플레이어 위치 정보 확인
|
|
FlagInfo["FREGEN_X"] = KQ_FLAG_POINT["KFP_X"]
|
|
FlagInfo["FREGEN_X"] = KQ_FLAG_POINT["KFP_Y"]
|
|
end
|
|
|
|
|
|
-- 스코어 포인트 거리
|
|
local Dist = cDistanceSquar( KQ_TEAM[PlayerInfo["PTEAM_NO"]]["KT_POINT_X"], KQ_TEAM[PlayerInfo["PTEAM_NO"]]["KT_POINT_Y"], FlagInfo["FREGEN_X"], FlagInfo["FREGEN_Y"] )
|
|
local CheckDist = ( KQ_TEAM_POINT_CHECK_DIST * KQ_TEAM_POINT_CHECK_DIST )
|
|
|
|
if Dist <= CheckDist
|
|
then -- 스코어 포인트 거리 확인
|
|
|
|
-- 깃발 해제
|
|
for k = 1, #KQ_FLAG_ABSTATE
|
|
do
|
|
cResetAbstate( PlayerInfo["PHND"], KQ_FLAG_ABSTATE[k]["KFA_INDEX"] )
|
|
end
|
|
|
|
-- 깃발 정보 초기화 및 리젠 시간 설정
|
|
FlagInfo["FHND"] = KQ_INVALID_HANDLE
|
|
FlagInfo["FPHND"] = KQ_INVALID_HANDLE
|
|
FlagInfo["FINDEX"] = ""
|
|
FlagInfo["FPICK_TIME"] = 0
|
|
FlagInfo["FREGEN_TIME"] = nCurSec + KQ_FLAG_POINT["KFP_REGEN_TIME"]
|
|
FlagInfo["FREGEN_X"] = KQ_FLAG_POINT["KFP_X"]
|
|
FlagInfo["FREGEN_Y"] = KQ_FLAG_POINT["KFP_Y"]
|
|
|
|
-- 득점
|
|
TeamInfo[PlayerInfo["PTEAM_NO"]]["TSCORE"] = TeamInfo[PlayerInfo["PTEAM_NO"]]["TSCORE"] + 1
|
|
|
|
-- 팀 정보 알림
|
|
cScoreInfo_AllInMap( KSMemory["FIELD_NAME"], #KQ_TEAM , TeamInfo[KQ_TEAM_NO["KTN_RED"]]["TSCORE"],
|
|
TeamInfo[KQ_TEAM_NO["KTN_BLUE"]]["TSCORE"] )
|
|
|
|
-- 득점 포인트 삭제
|
|
if TeamInfo[PlayerInfo["PTEAM_NO"]]["TPOINT_HND"] ~= KQ_INVALID_HANDLE
|
|
then
|
|
cNPCVanish( TeamInfo[PlayerInfo["PTEAM_NO"]]["TPOINT_HND"] )
|
|
TeamInfo[PlayerInfo["PTEAM_NO"]]["TPOINT_HND"] = KQ_INVALID_HANDLE
|
|
end
|
|
|
|
-- 연장전에서 득점시, 바로 경기 종료
|
|
if KSMemory["GAME_TYPE"] == KQ_GAME_TYEP["KGT_EXTRATIME"]
|
|
then
|
|
KSMemory["STEP_NEXT_TIME"] = 0
|
|
else
|
|
-- 득점 알림
|
|
if PlayerInfo["PTEAM_NO"] == KQ_TEAM_NO["KTN_RED"]
|
|
then -- 레드 팀
|
|
cScriptMessage( KSMemory["FIELD_NAME"], KQ_FLAG_SCRIPT_MSG["KFSM_POINT_RED"], PlayerInfo["PNAME"] )
|
|
elseif PlayerInfo["PTEAM_NO"] == KQ_TEAM_NO["KTN_BLUE"]
|
|
then -- 블루 팀
|
|
cScriptMessage( KSMemory["FIELD_NAME"], KQ_FLAG_SCRIPT_MSG["KFSM_POINT_BLUE"], PlayerInfo["PNAME"] )
|
|
end
|
|
|
|
-- 득,실점 사운드
|
|
for i = 1, #KSMemory["PLAYER_LIST"]
|
|
do
|
|
if KSMemory["PLAYER_LIST"][i]["PTEAM_NO"] == PlayerInfo["PTEAM_NO"]
|
|
then
|
|
cPlaySound( KSMemory["PLAYER_LIST"][i]["PHND"], KQ_SOUND["KS_GETPOINT"] );
|
|
else
|
|
cPlaySound( KSMemory["PLAYER_LIST"][i]["PHND"], KQ_SOUND["KS_LOSEPOINT"] );
|
|
end
|
|
end
|
|
|
|
-- 깃발 생성 관련 메세지 알림
|
|
cScriptMessage( KSMemory["FIELD_NAME"], KQ_FLAG_SCRIPT_MSG["KFSM_REGEN01"] )
|
|
end
|
|
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
|
|
-- 킹덤 퀘스트 단계별 데이터
|
|
KQ_STEP =
|
|
{
|
|
--------------------------------------------------------------------------------------------
|
|
-- 진행 함수, 다음 진행 시간, 메시지 데이터( KDSpring_Data )
|
|
--------------------------------------------------------------------------------------------
|
|
{ KS_FUNC = SF_DIVIDE_TEAM_WAIT, KS_TIMER = false, KS_LINKTO_TEAM = false, KS_NEXT_TIME = 30, KS_MSG = nil }, -- 1 팀 나누기 대기
|
|
{ KS_FUNC = SF_DIVIDE_TEAM, KS_TIMER = false, KS_LINKTO_TEAM = false, KS_NEXT_TIME = 5, KS_MSG = "KM_DIVIDE_TEAM" }, -- 2 팀 나누기
|
|
{ KS_FUNC = SF_START_WAIT, KS_TIMER = false, KS_LINKTO_TEAM = true, KS_NEXT_TIME = 55, KS_MSG = "KM_START_WAIT" }, -- 3 게임 시작 대기
|
|
{ KS_FUNC = SF_START, KS_TIMER = false, KS_LINKTO_TEAM = true, KS_NEXT_TIME = 5, KS_MSG = nil }, -- 4 게임 시작
|
|
{ KS_FUNC = SF_ROUTINE, KS_TIMER = true, KS_LINKTO_TEAM = true, KS_NEXT_TIME = 600, KS_MSG = nil }, -- 5 게임 진행
|
|
|
|
-- 연장전
|
|
{ KS_FUNC = SF_EXTRATIME_INIT, KS_TIMER = false, KS_LINKTO_TEAM = true, KS_NEXT_TIME = 10, KS_MSG = "KM_EXTRA_TIME_WAIT" }, -- 6 연장전 시작을 위한 초기화
|
|
{ KS_FUNC = SF_START_WAIT, KS_TIMER = false, KS_LINKTO_TEAM = true, KS_NEXT_TIME = 10, KS_MSG = nil }, -- 7 연장전 게임 시작 대기
|
|
{ KS_FUNC = SF_START, KS_TIMER = false, KS_LINKTO_TEAM = true, KS_NEXT_TIME = 5, KS_MSG = nil }, -- 8 연장전 게임 시작
|
|
{ KS_FUNC = SF_ROUTINE, KS_TIMER = true, KS_LINKTO_TEAM = true, KS_NEXT_TIME = 180, KS_MSG = nil }, -- 9 연장전 게임 진행
|
|
{ KS_FUNC = SF_END_WAIT, KS_TIMER = false, KS_LINKTO_TEAM = false, KS_NEXT_TIME = 2, KS_MSG = nil }, -- 10 게임 종료 대기
|
|
{ KS_FUNC = SF_END, KS_TIMER = false, KS_LINKTO_TEAM = false, KS_NEXT_TIME = 60, KS_MSG = "KM_END" }, -- 11 게임 종료
|
|
}
|
|
|