Event Manager


quest event begin

             state start begin

                 when letter with pc.get_gm_level()==5 begin

                     send_letter(gameforge.event.letter_10)

                 end

                 when button or info begin

                     say_title(gameforge.event.title_20)

                     say(gameforge.event.say_30)

                     local events_info = {

                         --- event_name , flag

                         {gameforge.event.event_90, "new_2006_drop"},

                         {gameforge.event.event_100, "new_drop_moon"},

                         {gameforge.event.event_110, "new_valentine_drop"},

                         {gameforge.event.event_120, "new_football_drop"},

                         {gameforge.event.event_130, "new_ramadan_drop"},

                         {gameforge.event.event_140, "halloween_hair"},

                         {gameforge.event.event_150, "easter_rabbit"},

                         {gameforge.event.event_160, "new_xmas_event"},

                         {gameforge.event.event_170, "dressup_saleh"},

                         {gameforge.event.event_180, "sertbox_saleh"},

                         -- حالة خاصه , لاتقم بالتعديل هنا

                         {gameforge.event.say_70, nil}, -- rate

                         {gameforge.locale.cancel, ""} -- close

                     }

                     local menu01 = {}

                     for num1,str1 in ipairs(events_info) do

                         table.insert(menu01, str1[1])

                     end

                     local seltab01 = select_table(menu01, gameforge.locale.cancel)

                     if seltab01 == table.getn(menu01) then return end

                     say_reward(gameforge.event.say_reward_40)

                     if events_info[seltab01][2] == nil then

                         say(gameforge.event.say_80)

                         local min_rate = tonumber(input())

                         if min_rate == nil then

                             say(gameforge.event.say_90)

                             return

                         end

                         game.set_event_flag("event_rate", min_rate)

                     else

                         local s = select(gameforge.event.select_50, gameforge.event.select_60, gameforge.locale.cancel)

                         if s == 1 then

                             notice_all(string.format(gameforge.event.notice_70, events_info[seltab01][1]))

                             game.set_event_flag(events_info[seltab01][2], 1)

                         elseif s == 2 then

                             notice_all(string.format(gameforge.event.notice_80, events_info[seltab01][1]))

                             game.set_event_flag(events_info[seltab01][2], 0)

                         else

                             return

                         end

                     end

                 end

             end

         end 

Drop


quest event_drop begin

             state start begin

                 function get_events_table()

                     if event_drop.events_info == nil then

                         event_drop.events_info={

                             {gameforge.event.event_90, "new_2006_drop", 50037},

                             {gameforge.event.event_100, "new_drop_moon", 50011},

                             {" صندوق غامض ", "new_kids_day_drop", 50034},

                             {gameforge.event.event_120, "new_football_drop", 50096},

                             {gameforge.event.event_130, "new_ramadan_drop", 30315},

                             {gameforge.event.event_170, "dressup_saleh", 50130},

                             {gameforge.event.event_180, "sertbox_saleh", 50033},

                         }

                     end

                     return event_drop.events_info

                 end

                 

                 when login or enter begin

                     for i,v in ipairs(event_drop.get_events_table()) do

                         if game.get_event_flag(v[2]) == 1 then

                             syschat(gameforge.event.say_100, v[1])

                         end

                     end

                 end

                 

                 when kill with not npc.is_pc() begin

                     for i,v in ipairs(event_drop.get_events_table()) do

                         if game.get_event_flag(v[2]) == 1 then

                             local level = pc.get_level()

                             local limit = npc.get_level0()

                             local rate = game.get_event_flag("event_rate")

                             if level < limit+5 then

                                 if math.random(1, 100) <= rate then

                                     game.drop_item_with_ownership(v[3])

                                 end

                             end

                         end

                     end

                 end

             end

         end 

Tutorial instalare quest:

1. Salvaţi conţinutul quest-ului într-un fişier text numit de exemplu q1.quest .

2. Vă conectaţi la filezilla / winscp şi întrati în /usr/home/game/share/locale/germany/quest (depinde ce server aveţi).

3. Îl puneţi acolo (să fie .quest) şi da-ţi permisiuni 777.

4. Te loghezi în FreeBSD / putty şi scrii în felul următor: cd /usr/home/game/share/locale/germany/quest apoi ./qc q1.quest

5. Intraţi pe server şi scrieţi /reload q .