Paty_pero = {} Guild_pero = {} --Перо возврата function I6601605_CanUseGiftBag(MapID, InstanceID, TypeID, TargetID) --Для всего кроме призм local bRet, bIgnore = 0, false for i in pairs(Skill_Return) do if MapID == Skill_Return[i] then return 23 end end local FreeSize = role.GetBagFreeSize(TargetID) if(FreeSize < 2) then bRet = 40 end return bRet, bIgnore end function I6601605_GiftBag(MapID, InstanceID, TypeID, RoleID) local x, y, z = unit.GetPosition(MapID, InstanceID, RoleID) a=MapID role.SetRoleScriptData(RoleID, 1, RoleDataType["pero_x"],x) role.SetRoleScriptData(RoleID, 1, RoleDataType["pero_y"],y) role.SetRoleScriptData(RoleID, 1, RoleDataType["pero_z"],z) role.SetRoleScriptData(RoleID, 1, RoleDataType["pero_karta"],a) role.RoleGotoNewMap(MapID, InstanceID, RoleID, 3424073512, 630, 23094, 630) role.AddRoleItem(MapID, InstanceID, RoleID, 6601606, 1, -1, 8, 420) end aux.RegisterItemEvent(6601605, 0, "I6601605_CanUseGiftBag") aux.RegisterItemEvent(6601606, 0, "I6601605_CanUseGiftBag") aux.RegisterItemEvent(6601605, 1, "I6601605_GiftBag") function I6601606_GiftBag(MapID, InstanceID, TypeID, RoleID) local a = role.GetRoleScriptData(RoleID, 1, RoleDataType["pero_x"]) local b = role.GetRoleScriptData(RoleID, 1, RoleDataType["pero_y"]) local c = role.GetRoleScriptData(RoleID, 1, RoleDataType["pero_z"]) local d = role.GetRoleScriptData(RoleID, 1, RoleDataType["pero_karta"]) role.RoleGotoNewMap(MapID, InstanceID, RoleID, d, a, b, c) end aux.RegisterItemEvent(6601606, 1, "I6601606_GiftBag") --Перо призыва пати function I6601608_Use(MapID, InstanceID, TargetID, TargetID) --TargetTypeID 这个才是怪物表上宝箱的ID local TeamID = role.IsRoleHaveTeam(MapID, InstanceID, TargetID) if TeamID ~= nil and TeamID ~= 4294967295 then local Role = {} Role[1], Role[2], Role[3], Role[4], Role[5], Role[6] = role.GetRoleTeamMemID(TeamID) for k,v in pairs(Role) do if v ~= TargetID then local Map, Instance = role.GetRoleMapID(v) if Map ~= nil then if not unit.IsDead(Map, Instance, v) then msg.SendRoleSwitchMsg(6, Map, Instance, v, 1, 60) local x, y ,z = unit.GetPosition(MapID, InstanceID, TargetID) Paty_pero[v] = {MapID, InstanceID, x, y ,z, 2} end end end end end end function I6601608_CanUse(MapID, InstanceID, TypeID, TargetID) local bRet, bIgnore = 0, false local TeamID = role.IsRoleHaveTeam(MapID, InstanceID, TargetID) if TeamID == nil or TeamID == 4294967295 then bRet = 32 end local bool = false if MapID ~= nil then for k,v in pairs(Skill_NormalCRC) do if MapID == v then bool = true break end end end if not bool then bRet = 32 end return bRet, bIgnore end aux.RegisterItemEvent(6601608, 1, "I6601608_Use") aux.RegisterItemEvent(6601608, 0, "I6601608_CanUse") function Paty_OnClick(MapID, InstanceID, RoleID, TOMsgID, ToMapID, x, y, z) local no_map ={} no_map[1] = 965742749 no_map[2] = 965743517 no_map[3] = 965743261 no_map[4] = 965744029 local a = 0 for i = 1,#no_map do if MapID == no_map[i] then a = 1 end end if a == 0 then if Paty_pero[RoleID] ~= nil and not unit.IsDead(MapID, InstanceID, RoleID) then if role.IsRoleInStatus(RoleID, 1024) then role.CancelRoleStallState(MapID, InstanceID, RoleID) end role.RoleGotoNewMap(MapID, InstanceID, RoleID, Paty_pero[RoleID][1], Paty_pero[RoleID][3], Paty_pero[RoleID][4], Paty_pero[RoleID][5]) Paty_pero[RoleID] = nil end end end aux.RegisterActEvent(60, 8, "Paty_OnClick") --Перо призыва гильдии function I6601611_Use(MapID, InstanceID, TargetID, TargetID) --TargetTypeID 这个才是怪物表上宝箱的ID local guildID = guild.GetRoleGuildID(TargetID) if guildID ~= nil and guildID ~= 4294967295 then local tmpRoleIDTab = guild.GetAllGuildMember(guildID) if tmpRoleIDTab ~= nil then for k, v in pairs(tmpRoleIDTab) do if v ~= TargetID then local Map, Instance = role.GetRoleMapID(v) if Map ~= nil then if not unit.IsDead(Map, Instance, v) then msg.SendRoleSwitchMsg(7, Map, Instance, v, 1, 61) local x, y ,z = unit.GetPosition(MapID, InstanceID, TargetID) Guild_pero[v] = {MapID, InstanceID, x, y ,z, 2} end end end end end end end function I6601611_CanUse(MapID, InstanceID, TypeID, TargetID) local bRet, bIgnore = 0, false local guildID = guild.GetRoleGuildID(TargetID) if guildID == nil or guildID == 4294967295 then bRet = 32 end local bool = false if MapID ~= nil then for k,v in pairs(Skill_NormalCRC) do if MapID == v then bool = true break end end end if not bool then bRet = 32 end return bRet, bIgnore end aux.RegisterItemEvent(6601611, 1, "I6601611_Use") aux.RegisterItemEvent(6601611, 0, "I6601611_CanUse") function Guild_OnClick(MapID, InstanceID, RoleID, TOMsgID, ToMapID, x, y, z) local no_map ={} no_map[1] = 965742749 no_map[2] = 965743517 no_map[3] = 965743261 no_map[4] = 965744029 local a = 0 for i = 1,#no_map do if MapID == no_map[i] then a = 1 end end if a == 0 then if Guild_pero[RoleID] ~= nil and not unit.IsDead(MapID, InstanceID, RoleID) then if role.IsRoleInStatus(RoleID, 1024) then role.CancelRoleStallState(MapID, InstanceID, RoleID) end role.RoleGotoNewMap(MapID, InstanceID, RoleID, Guild_pero[RoleID][1], Guild_pero[RoleID][3], Guild_pero[RoleID][4], Guild_pero[RoleID][5]) Guild_pero[RoleID] = nil end end end aux.RegisterActEvent(61, 8, "Guild_OnClick")