You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
SigFiesta/ScenarioBookShelf/Promote/JobChange2-1.ps

224 lines
6.7 KiB

; 전직필드
open [main]
var PlayerHandle ""
Roumenos ""
NPC ""
NPCList ""
LoopIndex ""
LoginWait ""
InterruptBlock ""
InterruptArg "".
scriptfile "JobChange2-1".
; 마을 npc들
npcstand NPC "RouSmithJames" 5937 6644 0 1000 "Normal".
npcstand NPC "RouSoulMctJulia" 8032 6469 0 1000 "Normal".
npcstand Roumenos "RouTownChiefRoumenus" 5988 4677 178 1000 "Normal".
npcstand NPC "RouWeaponTitleMctZach" 4985 5853 171 1000 "Normal".
npcstand NPC "RouSkillRubi" 7129 6115 173 1000 "Normal".
npcstand NPC "RouItemMctPey" 7133 5428 0 1000 "Normal".
npcstand NPC "RouStoreRaina" 6139 5197 342 1000 "Normal".
npcstand NPC "RouRookieGuideRaemi" 7720 4623 80 1000 "Normal".
npcstand NPC "RouGrandfatherRobin" 4478 6735 0 1000 "Normal".
npcstand NPC "RouGuildBrom" 4948 5015 0 1000 "Normal".
open [BaggerRegen]
LoopIndex = 0.
var coord ""
x ""
y ""
d "".
while LoopIndex < 15
open
coord = @CircularScatter(6242 4646 1000). ; 6242, 4646을 중심으로 반지름 1000 영역에 뿌릴 경우의 죄표 만들기("7276 9217" 형식의 리턴)
x = @RemoveFirst("coord" " "). ; 리스트형태인 coord에서 " "로 분리된 첫째원소를 x에 넣고 coord에서는 지움. coord변수의 값도 변해야 하므로 coord 자체를 보내야
y = @RemoveFirst("coord" " "). ; 리스트형태인 coord에서 " "로 분리된 첫째원소를 y에 넣고 coord에서는 지움. coord변수의 값도 변해야 하므로 coord 자체를 보내야
d = @Random(0 360).
; Bandit 형태의 NPC를 만드는 기능은 없으므로 몹을 만든 NPC로 바꿈
mobregen NPC "Slime" x y d 1000 "Normal" "Beggar". ; 만들어짐. 가장 인수가 플레이어 핸들이면 복사판, "Beggar"이면 클래스 상관없이 장비없음
change2npc NPC "Slime".
LoopIndex = LoopIndex + 1.
close
LoopIndex = 0.
while LoopIndex < 5
open
coord = @CircularScatter(5807 6234 500).
x = @RemoveFirst("coord" " ").
y = @RemoveFirst("coord" " ").
d = @Random(0 360).
; Bandit 형태의 NPC를 만드는 기능은 없으므로 몹을 만든 NPC로 바꿈
mobregen NPC "Slime" x y d 1000 "Normal" "Beggar". ; 만들어짐. 가장 인수가 플레이어 핸들이면 복사판, "Beggar"이면 클래스 상관없이 장비없음
change2npc NPC "Slime".
LoopIndex = LoopIndex + 1.
close
close
waitlogin LoginWait. ; 플레이어의 로긴 기다림
if LoginWait == 0
then open
call "QuestFail".
close
findhandle PlayerHandle "Player" 0. ; 플레이어의 핸들을 찾음(처음 하나만)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 플레이어가 들어와서 이상함을 느낄 때까지 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
open [Arrive] ; NPC를 5회 클릭할 때까지 기다림
var ClickNum 0
ClickHandle 0.
interruptclear all.
interruptset NPCClickAny "NPCClickInt" 99999 "NPCClick". ; 어떤 NPC든지 클릭될 NPCClick 호출
interruptset PlayerEliminate "" 1 "QuestFail".
infinite
open
waitinterrupt InterruptBlock "InterruptArg".
call InterruptBlock.
close
close
interrupterase "NPCClickInt". ; NPC 클릭할때의 이벤트 지움
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 모든 NPC를 좀비로 바꿈 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
maplight 150 70 70.
mapfog 100 1400.
NPCList = @GetObjectList(PlayerHandle "NPC" "BANDIT"). ; PlayerHandle에서 가장 가까운 NPC, Bandit 찾기
open [Zombinaze]
var ScreamNo 0.
infinite
open
NPC = @RemoveFirst("NPCList" " ").
if NPC == "" ; 더이상 찾을수 없음
then open
break "Zombinaze".
close
npcchat NPC "Scream" % ScreamNo. ; "아아악!", "끼야악!", "으악!" 등등
exchange2mob NPC "Job2_Zombie". ; NPC를 없애고 새로운 ZombieKnight를 만듦
npcchat NPC "Scream" % ScreamNo. ; "아아악!", "끼야악!", "으악!" 등등
ScreamNo = ScreamNo + 1.
if ScreamNo >= 3
then open
ScreamNo = 0.
close
close
close
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 결판이 때까지 기다림 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
timelimit Min 20. ; 제한시간 20분
interruptset TimeOut "" 1 "QuestFail".
interruptset MobEliminate "" 1 "QuestSuccess".
interruptset DeadIndex "" 99999 "Job2_Zombie" "ZombieMessage".
infinite
open
waitinterrupt InterruptBlock "InterruptArg".
call InterruptBlock.
close
close
open [ZombieMessage]
var ZombieNum 0.
ZombieNum = @Count("Job2_Zombie").
printf "Zombie : " % ZombieNum.
if ZombieNum === 0
then open
call "QuestSuccess".
close
if ZombieNum > 10
then open
ZombieNum = 10.
close
broadcast All "ReftMob" % ZombieNum.
close
open [NPCClick]
npcchat InterruptArg "NoChat". ; "..."을 출력
if ClickHandle =!= InterruptArg
then open
ClickNum = ClickNum + 1.
ClickHandle = InterruptArg.
; if ClickNum >= 5
; then open
; break "Arrive".
; close
if InterruptArg === Roumenos
then open
break "Arrive".
close
close
close
open [QuestSuccess]
; itemattrset PlayerHandle "Job2_STpiece1" "-s1". ; 아이템 Job2_STpiece1(ItemClass_KQStep) 스텝을 1로 만듦
itemerase PlayerHandle "Job2_STpiece1".
itemcreate PlayerHandle "Job2_STpiece1-1".
pause Sec 1.
questresult Suc. ; 성공패킷 날림
scinariocode PlayerHandle 16.
pause Sec 2.
broadcast all "KQReturn30".
pause sec 10.
broadcast all "KQReturn20".
pause sec 10.
broadcast all "KQReturn10".
pause sec 5.
broadcast all "KQReturn5".
pause sec 5.
linkto all "RouVal01" "RouVal01" 12842 6467.
break "main".
close
open [QuestFail]
questresult Fail. ; 실패패킷 날림
broadcast all "RouReturn30".
pause sec 10.
broadcast all "RouReturn20".
pause sec 10.
broadcast all "RouReturn10".
pause sec 5.
broadcast all "RouReturn5".
pause sec 5.
linkto all "RouVal01" "RouVal01" 12842 6467.
break "main".
close