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.
435 lines
9.4 KiB
435 lines
9.4 KiB
--------------------------------------------------------------------------------
|
|
-- Promote Job2_Gamb Sub Functions --
|
|
--------------------------------------------------------------------------------
|
|
|
|
function DummyFunc( Var )
|
|
cExecCheck "DummyFunc"
|
|
end
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
-- DiceLightOff : 모든 주사위 불 끄기
|
|
----------------------------------------------------------------------
|
|
|
|
function DiceLightOff( Var )
|
|
cExecCheck( "DiceLightOff" )
|
|
---- DebugLog( "SubFunc _ DiceLightOff Start" )
|
|
|
|
if Var == nil or Var["Dice"]["Handle"] == nil
|
|
then
|
|
ErrorLog( "DiceLightOff::Var == nil" );
|
|
return
|
|
end
|
|
|
|
for i =1, #Var["Dice"]["Handle"]
|
|
do
|
|
cAnimate( Var["Dice"]["Handle"][i], "start", AnimationInfo["Dice"]["AniOff"] )
|
|
end
|
|
end
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
-- FindDiceNum : 핸들에 맞는 주사위번호 찾아주는 함수
|
|
----------------------------------------------------------------------
|
|
|
|
function FindDiceNum( Var )
|
|
cExecCheck( "FindDiceNum" )
|
|
|
|
-- DebugLog( "SubFunc _ FindDiceNum Start" )
|
|
|
|
if Var == nil
|
|
then
|
|
ErrorLog( "FindDiceNum::Var == nil" );
|
|
return
|
|
end
|
|
|
|
local PlayRouletteGameInfo = Var["PlayRouletteGame"]
|
|
|
|
if PlayRouletteGameInfo == nil
|
|
then
|
|
ErrorLog( "FindDiceNum::PlayRouletteGameInfo == nil" );
|
|
return
|
|
end
|
|
|
|
local FindCurDiceHandle = PlayRouletteGameInfo["SelectedDiceHandle"]
|
|
|
|
for i = 1, #Var["Dice"]["Handle"]
|
|
do
|
|
if FindCurDiceHandle == Var["Dice"]["Handle"][i]
|
|
then
|
|
PlayRouletteGameInfo["SelectedDiceNum"] = i
|
|
-- DebugLog( "PlayRouletteGameInfo[\"SelectedDiceNum\"] : "..PlayRouletteGameInfo["SelectedDiceNum"] )
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
-- SetAnswerDice : 룰렛이 주사위 몇번 선택할지 랜덤처리하는 함수
|
|
----------------------------------------------------------------------
|
|
|
|
function SetAnswerDice( Var )
|
|
cExecCheck( "SetAnswerDice" )
|
|
|
|
-- DebugLog( "SubFunc _ SetAnswerDice Start" )
|
|
|
|
if Var == nil
|
|
then
|
|
ErrorLog( "SetAnswerDice::Var == nil" );
|
|
return
|
|
end
|
|
|
|
if Var["PlayRouletteGame"]["SelectedDiceNum"] == nil
|
|
then
|
|
ErrorLog( "SetAnswerDice::SelectedDiceNum == nil" );
|
|
return
|
|
end
|
|
|
|
-- DebugLog("현재 룰렛 굴린 횟수 : "..Var["RouletteCount"] )
|
|
|
|
-- 룰렛이 멈출 번호를 먼저 랜덤으로 고른다(시도횟수가 10번 이상인 경우는 100% 당첨)
|
|
if Var["RouletteCount"] >= ROULETTEGAME_PLAY_NUM
|
|
then
|
|
Var["PlayRouletteGame"]["AnswerDiceNum"] = Var["PlayRouletteGame"]["SelectedDiceNum"]
|
|
-- DebugLog( "ROULETTEGAME_PLAY_NUM 보다 많이 시도, 100% 당첨")
|
|
else
|
|
Var["PlayRouletteGame"]["AnswerDiceNum"] = cRandomInt( 1, 6 )
|
|
end
|
|
-- DebugLog( "룰렛이 택한 주사위는 : "..Var["PlayRouletteGame"]["AnswerDiceNum"] )
|
|
end
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
-- VanishMob : 지정된 몹을 맵에서 삭제(fadeout)한다
|
|
----------------------------------------------------------------------
|
|
|
|
function VanishMob( Var )
|
|
cExecCheck( "VanishMob" )
|
|
for i = 1, #RegenInfo["MobList"]
|
|
do
|
|
cVanishAll( Var["MapIndex"], RegenInfo["MobList"][i] )
|
|
end
|
|
end
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
-- IsTimeOver : 타이머 체크
|
|
----------------------------------------------------------------------
|
|
|
|
function IsTimeOver( Var )
|
|
cExecCheck( "IsTimeOver" )
|
|
|
|
if Var == nil
|
|
then
|
|
ErrorLog( "IsTimeOver::Var == nil" )
|
|
return
|
|
end
|
|
|
|
if Var["LimitTime"] == nil
|
|
then
|
|
ErrorLog( "IsTimeOver::Var[\"LimitTime\"] == nil" )
|
|
return
|
|
end
|
|
|
|
if Var["CurSec"] == nil
|
|
then
|
|
ErrorLog( "IsTimeOver::Var[\"CurSec\"] == nil" )
|
|
return
|
|
end
|
|
|
|
if Var["LimitTime"] == "NoLimit"
|
|
then
|
|
-- DebugLog( "SubFunc _ IsTimeOver : 퀘스트 성공/실패로, 제한시간 의미없어짐" )
|
|
return false
|
|
elseif Var["LimitTime"] < Var["CurSec"]
|
|
then
|
|
-- DebugLog( "SubFunc _ IsTimeOver : 시간초과" )
|
|
return true
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
-- IsFail : Fail 인지 체크
|
|
----------------------------------------------------------------------
|
|
|
|
function IsFail( Var )
|
|
cExecCheck( "IsFail" )
|
|
|
|
if Var == nil
|
|
then
|
|
ErrorLog( "IsFail::Var == nil" )
|
|
return
|
|
end
|
|
|
|
-- Fail Case : 맵에 유저가 없음
|
|
if cGetPlayerList( Var["MapIndex"] ) == nil
|
|
then
|
|
-- DebugLog( "IsFail : 맵에 유저 없음" )
|
|
Var["StepFunc"] = QuestFailed
|
|
return true
|
|
end
|
|
|
|
-- Fail Case : 유저가 죽은 경우
|
|
if cIsObjectDead( Var["PlayerHandle"] ) == 1
|
|
then
|
|
-- DebugLog("IsFail : 유저가 죽음")
|
|
Var["StepFunc"] = QuestFailed
|
|
return true
|
|
end
|
|
|
|
-- Fail Case : 타임 오버
|
|
if IsTimeOver( Var ) == true
|
|
then
|
|
-- DebugLog("IsFail : TimeOver")
|
|
Var["StepFunc"] = QuestFailed
|
|
return true
|
|
end
|
|
end
|
|
|
|
|
|
------------------------------------------------------
|
|
-- Roulette_Click : 룰렛 클릭되었을때 작동하는 함수
|
|
------------------------------------------------------
|
|
|
|
function Roulette_Click( NPCHandle, PlyHandle )
|
|
cExecCheck ( "Roulette_Click" )
|
|
|
|
-- DebugLog("룰렛 선택!")
|
|
|
|
if NPCHandle == nil
|
|
then
|
|
ErrorLog( "Roulette_Click::RouletteHandle == nil" )
|
|
return
|
|
end
|
|
|
|
if PlyHandle == nil
|
|
then
|
|
ErrorLog( "Roulette_Click::RouletteHandle == nil" )
|
|
return
|
|
end
|
|
|
|
local MapIndex = cGetCurMapIndex( NPCHandle )
|
|
|
|
if MapIndex == nil
|
|
then
|
|
ErrorLog( "Roulette_Click::MapIndex == nil" )
|
|
return
|
|
end
|
|
|
|
local Var = InstanceField[ MapIndex ]
|
|
|
|
if Var == nil
|
|
then
|
|
ErrorLog( "Roulette_Click::Var == nil" )
|
|
return
|
|
end
|
|
|
|
if Var["Roulette"] == nil
|
|
then
|
|
ErrorLog( "Roulette_Click::Var[\"Roulette\"] == nil" )
|
|
return
|
|
end
|
|
|
|
if Var["Roulette"]["Handle"] == nil
|
|
then
|
|
ErrorLog( "Roulette_Click::Var[\"Roulette\"][Handle] == nil" )
|
|
return
|
|
end
|
|
|
|
if NPCHandle ~= Var["Roulette"]["Handle"]
|
|
then
|
|
ErrorLog( "클릭한 룰렛이랑, 리젠시켜놓은 실제 룰렛 핸들값이 다른경우" )
|
|
return
|
|
end
|
|
|
|
local PlayRouletteGameInfo = Var["PlayRouletteGame"]
|
|
|
|
if PlayRouletteGameInfo == nil
|
|
then
|
|
ErrorLog( "Roulette_Click::Var[\"PlayRouletteGame\"] == nil" )
|
|
return
|
|
end
|
|
|
|
-- 주사위,룰렛 모두 클릭되었다면, 추가적인 룰렛 클릭 무시
|
|
if PlayRouletteGameInfo["ReadyToGame"] == true
|
|
then
|
|
---- DebugLog("이미 다 선택되었기에, 클릭 무시")
|
|
return
|
|
end
|
|
|
|
PlayRouletteGameInfo["RouletteHandle"] = NPCHandle
|
|
|
|
-- 주사위 먼저 클릭하지않고, 룰렛 클릭한 경우
|
|
if PlayRouletteGameInfo["SelectedDiceHandle"] == nil
|
|
then
|
|
cMobDialog( Var["MapIndex"], ChatInfo["Roulette_Click"]["SpeakerIndex"], ChatInfo["ScriptFileName"], ChatInfo["Roulette_Click"]["MsgIndex"] )
|
|
return
|
|
end
|
|
|
|
if PlayRouletteGameInfo["SelectedDiceNum"] < 1 or PlayRouletteGameInfo["SelectedDiceNum"] > 6
|
|
then
|
|
ErrorLog( "1~6을 벗어난 주사위번호" )
|
|
return
|
|
end
|
|
|
|
-- 규칙에 맞게 룰렛 클릭한 경우
|
|
PlayRouletteGameInfo["ReadyToGame"] = true
|
|
|
|
return
|
|
end
|
|
|
|
|
|
------------------------------------------------------
|
|
-- Dice_Click : 주사위 클릭되었을때 작동하는 함수
|
|
------------------------------------------------------
|
|
|
|
function Dice_Click( NPCHandle, PlyHandle )
|
|
cExecCheck ( "Dice_Click" )
|
|
|
|
if NPCHandle == nil
|
|
then
|
|
ErrorLog( "Dice_Click::DiceHandle == nil" )
|
|
return
|
|
end
|
|
|
|
if PlyHandle == nil
|
|
then
|
|
ErrorLog( "Dice_Click::PlyHandle == nil" )
|
|
return
|
|
end
|
|
|
|
local MapIndex = cGetCurMapIndex( NPCHandle )
|
|
|
|
if MapIndex == nil
|
|
then
|
|
ErrorLog( "Dice_Click::MapIndex == nil" )
|
|
return
|
|
end
|
|
|
|
local Var = InstanceField[ MapIndex ]
|
|
|
|
if Var == nil
|
|
then
|
|
ErrorLog( "Dice_Click::Var == nil" )
|
|
return
|
|
end
|
|
|
|
if Var["Dice"] == nil
|
|
then
|
|
ErrorLog( "Dice_Click::Var[\"Dice\"] == nil" )
|
|
return
|
|
end
|
|
|
|
if Var["Dice"]["Handle"] == nil
|
|
then
|
|
ErrorLog( "Dice_Click::Var[\"Dice\"][Handle] == nil" )
|
|
return
|
|
end
|
|
|
|
local PlayRouletteGameInfo = Var["PlayRouletteGame"]
|
|
|
|
if PlayRouletteGameInfo == nil
|
|
then
|
|
ErrorLog( "Dice_Click::Var[\"PlayRouletteGame\"] == nil" )
|
|
return
|
|
end
|
|
|
|
-- 주사위,룰렛 모두 클릭되었다면, 추가적인 주사위 클릭 무시
|
|
if PlayRouletteGameInfo["ReadyToGame"] == true
|
|
then
|
|
---- DebugLog("이미 다 선택되었기에, 클릭 무시")
|
|
return
|
|
end
|
|
|
|
-- 선택한 주사위 핸들값 저장
|
|
PlayRouletteGameInfo["SelectedDiceHandle"] = NPCHandle
|
|
-- DebugLog( "Your Selected DiceHandle : "..PlayRouletteGameInfo["SelectedDiceHandle"] )
|
|
|
|
-- 선택한 주사위 핸들값 받아, 몇번 주사위인지 검색
|
|
FindDiceNum ( Var )
|
|
|
|
-- 모든 주사위 불 끄기
|
|
DiceLightOff( Var )
|
|
|
|
-- 선택한 주사위 불키기
|
|
cAnimate( PlayRouletteGameInfo["SelectedDiceHandle"], "start", AnimationInfo["Dice"]["AniOn"] )
|
|
|
|
return
|
|
end
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
-- Log Functions
|
|
----------------------------------------------------------------------
|
|
|
|
function GoToFail( Var, Msg )
|
|
cExecCheck( "GoToFail" )
|
|
|
|
if Var == nil
|
|
then
|
|
ErrorLog( "GoToFail : Var nil" );
|
|
return
|
|
end
|
|
|
|
ErrorLog( Msg )
|
|
|
|
-- 모든 객체 삭제
|
|
if Var["Door"]["Handle"] ~= nil
|
|
then
|
|
for i = 1, #Var["Door"]["Handle"]
|
|
do
|
|
cNPCVanish( Var["Door"]["Handle"][i] )
|
|
end
|
|
end
|
|
|
|
if Var["Roulette"]["Handle"] ~= nil
|
|
then
|
|
cNPCVanish( Var["Roulette"]["Handle"] )
|
|
end
|
|
|
|
if Var["Dice"]["Handle"] ~= nil
|
|
then
|
|
for i = 1, #Var["Dice"]["Handle"]
|
|
do
|
|
cNPCVanish( Var["Door"]["Handle"][i] )
|
|
end
|
|
end
|
|
|
|
if Var["NPC"]["Handle"] ~= nil
|
|
then
|
|
cNPCVanish( Var["NPC"]["Handle"] )
|
|
end
|
|
|
|
Var["StepFunc"] = ReturnToHome
|
|
end
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
-- Log Functions
|
|
----------------------------------------------------------------------
|
|
|
|
function DebugLog( String )
|
|
cExecCheck ( "-- DebugLog" )
|
|
|
|
if String == nil
|
|
then
|
|
cAssertLog( "-- DebugLog::String == nil" )
|
|
return
|
|
end
|
|
cAssertLog( "Debug - "..String )
|
|
end
|
|
|
|
|
|
function ErrorLog( String )
|
|
cExecCheck ( "ErrorLog" )
|
|
|
|
if String == nil
|
|
then
|
|
cAssertLog( "ErrorLog::String == nil" )
|
|
return
|
|
end
|
|
cAssertLog( "Error - "..String )
|
|
end
|
|
|