|
You last visited: Today at 04:55
Advertisement
[Help Thread] Please post your questions here.
Discussion on [Help Thread] Please post your questions here. within the Rappelz Private Server forum part of the Rappelz category.
01/27/2015, 02:11
|
#4201
|
elite*gold: 0
Join Date: Feb 2013
Posts: 119
Received Thanks: 13
|
hey i need EN 9.1 StringReource Do any one have it O_o"?
|
|
|
01/27/2015, 12:22
|
#4202
|
elite*gold: 0
Join Date: Sep 2008
Posts: 1,606
Received Thanks: 1,210
|
Quote:
Originally Posted by mohamad512
hey i need EN 9.1 StringReource Do any one have it O_o"?
|
|
|
|
01/28/2015, 05:57
|
#4203
|
elite*gold: 0
Join Date: Feb 2013
Posts: 119
Received Thanks: 13
|
Thx c1ph3r for answer me.
Ihave another question .. I have made a program in c# and now I wanna Ecrypte it so no one can see tt codes @@ do any one have a tutorial for it.
|
|
|
01/28/2015, 09:46
|
#4204
|
elite*gold: 0
Join Date: Jun 2008
Posts: 104
Received Thanks: 14
|
i usually dont ask for help but can any1 point me in the right direction in getting the item ancient magic scrolls working its item id is 601100308 and its mix resource is and thats as far as i have gotten any help would be appreciated
Quote:
|
10694 601 601100308 1 100 5 5 0 5 0 0 0 0 0 0 0 0 0 0 3 10 0 0 0 2013410 1 0 0 0 3 10 0 0 0 2013411 1 0 0 0 3 10 0 0 0 2013412 1 0 0 0 3 10 0 0 0 2013413 1 0 0 0 3 10 0 0 0 2013414 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
|
|
01/28/2015, 13:12
|
#4205
|
elite*gold: 0
Join Date: Aug 2011
Posts: 532
Received Thanks: 234
|
Can anyone explain the following columns in dbo.MonsterResource?
,[camera_x]
,[camera_y]
,[camera_z]
,[target_x]
,[target_y]
,[target_z]
,[grp]
,[magic_type]
,[monster_type]
,[material]
,[taming_exp_mod]
,[texture_group]
,[local_flag]
,[f_fisrt_attack]
,[f_group_first_attack]
,[f_response_casting]
,[f_response_race]
,[f_response_battle]
,[fight_type]
,[monster_skill_link_id]
,[weapon_type]
,[attack_motion_speed]
,[hidesense_range]
|
|
|
01/28/2015, 13:50
|
#4206
|
elite*gold: 0
Join Date: Apr 2013
Posts: 29
Received Thanks: 8
|
Quote:
Originally Posted by marekrndr
Can anyone explain the following columns in dbo.MonsterResource?
,[camera_x]
,[camera_y]
,[camera_z]
,[target_x] --used till e8 for the profil picture of the mob
,[target_y] --used till e8 for the profil picture of the mob
,[target_z] --used till e8 for the profil picture of the mob
,[grp] --used for different groups to let the server know wich rage each mob uses (f_group_first_attack)
e.g. unicorns with same group will attacks in groups etc
,[magic_type]
,[monster_type] --this declares what kind of mob it is (eg 1 normal field, 2 field boss,3 dungeon mob etc)
,[material]
,[taming_exp_mod] --how much increase the amount of gained exp after killing from taming
,[texture_group] --what dds file has to be loaded for the model (eg normal white dragon uses -1/ staged uses 1
,[local_flag] --on what country code is this mob enabled (0 for all/1 for korea/2 for hong kong/3 for korea + hong kong etc)
,[f_fisrt_attack] --declare if the mob attacks on seeing
,[f_group_first_attack] --mentioned above
,[f_response_casting] --declare of the mob starts attacking while casting a skill on it
,[f_response_race] --mentioned above
,[f_response_battle] --should be clear now
,[fight_type]
,[monster_skill_link_id] --are you seroius?
,[weapon_type]
,[attack_motion_speed] --how fast the attack will be shown (used for model)
,[hidesense_range] --how much meter can the mob detect hiding assassins
|
Im not sure if youre seroius about these questions but here it goes
|
|
|
01/28/2015, 15:04
|
#4207
|
elite*gold: 0
Join Date: May 2014
Posts: 44
Received Thanks: 13
|
Quote:
Originally Posted by marekrndr
Can anyone explain the following columns in dbo.MonsterResource?
,[camera_x]
,[camera_y]
,[camera_z]
,[target_x]
,[target_y]
,[target_z]
,[grp]
,[magic_type]
,[monster_type]
,[material]
,[taming_exp_mod]
,[texture_group]
,[local_flag]
,[f_fisrt_attack]
,[f_group_first_attack]
,[f_response_casting]
,[f_response_race]
,[f_response_battle]
,[fight_type]
,[monster_skill_link_id]
,[weapon_type]
,[attack_motion_speed]
,[hidesense_range]
|
Hi , here's what I know ... ( Not totally sure)
,[camera_x] : //
,[camera_y] : //
,[camera_z] : //
,[target_x] : //
,[target_y] : //
,[target_z] : //
,[grp] : What group of monsters it comes
,[magic_type] : //
,[monster_type] : Type monster : Human / Demon / etc
,[material] : Type of weapon used : Distance / corp to corp etc.
,[taming_exp_mod] : //
,[texture_group] : For a monster group uses the same texture ?
,[local_flag] : //
,[f_fisrt_attack] : //
,[f_group_first_attack] : group first attack
,[f_response_casting] : Reaction time before the monster
,[f_response_race] : Response speed
,[f_response_battle] : Speed before the attack?
,[fight_type] : type of attack
,[monster_skill_link_id] : What is he going to attack using example: 104007 = the spell of the witch
,[weapon_type] : What weapon to use to see if it will or not typing away
,[attack_motion_speed] : Motion attack speed
,[hidesense_range] : //
Sorry for me bad english.
|
|
|
01/28/2015, 15:19
|
#4208
|
Moderator
elite*gold: 1
Join Date: Dec 2012
Posts: 4,915
Received Thanks: 1,492
|
Target x, y, and z is the location of the mouse target box for selection other than tab.
hidesense_range is for the edit they made where mobs can detect assassins and it is how far away you need to be when cloaked to not be detected.
f_first_attack: Is it an auto aggressive monster (guessing)
f_group_first_attack: Is it linking (guessing)
local_flag: regional setting (guessing)
|
|
|
01/28/2015, 20:39
|
#4209
|
elite*gold: 0
Join Date: Mar 2010
Posts: 10
Received Thanks: 0
|
Hello, I was wondering if somebody could lead me in the right direction. I'm trying to make new instances for custom areas. Mostly to fix underground dungeons in royal repack but also because i'd like to instance other places as well. So far I created the instance IDs on my database and tried to edit the 3e4d6704e4e128bacd554318bb2e78cf.lua to work with other maps.
InstanceDungeonResource:
InstanceDungeonTypeResource:
Moonlight was allegedly 99% working already, so I just tried to replicate the same lines of code that dealt with moon, but with different maps. Unfortunately all I managed to do was break the leaving portal that spawned every time I warped to UG Moonlight...
Here's the .LUA in case you need to see what I did to it. It's probably all wrong... please no laugherino/flamerino. I'm new to rappelz developing...
Code:
--- Lua 스크립트 암호화
function get_module_name()
return "ETC_dungeon_prop"
end
-- 제어장치 및 코어 점령시 호출될 함수.
-- 내부적으로 서버에서 제공하는 소유권 변경 함수 및 주변 몹 리젠 함수( respawn_near_mob( range ) )가 사용됨.
function casting_tactical_position( dungeon_id, position_id )
-- 호출된 지점의 (제어장치 혹은 던전 코어) 소유권을 변경시키는 부분
change_tactical_position_owner( dungeon_id, position_id )
-- 변경된 지점 주변의 가디언을 리젠
respawn_guardian_object( dungeon_id, position_id )
end
-- 던전 출구 클릭시 필드로 텔레포트 시켜 주는 일반 함수.
function exit_dungeon( dungeon_id )
-- 잃어버린 던전1
if dungeon_id == 130000 then
-- TO DO : 던전 입구 쪽의 텔레포트 좌표 넣어야 함
warp( 155817 + math.random(0,60) , 103724 + math.random(0,60) )
-- 잃어버린 던전2
elseif dungeon_id == 130600 then
-- TO DO : 던전 입구 쪽의 텔레포트 좌표 넣어야 함
warp( 152309 + math.random(0,60) , 102886 + math.random(0,60) )
-- 수정 계곡1
elseif dungeon_id == 130300 then
-- TO DO : 던전 입구 쪽의 텔레포트 좌표 넣어야 함
warp( 103210 + math.random(0,60) , 100366 + math.random(0,60) )
-- 수정 계곡2
elseif dungeon_id == 130500 then
-- TO DO : 던전 입구 쪽의 텔레포트 좌표 넣어야 함
warp( 99757 + math.random(0,60) , 103236 + math.random(0,60) )
-- 메마른 달빛의 유적1
elseif dungeon_id == 130400 then
-- TO DO : 던전 입구 쪽의 텔레포트 좌표 넣어야 함
warp( 132995 + math.random(0,60) , 87096 + math.random(0,60) )
-- 메마른 달빛의 유적2
elseif dungeon_id == 130700 then
-- TO DO : 던전 입구 쪽의 텔레포트 좌표 넣어야 함
warp( 130842 + math.random(0,60) , 79586 + math.random(0,60) )
-- 팔미르 제 1 유적
elseif dungeon_id == 130800 then
-- TO DO : 던전 입구 쪽의 텔레포트 좌표 넣어야 함
warp( 132680 + math.random(0,60) , 128030 + math.random(0,60) )
-- 팔미르 제 2 유적
elseif dungeon_id == 130900 then
-- TO DO : 던전 입구 쪽의 텔레포트 좌표 넣어야 함
warp( 137441 + math.random(0,60) , 128115 + math.random(0,60) )
-- 잃어버린 비밀의 섬(백룡의 쉼터)
elseif dungeon_id == 121000 then
-- TO DO : 던전 입구 쪽의 텔레포트 좌표 넣어야 함
warp( 91942 + math.random(0,60) , 117103 + math.random(0,60) )
-- 잃어버린 비밀의 섬(흑룡의 그늘)
elseif dungeon_id == 122000 then
-- TO DO : 던전 입구 쪽의 텔레포트 좌표 넣어야 함
warp( 85752 + math.random(0,60) , 118062 + math.random(0,60) )
-- 잃어버린 비밀의 섬(사룡의 심장)
elseif dungeon_id == 123000 then
-- TO DO : 던전 입구 쪽의 텔레포트 좌표 넣어야 함
warp( 91998 + math.random(0,60) , 124400 + math.random(0,60) )
-- 엘 카시아 워프 프랍 (엘 카시아 -> 마르두카 폭포 필드)
elseif dungeon_id == 120700 then
-- TO DO : 던전 입구 쪽의 텔레포트 좌표 넣어야 함
warp( 146015 + math.random(0,61) , 135591+ math.random(0,10) )
-- 숨겨진 팔미르 던전 워프 프랍 (숨겨진 팔미르 입구 -> 팔미르 제 1 실 입구 필드)
elseif dungeon_id == 120292 then
-- TO DO : 던전 입구 쪽의 텔레포트 좌표 넣어야 함
warp( 132680 + math.random(0,60) , 128030 + math.random(0,60) )
-- 숨겨진 수정 계곡 던전 워프 프랍 (숨겨진 수정 계곡 입구 -> 수정 계곡 입구 필드)
elseif dungeon_id == 70192 then
-- TO DO : 던전 입구 쪽의 텔레포트 좌표 넣어야 함
warp( 103234+ math.random(0,60) , 100310 + math.random(0,60) )
end
end
function warp_gate( prop_id )
-- 퀘스트 상태 체크 get_quest_progress(ID)
-- 반환값 -1 : 아무것도 아님 / 0 : 수락가 / 1 : 수행중 / 2 : 종료가능 / 255 : 이미종료
local quest_progress1 = get_quest_progress(1244) -- 유령선 나비스라미아: 진행 1
local quest_progress2 = get_quest_progress(1245) -- 유령선 나비스라미아: 진행 2
local quest_progress3 = get_quest_progress(1247) -- 유령선 나비스라미아: 진행 3
-- 고리수정
local item_lamia_sujung_1 = find_item ( 1000077 )
local item_lamia_sujung_handle = get_item_handle ( 1000077 )
local currentposition = get_value('layer')
local party_id = get_value( 'party_id' )
-- 나비스 라미아 갑판
if prop_id == 130881 then
if item_lamia_sujung_1 == 1 then
-- 퀘스트 도중 다시 처음부터 시작 할때 진행 불가
--if quest_progress1 == 2 then
-- 첫번째 퀘스트 시작전이면(수행중이면)
--if quest_progress2 == 1 then
-- 텔레포트 좌표
warp( 190072 + math.random(0,10) , 34171+ math.random(0,10), gv("layer") )
else
cprint( "@1233" ) -- '워프게이트 사용을 위한 허가를 받지 못했습니다.'
end
end
-- 나비스 라미아 조타실
if prop_id == 130882 then
-- 퀘스트 도중 다시 처음부터 시작 할때 진행 불가
--if quest_progress2 == 2 then
-- 첫번째 퀘스트 시작전이면(수행중이면)
--if quest_progress2 == 1 then
-- 텔레포트 좌표
warp( 189645 + math.random(0,10) , 36119+ math.random(0,10), gv("layer") )
--else
--cprint( "@1233" )
--end
end
-- 나비스 라미아 주방
if prop_id == 130883 then
-- 퀘스트 도중 다시 처음부터 시작 할때 진행 불가
if quest_progress3 == 2 or quest_progress3 == 255 then
-- 첫번째 퀘스트 시작전이면(수행중이면)
--if quest_progress3 == 1 then
-- 텔레포트 좌표
warp( 190018 + math.random(0,10) , 37865+ math.random(0,10), gv("layer") )
else
cprint( "@1233" )
end
end
-- 수련자의 섬 선착장
if prop_id == 130880 then
-- 텔레포트 좌표
warp(175274 + math.random(0,10) , 62743+ math.random(0,10), gv("layer") )
-- 나비스 라미아 노선실
elseif prop_id == 130884 then
-- 텔레포트 좌표
warp( 190008 + math.random(0,10) , 40519+ math.random(0,10), gv("layer") )
-- 나비스 라미아 노선실
elseif prop_id == 130885 then
-- 텔레포트 좌표
warp( 187541 + math.random(0,10) , 36391+ math.random(0,10), gv("layer") )
-- 나비스 라미아 노선실
elseif prop_id == 130886 then
-- 텔레포트 좌표
warp( 187541 + math.random(0,10) , 37946+ math.random(0,10), gv("layer") )
-- 나비스 라미아 노선실
elseif prop_id == 130887 then
-- 텔레포트 좌표
warp( 187541 + math.random(0,10) , 39622+ math.random(0,10), gv("layer") )
-- 나비스 라미아 노선실
elseif prop_id == 130888 then
-- 텔레포트 좌표
warp( 192531 + math.random(0,10) , 39596+ math.random(0,10), gv("layer") )
-- 나비스 라미아 노선실
elseif prop_id == 130889 then
-- 텔레포트 좌표
warp( 192531 + math.random(0,10) , 37943+ math.random(0,10), gv("layer") )
-- 나비스 라미아 노선실
elseif prop_id == 130890 then
-- 텔레포트 좌표
warp( 192531 + math.random(0,10) , 36385+ math.random(0,10), gv("layer") )
-- 나비스 라미아 식료품창고
elseif prop_id == 130874 then
-- 텔레포트 좌표
warp( 189811 + math.random(0,10) , 37968+ math.random(0,10), gv("layer") )
-- 나비스 라미아 객실1
elseif prop_id == 130875 then
-- 텔레포트 좌표
warp( 189811 + math.random(0,10) , 38128+ math.random(0,10), gv("layer") )
-- 나비스 라미아 잡화창고
elseif prop_id == 130876 then
-- 텔레포트 좌표
warp( 189811 + math.random(0,10) , 38323+ math.random(0,10), gv("layer") )
-- 나비스 라미아 라미아의 눈물
elseif prop_id == 130877 then
-- 텔레포트 좌표
warp( 190232 + math.random(0,10) , 38325+ math.random(0,10), gv("layer") )
-- 나비스 라미아 객실2
elseif prop_id == 130878 then
-- 텔레포트 좌표
warp( 190232 + math.random(0,10) , 38127+ math.random(0,10), gv("layer") )
-- 나비스 라미아 생체실험 준비실
elseif prop_id == 130879 then
-- 텔레포트 좌표
warp( 190232 + math.random(0,10) , 37967+ math.random(0,10), gv("layer") )
-- 나비스 라미아 선장실
elseif prop_id == 130974 then
-- 텔레포트 좌표
warp( 175249 + math.random(0,10) , 60932+ math.random(0,10), gv("layer") )
-------------------------------------------------------------------------------
-- 팔미르 유적 --
-------------------------------------------------------------------------------
-- 팔미르 제 1 유적 워프 프랍 1 번
elseif prop_id == 130801 then
-- 텔레포트 좌표
warp( 210380 + math.random(0,10) , 136234+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 2 번
elseif prop_id == 130802 then
-- 텔레포트 좌표
warp( 219449 + math.random(0,10) , 129851+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 3 번
elseif prop_id == 130803 then
-- 텔레포트 좌표
warp( 219913 + math.random(0,10) , 133705+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 4 번
elseif prop_id == 130804 then
-- 텔레포트 좌표
warp( 219712 + math.random(0,10) , 133084+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 5 번
elseif prop_id == 130805 then
-- 텔레포트 좌표
warp( 214456 + math.random(0,10) , 136681+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 6 번
elseif prop_id == 130806 then
-- 텔레포트 좌표
warp( 213631 + math.random(0,10) , 136637+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 7 번
elseif prop_id == 130807 then
-- 텔레포트 좌표
warp( 214263 + math.random(0,10) , 137450+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 8 번
elseif prop_id == 130808 then
-- 텔레포트 좌표
warp( 220659 + math.random(0,10) , 133638+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 9 번
elseif prop_id == 130809 then
-- 텔레포트 좌표
warp( 210201 + math.random(0,10) , 139440+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 10 번
elseif prop_id == 130810 then
-- 텔레포트 좌표
warp( 218003 + math.random(0,10) , 129314+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 11 번
elseif prop_id == 130811 then
-- 텔레포트 좌표
warp( 217804 + math.random(0,10) , 133780+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 12 번
elseif prop_id == 130812 then
-- 텔레포트 좌표
warp( 218185 + math.random(0,10) , 134275+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 13 번
elseif prop_id == 130813 then
-- 텔레포트 좌표
warp( 213922 + math.random(0,10) , 134885+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 14 번
elseif prop_id == 130814 then
-- 텔레포트 좌표
warp( 214533 + math.random(0,10) , 135565+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 15 번
elseif prop_id == 130815 then
-- 텔레포트 좌표
warp( 224491 + math.random(0,10) , 134710+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 16 번
elseif prop_id == 130816 then
-- 텔레포트 좌표
warp( 223407 + math.random(0,10) , 134701+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 17 번
elseif prop_id == 130817 then
-- 텔레포트 좌표
warp( 217010 + math.random(0,10) , 140208+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 18 번
elseif prop_id == 130818 then
-- 텔레포트 좌표
warp( 216860 + math.random(0,10) , 139575+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 19 번
elseif prop_id == 130819 then
-- 텔레포트 좌표
warp( 216533 + math.random(0,10) , 140560+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 20 번
elseif prop_id == 130820 then
-- 텔레포트 좌표
warp( 223831 + math.random(0,10) , 134943+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 21 번
elseif prop_id == 130821 then
-- 텔레포트 좌표
warp( 224101 + math.random(0,10) , 142035+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 22 번
elseif prop_id == 130822 then
-- 텔레포트 좌표
warp( 224474 + math.random(0,10) , 141600+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 23 번
elseif prop_id == 130823 then
-- 텔레포트 좌표
warp( 223466 + math.random(0,10) , 141318+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 24 번
elseif prop_id == 130824 then
-- 텔레포트 좌표
warp( 221410 + math.random(0,10) , 144106+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 25 번
elseif prop_id == 130825 then
-- 텔레포트 좌표
warp( 220847 + math.random(0,10) , 143458+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 26 번
elseif prop_id == 130826 then
-- 텔레포트 좌표
warp( 220942 + math.random(0,10) , 144434+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 27 번
elseif prop_id == 130827 then
-- 텔레포트 좌표
warp( 219150 + math.random(0,10) , 139636+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 28 번
elseif prop_id == 130828 then
-- 텔레포트 좌표
warp( 219520 + math.random(0,10) , 140193+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 29 번
elseif prop_id == 130829 then
-- 텔레포트 좌표
warp( 220115 + math.random(0,10) , 139207+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 30 번
elseif prop_id == 130830 then
-- 텔레포트 좌표
warp( 219486 + math.random(0,10) , 139264+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 31 번
elseif prop_id == 130831 then
-- 텔레포트 좌표
warp( 213211 + math.random(0,10) , 142969+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 32 번
elseif prop_id == 130832 then
-- 텔레포트 좌표
warp( 217128 + math.random(0,10) , 136129+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 33 번
elseif prop_id == 130833 then
-- 텔레포트 좌표
warp( 218883 + math.random(0,10) , 137899+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 3-1 번
elseif prop_id == 130836 then
-- 텔레포트 좌표
warp( 219973 + math.random(0,10) , 133090+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 4-1 번
elseif prop_id == 130837 then
-- 텔레포트 좌표
warp( 220079 + math.random(0,10) , 133531+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 6-1 번
elseif prop_id == 130839 then
-- 텔레포트 좌표
warp( 214272 + math.random(0,10) , 137193+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 7-1 번
elseif prop_id == 130840 then
-- 텔레포트 좌표
warp( 213847 + math.random(0,10) , 136674+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 11-1 번
elseif prop_id == 130844 then
-- 텔레포트 좌표
warp( 217946 + math.random(0,10) , 134270+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 12-1 번
elseif prop_id == 130845 then
-- 텔레포트 좌표
warp( 217667 + math.random(0,10) , 133968+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 13-1 번
elseif prop_id == 130846 then
-- 텔레포트 좌표
warp( 214559 + math.random(0,10) , 135314+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 14-1 번
elseif prop_id == 130847 then
-- 텔레포트 좌표
warp( 214191 + math.random(0,10) , 134901+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 15-1 번
elseif prop_id == 130848 then
-- 텔레포트 좌표
warp( 223595 + math.random(0,10) , 134708+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 16-1 번
elseif prop_id == 130849 then
-- 텔레포트 좌표
warp( 224289 + math.random(0,10) , 134749+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 18-1 번
elseif prop_id == 130858 then
-- 텔레포트 좌표
warp( 216570 + math.random(0,10) , 140372+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 19-1 번
elseif prop_id == 130859 then
-- 텔레포트 좌표
warp( 216838 + math.random(0,10) , 139733+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 20-1 번
elseif prop_id == 130860 then
-- 텔레포트 좌표
warp( 217010 + math.random(0,10) , 140208+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 21-1 번
elseif prop_id == 130861 then
-- 텔레포트 좌표
warp( 223629 + math.random(0,10) , 141357+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 22-1 번
elseif prop_id == 130862 then
-- 텔레포트 좌표
warp( 224048 + math.random(0,10) , 141882+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 23-1 번
elseif prop_id == 130863 then
-- 텔레포트 좌표
warp( 224313 + math.random(0,10) , 141529+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 24-1 번
elseif prop_id == 130864 then
-- 텔레포트 좌표
warp( 220995 + math.random(0,10) , 144279+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 25-1 번
elseif prop_id == 130865 then
-- 텔레포트 좌표
warp( 221241 + math.random(0,10) , 144075+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 26-1 번
elseif prop_id == 130866 then
-- 텔레포트 좌표
warp( 220867 + math.random(0,10) , 143631+ math.random(0,10), gv("layer") )
-- 팔미르 제 1 유적 워프 프랍 33-1 번
elseif prop_id == 130873 then
-- 텔레포트 좌표
warp( 220001 + math.random(0,10) , 138279+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 1 번
elseif prop_id == 130901 then
-- 텔레포트 좌표
warp( 210380 + math.random(0,10) , 152362+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 2 번
elseif prop_id == 130902 then
-- 텔레포트 좌표
warp( 219449 + math.random(0,10) , 145979+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 3 번
elseif prop_id == 130903 then
-- 텔레포트 좌표
warp( 219913 + math.random(0,10) , 149833+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 4 번
elseif prop_id == 130904 then
-- 텔레포트 좌표
warp( 219712 + math.random(0,10) , 149212+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 5 번
elseif prop_id == 130905 then
-- 텔레포트 좌표
warp( 214456 + math.random(0,10) , 152809+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 6 번
elseif prop_id == 130906 then
-- 텔레포트 좌표
warp( 213631 + math.random(0,10) , 152765+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 7 번
elseif prop_id == 130907 then
-- 텔레포트 좌표
warp( 214263 + math.random(0,10) , 153578+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 8 번
elseif prop_id == 130908 then
-- 텔레포트 좌표
warp( 220659 + math.random(0,10) , 149766+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 9 번
elseif prop_id == 130909 then
-- 텔레포트 좌표
warp( 210201 + math.random(0,10) , 155568+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 10 번
elseif prop_id == 130910 then
-- 텔레포트 좌표
warp( 218003 + math.random(0,10) , 145442+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 11 번
elseif prop_id == 130911 then
-- 텔레포트 좌표
warp( 217803 + math.random(0,10) , 149850+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 12 번
elseif prop_id == 130912 then
-- 텔레포트 좌표
warp( 218185 + math.random(0,10) , 150403+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 13 번
elseif prop_id == 130913 then
-- 텔레포트 좌표
warp( 213922 + math.random(0,10) , 151013+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 14 번
elseif prop_id == 130914 then
-- 텔레포트 좌표
warp( 214533 + math.random(0,10) , 151693+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 15 번
elseif prop_id == 130915 then
-- 텔레포트 좌표
warp( 224491 + math.random(0,10) , 150838+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 16 번
elseif prop_id == 130916 then
-- 텔레포트 좌표
warp( 223407 + math.random(0,10) , 150829+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 17 번
elseif prop_id == 130917 then
-- 텔레포트 좌표
warp( 217010 + math.random(0,10) , 156336+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 18 번
elseif prop_id == 130918 then
-- 텔레포트 좌표
warp( 216860 + math.random(0,10) , 155703+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 19 번
elseif prop_id == 130919 then
-- 텔레포트 좌표
warp( 216533 + math.random(0,10) , 156688+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 20 번
elseif prop_id == 130920 then
-- 텔레포트 좌표
warp( 223831 + math.random(0,10) , 151071+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 21 번
elseif prop_id == 130921 then
-- 텔레포트 좌표
warp( 224101 + math.random(0,10) , 158163+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 22 번
elseif prop_id == 130922 then
-- 텔레포트 좌표
warp( 224474 + math.random(0,10) , 157728+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 23 번
elseif prop_id == 130923 then
-- 텔레포트 좌표
warp( 223466 + math.random(0,10) , 157446+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 24 번
elseif prop_id == 130924 then
-- 텔레포트 좌표
warp( 221410 + math.random(0,10) , 160234+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 25 번
elseif prop_id == 130925 then
-- 텔레포트 좌표
warp( 220847 + math.random(0,10) , 159586+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 26 번
elseif prop_id == 130926 then
-- 텔레포트 좌표
warp( 220942 + math.random(0,10) , 160562+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 27 번
elseif prop_id == 130927 then
-- 텔레포트 좌표
warp( 219150 + math.random(0,10) , 155764+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 28 번
elseif prop_id == 130928 then
-- 텔레포트 좌표
warp( 219520 + math.random(0,10) , 156321+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 29 번
elseif prop_id == 130929 then
-- 텔레포트 좌표
warp( 220115 + math.random(0,10) , 155335+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 30 번
elseif prop_id == 130930 then
-- 텔레포트 좌표
warp( 219486 + math.random(0,10) , 155392+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 31 번
elseif prop_id == 130931 then
-- 텔레포트 좌표
warp( 213211 + math.random(0,10) , 159097+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 32 번
elseif prop_id == 130932 then
-- 텔레포트 좌표
warp( 217128 + math.random(0,10) , 152257+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 33 번
elseif prop_id == 130933 then
-- 텔레포트 좌표
warp( 218883 + math.random(0,10) , 154027+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 3-1 번
elseif prop_id == 130936 then
-- 텔레포트 좌표
warp( 219973 + math.random(0,10) , 149218+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 4-1 번
elseif prop_id == 130937 then
-- 텔레포트 좌표
warp( 220079 + math.random(0,10) , 149659+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 6-1 번
elseif prop_id == 130939 then
-- 텔레포트 좌표
warp( 214272 + math.random(0,10) , 153321+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 7-1 번
elseif prop_id == 130940 then
-- 텔레포트 좌표
warp( 213847 + math.random(0,10) , 152802+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 11-1 번
elseif prop_id == 130944 then
-- 텔레포트 좌표
warp( 217946 + math.random(0,10) , 150398+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 12-1 번
elseif prop_id == 130945 then
-- 텔레포트 좌표
warp( 217725 + math.random(0,10) , 150104+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 13-1 번
elseif prop_id == 130946 then
-- 텔레포트 좌표
warp( 214559 + math.random(0,10) , 151442+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 14-1 번
elseif prop_id == 130947 then
-- 텔레포트 좌표
warp( 214191 + math.random(0,10) , 151029+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 15-1 번
elseif prop_id == 130948 then
-- 텔레포트 좌표
warp( 223595 + math.random(0,10) , 150836+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 16-1 번
elseif prop_id == 130949 then
-- 텔레포트 좌표
warp( 224289 + math.random(0,10) , 150877+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 18-1 번
elseif prop_id == 130958 then
-- 텔레포트 좌표
warp( 216570 + math.random(0,10) , 156500+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 19-1 번
elseif prop_id == 130959 then
-- 텔레포트 좌표
warp( 216838 + math.random(0,10) , 155861+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 20-1 번
elseif prop_id == 130960 then
-- 텔레포트 좌표
warp( 217010 + math.random(0,10) , 156336+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 21-1 번
elseif prop_id == 130961 then
-- 텔레포트 좌표
warp( 223629 + math.random(0,10) , 157485+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 22-1 번
elseif prop_id == 130962 then
-- 텔레포트 좌표
warp( 224048 + math.random(0,10) , 158010+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 23-1 번
elseif prop_id == 130963 then
-- 텔레포트 좌표
warp( 224313 + math.random(0,10) , 157657+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 24-1 번
elseif prop_id == 130964 then
-- 텔레포트 좌표
warp( 220995 + math.random(0,10) , 160407+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 25-1 번
elseif prop_id == 130965 then
-- 텔레포트 좌표
warp( 221241 + math.random(0,10) , 160203+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 26-1 번
elseif prop_id == 130966 then
-- 텔레포트 좌표
warp( 220867 + math.random(0,10) , 159759+ math.random(0,10), gv("layer") )
-- 팔미르 제 2 유적 워프 프랍 33-1 번
elseif prop_id == 130973 then
-- 텔레포트 좌표
warp( 220001 + math.random(0,10) , 154407+ math.random(0,10), gv("layer") )
-- 잃어버린 비밀의 섬 워프 프랍 1-1 번(설원분지 -> 잃어버린 비밀의 섬 갈림길)
-- [에픽 7 파트 1 잃어버린 섬 확장] '설원분지 출구' -> '드래곤의 둥지 입구'로 수정
elseif prop_id == 50750 then
-- 텔레포트 좌표
--warp( 84828 + math.random(0,10) , 117225+ math.random(0,10), gv("layer") )
-- 드래곤의 둥지로
warp( 105093 + math.random(0,10) , 137583+ math.random(0,10), gv("layer") )
-- 백룡의 쉼터 워프 프랍 2-1 번(해안가 -> 잃어버린 비밀의 섬)
elseif prop_id == 50752 then
-- 텔레포트 좌표
warp( 83286 + math.random(0,10) , 115722+ math.random(0,10), gv("layer") )
-- 백룡의 쉼터 워프 프랍 3-1 번(잃어버린 비밀의 섬 -> 해안가)
elseif prop_id == 50753 then
-- 텔레포트 좌표
warp( 122759 + math.random(0,10) , 121596+ math.random(0,10), gv("layer") )
-- 백룡의 쉼터 1-1 번(백색마력의 방 -> 설원분지)
elseif prop_id == 121052 then
-- 텔레포트 좌표
warp( 88817 + math.random(0,10) , 119671+ math.random(0,10), gv("layer") )
-------------------------------------------------------------------------------
--숨겨진 팔미르 유적 --
-------------------------------------------------------------------------------
-- 숨겨진 팔미르 제 2 유적 워프 프랍 1 번
elseif prop_id == 120201 then
-- 텔레포트 좌표
warp( 194248 + math.random(0,10) , 39475+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 2 번
elseif prop_id == 120202 then
-- 텔레포트 좌표
warp( 203311 + math.random(0,10) , 33102+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 3 번(4-1로)
elseif prop_id == 120203 then
-- 텔레포트 좌표
warp( 203764 + math.random(0,10) , 36956+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 4 번(3-1로)
elseif prop_id == 120204 then
-- 텔레포트 좌표
warp( 203595 + math.random(0,10) , 36319+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 5 번(8로)
elseif prop_id == 120205 then
-- 텔레포트 좌표
warp( 198345 + math.random(0,10) , 39913+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 6 번(7-1로)
elseif prop_id == 120206 then
-- 텔레포트 좌표
warp( 197500 + math.random(0,10) , 39866+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 7 번(6-1로)
elseif prop_id == 120207 then
-- 텔레포트 좌표
warp( 198129 + math.random(0,10) , 40672+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 8 번(5로)
elseif prop_id == 120208 then
-- 텔레포트 좌표
warp( 204551 + math.random(0,10) , 36884+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 9 번(x)
elseif prop_id == 120209 then
-- 텔레포트 좌표
warp( 206586 + math.random(0,10) , 37253+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 10 번(x)
elseif prop_id == 120210 then
-- 텔레포트 좌표
warp( 201082 + math.random(0,10) , 43561+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 11 번(12-1로)
elseif prop_id == 120211 then
-- 텔레포트 좌표
warp( 201646 + math.random(0,10) , 37038+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 12 번(11-1로)
elseif prop_id == 120212 then
-- 텔레포트 좌표
warp( 202047 + math.random(0,10) , 37505+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 13 번(14-1로)
elseif prop_id == 120213 then
-- 텔레포트 좌표
warp( 197827 + math.random(0,10) , 38102+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 14 번(13-1로)
elseif prop_id == 120214 then
-- 텔레포트 좌표
warp( 198409 + math.random(0,10) , 38745+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 15 번(16-1로)
elseif prop_id == 120215 then
-- 텔레포트 좌표
warp( 208402 + math.random(0,10) , 37935+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 16 번(15-1로)
elseif prop_id == 120216 then
-- 텔레포트 좌표
warp( 207232 + math.random(0,10) , 37941+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 17 번(20로)
elseif prop_id == 120217 then
-- 텔레포트 좌표
warp( 200869 + math.random(0,10) , 43459+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 18 번(19-1로)
elseif prop_id == 120218 then
-- 텔레포트 좌표
warp( 200732 + math.random(0,10) , 42791+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 19 번(18-1로)
elseif prop_id == 120219 then
-- 텔레포트 좌표
warp( 200396 + math.random(0,10) , 43797+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 20 번(17로)
elseif prop_id == 120220 then
-- 텔레포트 좌표
warp( 207712 + math.random(0,10) , 38200+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 21 번(22-1로)
elseif prop_id == 120221 then
-- 텔레포트 좌표
warp( 208041 + math.random(0,10) , 45458+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 22 번(23-1로)
elseif prop_id == 120222 then
-- 텔레포트 좌표
warp( 208358 + math.random(0,10) , 44855+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 23 번(21-1로)
elseif prop_id == 120223 then
-- 텔레포트 좌표
warp( 207265 + math.random(0,10) , 44540+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 24 번(25-1로)
elseif prop_id == 120224 then
-- 텔레포트 좌표
warp( 205305 + math.random(0,10) , 47347+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 25 번(26-1로)
elseif prop_id == 120225 then
-- 텔레포트 좌표
warp( 204730 + math.random(0,10) , 46691+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 26 번(24-1로)
elseif prop_id == 120226 then
-- 텔레포트 좌표
warp( 204780 + math.random(0,10) , 47705+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 27 번(29로)
elseif prop_id == 120227 then
-- 텔레포트 좌표
warp( 203033 + math.random(0,10) , 42943+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 28 번(27로)
elseif prop_id == 120228 then
-- 텔레포트 좌표
warp( 203371 + math.random(0,10) , 43424+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 29 번(30로)
elseif prop_id == 120229 then
-- 텔레포트 좌표
warp( 203974 + math.random(0,10) , 42449+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 30 번(28로)
elseif prop_id == 120230 then
-- 텔레포트 좌표
warp( 203422 + math.random(0,10) , 42484+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 31 번(32로)
elseif prop_id == 120231 then
-- 텔레포트 좌표
warp( 197086 + math.random(0,10) , 46169+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 32 번(31로)
elseif prop_id == 120232 then
-- 텔레포트 좌표
warp( 201015 + math.random(0,10) , 39371+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 33 번(33-1로)
elseif prop_id == 120233 then
-- 텔레포트 좌표
warp( 202800 + math.random(0,10) , 41174+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 3-1 번(3로)
elseif prop_id == 120236 then
-- 텔레포트 좌표
warp( 203845+ math.random(0,10) , 36344+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 4-1 번(4로)
elseif prop_id == 120237 then
-- 텔레포트 좌표
warp( 203936 + math.random(0,10) , 36797+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 6-1 번(6로)
elseif prop_id == 120239 then
-- 텔레포트 좌표
warp( 198151 + math.random(0,10) , 40464+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 7-1 번(7로)
elseif prop_id == 120240 then
-- 텔레포트 좌표
warp( 197719 + math.random(0,10) , 39907+ math.random(0,10), gv("layer") )
-- [QA]_버그 #20919
-- [워프] 숨겨진 팔미르 유적 제 2 실 - 워프게이트 입구9 문제
-- 팔미르 제 1 유적 워프 프랍 9-1 번
elseif prop_id == 120242 then
-- 텔레포트 좌표
warp( 206439 + math.random(0,10) , 37087 + math.random(0,10), gv("layer") )
-- [QA]_버그 #19867
-- [워프] 숨겨진 팔미르 유적의 워프게이트 10관련
-- 팔미르 제 1 유적 워프 프랍 10-1 번
elseif prop_id == 120243 then
-- 텔레포트 좌표
warp( 194878 + math.random(0,10) , 46716 + math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 11-1 번(11로)
elseif prop_id == 120244 then
-- 텔레포트 좌표
warp( 201871 + math.random(0,10) , 37498+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 12-1 번(12로)
elseif prop_id == 120245 then
-- 텔레포트 좌표
warp( 201541 + math.random(0,10) , 37193+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 13-1 번(13로)
elseif prop_id == 120246 then
-- 텔레포트 좌표
warp( 198436 + math.random(0,10) , 38550+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 14-1 번(14로)
elseif prop_id == 120247 then
-- 텔레포트 좌표
warp( 198050 + math.random(0,10) , 38129+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 15-1 번(15로)
elseif prop_id == 120248 then
-- 텔레포트 좌표
warp( 207457 + math.random(0,10) , 37948+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 16-1 번(16로)
elseif prop_id == 120249 then
-- 텔레포트 좌표
warp( 208166 + math.random(0,10) , 37970+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 18-1 번(18로)
elseif prop_id == 120258 then
-- 텔레포트 좌표
warp( 200446 + math.random(0,10) , 43608+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 2 유적 워프 프랍 19-1 번(19로)
elseif prop_id == 120259 then
-- 텔레포트 좌표
warp( 200703 + math.random(0,10) , 42984+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 1 유적 워프 프랍 20-1 번 xxxxx
elseif prop_id == 120260 then
-- 텔레포트 좌표
warp( 217010 + math.random(0,10) , 156336+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 1 유적 워프 프랍 21-1 번(21로)
elseif prop_id == 120261 then
-- 텔레포트 좌표
warp( 207498 + math.random(0,10) , 44595+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 1 유적 워프 프랍 22-1 번(22로)
elseif prop_id == 120262 then
-- 텔레포트 좌표
warp( 207910 + math.random(0,10) , 45102+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 1 유적 워프 프랍 23-1 번(23로)
elseif prop_id == 120263 then
-- 텔레포트 좌표
warp( 208177 + math.random(0,10) , 44755+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 1 유적 워프 프랍 24-1 번(24로)
elseif prop_id == 120264 then
-- 텔레포트 좌표
warp( 204864 + math.random(0,10) , 47496+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 1 유적 워프 프랍 25-1 번(25로)
elseif prop_id == 120265 then
-- 텔레포트 좌표
warp( 205107 + math.random(0,10) , 47309+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 1 유적 워프 프랍 26-1 번(26로)
elseif prop_id == 120266 then
-- 텔레포트 좌표
warp( 204732 + math.random(0,10) , 46881+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 1 유적 워프 프랍 33-1 번(33로)
elseif prop_id == 120273 then
-- 텔레포트 좌표
warp( 203883 + math.random(0,10) , 41510+ math.random(0,10), gv("layer") )
-- 숨겨진 팔미르 제 1 유적 입구 워프 프랍
elseif prop_id == 120291 then
-- 텔레포트 좌표
warp( 195147 + math.random(0,10) , 33220+ math.random(0,10), gv("layer") )
-- 숨겨진 수정계곡 입구 워프 프랍
elseif prop_id == 70191 then
-- 텔레포트 좌표
warp( 121934 + math.random(0,10) , 24410+ math.random(0,10), gv("layer") )
-- 숨겨진 엘카시아 입구 워프 프랍
elseif prop_id == 110191 then
-- 텔레포트 좌표
warp( 189968 + math.random(0,10) , 23636+ math.random(0,10), gv("layer") )
-- 숨겨진 백룡의 쉼터 입구 워프 프랍
elseif prop_id == 100191 then
-- 텔레포트 좌표
warp( 169145 + math.random(0,10) , 22619+ math.random(0,10), gv("layer") )
-- 숨겨진 흑룡의 그늘 입구 워프 프랍
elseif prop_id == 90191 then
-- 텔레포트 좌표
warp( 153016 + math.random(0,10) , 22621+ math.random(0,10), gv("layer") )
-- 숨겨진 사룡의 심장 입구 워프 프랍
elseif prop_id == 80191 then
-- 텔레포트 좌표
warp( 136890 + math.random(0,10) , 22626+ math.random(0,10), gv("layer") )
-------------------------------------------------------------------------------
--큐브릭 던전 --
-------------------------------------------------------------------------------
-- 큐브릭 던전 입구 프랍, 던전 입장
elseif prop_id == 60101 then
if party_id == 0 then
--최소 2인이상 파티여야만 입장 가능
cprint( "@9831" )
return
else
-- 같은 파티원만 입장할 수 있습니다.
cprint( "@9830" )
--set_flag( 'green_ticket', 0)
--set_flag( 'cyan_ticket', 0 )
-- 던전 입장
dlg_special( 'confirm_window', 'warp_to_instance_dungeon(30000)', '@9825\v#@dungeon_name@#\v@80030000' )
end
-- 2번방 입장
elseif prop_id == 60103 then
-- 입구1
warp(97636 , 29721, currentposition )
-- 3번방 입장
elseif prop_id == 60104 then
-- 입구2
warp(98246 , 30030, currentposition )
-- 4번방 입장
elseif prop_id == 60105 then
-- 입구3
warp(98259 , 30744, currentposition )
-- 5번방 입장
elseif prop_id == 60106 then
-- 입구4
warp(98246 , 31311, currentposition )
-- 6번방 입장(중간보스1)
elseif prop_id == 60108 then
-- 입구6
warp(97806 , 31540, currentposition )
-- 7번방 입장
elseif prop_id == 60109 then
-- 입구7
warp(97640 , 30964, currentposition )
-- 8번방 입장
elseif prop_id == 60107 then
-- 입구5
warp(98672 , 31728, currentposition )
-- 9번방 입장
elseif prop_id == 60110 then
-- 입구8
warp_to_cubric_branch_room( 1 )
-- 10번방 입장(최종보스)
elseif prop_id == 60111 then
local layer = gv('layer')
local sub_boss1_alive = get_alive_instance_respawn_group_monster_count( 30000, layer, 1 )
local sub_boss2_alive = get_alive_instance_respawn_group_monster_count( 30000, layer, 2 )
if sub_boss1_alive == 0 and sub_boss2_alive == 0 then
--모두 제거했는데 입장할래? 다이얼로그
dlg_special( 'confirm_window', 'warp_to_cubric_boss_room()', '@9828' )
else
--모두 제거해야만 들어갈 수 있다는 다이얼로그
dlg_general( '@9827' )
return
end
-- 11번방 입장
elseif prop_id == 60112 then
-- 입구10
warp(99866 , 30628, currentposition )
-- 12번방 입장
elseif prop_id == 60113 then
-- 입구11
warp(99969 , 30079, currentposition )
-- 13번방 입장
elseif prop_id == 60114 then
-- 입구12
warp(100455 , 29927, currentposition )
-- 14번방 입장
elseif prop_id == 60115 then
-- 입구13
warp(100566 , 30354, currentposition )
-- 15번방 입장
elseif prop_id == 60116 then
-- 입구14
warp(100945 , 30479, currentposition )
-- 16번방 입장
elseif prop_id == 60117 then
-- 입구15
warp(101069 , 30053, currentposition )
-- 13번방 입장
elseif prop_id == 60118 then
-- 입구16
warp(100682 , 29926, currentposition )
-- 17번방 입장
elseif prop_id == 60119 then
-- 입구17
warp(101517 , 30243, currentposition )
-- 18번방 입장(중보스입장2)
elseif prop_id == 60120 then
-- 입구18
warp(101511 , 31012, currentposition )
-- 15번방 입장
elseif prop_id == 60153 then
-- 입구18-1
warp(101067 , 30597, currentposition )
-- 15번방 입장
elseif prop_id == 60152 then
-- 입구17-1
warp(101195 , 30477, currentposition )
-- 15번방 입장
elseif prop_id == 60150 then
-- 입구15-1
warp(101069 , 30363, currentposition )
-- 16번방 입장
elseif prop_id == 60151 then
-- 입구16-1
warp(100950 , 29928, currentposition )
-- 14번방 입장
elseif prop_id == 60149 then
-- 입구14-1
warp(100687 , 30476, currentposition )
-- 13번방 입장
elseif prop_id == 60148 then
-- 입구13-1
warp(100567 , 30053, currentposition )
-- 12번방 입장
elseif prop_id == 60147 then
-- 입구12-1
warp(100144 , 29929, currentposition )
-- 11번방 입장
elseif prop_id == 60146 then
-- 입구11-1
warp(99967 , 30507, currentposition )
-- 9번방 입장
elseif prop_id == 60145 then
-- 입구10-1
warp_to_cubric_branch_room( 2 )
-- 9번방 입장
elseif prop_id == 60144 then
-- 반환값 -1 : 아무것도 아님 / 0 : 수락가 / 1 : 수행중 / 2 : 종료가능 / 100 : 실패 / 255 : 이미종료
local quest_progress3606 = get_quest_progress(3606) -- <(version:7.4)>[큐브릭]탈출 시도 #2
if quest_progress3606 == 1 then
set_quest_status( 3606, 1, 1 )
cprint( "@90605055" ) -- <(version:7.4)><#6DD66D>바닥이 진동합니다.
else
-- 입구9-1
warp(99018 , 30995, currentposition )
end
-- 4번방 입장
elseif prop_id == 60143 then
-- 입구8-1
warp(98386 , 30851, currentposition )
-- 4번방 입장
elseif prop_id == 60139 then
-- 입구4-1
warp(98259 , 30978, currentposition )
-- 5번방 입장
elseif prop_id == 60140 then
-- 입구5-1
warp(98388 , 31423, currentposition )
-- 5번방 입장(중보스 방에서 입장)
elseif prop_id == 60141 then
-- 입구6-1
warp(98147 , 31425, currentposition )
-- 6번방 입장(중보스 방으로 입장)
elseif prop_id == 60142 then
-- 입구7-1
warp(97623 , 31352, currentposition )
elseif prop_id == 60170 then
add_field_prop( 60157, 0, 38258, 22930, layer, 0 )
warp(38627 , 22931, currentposition )
-- 3번방 입장
elseif prop_id == 60138 then
-- 입구3-1
warp(98248 , 30374, currentposition )
-- 2번방 입장
elseif prop_id == 60137 then
-- 입구2-1
warp(97880 , 29729, currentposition )
-- 1번방 입장
elseif prop_id == 60136 then
-- 입구1-1
warp(97307 , 29997, currentposition )
-- 중간보스(아카샤그린) 제거후 나타나는 포탈
elseif prop_id == 60155 then
-- 9번방으로 입장
--warp(98858 , 30827, currentposition )
--제거했는데 9번방으로 입장할래? 다이얼로그
dlg_special( 'confirm_window', 'warp_to_cubric_branch_room( 1 )', '@9829' )
-- 중간보스(아카샤사이안) 제거후 나타나는 포탈
elseif prop_id == 60156 then
-- 9번방으로 입장
--warp(99180 , 30825, currentposition )
dlg_special( 'confirm_window', 'warp_to_cubric_branch_room( 2 )', '@9829' )
end
end
function Open_Chest(id)
local annc = "<#8bd1db>蒔落?損 "..name.." 巽?砂?훅鴨프 堂逑?햐砂?沿量?伴?博?宸 햐祠햐?햐給흡 . </#8bd1db>"
whisper(name,annc)
end
function enter_to_secret_dungeon( prop_id )
if prop_id == 120291 then
-- 숨겨진 팔미르 유적 ID 70120201
dlg_special( 'confirm_window', 'warp_to_secret_dungeon(120201)', '@728\v#@dungeon_name@#\v@70120201' )
elseif prop_id == 100191 then
-- 숨겨진 백룡의 쉼터 ID 70100101
dlg_special( 'confirm_window', 'warp_to_secret_dungeon(100101)', '@728\v#@dungeon_name@#\v@70100101' )
elseif prop_id == 90191 then
-- 숨겨진 흑룡의 그늘 ID 70090101
dlg_special( 'confirm_window', 'warp_to_secret_dungeon(90101)', '@728\v#@dungeon_name@#\v@70090101' )
elseif prop_id == 80191 then
-- 숨겨진 사룡의 심장 ID 70080101
dlg_special( 'confirm_window', 'warp_to_secret_dungeon(80101)', '@728\v#@dungeon_name@#\v@70080101' )
elseif prop_id == 110191 then
-- 숨겨진 엘카시아 ID 70110101
dlg_special( 'confirm_window', 'warp_to_secret_dungeon(110101)', '@728\v#@dungeon_name@#\v@70110101' )
elseif prop_id == 70191 then
-- 숨겨진 수정계곡 ID 70070101
dlg_special( 'confirm_window', 'warp_to_secret_dungeon(70101)', '@728\v#@dungeon_name@#\v@70070101' )
else
end
end
function enter_vulcanus()
local level = get_value( 'level' )
local count = find_item( 1000401 )
local party_id = get_value('party_id')
-- 퀘스트 상태 체크 get_quest_progress(ID)
-- 반환값 -1 : 아무것도 아님 / 0 : 수락가 / 1 : 수행중 / 2 : 종료가능 / 100 : 실패 / 255 : 이미종료
local quest_progress_3367 = get_quest_progress(3367)
if level >= 30 then
if count == 0 then
--열쇠가 없어 입장할 수 없습니다
cprint( "@9811" )
elseif count >= 20 then
if party_id == 0 then
-- 던전 보상이 캐릭터의 한도를 초과할 경우 게임 진행이 원활하지 않을 수 있습니다.
cprint( "@9812" )
dlg_special('confirm_window', 'warp_to_instance_dungeon(20000)', '@9805\v#@dungeon_name@#\v@80020000' )
if quest_progress_3367 == 1 then
set_quest_status( 3367, 1, 1 )
cprint( "@90604746" ) -- <(version:8.1)><#6DD66D>새로운 게이트를 발견하였습니다.
end
else
--파티 상태에서는 입장 불가함
cprint( "@9247" )
return
end
elseif count >= 1 and count < 20 then
--열쇠가 충분하지 않아 입장할 수 없습니다
cprint( "@9810" )
return
else
cprint("에러")
end
else
--30레벨 이상부터 입장 가능합니다.
cprint( "@9251" )
end
end
-- 인스턴스 던전 : 불카누스 프랍 호출 시 다이얼로그 생성
function enter_other_indun( dungeon_id, current_floor, next_floor, current_item_count, next_item_count )
if dungeon_id == 20000 then
local floor = current_floor
local flag = 'Vul' .. tostring( current_floor )
local floor_flag = get_instance_dungeon_flag( dungeon_id, gv( 'layer' ), flag )
if floor_flag == 15 then
floor = -1
end
-- 던전 보상이 캐릭터의 한도를 초과할 경우 게임 진행이 원활하지 않을 수 있습니다.
cprint( "@9812" )
enter_other_instance_dungeon( dungeon_id, floor, next_floor, current_item_count, next_item_count )
end
end
function warp_indun( instance_dungeon, floor )
if instance_dungeon == 20000 then
local flag = 'Vul' .. tostring( floor )
local floor_flag = get_instance_dungeon_flag( instance_dungeon, gv( 'layer' ), flag )
local gate_num = 1
local room_list = {}
local room_count = 0
if floor_flag == 15 then
return
end
if floor == 4 then
warp_floor( floor, gate_num )
else
-- 이전의 while문을 통하여 난수를 반복생성하여 서버다운 문제가 발생하였던 문제를 수정
-- 현재 방의 입장 상태를 확인하여 들어간 방과 들어가지 않은 방을 구분하여 들어가지 않은 방의 테이블을 생성
-- 후에 들어가지 않은 방의 테이블의 수 만큼 난수를 생성하여 생성된 난수로 방을 입장 시키는 방식으로 반복문을 제거한 방식으로 수정
-- 각 방에 들어가지 않았을 때 테이블을 늘려주고 테이블에 해당 방 번호를 넣어줌으로써 해당 루프를 한번 거치게 되면
-- 들어가지 않은 방의 수 만큼 테이블이 생성되고 테이블에 방 번호가 순차적으로 작성됩니다.
if floor_flag ~= nil and floor_flag ~= "" then
-- 1번 방에 안 들어갔을 때
if floor_flag == 0 or floor_flag == 2 or floor_flag == 4 or floor_flag == 8 or floor_flag == 6 or floor_flag == 10 or floor_flag == 12 or floor_flag == 14 then
room_list[ room_count + 1 ] = 1
room_count = room_count + 1
end
-- 2번 방에 안 들어갔을 때
if floor_flag == 0 or floor_flag == 1 or floor_flag == 4 or floor_flag == 8 or floor_flag == 5 or floor_flag == 9 or floor_flag == 12 or floor_flag == 13 then
room_list[ room_count + 1 ] = 2
room_count = room_count + 1
end
-- 3번 방에 안 들어갔을 때
if floor_flag == 0 or floor_flag == 1 or floor_flag == 2 or floor_flag == 8 or floor_flag == 3 or floor_flag == 9 or floor_flag == 10 or floor_flag == 11 then
room_list[ room_count + 1 ] = 3
room_count = room_count + 1
end
-- 4번 방에 안 들어갔을 때
if floor_flag == 0 or floor_flag == 1 or floor_flag == 2 or floor_flag == 4 or floor_flag == 3 or floor_flag == 5 or floor_flag == 6 or floor_flag == 7 then
room_list[ room_count + 1 ] = 4
room_count = room_count + 1
end
end
gate_num = math.random( 1, room_count )
warp_floor( floor, room_list[ gate_num ] )
end
end
end
--60166
function on_join_underground( layer ,id)
if id == 1 then
add_field_prop( 60166, 0, 38171, 22931, layer, 0,0,0,80 )
add_field_prop( 60166, 0, 40193, 21987, layer, 0 )
end
end
function on_join_underground( layer ,id)
if id == 1 then
add_field_prop( 60167, 0, 37561, 5554, layer, 0 )
end
end
function on_join_underground( layer ,id)
if id == 1 then
add_field_prop( 60168, 0, 59049, 26040, layer, 0 )
end
end
function on_join_underground( layer ,id)
if id == 1 then
add_field_prop( 60169, 0, 50955, 1451, layer, 0 )
end
end
function on_create_underground( layer ,id)
end
function on_leave_underground( layer ,id)
end
function underground_respawn_group_clear_check(respawn_group,layer)
if respawn_group == 40000 then
if get_alive_instance_respawn_group_monster_count( respawn_group, layer, respawn_group ) == 0 then
add_field_prop( 60170, 0, 38710, 22942, layer, 0 )
end
end
end
function underground_respawn_group_clear_check(respawn_group,layer)
if respawn_group == 41001 then
if get_alive_instance_respawn_group_monster_count( respawn_group, layer, respawn_group ) == 0 then
add_field_prop( 60171, 0, 37561, 5554, layer, 0 )
end
end
end
function underground_respawn_group_clear_check(respawn_group,layer)
if respawn_group == 42001 then
if get_alive_instance_respawn_group_monster_count( respawn_group, layer, respawn_group ) == 0 then
add_field_prop( 60172, 0, 59049, 26040, layer, 0 )
end
end
end
function underground_respawn_group_clear_check(respawn_group,layer)
if respawn_group == 43001 then
if get_alive_instance_respawn_group_monster_count( respawn_group, layer, respawn_group ) == 0 then
add_field_prop( 60173, 0, 50955, 1451, layer, 0 )
end
end
end
function on_create_underground_instance( layer ,id)
end
function warp_floor( floor, gate_num )
local x, y
local currentposition = get_value('layer')
if floor == 1 then
-- 1층 열쇠 조건 체크,
local count = find_item( 1000401 )
if count >= 20 then
-- 만족하면 열쇠 수거하고
delete_item( get_item_handle( 1000401 ), 20 )
-- gate_num에 맞게 워프해주자
if gate_num == 1 then
x = 197393
y = 28580
elseif gate_num == 2 then
x = 198814
y = 28457
elseif gate_num == 3 then
x = 200543
y = 28458
elseif gate_num == 4 then
x = 202065
y = 28458
end
else
--열쇠가 충분하지 않아 입장할 수 없습니다
return
end
elseif floor == 2 then
-- 2층 열쇠 조건 체크,
local count = find_item( 1000402 )
if count >= 10 then
-- 만족하면 열쇠 수거하고
delete_item( get_item_handle( 1000402 ), 10 )
if gate_num == 1 then
x = 197047
y = 25954
elseif gate_num == 2 then
x = 198661
y = 25929
elseif gate_num == 3 then
x = 200362
y = 25962
elseif gate_num == 4 then
x = 202169
y = 26121
end
else
--열쇠가 충분하지 않아 입장할 수 없습니다
cprint( "@9810" )
return
end
elseif floor == 3 then
-- 3층 열쇠 조건 체크,
local count = find_item( 1000403 )
if count >= 5 then
-- 만족하면 열쇠 수거하고
delete_item( get_item_handle( 1000403 ), 5 )
if gate_num == 1 then
x = 197303
y = 23750
elseif gate_num == 2 then
x = 198586
y = 23765
elseif gate_num == 3 then
x = 200390
y = 23677
elseif gate_num == 4 then
x = 202114
y = 23701
end
else
--열쇠가 충분하지 않아 입장할 수 없습니다
cprint( "@9810" )
return
end
elseif floor == 4 then
-- 4층 열쇠 조건 체크,
local count = find_item( 1000404 )
if count >= 1 then
-- 만족하면 열쇠 수거하고
delete_item( get_item_handle( 1000404 ), 1 )
x = 206474
y = 27625
else
--열쇠가 충분하지 않아 입장할 수 없습니다
cprint( "@9810" )
return
end
end
warp( x, y, currentposition )
-- 미션 UI 관련 정보 세팅(새로 들어간 방에 대한 미션)
-- 미션 제목은 항상 '모든 몬스터를 섬멸하라'
send_mission_title( '@1224' )
-- 미션 보상은 on_create_vulcanus_instance 에서 세팅된 difficulty 값에 따라 달라지므로 함수에 의해 얻어 옴
local exp, jp, gold = vulcanus_clear_reward( currentposition, floor )
-- string.char( 11 ) == '\v'
local reward_string = '@1225'
reward_string = reward_string .. '\v#@reward_exp@#\v' .. exp
reward_string = reward_string .. '\v#@reward_jp@#\v' .. jp
reward_string = reward_string .. '\v#@reward_gold@#\v' .. gold
send_mission_reward( reward_string )
-- 미션 목표도 항상 '모든 몬스터를 섬멸하라'에 최대 몬스터 수는 6(4층인 경우만 1이 됨)
if floor == 4 then
send_mission_objective( 0, 1, '@1226' )
-- 4층 불카누스 방 입장 시 인던 내에 불카누스 멘트 방송
--<(version:7.3)><#6DD66D>나는.. 불카누스다. 나의 의지를 깨운 너는....너는 누구.... 인가. 열쇠를 소지한 자.. 인가?
cprint( '@90604914' )
--<(version:7.3)><#6DD66D>그렇다면, 내가 숨겨 논 기록을...... 되찾은 자로군. 시간이 없으니...... 너의 지식을 보겠다.
cprint( '@90604915' )
else
send_mission_objective( 0, 6, '@1224' )
end
-- 불카누스는 1인 던전이라 누가 들어가면 몬스터는 다 살아 있으므로 진행률 무조건 0
send_mission_objective_progress( 0, 0 )
end
-- 인스턴스 던전 : 불카누스 던전 퇴장
-- 인스턴스 던전 : 큐브릭 던전 퇴장
-- 마을로 돌려 보내주는 워프게이트
function exit_instance_dungeon( prop_id )
if prop_id == 126027 then
-- 20000 인던 불카누스 ID
dlg_special( 'confirm_window', 'exit_indun(100101)', '@9807\v#@dungeon_name@#\v@80020000' )
elseif prop_id == 126023 then
-- 20000 인던 불카누스 ID
dlg_special( 'confirm_window', 'exit_indun(100101)', '@9807\v#@dungeon_name@#\v@80020000' )
elseif prop_id == 60154 or prop_id == 60102 then
-- 30000 인던 큐브릭 ID
dlg_special( 'confirm_window', 'exit_indun( 30000 )', '@9832\v#@dungeon_name@#\v@80030000' )
elseif prop_id == 60166 then
dlg_special( 'confirm_window', 'exit_indun( 40000 )', '@9832\v#@dungeon_name@#\v@80040000' )
elseif prop_id == 60167 then
dlg_special( 'confirm_window', 'exit_indun( 41001 )', '@9832\v#@dungeon_name@#\v@80040000' )
elseif prop_id == 60168 then
dlg_special( 'confirm_window', 'exit_indun( 42001 )', '@9832\v#@dungeon_name@#\v@80040000' )
elseif prop_id == 60169 then
dlg_special( 'confirm_window', 'exit_indun( 43001 )', '@9832\v#@dungeon_name@#\v@80040000' )
else
end
end
function exit_indun( dungeon_id )
local hx = get_flag( 'hx' )
local hy = get_flag( 'hy' )
warp( hx, hy, 0 )
end
-- 용도: 불카누스 인스턴스 던전이 생성될 때마다 호출되는 함수
-- 역할: 불카누스 던전의 진행상황 정보 초기값 세팅
function on_create_vulcanus_instance( layer )
-- 불카누스 인스턴스 던전 ID: 20000
set_instance_dungeon_flag( 20000, layer, 'Vul1', 0 )
set_instance_dungeon_flag( 20000, layer, 'Vul2', 0 )
set_instance_dungeon_flag( 20000, layer, 'Vul3', 0 )
-- 입장 시 레벨에 따른 난이도 값 보관(각 방 완료 시 보상 차등화를 위해 필요함)
set_instance_dungeon_flag( 20000, layer, 'difficulty', get_instance_dungeon_type_id( 20000, layer ) )
end
-- 용도: 불카누스 인스턴스 던전에 유저가 참여할 때마다 호출되는 함수
-- 역할: 미션 UI 세팅용 정보를 방금 참여한 유저에게 송신해 줌
function on_join_vulcanus( layer )
-- 불카누스 인스턴스 던전 ID: 20000
-- 미션 제목은 항상 '모든 몬스터를 섬멸하라'
send_mission_title( '@1224' )
-- 미션 보상은 on_create_vulcanus_instance 에서 세팅된 difficulty 값에 따라 달라지므로 함수에 의해 얻어 옴
local exp, jp, gold = vulcanus_clear_reward( layer, 1 )
-- string.char( 11 ) == '\v'
local reward_string = '@1225'
reward_string = reward_string .. '\v#@reward_exp@#\v' .. exp
reward_string = reward_string .. '\v#@reward_jp@#\v' .. jp
reward_string = reward_string .. '\v#@reward_gold@#\v' .. gold
send_mission_reward( reward_string )
-- 미션 목표도 항상 '모든 몬스터를 섬멸하라'에 최대 몬스터 수는 6(4층인 경우만 1이 됨)
send_mission_objective( 0, 6, '@1224' )
-- 1층 1번 방의 남은 몬스터 수를 기준으로 진행률을 체크(불카누스는 1인 던전이라 누가 들어가면 몬스터는 다 살아 있으므로 진행률 무조건 0)
send_mission_objective_progress( 0, 0 )
do_each_player_in_instance_dungeon( 20000, layer, "open_title(1)" )
end
-- 용도: 불카누스 인스턴스 던전에서 유저가 이탈할 때마다 호출되는 함수
-- 역할: 미션 UI 관련 정보를 방금 이탈한 유저에게서 제거시켜 줌(UI 숨겨짐)
function on_leave_vulcanus( layer )
-- 불카누스 인스턴스 던전 ID: 20000
-- 미션 UI 제거
send_mission_title( '' )
end
-- 용도: 몬스터 죽을 때마다 호출되는 함수
-- 역할: 죽은 몬스터의 리스폰 그룹에 남은 몬스터 수를 체크하여 모두 죽었을 경우 방 별 클리어 정보를 세팅하고 다른 곳으로 이동을 위한 프랍을 리젠시켜 줌
function vulcanus_check_respawn_group_clear( respawn_group, x, y, layer )
-- 죽은 몬스터와 같은 그룹에 소속된 몬스터 중 살아있는 녀석이 남아 있다면 아무것도 안 함
local left_monster_count = get_alive_instance_respawn_group_monster_count( 20000, layer, respawn_group )
-- 해당 인던 내에 있는 모든 유저의 미션 UI의 진행률 갱신(4층이면 총 몬스터 수가 1이고 그 외에는 모두 6)
-- 죽인 몬스터의 수를 표시해야 하므로 (전체 몬스터 수) - (남은 몬스터의 수) 를 통해 계산된 값을 방송함
if respawn_group == 20013 then
-- 불카누스 4층(보스방)
broadcast_mission_objective_progress( 1, 0, 1 - left_monster_count, 20000, layer )
else
broadcast_mission_objective_progress( 1, 0, 6 - left_monster_count, 20000, layer )
end
if left_monster_count ~= 0 then
return
end
-- 리스폰 그룹별로 차별화되어야 하는 부분 처리(리스폰 그룹에 따라 적절한 위치 선정)
local prop_id = 0
local prop_z_offset = 10
local exp = 0
local jp = 0
local gold = 0
-- 불카누스 1층
if respawn_group == 20001 or respawn_group == 20002 or respawn_group == 20003 or respawn_group == 20004 then
prop_id = 126024
-- 각 방별 클리어 정보 갱신
local floor_clear_flag = get_instance_dungeon_flag( 20000, layer, 'Vul1' )
if respawn_group == 20001 then
floor_clear_flag = floor_clear_flag + 1
elseif respawn_group == 20002 then
floor_clear_flag = floor_clear_flag + 2
elseif respawn_group == 20003 then
floor_clear_flag = floor_clear_flag + 4
elseif respawn_group == 20004 then
floor_clear_flag = floor_clear_flag + 8
end
set_instance_dungeon_flag( 20000, layer, 'Vul1', floor_clear_flag )
exp, jp, gold = vulcanus_clear_reward( layer, 1 )
-- 불카누스 2층
elseif respawn_group == 20005 or respawn_group == 20006 or respawn_group == 20007 or respawn_group == 20008 then
prop_id = 126025
-- 각 방별 클리어 정보 갱신
local floor_clear_flag = get_instance_dungeon_flag( 20000, layer, 'Vul2' )
if respawn_group == 20005 then
floor_clear_flag = floor_clear_flag + 1
elseif respawn_group == 20006 then
floor_clear_flag = floor_clear_flag + 2
elseif respawn_group == 20007 then
floor_clear_flag = floor_clear_flag + 4
elseif respawn_group == 20008 then
floor_clear_flag = floor_clear_flag + 8
end
set_instance_dungeon_flag( 20000, layer, 'Vul2', floor_clear_flag )
exp, jp, gold = vulcanus_clear_reward( layer, 2 )
-- 불카누스 3층
elseif respawn_group == 20009 or respawn_group == 20010 or respawn_group == 20011 or respawn_group == 20012 then
prop_id = 126026
-- 각 방별 클리어 정보 갱신
local floor_clear_flag = get_instance_dungeon_flag( 20000, layer, 'Vul3' )
if respawn_group == 20009 then
floor_clear_flag = floor_clear_flag + 1
elseif respawn_group == 20010 then
floor_clear_flag = floor_clear_flag + 2
elseif respawn_group == 20011 then
floor_clear_flag = floor_clear_flag + 4
elseif respawn_group == 20012 then
floor_clear_flag = floor_clear_flag + 8
end
set_instance_dungeon_flag( 20000, layer, 'Vul3', floor_clear_flag )
exp, jp, gold = vulcanus_clear_reward( layer, 3 )
-- 불카누스 4층(보스방)
elseif respawn_group == 20013 then
prop_id = 126027
-- 불카누스 방 퇴장 프랍만 모양이 다르고 z_offset도 달라야 함
prop_z_offset = 35
exp, jp, gold = vulcanus_clear_reward( layer, 4 )
-- 불카누스 사냥 시 호칭 부여
do_each_player_in_instance_dungeon( 20000, layer, "update_title_condition( 9002002, 1 )" )
else
do_each_player_in_instance_dungeon( 20000, layer, "cprint( 'vulcanus_check_respawn_group_clear - No respawn group' )" )
return
end
-- 안내 메시지 출력: 모든 몬스터를 쓰러뜨렸습니다. 불카누스 지하 입구를 더블 클릭하면 다음 던전으로 입장할 수 있는 메뉴가 나타납니다.
-- 4층이면 다른 메시지 출력 안 함
if respawn_group ~= 20013 then
do_each_player_in_instance_dungeon( 20000, layer, "cprint('@9813');cprint('@9250')" )
end
-- 보상 지급 스크립트
local reward_handler = 'add_exp_jp( ' .. exp .. ', ' .. jp .. ', false, false ); insert_gold( ' .. gold .. ', true )'
do_each_player_in_instance_dungeon( 20000, layer, reward_handler )
-- 미션 목표를 모두 달성했으므로 미션 UI 닫음(다른 방으로 이동하면 다시 새로 부여됨)
broadcast_mission_title( 1, '', 20000, layer )
-- 프랍 생성
add_field_prop( prop_id, 0, x, y, layer, prop_z_offset )
end
-- 용도: 각 방 클리어 완료 보상 지급 시 보상량을 계산하기 위해 호출됨
-- 역할: 경험치/잡포인트/루피를 난이도에 따라 각각 지급해줄 만큼 얻어서 반환함
function vulcanus_clear_reward( layer, floor )
-- 보상은 각 방의 번호는 무관하며 던전의 난이도(입장 시 유저 레벨에 의해 결정됨)와 클리어 층 수에 따라 결정됨
local difficulty = get_instance_dungeon_flag( 20000, layer, 'difficulty' )
local exp = 0
local jp = 0
local gold = 0
-- difficulty 값 관련 레벨 제한은 InstanceDungeonTypeResource 테이블에 기입된 값이므로
-- 해당 테이블에서 데이터가 변경되면 아래의 내용도 수정되어야 함
-- 수식화하거나 자동화하면 좋겠지만 보상의 수식을 모르겠어서 조건문에 따라 아래와 같이 처리함
-- 기획팀에서 쓴 수식을 알려면 퀘스트Data 엑셀 파일을 참조하면 되는데,
-- 거기서 참조한 각종 데이터를 스크립트에서 참조하도록 만드는 것도 무리가 있으므로 일단 수작업 처리 ㄷㄷ;
if difficulty == 0 then
-- 30 ~ 39 레벨
if floor == 1 then
-- 1층
exp = 19956
jp = 3991
gold = 31200
elseif floor == 2 then
-- 2층
exp = 24454
jp = 4890
gold = 33300
elseif floor == 3 then
-- 3층
exp = 29555
jp = 5910
gold = 35400
elseif floor == 4 then
-- 4층
exp = 58378
jp = 11675
gold = 72000
end
elseif difficulty == 1 then
-- 40 ~ 49 레벨
if floor == 1 then
-- 1층
exp = 38548
jp = 7709
gold = 41600
elseif floor == 2 then
-- 2층
exp = 44904
jp = 4890
gold = 43700
elseif floor == 3 then
-- 3층
exp = 51743
jp = 10348
gold = 45800
elseif floor == 4 then
-- 4층
exp = 132405
jp = 26481
gold = 92000
end
elseif difficulty == 2 then
-- 50 ~ 59 레벨
if floor == 1 then
-- 1층
exp = 57408
jp = 11481
gold = 52000
elseif floor == 2 then
-- 2층
exp = 64815
jp = 12002
gold = 54100
elseif floor == 3 then
-- 3층
exp = 72956
jp = 13510
gold = 56200
elseif floor == 4 then
-- 4층
exp = 214137
jp = 39655
gold = 112000
end
elseif difficulty == 3 then
-- 60 ~ 69 레벨
if floor == 1 then
-- 1층
exp = 76854
jp = 14232
gold = 62400
elseif floor == 2 then
-- 2층
exp = 85198
jp = 15777
gold = 64500
elseif floor == 3 then
-- 3층
exp = 94077
jp = 17421
gold = 66600
elseif floor == 4 then
-- 4층
exp = 269109
jp = 49834
gold = 132000
end
elseif difficulty == 4 then
-- 70 ~ 79 레벨
if floor == 1 then
-- 1층
exp = 91139
jp = 16877
gold = 72800
elseif floor == 2 then
-- 2층
exp = 99583
jp = 18441
gold = 74900
elseif floor == 3 then
-- 3층
exp = 108495
jp = 20091
gold = 77000
elseif floor == 4 then
-- 4층
exp = 314787
jp = 58293
gold = 152000
end
elseif difficulty == 5 then
-- 80 ~ 89 레벨
if floor == 1 then
-- 1층
exp = 113358
jp = 20992
gold = 83200
elseif floor == 2 then
-- 2층
exp = 122679
jp = 22718
gold = 85300
elseif floor == 3 then
-- 3층
exp = 132349
jp = 24509
gold = 87400
elseif floor == 4 then
-- 4층
exp = 427830
jp = 79227
gold = 172000
end
elseif difficulty == 6 then
-- 90 ~ 99 레벨
if floor == 1 then
-- 1층
exp = 131787
jp = 24405
gold = 93600
elseif floor == 2 then
-- 2층
exp = 141445
jp = 26193
gold = 95700
elseif floor == 3 then
-- 3층
exp = 151556
jp = 28065
gold = 97800
elseif floor == 4 then
-- 4층
exp = 561177
jp = 103921
gold = 192000
end
elseif difficulty == 7 then
-- 100 ~ 109 레벨
if floor == 1 then
-- 1층
exp = 175584
jp = 32515
gold = 104000
elseif floor == 2 then
-- 2층
exp = 187230
jp = 32280
gold = 106100
elseif floor == 3 then
-- 3층
exp = 199491
jp = 34395
gold = 108200
elseif floor == 4 then
-- 4층
exp = 700102
jp = 120707
gold = 212000
end
elseif difficulty == 8 then
-- 110 ~ 119 레벨
if floor == 1 then
-- 1층
exp = 237120
jp = 40882
gold = 114400
elseif floor == 2 then
-- 2층
exp = 251671
jp = 43391
gold = 116500
elseif floor == 3 then
-- 3층
exp = 266785
jp = 45997
gold = 118600
elseif floor == 4 then
-- 4층
exp = 988754
jp = 170474
gold = 232000
end
elseif difficulty == 9 then
-- 120 ~ 129 레벨
if floor == 1 then
-- 1층
exp = 292792
jp = 50481
gold = 124800
elseif floor == 2 then
-- 2층
exp = 306274
jp = 52805
gold = 126900
elseif floor == 3 then
-- 3층
exp = 320012
jp = 55174
gold = 129000
elseif floor == 4 then
-- 4층
exp = 1169043
jp = 201559
gold = 252000
end
elseif difficulty == 10 then
-- 130 ~ 139 레벨
if floor == 1 then
-- 1층
exp = 377019
jp = 65003
gold = 135200
elseif floor == 2 then
-- 2층
exp = 392723
jp = 67710
gold = 137300
elseif floor == 3 then
-- 3층
exp = 408832
jp = 70488
gold = 139400
elseif floor == 4 then
-- 4층
exp = 1785194
jp = 307792
gold = 272000
end
elseif difficulty == 11 then
-- 140 ~ 149 레벨
if floor == 1 then
-- 1층
exp = 470027
jp = 81039
gold = 145600
elseif floor == 2 then
-- 2층
exp = 527619
jp = 90968
gold = 147700
elseif floor == 3 then
-- 3층
exp = 620635
jp = 107006
gold = 149800
elseif floor == 4 then
-- 4층
exp = 3387588
jp = 584066
gold = 292000
end
elseif difficulty == 12 then
-- 150 ~ 159 레벨
if floor == 1 then
-- 1층
exp = 769704
jp = 132707
gold = 156000
elseif floor == 2 then
-- 2층
exp = 1541102
jp = 248564
gold = 158100
elseif floor == 3 then
-- 3층
exp = 3173438
jp = 511844
gold = 160200
elseif floor == 4 then
-- 4층
exp = 6718169
jp = 1083575
gold = 312000
end
elseif difficulty == 13 then
-- 160 ~ 최대 레벨
if floor == 1 then
-- 1층
exp = 1219563
jp = 196703
gold = 166400
elseif floor == 2 then
-- 2층
exp = 1800319
jp = 290374
gold = 168500
elseif floor == 3 then
-- 3층
exp = 3922638
jp = 632683
gold = 170600
elseif floor == 4 then
-- 4층
exp = 12356309
jp = 1992953
gold = 332000
end
end
return exp, jp, gold
end
-- 용도: 큐브릭 인스턴스 던전이 생성될 때마다 호출되는 함수
-- 역할: 큐브릭 던전의 진행상황 정보 초기값 세팅
function on_create_cubric_instance( layer )
-- 큐브릭 인스턴스 던전 ID: 30000
set_instance_dungeon_flag( 30000, layer, 'QuestInProgressCount', 0 ) -- 인던 진행 퀘스트 체크 대상인 3607 퀘스트를 진행 중인 유저 수 체크용
set_instance_dungeon_flag( 30000, layer, 'AdditionalBossRespawned', 0 ) -- 인던 진행 퀘스트로 인해 추가 보스몹들의 리젠 여부 체크용(중첩 리젠 방지용)
set_instance_dungeon_flag( 30000, layer, 'ExitPropRespawned', 0 ) -- 인던 최종 출구 프랍 리젠 여부 체크용(중첩 리젠 방지용)
set_instance_dungeon_flag( 30000, layer, 'MissionRevealed', 0 ) -- 아크샤 두 마리 잡으라는 미션을 유저들에게 보여줬는지 체크용(0:활성화 전, 1:활성화 중, 2:미션 완료)
end
-- 용도: 큐브릭 인스턴스 던전에 유저가 참여할 때마다 호출되는 함수
-- 역할: 방금 참여한 유저가 체크 대상인 퀘스트를 보유하고 있었을 경우 던전 내부 체크용 변수 세팅
function on_join_cubric( layer )
-- 방금 진입한 유저가 3607 퀘스트를 진행 중이라면 던전 상태 변수에 반영
-- * 이전에 퀘 받아놓고 완료 조건 못 채우고 나갔던 유저면 반영하지만
-- 완료 조건이 달성되어 있는 유저라면 퀘스트를 진행하고 있는 상태라고 볼 수 없으므로 반영하지 않음
-- 반환값 -1 : 아무것도 아님 / 0 : 수락가 / 1 : 수행중 / 2 : 종료가능 / 100 : 실패 / 255 : 이미종료
if get_quest_progress( 3607 ) == 1 then
-- 큐브릭 인스턴스 던전 ID: 30000
set_instance_dungeon_flag( 30000, layer, 'QuestInProgressCount', get_instance_dungeon_flag( 30000, layer, 'QuestInProgressCount' ) + 1 )
end
-- 미션 UI가 아직 활성화된 이후에 입장하는 거라면 미션 UI 표시
if get_instance_dungeon_flag( 30000, layer, 'MissionRevealed' ) == 1 then
-- 미션 제목
send_mission_title( '@1234' )
-- 0번 미션 목표(서쪽의 아크샤)
send_mission_objective( 0, 1, '@1235' )
-- 1번 미션 목표(동쪽의 아크샤)
send_mission_objective( 1, 1, '@1236' )
-- 2번 미션 목표(보스방 드가세요)
send_mission_objective( 2, 1, '@1237' )
-- 미션 보상 안내
send_mission_reward( '@1238' )
-- 미션 목표 진행 상태
update_cubric_mission( false, layer )
end
end
-- 용도: 큐브릭 인스턴스 던전에서 유저가 이탈할 때마다 호출되는 함수
-- 역할: 방금 이탈한 유저가 체크 대상인 퀘스트를 보유하고 있었을 경우 던전 내부 체크용 변수 세팅
function on_leave_cubric( layer )
-- 방금 이탈한 유저가 3607 퀘스트를 진행 중이라면 던전 상태 변수에 반영
-- * 퀘 받아놓고 완료 조건 못 채우고 나가는 유저면 반영하지만
-- 완료 조건이 달성되어 있는 유저라면 퀘스트를 진행 중인 상태라고 볼 수 없으므로 반영하지 않음
-- (예. 퀘 받고 몹 죽여서 보상 받으면 되지만 보상만 안 받고 나간 경우)
-- 반환값 -1 : 아무것도 아님 / 0 : 수락가 / 1 : 수행중 / 2 : 종료가능 / 100 : 실패 / 255 : 이미종료
if get_quest_progress( 3607 ) == 1 then
-- 큐브릭 인스턴스 던전 ID: 30000
set_instance_dungeon_flag( 30000, layer, 'QuestInProgressCount', get_instance_dungeon_flag( 30000, layer, 'QuestInProgressCount' ) - 1 )
end
-- 미션 UI가 활성화 된 이후였으면 미션 UI 닫아주기
if get_instance_dungeon_flag( 30000, layer, 'MissionRevealed' ) == 1 then
send_mission_title( '' )
end
end
function base_moonlight_respawn_group_clear_check(respawn_group,layer)
if respawn_group == 40000 then
if get_alive_instance_respawn_group_monster_count( respawn_group, layer, respawn_group ) == 0 then
add_field_prop( 60170, 0, 38710, 22942, layer, 0 )
end
end
end
function base_moonlight_respawn_group_clear_check(respawn_group,layer)
if respawn_group == 41001 then
if get_alive_instance_respawn_group_monster_count( respawn_group, layer, respawn_group ) == 0 then
add_field_prop( 60171, 0, 37561, 5554, layer, 0 )
end
end
end
function base_moonlight_respawn_group_clear_check(respawn_group,layer)
if respawn_group == 42001 then
if get_alive_instance_respawn_group_monster_count( respawn_group, layer, respawn_group ) == 0 then
add_field_prop( 60170, 0, 59049, 26040, layer, 0 )
end
end
end
function base_moonlight_respawn_group_clear_check(respawn_group,layer)
if respawn_group == 43001 then
if get_alive_instance_respawn_group_monster_count( respawn_group, layer, respawn_group ) == 0 then
add_field_prop( 60172, 0, 50955, 1451, layer, 0 )
end
end
end
-- 용도: 몬스터 죽을 때마다 호출되는 함수
-- 역할: 죽은 몬스터의 리스폰 그룹에 남은 몬스터 수를 체크하여 모두 죽었을 프랍을 열어 주거나 아무 것도 하지 않거나 함
function cubric_check_respawn_group_clear( respawn_group, x, y, layer )
-- 부 보스 그룹으로 리젠된 몬스터가 죽은 경우
if respawn_group == 1 or respawn_group == 2 then
-- 부 보스 몬스터는 죽을 때마다 갈림길 방으로 돌아가는 프랍 열어 줌
add_field_prop( 60156, 0, x, y, layer, 0 )
-- 필요한 경우 미션 UI 업데이트 처리
update_cubric_mission( true, layer )
-- 보스 그룹으로 리젠된 몬스터가 죽은 경우
elseif respawn_group == 3 then
-- 보스는 한 마리밖에 리젠 안 되기 때문에 모두 죽었는지 체크할 필요 없음
-- 큐브릭 던전 진행 퀘스트가 진행 중일 경우에는 밖으로 출구 프랍을 생성하지 않고,
-- 퀘스트가 진행 중인 유저가 하나도 없다면 그냥 밖으로 나갈 수 있도록 포탈 열어 줌
-- 진행 중인지 판별하는 퀘스트는 [ID:3607 <(version:7.4)>[큐브릭]악마 큐브]를 사용(QuestResource.script_start_text, script_end_text, script_drop_text를 이용하여 세팅함)
if get_instance_dungeon_flag( 30000, layer, 'QuestInProgressCount' ) == 0 then
add_field_prop( 60102, 0, 99954, 31539, layer, 0 )
set_instance_dungeon_flag( 30000, layer, 'ExitPropRespawned', 1 )
end
end
end
-- 용도: 아크샤 잡고 생성된 포탈 클릭 시 호출되는 함수
-- 역할: 중앙의 갈림길 방으로 플레이어를 워프시키면서 아크샤를 두 마리 잡아야 한다는 미션 UI를 활성화시켜 줌
function warp_to_cubric_branch_room( side )
local layer = gv( 'layer' )
-- 중앙의 방으로 워프시켜 줌
if side == 1 then
warp( 98858, 30827, layer )
elseif side == 2 then
warp( 99180, 30825, layer )
end
-- 미션 UI가 아직 활성화 안 되어 있으면 미션 UI 활성화
if get_instance_dungeon_flag( 30000, layer, 'MissionRevealed' ) == 0 then
set_instance_dungeon_flag( 30000, layer, 'MissionRevealed', 1 )
-- 미션 제목
broadcast_mission_title( 1, '@1234', 30000, layer )
-- 0번 미션 목표(서쪽의 아크샤)
broadcast_mission_objective( 1, 0, 1, '@1235', 30000, layer )
-- 1번 미션 목표(동쪽의 아크샤)
broadcast_mission_objective( 1, 1, 1, '@1236', 30000, layer )
-- 2번 미션 목표(보스방 드가세요)
broadcast_mission_objective( 1, 2, 1, '@1237', 30000, layer )
-- 미션 보상 안내
broadcast_mission_reward( 1, '@1238', 30000, layer )
-- 미션 목표 진행 상태
update_cubric_mission( true, layer )
end
end
-- 용도: 아크샤 두 마리 다 잡고 보스 방으로 들어가는 문 클릭
-- 역할: 보스 방 내부로 플레이어를 워프시키면서 미션 UI를 제거시켜 줌
function warp_to_cubric_boss_room()
local layer = gv( 'layer' )
-- 보스 방 내부로 워프
warp( 99711, 31535, layer )
if get_instance_dungeon_flag( 30000, layer, 'MissionRevealed' ) == 1 then
-- 미션 완료
broadcast_mission_objective_progress( 1, 2, 1, 30000, layer )
-- 미션 보상 지급
do_each_player_in_instance_dungeon( 30000, layer, 'cubric_reward_distributer()' )
-- 미션 UI 더 이상 활성화되지 않게 플래그 값 변경
set_instance_dungeon_flag( 30000, layer, 'MissionRevealed', 2 )
-- 미션 UI 비활성화
broadcast_mission_title( 1, '', 30000, layer )
end
end
function cubric_reward_distributer()
--퀘스트 보상 Lv 150, 1% 수준
insert_gold( 300000 )
add_exp_jp( 5131363, 884717 )
cprint( '@1239' )
end
-- 용도: 미션 UI를 업데이트 해야 하는 몇몇 경우에 호출(부보스 사망, 유저 입장 등)
-- 역할: 미션 UI를 업데이트해야 하는 이벤트 발생 시 방 안의 모든 유저 또는 현재 스크립트 실행 주체 유저에게 미션 내용 알려주기
function update_cubric_mission( broadcast, layer )
-- 미션이 진행 중이지 않다면 딱히 알려줄 것도 없음
if get_instance_dungeon_flag( 30000, layer, 'MissionRevealed' ) ~= 1 then
return
end
if broadcast == true then
broadcast_mission_objective_progress( 1, 0, 1 - get_alive_instance_respawn_group_monster_count( 30000, layer, 1 ), 30000, layer )
broadcast_mission_objective_progress( 1, 1, 1 - get_alive_instance_respawn_group_monster_count( 30000, layer, 2 ), 30000, layer)
broadcast_mission_objective_progress( 1, 2, 0, 30000, layer )
else
send_mission_objective_progress( 0, 1 - get_alive_instance_respawn_group_monster_count( 30000, layer, 1 ) )
send_mission_objective_progress( 1, 1 - get_alive_instance_respawn_group_monster_count( 30000, layer, 2 ) )
send_mission_objective_progress( 2, 0 )
end
end
function NPC_bulcanus_joinitem_change()
dlg_title( "@90605268" ) --NPC 이름 ( 귀부인 라니에 )
dlg_text( "@90605269" ) --대사 ( 기본 대사 )
if is_premium() then
dlg_text( "@90605269" )
else
dlg_text( "@90700118" )
end
if is_premium() then
dlg_menu( "@90605271", " NPC_bulcanus_joinitem_change_want()" ) -- 사자의 혼 교환
end
dlg_menu( "@90010002", " " ) --대화 종료
dlg_show()
end
function NPC_bulcanus_joinitem_change_want()
dlg_title( "@90605268" ) --NPC 이름 ( 귀부인 라니에 )
dlg_text( "@90605285" ) --대사 ( 몇 층의 혼을 원하냐는 대화 )
dlg_menu( "@90605272", " NPC_bulcanus_joinitem_change_want_choice1( 1 ) " )
dlg_menu( "@90605273", " NPC_bulcanus_joinitem_change_want_choice2() " )
dlg_menu( "@90605274", " NPC_bulcanus_joinitem_change_want_choice3() " )
dlg_menu( "@90605275", " NPC_bulcanus_joinitem_change_want_choice4( 6 ) " )
dlg_menu( "@90010003", " NPC_bulcanus_joinitem_change() " ) --돌아가기
dlg_show()
end
function NPC_bulcanus_joinitem_change_want_choice1( case )
dlg_title( "@90605268" ) --NPC 이름 ( 귀부인 라니에 )
dlg_text( "@90605286" ) --대사 ( 1층의 혼을 원하는 것이 맞는지 묻는 대화 )
dlg_menu( "@90010195", " NPC_bulcanus_joinitem_change_want_choice_number( 1 ) " ) --예 ( 갯수 진행 )
dlg_menu( "@90010196", " NPC_bulcanus_joinitem_change_want() " ) --아니오 ( 돌아가기 )
dlg_show()
end
function NPC_bulcanus_joinitem_change_want_choice2()
dlg_title( "@90605268" ) --NPC 이름 ( 귀부인 라니에 )
dlg_text( "@90605287" ) --대사 ( 2층의 혼을 원하는 것이 맞는지와 어떤 층의 혼을 사용할 것인지 대화 )
dlg_menu( "@90605276", " NPC_bulcanus_joinitem_change_want_choice_1f2f( 2 ) " ) --1층 사자의 혼 사용 ( 맞는지 진행 )
dlg_menu( "@90605277", " NPC_bulcanus_joinitem_change_want_choice_3f2f( 3 ) " ) --2층 사자의 혼 사용 ( 맞는지 진행 )
dlg_menu( "@90010003", " NPC_bulcanus_joinitem_change_want() " ) -- 돌아가기
dlg_show()
end
function NPC_bulcanus_joinitem_change_want_choice3()
dlg_title( "@90605268" ) --NPC 이름 ( 귀부인 라니에 )
dlg_text( "@90605288" ) --대사 ( 3층의 혼을 원하는 것이 맞는지와 어떤 층의 혼을 사용할 것인지 대화 )
dlg_menu( "@90605278", " NPC_bulcanus_joinitem_change_want_choice_2f3f( 4 ) " ) --2층 사자의 혼 사용 ( 맞는지 진행 )
dlg_menu( "@90605279", " NPC_bulcanus_joinitem_change_want_choice_4f3f( 5 ) " ) --4층 사자의 혼 사용 ( 맞는지 진행 )
dlg_menu( "@90010003", " NPC_bulcanus_joinitem_change_want() " ) -- 돌아가기
dlg_show()
end
function NPC_bulcanus_joinitem_change_want_choice4( case )
dlg_title( "@90605268" ) --NPC 이름 ( 귀부인 라니에 )
dlg_text( "@90605289" ) --대사 ( 1층의 혼을 원하는 것이 맞는지 묻는 대화 )
dlg_menu( "@90010195", " NPC_bulcanus_joinitem_change_want_choice_number( 6 ) " ) --예 ( 갯수 진행 )
dlg_menu( "@90010196", " NPC_bulcanus_joinitem_change_want() " ) --아니오 ( 돌아가기 )
dlg_show()
end
function NPC_bulcanus_joinitem_change_want_choice_1f2f( case )
dlg_title( "@90605268" ) --NPC 이름 ( 귀부인 라니에 )
dlg_text( "@90605290" ) --대사 ( 1층 사자의 혼으로 2층 사자의 혼을 원하는 것인지 왁인해주는 대화 )
dlg_menu( "@90010195", " NPC_bulcanus_joinitem_change_want_choice_number( 2 )" ) -- 예( 갯수 진행 )
dlg_menu( "@90010003", " NPC_bulcanus_joinitem_change_want_choice2() " ) -- 돌아가기
dlg_show()
end
function NPC_bulcanus_joinitem_change_want_choice_3f2f( case )
dlg_title( "@90605268" ) --NPC 이름 ( 귀부인 라니에 )
dlg_text( "@90605291" ) --대사 ( 3층 사자의 혼으로 2층 사자의 혼을 워너하는 것인지 확인해주는 대화 )
dlg_menu( "@90010195", " NPC_bulcanus_joinitem_change_want_choice_number( 3 )" ) -- 예 ( 갯수 진행 )
dlg_menu( "@90010003", " NPC_bulcanus_joinitem_change_want_choice2() " ) -- 돌아가기
dlg_show()
end
function NPC_bulcanus_joinitem_change_want_choice_2f3f( case )
dlg_title( "@90605268" ) --NPC 이름 ( 귀부인 라니에 )
dlg_text( "@90605292" ) --대사 ( 2층 사자의 혼으로 3층 사자의 혼을 원하는 것인지 확인해주는 대화 )
dlg_menu( "@90010195", " NPC_bulcanus_joinitem_change_want_choice_number( 4 )" ) -- 예 ( 갯수 진행 )
dlg_menu( "@90010003", " NPC_bulcanus_joinitem_change_want_choice3() " ) -- 돌아가기
dlg_show()
end
function NPC_bulcanus_joinitem_change_want_choice_4f3f( case )
dlg_title( "@90605268" ) --NPC 이름 ( 귀부인 라니에 )
dlg_text( "@90605293" ) --대사 ( 4층 사자의 혼으로 3층 사자의 혼을 원하는 것인지 확인해주는 대화 )
dlg_menu( "@90010195", " NPC_bulcanus_joinitem_change_want_choice_number( 5 )" ) -- 예 ( 갯수 진행 )
dlg_menu( "@90010003", " NPC_bulcanus_joinitem_change_want_choice3() " ) -- 돌아가기
dlg_show()
end
function NPC_bulcanus_joinitem_change_want_choice_number( case )
dlg_title( "@90605268" ) --NPC 이름 ( 귀부인 라니에 )
dlg_text( "@90605294" ) --대사 ( 몇개의 사자의 혼을 바꿀지를 묻는 대화 )
dlg_menu( "@90605280", " NPC_bulcanus_joinitem_change_lastcheck( " .. case .. ", 10 ) " ) -- 10개
dlg_menu( "@90605281", " NPC_bulcanus_joinitem_change_lastcheck( " .. case .. ", 50 ) " ) -- 50개
dlg_menu( "@90605282", " NPC_bulcanus_joinitem_change_lastcheck( " .. case .. " , 100 ) " ) -- 100개
dlg_menu( "@90605283", " NPC_bulcanus_joinitem_change_lastcheck( " .. case .. " , 500 ) " ) -- 500개
dlg_menu( "@90010003", " NPC_bulcanus_joinitem_change_want() " ) -- 돌아가기
dlg_show()
end
function NPC_bulcanus_joinitem_change_lastcheck( case , number )
dlg_title( "@90605268" ) --NPC 이름 ( 귀부인 라니에 )
if case == 1 then
dlg_text( sconv ( "@90605295" , "#@want_num@#", tostring( number ),"#@use_floor@#", tostring(2), "#@use_num@#", tostring( ( number ) / 2 ), "#@want_floor@#", tostring(1) ) )
dlg_menu( "@90010195", " NPC_bulcanus_joinitem_change_want_choice_savecheck(" .. case .. ", " .. number .. ")" ) -- 예
dlg_menu( "@90010196", " NPC_bulcanus_joinitem_change_want_choice_number(" .. case .. ")" ) -- 아니오
dlg_show()
elseif case == 2 then
dlg_text( sconv ( "@90605295" , "#@want_num@#", tostring( number ),"#@use_floor@#", tostring(1), "#@use_num@#", tostring( ( number ) * 2 ), "#@want_floor@#", tostring(2) ) )
dlg_menu( "@90010195", " NPC_bulcanus_joinitem_change_want_choice_savecheck(" .. case .. ", " .. number .. ")" ) -- 예
dlg_menu( "@90010196", " NPC_bulcanus_joinitem_change_want_choice_number( case ) " ) -- 아니오
dlg_show()
elseif case == 3 then
dlg_text( sconv ( "@90605295" , "#@want_num@#", tostring( number ),"#@use_floor@#", tostring(3), "#@use_num@#", tostring( ( number ) / 2 ), "#@want_floor@#", tostring(2) ) )
dlg_menu( "@90010195", " NPC_bulcanus_joinitem_change_want_choice_savecheck(" .. case .. ", " .. number .. ")" ) -- 예
dlg_menu( "@90010196", " NPC_bulcanus_joinitem_change_want_choice_number(" .. case .. ")" ) -- 아니오
dlg_show()
elseif case == 4 then
dlg_text( sconv ( "@90605295" , "#@want_num@#", tostring( number ),"#@use_floor@#", tostring(2), "#@use_num@#", tostring( ( number ) * 2 ), "#@want_floor@#", tostring(3) ) )
dlg_menu( "@90010195", " NPC_bulcanus_joinitem_change_want_choice_savecheck(" .. case .. ", " .. number .. ")" ) -- 예
dlg_menu( "@90010196", " NPC_bulcanus_joinitem_change_want_choice_number(" .. case .. ")" ) -- 아니오
dlg_show()
elseif case == 5 then
dlg_text( sconv ( "@90605295" , "#@want_num@#", tostring( number ),"#@use_floor@#", tostring(4), "#@use_num@#", tostring( ( number ) / 2 ), "#@want_floor@#", tostring(3) ) )
dlg_menu( "@90010195", " NPC_bulcanus_joinitem_change_want_choice_savecheck(" .. case .. ", " .. number .. ")" ) -- 예
dlg_menu( "@90010196", " NPC_bulcanus_joinitem_change_want_choice_number(" .. case .. ")" ) -- 아니오
dlg_show()
elseif case == 6 then
dlg_text( sconv ( "@90605295" , "#@want_num@#", tostring( number ),"#@use_floor@#", tostring(3), "#@use_num@#", tostring( ( number ) * 2 ), "#@want_floor@#", tostring(4) ) )
dlg_menu( "@90010195", " NPC_bulcanus_joinitem_change_want_choice_savecheck(" .. case .. ", " .. number .. ")" ) -- 예
dlg_menu( "@90010196", " NPC_bulcanus_joinitem_change_want_choice_number(" .. case .. ")" ) -- 아니오
dlg_show()
end
end
function NPC_bulcanus_joinitem_change_want_choice_savecheck( save_case , save_number )
local count
if save_case == 1 then
count = find_item( 1000402 )
if count >= ( save_number ) / 2 then
delete_item( get_item_handle( 1000402 ), ( save_number ) / 2 )
insert_item( 1000401, save_number )
cprint( "@90605296" )
else
cprint( "@90605297" )
return
end
elseif save_case == 2 then
count = find_item( 1000401 )
if count >= ( save_number ) * 2 then
delete_item( get_item_handle( 1000401 ), ( save_number ) * 2 )
insert_item( 1000402, save_number )
cprint( "@90605296" )
else
cprint( "@90605297" )
return
end
elseif save_case == 3 then
count = find_item( 1000403 )
if count >= ( save_number ) / 2 then
delete_item( get_item_handle( 1000403 ), ( save_number ) / 2 )
insert_item( 1000402, save_number )
cprint( "@90605296" )
else
cprint( "@90605297" )
return
end
elseif save_case == 4 then
count = find_item( 1000402 )
if count >= ( save_number ) * 2 then
delete_item( get_item_handle( 1000402 ), ( save_number ) * 2 )
insert_item( 1000403, save_number )
cprint( "@90605296" )
else
cprint( "@90605297" )
return
end
elseif save_case == 5 then
count = find_item( 1000404 )
if count >= ( save_number ) / 2 then
delete_item( get_item_handle( 1000404 ), ( save_number ) / 2 )
insert_item( 1000403, save_number )
cprint( "@90605296" )
else
cprint( "@90605297" )
return
end
elseif save_case == 6 then
count = find_item( 1000403 )
if count >= ( save_number ) * 2 then
delete_item( get_item_handle( 1000403 ), ( save_number ) * 2 )
insert_item( 1000404, save_number )
cprint( "@90605296" )
else
cprint( "@90605297" )
return
end
end
end
I noticed while breaking things that every time I warped into moonlight the script was being read in order to make the instance work. Makes sense... how else would it know? Well that's where i'm completely clueless. I have no idea how to make that happen elsewhere. Could anyone perhaps enlighten me?
|
|
|
01/28/2015, 21:09
|
#4210
|
elite*gold: 0
Join Date: Oct 2010
Posts: 2,555
Received Thanks: 2,460
|
ChannelResource entry must exist per instance entry. The left,top,right,bottom must ecompass fuill dungeon to be instanced. left,top (= bottom left corner of map /position x = left, y = top) right,bottom (= top right corner of map /position x = right, y = bottom)
|
|
|
01/28/2015, 22:05
|
#4211
|
elite*gold: 0
Join Date: Mar 2010
Posts: 10
Received Thanks: 0
|
Quote:
Originally Posted by ismokedrow
ChannelResource entry must exist per instance entry. The left,top,right,bottom must ecompass fuill dungeon to be instanced. left,top (= bottom left corner of map /position x = left, y = top) right,bottom (= top right corner of map /position x = right, y = bottom)
|
Thanks for the reply Drow. I've added those to my db now. Is there anything else that needs to be done to get instances configured properly that you know?
|
|
|
01/28/2015, 22:07
|
#4212
|
elite*gold: 0
Join Date: Oct 2010
Posts: 2,555
Received Thanks: 2,460
|
Just make sure to enter instance via enter_instance_dungeon(instanceid)
|
|
|
01/28/2015, 22:28
|
#4213
|
elite*gold: 0
Join Date: Feb 2013
Posts: 119
Received Thanks: 13
|
@ismokedrow
look at this @
private void SaveBT_Click(object sender, EventArgs e)
{
double db = double.Parse(BoxTime.Text);
Timer t = new Timer(db); // 1 sec = 1000, 60 sec = 60000
t.AutoReset = true;
t.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);
t.Start();
}
private static void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
using (var writer = new StreamWriter("loop.txt"))
{
writer.Write("#notice'(" + NoticeOne.Text + ")'");
}
}
|
|
|
01/29/2015, 03:19
|
#4214
|
elite*gold: 0
Join Date: Oct 2010
Posts: 2,555
Received Thanks: 2,460
|
Quote:
Originally Posted by mohamad512
@ismokedrow
look at this @
private void SaveBT_Click(object sender, EventArgs e)
{
double db = double.Parse(BoxTime.Text);
Timer t = new Timer(db); // 1 sec = 1000, 60 sec = 60000
t.AutoReset = true;
t.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);
t.Start();
}
private static void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
using (var writer = new StreamWriter("loop.txt"))
{
writer.Write("#notice'(" + NoticeOne.Text + ")'");
}
}
|
I am more a fan of inline linq than actuallying having EventMethods. I would write it more like this:
Code:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace cEdit
{
public static class AutoNotice
{
static Timer noticeTimer;
public static void StartTimer()
{
if (noticeTimer == null)
{
noticeTimer = new Timer();
noticeTimer.Interval = 1000; //1000 = 1s
noticeTimer.Tick += (o, x) => { writeToTelnet(); };
noticeTimer.Start();
}
else { MessageBox.Show("Timer already started!", "Exception", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); }
}
public static void StopTimer()
{
noticeTimer.Stop();
noticeTimer = null;
MessageBox.Show("Timer has been halted!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
public static void writeToTelnet()
{
using (StreamReader reader = new StreamReader(File.Open("full_filepath", FileMode.Open)))
{
string currentLine = null;
while ((currentLine = reader.ReadLine().Trim()) != null)
{
//You should write the command per eachline in your file like:
// #notice("this is a notice")
// #notice("this is notice 2")
string telnetCommand = currentLine;
//write telnet command to telnet
//make sure to give the telnet some time to process and respond properly or you will have issues
System.Threading.Thread.Sleep(250);
}
}
}
}
}
|
|
|
01/29/2015, 04:06
|
#4215
|
elite*gold: 0
Join Date: Jun 2008
Posts: 86
Received Thanks: 1
|
Does anyone have the undergound or circus gear ID's, I cannot seem to find them on here or in my database?
|
|
|
Similar Threads
|
[Helping Topic] 24/7 Helping Services!
08/27/2008 - EO PServer Hosting - 31 Replies
stucked on anything while setuping your server?
post your problem here and you will get answer as fast as possible better than spamming with posts :cool:
first of all try reading Ahmedpotop's Pserver All thing guide.
if your couldn't solve it out post your problem down here
""That includes PHP rankings pages / registrations pages / Status pages""
|
All times are GMT +1. The time now is 04:56.
|
|