Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Guide on making an Instance Dungeon.

Junior Spellweaver
Joined
May 6, 2013
Messages
105
Reaction score
9
I haven't seen any guide for making and it's still good to have one.

YOU NEED :

-to know how to add a map and mobs in (http://forum.ragezone.com/f593/beginner-guide-adding-maps-tut-941410/) credits go to popejohnpaul.

-a text editor

- the map folder with the shmd files (it's important)

- The "structure" of your Instance. (If it's like LN or Iyzel or like a KQ)

-SHN editor

-MapInfo.shn and MapViewInfo.shn from the "official" versions (OS or gamigo)

-Shine Tables

-MobInfo.shn


I.Adding the map

For example we're gonna use the WarN map (devildom territory), you copy the folder into resmap> IDField.

Add the map : http://forum.ragezone.com/f593/beginner-guide-adding-maps-tut-941410/
(copy paste the line from OS or gamigo Shn to your own shn)

Go to the map folder open the XXX.shmd file in any text editor and check if the repertory is
resmap/IDField/WarN (there are many like this so make sure all the line got this setup).

Run your server and check if the map works fine.

II.Making the regen

Once you got the map running, copy paste an existing .txt (in MobRegen) and rename it to WarN, then open it with shine table

You will have a table like that on the 1st page.

Empty0GroupIndexIsFamilyCenterXCenterYWidthHeightRangeDegree
WarN1Y/N###########0250
WarN2Y/N###########0250
WarN3Y/N###########0250
WarN4Y/N###########0250
WarN5Y/N###########0250


to fill the column CenterX CenterY and width you need to go in game and use the command &coord where you want your mob to be and write it down. The coord will appear in this form[CenterX/CenterY/Width]
For the IsFamily you choose between Y or N, Y if you want your Group of mob to attack together or N if you want them to attack alone. (YOU CAN PUT ONLY 1 LETTER ON THIS CASE)



on the 2nd page you will have a table starting like that
Empty0RegenIndexMobIndexMobNum
WarN1xxxxx###
WarN2xxxxx###
WarN3xxxxx###
WarN4xxxxx###
WarN5xxxxx###

You only have to fill this part of the table : For RegenIndex it must be the same in the 1st and 2nd table.

For MobIndex you put the MobInx name here and for MobNum , the number of mob you want to spawn.
I.E = MobIndex : slime/ MobNum = 5
It will spawn 5 slime.

III. The PineScript

Copy paste a .ps file (Shine>ScenarioBookShelf>ID) Then open it in a text editor.

You will have something like that (The thing to edit will be underlined and bold)

Code:
;º¸½º 1  850 6060;º¸½º 2 5410 1890
;·¹ºñ   2945 2748


open [main]
    var BossAInfo           "[B][U]KingBoogy 819 2864 0[/U][/B]"                    ;<@>;  ù° º¸½º À妽º¿Í À§Ä¡
        BossBInfo           "[B][U]EmperorCrab 5487 1959 0[/U][/B]"                 ;<@>;  µÑ° º¸½º À妽º¿Í À§Ä¡
        LeviMainInfo        "[B][U]ViciousLeviathan 2948 2743 0[/U][/B]"            ;<@>;  ¸®¹ÙÀ̾î´ø À妽º¿Í À§Ä¡
;        LeviHeadInfo        "ViciousLeviathan01 2948 2743 90"          ;<@>;  ¸®¹ÙÀ̾î´ø ¸Ó¸®¸¸ÀÇ À§Ä¡   ;!@#$%^&*();
        NPCTargetCoord      "BombBoogySum01  650 3588 " %
;                            "BombBoogySum02  416 3185 " %
;                            "BombBoogySum02 1137 3197 " %
;                            "BombBoogySum03  806 2748 " %
                            "0 0 0"
;        ExitInfo            "IDMapLinkGate02 2253 2627 270"              ;<@>;  º¸½º óġ ÈÄ ¹® À妽º¿Í À§Ä¡, ¹æÇâ
;        GateInfo            "IDMapLinkGate02 3019 5573 0"              ;<@>;  ÀÔ±¸ÀÇ ¹® À妽º¿Í À§Ä¡, ¹æÇâ
        BossAHandle         0
        BossBHandle         0
        LeviMainHandle      0
        LeviHeadHandle      0
        RestMiddleBoss      2
        ReturnGate          ""
        ExitGate            ""
        InterruptBlock      ""
        InterruptArg        "".


    call "BossRegen".
    
    var MobIndex @RemoveFirst("GateInfo" " ")
        CoordX   @RemoveFirst("GateInfo" " ")
        CoordY   @RemoveFirst("GateInfo" " ")
        Direct   @RemoveFirst("GateInfo" " ").
    npcstand ReturnGate MobIndex CoordX CoordY Direct 1000 "Normal".
    interruptset NPCClickHandle "" 999999 ReturnGate "ReturnToGate".
    
    scriptfile "d_NestOfLeviathan".


    ; ¸®¹ÙÀ̾î´ø µ¿¸é»óÅÂ
    abstateset LeviMainHandle "StaImmortal" 1 4200000000.
    abstateset LeviHeadHandle "StaImmortal" 1 4200000000.
    abstateset LeviMainHandle "StaBattleBlowStun" 1 4200000000.
    abstateset LeviHeadHandle "StaBattleBlowStun" 1 4200000000.
    abstateset LeviMainHandle "StaHide" 1 4200000000.
    abstateset LeviHeadHandle "StaHide" 1 4200000000.
    abstateset BossBHandle "StaImmortal" 1 4200000000.
    abstateset BossBHandle "StaBattleBlowStun" 1 4200000000.
    abstateset BossBHandle "StaHide" 1 4200000000.


    ; Àâ¸÷ ¼¼¿ì±â
    call "Fellows".


    interruptset HPLow "" 1 BossAHandle 950 "onHPLowMiddleBossA".
    interruptset DeadHandle "" 1 BossAHandle "BoogyDead".
    
    pause Sec 15.
    chatwin "RouTownChiefRoumenus" "Start0".
    pause Sec 2.
    chatwin "RouTownChiefRoumenus" "Start1".
    pause Sec 2.
    chatwin "RouTownChiefRoumenus" "Start2".


	infinite
	open
		waitinterrupt InterruptBlock "InterruptArg".
		call InterruptBlock.
	close


close


open [Fellows]
    regengroup "[B][U]Leviathan[/U][/B]" "[B][U]Leviathan001[/U][/B]".                      ;<@>;  Àâ¸÷µé ¸®Á¨±×·ì
    regengroup "[B][U]Leviathan[/U][/B]" "[B][U]Leviathan002[/U][/B]".
    regengroup "[B][U]Leviathan[/U][/B]" "[U][B]Leviathan003[/B][/U]".
    
close


open [BoogyDead]
    suicide BombBoogySum01.
    suicide BombBoogySum02.
    suicide BombBoogySum03.
    interrupterase "BoogyTime".
    
    var BossString      ""
        BossHandleVar   "".
    BossString = BossBInfo.
    BossHandleVar = "BossBHandle".
    call "BossRegen2".


    abstatereset BossBHandle "StaImmortal".
    abstatereset BossBHandle "StaBattleBlowStun".
    abstatereset BossBHandle "StaHide".


    chatwin "EldSpeGuard01" "KingBoogy0".
    pause Sec 2.
    chatwin "EldSpeGuard01" "KingBoogy1".
    pause Sec 2.
    chatwin "EldSpeGuard01" "KingBoogy2".
    pause Sec 2.
    chatwin "EldSpeGuard01" "KingBoogy3".
    pause Sec 2.
    chatwin "EldSpeGuard01" "KingBoogy4".


    interruptset DeadHandle "" 1 BossBHandle "CrabDead".


close


open [CrabDead]


    abstatereset LeviMainHandle "StaImmortal".
    abstatereset LeviMainHandle "StaBattleBlowStun".
    abstatereset LeviMainHandle "StaHide".
    abstatereset LeviHeadHandle "StaImmortal".
    abstatereset LeviHeadHandle "StaBattleBlowStun".
    abstatereset LeviHeadHandle "StaHide".


    chatwin "EldSpeGuard01" "KingCrap0".
    pause Sec 2.
    chatwin "EldSpeGuard01" "KingCrap1".
    pause Sec 2.
    chatwin "EldSpeGuard01" "KingCrap2".
    pause Sec 2.
    chatwin "EldSpeGuard01" "KingCrap3".
    pause Sec 2.
    chatwin "EldSpeGuard01" "KingCrap4".


    var BossString      ""
        BossHandleVar   "".
    BossString = LeviMainInfo.
    BossHandleVar = "LeviMainHandle".
    call "BossRegen2".
    BossString = LeviHeadInfo.
    BossHandleVar = "LeviHeadHandle".
    call "BossRegen2".
    interruptset DeadHandle "" 1 LeviMainHandle  "MainDead".
    interruptset DeadHandle "" 1 LeviHeadHandle  "HeadDead".
    call "LeviathanAwake".




close


open [MiddleBossADead]
;    RestMiddleBoss = RestMiddleBoss - 1.
;    if RestMiddleBoss == 0
;    then open
;        call "LeviathanAwake".
;    close
    suicide BombBoogySum01.
    suicide BombBoogySum02.
    suicide BombBoogySum03.
    interrupterase "BoogyTime".
    
    var BossString      ""
        BossHandleVar   "".
    BossString = BossBInfo.
    BossHandleVar = "BossBHandle".
    call "BossRegen2".
    
    interruptset DeadHandle "" 1 BossBHandle "MiddleBossBDead".
    chatwin "EldSpeGuard01" "KingBoogy0".
    pause Sec 2.
    chatwin "EldSpeGuard01" "KingBoogy1".
    pause Sec 2.
    chatwin "EldSpeGuard01" "KingBoogy2".
    pause Sec 2.
    chatwin "EldSpeGuard01" "KingBoogy3".
    pause Sec 2.
    chatwin "EldSpeGuard01" "KingBoogy4".


close


open [MiddleBossBDead]
;    RestMiddleBoss = RestMiddleBoss - 1.
;    if RestMiddleBoss == 0
;    then open
;        call "LeviathanAwake".
;    close
    
    var BossString      ""
        BossHandleVar   "".
    BossString = LeviMainInfo.
    BossHandleVar = "LeviMainHandle".
    call "BossRegen2".
    BossString = LeviHeadInfo.
    BossHandleVar = "LeviHeadHandle".
    call "BossRegen2".
    interruptset DeadHandle "" 1 LeviMainHandle  "MainDead".
    interruptset DeadHandle "" 1 LeviHeadHandle  "HeadDead".
    call "LeviathanAwake".


    chatwin "EldSpeGuard01" "KingCrap0".
    pause Sec 2.
    chatwin "EldSpeGuard01" "KingCrap1".
    pause Sec 2.
    chatwin "EldSpeGuard01" "KingCrap2".
    pause Sec 2.
    chatwin "EldSpeGuard01" "KingCrap3".
    pause Sec 2.
    chatwin "EldSpeGuard01" "KingCrap4".
close


open [LeviathanAwake]
    abstatereset LeviMainHandle "StaImmortal".
    abstatereset LeviMainHandle "StaBattleBlowStun".
    abstatereset LeviMainHandle "StaHide".
    abstatereset LeviHeadHandle "StaImmortal".
    abstatereset LeviHeadHandle "StaBattleBlowStun".
    abstatereset LeviHeadHandle "StaHide".
	
	interruptset HPLow "HPLowLeviathan" 1 LeviMainHandle 950 "onHPLowLeviathan".
	interruptset HPLow "HPLowLeviathan" 1 LeviHeadHandle 950 "onHPLowLeviathan".
close


open [TargetRegen]
    var num     0
        NPC     0.
    while num < 30
    open
        var MobIndex @RemoveFirst("NPCTargetCoord" " ")
            CoordX   @RemoveFirst("NPCTargetCoord" " ")
            CoordY   @RemoveFirst("NPCTargetCoord" " ").
        if CoordX === 0
        then open
            break "TargetRegen".
        close
        mobregen NPC MobIndex CoordX CoordY 0 1000 "Normal".
        num = num + 1.
    close
close


open [BossRegen]
    var BossString      ""
        BossHandleVar   "".
    BossString = BossAInfo.
    BossHandleVar = "BossAHandle".
    call "BossRegen2".
close


open [BossRegen2]
    var MobIndex @RemoveFirst("BossString" " ")
        CoordX   @RemoveFirst("BossString" " ")
        CoordY   @RemoveFirst("BossString" " ")
        Angle    @RemoveFirst("BossString" " ").


    mobregen #BossHandleVar MobIndex CoordX CoordY Angle 1000 "Normal".
close


open[MainDead]
    if LeviHeadHandle =!= ""
    then open
        suicide LeviHeadHandle.
        LeviHeadHandle = "".
    close


    var MobIndex @RemoveFirst("ExitInfo" " ")
        CoordX   @RemoveFirst("ExitInfo" " ")
        CoordY   @RemoveFirst("ExitInfo" " ")
        Direct   @RemoveFirst("ExitInfo" " ")
        Box      0.
    mobregen Box "LeviathanEggBox" 2443 2662 0 1000 "Normal".
    npcstand ExitGate MobIndex CoordX CoordY Direct 1000 "Normal".
	interruptset NPCClickHandle "" 999999 ExitGate "ReturnToRoumen".
	
	interrupterase "EggRegen".
	interrupterase "GuardianEggBroken".
	interrupterase "GuardEggBroken".
	interrupterase "BuffEggBroken".
	interrupterase "EggBroken".
    
	suicide ID_NestGuardianEgg.
	suicide ID_NestGuardEgg.
    suicide ID_NestGuardian.
    suicide ID_NestGuard.
    suicide ID_NestBuffEgg.
    
    chatwin "RouTownChiefRoumenus" "Leviathan0".
    pause Sec 2.
    chatwin "RouTownChiefRoumenus" "Leviathan1".
    pause Sec 2.
    chatwin "RouTownChiefRoumenus" "Leviathan2".
    pause Sec 2.
    chatwin "RouTownChiefRoumenus" "Leviathan3".
    pause Sec 2.
    chatwin "RouTownChiefRoumenus" "Leviathan4".
close


open[ReturnToRoumen]
    var mclicker 0
        MapIndex "RouN"
        CoordX   "6445"
        CoordY   "8630".
    whoclickme mclicker InterruptArg.
	linkto mclicker MapIndex MapIndex CoordX CoordY.              ;<@>; µ¹¾Æ°¥ À§Ä¡
close


open[ReturnToGate]
    var mclicker 0
        MapIndex "IDGate01"
        CoordX   "1004"
        CoordY   "1306".
    whoclickme mclicker InterruptArg.
	linkto mclicker MapIndex MapIndex CoordX CoordY.              ;<@>; µ¹¾Æ°¥ À§Ä¡
close


open[HeadDead]
    LeviHeadHandle = "".
close


open [onHPLowLeviathan]
	interrupterase "HPLowLeviathan".
	interruptset Sec "EggRegen" 100 120 "onEggRegen".
	interruptset DeadIndex "GuardianEggBroken" 99999 "ID_NestGuardianEgg" "onGuardianEggBroken".
	interruptset DeadIndex "GuardEggBroken" 99999 "ID_NestGuardEgg" "onGuardEggBroken".
	interruptset DeadIndex "BuffEggBroken" 99999 "ID_NestBuffEgg" "onBuffEggBroken".
close


open [onHPLowMiddleBossA]
    ;call "TargetRegen".
    ;call "onBoogyTime".
close


open [onBoogyTime]
    summonmob BossAHandle "BombBoogy01" 1.
    summonmob BossAHandle "BombBoogy02" 1.
    summonmob BossAHandle "BombBoogy02" 1.
    summonmob BossAHandle "BombBoogy03" 1.
    
    interruptset Sec "BoogyTime" 1 5 "onBoogyTime".
close


open [onEggRegen]
	regengroup "Leviathan" "Leviathan035".
	regengroup "Leviathan" "Leviathan036".
	regengroup "Leviathan" "Leviathan037".
	interruptset Sec "EggBroken" 1 60 "onEggBroken".
    interruptset Sec "GoodTimeToDie" 1 175 "onGoodTimeToDie".
close


open [onEggBroken]
	suicide ID_NestGuardianEgg.
	suicide ID_NestGuardEgg.
close


open [onGoodTimeToDie]
    suicide ID_NestGuardian.
    suicide ID_NestGuard.
close


open [onGuardianEggBroken]
	summonmob InterruptArg "ID_NestGuardian" 2.
close


open [onGuardEggBroken]
	summonmob InterruptArg "ID_NestGuard" 15.
close


open [onBuffEggBroken]
	var bufftarget 0.
	whokillme bufftarget InterruptArg.
	abstateset bufftarget "StaDeadlyBlessing" 1 15000.
close
The 3 first line to edit, you have to put your boss info in this format [MobIndex CenterX CenterY Width]

For the fellows you have to put it in this format

regengroup "Name of the Regen files (a .txt file)" "RegenIndex".

save as NameOfYourInstance.ps (extension is important must be .ps) in the same folder (ScenarioBookShelf>ID)

Go in Shine>World open PineScript.txt with Shine table : at the end of the 1st table put this : ID/NameOfYourPineScriptFile and and the end of the second table put this : NameOfYourPineScriptFile.

Now go in World> Script then copy paste any script and rename the freshly pasted one.

IV. Config in Field.txt and NPC.txt

Open field.txt with Shine Table,in the 1st table : copy paste LN instance line and change the checksum. The regen city and regen coord.

In the 2nd table copy paste the LN line again change the script file name (you will have a case with this format : ID/NameOfYourInstance.

Don't close or save yet.

Now open NPC.txt (in World folder) go at the bottom and create an IDGate.

Then paste The IDGate argument in Field.txt Gate argument column.


Save all start your services, enjoy.

If you have any trouble message on skype : dersfinou
 
Initiate Mage
Joined
Nov 7, 2011
Messages
12
Reaction score
0
What did i wrong if it says The instance is currently full and the maps are running ? and Thank you for this guide btw
 
Initiate Mage
Joined
Oct 4, 2014
Messages
21
Reaction score
1
instance full could be alot of reasons. Some reasons it could say that are;
- The instance isnt in the same zone as map where the gate is at.
- The mapload is full when u try to enter it (too many maps)
- an error in Field.txt other then the one above ^
- an error in NPC.txt. (like wrong gate name or so)
- u get spawned outside the map coordinates (?)
 
Back
Top