Files
Leviathan/GameServer/AziaMafiaScriptsBackup/EDIT OFFI/NPC_JobChange.lua
T
2026-06-01 12:46:52 +02:00

1508 lines
37 KiB
Lua

-- Lua 스크립트 암호화
function get_module_name()
return "NPC_JobChange"
end
function NPC_JobChange_get_resetcount()
local reset_count = get_flag( 'reset_count' )
if reset_count == '' then
return 0
else
return reset_count
end
end
--============================================================
-- <<<<<< 전직 NPC (공통) >>>>>>
--============================================================
function NPC_JobChange_contact()
local job_depth = get_value( "job_depth" )
local npc_name = "@"..get_npc_type().." @"..get_npc_name()
dlg_title( npc_name)
dlg_text( "@90100403" )
if job_depth < 3 then
dlg_menu( "@90010060", "NPC_JobChange_selection_job()" )
end
if get_value( "job_depth" ) > 0 then
---------- TEST SERVER ---------
if gv("permission") >= 1 and 1 == 2 then -- get_server_category() == 2 or
dlg_menu( "[TEST/MJ] Reborn", "dlg_special('confirm_window', 'reset_my_class(0) ' , '<br>Reborn Class ?' )" )
elseif gv("level") <= 160 then
dlg_menu( "[Free lvl < 160 ] Reborn", "dlg_special('confirm_window', 'reset_my_class(0) ' , '<br>Reborn Class ?' )" )
elseif 1 == 2 then -- Event Respe free
dlg_menu( "[Free Event ] Reborn", "dlg_special('confirm_window', 'reset_my_class(0) ' , '<br>Reborn Class ?' )" )
else
dlg_menu( "[" .. format_num(1000000000,0," R") .. "] Reborn", "dlg_special('confirm_window', 'reset_my_class(1000000000) ' , '<br>Reborn Class ? <br>[".. format_num(1000000000,0," R") .."]' )" )
end
end
if 1 == 2 then --Event
dlg_menu( sconv("%1 %2", "%1", "[Free Event ]", "%2" , "@90010252" ), "change_my_race_event()" )
else
dlg_menu( "@90010252", "change_my_race()" )
end
dlg_menu( "@90010002", " " )
dlg_show()
end
function change_my_race_event()
dlg_title( "@90300401" )
dlg_text( "Race Change Selection<br>Free Event" )
if gv("race") == 4 then
dlg_menu( "Asura", "dlg_special('confirm_window', 'raceconf_event(5)' , 'Change in Asura Race ?' )" )
dlg_menu( "Gaia", "dlg_special('confirm_window', 'raceconf_event(3)' , 'Change in Gaia Race ?' )" )
elseif gv("race") == 5 then
dlg_menu( "Deva", "dlg_special('confirm_window', 'raceconf_event(4)' , 'Change in Deva Race ?' )" )
dlg_menu( "Gaia", "dlg_special('confirm_window', 'raceconf_event(3)' , 'Change in Gaia Race ?' )" )
elseif gv("race") == 3 then
dlg_menu( "Deva", "dlg_special('confirm_window', 'raceconf_event(4)' , 'Change in Deva Race ?' )" )
dlg_menu( "Asura", "dlg_special('confirm_window', 'raceconf_event(5)' , 'Change in Asura Race ?' )" )
end
end
function raceconf_event(race)
deletebuffclass()
cp = gv("jp")
set_race(race)
sv("jp", cp)
end
---------------------------------------- Ancien Script
function NPC_JobChange_change_race()
local npc_name = "@"..get_npc_type().."|@"..get_npc_name()
dlg_title( npc_name )
if has_item(601100284) >= 1 then
dlg_text( "@90010256" )
local race = get_value( "race" )
if race ~= 4 then
dlg_menu( "@90010253", "NPC_JobChange_set_race(4)" )
end
if race ~= 5 then
dlg_menu( "@90010254", "NPC_JobChange_set_race(5)" )
end
if race ~= 3 then
dlg_menu( "@90010255", "NPC_JobChange_set_race(3)" )
end
else
dlg_text( "@90010257" )
dlg_menu( "@90010002", " " )
end
dlg_show()
end
function NPC_JobChange_set_race( changed_race )
local npc_name = "@"..get_npc_type().."|@"..get_npc_name()
dlg_title( npc_name )
if has_item(601100284) >= 1 then -- 심장 있는지 체크 (아까 체크했지만 스크립트 열어 놓고 이것저것 할수있으므로 다시체크)
local success = set_race( changed_race )
if success == 1 then
delete_item( get_item_handle( 601100284 ), 1 )
dlg_text( "@90010258" )
else
dlg_text( "@90010259" )
end
else
dlg_text( "@90010257" )
end
dlg_menu( "@90010002", " " )
dlg_show()
end
function NPC_JobChange_change_job()
local npc_name = "@"..get_npc_type().."|@"..get_npc_name()
dlg_title( npc_name )
local npc_id = get_npc_id()
local reset_count = NPC_JobChange_get_resetcount()
local race = get_value( "race" )
local job_name1, job1, job_name2, job2, job_name3, job3, number_job, current_job
number_job = 0 -- 전직 가능한 직업의 개수를 초기화.
current_job = get_value( "job" ) -- 현재 직업 ID를 받아 놓는다.
if get_value( "job_depth" ) == 0 then -- 기본직업일 때 JLv이 10 미만이면 전직불가.
if get_value( "job_level" ) < 10 then
dlg_text( "@90100403" ) -- 잡레벨 부족...
else
dlg_text( "@90100404" ) -- 전직 대상자시군요.<BR>지금의 능력이라면 1차직업으로의 전직이 가능합니다
number_job = 3 -- 전직 가능한 직업의 개수를 설정. 1차 전직이므로 모두 3 이다.
if race == 4 then -- 얘가 데바면 파이터 201, 클레릭 202, 테이머 203
job_name1 = "@10201"
job1 = 201
job_name2 = "@10202"
job2 = 202
job_name3 = "@10203"
job3 = 203
elseif race == 5 then -- 아수라면 스트라이더 301, 매지션 302, 서모너 303
job_name1 = "@10301"
job1 = 301
job_name2 = "@10302"
job2 = 302
job_name3 = "@10303"
job3 = 303
else -- 가이아라면 투사 101, 주술자 102, 야수사 103
job_name1 = "@10101"
job1 = 101
job_name2 = "@10102"
job2 = 102
job_name3 = "@10103"
job3 = 103
end
end
elseif get_value( "job_depth" ) == 1 then -- 1차 직업일 때 JLv이 40 미만이면 전직불가.
if get_value( "job_level" ) < 40 then
dlg_text( "@90100409" )
else
dlg_text( "@90700410" ) -- 어서오세요. 2차 전직 대상자시군요.
if race == 4 then -- 데바일 때
if current_job == 201 then -- 파이터 전직
-- 나이트 210, 워리어 211
number_job = 2
job_name1 = "@10210"
job1 = 210
job_name2 = "@10211"
job2 = 211
elseif current_job == 202 then -- 클레릭의 전직
-- 메이지 212, 프리스트 213
number_job = 2
job_name1 = "@10212"
job1 = 212
job_name2 = "@10213"
job2 = 213
elseif current_job == 203 then -- 테이머의 전직
-- 브리더
number_job = 1
job_name1 = "@10214"
job1 = 214
else -- 이도저도 아니면 아무것도 아니다.
number_job = 0
end
elseif race == 5 then -- 아수라
if current_job == 301 then -- 스트라이더의 전직
-- 어쌔신 310, 레인저 311
number_job = 2
job_name1 = "@10310"
job1 = 310
job_name2 = "@10311"
job2 = 311
elseif current_job == 302 then -- 다크매지션의 전직
-- 소서러 312, 다크매지션 313
number_job = 2
job_name1 = "@10312"
job1 = 312
job_name2 = "@10313"
job2 = 313
elseif current_job == 303 then -- 서모너 전직
-- 배틀서모너 314
number_job = 1
job_name1 = "@10314"
job1 = 314
else -- (무시.)
number_job = 0
end
else -- 가이아
if current_job == 101 then -- 투사의 전직 101
-- 전사 110, 궁사 111
number_job = 2
job_name1 = "@10110"
job1 = 110
job_name2 = "@10111"
job2 = 111
elseif current_job == 102 then -- 주술사의 전직
-- 마도사 112, 마투사 113
number_job = 2
job_name1 = "@10112"
job1 = 112
job_name2 = "@10113"
job2 = 113
elseif current_job == 103 then -- 야수사의 전직
-- 마수사 114
number_job = 1
job_name1 = "@10114"
job1 = 114
else -- 이도저도 아니면 아무것도 아니다.
number_job = 0
end
end
end
-- 마스터 클래스 초기화 스킬 가능 멘트
elseif get_value( "job_depth" ) == 3 then
if reset_count == 0 then
dlg_text( "@90604793" )
elseif reset_count == 1 then
dlg_text( "@90604794" )
elseif reset_count == 2 then
dlg_text( "@90604795" )
elseif reset_count == 3 then
dlg_text( "@90604796" )
elseif reset_count == 4 then
dlg_text( "@90604797" )
elseif reset_count == 5 then
dlg_text( "@90604798" )
elseif reset_count == 6 then
dlg_text( "@90604799" )
elseif reset_count == 7 then
dlg_text( "@90604800" )
elseif reset_count == 8 then
dlg_text( "@90604801" )
elseif reset_count == 9 then
dlg_text( "@90604802" )
end
dlg_menu( "@90604803", "gold_skill_reset_check(npc_id)") -- 루피로 초기화하기
dlg_menu( "@90604804", "jp_skill_reset_check(npc_id)") -- JP로 초기화하기
-- 여기까지 오면 2차직업인 상태. 3차로의 전직은 불가능함
else
-- 마스터 클래스로 전직을 원한다면 영웅 헥토르를 만나라는 멘트
--dlg_text( "@91002563" )
NPC_master_partdevil_contact()
end
if number_job == 1 then
dlg_menu( job_name1 , "Run_JobChange_check_common( '" .. job_name1 .. "' , " .. job1 .. " )" )
elseif number_job == 2 then
dlg_menu( job_name1 , "Run_JobChange_check_common( '" .. job_name1 .. "' , " .. job1 .. " )" )
dlg_menu( job_name2 , "Run_JobChange_check_common( '" .. job_name2 .. "' , " .. job2 .. " )" )
elseif number_job == 3 then
dlg_menu( job_name1 , "Run_JobChange_check_common( '" .. job_name1 .. "' , " .. job1 .. " )" )
dlg_menu( job_name2 , "Run_JobChange_check_common( '" .. job_name2 .. "' , " .. job2 .. " )" )
dlg_menu( job_name3 , "Run_JobChange_check_common( '" .. job_name3 .. "' , " .. job3 .. " )" )
end
dlg_menu( "@90010002", "" )
dlg_show()
end
----------------------------------------------------------------------------------------------------------------------
function NPC_master_partdevil_contact()
-- 임시 변수 선언과 동시에 NPC ID 가져오기
local npc_id = get_npc_id()
-- 국가 코드 읽어오기
-- get_local_info()의 반환값들
--LOCAL_INFO_KOREA = 1
--LOCAL_INFO_HONGKONG = 2
--LOCAL_INFO_AMERICA = 4
--LOCAL_INFO_EUROPE = 8
--LOCAL_INFO_JAPAN = 16
--LOCAL_INFO_TAIWAN = 32
--LOCAL_INFO_CHINA = 64
local state_code = get_local_info()
local quest_progress3322 = get_quest_progress(3322)
--================================================================================
-- 전직 불가능한 경우 골라내기
--================================================================================
-- 마스터 클래스 전직 가능 여부
if get_value( "job_depth" ) == 2 then
-- 전직 불가능한 조건이면 튕김
-- 전직 조건 변경 : 145 -> 148 2011년 4월 18일 우상욱
if get_value( "level" ) < 147 or get_value( "job_level" ) < 49 then
-- 마스터 사탄소녀
dlg_title( "@91002405" )
if is_able_to_jobchange() == true then
dlg_text( "@91002407" )
dlg_menu( "@90010003", "goto_hactor()" )
else
--지금은 마스터클래스로의 전직이 불가능한 상태입니다.
dlg_text( "@91002406" )
dlg_menu( "@90010003", "goto_hactor()" )
end
dlg_menu( "@90010002", "" )
dlg_show()
return
-- 전직 가능할 때 테섭이 아니면 튕김.
else
if is_able_to_jobchange() == false then
dlg_title( "@91002405" )
dlg_text( "@91002406" )
dlg_menu( "@90010002", "" )
dlg_show()
return
end
end
-- 이미 3차직업인 상태. 더이상 전직은 불가능함
elseif get_value("job_depth") == 3 then
dlg_title( "@91002405" )
-- 더 이상 전직이 불가능하다는 멘트
dlg_text( "@91002408" )
--TP 포인트란?
dlg_menu( "@91002550", "tp_point_2()")
dlg_menu( "@90010003", 'goto_hactor()' )
dlg_menu( "@90010002", "" )
dlg_show()
return
-- 1차 직업이 여기서 뭐하니? 누구랑 왔니? 전직 하고 와라 -_-
else
dlg_title( "@91002405" )
if get_value("job") == 200 then
job_name = "@1356"
elseif get_value("job") == 201 then
job_name = "@1357"
elseif get_value("job") == 202 then
job_name = "@1358"
elseif get_value("job") == 203 then
job_name = "@1359"
elseif get_value("job") == 100 then
job_name = "@1342"
elseif get_value("job") == 101 then
job_name = "@1343"
elseif get_value("job") == 102 then
job_name = "@1344"
elseif get_value("job") == 103 then
job_name = "@1345"
elseif get_value("job") == 300 then
job_name = "@1372"
elseif get_value("job") == 301 then
job_name = "@1373"
elseif get_value("job") == 302 then
job_name = "@1374"
elseif get_value("job") == 303 then
job_name = "@1375"
end
dlg_text_without_quest_menu(sconv("@91002426", "#@job_name@#",job_name))
dlg_menu( "@90010002", "" )
dlg_show()
return
end
-- 여기까지 왔으면 전직 가능
local race = get_value( "race" )
local job_name1, job1, job_name2, job2, job_name3, job3, number_job, current_job
dlg_title( "@91002405" )
-- 전직 가능한 직업의 개수를 초기화. 기본이 3이니 그냥 3으로...
number_job = 3
-- 현재 직업 ID를 받아 놓는다.
current_job = get_value( "job" )
--================================================================================
-- 마스터 클래스 전직일 경우. (테이블에서 못읽어오므로 전직정보는 여기서 고치자)
--================================================================================
if get_value( "job_depth" ) == 2 then
-- 퀘스트 상태 체크 get_quest_progress(ID)
-- 반환값 -1 : 아무것도 아님 / 0 : 수락가 / 1 : 수행중 / 2 : 종료가능 / 255 : 이미종료
-- if quest_progress3322 == 255 then
dlg_text( "@91002409" ) --마스터클래스 전직 대상자 대사
--============================================================================
-- 데바일 때
if race == 4 then
-- 나이트 전직 전직
if current_job == 210 then
-- 가즈나이트 220
number_job = 1
job_name1 = "@10220"
job1 = 220
-- 워리어 전직 전직
elseif current_job == 211 then
-- 히어로 221
number_job = 1
job_name1 = "@10221"
job1 = 221
-- 메이지의 전직
elseif current_job == 212 then
-- 아크메이지 222
number_job = 1
job_name1 = "@10222"
job1 = 222
-- 프리스트의 전직
elseif current_job == 213 then
-- 세인트 223
number_job = 1
job_name1 = "@10223"
job1 = 223
-- 브리더의 전직
elseif current_job == 214 then
-- 마에스트로 224
number_job = 1
job_name1 = "@10224"
job1 = 224
-- 이도저도 아니면 아무것도 아니다.
else
number_job = 0
end
--============================================================================
-- 아수라
elseif race == 5 then
-- 어쌔신의 전직
if current_job == 310 then
-- 스펙터 320
number_job = 1
job_name1 = "@10320"
job1 = 320
-- 레인져의 전직
elseif current_job == 311 then
-- 섀도우스토커 321
number_job = 1
job_name1 = "@10321"
job1 = 321
-- 소서러의 전직
elseif current_job == 312 then
-- 둠세이어 322
number_job = 1
job_name1 = "@10322"
job1 = 322
-- 다크매지션의 전직
elseif current_job == 313 then
-- 소울리버 323
number_job = 1
job_name1 = "@10323"
job1 = 323
-- 배틀서모너 전직
elseif current_job == 314 then
-- 길가메쉬 324
number_job = 1
job_name1 = "@10324"
job1 = 324
-- (무시.)
else
number_job = 0
end
--============================================================================
-- 가이아
else
-- 전사의 전직
if current_job == 110 then
-- 투신 120
number_job = 1
job_name1 = "@10120"
job1 = 120
-- 궁사의 전직
elseif current_job == 111 then
-- 신궁 121
number_job = 1
job_name1 = "@10121"
job1 = 121
-- 마도사의 전직
elseif current_job == 112 then
-- 현자 122
number_job = 1
job_name1 = "@10122"
job1 = 122
-- 마투사의 전직
elseif current_job == 113 then
-- 금강 123
number_job = 1
job_name1 = "@10123"
job1 = 123
-- 마수사의 전직
elseif current_job == 114 then
-- 나찰 124
number_job = 1
job_name1 = "@10124"
job1 = 124
-- 이도저도 아니면 아무것도 아니다.
else
number_job = 0
end
end
-- else
-- 모든 시련을 이겨내고 여기까지 온 것을 축하합니다.<(version:7.3)>
-- dlg_title( "@90300401" )
-- dlg_text( "@91002486" )
-- dlg_menu( "@90010003", 'goto_hactor()' )
-- dlg_menu( "@90010002", " " )
-- dlg_show()
-- return
-- end
else
end
if number_job == 1 then
dlg_menu( job_name1 , "Run_JobChange_check_common( '" .. job_name1 .. "' , " .. job1 .. " )" )
elseif number_job == 2 then
dlg_menu( job_name1 , "Run_JobChange_check_common( '" .. job_name1 .. "' , " .. job1 .. " )" )
dlg_menu( job_name2 , "Run_JobChange_check_common( '" .. job_name2 .. "' , " .. job2 .. " )" )
elseif number_job == 3 then
dlg_menu( job_name1 , "Run_JobChange_check_common( '" .. job_name1 .. "' , " .. job1 .. " )" )
dlg_menu( job_name2 , "Run_JobChange_check_common( '" .. job_name2 .. "' , " .. job2 .. " )" )
dlg_menu( job_name3 , "Run_JobChange_check_common( '" .. job_name3 .. "' , " .. job3 .. " )" )
else
end
dlg_menu( "@90010003", 'goto_hactor()' )
dlg_menu( "@90010001", '' )
dlg_show()
end
function goto_hactor()
warp( 138645, 75174, gv("layer") )
end
function tp_point()
-- 다이얼로그 출력
dlg_title( "@90999851" )
dlg_text( "@91002551" )
--특성 스킬이란?
dlg_menu( "@91002554", "tp_skill()")
-- 대화종료
--dlg_menu( "@90010003","NPC_master_partdevil_contact()" ) -- 돌아가기
dlg_menu( "@90010002", " " )
dlg_show()
end
function tp_skill()
-- 다이얼로그 출력
dlg_title( "@90999851" )
--TP 포인트 분배는 어쩌구 저쩌구
dlg_text( "@91002553" )
--상위 특성 스킬이란?
dlg_menu( "@91002556", "upper_tp_skill()")
-- 하위 특성 스킬이란?
dlg_menu( "@91002558", "lower_tp_skill()")
-- 대화종료
dlg_menu( "@90010003","tp_point()" ) -- 돌아가기
dlg_menu( "@90010002", " " )
dlg_show()
end
function upper_tp_skill()
-- 다이얼로그 출력
dlg_title( "@90999851" )
-- 상위 특성 스킬은 어쩌구 저쩌구
dlg_text( "@91002557" )
-- 대화종료
dlg_menu( "@90010003","tp_skill()" ) -- 돌아가기
dlg_menu( "@90010002", " " )
dlg_show()
end
function lower_tp_skill()
-- 다이얼로그 출력
dlg_title( "@90999851" )
-- 하위 특성 스킬은 어쩌구 저쩌구
dlg_text( "@91002559" )
-- 대화종료
dlg_menu( "@90010003","tp_skill()" ) -- 돌아가기
dlg_menu( "@90010002", " " )
dlg_show()
end
-----------------------------------------------------------
-- 사탄소녀 TP 포인트 설명
function tp_point_2()
-- 다이얼로그 출력
dlg_title( "@91002405" )
dlg_text( "@91002551" )
--특성 스킬이란?
dlg_menu( "@91002554", "tp_skill_2()")
-- 대화종료
dlg_menu( "@90010003","NPC_master_partdevil_contact()" ) -- 돌아가기
dlg_menu( "@90010002", " " )
dlg_show()
end
function tp_skill_2()
-- 다이얼로그 출력
dlg_title( "@91002405" )
--TP 포인트 분배는 어쩌구 저쩌구
dlg_text( "@91002553" )
--상위 특성 스킬이란?
dlg_menu( "@91002556", "upper_tp_skill_2()")
-- 하위 특성 스킬이란?
dlg_menu( "@91002558", "lower_tp_skill_2()")
-- 대화종료
dlg_menu( "@90010003","tp_point_2()" ) -- 돌아가기
dlg_menu( "@90010002", " " )
dlg_show()
end
function upper_tp_skill_2()
-- 다이얼로그 출력
dlg_title( "@91002405" )
-- 상위 특성 스킬은 어쩌구 저쩌구
dlg_text( "@91002557" )
-- 대화종료
dlg_menu( "@90010003","tp_skill_2()" ) -- 돌아가기
dlg_menu( "@90010002", " " )
dlg_show()
end
function lower_tp_skill_2()
-- 다이얼로그 출력
dlg_title( "@91002405" )
-- 하위 특성 스킬은 어쩌구 저쩌구
dlg_text( "@91002559" )
-- 대화종료
dlg_menu( "@90010003","tp_skill_2()" ) -- 돌아가기
dlg_menu( "@90010002", " " )
dlg_show()
end
------------------------------------------------------------------------------------------------------------------------
function Run_JobChange_check_common( job_name , job_id )
-- 임시 변수 선언과 동시에 NPC ID 가져오기
local npc_id = get_npc_id()
local jobid = job_id
-- 클릭 실수했을지도 모르므로 확실한지 확인해줌.
local npc_name = "@"..get_npc_type().."|@"..get_npc_name()
dlg_title( npc_name )
if jobid == 210 then
dlg_text_without_quest_menu("@90700411")
elseif jobid == 211 then
dlg_text_without_quest_menu("@90700412")
elseif jobid == 212 then
dlg_text_without_quest_menu("@90700413")
elseif jobid == 213 then
dlg_text_without_quest_menu("@90700414")
elseif jobid == 214 then
dlg_text_without_quest_menu("@90700415")
elseif jobid == 310 then
dlg_text_without_quest_menu("@90700416")
elseif jobid == 311 then
dlg_text_without_quest_menu("@90700417")
elseif jobid == 312 then
dlg_text_without_quest_menu("@90700418")
elseif jobid == 313 then
dlg_text_without_quest_menu("@90700419")
elseif jobid == 314 then
dlg_text_without_quest_menu("@90700420")
elseif jobid == 110 then
dlg_text_without_quest_menu("@90700421")
elseif jobid == 111 then
dlg_text_without_quest_menu("@90700422")
elseif jobid == 112 then
dlg_text_without_quest_menu("@90700423")
elseif jobid == 113 then
dlg_text_without_quest_menu("@90700424")
elseif jobid == 114 then
dlg_text_without_quest_menu("@90700425")
elseif jobid == 101 then
dlg_text_without_quest_menu("@90301919")
elseif jobid == 102 then
dlg_text_without_quest_menu("@90301920")
elseif jobid == 103 then
dlg_text_without_quest_menu("@90301921")
elseif jobid == 201 then
dlg_text_without_quest_menu("@90301913")
elseif jobid == 202 then
dlg_text_without_quest_menu("@90301914")
elseif jobid == 203 then
dlg_text_without_quest_menu("@90301915")
elseif jobid == 301 then
dlg_text_without_quest_menu("@90301916")
elseif jobid == 302 then
dlg_text_without_quest_menu("@90301917")
elseif jobid == 303 then
dlg_text_without_quest_menu("@90301918")
elseif jobid == 120 then --투신이란
dlg_text_without_quest_menu("@91002410")
elseif jobid == 121 then --신궁이란
dlg_text_without_quest_menu("@91002411")
elseif jobid == 122 then --현자란
dlg_text_without_quest_menu("@91002412")
elseif jobid == 123 then --금강이란
dlg_text_without_quest_menu("@91002413")
elseif jobid == 124 then --나찰이란
dlg_text_without_quest_menu("@91002414")
elseif jobid == 220 then --가즈나이트란
dlg_text_without_quest_menu("@91002415")
elseif jobid == 221 then --히어로란
dlg_text_without_quest_menu("@91002416")
elseif jobid == 222 then --아크메이지란
dlg_text_without_quest_menu("@91002417")
elseif jobid == 223 then --세인트란
dlg_text_without_quest_menu("@91002418")
elseif jobid == 224 then --마에스트로란
dlg_text_without_quest_menu("@91002419")
elseif jobid == 320 then --스펙터란
dlg_text_without_quest_menu("@91002420")
elseif jobid == 321 then --섀도우스토커란
dlg_text_without_quest_menu("@91002421")
elseif jobid == 322 then --둠세이어란
dlg_text_without_quest_menu("@91002422")
elseif jobid == 323 then --소울리버란
dlg_text_without_quest_menu("@91002423")
elseif jobid == 324 then --길가메쉬란
dlg_text_without_quest_menu("@91002424")
end
dlg_menu( "@90010007", "Run_JobChange_common( '" .. job_name .. "' , " .. job_id ..' )' )
dlg_menu( "@90010001", '' )
dlg_show()
end
function Run_JobChange_common( job_name , job_id )
local current_job, current_jlv, job_depth
-- 임시 변수 선언과 동시에 NPC ID 가져오기
local npc_id = get_npc_id()
-- 시작
-- NPC 대화 최종 단계에서 마스터 클래스 전직 조건 한번 더 하기
-- 마스터 사탄소녀
if npc_id == 11555 then
--================================================================================
-- 전직 불가능한 경우 골라내기
--================================================================================
-- 마스터 클래스 전직 가능 여부
if get_value( "job_depth" ) == 2 then
-- 전직 불가능한 조건이면 튕김
-- 전직 조건 변경 : 145 -> 148 2011년 4월 18일 우상욱
if get_value( "level" ) < 147 or get_value( "job_level" ) < 49 then
-- 마스터 사탄소녀
dlg_title( "@91002405" )
if is_able_to_jobchange() == true then
dlg_text( "@91002407" )
dlg_menu( "@90010003", "goto_hactor()" )
else
--지금은 마스터클래스로의 전직이 불가능한 상태입니다.
dlg_text( "@91002406" )
dlg_menu( "@90010003", "goto_hactor()" )
end
dlg_menu( "@90010002", "" )
dlg_show()
return
-- 전직 가능할 때 테섭이 아니면 튕김.
else
if is_able_to_jobchange() == false then
dlg_title( "@91002405" )
dlg_text( "@91002406" )
dlg_menu( "@90010002", "" )
dlg_show()
return
end
end
-- 이미 3차직업인 상태. 더이상 전직은 불가능함
elseif get_value("job_depth") == 3 then
dlg_title( "@91002405" )
-- 더 이상 전직이 불가능하다는 멘트
dlg_text( "@91002408" )
--TP 포인트란?
dlg_menu( "@91002550", "tp_point_2()")
dlg_menu( "@90010003", 'goto_hactor()' )
dlg_menu( "@90010002", "" )
dlg_show()
return
-- 1차 직업이 여기서 뭐하니? 누구랑 왔니? 전직 하고 와라 -_-
else
dlg_title( "@91002405" )
if get_value("job") == 200 then
job_name = "@1356"
elseif get_value("job") == 201 then
job_name = "@1357"
elseif get_value("job") == 202 then
job_name = "@1358"
elseif get_value("job") == 203 then
job_name = "@1359"
elseif get_value("job") == 100 then
job_name = "@1342"
elseif get_value("job") == 101 then
job_name = "@1343"
elseif get_value("job") == 102 then
job_name = "@1344"
elseif get_value("job") == 103 then
job_name = "@1345"
elseif get_value("job") == 300 then
job_name = "@1372"
elseif get_value("job") == 301 then
job_name = "@1373"
elseif get_value("job") == 302 then
job_name = "@1374"
elseif get_value("job") == 303 then
job_name = "@1375"
end
dlg_text_without_quest_menu(sconv("@91002426", "#@job_name@#",job_name))
dlg_menu( "@90010002", "" )
dlg_show()
return
end
end -- if 끝
-- NPC 대화 최종 단계에서 마스터 클래스 전직 조건 한번 더 하기
--종료
-- 에헤라디야~~ 전직이요~
-- 가이아 일 때 (4004)
if npc_id == 4004 then
dlg_title( "@90400401" )
-- 데바 일 때 (1004)
elseif npc_id == 1004 then
dlg_title( "@90100401" )
-- 아수라 일 때 (2004)
elseif npc_id == 2004 then
dlg_title( "@90200401" )
-- 론도 일 때 (6004)
elseif npc_id == 6004 then
dlg_title( "@90600401" )
-- 도시 유적 일 때 (7032)
elseif npc_id == 7032 then
dlg_title( "@90703201" )
-- 시크루트 일 때 (7004)
elseif npc_id == 7004 then
dlg_title( "@90700401" )
-- 마스터 사탄소녀
elseif npc_id == 11555 then
dlg_title( "@91002405" )
end -- if 끝
-- 가이아 일 때 (4004)
if npc_id == 4004 then
dlg_text_without_quest_menu(sconv("@90400406", "#@job_name@#",job_name))
--##끝 축하하네!!<BR>지금 이순간부터 자넨 #@job_name@#(/이)라는 직업을 가지게 되었어.<BR>보다 높은 곳을 향해 정진하도록 하게.'
-- 데바 일 때 (1004)
elseif npc_id == 1004 then
dlg_text_without_quest_menu(sconv("@90100406", "#@job_name@#",job_name))
--##끝 축하하네!!<BR>지금 이순간부터 자넨 #@job_name@#(/이)라는 직업을 가지게 되었어.<BR>보다 높은 곳을 향해 정진하도록 하게.'
-- 아수라 일 때 (2004)
elseif npc_id == 2004 then
dlg_text_without_quest_menu(sconv("@90200406", "#@job_name@#",job_name))
--##끝 축하하네!!<BR>지금 이순간부터 자넨 #@job_name@#(/이)라는 직업을 가지게 되었어.<BR>보다 높은 곳을 향해 정진하도록 하게.'
-- 론도 일 때 (6004)
elseif npc_id == 6004 then
dlg_text_without_quest_menu(sconv("@90600406", "#@job_name@#",job_name))
--##끝 축하하네!!<BR>지금 이순간부터 자넨 #@job_name@#(/이)라는 직업을 가지게 되었어.<BR>보다 높은 곳을 향해 정진하도록 하게.'
-- 도시 유적 일 때 (7032)
elseif npc_id == 7032 then
dlg_text_without_quest_menu(sconv("@90703206", "#@job_name@#",job_name))
--##끝 축하하네!!<BR>지금 이순간부터 자넨 #@job_name@#(/이)라는 직업을 가지게 되었어.<BR>보다 높은 곳을 향해 정진하도록 하게.'
-- 시크루트 일 때 (7004)
elseif npc_id == 7004 then
dlg_text_without_quest_menu(sconv("@90700406", "#@job_name@#",job_name))
--##끝 축하하네!!<BR>지금 이순간부터 자넨 #@job_name@#(/이)라는 직업을 가지게 되었어.<BR>보다 높은 곳을 향해 정진하도록 하게.'
-- 마스터 사탄소녀
elseif npc_id == 11555 then
dlg_text_without_quest_menu(sconv("@91002425", "#@job_name@#",job_name))
local master_up = sconv("@246", "#@user_name@#", get_value("name"),"#@job_name@#",job_name)
announce( master_up )
--##끝 축하하네!!<BR>지금 이순간부터 자넨 #@job_name@#(/이)라는 직업을 가지게 되었어.<BR>보다 높은 곳을 향해 정진하도록 하게.'
end -- if 끝
dlg_menu( "@90010002", '' )
dlg_show()
-- 전직 전 직업과 잡레벨을 저장한다.
current_job = get_value( "job" )
current_jlv = get_value( "job_level" )
job_depth = get_value( "job_depth" )
if job_depth == 0 then
set_value( "job_0", current_job )
set_value( "jlv_0", current_jlv )
--0차에서 1차 전직할때 "신성한 불꽃의 힘" 아이템을 1개 지급해준다. 해당 아이템은 잡화상점에서도 판매한다.
--insert_item( 2013081, 1 ) --아이템 능력치가 너무 좋아서 미적용으로 수정
--cprint( "@90606144" )
elseif job_depth == 1 then
set_value( "job_1", current_job )
set_value( "jlv_1", current_jlv )
elseif job_depth == 2 then
set_value( "job_2", current_job )
set_value( "jlv_2", current_jlv )
--마스터클래스 전직 전 직업과 잡레벨 저장
elseif job_depth == 3 then
set_value( "job_3", current_job )
set_value( "jlv_3", current_jlv )
end
job_depth = job_depth + 1
-- 전직 시키기.
set_value( "job" , job_id )
set_value( "job_level" , 1 )
set_value( "job_depth" , job_depth )
--##시작
message( sconv("@90010017", "#@job_name@#",job_name) )
--끝 #@job_name@# (/으)로 전직했습니다
end
------------------------------------------------------------------------------------------------------------------------
------------------------- 수련자의 섬 잡 서포터는 튜토리얼에 있습니다. 이건 사용하지 않습니다. -------------------------
------------------------------------------------------------------------------------------------------------------------
--=====================================================
-- 초보자섬 섬 용
--=====================================================
function NPC_JobChange_Beginner_contact()
--================================================================================
-- 전직 불가능한 경우 골라내기
--================================================================================
-- 기본직업일 때 Lv이나 JLv이 10 미만이면 전직불가.
if get_value( "job_depth" ) == 0 then
if get_value( "level" ) < 10 or get_value( "job_level" ) < 10 then
dlg_title( "@90300401" )
dlg_text( "@90300403" )
dlg_menu( "@90010002", "" )
dlg_show()
return
end
-- 1차 직업일 때 Lv50 미만 JLv이 40 미만이면 전직불가. (해제) 2차 직업 전직 모두 막기.
elseif get_value( "job_depth" ) == 1 then
if get_value( "level" ) < 50 or get_value( "job_level" ) < 40 then
dlg_title( "@90300401" )
-- dlg_text( "@90300409" )
dlg_text( "@90300402" ) --> 임시 : 2차전직 불가능하다는 안내메세지
dlg_menu( "@90010002", "" )
dlg_show()
return
else
dlg_title( "@90300401" )
dlg_text( "@90300402" ) --> 임시 : 2차전직 불가능하다는 안내메세지
dlg_menu( "@90010002", "" )
dlg_show()
return
end
-- 여기까지 오면 2차직업인 상태. 3차로의 전직은 불가능함.
else
dlg_title( "@90300401" )
dlg_text( "@90300402" ) --> 지금은 3차전직 안된다는 대사
dlg_menu( "@90010002", "" )
dlg_show()
return
end
-- 여기까지 왔으면 전직 가능
local race = get_value( "race" )
local job_name1, job1, job_name2, job2, job_name3, job3, number_job, current_job
dlg_title( "@90300401" )
-- 전직 가능한 직업의 개수를 초기화. 기본이 3이니 그냥 3으로...
number_job = 3
-- 현재 직업 ID를 받아 놓는다.
current_job = get_value( "job" )
--================================================================================
-- 1차 전직일 경우. (테이블에서 못읽어오므로 전직정보는 여기서 고치자)
--================================================================================
if get_value( "job_depth" ) == 0 then
dlg_text( "@90300404" )
-- 전직 가능한 직업의 개수를 설정. 1차 전직이므로 모두 3 이다.
number_job = 3
--============================================================================
-- 얘가 데바면 디바인솔져 201 또는 클레릭 203, 브리더 204가 될 수 있다.
if race == 4 then
job_name1 = "@10201"
job1 = 201
job_name2 = "@10202"
job2 = 202
job_name3 = "@10203"
job3 = 203
--============================================================================
-- 아수라면 스트라이더301나 다크매지션303, 소서러304가 될 수 있다.
elseif race == 5 then
job_name1 = "@10301"
job1 = 301
job_name2 = "@10302"
job2 = 302
job_name3 = "@10303"
job3 = 303
--============================================================================
-- 데바도 아수라도 아니면 가이아겠지. 투사 101, 주술사 103, 마수사 104 가 될 수 있다.
else
job_name1 = "@10101"
job1 = 101
job_name2 = "@10102"
job2 = 102
job_name3 = "@10103"
job3 = 103
end
end
if number_job == 1 then
dlg_menu( job_name1 , "Run_JobChange_Beginner_check( '" .. job_name1 .. "' , " .. job1 .. " )" )
elseif number_job == 2 then
dlg_menu( job_name1 , "Run_JobChange_Beginner_check( '" .. job_name1 .. "' , " .. job1 .. " )" )
dlg_menu( job_name2 , "Run_JobChange_Beginner_check( '" .. job_name2 .. "' , " .. job2 .. " )" )
elseif number_job == 3 then
dlg_menu( job_name1 , "Run_JobChange_Beginner_check( '" .. job_name1 .. "' , " .. job1 .. " )" )
dlg_menu( job_name2 , "Run_JobChange_Beginner_check( '" .. job_name2 .. "' , " .. job2 .. " )" )
dlg_menu( job_name3 , "Run_JobChange_Beginner_check( '" .. job_name3 .. "' , " .. job3 .. " )" )
else
end
dlg_menu( "@90010001", '' )
dlg_show()
end
function Run_JobChange_Beginner_check( job_name , job_id )
-- 클릭 실수했을지도 모르므로 확실한지 확인해줌.
cprint( job_name )
dlg_title( "@90300401" )
--##시작
--dlg_text( job_name .. "@90300405" )
dlg_text_without_quest_menu(sconv("@90300405", "#@job_name@#",job_name))
--##끝 #@job_name@# (/으)로의 전직이라...<BR>좋은 직업을 골랐군.<BR>확실한가?
dlg_menu( "@90010007", "Run_JobChange_Beginner( '" .. job_name .. "' , " .. job_id ..' )' )
dlg_menu( "@90010001", '' )
dlg_show()
end
function Run_JobChange_Beginner( job_name , job_id )
local current_job, current_jlv
-- 에헤라디야~~ 전직이요~
dlg_title( "@90300401" )
--##시작
dlg_text_without_quest_menu(sconv("@90300406", "#@job_name@#", job_name))
--##끝 축하하네!!<BR>지금 이순간부터 자넨 #@job_name@#(/이)라는 직업을 가지게 되었어.<BR>보다 높은 곳을 향해 정진하도록 하게.'
dlg_menu( "@90010002", '' )
dlg_show()
-- 전직 전 직업과 잡레벨을 저장한다.
current_job = get_value( "job" )
current_jlv = get_value( "job_level" )
if get_value( "job_depth" ) == 0 then
set_value( "job_0", current_job )
set_value( "jlv_0", current_jlv )
elseif get_value( "job_depth" ) == 1 then
set_value( "job_1", current_job )
set_value( "jlv_1", current_jlv )
elseif get_value( "job_depth" ) == 2 then
set_value( "job_2", current_job )
set_value( "jlv_2", current_jlv )
end
-- 전직 시키기.
set_value( "job" , job_id )
set_value( "job_level" , 1 )
set_value( "job_depth" , 1 )
--##시작
message( sconv("@90010017", "#@job_name@#",job_name) )
--##끝 #@job_name@# (/으)로 전직했습니다.
end
------------------------------------------------------------------------------------------------------------------------
------------------------- 수련자의 섬 잡 서포터는 튜토리얼에 있습니다. 이건 사용하지 않습니다. -------------------------
------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
--마스터 클래스 스킬 초기화 스크립트 메인
--루피로 초기화 하기
function gold_skill_reset_check( npc_id )
local reset_gold = { 10000, 2500000, 5000000, 10000000, 25000000, 50000000, 100000000, 500000000, 1000000000, 2000000000 }
local reset_count = NPC_JobChange_get_resetcount()
local cost_gold = reset_gold[ reset_count + 1 ]
local gold = get_value( 'gold' )
local npc_id = get_npc_id()
local npc_name = "@"..get_npc_type().."|@"..get_npc_name()
dlg_title( npc_name )
if gold >= cost_gold then
set_value( 'gold', gold - cost_gold )
reset_skill( 3 )
if reset_count < 9 then
set_flag( 'reset_count', reset_count + 1 )
dlg_text( "@90604805" )
dlg_menu( "@90010002", "" )
dlg_show()
return
else
set_flag( 'reset_count', 9 )
dlg_text( "@90604805" )
dlg_menu( "@90010002", "" )
dlg_show()
return
end
else
dlg_text( "@90604806" )
dlg_menu( "@90010002", "" )
dlg_show()
return
end
end
--JP로 초기화 하기
function jp_skill_reset_check( npc_id )
local reset_jp = { 2000, 500000, 1000000, 2000000, 5000000, 10000000, 20000000, 100000000, 200000000, 400000000 }
local reset_count = NPC_JobChange_get_resetcount()
local cost_jp = reset_jp[ reset_count + 1 ]
local jp = get_value( 'jp' )
local npc_id = get_npc_id()
local npc_name = "@"..get_npc_type().."|@"..get_npc_name()
dlg_title( npc_name)
if jp >= cost_jp then
set_value( 'jp', jp - cost_jp )
reset_skill( 3 )
if reset_count < 9 then
set_flag( 'reset_count', reset_count + 1 )
dlg_text( "@90604805" )
dlg_menu( "@90010002", "" )
dlg_show()
return
else
set_flag( 'reset_count', 9 )
dlg_text( "@90604805" )
dlg_menu( "@90010002", "" )
dlg_show()
return
end
else
dlg_text( "@90604806" )
dlg_menu( "@90010002", "" )
dlg_show()
return
end
end
--마스터 클래스 스킬 초기화 카운터 증가 없이 실행
function item_skill_reset()
reset_skill( 3 )
cprint("@90604808")
return
end
--마스터 클래스 초기화 카운터 초기화 하기
function Skill_reset_count_init()
local reset_count = NPC_JobChange_get_resetcount()
set_flag( 'reset_count', 0 )
cprint("@90604807")
return
end
--성별 변환 하기
function Change_Character_Gender()
local transgender = get_value("sex")
if transgender == 1 then
set_value("sex", 2) -- 성별 바꿔주고
elseif transgender == 2 then
set_value("sex", 1)
end
end
-------------------------------------------------------------------------------------------------------------------------