İlk Olarak Selamun Aleyküm Direk Konuya Geçeceğim Konuyu Uzatmadan
Çöl Fırtına Event Quest
Altıgen Event Quest
Ay Işığı Event Quest
Costume Event Quest
Holloween Event Quest
Ramazan Event Quest
Sertfika Event Quest
Sonsuz Kış Event Quest
Okudugunuz İçin Teşekürler Bi Yorum Esirgemeyiniz
Kod:
quest gmetkinlik begin state start begin when letter with pc.is_gm() begin send_letter("GM: Etkinlik") end when info or button with pc.is_gm() begin local event = select("Ramazan ay'ı etkinliği","Yağmacıları Avla etkinliği ","Sertifika etkinliği ","Hallowen etkinliği ","Olimpiyat etkinliği","Noel etkinliği","Sevgililer Günü etkinliği","Dünya Kupası etkinliği","Ayışığı Define Sandığı etkinliği","Altıgen Hediye Paketi etkinliği","Kostüm etkinliği","Çöl Fırtınası Sandığı etkinliği","Sonsuz Kış Sandığı etkinliği","Kapat") if event == 1 then local event2 = select("Ramazan etkinliği başlat","Ramazan etkinliği bitir","Vazgeç ") if event2 == 1 then notice_all("Etkinlik: 'Ramazan Ayı' etkinliği başladı!") notice_all("Etkinlik: 'Tarihçi' ve 'Niyetli Vatandaş' ile görüş. ") game.set_event_flag("ramadan_drop",1) game.set_event_flag("ramadan_reward",1) send_letter("GM: Etkinlik") elseif event2 == 2 then notice_all("Etkinlik: 'Ramazan Ayı' etkinliği sona erdi.") notice_all("Etkinlik: 'Tarihçi' ve 'Niyetli Vatandaş' köylerine geri döndü.") game.set_event_flag("ramadan_reward",0) game.set_event_flag("ramadan_drop",0) send_letter("GM: Etkinlik") elseif event2 == 3 then return send_letter("GM: Etkinlik") end elseif event == 2 then local event3 = select("Yağmacıları Avla etkinliği başlat ","Yağmacıları Avla etkinliği bitir","Vazgeç ") if event3 == 1 then notice_all("Etkinlik: 'Yağmacıları Avla' etkinliği başladı. ") notice_all("Etkinlik: Handu Up ve Wonda Rim ile görüş. ") game.set_event_flag("harvest_festival",1) send_letter("GM: Etkinlik") elseif event3 == 2 then notice_all("Etkinlik: 'Yağmacıları Avla' etkinliği sona erdi.") notice_all("Etkinlik: 'Handu-Up' ve 'Wonda-Rim' köylerine geri döndü.") game.set_event_flag("harvest_festival",0) send_letter("GM: Etkinlik") elseif event3 == 3 then return send_letter("GM: Etkinlik") end elseif event == 3 then local event4 = select("Sertifika etkinliği başlat ","Sertifika etkinliği kapat","Vazgeç ") if event4 == 1 then notice_all("Etkinlik: 'Sertifika' etkinliği başladı. ") notice_all("Etkinlik: Metin Taşlarından ''Sertifika'' elde edebilirsin. ") game.set_event_flag("sertifika_drop",1) send_letter("GM: Etkinlik") elseif event4 == 2 then notice_all("Etkinlik: 'Sertifika' etkinliği sona erdi.") game.set_event_flag("sertifika_drop",0) send_letter("GM: Etkinlik") elseif event4 == 3 then return send_letter("GM: Etkinlik") end elseif event == 4 then local event5 = select("Hallowen etkinliği başlat ","Hallowen etkinliği bitir ","Vazgeç ") if event5 == 1 then notice_all("Etkinlik: 'Hallowen' etkinliği başladı. ") notice_all("Etkinlik: 'Jack Pumpkin' ile görüş. ") game.set_event_flag("halloween_hair",1) send_letter("GM: Etkinlik") elseif event5 == 2 then notice_all("Etkinlik: 'Hallowen' etkinliği sona erdi. ") notice_all("Etkinlik: 'Jack Pumpkin' köyüne geri döndü. ") game.set_event_flag("halloween_hair",0) send_letter("GM: Etkinlik") elseif event5 == 3 then return send_letter("GM: Etkinlik") end elseif event == 5 then local event6 = select("Olimpiyat etkinliği başlat ","Olimpiyat etkinliği bitir ","Vazgeç ") if event6 == 1 then notice_all("Etkinlik: 'Olimpiyat' etkinliği başladı. ") notice_all("Etkinlik: 'Yu-Hwan' ile görüş. ") game.set_event_flag("medal_part_drop",1) send_letter("GM: Etkinlik") elseif event6 == 2 then notice_all("Etkinlik: 'Olimpiyat' etkinliği sona erdi. ") game.set_event_flag("medal_part_drop",0) send_letter("GM: Etkinlik") elseif event6 == 3 then return send_letter("GM: Etkinlik") end elseif event == 6 then local event7 = select("Noel etkinliği başlat ","Noel etkinliği bitir ","Vazgeç ") if event7 == 1 then notice_all("Etkinlik: 'Noel' etkinliği başladı. ") notice_all("Etkinlik: 'Noel Baba' ile görüş. ") game.set_event_flag("new_xmas_event",1) send_letter("GM: Etkinlik") elseif event7 == 2 then notice_all("Etkinlik: 'Noel' etkinliği sona erdi. ") notice_all("Etkinlik: 'Noel Baba' köyüne geri döndü. ") game.set_event_flag("new_xmas_event",0) send_letter("GM: Etkinlik") elseif event7 == 3 then return send_letter("GM: Etkinlik") end elseif event == 7 then local event8 = select("Sevgililer günü etkinliği başlat ","Sevgililer günü etkinliği bitir ","Vazgeç ") if event8 == 1 then notice_all("Etkinlik: ''Sevgililer günü'' etkinliği başladı. ") notice_all("Etkinlik: Tüm canavarlardan Gül, Çikolata ve Amor Sandığı elde edebilirsin. ") game.set_event_flag("valentin_drop",1) send_letter("GM: Etkinlik") elseif event8 == 2 then notice_all("Etkinlik: ''Sevgililer günü'' etkinliği sona erdi. ") game.set_event_flag("valentin_drop",0) send_letter("GM: Etkinlik") elseif event8 == 3 then return send_letter("GM: Etkinlik") end elseif event == 8 then local event9 = select("Dünya kupası etkinliği başlat ","Dünya kupası etkinliği bitir ","Vazgeç ") if event9 == 1 then notice_all("Etkinlik: ''Dünya kupası'' etkinliği başladı. ") notice_all("Etkinlik: Tüm canavarlardan Futbol Topu elde edebilirsin. ") notice_all("Etkinlik: Altın Futbol Topu ödülü için ''Yu-Hwan'' ile görüş. ") game.set_event_flag("new_football_2014_event",1) game.set_event_flag("football_drop",1) send_letter("GM: Etkinlik") elseif event9 == 2 then notice_all("Etkinlik: ''Dünya kupası'' etkinliği sona erdi. ") game.set_event_flag("new_football_2014_event",0) game.set_event_flag("football_drop",0) send_letter("GM: Etkinlik") elseif event9 == 3 then return send_letter("GM: Etkinlik") end elseif event == 9 then local event10 = select("Ayışığı Define Sandığı etkinliği başlat ","Ayışığı Define Sandığı etkinliği bitir ","Vazgeç ") if event10 == 1 then notice_all("Etkinlik: ''Ayışığı Define Sandığı'' etkinliği başladı. ") notice_all("Etkinlik: Tüm canavarlardan Ayışığı Define Sandığı elde edebilirsin. ") game.set_event_flag("event_ayisigi_drop",1) send_letter("GM: Etkinlik") elseif event10 == 2 then notice_all("Etkinlik: ''Ayışığı Define Sandığı'' etkinliği sona erdi. ") game.set_event_flag("event_ayisigi_drop",0) send_letter("GM: Etkinlik") elseif event10 == 3 then return send_letter("GM: Etkinlik") end elseif event == 10 then local event11 = select("Altıgen Hediye Paketi etkinliği başlat ","Altıgen Hediye Paketi etkinliği bitir ","Vazgeç ") if event11 == 1 then notice_all("Etkinlik: ''Altıgen Hediye Paketi'' etkinliği başladı. ") notice_all("Etkinlik: Tüm canavarlardan Altıgen Hediye Paketi elde edebilirsin. ") game.set_event_flag("event_altigen_drop",1) send_letter("GM: Etkinlik") elseif event11 == 2 then notice_all("Etkinlik: ''Altıgen Hediye Paketi'' etkinliği sona erdi. ") game.set_event_flag("event_altigen_drop",0) send_letter("GM: Etkinlik") elseif event11 == 3 then return send_letter("GM: Etkinlik") end elseif event == 11 then local event12 = select("Kostüm etkinliği başlat ","Kostüm etkinliği bitir ","Vazgeç ") if event12 == 1 then notice_all("Etkinlik: ''Kostüm'' etkinliği başladı. ") notice_all("Etkinlik: 30. seviye ve üzeri Metin Taşlarından ''Kostüm'' elde edebilirsin. ") game.set_event_flag("costume_drop",1) send_letter("GM: Etkinlik") elseif event12 == 2 then notice_all("Etkinlik: ''Kostüm'' etkinliği sona erdi. ") game.set_event_flag("costume_drop",0) send_letter("GM: Etkinlik") elseif event12 == 3 then return send_letter("GM: Etkinlik") end elseif event == 12 then local event13 = select("Çöl Fırtınası Sandığı etkinliği başlat ","Çöl Fırtınası Sandığı etkinliği bitir ","Vazgeç ") if event13 == 1 then notice_all("Etkinlik: ''Çöl Fırtınası Sandığı'' etkinliği başladı. ") notice_all("Etkinlik: Metin Taşlarından ve Patronlardan ''Çöl Fırtınası Sandığı'' elde edebilirsin. ") game.set_event_flag("col_firtinasi_drop",1) send_letter("GM: Etkinlik") elseif event13 == 2 then notice_all("Etkinlik: ''Çöl Fırtınası Sandığı'' etkinliği sona erdi. ") game.set_event_flag("col_firtinasi_drop",0) send_letter("GM: Etkinlik") elseif event13 == 3 then return send_letter("GM: Etkinlik") end elseif event == 13 then local event14 = select("Sonsuz Kış Sandığı etkinliği başlat ","Sonsuz Kış Sandığı etkinliği bitir ","Vazgeç ") if event14 == 1 then notice_all("Etkinlik: ''Sonsuz Kış Sandığı'' etkinliği başladı. ") notice_all("Etkinlik: Metin Taşlarından ve Patronlardan ''Sonsuz Kış Sandığı'' elde edebilirsin. ") game.set_event_flag("sonsuz_kis_drop",1) send_letter("GM: Etkinlik") elseif event14 == 2 then notice_all("Etkinlik: ''Sonsuz Kış Sandığı'' etkinliği sona erdi. ") game.set_event_flag("sonsuz_kis_drop",0) send_letter("GM: Etkinlik") elseif event14 == 3 then return send_letter("GM: Etkinlik") end elseif event == 14 then send_letter("GM: Etkinlik") return end end end end[/FONT]
Çöl Fırtına Event Quest
Kod:
quest event_colfirtinasi_2014 begin state start begin when 691.kill or 791.kill or 792.kill or 1192.kill or 1304.kill or 1901.kill or 2091.kill or 2191.kill or 2206.kill or 2306.kill or 2595.kill or 2596.kill or 3090.kill or 3091.kill or 3190.kill or 3191.kill or 3290.kill or 3291.kill or 3390.kill or 3391.kill or 3490.kill or 3491.kill or 3590.kill or 3591.kill or 3595.kill or 3596.kill or 3690.kill or 3691.kill or 3790.kill or 3791.kill or 3890.kill or 3891.kill or 3901.kill or 3902.kill or 3903.kill or 3904.kill or 3905.kill or 3906.kill or 6091.kill or 6191.kill or 8001.kill or 8002.kill or 8003.kill or 8004.kill or 8005.kill or 8006.kill or 8007.kill or 8008.kill or 8009.kill or 8010.kill or 8011.kill or 8012.kill or 8013.kill or 8014.kill or 8024.kill or 8025.kill or 8026.kill or 8027.kill or 8051.kill or 8052.kill or 8053.kill or 8054.kill or 8055.kill or 8056.kill with game.get_event_flag("col_firtinasi_drop") == 1 and not npc.is_pc() begin if npc.get_level() > pc.get_level() - 10 then local s = number(1,25) if s == 1 then game.drop_item_with_ownership("38054",1) return end end end endend
Altıgen Event Quest
Kod:
quest event_altigen_2014 begin state start begin when kill with game.get_event_flag("event_altigen_drop") == 1 and not npc.is_pc() begin if npc.get_level() > pc.get_level() - 10 then local s = number(1,250) if s == 1 then game.drop_item_with_ownership("50037",1) return end end end endend
Ay Işığı Event Quest
Kod:
quest event_ayisigi_2014 begin state start begin when kill with game.get_event_flag("event_ayisigi_drop") == 1 and not npc.is_pc() begin if npc.get_level() > pc.get_level() - 10 then local s = number(1,250) if s == 1 then game.drop_item_with_ownership("50011",1) return end end end endend
Costume Event Quest
Kod:
quest event_costume_2014 begin state start begin when 8006.kill or 8007.kill or 8008.kill or 8009.kill or 8010.kill or 8011.kill or 8012.kill or 8013.kill or 8014.kill or 8024.kill or 8025.kill or 8026.kill or 8027.kill or 8051.kill or 8052.kill or 8053.kill or 8054.kill or 8055.kill or 8056.kill or 8057.kill or 8058.kill with pc.is_gm() == false begin if game.get_event_flag("costume_drop") == 1 then local plvl = pc.get_level() local mlvl local chance = number(1,10) local vnumlist_m = {41041,41043,41045,41049,41051,41053,41095,41097,41099,41101,41103,41105,41107,41109,41111,41113} local vnumlist_w = {41042,41044,41046,41050,41052,41054,41096,41098,41100,41102,41104,41106,41108,41110,41112,41114} local drop = number(1,16) if npc.get_race() < 8015 then mlvl = (npc.get_race()-8000)*5 else mlvl = (npc.get_race()-8009)*5 end if mlvl-plvl >= -10 then if chance*10 == 100 then if pc.get_sex() == 1 then game.drop_item_with_ownership(vnumlist_w[drop],1) else game.drop_item_with_ownership(vnumlist_m[drop],1) end end end end end when 8006.kill or 8007.kill or 8008.kill or 8009.kill or 8010.kill or 8011.kill or 8012.kill or 8013.kill or 8014.kill or 8024.kill or 8025.kill or 8026.kill or 8027.kill or 8051.kill or 8052.kill or 8053.kill or 8054.kill or 8055.kill or 8056.kill or 8057.kill or 8058.kill with pc.is_gm() == true begin if game.get_event_flag("costume_drop") == 1 then local plvl = pc.get_level() local mlvl local chance = number(1,10) local vnumlist_m = {41041,41043,41045,41049,41051,41053,41095,41097,41099,41101,41103,41105,41107,41109,41111,41113} local vnumlist_w = {41042,41044,41046,41050,41052,41054,41096,41098,41100,41102,41104,41106,41108,41110,41112,41114} local drop = number(1,16) if npc.get_race() < 8015 then mlvl = (npc.get_race()-8000)*5 else mlvl = (npc.get_race()-8009)*5 end chat("Leveldif: "..mlvl-plvl.." Chance: "..chance.." Sex: "..pc.get_sex().." Drop: "..drop..".") if mlvl-plvl >= -10 then if chance*10 == 100 then if pc.get_sex() == 1 then game.drop_item_with_ownership(vnumlist_w[drop],1) else game.drop_item_with_ownership(vnumlist_m[drop],1) end end end end end endend
Holloween Event Quest
Kod:
quest event_halloween_hair begin state start begin function is_running() return (game.get_event_flag("halloween_hair") > 0) --npc spawn end function setting() return { ["pumpkin"] = 30321, -- Halloween Pumpkin ["wand"] = 30322, -- Halloween magic wand ["coupon"] = 30323, -- Hair coupon ["box"] = 50215, -- Halloween giftbox ["pumpkin_head"]= 33008 -- Pumpkin head NPC } end function get_hair_option(index) local option_list = { { ["apply"] = apply.ATTBONUS_MONSTER, ["value"] = 10, ["duration"] = 604800, -- 7 days }, { ["apply"] = apply.ATTBONUS_SURA, ["value"] = 10, ["duration"] = 604800, -- 7 days }, { ["apply"] = apply.ATTBONUS_SHAMAN, ["value"] = 10, ["duration"] = 604800, -- 7 days }, { ["apply"] = apply.ATTBONUS_WARRIOR, ["value"] = 10, ["duration"] = 604800, -- 7 days }, { ["apply"] = apply.ATTBONUS_ASSASSIN, ["value"] = 10, ["duration"] = 604800, -- 7 days }, { ["apply"] = apply.MAX_HP_PCT, ["value"] = 1, ["duration"] = 21600, -- 6 hours }, { ["apply"] = apply.MAX_SP_PCT, ["value"] = 1, ["duration"] = 86400, -- 24 hours }, } return option_list[index] end function get_random_hair_option_index() local index = 1 -- hair_option[1] ~ [5] : 5% -- hair_option[6] : 15% -- hair_option[7] ~ 80% local rand = number(1, 100) if rand <= 5 then index = rand elseif rand <= 85 then index = 7 else index = 6 end return index end function get_hair_info_by_race(race) hair_info_by_race = { -- VNUM, SHAPE { 74020, 1018 }, -- 1 : Warrior(M) { 74270, 2018 }, -- 2 : Assassin(W) { 74520, 3018 }, -- 3 : Sura(M) { 74770, 4018 }, -- 4 : Shaman(W) { 75020, 1018 }, -- 5 : Warrior(W) { 75220, 2018 }, -- 6 : Assassin(M) { 75420, 3018 }, -- 7 : Sura(W) { 75620, 4018 }, -- 8 : Shaman(M) } return hair_info_by_race[race] end when login or enter with game.get_event_flag("halloween_hair") > 0 begin local setting = event_halloween_hair.setting() local mapIndex = pc.get_map_index() if mapIndex == 1 or mapIndex == 21 or mapIndex == 41 then if find_npc_by_vnum(setting.pumpkin_head) == 0 then if mapIndex == 1 then mob.spawn(setting.pumpkin_head, 608, 617, 1, 1, 1) elseif mapIndex == 21 then mob.spawn(setting.pumpkin_head, 596, 610, 1, 1, 1) elseif mapIndex == 41 then mob.spawn(setting.pumpkin_head, 357, 743, 1, 1, 1) end end end end when 33008.chat.gameforge.event_halloween_hair._10_npcChat with pc.getqf("first_notice") < 1 begin local setting = event_halloween_hair.setting() say_title(gameforge.event_halloween_hair._20_sayTitle) say(gameforge.event_halloween_hair._30_say) wait() say_title(gameforge.event_halloween_hair._20_sayTitle) say(gameforge.event_halloween_hair._40_say) wait() say_title(gameforge.event_halloween_hair._20_sayTitle) say(gameforge.event_halloween_hair._50_say) pc.setqf("first_notice", 1) if not event_halloween_hair.is_running() then npc.purge() end end when 33008.chat.gameforge.event_halloween_hair._60_npcChat with pc.getqf("first_notice") == 1 begin local setting = event_halloween_hair.setting() say_title(gameforge.event_halloween_hair._20_sayTitle) say(gameforge.event_halloween_hair._70_say) wait() say_title(gameforge.event_halloween_hair._20_sayTitle) say(gameforge.event_halloween_hair._80_say) wait() if pc.count_item(setting.coupon) == 0 then say_title(gameforge.event_halloween_hair._20_sayTitle) say(gameforge.event_halloween_hair._90_say) wait() say_title(gameforge.event_halloween_hair._20_sayTitle) say(gameforge.event_halloween_hair._100_say) wait() else say_title(gameforge.event_halloween_hair._20_sayTitle) say(gameforge.event_halloween_hair._110_say) wait() say_title(gameforge.event_halloween_hair._20_sayTitle) say(gameforge.event_halloween_hair._120_say) wait() say(gameforge.event_halloween_hair._130_say) local s = select(gameforge.event_halloween_hair._140_select_1, gameforge.event_halloween_hair._140_select_2) if s == 2 then return end -- remove a hair coupon pc.remove_item(setting.coupon, 1) -- Give a hair item to user, and prepare for setting random options to it local race = pc.get_race() + 1 local index = event_halloween_hair.get_random_hair_option_index() -- local option= event_halloween_hair.get_hair_option(index) -- hair option (apply, value, duration) local hair_info = event_halloween_hair.get_hair_info_by_race(race) local vnum, shape = hair_info[1], hair_info[2] pc.give_item2_select(vnum) item.set_socket(0, option.duration) item.set_value(0, option.apply, option.value) end -- if if not event_halloween_hair.is_running() then npc.purge() end end --when -- When using 'Halloween magic wand' when 30322.use begin local setting = event_halloween_hair.setting() if pc.count_item(setting.pumpkin) > 0 then pc.remove_item(setting.pumpkin, 1) pc.remove_item(setting.wand, 1) pc.give_item2(setting.box, 1) end end when 74020.use or 74270.use or 74520.use or 74770.use or 75020.use or 75220.use or 75420.use or 75620.use begin local index = item.get_socket(1) -- If this item was created by command(ex: /i 74020) then socket value is zero. Thus, give a random option. if 0 == index then index = event_halloween_hair.get_random_hair_option_index() end local option = event_halloween_hair.get_hair_option(index) local hair_info = event_halloween_hair.get_hair_info_by_race(pc.get_race() + 1) local vnum, shape = hair_info[1], hair_info[2] pc.set_part(PART_HAIR, shape) affect.remove_hair() affect.add_hair(option.apply, option.value, option.duration) pc.setf("hair", "limit_time", get_time() + option.duration) -- Copied from "hair.leave_log" function in "hair.quest" file char_log(0, "CHANGE_HAIR", string.format("USE_ITEM(%d)", vnum)) char_log(0, "CHANGE_HAIR", string.format("END_SEC(%d)", get_time() + option.duration)) char_log(0, "CHANGE_HAIR", "CHANGE_HAIR_END") item.remove() end end --stateend --quest
Ramazan Event Quest
Kod:
quest event_ramadan begin state start begin function is_running() return (game.get_event_flag("ramadan_drop") > 0) --npc spawn end function reward_period() return (game.get_event_flag("ramadan_reward") > 0) --reward menu appear end function setting() return { ["bread"] = 30315, ["candy"] = 50183, ["plate"] = 30316, ["iftar"] = 30317, ["fruit"] = 30318, ["box"] = 50182, ["horse1"] = 71131, ["horse2"] = 71132, ["horse3"] = 71133, ["horse4"] = 71134, ["historian"] = 33002, ["beggar1"] = 33003, ["beggar2"] = 33004, ["beggar3"] = 33005, ["beggar4"] = 33006, ["beggar5"] = 33007 } end when login or enter with event_ramadan.is_running() begin local setting = event_ramadan.setting() local mapIndex = pc.get_map_index() if mapIndex == 1 or mapIndex == 21 or mapIndex == 41 then if find_npc_by_vnum(setting.historian) == 0 then if mapIndex == 1 then mob.spawn(setting.historian, 608, 617, 1, 1, 1) elseif mapIndex == 21 then mob.spawn(setting.historian, 596, 610, 1, 1, 1) elseif mapIndex == 41 then mob.spawn(setting.historian, 357, 743, 1, 1, 1) end end if find_npc_by_vnum(setting.beggar1) == 0 then if mapIndex == 1 then mob.spawn(setting.beggar1, 619, 701, 1, 1, 1) elseif mapIndex == 21 then mob.spawn(setting.beggar1, 564, 613, 1, 1, 1) elseif mapIndex == 41 then mob.spawn(setting.beggar1, 344, 723, 1, 1, 1) end end if find_npc_by_vnum(setting.beggar2) == 0 then if mapIndex == 1 then mob.spawn(setting.beggar2, 697, 580, 1, 1, 1) elseif mapIndex == 21 then mob.spawn(setting.beggar2, 699, 658, 1, 1, 1) elseif mapIndex == 41 then mob.spawn(setting.beggar2, 443, 733, 1, 1, 1) end end if find_npc_by_vnum(setting.beggar3) == 0 then if mapIndex == 1 then mob.spawn(setting.beggar3, 646, 515, 1, 1, 1) elseif mapIndex == 21 then mob.spawn(setting.beggar3, 613, 715, 1, 1, 1) elseif mapIndex == 41 then mob.spawn(setting.beggar3, 428, 651, 1, 1, 1) end end if find_npc_by_vnum(setting.beggar4) == 0 then if mapIndex == 1 then mob.spawn(setting.beggar4, 554, 550, 1, 1, 1) elseif mapIndex == 21 then mob.spawn(setting.beggar4, 635, 539, 1, 1, 1) elseif mapIndex == 41 then mob.spawn(setting.beggar4, 303, 587, 1, 1, 1) end end if find_npc_by_vnum(setting.beggar5) == 0 then if mapIndex == 1 then mob.spawn(setting.beggar5, 702, 629, 1, 1, 1) elseif mapIndex == 21 then mob.spawn(setting.beggar5, 529, 547, 1, 1, 1) elseif mapIndex == 41 then mob.spawn(setting.beggar5, 456, 673, 1, 1, 1) end end end --if end --when --gameforge.event_ramadan._010_npcChat Historiker? -- (Referenz 33002 Mob) when 33002.chat.gameforge.event_ramadan._010_npcChat with pc.getf("event_ramadan","first_notice")==0 begin local setting = event_ramadan.setting() --gameforge.event_ramadan._020_sayTitle Historiker: (referenz auf mob: 33002) say_title(gameforge.event_ramadan._020_sayTitle) -- gameforge.event_ramadan._030_say review the old and learn the new! why do you find me ? say("") say(gameforge.event_ramadan._030_say) wait() say_pc_name() -- gameforge.event_ramadan._040_say Tut mir leid, kennen wir uns? say(gameforge.event_ramadan._040_say) wait() say_title(gameforge.event_ramadan._020_sayTitle) --gameforge.event_ramadan._050_say Entschuldige, ich vergaß mich vorzustellen. Ich bin der viel gereiste Historiker. -- Wenn du Fragen zur Geschichte hast scheue dich nicht mich zu fragen. say(gameforge.event_ramadan._050_say) wait() say_pc_name() -- gameforge.event_ramadan._060_say Es ehrt mich dich kennen zu lernen. Ich sollte dich öfter aufsuchen say(gameforge.event_ramadan._060_say) pc.setqf("first_notice",1) end -- Brot: Brotkringel -- Süßigkeit: Haloa, baklawa, irgendwas süßes (ihr wisst bescheid) -- gameforge.event_ramadan._070_npcChat Was Süßes when 33002.chat.gameforge.event_ramadan._070_npcChat with pc.getf("event_ramadan","first_notice")==1 begin local setting = event_ramadan.setting() if pc.count_item(setting.bread) == 0 then say_title(gameforge.event_ramadan._020_sayTitle) -- gameforge.event_ramadan._80_say Kennst du dich mit Süßigkeiten aus? Es wird Baklava (bitte absprechen und referenz auf item: 50183) genannt. say(gameforge.event_ramadan._80_say) -- gameforge.event_ramadan._90_select_1 Ja, das kenne ich -- gameforge.event_ramadan._90_select_2 Nein, tut mir leid local s=select(gameforge.event_ramadan._90_select_1 ,gameforge.event_ramadan._90_select_2) if 2==s then --gameforge.event_ramadan._020_sayTitle Historiker: say_title(gameforge.event_ramadan._020_sayTitle) --gameforge.event_ramadan._100_say Schade, bis zum nächsten mal. say(gameforge.event_ramadan._100_say) return end say_title(gameforge.event_ramadan._020_sayTitle) --gameforge.event_ramadan._110_say Dann weißt du ja was ich meine. Wenn ein solches erhalten willst bringe mir bitte ein Brot (bitte abspreche und referenz auf item: 30315). say(gameforge.event_ramadan._110_say) wait() say_title(gameforge.event_ramadan._020_sayTitle) -- gameforge.event_ramadan._120_say Ich würde dir gerne ein Baklava (item: 50183) für 10 Brote (item: 30315) geben. Bist du damit einverstanden? say(gameforge.event_ramadan._120_say) -- gameforge.event_ramadan._130_select_1 Gerne -- gameforge.event_ramadan._130_select_2 Hab keine Zeit local s=select(gameforge.event_ramadan._130_select_1,gameforge.event_ramadan._130_select_2) if 2==s then say_title(gameforge.event_ramadan._020_sayTitle) say(gameforge.event_ramadan._100_say) return end say_title(gameforge.event_ramadan._020_sayTitle) -- gameforge.event_ramadan._140_say Ich würde dir gerne ein Baklava (item: 50183) für 10 Brote (item: 30315) geben. Bist du damit einverstanden? say(gameforge.event_ramadan._140_say) elseif pc.count_item(setting.bread) > 0 and pc.count_item(setting.bread) < 10 then say_title(gameforge.event_ramadan._020_sayTitle) -- gameforge.event_ramadan._150_say Das sind zu wenig Brote, ich kann damit nicht viel anfangen. say(gameforge.event_ramadan._150_say) elseif pc.count_item(setting.bread) >= 10 then say_title(gameforge.event_ramadan._020_sayTitle) -- gameforge.event_ramadan._160_say Das sind genug Brote, dafür kann ich dir gerne das Baklava geben. say(gameforge.event_ramadan._160_say) wait() say_title(gameforge.event_ramadan._020_sayTitle) -- gameforge.event_ramadan._170_say Sammle mehr und ich kann dir mehr davon bereiten say(gameforge.event_ramadan._170_say) pc.give_item2(setting.candy,1) pc.remove_item(setting.bread,10) end --if if not event_ramadan.is_running() then npc.purge() end end --when -- gameforge.event_ramadan._180_npcChat Leckeres Brot (item: 30315) when 33002.chat.gameforge.event_ramadan._180_npcChat with pc.getqf("first_notice")== 1 begin local setting = event_ramadan.setting() say_title(gameforge.event_ramadan._020_sayTitle) -- gameforge.event_ramadan._180_say Ich bin gesättigt mit dem leckeren Brot das du mir brachtest say(gameforge.event_ramadan._180_say) -- gameforge.event_ramadan._190_say Hast du gewusst das es viele Bettler gibt die Hunger haben? Es wäre schön wenn du auch mit Ihnen das Fastenbrechen begehen würdest say(gameforge.event_ramadan._190_say) -- gameforge.event_ramadan._200_say Bringe es Ihnen am besten auf einem Teller (bitte absprechen und refernz auf item:30316) say(gameforge.event_ramadan._200_say) say_item_vnum(setting.plate) wait() say_title(gameforge.event_ramadan._020_sayTitle) -- gameforge.event_ramadan._210_say Danke für dein Brot es ist gut. So eine weise Person sollte auch Barmherzig sein. Man wird es dir vergelten. say(gameforge.event_ramadan._210_say) end -- gameforge.event_ramadan._220_npcChat Hunger ... when 33003.chat.gameforge.event_ramadan._220_npcChat or 33004.chat.gameforge.event_ramadan._220_npcChat or 33005.chat.gameforge.event_ramadan._220_npcChat or 33006.chat.gameforge.event_ramadan._220_npcChat or 33007.chat.gameforge.event_ramadan._220_npcChat begin local setting = event_ramadan.setting() if pc.count_item(setting.iftar) == 0 then -- gameforge.event_ramadan._230_sayTitle Bettler: (referenz auf Mob: 33003~33007) say_title(gameforge.event_ramadan._230_sayTitle) say("") -- gameforge.event_ramadan._240_say Ich bin wirklich hungrig. Habe erbarmen und bringe mir ein Iftar (bitte mit Abdel absprechen und referenz auf item: 30317). Bitte bringe es mir, damit ich nicht verhungere. say(gameforge.event_ramadan._240_say) elseif pc.count_item(setting.iftar) > 0 then say_title(gameforge.event_ramadan._230_sayTitle) say("") -- gameforge.event_ramadan._250_say Das ist doch ein Iftar (referenz: 30317)? Ein warmes leckeres Brot (referenz entsprechend). Willst du diese mir geben? Es wäre mir wertvoll! say(gameforge.event_ramadan._250_say) -- gameforge.event_ramadan._260_select_1 Nimm du Hungriger -- gameforge.event_ramadan._260_select_2 Nein, ich behalte es local s = select(gameforge.event_ramadan._260_select_1,gameforge.event_ramadan._260_select_2) if 2==s then say_title(gameforge.event_ramadan._230_sayTitle) say("") -- gameforge.event_ramadan._270_say Du Unbarmherziger sei nicht so geizig mit deinem Essen. Falls du deine Meinung änderst, weißt du wo du mich findest. say(gameforge.event_ramadan._270_say) return end -- reward say_title(gameforge.event_ramadan._230_sayTitle) say("") -- gameforge.event_ramadan._280_say Es sei dir gedankt. Du bist wahrlich eine weise Person. Möge deine gute Tat hiermit belohnt sein. say(gameforge.event_ramadan._280_say) pc.give_item2(setting.box,1) pc.remove_item(setting.iftar,1) end --if if not event_ramadan.is_running() then npc.purge() end end -- gameforge.event_ramadan._290_npcChat Die Frucht des Segens when 33002.chat.gameforge.event_ramadan._290_npcChat with pc.getf("event_ramadan","fig_exchange")==0 begin local setting = event_ramadan.setting() if get_time() > pc.getqf("duration") then say_title(gameforge.event_ramadan._020_sayTitle) say("") -- gameforge.event_ramadan._300_say Ich hab auf meinen Reisen die "Frucht des Segens" (bitte Item: 30318 referenzien und ändern) kennen gelernt. Diese Frucht belohnt den Fleißigen der regelmäßig zur selben Stunde wiederkehrt. say(gameforge.event_ramadan._300_say) pc.give_item2(setting.fruit) pc.setqf("duration",get_time()+60*60*24) --24h else say_title(gameforge.event_ramadan._020_sayTitle) -- gameforge.event_ramadan._310_say Entschuldige, dich hab ich heute gesehen und du wurdest schon belohnt. Denk daran: Nur der wahrlich geduldige erreicht sein Ziel. say(gameforge.event_ramadan._310_say) end end -- gameforge.event_ramadan._320_npcChat Das Glück des Tüchtigen when 33002.chat.gameforge.event_ramadan._320_npcChat with event_ramadan.reward_period() and pc.getf("event_ramadan","fig_exchange")==0 begin local setting = event_ramadan.setting() say_title(gameforge.event_ramadan._020_sayTitle) say("") -- gameforge.event_ramadan._330_say Ich habe dich schon erwartet. Meine Zeit hier geht zu Ende und ich ziehe in die Welt um neue Geschichten zu lernen. say(gameforge.event_ramadan._330_say) wait() if pc.count_item(setting.fruit)>= 5 then --more than 5 say_title(gameforge.event_ramadan._020_sayTitle) say("") -- gameforge.event_ramadan._340_say Du hast %d Früchte des Segens (Item: 30318) für mich verwahrt. say(string.format(gameforge.event_ramadan._340_say, pc.count_item(setting.fruit))) -- gameforge.event_ramadan._350_say Würdest du mir diese geben für meine Reise? Ich will es dir auch entlohnen. say(gameforge.event_ramadan._350_say) -- gameforge.event_ramadan._360_select_1 Hier nimm -- gameforge.event_ramadan._360_select_2 Nein local s=select(gameforge.event_ramadan._360_select_1, gameforge.event_ramadan._360_select_2) if 2==s then say_title(gameforge.event_ramadan._020_sayTitle) say("") -- gameforge.event_ramadan._370_say Überlege es dir und ich warte auch dich. say(gameforge.event_ramadan._370_say) return end say_title(gameforge.event_ramadan._020_sayTitle) say("") -- gameforge.event_ramadan._380_say Danke für deine Großzügigkeit und deinen Fleiß. Bitte nehme dieses: say(gameforge.event_ramadan._380_say) -- Item: Siegel des Rappen -- gameforge.event_ramadan._390_sayReward Siegel des Rappen (referenz auf items:71131~4) say_reward(gameforge.event_ramadan._390_sayReward) say("") if pc.count_item(setting.fruit)>= 5 and pc.count_item(setting.fruit)<= 10 then pc.give_item2(setting.horse1,1) elseif pc.count_item(setting.fruit)>= 11 and pc.count_item(setting.fruit)<= 19 then pc.give_item2(setting.horse2,1) elseif pc.count_item(setting.fruit)>= 20 and pc.count_item(setting.fruit)<= 27 then pc.give_item2(setting.horse3,1) elseif pc.count_item(setting.fruit)>= 28 then pc.give_item2(setting.horse4,1) end pc.remove_item(setting.fruit,pc.count_item(setting.fruit)) pc.setqf("fig_exchange",1) else --less than 5 say_title(gameforge.event_ramadan._020_sayTitle) say("") -- gameforge.event_ramadan._400_say Du hast weniger als 5? Schade damit kann ich nicht viel anfangen. Vielleicht beim nächsten mal. say(gameforge.event_ramadan._400_say) end end when 30316.use begin local setting = event_ramadan.setting() if pc.count_item(setting.bread) >= 10 then pc.remove_item(setting.bread, 10) pc.remove_item(setting.plate, 1) pc.give_item2(setting.iftar, 1) end end end --stateend --quest
Sertfika Event Quest
Kod:
quest event_sertifika_2014 begin state start begin when 691.kill or 791.kill or 792.kill or 1192.kill or 1304.kill or 1901.kill or 2091.kill or 2191.kill or 2206.kill or 2306.kill or 2595.kill or 2596.kill or 3090.kill or 3091.kill or 3190.kill or 3191.kill or 3290.kill or 3291.kill or 3390.kill or 3391.kill or 3490.kill or 3491.kill or 3590.kill or 3591.kill or 3595.kill or 3596.kill or 3690.kill or 3691.kill or 3790.kill or 3791.kill or 3890.kill or 3891.kill or 3901.kill or 3902.kill or 3903.kill or 3904.kill or 3905.kill or 3906.kill or 8001.kill or 8002.kill or 8003.kill or 8004.kill or 8005.kill or 8006.kill or 8007.kill or 8008.kill or 8009.kill or 8010.kill or 8011.kill or 8012.kill or 8013.kill or 8014.kill or 8024.kill or 8025.kill or 8026.kill or 8027.kill or 8051.kill or 8052.kill or 8053.kill or 8054.kill or 8055.kill or 8056.kill with game.get_event_flag("sertifika_drop") == 1 and not npc.is_pc() begin if npc.get_level() > pc.get_level() - 10 then local s = number(1,18) if s == 1 then notice(""..item_name(52701).." buldum! ") game.drop_item_with_ownership("52701",1) elseif s == 2 then notice(""..item_name(52702).." buldum! ") game.drop_item_with_ownership("52702",1) elseif s == 3 then notice(""..item_name(52703).." buldum! ") game.drop_item_with_ownership("52203",1) elseif s == 4 then notice(""..item_name(52704).." buldum! ") game.drop_item_with_ownership("52704",1) elseif s == 5 then notice(""..item_name(52705).." buldum! ") game.drop_item_with_ownership("52705",1) end end end endend
Sonsuz Kış Event Quest
Kod:
quest event_sonsuz_kis_2014 begin state start begin when 691.kill or 791.kill or 792.kill or 1192.kill or 1304.kill or 1901.kill or 2091.kill or 2191.kill or 2206.kill or 2306.kill or 2595.kill or 2596.kill or 3090.kill or 3091.kill or 3190.kill or 3191.kill or 3290.kill or 3291.kill or 3390.kill or 3391.kill or 3490.kill or 3491.kill or 3590.kill or 3591.kill or 3595.kill or 3596.kill or 3690.kill or 3691.kill or 3790.kill or 3791.kill or 3890.kill or 3891.kill or 3901.kill or 3902.kill or 3903.kill or 3904.kill or 3905.kill or 3906.kill or 6091.kill or 6191.kill or 8001.kill or 8002.kill or 8003.kill or 8004.kill or 8005.kill or 8006.kill or 8007.kill or 8008.kill or 8009.kill or 8010.kill or 8011.kill or 8012.kill or 8013.kill or 8014.kill or 8024.kill or 8025.kill or 8026.kill or 8027.kill or 8051.kill or 8052.kill or 8053.kill or 8054.kill or 8055.kill or 8056.kill with game.get_event_flag("sonsuz_kis_drop") == 1 and not npc.is_pc() begin if npc.get_level() > pc.get_level() - 10 then local s = number(1,25) if s == 1 then game.drop_item_with_ownership("38053",1) return end end end endend
Okudugunuz İçin Teşekürler Bi Yorum Esirgemeyiniz
BLooDStarz • GM Etkinlik Quest Sistemi
Metin2 sunucularında oyun içi etkinlikler, oyuncu etkileşimini artırmak ve sunucu dengesini korumak açısından büyük önem taşır. Bu bağlamda BLooDStarz tarafından geliştirilen GM Etkinlik Quest sistemi, Metin2 sunucularında yetkililerin etkinlik başlatmasını kolaylaştıran ve oyun içi deneyimi zenginleştiren gelişmiş bir quest yapısıdır. Bu sistem özellikle Metin2 Quest sistemlerine odaklı geliştirilmiş, Lua tabanlı çalışmaktadır ve quest geliştiricileri için önemli bir referans niteliğindedir.
BLooDStarz GM Etkinlik Quest Nedir?
BLooDStarz GM Etkinlik Quest, Metin2 sunucusunda yetkili (GM) kullanıcıların belirli komutlar aracılığıyla etkinlik başlatmasına olanak tanıyan, etkinliğin başlama, devam etme ve bitiş süreçlerini yöneten bir quest yapısıdır. Bu sistem sayesinde, oyuncular için eğlenceli ve ödül odaklı etkinlikler organize edilebilir. Ayrıca, quest geliştiricileri için örnek alınabilecek düzeyde detaylı bir yapıya sahiptir.
Quest Sisteminin Özellikleri
BLooDStarz GM Etkinlik Quest sisteminin temel özellikleri arasında şunlar yer alır:
- Yetkililerin etkinlik başlatması için özel trigger mekanizmaları.
- Oyun içi NPC'ler üzerinden etkinlik başlatımı.
- Etkinlik süresince zamanlayıcı (timer) entegrasyonu.
- Oyuncuların etkinliğe katılımını sağlayan flag ve state yönetimi.
- Etkinlik sonucuna göre otomatik ödül dağıtım sistemi.
- Quest zinciri (chain) mantığı ile çalışan alt sistemler.
Quest Script Yapısı ve Lua Kullanımı
Bu sistem, Metin2 Lua dilinde yazılmıştır. Quest dosyaları genellikle syserr.log üzerinden debug edilerek test edilir. BLooDStarz GM Etkinlik Quest dosyası, quest begin ve end blokları arasında tanımlanmış fonksiyonlar içerir. Her bir etkinlik durumu için ayrı state tanımlanmıştır. Bu yapı, Metin2 quest geliştirme sürecinde büyük kolaylık sağlar. Örneğin, bir etkinlik başlatıldığında start_event adlı bir fonksiyon devreye girer ve etkinliğin süresi boyunca timer yardımıyla kontrol sağlanır.
Quest Hatalarının Giderilmesi
Her Metin2 quest geliştirme sürecinde hata almak kaçınılmazdır. BLooDStarz GM Etkinlik Quest sistemi de bazı durumlarda quest hata alabilir. Bunlar genellikle debug işlemleriyle tespit edilir. Hatalar çoğunlukla lua syntax hatası, eksik flag tanımlaması veya quest fonksiyonu eksikliği şeklinde ortaya çıkar. Metin2 quest debug işlemleri için syserr.log dosyası detaylı analiz için kullanılmalıdır.
Ödüller ve Etkinlik Yönetimi
GM Etkinlik Quest sistemi, etkinlik tamamlandığında oyunculara özel ödüller sunar. Bu ödüller item bazlı olabileceği gibi experience veya gold gibi değerlerle de şekillenebilir. Reward sistemi, quest dosyasında tanımlanır ve etkinlik sonunda aktif hale gelir. Bu sayede oyuncular etkinliklere daha fazla motive olur ve sunucu trafiği artırılır.
Sonuç
BLooDStarz GM Etkinlik Quest, Metin2 sunucularında etkinlik yönetimi için harika bir örnektir. Quest geliştiricileri için örnek alınabilecek detaylara sahip bu sistem, Lua bilgisi olan geliştiriciler tarafından kolayca özelleştirilebilir. Metin2 lobby sunucularında benzer sistemler geliştirilerek oyuncu etkileşimi artırılabilir.
BLooDStarz • GM Event Quest System
In-game events on Metin2 servers play a crucial role in increasing player engagement and maintaining server balance. In this context, the GM Event Quest system developed by BLooDStarz facilitates event management for administrators on Metin2 servers and enriches the in-game experience. This system is based on Lua, focuses on Metin2 quest systems, and serves as an important reference for quest developers.
What is BLooDStarz GM Event Quest?
BLooDStarz GM Event Quest is a quest structure that allows administrators (GMs) on Metin2 servers to start events via specific commands and manages the initiation, continuation, and conclusion phases of these events. Thanks to this system, fun and reward-based events can be organized for players. Additionally, it features a highly detailed structure suitable as a reference for quest developers.
Features of the Quest System
Key features of the BLooDStarz GM Event Quest system include:
- Special trigger mechanisms for admins to start events.
- Event initiation through in-game NPCs.
- Timer integration during the event duration.
- Player participation management via flag and state.
- Automatic reward distribution system upon event completion.
- Subsystems operating with a quest chain logic.
Quest Script Structure and Lua Usage
This system is written in Metin2 Lua. Quest files are usually tested via syserr.log. The BLooDStarz GM Event Quest file includes functions defined within quest begin and end blocks. Each event state has its own state definition. This structure provides great convenience during the Metin2 quest development process. For instance, when an event starts, a function named start_event is triggered and controls the event duration using a timer.
Fixing Quest Errors
Errors are inevitable during every Metin2 quest development phase. The BLooDStarz GM Event Quest system may also encounter quest errors in certain situations. These are typically detected through debug operations. Most errors occur due to lua syntax errors, missing flag definitions, or incomplete quest functions. The syserr.log file should be used for detailed analysis during Metin2 quest debug processes.
Rewards and Event Management
The GM Event Quest system offers special rewards to players upon event completion. These rewards can be based on items or values like experience or gold. The reward system is defined in the quest file and activates after the event ends. This motivates players more towards participating in events and increases server traffic.
Conclusion
BLooDStarz GM Event Quest is an excellent example for event management on Metin2 servers. With detailed structures suitable as examples for quest developers, this system can be easily customized by developers familiar with Lua. Similar systems can be developed on Metin2 lobby servers to enhance player engagement.
