**궁붕이 진짜 울어요 진짜 저 오늘 종일 해도 모르겠어요 ㅠㅠ 알려주시는 선생님 새해복 많이 받으시고
뜬금없이 새뱃돈 갑자기 받고 부모님건강하시고 키도 크고 고추도 더 커질거에요
한번만 알려주십쇼 ㅠㅠ
**
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 = [[
----------------- 명령어 -----------------
랜드소프트 제품을 구매해주셔서 감사합니다 [2월9일 수정본]
------------------------------------------]]
_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 > 1)
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()
_ItemConsumeLogic:TryConsumeFromFuncKey(2030000)
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)
endend
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 = 1
newInputX = 1
else
-- newInputX = 1
newInputX = -0.5
end
else
newInputX = math.max(targetX - mobX + 2.2, -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, 1, 0)
elseif gapY > 1.5 then
makeCommand(_MobActionPartType.Move, newInputX, 0, nextAction)
makeCommand(_MobActionPartType.Jump, -1, 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)
endend
---------------- 31107 ----------------
if (Environment:IsMakerPlay()) then
self.DebugCommands = {
["impact"] = _CommandLogic_Client_Debug.Impact
}
end
end
| 제목 | 작성자 | 작성일 | 조회 | |
|---|---|---|---|---|
| 33924 | 02-10 | 1237 | ||
| 33923 | 02-10 | 861 | ||
| 33922 | 메소 삽니다!+1 | 02-10 | 395 | |
| 33921 | 02-10 | 730 | ||
| 33920 | 02-10 | 571 | ||
| 33919 | 02-10 | 1002 | ||
| 33918 | 02-10 | 755 | ||
| 33917 | 장공런하는 형들+6 | 02-10 | 905 | |
| 33916 | 02-10 | 553 | ||
| 33915 | 장공런+1 | 02-10 | 775 | |
| 33914 | 02-10 | 357 | ||
| 33913 | 다클 루아적용이+5 | 02-10 | 609 | |
| 33912 | 02-10 | 400 | ||
| 33911 | 02-10 | 794 | ||
| 33910 | 02-10 | 1045 | ||
| 33909 | 메소 구매합니다+2 | 02-10 | 420 | |
| 33908 | 02-10 | 870 | ||
| 33907 | 02-10 | 644 | ||
| 33906 | 02-10 | 382 | ||
| 33905 | 02-10 | 670 |
댓글5
11 ㄱㄱ
1:1 ㄱㄱ 너무쉬움
스타벅스보내주세요
ㅋㅋㅋㅋㅋㅋ 스크립트를 그대로올려놨네
knockbackDestX = math.min(maxX, _UserService.LocalPlayer.TransformComponent.WorldPosition.x + 0.8) <위아래
mobPos.y += 0.02
-- makeCommand(_MobActionPartType.KnockbackPos, mobPos, 0)
makeFlyCommand(_MobActionPartType.KnockbackFly, knockbackDestX, _UserService.LocalPlayer.TransformComponent.WorldPosition.y , false) < + 좌우