function c6040319_OnTalk(MapID, InstanceID, TargetID, TargetTypeID, RoleID, TalkIndex) local GuildID = guild.GetRoleGuildID(RoleID) local MsgID = msg.BeginMsgEvent() if GuildID ~= nil and GuildID ~= -1 and GuildID ~= 4294967295 then local GuildLevel = guild.GetGuildAtt(GuildID) local GuildPos = guild.GetRoleGuildPos(GuildID, RoleID) local ProtectorLevel = 0 local LastTime = -1 local MapState = map.IsCreateMap(2573373074, GuildID) ProtectorLevel, LastTime = guild.GetGuildValue(GuildID) local CurTime = aux.GetCurrentDWORDTime() local CurDay = math.floor(CurTime / 86400) local LastDay = math.floor(LastTime / 86400) if TalkIndex == -1 then msg.AddMsgEvent(MsgID, 20, 950636) msg.AddMsgEvent(MsgID, 24, TargetID) if (GuildPos == 2 or GuildPos == 3) and LastDay~=CurDay and MapState == false and GuildLevel >= 2 then msg.AddMsgEvent(MsgID, 21, 5) msg.AddMsgEvent(MsgID, 1, 950637)-- открыть подземелье elseif MapState == true then msg.AddMsgEvent(MsgID, 21, 6) msg.AddMsgEvent(MsgID, 1, 950638)-- войти в подземелье end elseif TalkIndex == 5 then-- создать подземелье if (GuildPos == 2 or GuildPos == 3) and LastDay~=CurDay and MapState == false and GuildLevel >= 2 then guild.SetGuildValue(GuildID, ProtectorLevel, CurTime) SGuildScriptData(GuildID, 0, 1, 0) msg.AddMsgEvent(MsgID, 20, 950639) msg.AddMsgEvent(MsgID, 2, RoleID) msg.AddMsgEvent(MsgID, 24, TargetID) local GuildMsgID = msg.BeginMsgEvent() msg.AddMsgEvent(GuildMsgID, 102, 900260) msg.DispatchGuildMsgEvent(GuildMsgID, GuildID) map.CreateInstance(2573373074, GuildID) end elseif TalkIndex == 6 then-- телепортировать if MapState == true then role.RoleGotoNewMap(MapID, InstanceID, RoleID, 2573373074, 1370, 4220, 210) end end end msg.AddMsgEvent(MsgID, 21, 9) msg.AddMsgEvent(MsgID, 1, 100002) msg.DispatchRoleMsgEvent(RoleID, MsgID) end aux.RegisterCreatureEvent(6040319, 7, "c6040319_OnTalk") item_guild_dangeon = { { -- лут для nIndex = 1 {3020012, 200, {1, 1}}, {5200067, 5, {1, 1}}, {4820256, 70, {1, 1}}, {4820252, 40, {1, 1}}, {3060005, 500, {3, 15}}, {3050085, 300, {1, 1}}, {3051608, 300, {1, 1}}, {3051609, 300, {1, 1}}, {4400031, 150, {1, 1}}, {4530109, 120, {1, 5}}, {4820081, 180, {1, 5}}, {3070080, 100, {1, 1}}, {3090029, 70, {1, 1}}, {3070080, 50, {1, 1}}, {3070081, 10, {1, 1}}, {4820139, 100, {1, 1}}, {4820140, 50, {1, 1}}, {4820141, 30, {1, 1}}, {4820159, 100, {1, 1}}, {4820160, 50, {1, 1}}, {5200068, 30, {1, 1}}, {4820162, 50, {1, 1}}, {4530110, 1, {1, 1}}, {4999005, 1, {1, 1}}, {1360571, 180, {1, 1}}, {3500100, 1, {1, 1}}, {4810154, 200, {1, 1}}, {3030111, 300, {1, 1}}, {4700260, 30, {1, 3}}, {5200069, 10, {1, 1}}, {5820185, 1, {1, 2}}, {3100080, 175, {1, 3}}, {3100070, 175, {1, 1}}, {3100030, 175, {1, 1}}, {3100020, 175, {1, 1}}, {3100010, 175, {1, 1}}, {3100050, 175, {1, 1}} }, { -- лут для nIndex = 2 (умножаем шансы на 2 для значений ниже 200) {3020012, 200, {1, 1}}, {5200067, 10, {1, 2}}, {4820256, 140, {1, 1}}, {4820252, 80, {1, 1}}, {3060005, 500, {3, 15}}, {3050085, 300, {1, 1}}, {3051608, 300, {1, 1}}, {3051609, 300, {1, 1}}, {4400031, 150, {1, 1}}, {4530109, 240, {1, 5}}, {4820081, 360, {1, 6}}, {3070080, 200, {1, 1}}, {3090029, 140, {1, 1}}, {3070080, 100, {1, 1}}, {3070081, 40, {1, 1}}, {4820139, 200, {1, 1}}, {4820140, 100, {1, 1}}, {4820141, 60, {1, 1}}, {4820159, 200, {1, 1}}, {4820160, 100, {1, 1}}, {4820260, 60, {1, 1}}, {4820162, 100, {1, 1}}, {4530110, 2, {1, 1}}, {4999005, 2, {1, 1}}, {1360571, 360, {1, 2}}, {3500100, 2, {1, 1}}, {4810154, 200, {1, 1}}, {3030111, 300, {1, 1}}, {4700260, 60, {1, 3}}, {5200069, 20, {1, 1}}, {5820185, 2, {1, 2}}, {3100080, 350, {1, 3}}, {3100070, 350, {1, 1}}, {3100030, 350, {1, 1}}, {3100020, 350, {1, 1}}, {3100010, 350, {1, 1}}, {3100050, 350, {1, 1}} }, { -- лут для nIndex = 3 (умножаем шансы на 2 для значений ниже 200) {3020012, 200, {1, 1}}, {5200067, 20, {1, 2}}, {4820256, 280, {1, 1}}, {4820252, 160, {1, 1}}, {3060005, 500, {3, 15}}, {3051607, 300, {1, 1}}, {3051608, 300, {1, 1}}, {3051609, 300, {1, 1}}, {4400031, 150, {1, 1}}, {4530109, 480, {1, 5}}, {4820081, 720, {1, 5}}, {3070080, 400, {1, 1}}, {3090029, 280, {1, 1}}, {3070080, 200, {1, 1}}, {3070081, 80, {1, 1}}, {4820139, 400, {1, 1}}, {4820140, 200, {1, 1}}, {4820141, 120, {1, 1}}, {4820159, 400, {1, 1}}, {4820160, 200, {1, 1}}, {5200068, 120, {1, 1}}, {4820162, 200, {1, 1}}, {4530110, 3, {1, 1}}, {4999005, 3, {1, 1}}, {1360571, 720, {1, 1}}, {3500100, 3, {1, 1}}, {4810154, 200, {1, 1}}, {3030111, 300, {1, 2}}, {4700260, 120, {1, 3}}, {5200069, 40, {1, 1}}, {5820185, 3, {1, 2}}, {3100080, 700, {1, 3}}, {3100070, 700, {1, 1}}, {3100030, 700, {1, 1}}, {3100020, 700, {1, 1}}, {3100010, 700, {1, 1}}, {3100050, 700, {1, 1}} }, { -- лут для nIndex = 4 (умножаем шансы на 2 для значений ниже 200) {3020012, 200, {1, 1}}, {5200067, 40, {1, 3}}, {4820256, 560, {1, 1}}, {5200070, 320, {1, 3}}, {3060005, 500, {3, 15}}, {3050085, 300, {1, 1}}, {3051608, 300, {1, 1}}, {3051609, 300, {1, 1}}, {4400031, 150, {1, 1}}, {4530109, 960, {1, 5}}, {4820087, 1440, {1, 1}}, {3070080, 800, {1, 1}}, {3090029, 560, {1, 1}}, {3070080, 400, {1, 1}}, {3070081, 120, {1, 1}}, {4820139, 800, {1, 1}}, {4820140, 400, {1, 1}}, {4820141, 240, {1, 1}}, {4820159, 800, {1, 1}}, {4820160, 400, {1, 1}}, {5200068, 240, {1, 1}}, {4820162, 400, {1, 1}}, {4530110, 6, {1, 1}}, {4999005, 6, {1, 1}}, {1360571, 1440, {1, 2}}, {3500100, 6, {1, 1}}, {4810154, 200, {1, 1}}, {3030111, 400, {1, 1}}, {4700260, 240, {1, 3}}, {5200069, 80, {1, 1}}, {5820185, 6, {1, 2}}, {3100080, 1400, {1, 3}}, {3100070, 1400, {1, 1}}, {3100030, 1400, {1, 1}}, {3100020, 1400, {1, 1}}, {3100010, 1400, {1, 1}}, {3100050, 1400, {1, 1}} }, { -- лут для боссов {7000240, 200, {1, 3}}, {5200069, 40, {1, 2}}, {4510020, 500, {1, 3}}, {4510020, 300, {3, 6}}, {4510020, 100, {6, 15}}, {4700260, 700, {3, 5}}, {3020094, 400, {1, 1}}, {3020091, 300, {1, 1}}, {3020093, 150, {1, 1}}, {3020091, 960, {1, 5}}, {3020090, 1440, {1, 1}}, {3020092, 800, {1, 1}}, {4020041, 560, {1, 1}}, {3030119, 400, {1, 1}}, {3070020, 120, {1, 1}}, {5200067, 100, {1, 1}}, {3060061, 400, {1, 1}}, {3060057, 240, {1, 1}}, {3070014, 800, {1, 1}}, {3070073, 400, {1, 1}}, {4820253, 240, {1, 1}}, {4820239, 400, {3, 5}}, {4902001, 1000, {1, 1}}, {4902002, 1200, {1, 1}}, {4902003, 1440, {1, 5}}, {1360571, 600, {1, 1}}, {math.random(1360575,1360578), 200, {1, 1}}, {1360576, 400, {1, 1}}, {4820180, 240, {1, 1}}, {4700231, 80, {1, 1}}, {4700230, 6, {1, 1}}, {3070019, 1400, {1, 1}}, {3070054, 1400, {1, 1}}, {3070078, 1400, {3, 5}}, {3070082, 1400, {1, 2}}, {6600155, 1400, {1, 3}}, {7000233, 1400, {1, 1}} } } function questgetitemdrop(MapID, InstanceID, TargetID, TargetTypeID, RoleID, nIndex) local lootRoleTable = {} lootRoleTable = cre.GetAroundRole(MapID, InstanceID, TargetID, 200000, 200000) local items = item_guild_dangeon[nIndex] for k, RoleID in pairs(lootRoleTable) do -- Генерируем случайное число от 1 до 100 local totalChance = 0 for _, item in ipairs(items) do totalChance = totalChance + item[2] end local randomValue = math.random(1, totalChance) local cumulativeChance = 0 for _, item in ipairs(items) do cumulativeChance = cumulativeChance + item[2] if randomValue <= cumulativeChance then -- Генерируем случайное количество в заданном диапазоне local quantity = math.random(item[3][1], item[3][2]) -- Выпадет один предмет с случайным количеством role.AddRoleItem(MapID, InstanceID, RoleID, item[1], quantity, 6, 8, 420) break -- Прерываем цикл после того, как предмет выпал end end end end