Jump to content

CantSt0p

Member
  • Posts

    49
  • Joined

  • Last visited

  • Feedback

    100%

Posts posted by CantSt0p

  1. Have you tried google?

    First link: you just need to add one more variable for each skill

    ----------------------------------
    --  Regenbogenstein der nach dem lesen verschwindet
    ----------------------------------
    quest regenbogen begin
        state start begin
                when 50512.use  begin
                    
                    say_title("Regenbogenstein")
                    say("Beachte, dass der Regenbogenstein nach dem Lesen verschwindet.")
                    say("Das Ausnutzen des Bugs ist verboten!")
                    say("Du möchtest also deine Skills auf")
                    say("Perfekter-Meister setzen?")
                    
                    if pc.job ==0 then
                    say("Wähle deine Lehre aus")
                    
                    local s=select("Körper","Mental")
                    
                    if s==1 then
                    --Körper
                    pc.set_skill_group(1)
                    pc.set_skill_level(1 ,59)
                    pc.set_skill_level(2 ,59)
                    pc.set_skill_level(3 ,59)
                    pc.set_skill_level(4 ,59)
                    pc.set_skill_level(5 ,59)
                    say("Deine Skills sind auf Perfekter Meister")
                    end
                    item.remove (50512 ,1)
                    
                    if s==2 then
                    --Mentalo
                    pc.set_skill_group(2)
                    pc.set_skill_level(16 ,59)
                    pc.set_skill_level(17 ,59)
                    pc.set_skill_level(18 ,59)
                    pc.set_skill_level(19 ,59)
                    pc.set_skill_level(20 ,59)
                    say("Deine Skills sind auf Perfekter Meister")
                    end
                    item.remove (50512 ,1)
                    
                    elseif pc.job ==1 then
                    say("Wähle deine Lehre aus")
                    
                    local s=select("Nahkampf","Bogen")
                    
                    if s==1 then
                    --Nahkampf
                    pc.set_skill_group(3)
                    pc.set_skill_level(31 ,59)
                    pc.set_skill_level(32 ,59)
                    pc.set_skill_level(33 ,59)
                    pc.set_skill_level(34 ,59)
                    pc.set_skill_level(35 ,59)
                    say("Deine Skills sind auf Perfekter Meister")
                    end
                    item.remove (50512 ,1)
                    
                    if s==2 then
                    --Fernkampf
                    pc.set_skill_group(4)
                    pc.set_skill_level(46 ,59)
                    pc.set_skill_level(47 ,59)
                    pc.set_skill_level(48 ,59)
                    pc.set_skill_level(49 ,59)
                    pc.set_skill_level(50 ,59)
                    say("Deine Skills sind auf Perfekter Meister")
                    end
                    item.remove (50512 ,1)
                    
                    elseif pc.job ==2 then
                    say("Wähle deine Lehre aus")
                    local s=select("Magie","Waffe")
                    
                    if s==1 then
                    --Magie
                    pc.set_skill_group(5)
                    pc.set_skill_level(76 ,59)
                    pc.set_skill_level(77 ,59)
                    pc.set_skill_level(78 ,59)
                    pc.set_skill_level(79 ,59)
                    pc.set_skill_level(80 ,59)
                    pc.set_skill_level(81, 59)
                    say("Deine Skills sind auf Perfekter Meister")
                    end
                    item.remove (50512 ,1)
                    
                    if s==2 then
                    --Waffe
                    pc.set_skill_group(6)
                    pc.set_skill_level(61 ,59)
                    pc.set_skill_level(62 ,59)
                    pc.set_skill_level(63 ,59)
                    pc.set_skill_level(64 ,59)
                    pc.set_skill_level(65 ,59)
                    pc.set_skill_level(66 ,59)
                    say("Deine Skills sind auf Perfekter Meister")
                    end
                    item.remove (50512 ,1)
                    
                    elseif pc.job ==3 then
                    say("Wähle deine Lehre aus")
                    local s=select("Heil","Drachen")
                    
                    if s==1 then
                    --Heil
                    pc.set_skill_group(7)
                    pc.set_skill_level(106 ,59)
                    pc.set_skill_level(107 ,59)
                    pc.set_skill_level(108 ,59)
                    pc.set_skill_level(109 ,59)
                    pc.set_skill_level(110 ,59)
                    pc.set_skill_level(111 ,59)
                    say("Deine Skills sind auf Perfekter Meister")
                    end
                    item.remove (50512 ,1)
                    
                    if s==2 then
                    --Drachen
                    pc.set_skill_group(8)
                    pc.set_skill_level(91 ,59)
                    pc.set_skill_level(92 ,59)
                    pc.set_skill_level(93 ,59)
                    pc.set_skill_level(94 ,59)
                    pc.set_skill_level(95 ,59)
                    pc.set_skill_level(96 ,59)
                    say("Deine Skills sind auf Perfekter Meister")
                    end
            item.remove (50512 ,1)
                end
            end
        end
    end

     

  2. Just edit your give_basic_weapon quest. Your point of interest is horse.set_level and horse.summon.

    quest give_basic_weapon begin
    	state start begin
    		function basic_item(job,index)
    			item_list={}	
    			item_list[0] = {50187} 
    			item_list[1] = {50212}
    			item_list[2] = {50211}
    			item_list[3] = {50213}
    			return  item_list[job][index]
    		end
    
    		when login begin
    			if pc.getqf("basic_weapon") == 0 then
    				pc.setqf("basic_weapon", 1)
    
    				if pc.countitem(item) == 0 and pc.weapon != item then
    					pc.give_item2(50053, 1)
    					pc.give_item2(39006, 1)
    					pc.give_item2(give_basic_weapon.basic_item(pc.job,1) )
    					horse.set_level (21)
    					horse.summon()
    					pc.set_skill_level(131,10)
    					pc.set_skill_level(137,20)
    					pc.set_skill_level(138,20)
    					pc.set_skill_level(139,20)
    					pc.set_skill_level(140,20)
    				end
    			end
    		end
    	end
    end
  3. IDK if it's bug or if has been resolved. However once you let the Character window open and teleport using Teleport ring, custom quest or just go through the Teleporter NPC, the window remains on the screen as a ghost, without a chance to close.

    9491dc588bc7b741c2a1b556cef98078.png

    In syserr you will see something like this: 

    1214 13:20:31842 :: Traceback (most recent call last):
    
    1214 13:20:31843 ::   File "ui.py", line 1096, in CallEvent
    
    1214 13:20:31843 ::   File "ui.py", line 88, in __call__
    
    1214 13:20:31843 ::   File "ui.py", line 70, in __call__
    
    1214 13:20:31843 ::   File "uiCharacter.py", line 472, in Close
    
    1214 13:20:31843 :: AttributeError
    1214 13:20:31843 :: : 
    1214 13:20:31843 :: 'NoneType' object has no attribute 'Hide'
    1214 13:20:31843 :: 
    
    

    To resolve... Go into the interfacemodule.py. Search in def Close(self): for:

    		if self.wndCharacter:
    			self.wndCharacter.Destroy()

    and replace/edit to:

    		if self.wndCharacter:
    			if app.ENABLE_DETAILS_UI:
    				self.wndCharacter.Hide()
    			self.wndCharacter.Destroy()

     

    • Love 1
  4. Dear Devs,

    I'm kinda struggling with snow_dungeon. I tried several quests and they "ends" with exact same result.

    After I'm teleported into the snow dungeon map - which works well. Statue of Ice Lion is not spawn. I got npc done in mob_proto (both).

    If I spawn it manually (or add it "hard" from npc.txt) it has quest content, but after you click it nothing happen, it just disappear and nothing else happen. (I got regen file also added)

     

    The question is. What I'm missing, that this is happening.

    Game rev. 40250 - by TMP and Mali

    Thanks.

    quest snow_dungeon begin
    state start begin
        when 9010.chat."Spawn Statue" with snow_dungeon.is_nemeres_dungeon() == true begin
            d.purge()
            d.spawn_mob_dir(20397, 173,262,1)
            setskin(NOWINDOW)
        end
        when 9010.chat."TESTSERVER: SnowD Jump level 9" with snow_dungeon.is_nemeres_dungeon() == true    begin
            local set = snow_dungeon.get_settings()
            d.notice("Der Richtige Schlüssel wurde gefunden, in wenigen Sekunden geht es in den nächsten Stock.")
            server_timer("Jp_9",6,d.get_map_index())
            d.clear_regen()
            d.kill_all()
            d.regen_file("data/dungeon/ice_dungeon/zone_9.txt")
            setskin(NOWINDOW)
        end
        when 9010.chat."TESTSERVER: SnowD Jump level 10" with snow_dungeon.is_nemeres_dungeon() == true     begin
            local set = snow_dungeon.get_settings()
            server_timer("Jp_Boss",3,d.get_map_index())
            d.clear_regen()
            d.kill_all()
            d.regen_file("data/dungeon/ice_dungeon/zone_boss.txt")
            local v = set.BossVnumGroup
            d.spawn_group(v, 928, 335, 5 ,1, 1)
            setskin(NOWINDOW)
        end
        when 9010.chat."TESTSERVER: SnowD Spawn Boss" with snow_dungeon.is_nemeres_dungeon() == true  begin
            local set = snow_dungeon.get_settings()
            local v = set.BossVnumGroup
            d.spawn_group(v, 928, 335, 5 ,1, 1)
        end
        when 9010.chat."TESTSERVER: SnowD Ending" with snow_dungeon.is_nemeres_dungeon() == true  begin
            server_timer("Jp_OutAll",5,d.get_map_index())
            say("done")
        end
        when 9010.chat."TESTSERVER: SnowD Spawn create Cords Test level 5" with snow_dungeon.is_nemeres_dungeon() == true  begin
            snow_dungeon._Create_Stones_level5()
            setskin(NOWINDOW)
        end
        when 9010.chat."TESTSERVER: SnowD Create Key level 5" with snow_dungeon.is_nemeres_dungeon() == true  begin
            snow_dungeon._DropKeyOnLevel5()
            setskin(NOWINDOW)
        end
        when 9010.chat."TESTSERVER: SnowD Get Kords from Level" with snow_dungeon.is_nemeres_dungeon() == true begin
            local set = snow_dungeon.get_settings()
            local warp_to_level = set.Position_level_1
            local level = 2
            say("old: x: "..warp_to_level[1].." y:"..warp_to_level[2].."")
            local warp_to_level = set. _G[ "Position_level_"..level ]
            say("new: x: "..warp_to_level[1].." y:"..warp_to_level[2].."")
        end
        function get_settings()
            local snow_dungeon_settings = {}
            snow_dungeon_settings.map_index = 352
            snow_dungeon_settings.base_cord = {5120, 1536}
            snow_dungeon_settings.outside_entry_pos = {61,4329,1664}
            snow_dungeon_settings.need_level = 100
            snow_dungeon_settings.need_level_group = 100
            snow_dungeon_settings.WaitBeforOutAllOnExit = 60
            snow_dungeon_settings.NextJumpTime = 5
            snow_dungeon_settings.DurationLoopTimer = 45
            snow_dungeon_settings.wait_duration = 60*60
            snow_dungeon_settings.maxlife_time_on_dungeon = 60*60*1
            snow_dungeon_settings.DurationMaxOnReJoinGroup = 60*5
            snow_dungeon_settings.key_level_2 = 30331
            snow_dungeon_settings.NpcVnum_level_5 = 20398
            snow_dungeon_settings.StoneCount_level_5 = 6
            snow_dungeon_settings.Key_on_level_5 = 30332
            snow_dungeon_settings.StoneCords_level_5 = {
            {432,508},{437,493},{448,492},{448,476},{467,475},{466,464},
            {462,450},{458,428},{446,439},{431,431},{415,416},{402,427},
            {397,438},{375,434},{374,456},{390,468},{385,492},{402,505},
            {404,489},{386,482}
            }
            snow_dungeon_settings.MobVnum_level_6 = 8057
            snow_dungeon_settings.MobVnum_level_7 = 6151
            snow_dungeon_settings.SzelCords_level_7 = {
            {752,499},{758,479},{772,452},{763,444},{750,451},{728,441},
            {726,455},{718,482},{715,491},{731,473},{748,429}
            }
            snow_dungeon_settings.Key_on_level_8 = 30333
            snow_dungeon_settings.NpcVnum_level_9 = 20399
            snow_dungeon_settings.BossVnumGroup = 6062
            snow_dungeon_settings.BossVnum = 6191
            
            snow_dungeon_settings.Position_level_1 = { 171,271 } 
            snow_dungeon_settings.Position_level_2 = { 761,270 } 
            snow_dungeon_settings.Position_level_3 = { 187,491 } 
            snow_dungeon_settings.Position_level_4 = { 421,259 } 
            snow_dungeon_settings.Position_level_5 = { 419,530 } 
            snow_dungeon_settings.Position_level_6 = { 571,706 } 
            snow_dungeon_settings.Position_level_7 = { 746,534 } 
            snow_dungeon_settings.Position_level_8 = { 303,710 } 
            snow_dungeon_settings.Position_level_9 = { 848,693    }
            snow_dungeon_settings.Position_level_10 = { 927,391 }
            snow_dungeon_settings.Enable_TestServerMode = false     
            snow_dungeon_settings.IsNewga_me_re_vi_sion = false     
            return snow_dungeon_settings
        end
        function is_TestServerMode()
            local set = snow_dungeon.get_settings()
            return set.Enable_TestServerMode
        end
        function is_nemeres_dungeon()
            local set = snow_dungeon.get_settings()
            local map = pc.get_map_index()
            if map >= (set.map_index * 10000) and map < (set.map_index * 10000 + 9000) then
                return true
            else
                return false
            end
        end
        when 20395.chat."Nemeres Warte: Gruppe beitreten" with (party.is_party() and d.find(party.getf("ice_dungeon_map_index"))) begin
            local set = snow_dungeon.get_settings()
            local n = party.getf("ice_dungeon_map_index")
            local cord = set.base_cord
            local level = d.getf_from_map_index("level", n)
            if level == 0 then
                --say_npc_name()
                say("Deine Gruppe hat den Run bereits beendet.")
                return
            end
            if pc.getqf("out_party_time") < get_global_time() then
                --say_npc()
                say("")
                say("Du hast länger als     "..math.ceil(set.DurationMaxOnReJoinGroup    /60) .." Minute(n) vor dem")
                say("Eisberg verweilt und kannst jetzt nicht")
                say("mehr eintreten.")
                return
            end
            if n == 0 then
                setskin(NOWINDOW)
                return
            else
                --say_npc()
                say("")
                say("Möchtest du deiner Gruppe wieder beitreten?")
                if select("Beitreten","Abbrechen") == 1 then
                    local warp_to_level = set.Position_level_1
                    local level = d.getf_from_map_index("level", n)
                    if level >= 1 and level <= 10 then
                        if level == 1 then           warp_to_level = set.Position_level_1
                        elseif level == 2 then      warp_to_level = set.Position_level_2
                        elseif level == 3 then      warp_to_level = set.Position_level_3
                        elseif level == 4 then      warp_to_level = set.Position_level_4
                        elseif level == 5 then      warp_to_level = set.Position_level_5
                        elseif level == 6 then      warp_to_level = set.Position_level_6
                        elseif level == 7 then      warp_to_level = set.Position_level_7
                        elseif level == 8 then      warp_to_level = set.Position_level_8
                        elseif level == 9 then      warp_to_level = set.Position_level_9
                        elseif level == 10 then       warp_to_level = set.Position_level_10
                        end
                        pc.warp((cord[1] + warp_to_level[1])*100,(cord[2] + warp_to_level[2])*100,n)
                    else
                        return
                    end
                end
            end
        end
        
        when 20395.chat."Nemeres Warte" begin
            local set = snow_dungeon.get_settings()
            local need_level = set.need_level
            say_title("Die Nemeres Warte ~ Dungeon")
            say("")
            say("Einen Kampf mit Nemeres aufnehmen.")
            say("")
            say_reward("Möchtest du die Nemeres Warte betreten?")
            if select("Die Nemeres Warte betreten", "Abbrechen") == 2 then
                return
            end
            if (pc.is_gm() and pc.getf("snow_dungeon","duration") >= get_global_time()) then
                say("Your are GameMaster, remove the duration?")
                if select("Yes","No") == 1 then
                    pc.setf("snow_dungeon","duration",0)
                    return
                end
            end
            if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
                say("TestServer Mode is enable.")
                say("Join now")
                timer("make_dungeon",3)
                return
            end
            if not party.is_leader() then
                say_title("Die Nemeres Warte ~ Dungeon")
                say("")
                say_reward("Betreten fehlgeschlagen!")
                say("")
                say("Ich schätze deinen Mut, doch alleine wirst du in")
                say("der Nemeres-Warte in dein Verderben rennen.")
                say("Stelle eine starke Gruppe zusammen und ich werde")
                say("dir Einlass gewähren.")
                return
            end
            if pc.get_level() < 100 then
                say_title("Die Nemeres Warte ~ Dungeon")
                say("")
                say_reward("Betreten fehlgeschlagen!")
                say("")
                say("Ich schätze deinen Mut, doch um den Dungeon")
                say("betreten zu können, musst du level "..need_level.."")
                say("erreicht haben.")
                say("")
                say_reward("Bitte komme später nochmal vorbei.")
                return
            end
            if pc.getf("snow_dungeon","duration") >= get_global_time() then
                say_title("Die Nemeres Warte ~ Dungeon")
                say("")
                say_reward("Betreten fehlgeschlagen!")
                say("")
                say("Die Wartezeit für den Wiedereintritt in die")
                say("Nemeres-Warte ist noch nicht abgelaufen. ")
                --say("Verb. Zeit: "..LIB_duration(pc.getf("snow_dungeon","duration") - get_global_time()).."")
                return
            end
            if snow_dungeon._CheckMembersLevel() == false then      
                return
            else
                timer("make_dungeon",2)
            end
        end
        when 20397.chat."Die Schlacht beginnen" begin
            say_title("Die Nemeres Warte ~ Dungeon")
            say("")
            say_reward("Einen Kampf zu Nemeres beginnen.")
            say("")
            say("Möchtet Ihr den Kampf zu Nemeres beginnen?")
            if select("Beginnen","Abbrechen") == 1 then
                local set = snow_dungeon.get_settings()
                local loop_durr = set.DurationLoopTimer
                local wait_durations = set.wait_duration
                local t = get_global_time()
                d.setf("LastTimeGetOutPut",0)     
                server_loop_timer("CheckLevelAndCountKillOnMobs",loop_durr,d.get_map_index())
                d.regen_file("data/dungeon/ice_dungeon/zone_1.txt")
                d.setf("Start_Time",t + set.maxlife_time_on_dungeon)
                server_timer("Jp_OutAllFailNotice",(t + set.maxlife_time_on_dungeon) -    t,d.get_map_index())
                d.setqf2("snow_dungeon","duration",t + wait_durations)
                d.setf("level",1)
                d.notice("Die ersten Monster erscheinen, tötet alle um in den nächsten Stock zu gelangen.") 
                npc.purge()
                snow_dungeon._GetLastTime()
            end
            setskin(NOWINDOW)
        end
        when make_dungeon.timer begin
            local set = snow_dungeon.get_settings()
            local cord = set.base_cord
            local start_pos = set.Position_level_1
            local t = get_global_time()
            d.new_jump_party(set.map_index,(cord[1] + start_pos[1]), (cord[2] + start_pos[2]))
            snow_dungeon._ClearAlls()
            d.setf("party_leader_pid",party.get_leader_pid())
            party.setf("ice_dungeon_map_index",d.get_map_index())
            d.spawn_mob_dir(20397, 173,262,1)
        end
        function _ClearAlls()
            local d_index = d.get_map_index()
            clear_server_timer("CheckLevelAndCountKillOnMobs",d_index)
            clear_server_timer("Jp_1",d_index)
            clear_server_timer("Jp_2",d_index)
            clear_server_timer("Jp_3",d_index)
            clear_server_timer("Jp_4",d_index)
            clear_server_timer("Jp_5",d_index)
            clear_server_timer("Jp_6",d_index)
            clear_server_timer("Jp_7",d_index)
            clear_server_timer("Jp_8",d_index)
            clear_server_timer("Jp_9",d_index)
            clear_server_timer("Jp_10",d_index)
            clear_server_timer("Jp_OutAll",d_index)
            clear_server_timer("Jp_OutAllFail",d_index)
            clear_server_timer("Jp_OutAllFailNotice",d_index)
            d.setf("level",0)     
            d.setf("party_leader_pid",0)
            d.setf("Start_Time",0)
            d.setf("LastTimeGetOutPut",0)
            d.setf("Stone_5_count",0)
            d.setf("Stone_5_item_fail",0)
            d.clear_regen()
            d.kill_all()
        end
        
        function _CheckMembersLevel()
            local set = snow_dungeon.get_settings()
            local user_fail_level = {}
            local pids = {party.get_member_pids()}
            local need_level = set.need_level_group
            local have_ninja = true
            local have_shaman = true
            for i = 1, table.getn(pids), 1 do
                q.begin_other_pc_block(pids[i])
                if pc.get_level() < need_level then
                    table.insert(user_fail_level, table.getn(user_fail_level) +1, pc.get_name())
                end
                local job = pc.get_job()
                if job == 1
                or job == 5
                then
                    have_ninja = true
                end
                if job == 3
                or job == 7
                then
                    have_shaman = true
                end
                q.end_other_pc_block()
            end
            if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
                return true
            end
            if have_ninja == false then
                say("Ihr könnt diesen Dungeon nicht ohnen einen")
                say("Ninja betreten.")
                return false
            end
            if have_shaman == false then
                say("Ihr könnt diesen Dungeon nicht ohnen einen")
                say("Schamanen betreten.")
                return false
            end
            if table.getn(user_fail_level) >= 1 then
                --say_npc()
                say("")
                say("Einige Mitglieder einer Gruppe haben das")
                say("Level "..need_level.." noch nicht erreicht:")
                for x = 1, table.getn(user_fail_level), 1 do
                    say(color(1,1,0), "       "..user_fail_level[x])
                end
                return false
            end
            if table.getn(user_fail_level) == 0 then
                return true
            end
        end
        when logout begin
            if snow_dungeon.is_nemeres_dungeon() == true then
            local set = snow_dungeon.get_settings()
            pc.setqf("out_party_time",get_global_time() + set.DurationMaxOnReJoinGroup)
            end
        end
        
        when login begin
            if snow_dungeon.is_nemeres_dungeon() == true then
                local set = snow_dungeon.get_settings()
                local backk = set.outside_entry_pos
                pc.set_warp_location(backk[1], backk[2],backk[3])
                if d.getf("party_leader_pid") != party.get_leader_pid() then
                    chat("nemeres_wait_dungeon #RAUS:#    Outside, your Group is not on this Dungeon")
                    chat("nemeres_wait_dungeon #RAUS:#debug -> "..d.getf("party_leader_pid").." != "..party.get_leader_pid().."")
                    d.exit()
                    return
                end
                if pc.get_level() < set.need_level_group then
                    chat("nemeres_wait_dungeon #RAUS:#    My level is low")
                    d.exit()
                    return
                end
            end
        end
        
        function _GetLastTime()
            local c = get_global_time()
            local t = d.getf("Start_Time") - c
            local o = d.getf("LastTimeGetOutPut")
            if c >= o then
                if t >= 60 then
                    d.notice("Verbleibende Zeit: "..math.ceil(t / 60).." Minute(n)")
                    d.notice("Nach Ablauf der Zeit wird die Gruppe aus der Warte teleportiert.")
                else
                    d.notice("Verbleibende Zeit: "..t .." Sekunde(n)")
                end
                if t >= (60*10) then
                    d.setf("LastTimeGetOutPut",c + 60*5)
                elseif t >= (60*5) then
                    d.setf("LastTimeGetOutPut",c + 60*2)
                else
                    d.setf("LastTimeGetOutPut",c + 10)
                end
            end
        end
        
        when Jp_OutAllFailNotice.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice("Dungeon fehlgeschlagen. Die Zeit ist abgelaufen")
                server_timer("Jp_OutAll",1,d.get_map_index())
            end
        end
        
        when CheckLevelAndCountKillOnMobs.server_timer begin
            if d.select(get_server_timer_arg()) then
                local set = snow_dungeon.get_settings()
                local level = d.getf("level")
                local mob_count = d.count_monster()
                d.notice("Information: Ebene "..level..". Verbleibende Monster: "..mob_count)
                local next_jump_time = set.NextJumpTime
                if level == 1 and mob_count <= 0 then
                    d.notice("Ihr habt alle Monster besiegt, in wenigen Sekunden geht es in den nächsten Stock.")
                    server_timer("Jp_2",next_jump_time,d.get_map_index())
                    d.clear_regen()
                    d.kill_all()
                    d.set_regen_file("data/dungeon/ice_dungeon/zone_2.txt")
                elseif level == 3 and mob_count <= 0 then
                    d.notice("Ihr habt alle Monster besiegt, in wenigen Sekunden geht es in den nächsten Stock.")
                    server_timer("Jp_4",next_jump_time,d.get_map_index())
                    d.clear_regen()
                    d.kill_all()
                    d.regen_file("data/dungeon/ice_dungeon/zone_4.txt")
                elseif level == 4 and mob_count <= 0 then
                    d.notice("Ihr habt alle Monster besiegt, in wenigen Sekunden geht es in den nächsten Stock.")
                    server_timer("Jp_5",next_jump_time,d.get_map_index())
                    d.clear_regen()
                    d.kill_all()
                    d.set_regen_file("data/dungeon/ice_dungeon/zone_5.txt")
                elseif level == 6 and mob_count <= 0 then
                    local MobStonelvl6 = set.MobVnum_level_6
                    d.notice("Ihr habt alle Monster besiegt: Der "..mob_name(MobStonelvl6).." erscheint.")
                    d.clear_regen()
                    d.kill_all()
                    d.regen_file("data/dungeon/ice_dungeon/zone_6.txt")
                    d.spawn_mob(MobStonelvl6,570,649)
                elseif level == 7 and mob_count <= 0 then
                    d.notice("Ihr habt alle Monster besiegt, in wenigen Sekunden geht es in den nächsten Stock.")
                    server_timer("Jp_8",next_jump_time,d.get_map_index())
                    d.clear_regen()
                    d.kill_all()
                    d.set_regen_file("data/dungeon/ice_dungeon/zone_8.txt")                   
                end
                snow_dungeon._GetLastTime()
            end
        end
    
        when Jp_2.server_timer begin
            if d.select(get_server_timer_arg()) then
                local set = snow_dungeon.get_settings()
                local v = set.key_level_2
                d.setf("level",2)
                local cord = set.base_cord
                local pos = set.Position_level_2
                d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
                d.notice("Findet den richtigen "..item_name(v).." um weiter zu gelangen.")
            end
        end
        when 30331.use with snow_dungeon.is_nemeres_dungeon() == true begin
            local set = snow_dungeon.get_settings()
            local next_jump_time = set.NextJumpTime
            local job = pc.get_job()
            local level = d.getf("level")
            if level == 2 then
                if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
                    job = 3
                end
                    if number(1,3) == 1 then
                        d.notice("Der Richtige Schlüssel wurde gefunden, in wenigen Sekunden geht es in den nächsten Stock.")
                        server_timer("Jp_3",next_jump_time,d.get_map_index())
                        d.clear_regen()
                        d.kill_all()
                        d.regen_file("data/dungeon/ice_dungeon/zone_3.txt")
                        item.remove()
                    else
                        d.notice("Das war der Falsche Schlüssel.")
                        item.remove()
                    end
            end
        end
        
        when Jp_3.server_timer begin
            if d.select(get_server_timer_arg()) then
                local set = snow_dungeon.get_settings()
                d.setf("level",3)
                local cord_MQ = set.base_cord
                local pos = set.Position_level_3
                d.jump_all((cord_MQ[1] + pos[1]), (cord_MQ[2] + pos[2]))
                d.notice("Tötet auf dieser Ebene alle Monster, um in den nächsten Stock zu gelangen.")
            end
        end
        
        when Jp_4.server_timer begin
            if d.select(get_server_timer_arg()) then
                local set = snow_dungeon.get_settings()
                d.setf("level",4)
                local cord = set.base_cord
                local pos = set.Position_level_4
                d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
                d.notice("Tötet auf dieser Ebene alle Monster, um in den nächsten Stock zu gelangen.")
            end
        end
        
        when Jp_5.server_timer begin
            if d.select(get_server_timer_arg()) then
                local set = snow_dungeon.get_settings()
                local v = set.NpcVnum_level_5
                d.setf("level",5)
                local cord = set.base_cord
                local pos = set.Position_level_5
                d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
                d.notice("Öffnet in der richtigen Reihenfolge die Siegel um die "..mob_name(v).." zu zerstören.")
                if set.IsNewga_me_re_vi_sion == true then
                    d.notice("Die Monster lassen die Schlüssel fallen.")
                else
                    d.notice("Die Schlüssel wandern automatisch in dein Inventar.")
                end
                snow_dungeon._Create_Stones_level5()
            end
        end
        
        function _DropKeyOnLevel5()
            if number(500,1000) >= 666 then
                return
            end
            local set = snow_dungeon.get_settings()
            local count = set.StoneCount_level_5
            local vnum = set.Key_on_level_5
            local get_random_unique = d.get_unique_vid("stone5_"..number(1,count).."")
            local fail_count = d.getf("Stone_5_item_fail") +1
            local search = d.getf("Stone_5_count")
            local search2 = d.get_unique_vid("stone5_"..search.."")
            if search2 != get_random_unique then
                d.setf("Stone_5_item_fail",fail_count)
            end
            if set.IsNewga_me_re_vi_sion == true then
                --game.drop_item_and_select(vnum,1)
            else
                pc.give_item2_select(vnum,1)
            end
            if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
                item.set_socket(1,search2)
                d.setf("Stone_5_item_fail",0)
            elseif fail_count > 6 then
                item.set_socket(1,search2)
                d.setf("Stone_5_item_fail",0)
            else    
                item.set_socket(1,get_random_unique)
            end
        end
        
        function _Create_Stones_level5()
            local set = snow_dungeon.get_settings()
            local stone_level5_count_MQ = set.StoneCount_level_5
            local c = set.StoneCords_level_5
            local v = set.NpcVnum_level_5
            for i = 1, stone_level5_count_MQ, 1 do
                local n = number(1,table.getn(c))
                d.set_unique("stone5_"..i.."", d.spawn_mob(v, c[n][1], c[n][2]))
                table.remove(c,n)
                if i == 1 then
                    d.setf("Stone_5_count",1)
                    d.setf("Stone_5_item_fail",0)
                end
            end
        end
        
        when 20398.take begin
            if snow_dungeon.is_nemeres_dungeon() == true then
                local set = snow_dungeon.get_settings()
                local stone_level5_count = set.StoneCount_level_5
                local next_jump_time = set.NextJumpTime
                local vnum = item.get_vnum()
                local key_level_5 = set.Key_on_level_5
                local unique_item = item.get_socket(1)
                if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
                    d.notice("TESTSERVERMODE, in wenigen Sekunden geht es in den nächsten Stock.")
                    npc.purge()
                    item.remove()
                    server_timer("Jp_6",next_jump_time,d.get_map_index())
                    d.clear_regen()
                    d.kill_all()
                    d.regen_file("data/dungeon/ice_dungeon/zone_6.txt")
                    return
                end
                if vnum == key_level_5 then
                    local npc_vid = npc.get_vid()
                    local search = d.getf("Stone_5_count")
                    local search2 = d.get_unique_vid("stone5_"..search.."")
                    if npc_vid == search2 then
                        if unique_item == npc_vid then
                            local new = search +1 
                            if new > stone_level5_count then
                                d.notice("Der letzte Stein wurde endeckt, in wenigen Sekunden geht es in den nächsten Stock.")
                                npc.purge()
                                item.remove()
                                server_timer("Jp_6",next_jump_time,d.get_map_index())
                                d.clear_regen()
                                d.kill_all()
                                d.regen_file("data/dungeon/ice_dungeon/zone_6.txt")
                            else
                                d.notice("Der "..search..". Stein wurde endeckt. Es müssen noch weitere ".. stone_level5_count - search .." Steine gefunden werden.")
                                npc.purge()
                                item.remove()
                            end
                            d.setf("Stone_5_count",new)
                        else
                            chat("Das ist zwar der richtige Stein, aber der falsche Schlüssel.")
                            item.remove()
                        end
                    else
                        chat("Das ist nicht der richtige Stein.")
                    end
                end
            end 
        end
        
        when Jp_6.server_timer begin
            if d.select(get_server_timer_arg()) then
                local set = snow_dungeon.get_settings()
                local v = set.MobVnum_level_6
                d.setf("level",6)
                local cord = set.base_cord
                local pos = set.Position_level_6
                d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
                
                d.notice("Ihr habt alle Monster getötet.")
                d.notice("Tötet nun alle Monster und zerstört anschließend den "..mob_name(v).."")
                
            end
        end
        
        when Jp_7.server_timer begin
            if d.select(get_server_timer_arg()) then
                local set = snow_dungeon.get_settings()
                local v = set.MobVnum_level_7
                d.setf("level",7)
                local cord = set.base_cord
                local pos = set.Position_level_7
                d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
                d.notice("Ihr habt den Metinstein erfolgreich zerstört nun Tötet alle Monster und "..mob_name(v)..".")
            end
        end
        
        when Jp_8.server_timer begin
            if d.select(get_server_timer_arg()) then
                local set = snow_dungeon.get_settings()
                local v = set.Key_on_level_8
                d.setf("level",8)
                local cord = set.base_cord
                local pos = set.Position_level_8
                d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
                d.notice("Tötet solange Monster bis ihr den richtigen "..item_name(v).." habt.")
            end
        end
        
        when 30333.use with snow_dungeon.is_nemeres_dungeon() == true begin
            local set = snow_dungeon.get_settings()
            local next_jump_time = set.NextJumpTime
            local level = d.getf("level")
            local job = pc.get_job()
            if level == 8 then
                if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
                    job = 3
                end
                if number(1,3) == 1 then
                    d.notice("Der Richtige Schlüssel wurde gefunden, in wenigen Sekunden geht es in den nächsten Stock.")
                    server_timer("Jp_9",next_jump_time,d.get_map_index())
                    d.clear_regen()
                    d.kill_all()
                    d.regen_file("data/dungeon/ice_dungeon/zone_9.txt")
                    item.remove()
                else
                    d.notice("Das war der falsche Schlüssel.")
                    item.remove()
                end
            end
        end
        
        when Jp_9.server_timer begin
            if d.select(get_server_timer_arg()) then
                local set = snow_dungeon.get_settings()
                local v = set.NpcVnum_level_9
                d.setf("level",9)
                local cord = set.base_cord
                local pos = set.Position_level_9
                d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
                d.notice("Zerstört die "..mob_name(v).." ")
                d.spawn_mob(v,849,655)
            end
        end
        
        when Jp_Boss.server_timer begin
            if d.select(get_server_timer_arg()) then
                local set = snow_dungeon.get_settings()
                local v = set.BossVnum
                d.setf("level",10)
                local cord = set.base_cord
                local pos = set.Position_level_10
                d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
                d.notice("Besiegt "..mob_name(v)..", den König über Frost und Eis.")
            end
        end
        
        when kill begin
            if snow_dungeon.is_nemeres_dungeon() == true then
                local set = snow_dungeon.get_settings()
                local next_jump_time = set.NextJumpTime
                local level = d.getf("level")
                local stone_level_6 = set.MobVnum_level_6
                local stone_level_9 = set.NpcVnum_level_9
                local boss_vnum = set.BossVnum
                local wait_time = set.WaitBeforOutAllOnExit
                local mobvnum = npc.get_race()
                if level == 2 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,10)     then
                    local v = set.key_level_2
                    game.drop_item(v,1)
                elseif level == 5 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,15) then
                    snow_dungeon._DropKeyOnLevel5()
                elseif level == 6 and mobvnum == stone_level_6 then
                    d.notice("Der "..mob_name(stone_level_6).." wurde zerstört, in wenigen Sekunden geht es in den nächsten Stock.")
                    server_timer("Jp_7",next_jump_time,d.get_map_index())
                    d.clear_regen()
                    d.kill_all()
                    d.regen_file("data/dungeon/ice_dungeon/zone_7.txt")
                    local v_MQv = set.MobVnum_level_7
                    local c = set.SzelCords_level_7
                    local n = number(1,table.getn(c))
                    d.spawn_mob(v_MQv, c[n][1], c[n][2])
                elseif level == 8 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,10) then
                    local v = set.Key_on_level_8
                    game.drop_item(v,1)       
                elseif level == 9 and mobvnum == stone_level_9 then
                    d.notice("Der "..mob_name(stone_level_9).." wurde zerstört, in wenigen Sekunden geht es in den nächsten Stock.")
                    server_timer("Jp_Boss",next_jump_time,d.get_map_index())
                    d.clear_regen()
                    d.kill_all()
                    d.regen_file("data/dungeon/ice_dungeon/zone_boss.txt")
                    local v = set.BossVnumGroup
                    d.spawn_group(v, 928, 335, 5 ,1, 1)
                elseif level == 10 and mobvnum == boss_vnum then
                    d.clear_regen()
                    d.kill_all()
                    game.drop_item_with_ownership(72000, 1)
                    game.drop_item_with_ownership(81002, 1)
                    game.drop_item_with_ownership(72000, 1)
                    notice_all("Die Gruppe von ".. pc.get_name() .." haben "..mob_name(boss_vnum).." besiegt. Herzlichen Glückwunsch!")
                    notice_all("Endlich herrscht Frieden in der Nemeres Warte.")
                    d.notice("Alle Kämpfer werden in einer Minute aus der Nemeres-Warte teleportiert.")
                    server_timer("Jp_OutAll",wait_time,d.get_map_index())
                end
            end
        end
        when Jp_OutAll.server_timer begin
            if d.select(get_server_timer_arg()) then
                snow_dungeon._ExitAll()
            end
        end
        function _ExitAll()
            d.exit_all()
        end
    end
    end     

     

     

     

  5. Dear M2.Devs

    I'm currently kinda struggling with mounts (Unicorn and Nightmare) using TMP4 40k files (huge shoutout for his work)

    I'm trying to make them permanent (ID 71171, 71172 - NPC 20227, 20226). I tried to change the "ride.quest" remain_time from item.get_socket(2)*60 to 60*60*24*365, i also tried to change that value to some random times, but without any success. The seal time remains on 3 hours.

    In item_proto (both, txt an db) there is no limitation in limittype.

    Am I missing something? Is there anything else, that needs to be changed? 

    Item_proto

    71171	ĻťņĮīŌń‹ľ“»Į∆–	ITEM_UNIQUE	UNIQUE_SPECIAL_RIDE	1	ANTI_STACK	QUEST_USE_MULTIPLE | LOG	WEAR_SHIELD	NONE	0	0	0	0	0	LIMIT_NONE	0	LIMIT_NONE	0	APPLY_NONE	0	APPLY_NONE	0	APPLY_NONE	0	180	0	0	0	0	0	0	0	0

    mysql db

    71171	¹éÀ¯´ÏÄܼÒȯÆÐ	Unicorn Seal	16	2	0	1	32768	9216	128		0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	180	0	0	0	0	0	-1	-1	-1	-1	-1	-1	0	0	0

    ride.quest - it default quest, since i does not succeed I have changed value (except bonus) back to the default

    quest ride begin
    	state start begin
    		function Ride( vnum, remain_time )
    			ride_info = {
    				[71114] = { 20110,	5*60,					apply.DEF_GRADE_BONUS,	75,		75,	true	},
    				[71115] = { 20110,	item.get_socket(2)*60,	apply.DEF_GRADE_BONUS,	100,	75,	false	},
    				[71116] = { 20111,	5*60,					apply.DEF_GRADE_BONUS,	100,	80,	true	},
    				[71117] = { 20111,	item.get_socket(2)*60,	apply.DEF_GRADE_BONUS,	150,	80,	false	},
    				[71118] = { 20112,	5*60,					apply.DEF_GRADE_BONUS,	125,	85,	true	},
    				[71119] = { 20112,	item.get_socket(2)*60,	apply.DEF_GRADE_BONUS,	200,	85,	false	},
    				[71120] = { 20113,	5*60,					apply.ATT_GRADE_BONUS,	200,	85,	true	},
    				[71121] = { 20113,	item.get_socket(2)*60,	apply.ATT_GRADE_BONUS,	300,	85,	false	},
    				[71171] = { 20227,	item.get_socket(2)*60,	apply.ATT_GRADE_BONUS,	350,	1,	false,	false,	false},
    				[71172] = { 20226,	item.get_socket(2)*60,	apply.ATT_GRADE_BONUS,	350,	1,	false,	false,	false},
    				}
    
    			if pc.level < ride_info[vnum][5] then
    				say("")
    				say(gameforge.ride._010_say)
    				say("")
    			else
    				if 112 == pc.get_map_index() then
    					return
    				end
    				if ride_info[vnum][2] == 0 and remain_time != 0 then
    					pc.mount( ride_info[vnum][1], remain_time*60 )
    					pc.mount_bonus( ride_info[vnum][3], ride_info[vnum][4], remain_time*60 )
    				else
    					pc.mount( ride_info[vnum][1], ride_info[vnum][2] )
    					pc.mount_bonus( ride_info[vnum][3], ride_info[vnum][4], ride_info[vnum][2] )
    				end
    
    				if true == ride_info[vnum][6] then
    					pc.remove_item(vnum, 1)
    				end	
    			end	
    		end
    
    		when login begin
    			local vnum, remain_time = pc.get_special_ride_vnum()
    			if vnum <=  71113 or vnum >71121 then
    				return
    			end
    			if 0 != vnum then
    				ride.Ride(vnum, remain_time)
    			end
    		end
    
    		when 71114.use or 71115.use or 71116.use or 71117.use or 71118.use or 71119.use or 71120.use or 71121.use 
    				or 71171.use or 71172.use begin
    			 if pc.is_polymorphed() then
    				 say("")
    				 say(gameforge.ride._020_say)
    				 say("")
    			elseif false == pc.is_riding() then
    			 	if true == horse.is_summon() then
    					horse.unsummon()
    				end
    				 ride.Ride(item.vnum, 0)
    			 else
    				say("")
    				 say(gameforge.ride._030_say)
    				 say("")
    			 end
    		end
    	end
    end

    Thanks in advance.

×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.