SHINE Menu Version 1.2 Features
SHINE Menu Version 1.2 Features
2
CurrentHexColor = "#AA00AA"
ThemeR = 170
ThemeG = 0
ThemeB = 170
outputChatBox(""..CurrentHexColor.."[SHINE]:#FFFFFF SHINE Has Been Loaded
Successfully.",255,255,255,true)
outputChatBox(""..CurrentHexColor.."[SHINE]:#FFFFFF Current Version:
#CCCCCC1.2",255,255,255,true)
guiSetInputMode("no_binds_when_editing")
Main = guiCreateWindow(0.28, 0.29, 0.44, 0.43, "SHINE MENU - 1.2", true)
guiSetVisible(Main,false)
guiSetProperty(Main, "AlwaysOnTop", "True")
guiWindowSetSizable(Main, false)
guiSetProperty(Main, "CaptionColour", "FFAA00AA")
TAB = guiCreateTabPanel(0.02, 0.08, 0.97, 0.89, true, Main)
guiSetAlpha(TAB, 0.80)
PlayerTab = guiCreateTab("PLAYER", TAB)
Wallhack = guiCreateButton(0.02, 0.43, 0.31, 0.15, "Enable/Disable Wallhack", true,
PlayerTab)
guiSetFont(Wallhack, "default-bold-small")
guiSetProperty(Wallhack, "NormalTextColour", "FFAA00AA")
KillMe = guiCreateButton(0.68, 0.43, 0.15, 0.15, "Kill Yourself", true, PlayerTab)
guiSetFont(KillMe, "default-bold-small")
guiSetProperty(KillMe, "NormalTextColour", "FFAA00AA")
Jetpack = guiCreateButton(0.34, 0.43, 0.31, 0.15, "Give/Take Jetpack", true,
PlayerTab)
guiSetFont(Jetpack, "default-bold-small")
guiSetProperty(Jetpack, "NormalTextColour", "FFAA00AA")
NoClip = guiCreateButton(0.02, 0.61, 0.31, 0.15, "No Clip", true, PlayerTab)
guiSetFont(NoClip, "default-bold-small")
guiSetProperty(NoClip, "NormalTextColour", "FFAA00AA")
TpPlayer = guiCreateButton(0.68, 0.61, 0.31, 0.15, "Teleport Player", true,
PlayerTab)
guiSetFont(TpPlayer, "default-bold-small")
guiSetProperty(TpPlayer, "NormalTextColour", "FFAA00AA")
MaxArmor = guiCreateButton(0.34, 0.81, 0.31, 0.15, "Max Armor", true, PlayerTab)
guiSetFont(MaxArmor, "default-bold-small")
guiSetProperty(MaxArmor, "NormalTextColour", "FFAA00AA")
Revive = guiCreateButton(0.68, 0.81, 0.31, 0.15, "Revive", true, PlayerTab)
guiSetFont(Revive, "default-bold-small")
guiSetProperty(Revive, "NormalTextColour", "FFAA00AA")
SpecPlayer = guiCreateButton(0.02, 0.24, 0.31, 0.15, "Spectate Player", true,
PlayerTab)
guiSetFont(SpecPlayer, "default-bold-small")
guiSetProperty(SpecPlayer, "NormalTextColour", "FFAA00AA")
GameSpeedButton = guiCreateButton(0.34, 0.24, 0.31, 0.15, "Game Speed", true,
PlayerTab)
guiSetFont(GameSpeedButton, "default-bold-small")
guiSetProperty(GameSpeedButton, "NormalTextColour", "FFAA00AA")
Freeze = guiCreateButton(0.68, 0.24, 0.31, 0.15, "Unfreeze/Freeze", true,
PlayerTab)
guiSetFont(Freeze, "default-bold-small")
guiSetProperty(Freeze, "NormalTextColour", "FFAA00AA")
FireMe = guiCreateButton(0.84, 0.43, 0.15, 0.15, "Fire Yourself", true, PlayerTab)
guiSetFont(FireMe, "default-bold-small")
guiSetProperty(FireMe, "NormalTextColour", "FFAA00AA")
VehFly = guiCreateButton(0.34, 0.61, 0.15, 0.15, "Vehicle Fly", true, PlayerTab)
guiSetFont(VehFly, "default-bold-small")
guiSetProperty(VehFly, "NormalTextColour", "FFAA00AA")
VehicleFire = guiCreateButton(0.50, 0.61, 0.15, 0.15, "Fire Vehicle", true,
PlayerTab)
guiSetFont(VehicleFire, "default-bold-small")
guiSetProperty(VehicleFire, "NormalTextColour", "FFAA00AA")
TargetNameLabel = guiCreateLabel(0.02, 0.04, 0.21, 0.17, "Input Target Name:",
true, PlayerTab)
guiSetFont(TargetNameLabel, "default-bold-small")
guiLabelSetColor(TargetNameLabel, 170, 0, 170)
guiLabelSetHorizontalAlign(TargetNameLabel, "center", false)
guiLabelSetVerticalAlign(TargetNameLabel, "center")
TargetName = guiCreateEdit(0.24, 0.06, 0.26, 0.13, "", true, PlayerTab)
guiSetProperty(TargetName, "NormalTextColour", "FFAA00AA")
GameSpeedLabel = guiCreateLabel(0.51, 0.04, 0.21, 0.17, "Input Game Speed:", true,
PlayerTab)
guiSetFont(GameSpeedLabel, "default-bold-small")
guiLabelSetColor(GameSpeedLabel, 170, 0, 170)
guiLabelSetHorizontalAlign(GameSpeedLabel, "center", false)
guiLabelSetVerticalAlign(GameSpeedLabel, "center")
GameSpeed = guiCreateEdit(0.73, 0.06, 0.26, 0.13, "", true, PlayerTab)
guiSetProperty(GameSpeed, "NormalTextColour", "FFAA00AA")
MaxHP = guiCreateButton(0.02, 0.81, 0.15, 0.15, "Max HP", true, PlayerTab)
guiSetFont(MaxHP, "default-bold-small")
guiSetProperty(MaxHP, "NormalTextColour", "FFAA00AA")
GM = guiCreateButton(0.18, 0.81, 0.15, 0.15, "Godmode", true, PlayerTab)
guiSetFont(GM, "default-bold-small")
guiSetProperty(GM, "NormalTextColour", "FFAA00AA")
PanelThemes = {
[1] = {"Purple",170,0,170,"FFAA00AA","#AA00AA"},
[2] = {"Red",255,0,0,"FFFF0000","#FF0000"},
[3] = {"Green",0,255,0,"FF00FF00","#00FF00"},
[4] = {"Blue",0,0,255,"FF0000FF","#0000FF"},
[5] = {"White",255,255,255,"FFFFFFFF","#FFFFFF"},
[6] = {"Orange",255,165,40,"FFFFA528","#FFA500"},
[7] = {"Yellow",255,255,0,"FFFFFF00","#FFFF00"},
}
for LoadThemes=1,#PanelThemes do
guiComboBoxAddItem(ThemeCombo,PanelThemes[LoadThemes][1])
addEventHandler("onClientGUIClick",getRootElement(),function()
if source == ThemeSet and guiComboBoxGetSelected(ThemeCombo) ~= -1 then
ThemeID = guiComboBoxGetSelected(ThemeCombo) + 1
refreshThemeMenu(PanelThemes[ThemeID][2],PanelThemes[ThemeID]
[3],PanelThemes[ThemeID][4],PanelThemes[ThemeID][5],PanelThemes[ThemeID][6])
end
end)
end
function refreshThemeMenu(R,G,B,StringCode,HexColorCode)
ThemeR = tonumber(R)
ThemeG = tonumber(G)
ThemeB = tonumber(B)
guiSetProperty(Main, "CaptionColour", tostring(StringCode))
guiSetProperty(Wallhack, "NormalTextColour", tostring(StringCode))
guiSetProperty(KillMe, "NormalTextColour", tostring(StringCode))
guiSetProperty(Jetpack, "NormalTextColour", tostring(StringCode))
guiSetProperty(NoClip, "NormalTextColour", tostring(StringCode))
guiSetProperty(TpPlayer, "NormalTextColour", tostring(StringCode))
guiSetProperty(MaxArmor, "NormalTextColour", tostring(StringCode))
guiSetProperty(Revive, "NormalTextColour", tostring(StringCode))
guiSetProperty(SpecPlayer, "NormalTextColour", tostring(StringCode))
guiSetProperty(GameSpeedButton, "NormalTextColour", tostring(StringCode))
guiSetProperty(Freeze, "NormalTextColour", tostring(StringCode))
guiSetProperty(FireMe, "NormalTextColour", tostring(StringCode))
guiSetProperty(VehFly, "NormalTextColour", tostring(StringCode))
guiSetProperty(VehicleFire, "NormalTextColour", tostring(StringCode))
guiSetProperty(TargetName, "NormalTextColour", tostring(StringCode))
guiSetProperty(GameSpeed, "NormalTextColour", tostring(StringCode))
guiSetProperty(MaxHP, "NormalTextColour", tostring(StringCode))
guiSetProperty(GM, "NormalTextColour", tostring(StringCode))
guiSetProperty(TargetNameTroll, "NormalTextColour", tostring(StringCode))
guiSetProperty(BombClick, "NormalTextColour", tostring(StringCode))
guiSetProperty(ExplodePlayers, "NormalTextColour", tostring(StringCode))
guiSetProperty(ExplodeVehicles, "NormalTextColour", tostring(StringCode))
guiSetProperty(ExplodeAPlayer, "NormalTextColour", tostring(StringCode))
guiSetProperty(StartVehicleEngine, "NormalTextColour", tostring(StringCode))
guiSetProperty(FreecamPlayer, "NormalTextColour", tostring(StringCode))
guiSetProperty(FreecamPlayer, "NormalTextColour", tostring(StringCode))
guiSetProperty(UnlockVeh, "NormalTextColour", tostring(StringCode))
guiSetProperty(UnlockVeh, "NormalTextColour", tostring(StringCode))
guiSetProperty(FixVehicle, "NormalTextColour", tostring(StringCode))
guiSetProperty(AddNitro, "NormalTextColour", tostring(StringCode))
guiSetProperty(SOON, "NormalTextColour", tostring(StringCode))
guiSetProperty(ExecuteButton, "NormalTextColour", tostring(StringCode))
guiSetProperty(ShowData, "NormalTextColour", tostring(StringCode))
guiSetProperty(ShowDataTarget, "NormalTextColour", tostring(StringCode))
guiSetProperty(ShowDebugHook, "NormalTextColour", tostring(StringCode))
guiSetProperty(Keybind, "NormalTextColour", tostring(StringCode))
guiSetProperty(ThemeSet, "NormalTextColour", tostring(StringCode))
guiLabelSetColor(TargetNameLabel, tonumber(R),tonumber(G),tonumber(B))
guiLabelSetColor(GameSpeedLabel, tonumber(R),tonumber(G),tonumber(B))
guiLabelSetColor(TargetNameLabelTroll, tonumber(R),tonumber(G),tonumber(B))
guiLabelSetColor(KeybindLabel, tonumber(R),tonumber(G),tonumber(B))
guiLabelSetColor(InfoDevelopers, tonumber(R),tonumber(G),tonumber(B))
guiLabelSetColor(InfoDevelopersDiscord, tonumber(R),tonumber(G),tonumber(B))
CurrentHexColor = tostring(HexColorCode)
end
WallDistance = 150
IsWallHackON = false
IsVehFly = false
Godmode = false
IsProjectileEnabled = false
IsShineFreecamEnabled = false
InKeybindMode = false
function RGBToHex(r, g, b)
return [Link]("#%02x%02x%02x",
[Link](r),
[Link](g),
[Link](b))
end
WallHack = {}
[Link] = {
[8] = {
[4] = {
[22] = {
[23] = {
[24] = false,
},
},
[32] = {
[33] = {
[34] = false,
},
},
[3] = {
[2] = {
[1] = {
[51] = {
[52] = {
[53] = {
[54] = false,
},
},
},
[41] = {
[42] = {
[43] = {
[44] = false,
},
},
},
},
},
},
},
},
}
[Link] = function()
local x1, y1, z1 = getCameraMatrix()
for _, player in pairs(getElementsByType("player")) do
local x, y, z = getElementPosition(player)
local dist = getDistanceBetweenPoints3D(x1, y1, z1, x, y, z)
if (dist <= WallDistance) then
local scx, scy = getScreenFromWorldPosition(x, y, z, 0.02)
if (scx and scy) then
for boneId, boneRelation in pairs([Link]) do
[Link](player, dist)
[Link](player, boneId, boneRelation, dist)
end
end
end
end
end
[Link] = function(player, dist)
local headX, headY, headZ = getPedBonePosition(player, 8)
headZ = headZ + 0.5
local scrHeadX, scrHeadY = getScreenFromWorldPosition(headX, headY, headZ,
0.02)
if (scrHeadX and scrHeadY) then
local PosX,PosY,PosZ = getElementPosition(localPlayer)
local name = getPlayerName(player)
local id = getElementData(player,"ID") or "Unknown"
local health = getElementHealth(player)
local armor = getPedArmor(player)
local healthR, healthG, healthB = interpolateBetween(255, 89, 89, 125, 197,
118, (health / 100), "Linear")
local armorR, armorG, armorB = interpolateBetween(180, 180, 180, 50, 179,
239, (armor / 100), "Linear")
local text = name .. " "..CurrentHexColor.."[" .. id .. "]" .. "\
n" ..RGBToHex(healthR, healthG, healthB) .. "[" .. [Link](health) .. "%" .. "]
" ..RGBToHex(armorR, armorG, armorB) .. "[" .. [Link](armor) .. "%" .. "]"
local scale = interpolateBetween(1.3, 0, 0, 0.1, 0, 0, (dist /
WallDistance), "Linear")
dxDrawText(text:gsub("#%x%x%x%x%x%x", ""), scrHeadX + 1, scrHeadY + 1,
scrHeadX + 1, scrHeadY + 1, tocolor(0, 0, 0, 255), scale, "default-bold", "center",
"bottom", false, false, true, true)
dxDrawText(text, scrHeadX, scrHeadY, scrHeadX, scrHeadY, tocolor(255, 255,
255, 255), scale, "default-bold", "center", "bottom", false, false, true, true)
dxDrawLine3D(PosX,PosY,PosZ,PosX2,PosY2,PosZ2,tocolor(ThemeR,ThemeG,ThemeB),2.0,
true)
end
end
[Link] = function(player, _boneId, _boneRelation, dist)
if (not (player and _boneId and _boneRelation)) then
return
end
Fly = {}
[Link] = false
[Link] = {
["lshift"] = 4,
["lalt"] = 0.25,
}
[Link] = function(delta)
if (isChatBoxInputActive() or isConsoleActive()) then return end
local x, y, z = getElementPosition(localPlayer)
local camX, camY, camZ, camTX, camTY, camTZ = getCameraMatrix()
camTX, camTY = camTX - camX, camTY - camY
if (getKeyState("w")) then
x, y = x + camTX, y + camTY
setElementPosition(localPlayer, x, y, z)
setElementRotation(localPlayer, 0, 0, rotationFromCamera(0))
end
if (getKeyState("s")) then
x, y = x - camTX, y - camTY
setElementPosition(localPlayer, x, y, z)
setElementRotation(localPlayer, 0, 0, rotationFromCamera(180))
end
if (getKeyState("a")) then
x, y = x - camTY, y + camTX
setElementPosition(localPlayer, x, y, z)
setElementRotation(localPlayer, 0, 0, rotationFromCamera(270))
end
if (getKeyState("d")) then
x, y = x + camTY, y - camTX
setElementPosition(localPlayer, x, y, z)
setElementRotation(localPlayer, 0, 0, rotationFromCamera(90))
end
if (getKeyState("space")) then
z = z + delta
setElementPosition(localPlayer, x, y, z)
end
if (getKeyState("lctrl")) then
z = z - delta
setElementPosition(localPlayer, x, y, z)
end
end
function rotationFromCamera(offset)
local camX, camY, _, camTX, camTY = getCameraMatrix()
local deltaX, deltaY = camTX - camX, camTY - camY
local rotZ = [Link]([Link](deltaY / deltaX))
if ((deltaY >= 0 and deltaX <= 0) or (deltaY <= 0 and deltaX <= 0)) then
rotZ = rotZ + 180
end
return -rotZ + 90 + offset
end
function changeKeybind(button,press)
if InKeybindMode then
if (press) then
if button ~= "mouse1" then
InKeybindMode = false
unbindKey(tostring(guiGetText(Keybind)),"down",ShowOrHideShine)
guiSetAlpha(Keybind,1.0)
guiSetText(Keybind,tostring(button))
bindKey(tostring(guiGetText(Keybind)),"down",ShowOrHideShine)
end
end
end
end
addEventHandler("onClientKey",root,changeKeybind)
setElementPosition(localPlayer,getElementPosition(getPlayerFromName(tostring(guiGet
Text(TargetName)))))
setElementInterior(localPlayer,getElementInterior(getPlayerFromName(tostring(guiGet
Text(TargetName)))))
setElementDimension(localPlayer,getElementDimension(getPlayerFromName(tostring(guiG
etText(TargetName)))))
outputChatBox(""..CurrentHexColor.."[SHINE]:#FFFFFF Teleported To
"..tostring(getPlayerName(getPlayerFromName(tostring(guiGetText(TargetName)))))..".
",255,255,255,true)
else
outputChatBox(""..CurrentHexColor.."[SHINE]:#FFFFFF Player Not
Found.",255,255,255,true)
end
elseif source == MaxHP then
setElementHealth(localPlayer,100)
elseif source == GM then
Godmode = not Godmode
outputChatBox(""..CurrentHexColor.."[SHINE]:#FFFFFF Fly Is Now " ..(Godmode
and "ON" or "OFF")..".",255,255,255,true)
if Godmode == false then
setPedArmor(localPlayer,0)
end
elseif source == MaxArmor then
setPedArmor(localPlayer,100)
elseif source == Revive then
setElementHealth(localPlayer,100)
setCameraTarget(localPlayer)
if isElementFrozen(localPlayer) then
setElementFrozen(localPlayer,false)
end
toggleAllControls(localPlayer,true)
setGameSpeed(1)
outputChatBox(""..CurrentHexColor.."[SHINE]:#FFFFFF
Revived.",255,255,255,true)
elseif source == BombClick then
IsProjectileEnabled = not IsProjectileEnabled
outputChatBox(""..CurrentHexColor.."[SHINE]:#FFFFFF Bomb Click Is Now " ..
(IsProjectileEnabled and "ON" or "OFF")..".",255,255,255,true)
elseif source == ExplodePlayers then
for Index, Players in ipairs(getElementsByType("player")) do
if Players ~= localPlayer then
x,y,z = getElementPosition(Players)
createProjectile(localPlayer, 20, x, y, z, nil, Players)
end
end
elseif source == ExplodeVehicles then
for Index, Vehicles in ipairs(getElementsByType("vehicle")) do
if isPedInVehicle(localPlayer) then
if Vehicles ~= getPedOccupiedVehicle(localPlayer) then
blowVehicle(Vehicles,true)
end
else
blowVehicle(Vehicles,true)
end
end
elseif source == ExplodeAPlayer then
if getPlayerFromName(tostring(guiGetText(TargetNameTroll))) then
x,y,z =
getElementPosition(getPlayerFromName(tostring(guiGetText(TargetNameTroll))))
createProjectile(localPlayer, 20, x, y, z, nil,
getPlayerFromName(tostring(guiGetText(TargetNameTroll))))
outputChatBox(""..CurrentHexColor.."[SHINE]:#FFFFFF
"..tostring(getPlayerName(getPlayerFromName(tostring(guiGetText(TargetNameTroll))))
).." Fucked Up.",255,255,255,true)
else
outputChatBox(""..CurrentHexColor.."[SHINE]:#FFFFFF Player Not
Found.",255,255,255,true)
end
elseif source == UnlockVeh then
for Index, Vehicles in ipairs(getElementsByType("vehicle")) do
setVehicleLocked(Vehicles,false)
end
elseif source == FixVehicle then
if isPedInVehicle(localPlayer) then
fixVehicle(getPedOccupiedVehicle(localPlayer))
end
elseif source == AddNitro then
addVehicleUpgrade(getPedOccupiedVehicle(localPlayer),1010)
elseif source == ShowData then
outputChatBox("================================================",255,255,255,true)
local data = getAllElementData(localPlayer)
for k, v in pairs(data) do
outputChatBox(""..CurrentHexColor.."[SHINE]:#FFFFFF "..k..":
"..tostring(v),255,255,255,true)
end
outputChatBox("================================================",255,255,255,true)
elseif source == ShowDataTarget then
if getPlayerFromName(tostring(guiGetText(TargetNameExecutor))) then
outputChatBox("================================================",255,255,255,true)
local data =
getAllElementData(getPlayerFromName(tostring(guiGetText(TargetNameExecutor))))
for k, v in pairs(data) do
outputChatBox(""..CurrentHexColor.."[SHINE]:#FFFFFF "..k..":
"..tostring(v),255,255,255,true)
end
outputChatBox("================================================",255,255,255,true)
else
outputChatBox(""..CurrentHexColor.."[SHINE]:#FFFFFF Player Not
Found.",255,255,255,true)
end
elseif source == ShowDebugHook then
IsShowDebugHook = not IsShowDebugHook
outputChatBox(""..CurrentHexColor.."[SHINE]:#FFFFFF DebugHook Is Now " ..
(IsShowDebugHook and "ON" or "OFF")..".",255,255,255,true)
elseif source == ExecuteButton then
local LuaScript = guiGetText(LuaCode)
local ExecuteCode = loadstring(LuaScript)
ExecuteCode()
outputChatBox(""..CurrentHexColor.."[SHINE]:#FFFFFF Lua Script
Injected.",255,255,255,true)
elseif source == StartVehicleEngine then
if isPedInVehicle(localPlayer) then
setVehicleEngineState(getPedOccupiedVehicle(localPlayer),true)
end
elseif source == FreecamPlayer then
if IsShineFreecamEnabled then
setFreecamDisabled()
IsShineFreecamEnabled = false
else
setFreecamEnabled()
IsShineFreecamEnabled = true
end
setElementFrozen(localPlayer,IsShineFreecamEnabled)
outputChatBox(""..CurrentHexColor.."[SHINE]:#FFFFFF Freecam Is Now " ..
(IsShineFreecamEnabled and "ON" or "OFF")..".",255,255,255,true)
elseif source == Keybind then
if not InKeybindMode then
InKeybindMode = true
guiSetAlpha(Keybind,0.5)
end
else
if InKeybindMode then
InKeybindMode = false
guiSetAlpha(Keybind,1.0)
end
end
end)
function changeWallhackDistance(Cmd,Distance)
if tonumber(Distance) then
outputChatBox(""..CurrentHexColor.."[SHINE]:#FFFFFF Your Wallhack Distance
Changed To: "..Distance..".",255,255,255,true)
WallDistance = tonumber(Distance)
else
outputChatBox(""..CurrentHexColor.."[SHINE]:#FFFFFF Please Input a Valid
Number.",255,255,255,true)
end
end
addCommandHandler("walldistance",changeWallhackDistance,false,false)
addEventHandler("onClientRender", root,
function()
if Godmode == true then
setPedArmor(localPlayer,1)
end
end)
function godmodeFunction(attacker, weapon, bodypart)
if Godmode == true then
cancelEvent()
end
end
addEventHandler("onClientPlayerDamage", localPlayer, godmodeFunction)
addDebugHook("preFunction", function(sourceResource, functionName, isAllowedByACL,
luaFilename, luaLineNumber, ...)
if IsShowDebugHook then
local args = {...}
outputChatBox(""..CurrentHexColor.."[SHINE-DEBUG]:#FFFFFF
"..inspect(args).."",255,255,255,true)
end
end, {"triggerServerEvent"})
function ShowOrHideShine()
guiSetVisible(Main, not guiGetVisible(Main))
showCursor(guiGetVisible(Main))
end
bindKey(tostring(guiGetText(Keybind)),"down",ShowOrHideShine)
local speed = 0
local strafespeed = 0
local rotX, rotY = 0,0
local velocityX, velocityY, velocityZ
local options = {
invertMouseLook = false,
normalMaxSpeed = 2,
slowMaxSpeed = 0.05,
fastMaxSpeed = 10,
smoothMovement = true,
acceleration = 0.3,
decceleration = 0.15,
mouseSensitivity = 0.05,
maxYAngle = 188,
key_fastMove = "lshift",
key_slowMove = "lalt",
key_forward = "w",
key_backward = "s",
key_left = "a",
key_right = "d"
}
local mouseFrameDelay = 0
if [Link] then
local acceleration = [Link]
local decceleration = [Link]
local speedKeyPressed = false
if getKeyState ( options.key_forward ) then
speed = speed + acceleration
speedKeyPressed = true
end
if getKeyState ( options.key_backward ) then
speed = speed - acceleration
speedKeyPressed = true
end
local strafeSpeedKeyPressed = false
if getKeyState ( options.key_right ) then
if strafespeed > 0 then
strafespeed = 0
end
strafespeed = strafespeed - acceleration / 2
strafeSpeedKeyPressed = true
end
if getKeyState ( options.key_left ) then
if strafespeed < 0 then
strafespeed = 0
end
strafespeed = strafespeed + acceleration / 2
strafeSpeedKeyPressed = true
end
if speedKeyPressed ~= true then
if speed > 0 then
speed = speed - decceleration
elseif speed < 0 then
speed = speed + decceleration
end
end
if strafeSpeedKeyPressed ~= true then
if strafespeed > 0 then
strafespeed = strafespeed - decceleration
elseif strafespeed < 0 then
strafespeed = strafespeed + decceleration
end
end
if speed > -decceleration and speed < decceleration then
speed = 0
elseif speed > mspeed then
speed = mspeed
elseif speed < -mspeed then
speed = -mspeed
end
if strafespeed > -(acceleration / 2) and strafespeed < (acceleration / 2)
then
strafespeed = 0
elseif strafespeed > mspeed then
strafespeed = mspeed
elseif strafespeed < -mspeed then
strafespeed = -mspeed
end
else
speed = 0
strafespeed = 0
if getKeyState ( options.key_forward ) then speed = mspeed end
if getKeyState ( options.key_backward ) then speed = -mspeed end
if getKeyState ( options.key_left ) then strafespeed = mspeed end
if getKeyState ( options.key_right ) then strafespeed = -mspeed end
end
local camAngleX = camPosX - camTargetX
local camAngleY = camPosY - camTargetY
local camAngleZ = 0
local angleLength =
[Link](camAngleX*camAngleX+camAngleY*camAngleY+camAngleZ*camAngleZ)
local camNormalizedAngleX = camAngleX / angleLength
local camNormalizedAngleY = camAngleY / angleLength
local camNormalizedAngleZ = 0
local normalAngleX = 0
local normalAngleY = 0
local normalAngleZ = 1
local normalX = (camNormalizedAngleY * normalAngleZ - camNormalizedAngleZ *
normalAngleY)
local normalY = (camNormalizedAngleZ * normalAngleX - camNormalizedAngleX *
normalAngleZ)
local normalZ = (camNormalizedAngleX * normalAngleY - camNormalizedAngleY *
normalAngleX)
camPosX = camPosX + freeModeAngleX * speed
camPosY = camPosY + freeModeAngleY * speed
camPosZ = camPosZ + freeModeAngleZ * speed
camPosX = camPosX + normalX * strafespeed
camPosY = camPosY + normalY * strafespeed
camPosZ = camPosZ + normalZ * strafespeed
velocityX = (freeModeAngleX * speed) + (normalX * strafespeed)
velocityY = (freeModeAngleY * speed) + (normalY * strafespeed)
velocityZ = (freeModeAngleZ * speed) + (normalZ * strafespeed)
camTargetX = camPosX + freeModeAngleX * 100
camTargetY = camPosY + freeModeAngleY * 100
camTargetZ = camPosZ + freeModeAngleZ * 100
setCameraMatrix ( camPosX, camPosY, camPosZ, camTargetX, camTargetY, camTargetZ
)
end
local PI = [Link]
if rotX > PI then
rotX = rotX - 2 * PI
elseif rotX < -PI then
rotX = rotX + 2 * PI
end
return true
end
function setFreecamDisabled(dontChangeFixedMode)
if removeEventHandler("onClientRender", rootElement, freecamFrame) then
velocityX,velocityY,velocityZ = 0,0,0
speed = 0
strafespeed = 0
SetX,SetY,SetZ = getCameraMatrix()
if isPedInVehicle(localPlayer) then
setElementPosition ( getPedOccupiedVehicle(localPlayer), SetX, SetY,
SetZ )
else
setElementPosition ( localPlayer, SetX, SetY, SetZ )
end
removeEventHandler("onClientCursorMove",rootElement, freecamMouse)
toggleAllControls(true)
if not dontChangeFixedMode then
setCameraTarget( localPlayer )
end
return true
end
return false
end