-
Posts
49 -
Joined
-
Last visited
-
Feedback
100%
Content Type
Forums
Store
Third Party - Providers Directory
Feature Plan
Release Notes
Docs
Events
Posts posted by CantSt0p
-
-
- 1
- 1
- 1
-
If you have Marty files, ask Marty? He is always there to help his customers.
- 1
-
Disable test server
-
Empty dragon_soul_table.txt?
uitooltip.py part not defined?
anything in syserr? -
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
-
Contabo
-
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
-
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.
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()
- 1
-
-
-
Anybody, any idea? Still can't figure out.
-
-
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
-
Update. Its handled by value0. ("180" at this example in item_proto and mysql db)
But I still could not figured out, how to make it permanent It would be nice to know. Same thing is happening with hairs.
-
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.
Start Lycaner on your own map
in Community Support - Questions & Answers
Posted
You can make expression in input_login.cpp, where you add exact x,y coordinates when character is created.