--Окно сообщения function Poboishe_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 == "Wednesday" or day == "Friday") and 18 == curhour and (curmin >= 50 or curmin <= 59) then CreatPoboisheRoleObj(RoleID) -- Регистрация игрока end end --Активация ивента function Poboishe_OnStart(actID) Poboishe_baoming = 0 Poboishe_ChooseSide() end --Таймер function Poboishe_OnTimerMin(actID) local Min = tonumber(os.date("%M")) if Min == 57 or Min == 58 or Min == 59 then for k,v in pairs(Poboishe_Battle) do local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 101, 950495) msg.AddMsgEvent(MsgID, 9, 60-Min) msg.DispatchMapMsgEvent(MsgID, S66_1_MapID,k) end end if Min == 60 then for k,v in pairs(Poboishe_Battle) do role.RoleGotoNewMap(MapID, InstanceID, RoleID, 3424073512, 630, 1000, 630) end end if Min % 10 == 0 then for k,v in pairs(Poboishe_Battle) do local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 101, 951035) --Флаг крови появился на просторах Снежного пика в координатах 181 208. Отнесите его к Кристальному источнику, чтобы заработать дополнительные очки для своей команды. msg.DispatchMapMsgEvent(MsgID, S66_1_MapID,k) map.MapCreateColCreature(S66_1_MapID, k, 9010354, 181, 7239, 208, 1, "") end end for k,v in pairs(Poboishe_Battle) do local BattleObj = Poboishe_Battle[k] BattleObj:SetPlayerPoint_Poboishe() BattleObj:ResetInSidePlayer_Poboishe() end end --Окончание ивента function Poboishe_OnEnd(actID) for k,v in pairs(Poboishe_Battle) do local BattleObj = Poboishe_Battle[k] BattleObj:SetPlayerFinalPoint_Poboishe() map.DeleteInstance(S66_1_MapID, k) end Poboishe_Battle = {} Poboishe_Side = {} Poboishe_Role = {} Poboishe_Area = {} Poboishe_Roletotal = 0 end aux.RegisterActEvent(1143, 8, "Poboishe_OnClick") aux.RegisterActEvent(1143, 3, "Poboishe_OnEnd") aux.RegisterActEvent(1143, 2, "Poboishe_OnStart") aux.RegisterActEvent(1143, 4, "Poboishe_OnTimerMin") aux.RegisterActEvent(1145, 8, "Poboishe_OnClick") aux.RegisterActEvent(1145, 3, "Poboishe_OnEnd") aux.RegisterActEvent(1145, 2, "Poboishe_OnStart") aux.RegisterActEvent(1145, 4, "Poboishe_OnTimerMin") --Разговор с нпц function x9010272_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, 951022) --Ивент Ледовое побоище доступен только во вторник и четверг, с 8:30 до 9:30, с 21:30 до 22:30. При перемещении на локацию ивента все игроки делятся на 2 команды. Участвовать в боях на Снежном пике можно либо в своём снаряжении, либо в специальном сете снаряжения, созданном специально для битвы (попадает в инвентарь при телепортации на локацию). Побеждает команда, набравшая наибольшее количество убийств в течение ивента. Участники победившей команды могут получить наивысшую награду после завершения ивента. msg.AddMsgEvent(MsgID, 24, TargetID) if (day == "Tuesday" or day == "Thursday") and 19 == curhour and (curmin >= 50 and curmin <= 59) then msg.AddMsgEvent(MsgID, 21, 4) msg.AddMsgEvent(MsgID, 1, 951031) --Принять участие в войне end if act.GetActIsStart(1143) == true or act.GetActIsStart(1145) == true then msg.AddMsgEvent(MsgID, 21, 9) msg.AddMsgEvent(MsgID, 1, 951023) --Войти на поле боя elseif act.GetActIsStart(1143) ~= true or act.GetActIsStart(1145) ~= true then if role.GetRoleScriptData(RoleID, 1, RoleDataType["Poboishe_Point"]) ~= 0 then msg.AddMsgEvent(MsgID, 21, 5) msg.AddMsgEvent(MsgID, 1, 206708) --Получить награду end end msg.DispatchRoleMsgEvent(RoleID, MsgID) elseif TalkIndex == 4 then -- Принять участие в войне if Poboishe_Role[RoleID] ~= nil then local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 20, 951032) --Королева Снежного Пика:\nТы уже зарегистрирован, герой! msg.AddMsgEvent(MsgID, 24, TargetID) msg.AddMsgEvent(MsgID, 21, -1) msg.AddMsgEvent(MsgID, 1, 100001) msg.DispatchRoleMsgEvent(RoleID, MsgID) else if rolelevel < 80 then local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 20, 950884) --Королева Снежного Пика:\nК сожалению, ты будешь обречен на смерть, если приблизишься к полю боя. Стань сильным, получи 80-ый уровень и возвращайся. Тогда ты сможешь помочь! msg.AddMsgEvent(MsgID, 24, TargetID) msg.AddMsgEvent(MsgID, 21, -1) msg.AddMsgEvent(MsgID, 1, 100001) msg.DispatchRoleMsgEvent(RoleID, MsgID) else CreatPoboisheRoleObj(RoleID) end end elseif TalkIndex == 5 then -- Получить награду if act.GetActIsStart(1143) ~= true or act.GetActIsStart(1145) ~= true then local point = role.GetRoleScriptData(RoleID, 1, RoleDataType["Poboishe_Point"]) local exp1 = math.floor(Poboishe_Exp[rolelevel] * 2 * point / 60) local exp2 = 8 * point local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 20, 951039) --Королева Снежного Пика:\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 GetPoboisheRoleObj(RoleID) == nil then local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 20, 951038) --Королева Снежного Пика:\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) local class = role.GetRoleClass(RoleID) if class == 2 or class == 6 or class == 7 then role.AddRoleItem(MapID, InstanceID, RoleID, 5300087, 1, 6, 8, 420) elseif class == 3 or class == 8 or class == 9 then role.AddRoleItem(MapID, InstanceID, RoleID, 5300084, 1, 6, 8, 420) elseif class == 5 or class == 12 or class == 13 then role.AddRoleItem(MapID, InstanceID, RoleID, 5300086, 1, 6, 8, 420) elseif class == 4 or class == 10 or class == 11 then role.AddRoleItem(MapID, InstanceID, RoleID, 5300085, 1, 6, 8, 420) end role.RoleGotoNewMap(MapID, InstanceID, RoleID, S66_1_MapID, S66_1_Point[k].x, S66_1_Point[k].y, S66_1_Point[k].z) role.SetRoleScriptData(RoleID, 1, RoleDataType["Poboishe_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(1143) ~= true or act.GetActIsStart(1145) ~= true then local point = role.GetRoleScriptData(RoleID, 1, RoleDataType["Poboishe_Point"]) local exp1 = math.floor(Poboishe_Exp[rolelevel] * 2.5 * point / 60) local exp2 = 8 * point if role.GetRoleScriptData(RoleID, 1, RoleDataType["Poboishe_win"]) == 1 then role.AddRoleExp(MapID, InstanceID, RoleID, exp1) role.SetRoleScriptData(RoleID, 1, RoleDataType["Poboishe_Point"],0) role.ModRoleAttValue(MapID, InstanceID, RoleID, 80, exp2) role.AddRoleItem(MapID, InstanceID, RoleID, 4820242, 1, -1, 8, 420) role.SetRoleScriptData(RoleID, 1, RoleDataType["Poboishe_win"], 3) elseif role.GetRoleScriptData(RoleID, 1, RoleDataType["Poboishe_win"]) == 2 then role.AddRoleExp(MapID, InstanceID, RoleID, exp1) role.SetRoleScriptData(RoleID, 1, RoleDataType["Poboishe_Point"],0) role.ModRoleAttValue(MapID, InstanceID, RoleID, 80, exp2) role.AddRoleItem(MapID, InstanceID, RoleID, 4820241, 1, -1, 8, 420) role.SetRoleScriptData(RoleID, 1, RoleDataType["Poboishe_win"], 3) end end end end end aux.RegisterCreatureEvent(9010272, 7, "x9010272_OnTalk")