---------- 31107 ------------- local zz_y7_const = { HELP = "?"; DRIVE_MOB = "몹"; TELE_TEST = "텔포"; AUTO_PLAY = "자사"; POSITION = "위치"; ATTACK_SPEED = "노딜"; } local print_toggle_message = function(feature_name, if_toggle_on) _ChatMessageLogic:Add(_ChatMessageType.System, ("%s: %s"):format( feature_name, if_toggle_on and "활성화됨" or "비활성화됨" ) ) end ---------- 31107 ------------- return function (self) self.ClientCommands = { ["도움말"] = self.Help, ["교환"] = self.Trade, ["게임교환"] = self.Trade, ["모두"] = self.ToAll, ["파티"] = self.ToParty, ["채널"] = self.ToChannel, ["귓말"] = self.ToWhisper, ["귓"] = self.ToWhisper, ["찾기"] = self.Find, ["파티만들기"] = self.CreateParty, ["파티탈퇴"] = self.LeaveParty, ["파티초대"] = self.InviteParty, ["파티강퇴"] = self.KickParty, ["펫"] = self.PetChat, ------------------------------------------------- 31107 ------------------------------------------------- [zz_y7_const.HELP] = function(self) --> add yourself : ) ;; local message = [[ ----------------- 명령어 ----------------- /몹 몹몰이 /자사 자동사냥 풀셋팅 /텔포 텔레포트 /위치 /노딜 공속 ------------------------------------------]] _ChatMessageLogic:Add(_ChatMessageType.Party, message) end, ------------------- Toggle Cheats ------------------- [zz_y7_const.ATTACK_SPEED] = function(self) zz_y7.use_attack_speed = not zz_y7.use_attack_speed print_toggle_message(zz_y7_const.ATTACK_SPEED, zz_y7.use_attack_speed) end, [zz_y7_const.DRIVE_MOB] = function(self) zz_y7.drive_mob = not zz_y7.drive_mob if zz_y7.drive_mob then zz_y7.drive_timer = _TimerService:SetTimerRepeat(zz_y7.drive_func, 0.2) zz_y7.user_check_timer = _TimerService:SetTimerRepeat(zz_y7.user_check_func, 1) else _TimerService:ClearTimer(zz_y7.drive_timer) _TimerService:ClearTimer(zz_y7.user_check_timer) zz_y7.reset_mob_func() end print_toggle_message(zz_y7_const.DRIVE_MOB, zz_y7.drive_mob) end, [zz_y7_const.TELE_TEST] = function(self) zz_y7.tele_test = not zz_y7.tele_test if zz_y7.tele_test then zz_y7.tele_timer = _TimerService:SetTimerRepeat(zz_y7.tele_func, 5) else _TimerService:ClearTimer(zz_y7.tele_timer) end print_toggle_message(zz_y7_const.TELE_TEST, zz_y7.tele_test) end, [zz_y7_const.AUTO_PLAY] = function(self) zz_y7.use_auto_play = not zz_y7.use_auto_play zz_y7.tele_test = zz_y7.use_auto_play zz_y7.test_toggle = zz_y7.use_auto_play zz_y7.drive_mob = zz_y7.use_auto_play if zz_y7.use_auto_play then zz_y7.auto_hit_timer = _TimerService:SetTimerRepeat(zz_y7.skill_hit_timer_func, 0.2) zz_y7.tele_toggle_timer = _TimerService:SetTimerRepeat(zz_y7.tele_toggle_func, 5) zz_y7.drive_timer = _TimerService:SetTimerRepeat(zz_y7.drive_func, 0.2) zz_y7.user_check_timer = _TimerService:SetTimerRepeat(zz_y7.user_check_func, 1) else _TimerService:ClearTimer(zz_y7.auto_hit_timer) _TimerService:ClearTimer(zz_y7.tele_toggle_timer) _TimerService:ClearTimer(zz_y7.drive_timer) _TimerService:ClearTimer(zz_y7.user_check_timer) zz_y7.reset_mob_func() end print_toggle_message(zz_y7_const.AUTO_PLAY, zz_y7.use_auto_play) end, [zz_y7_const.POSITION] = function(self) zz_y7.save_position1() end, ------------------- Instant Cheats ------------------- ------------------------------------------------- 31107 ------------------------------------------------- } ---------------- 31107 ---------------- zz_y7 = {} zz_y7.target_x = 1.4149 -------- cheat toggle ---------- zz_y7.use_auto_play = false; zz_y7.drive_mob = false; zz_y7.tele_test = false; zz_y7.is_others = false; zz_y7.need_reset = false; zz_y7.no_mob = false; zz_y7.teleport_toggle = false; zz_y7.use_attack_speed = false; --------- flag ---------- --------- custom functions --------- zz_y7.user_check_func = function () --펫먹이 그냥 여기다 추가하자 if isvalid(_UserService.LocalPlayer.PetOwnerComponent.Pet) then petRepleteness = _UserService.LocalPlayer.PetOwnerComponent.Pet.PetComponent.Repleteness if petRepleteness < 60 then _ItemConsumeLogic:TryConsumeFromFuncKey(2120000) end end -------------------------------- local map_name = _UserService.LocalPlayer.CurrentMapName local entities = _UserService:GetUsersByMapName(map_name) zz_y7.is_others = (#entities > 5) if zz_y7.is_others then _TimerService:ClearTimer(zz_y7.auto_hit_timer) _TimerService:ClearTimer(zz_y7.tele_toggle_timer) _TimerService:ClearTimer(zz_y7.drive_timer) _TimerService:ClearTimer(zz_y7.user_check_timer) zz_y7.reset_mob_func() end end zz_y7.filter_only_live_mobs = function (hit,temp,output) if (hit > 0) then local count = 0 for _,c in ipairs(temp) do ---@type MobComponent local mob = c.Entity.MobComponent if (mob.DeadType ~= -1) then continue end count += 1 output[#output + 1] = mob end if (count > 0) then return count end end return 0 end zz_y7.save_position1 = function() zz_y7.target_x = _UserService.LocalPlayer.TransformComponent.WorldPosition.x _ChatMessageLogic:Add(_ChatMessageType.Party, "(x :" .. zz_y7.target_x .. ") 저장 완료") end ---------------- test ---------------- zz_y7.skill_hit_timer_func = function(self) if not zz_y7.is_others and not zz_y7.no_mob then if zz_y7.teleport_toggle then _PlayerActiveSkillLogic:DoActiveSkill(2201002 , false) else _PlayerAttackLogic_Magic:TryDoingMagicAttack(_UserService.LocalPlayer, 2301002, _UserService.LocalPlayer.WsCharacterData:GetSkillLevel(2301002), 0) end end end zz_y7.tele_toggle_func = function () zz_y7.teleport_toggle = true _TimerService:SetTimerOnce(function () zz_y7.teleport_toggle = false end, 0.5) end zz_y7.tele_func = function() if not zz_y7.is_others then _PlayerActiveSkillLogic:DoActiveSkill(2201002 , false) end end zz_y7.drive_func = function () if zz_y7.is_others then if zz_y7.need_reset then zz_y7.reset_mob_func() zz_y7.need_reset = false end return end -- local output = {} --> BoxShape(vec2, vec2, angle) --> TryDoingMeleeAttack(self, user, skillId, skillLevel, output, lastFinalAttack) --> OverlapAllFast(CollisionGroup, Shape, output) local box = BoxShape(Vector2(0.0, 0.0), Vector2(100.0, 100.0), 0) --> i think 0 still god cuzof size local simulator = _CollisionService:GetSimulator(_UserService.LocalPlayer.WsCharacterData.Entity) --> if not working, lets put map's one local temp = {} local output = {} local output2 = {} local hit = simulator:OverlapAllFast(CollisionGroups.MapleMob, box, temp) local count = zz_y7.filter_only_live_mobs(hit, temp, output) if count == 0 then zz_y7.no_mob = true -- return else zz_y7.no_mob = false; end for i,v in ipairs(output) do local moveAbility = v.Entity.MobComponent:GetMoveAbility() if moveAbility == _MoveAbility.Fly then zz_y7.fly_dupe(v.Entity) elseif moveAbility == _MoveAbility.Jump or moveAbility == _MoveAbility.Walk then zz_y7.jump_dupe(v.Entity) end end zz_y7.need_reset = true end zz_y7.reset_mob_func = function () -- local output = {} --> BoxShape(vec2, vec2, angle) --> TryDoingMeleeAttack(self, user, skillId, skillLevel, output, lastFinalAttack) --> OverlapAllFast(CollisionGroup, Shape, output) local box = BoxShape(Vector2(0.0, 0.0), Vector2(100.0, 100.0), 0) --> i think 0 still god cuzof size local simulator = _CollisionService:GetSimulator(_UserService.LocalPlayer.WsCharacterData.Entity) --> if not working, lets put map's one local temp = {} local output = {} local output2 = {} local hit = simulator:OverlapAllFast(CollisionGroups.MapleMob, box, temp) local count = zz_y7.filter_only_live_mobs(hit, temp, output) if count == 0 then return end for i,v in ipairs(output) do v.Entity.MobAIComponent:SetControlling(true) end end zz_y7.fly_dupe = function(mob) local hitByLeft = false local knockbackType = 1 local kb = mob.MobKnockbackComponent local ai = mob.MobAIComponent local rb = mob.MobRigidbodyComponent local map = mob.CurrentMap local boundLt, boundRb = map.MapComponent:GetBound() local minX = boundLt.x + 0.1 local maxX = boundRb.x - 0.1 local mobPos = mob.TransformComponent.WorldPosition:ToVector2() local sqrt = math.sqrt local elapse = 0 local knockbackMoveEnd local interruptedEnd if (knockbackType == 2) then knockbackMoveEnd = 0.5 interruptedEnd = 0.7 else knockbackMoveEnd = 0.1 interruptedEnd = 0.5 end local timelines = {} local timelineIndex = 0 local currentX = mobPos.x local currentY = mobPos.y local function makeDistance(x1, y1, x2, y2) return sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)) end kb:SetShoeAttr(knockbackType) local knockbackSpeed = rb.WalkSpeed * _Physics.FlySpeed / 1 ---@param destX number ---@param destY number ---@param floating boolean ---@return number local function makeFlyCommand(cmd, destX, destY, floating) local distance = makeDistance(currentX, currentY, destX, destY) currentX = destX currentY = destY local duration = distance / knockbackSpeed timelines[timelineIndex + 1] = {cmd, {destX, destY, duration, floating}, 0} timelineIndex += 1 return duration end local function makeCommand(cmd, value, nextTime) timelines[timelineIndex + 1] = {cmd, value, nextTime} timelineIndex += 1 end local inputX = 1 if (hitByLeft) then inputX = -1 end -- makeCommand(_MobActionPartType.HitMotion, 1, 0) local knockbackDestX = mobPos.x local delta = knockbackSpeed * knockbackMoveEnd if (inputX < 0) then knockbackDestX = math.max(minX, mobPos.x - delta) else knockbackDestX = math.min(maxX, _UserService.LocalPlayer.TransformComponent.WorldPosition.x + 0.8) end if (mobPos.x ~= knockbackDestX) then mobPos.y += 0.02 -- makeCommand(_MobActionPartType.KnockbackPos, mobPos, 0) makeFlyCommand(_MobActionPartType.KnockbackFly, knockbackDestX, _UserService.LocalPlayer.TransformComponent.WorldPosition.y , false) end -- makeCommand(_MobActionPartType.HitMotion, 0, interruptedEnd) if (timelineIndex > 0) then map.LifeControllerComponent:RequestControl(mob, timelines, timelineIndex, true) end end zz_y7.jump_dupe = function(mob) local ai = mob.MobAIComponent local kb = mob.MobKnockbackComponent local rb = mob.MobRigidbodyComponent if (not isvalid(rb)) then if (isvalid(ai)) then -- ai:EnableNextControlTimer(0.1) end return end if (not mob.Visible) then -- ai:EnableNextControlTimer(0.1) return end local fh = rb.LastFoothold if (fh == 0) then --log("last foothold is 0") -- ai:EnableNextControlTimer(0.1) return end local now = _UtilLogic.ServerElapsedSeconds -- if (now < ai.NextActionTime) then -- -- ai:EnableNextControlTimer(math.max(ai.NextActionTime - now, 0) + 0.1) -- return -- end local target = _UserService.LocalPlayer local nextAction = 0 local newInputX = nil local mobX = mob.TransformComponent.WorldPosition.x if (isvalid(target) and ai.LocalUnchaseTick < 7) then if (ai.AttackWasLast) then nextAction = _GlobalRand32:RandomIntegerRange(100, 110) / 1000 ai.AttackWasLast = false else nextAction = _GlobalRand32:RandomIntegerRange(100, 110) / 1000 end local targetX = target.TransformComponent.WorldPosition.x if math.abs(targetX - mobX) > 6 then if targetX > mobX then -- newInputX = 3 newInputX = 1.2 else -- newInputX = -3 newInputX = -1.2 end else newInputX = math.max(targetX - mobX + 1.2, -1.2) end else nextAction = (_GlobalRand32:RandomIntegerRange(200, 210) / 1000) newInputX = _UserService.LocalPlayer.TransformComponent.WorldPosition.x - mobX + 1.2 end local platforms = mob.CurrentMap.PlatformInfoComponent local timelines = {} local timelineIndex = 0 --log("platform left x (fh=%d)", platform.left.x, platform.left.foothold.Id) --log("platform right x (fh=%d)", platform.right.x, platform.right.foothold.Id) local lastTimeline = 0 -- local playerFh = _UserService.LocalPlayer.WsUserController.LastFoothold -- if (playerFh == 0 or platforms.ZMass[playerFh] ~= ai.LocalStartChaseZMass) then -- ai.LocalUnchaseTick += 1 -- ai:IncUnTick() -- end local function makeCommand(cmd, value, timeline, nextActionTime) timelines[timelineIndex + 1] = {cmd, value, timeline - lastTimeline, nextActionTime} timelineIndex += 1 lastTimeline = timeline end local targetX = _UserService.LocalPlayer.TransformComponent.WorldPosition.x local targetY = _UserService.LocalPlayer.TransformComponent.WorldPosition.y local mobY = mob.TransformComponent.WorldPosition.y local gapX = math.abs(mobX - targetX) local gapY = math.abs(mobY - targetY) if gapX > 3 then makeCommand(_MobActionPartType.Move, newInputX, 0, nextAction) makeCommand(_MobActionPartType.Jump, 0.7, 0) elseif gapY > 1.5 then makeCommand(_MobActionPartType.Move, newInputX, 0, nextAction) makeCommand(_MobActionPartType.Jump, -0.7, 0) elseif gapX < 1.3 and targetX < mobX then makeCommand(_MobActionPartType.Move, 0, 0, nextAction) else makeCommand(_MobActionPartType.Move, newInputX, 0, nextAction) end kb:SetShoeAttr(0) if (timelineIndex > 0) then mob.CurrentMap.LifeControllerComponent:RequestControl(mob, timelines, timelineIndex, false) end end ---------------- 31107 ---------------- if (Environment:IsMakerPlay()) then self.DebugCommands = { ["impact"] = _CommandLogic_Client_Debug.Impact } end end
미안;: 컴터로 스크립트 전달하고 나와서 폰으로 복붙하니까 이따구네..
내기준 오른쪽 놓이는거고, 멀리있는애는 빨리 오고 가까우면 걸어온다. 좌표는 전붕이 기준이라 좀 가까움 <<수정하셈
| 제목 | 작성자 | 작성일 | 조회 | |
|---|---|---|---|---|
| 공지 | 게시판 이용 안내+156 | 10-20 | 22108 | |
| 61665 | 08:33 | 79 | ||
| 61664 | 03:59 | 75 | ||
| 61663 | 00:09 | 158 | ||
| 61662 | 11-10 | 131 | ||
| 61661 | 11-10 | 137 | ||
| 61660 | 11-10 | 145 | ||
| 61659 | 11-10 | 177 | ||
| 61658 | 11-10 | 254 | ||
| 61657 | 11-10 | 301 | ||
| 61656 | 11-09 | 353 | ||
| 61655 | 11-09 | 320 | ||
| 61654 | 11-09 | 351 | ||
| 61653 | 11-09 | 391 | ||
| 61652 | 11-09 | 356 | ||
| 61651 | 11-09 | 407 | ||
| 61650 | 11-09 | 463 | ||
| 61649 | 11-09 | 391 | ||
| 61648 | 11-08 | 434 | ||
| 61647 | 11-08 | 450 |
댓글11
?ㅋㅋ
ㅋㅋㅋㅋ 좀만 연구해본애들이면 뭐가 다른지 알고 숫자만 잘 가져갈겨~
싸그리 복사를 했넼ㅋㅋ그냥 func 부분만 올려도 되는걸
ㅋㅋㅋ 나가기직전에 갑자기 채팅와소 그냥 다 긁어서 주고 나옴ㅋㅋㅋ
자동물약됨?
ㄴㄴㅋㅋ 펫있음
저기서 자동물약 스크립 어디 다음에 넣어야하는지 알아여..?
스크립을 봐야 알겠지..?
저도 님꺼랑 같은 스크립입니다
멀리있는 몹 스크립트가 어디쪽인가요 ㅜㅜㅜ 걸어오는애들은 걸어오는데 멀리있는애들은 날아서 맵밖으로 날라감 그냥 ㅜ
혹시 몹 좌표는 어느부분임??