-- f1 farm (SQL-backed + modular) local function _script_dir() local src = debug.getinfo(1, "S").source if type(src) ~= "string" then return "" end if src:sub(1, 1) == "@" then src = src:sub(2) end src = src:gsub("\\", "/") local dir = src:match("^(.*)/") if dir == nil then return "" end return dir .. "/" end local function _dofile_rel(name) return dofile(_script_dir() .. name) end local farm = _dofile_rel("f1_logic.lua") local map_def = _dofile_rel("f1_mappings.lua") -- Exp item function s7000011_Use(MapID, InstanceID, TypeID, RoleID) farm.s7000011_Use(MapID, InstanceID, TypeID, RoleID) end aux.RegisterItemEvent(7000011, 1, "s7000011_Use") -- Enter NPC function c5800091_On_Talk(MapID, InstanceID, TargetID, TargetTypeID, RoleID, TalkIndex) farm.c5800091_OnTalk(MapID, InstanceID, TargetID, TargetTypeID, RoleID, TalkIndex) end aux.RegisterCreatureEvent(5800091, 7, "c5800091_On_Talk") -- Map events function f1_GetOnePerfectMap(MapID, InstanceID, RoleID) return farm.f1_GetOnePerfectMap(MapID, InstanceID, RoleID) end aux.RegisterMapEvent("f1", 14, "f1_GetOnePerfectMap") function f1_CanEnterWhenOnline(MapID, RoleID) return farm.f1_CanEnterWhenOnline(MapID, RoleID) end aux.RegisterMapEvent("f1", 12, "f1_CanEnterWhenOnline") function f1_GetExporMapAndCoord(MapID, InstanceID, RoleID) return farm.f1_GetExporMapAndCoord(MapID, InstanceID, RoleID) end aux.RegisterMapEvent("f1", 13, "f1_GetExporMapAndCoord") function f1_CanEnter(MapID, InstanceID, RoleID) return farm.f1_CanEnter(MapID, InstanceID, RoleID) end aux.RegisterMapEvent("f1", 15, "f1_CanEnter") function f1_OnPlayerLeave(MapID, InstanceID, RoleID) farm.onPlayerLeave(MapID, InstanceID, RoleID) end aux.RegisterMapEvent("f1", 3, "f1_OnPlayerLeave") function f1_OnPlayerEnter(MapID, InstanceID, RoleID) farm.onPlayerEnter(MapID, InstanceID, RoleID) end aux.RegisterMapEvent("f1", 2, "f1_OnPlayerEnter") function f1_OnRoleEnterArea(MapID, InstanceID, RoleID, ObjAreaID) farm.onRoleEnterArea(MapID, InstanceID, RoleID, ObjAreaID) end aux.RegisterMapEvent("f1", 7, "f1_OnRoleEnterArea") -- OnInit (instance init) function f1_OnInit(MapID, InstanceID, CreatureID, CreatureTypeID) if farm.onInit ~= nil then farm.onInit(MapID, InstanceID, CreatureID, CreatureTypeID) end end aux.RegisterMapEvent("f1", 0, "f1_OnInit") -- Invest NPC function c6020002_On_Invest(MapID, InstanceID, TargetID, TargetTypeID, RoleID, TalkIndex) farm.c6020002_OnInvest(MapID, InstanceID, TargetID, TargetTypeID, RoleID, TalkIndex) end aux.RegisterCreatureEvent(6020002, 6, "c6020002_On_Invest") -- Manager NPC (level-up) function c5800090_On_Talk(MapID, InstanceID, TargetID, TargetTypeID, RoleID, TalkIndex) farm.c5800090_OnTalk(MapID, InstanceID, TargetID, TargetTypeID, RoleID, TalkIndex) end aux.RegisterCreatureEvent(5800090, 7, "c5800090_On_Talk") -- Mound function usadb_OnTalk(MapID, InstanceID, TargetID, TargetTypeID, RoleID, TalkIndex) farm.mound_OnTalk(MapID, InstanceID, TargetID, TargetTypeID, RoleID, TalkIndex) end aux.RegisterCreatureEvent(map_def.MOUND_BASIC, 7, "usadb_OnTalk") -- Seeds / seedlings / harvests local function _registerPlant(def) -- seed aux.RegisterCreatureEvent(def.seed, 7, "f1_seed_OnTalk") aux.RegisterCreatureEvent(def.seed, 13, "f1_seed_OnDisappear") -- seedling aux.RegisterCreatureEvent(def.seedling, 7, "f1_seedling_OnTalk") aux.RegisterCreatureEvent(def.seedling, 13, "f1_seedling_OnDisappear") -- harvest aux.RegisterCreatureEvent(def.harvest, 7, "f1_harvest_OnTalk") aux.RegisterCreatureEvent(def.harvest, 13, "f1_harvest_OnDisappear") end function f1_seed_OnTalk(MapID, InstanceID, TargetID, TargetTypeID, RoleID, TalkIndex) farm.seed_OnTalk(MapID, InstanceID, TargetID, TargetTypeID, RoleID, TalkIndex) end function f1_seed_OnDisappear(MapID, InstanceID, TargetID, Ai) farm.seed_OnDisappear(MapID, InstanceID, TargetID, Ai) end function f1_seedling_OnTalk(MapID, InstanceID, TargetID, TargetTypeID, RoleID, TalkIndex) farm.seedling_OnTalk(MapID, InstanceID, TargetID, TargetTypeID, RoleID, TalkIndex) end function f1_seedling_OnDisappear(MapID, InstanceID, TargetID, Ai) farm.seedling_OnDisappear(MapID, InstanceID, TargetID, Ai) end function f1_harvest_OnTalk(MapID, InstanceID, TargetID, TargetTypeID, RoleID, TalkIndex) farm.harvest_OnTalk(MapID, InstanceID, TargetID, TargetTypeID, RoleID, TalkIndex) end function f1_harvest_OnDisappear(MapID, InstanceID, TargetID, Ai) farm.harvest_OnDisappear(MapID, InstanceID, TargetID, Ai) end for _, def in pairs(map_def.plants) do _registerPlant(def) end