--Окно сообщения function Titan_OnClick(MapID, InstanceID, RoleID, TOMsgID, ToMapID, x, y, z) local curhour = tonumber(os.date("%H")) local curmin = tonumber(os.date("%M")) local day = os.date("%A") if (day == "tuesday" or day == "saturday") and 20 == curhour and (curmin >= 50 or curmin <= 59) then CreatTitanRoleObj(RoleID) -- Регистрация игрока end end --Активация ивента function Titan_OnStart(actID) Titan_baoming = 0 Titan_ChooseSide() end --Сообщение function Titan_MSG(actID) local Agnya = map.MapCreateColCreature(3424073512, -1, 9010312, 639, 22983, 585, 1) map.SetMapScriptData(3424073512, -1, 1, 1, Agnya) local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 102, 900259) msg.AddMsgEvent(MsgID, 5, TargetTypeID) msg.DispatchWorldMsgEvent(MsgID) msg.SendWorldSwitchMsg(12, 95, 120, 1, 1146) msg.SendWorldSwitchMsg(12, 95, 120, 1, 1147) msg.SendWorldSwitchMsg(13, 60, 120, 1, 1145) msg.SendWorldSwitchMsg(13, 60, 120, 1, 1143) end function Pob_MSG(actID) local Agnya = map.MapCreateColCreature(3424073512, -1, 9010272, 639, 22983, 585, 1) local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 102, 900258) msg.AddMsgEvent(MsgID, 5, TargetTypeID) msg.DispatchWorldMsgEvent(MsgID) msg.SendWorldSwitchMsg(13, 60, 120, 1, 1145) msg.SendWorldSwitchMsg(13, 60, 120, 1, 1143) msg.SendWorldSwitchMsg(12, 95, 120, 1, 1146) msg.SendWorldSwitchMsg(12, 95, 120, 1, 1147) end --Таймер function Titan_OnTimerMin(actID) local Min = tonumber(os.date("%M")) if Min == 57 or Min == 58 or Min == 59 then for k,v in pairs(Titan_Battle) do local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 101, 950630) -- Битва завершится через <p1> мин. msg.AddMsgEvent(MsgID, 9, 60-Min) msg.DispatchMapMsgEvent(MsgID, n6_MapID,k) end end if Min == 60 then for k,v in pairs(Titan_Battle) do role.RoleGotoNewMap(MapID, InstanceID, RoleID, 3424073512, 630, 1000, 630) end end if Min % 10 == 0 then for k,v in pairs(Titan_Battle) do end end for k,v in pairs(Titan_Battle) do local BattleObj = Titan_Battle[k] BattleObj:SetPlayerPoint_Titan() BattleObj:ResetInSidePlayer_Titan() end end --Окончание ивента function Titan_OnEnd(actID) for k,v in pairs(Titan_Battle) do local BattleObj = Titan_Battle[k] BattleObj:SetPlayerFinalPoint_Titan() map.DeleteInstance(n6_MapID, k) end Titan_Battle = {} Titan_Side = {} Titan_Role = {} Titan_Area = {} Titan_Roletotal = 0 end aux.RegisterActEvent(1146, 8, "Titan_OnClick") aux.RegisterActEvent(1146, 3, "Titan_OnEnd") aux.RegisterActEvent(1146, 2, "Titan_OnStart") aux.RegisterActEvent(1146, 4, "Titan_OnTimerMin") aux.RegisterActEvent(1147, 8, "Titan_OnClick") aux.RegisterActEvent(1147, 3, "Titan_OnEnd") aux.RegisterActEvent(1147, 2, "Titan_OnStart") aux.RegisterActEvent(1147, 4, "Titan_OnTimerMin") aux.RegisterActEvent(1188, 2, "Titan_MSG") aux.RegisterActEvent(1189, 2, "Titan_MSG") aux.RegisterActEvent(1186, 2, "Pob_MSG") aux.RegisterActEvent(1187, 2, "Pob_MSG") --Разговор с нпц function x9010273_OnTalk(MapID, InstanceID, TargetID, TargetTypeID, RoleID, TalkIndex) local curmon = tonumber(os.date("%m")) local curday = tonumber(os.date("%d")) local curyear = tonumber(os.date("%Y")) local curtime = curyear*10000 + curmon*100 + curday local curhour = tonumber(os.date("%H")) local curmin = tonumber(os.date("%M")) local day = os.date("%A") local rolelevel = role.GetRoleLevel(MapID, InstanceID, RoleID) if TalkIndex == -1 then local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 20, 950345) --Ивент Ледовое побоище доступен только во вторник и четверг, с 8:30 до 9:30, с 21:30 до 22:30. При перемещении на локацию ивента все игроки делятся на 2 команды. Участвовать в боях на Снежном пике можно либо в своём снаряжении, либо в специальном сете снаряжения, созданном специально для битвы (попадает в инвентарь при телепортации на локацию). Побеждает команда, набравшая наибольшее количество убийств в течение ивента. Участники победившей команды могут получить наивысшую награду после завершения ивента. msg.AddMsgEvent(MsgID, 24, TargetID) if (day == "Monday" or day == "Friday") and 20 == curhour and (curmin >= 50 or curmin <= 59) then msg.AddMsgEvent(MsgID, 21, 4) msg.AddMsgEvent(MsgID, 1, 950534) --Принять участие в войне end if act.GetActIsStart(1146) == true or act.GetActIsStart(1147) == true then msg.AddMsgEvent(MsgID, 21, 9) msg.AddMsgEvent(MsgID, 1, 206707) --Войти на поле боя elseif act.GetActIsStart(2146) == true or act.GetActIsStart(2147) == true then if role.GetRoleScriptData(RoleID, 1, RoleDataType["Titan_Point"]) ~= 0 then msg.AddMsgEvent(MsgID, 21, 5) msg.AddMsgEvent(MsgID, 1, 206708) --Получить награду end end msg.AddMsgEvent(MsgID, 21, -1) msg.AddMsgEvent(MsgID, 1, 100002) -- OK msg.DispatchRoleMsgEvent(RoleID, MsgID) elseif TalkIndex == 4 then -- Принять участие в войне if Titan_Role[RoleID] ~= nil then local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 20, 950625) --Вы уже зарегистрированы! msg.AddMsgEvent(MsgID, 24, TargetID) msg.AddMsgEvent(MsgID, 21, -1) msg.AddMsgEvent(MsgID, 1, 100001) msg.DispatchRoleMsgEvent(RoleID, MsgID) else if rolelevel < 45 then local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 20, 950627) --Королева Снежного Пика:\nК сожалению, ты будешь обречен на смерть, если приблизишься к полю боя. Стань сильным, получи 80-ый уровень и возвращайся. Тогда ты сможешь помочь! msg.AddMsgEvent(MsgID, 24, TargetID) msg.AddMsgEvent(MsgID, 21, -1) msg.AddMsgEvent(MsgID, 1, 100001) msg.DispatchRoleMsgEvent(RoleID, MsgID) else CreatTitanRoleObj(RoleID) end end elseif TalkIndex == 5 then -- Получить награду if act.GetActIsStart(1146) ~= true or act.GetActIsStart(1147) ~= true then local point = role.GetRoleScriptData(RoleID, 1, RoleDataType["Titan_Point"]) local exp1 = math.floor(Titan_Exp[rolelevel] * 2 * point / 60) local exp2 = 8 * point local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 20, 950628) --Королева Снежного Пика:\nВ награду за отвагу и смелость ты получаешь особый дар: <color=0xffffff00><p1><color=0xfffff7e0> опыта и <color=0xffffff00><p2><color=0xfffff7e0>очков Чести. msg.AddMsgEvent(MsgID, 24, TargetID) --npcid msg.AddMsgEvent(MsgID, 9, exp1) msg.AddMsgEvent(MsgID, 9, exp2) msg.AddMsgEvent(MsgID, 21, 11) msg.AddMsgEvent(MsgID, 1, 100001) msg.DispatchRoleMsgEvent(RoleID, MsgID) end elseif TalkIndex == 9 then -- Вход на поле боя if GetTitanRoleObj(RoleID) == nil then local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 20, 950629) --Королева Снежного Пика:\nБез регистрации ты не можешь пройти на поле боя. msg.AddMsgEvent(MsgID, 24, TargetID) msg.AddMsgEvent(MsgID, 21, -1) msg.AddMsgEvent(MsgID, 1, 100001) msg.DispatchRoleMsgEvent(RoleID, MsgID) else local k = math.random(9) role.RoleGotoNewMap(MapID, InstanceID, RoleID, n6_MapID, n6_Point[k].x, n6_Point[k].y, n6_Point[k].z) role.SetRoleScriptData(RoleID, 1, RoleDataType["Titan_win"], 2) end elseif TalkIndex == 11 then -- Награда local FreeSize = role.GetBagFreeSize(RoleID) if FreeSize < 2 then local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 20, 100003) ----Чтобы сделать это, вам нужно минимум <p1> пустых ячеек в инвентаре. msg.AddMsgEvent(MsgID, 24, TargetID) --npcid msg.AddMsgEvent(MsgID, 9, 2) -- msg.AddMsgEvent(MsgID, 21, -1) msg.AddMsgEvent(MsgID, 1, 100001) msg.DispatchRoleMsgEvent(RoleID, MsgID) else if act.GetActIsStart(1146) ~= true or act.GetActIsStart(1147) ~= true then local point = role.GetRoleScriptData(RoleID, 1, RoleDataType["Titan_Point"]) local exp1 = math.floor(Titan_Exp[rolelevel] * 2.5 * point / 60) local exp2 = 8 * point if role.GetRoleScriptData(RoleID, 1, RoleDataType["Titan_win"]) == 1 then role.AddRoleExp(MapID, InstanceID, RoleID, exp1) role.SetRoleScriptData(RoleID, 1, RoleDataType["Titan_Point"],0) if math.random (100) >= 1 and math.random (100) <= 20 then role.AddRoleItem(MapID, InstanceID, RoleID, 6600518, 25, -1, 8, 420) role.SetRoleScriptData(RoleID, 1, RoleDataType["Titan_win"], 3) elseif math.random (100) >= 21 and math.random <= 40 then role.AddRoleItem(MapID, InstanceID, RoleID, 6600518, 50, -1, 8, 420) role.SetRoleScriptData(RoleID, 1, RoleDataType["Titan_win"], 3) elseif math.random (100) >= 41 and math.random <= 1000 then role.AddRoleItem(MapID, InstanceID, RoleID, 6600518, 80, -1, 8, 420) role.SetRoleScriptData(RoleID, 1, RoleDataType["Titan_win"], 3) end elseif role.GetRoleScriptData(RoleID, 1, RoleDataType["Titan_win"]) == 2 then role.AddRoleExp(MapID, InstanceID, RoleID, exp1) if math.random (100) >= 1 and math.random (100) <= 20 then role.AddRoleItem(MapID, InstanceID, RoleID, 6600518, 25, -1, 8, 420) role.SetRoleScriptData(RoleID, 1, RoleDataType["Titan_win"], 3) elseif math.random (100) >= 21 and math.random <= 40 then role.AddRoleItem(MapID, InstanceID, RoleID, 6600518, 50, -1, 8, 420) role.SetRoleScriptData(RoleID, 1, RoleDataType["Titan_win"], 3) elseif math.random (100) >= 41 and math.random <= 1000 then role.AddRoleItem(MapID, InstanceID, RoleID, 6600518, 80, -1, 8, 420) role.SetRoleScriptData(RoleID, 1, RoleDataType["Titan_win"], 3) end end end end end end aux.RegisterCreatureEvent(9010312, 7, "x9010273_OnTalk")