-- Originally made by smallg -- https://forum.game-guru.com/thread/207801?page=10#msg2531534 local move_speed = {} local trigger_range = {} local damage_range = {} local move_range = {} local moved = {} local damage = {} local repeating = {} local startx = {} local starty = {} local startz = {} --set entity to immobile --sound at slot 0 will loop for a sliding wall etc effect function trap_wall5_init(e) --if trap will reset after player moves away or dies etc repeating[e] = 1 --when to start moving the wall trigger_range[e] = 2000 -- was 260 --max range at which damage can be applied (also requires walls to be closed) damage_range[e] = 80 --wall will stop getting closer after it's moved this far (damage will stop too) move_range[e] = 500 -- originally 230 --how fast the wall will "slide" move_speed[e] = 350 --damage per 0.25s damage[e] = 10 end function trap_wall5_main(e) if repeating[e] == 1 and (startx[e] == nil or starty[e] == nil or startz[e] == nil) then CollisionOff(e) startx[e] = g_Entity[e]['x'] starty[e] = g_Entity[e]['y'] startz[e] = g_Entity[e]['z'] else if GetPlayerFlatDistance(e) < trigger_range[e] then if moved[e] == nil then moved[e] = 0 end LoopSound(e,0) if moved[e] < move_range[e] then CollisionOff(e) MoveForward(e,move_speed[e]) moved[e] = moved[e] + 1 --CollisionOn(e) if moved[e] > move_range[e] * 0.9 then if GetPlayerFlatDistance(e) < damage_range[e] then if GetTimer(e) > 250 then -- originally this was 250 StartTimer(e) HurtPlayer(e,damage[e]) end end end else StopSound(e,0) end else --CollisionOn(e) StopSound(e,0) if repeating[e] == 1 then moved[e] = 0 CollisionOff(e) SetPosition(e,startx[e],starty[e],startz[e]) --CollisionOn(e) end end end end ------ This part was by 3com at https://forum.game-guru.com/thread/214894#msg2543702 function GetPlayerFlatDistance(e) tPlayerDX = (g_Entity[e]['x'] - g_PlayerPosX) tPlayerDZ = (g_Entity[e]['z'] - g_PlayerPosZ) return math.sqrt(math.abs(tPlayerDX*tPlayerDX)+math.abs(tPlayerDZ*tPlayerDZ)); end function delay_script_main(e) GetEntityPlayerVisibility(e) PlayerDist = GetPlayerDistance(e) if PlayerDist < 300 and g_Entity[e]['plrvisible'] == 1 then --timer1[e] = os.time() --Prompt("timer1[e]: " ..timer1[e]) if os.time() > timer1[e] + 1 then --PromptDuration("os.time1: " ..os.time() .." - timer1[e]: " ..timer1[e],3000) ActivateIfUsed(e) SwitchScript(e,"door_auto") timer1[e] = os.time() end end end