-- LUA Script - precede every function and global member with lowercase name of script + '_main' local U = require "scriptbank\\utillib" local Q = require "scriptbank\\quatlib" local rad = math.rad local mouse_spr = mouse_spr or CreateSprite( LoadImage( "scriptbank\\images\\mouse_cursor.png" )) function activate_mouse_init(e) ActivateMouse() SetSpriteSize( mouse_spr, 5 ) SetSpriteOffset( mouse_spr, 2.5, 4.2 ) end function activate_mouse_main( e ) local mx, my = g_MouseX, g_MouseY SetSpritePosition( mouse_spr, mx, my ) local px, py, pz = g_PlayerPosX, g_PlayerPosY + 31, g_PlayerPosZ local paX, paY, paZ = rad( g_PlayerAngX ), rad( g_PlayerAngY ), rad( g_PlayerAngZ ) local omx, omy = ( mx - 50 ) / 75, ( my - 50 ) / 125 local quat = Q.FromEuler( paX, paY, paZ ) local qoff = Q.FromEuler( omy, omx, 0 ) quat = Q.Mul( quat, qoff ) paX, paY, paZ = Q.ToEuler( quat ) local rayX, rayY, rayZ = U.Rotate3D ( 0, 0, 3000, paX, paY, paZ ) rayX, rayY, rayZ = px + rayX, py + rayY, pz + rayZ Hide( e ) CollisionOff( e ) local obj = IntersectAll( px, py, pz, rayX, rayY, rayZ, 0 ) if obj ~= 0 then rayX = GetIntersectCollisionX() rayY = GetIntersectCollisionY() rayZ = GetIntersectCollisionZ() PromptLocal( e, 'Hit on ' .. obj ) elseif RayTerrain( px, py, pz, rayX, rayY, rayZ ) == 1 then rayX = GetRayCollisionX() rayY = GetRayCollisionY() rayZ = GetRayCollisionZ() end SetPosition( e, rayX, rayY, rayZ ) CollisionOn( e ) Show( e ) end