karat1
Wiek: 24 Na forum: 3758 dni Posty: 95
Nick w MP: Karatos
Piwa : 4
Witam ot?? posiadam skrypt oraz podmiank? na drabin? rozsuwan? z serwera SAES RPG ale nie wiem dlaczego mi skrypt nie dzia?a Kod: Client --[[
+----------------------------------------------------------------------------
| SAES:RPG v1
| ========================================
| by Mega9
| (c) 2008 vces.net, All rights reserved.
| http://www.vces.net
| ========================================
+-----------------------------------------------------------------------------
| You are not allowed to adapt, copy, redistribute this script.
| You are not allowed to use this script outside servers ran by www.vces.net
+-----------------------------------------------------------------------------
]]--
local teamRestrict = { ["Official Emergency"]=true; ["Emergency"]=true; ["Admins"]=true; ["Desert Eagles"]=true; ["San Andreas Fire Department"]=true; }
local ladderPosition = { pivotX = 0, pivotY = 0, pivotZ = 0; raiseX = 0, raiseY = 0, raiseZ = 0; retracted = true, midExtend = false, fullExtend = false }
-- BETA SYNC; fetch only clients that are streamed in and send them (if ladders were moved) the new ladder position
local function syncLadders()
local firetruckLadder = getPedOccupiedVehicle (localPlayer)
local pivX, pivY, pivZ = getVehicleComponentRotation (firetruckLadder, "ladder_pivot")
local raiX, raiY, raiZ = getVehicleComponentRotation (firetruckLadder, "Ladder_raise")
local isRetracted = getVehicleComponentVisible (firetruckLadder, "Extend_Retracted")
local isMidExtended = getVehicleComponentVisible (firetruckLadder, "#Extend_midextent")
local isFullExtended = getVehicleComponentVisible (firetruckLadder, "#Extend_extended")
if pivX ~= ladderPosition.pivotX or pivY ~= ladderPosition.pivotY or pivZ ~= ladderPosition.pivotZ or raiX ~= ladderPosition.raiseX or raiY ~= ladderPosition.raiseY or raiZ ~= ladderPosition.raiseZ or isRetracted ~= ladderPosition.retracted or isMidExtended ~= ladderPosition.isMidExtended or isFullExtended ~= ladderPosition ~= ladderPosition.isFullExtended then
local streamedClients = {}
for i, p in ipairs (getElementsByType ("player")) do
if p ~= localPlayer then
if isElementStreamedIn (p) then
table.insert (streamedClients, {p})
end
end
end
triggerServerEvent ("SAES:requestLadderSync", localPlayer, streamedClients, firetruckLadder, pivX, pivY, pivZ, raiX, raiY, raiZ, isRetracted, isMidExtended, isFullExtended)
streamedClients = nil
end
end
-- This will extend or retract ladders based on their earlier state
local function extractRetractLadder(button, press)
if button == "num_5" and press == true then
local fireLadder = getPedOccupiedVehicle (localPlayer)
if isPedInVehicle (localPlayer) and getElementModel (fireLadder) == 544 then
local isRetracted = getVehicleComponentVisible (fireLadder, "Extend_Retracted")
local isMidExtended = getVehicleComponentVisible (fireLadder, "#Extend_midextent")
local isFullExtended = getVehicleComponentVisible (fireLadder, "#Extend_extended")
if isRetracted == true and isMidExtended == false and isFullExtended == false then
setVehicleComponentVisible (fireLadder, "Extend_Retracted", false); setVehicleComponentVisible (fireLadder, "#Extend_midextent", true); setVehicleComponentVisible (fireLadder, "#Extend_extended", false)
ladderPosition.retracted = false; ladderPosition.midExtend = true; ladderPosition.fullExtend = false
elseif isRetracted == false and isMidExtended == true and isFullExtended == false then
setVehicleComponentVisible (fireLadder, "Extend_Retracted", false); setVehicleComponentVisible (fireLadder, "#Extend_midextent", false); setVehicleComponentVisible (fireLadder, "#Extend_extended", true)
ladderPosition.retracted = false; ladderPosition.midExtend = false; ladderPosition.fullExtend = true
else
setVehicleComponentVisible (fireLadder, "Extend_Retracted", true); setVehicleComponentVisible (fireLadder, "#Extend_midextent", false); setVehicleComponentVisible (fireLadder, "#Extend_extended", false)
ladderPosition.retracted = true; ladderPosition.midExtend = false; ladderPosition.fullExtend = false
end
end
end
end
-- This handles all the smooth numpad movement
local sx, sy = guiGetScreenSize()
local function manipulateLadder()
local fireLadder = getPedOccupiedVehicle (localPlayer)
if isPedInVehicle (localPlayer) and getElementModel (fireLadder) == 544 then
dxDrawText ("SAES:RPG Ladder Control (BETA)", 0, 0, sx, sy/4.4, tocolor(255,255,255,220), 1.5, "default-bold", "center", "center")
dxDrawText ("Controls: Numpad keys 8,6,2,4 for moving around, 5 to extend", 0, 0, sx, sy/3.8, tocolor(255,255,255,220), 1.5, "default-bold", "center", "center")
if ladderPosition.pivotX and ladderPosition.pivotY and ladderPosition.pivotZ and ladderPosition.raiseX and ladderPosition.raiseY and ladderPosition.raiseZ then
local velx, vely, velz = getElementVelocity (fireLadder)
if velx ~= 0 or vely ~= 0 or velz ~= 0 then return end
local num_8 = getKeyState ("num_8")
local num_6 = getKeyState ("num_6")
local num_2 = getKeyState ("num_2")
local num_4 = getKeyState ("num_4")
-- These will manage the rotation of the ladders left and right
if num_6 == true then
setVehicleComponentRotation (fireLadder, "ladder_pivot", ladderPosition.pivotX, ladderPosition.pivotY, ladderPosition.pivotZ-0.5)
ladderPosition.pivotX, ladderPosition.pivotY, ladderPosition.pivotZ = ladderPosition.pivotX, ladderPosition.pivotY, ladderPosition.pivotZ-0.5
end
if num_4 == true then
setVehicleComponentRotation (fireLadder, "ladder_pivot", ladderPosition.pivotX, ladderPosition.pivotY, ladderPosition.pivotZ+0.5)
ladderPosition.pivotX, ladderPosition.pivotY, ladderPosition.pivotZ = ladderPosition.pivotX, ladderPosition.pivotY, ladderPosition.pivotZ+0.5
end
-- These will manage the rotation of the ladders up and down
if num_2 == true then
-- this check will prevent unrealistic movement beyond the clutch point
if ladderPosition.raiseX + 0.5 < 70 then
setVehicleComponentRotation (fireLadder, "Ladder_raise", ladderPosition.raiseX+0.5, ladderPosition.raiseY, ladderPosition.raiseZ)
ladderPosition.raiseX, ladderPosition.raiseY, ladderPosition.raiseZ = ladderPosition.raiseX+0.5, ladderPosition.raiseY, ladderPosition.raiseZ
end
end
if num_8 == true then
-- this check will prevent unrealistic movement beyond the clutch point
if ladderPosition.raiseX - 0.5 > 0 then
setVehicleComponentRotation (fireLadder, "Ladder_raise", ladderPosition.raiseX-0.5, ladderPosition.raiseY, ladderPosition.raiseZ)
ladderPosition.raiseX, ladderPosition.raiseY, ladderPosition.raiseZ = ladderPosition.raiseX-0.5, ladderPosition.raiseY, ladderPosition.raiseZ
end
end
end
-- If the client is no longer in the vehicle, remove all events and reset controls
else
removeEventHandler ("onClientRender", root, manipulateLadder)
ladderManipulator = nil
removeEventHandler ("onClientKey", root, extractRetractLadder)
retractManipulator = nil
if isTimer (ladderSync) then killTimer (ladderSync) ladderSync = nil end
-- Re-enable special controls
toggleControl ("special_control_left", true)
toggleControl ("special_control_right", true)
toggleControl ("special_control_down", true)
toggleControl ("special_control_up", true)
end
end
local function initializeLadder (player, seat)
if getElementType(player)~="player" then return end
local team = getPlayerTeam (player)
if getElementModel (source) == 544 and seat == 1 and player == localPlayer and team and teamRestrict[getTeamName(team)] then
-- update ladder position
ladderPosition.pivotX, ladderPosition.pivotY, ladderPosition.pivotZ = getVehicleComponentRotation (source, "ladder_pivot")
ladderPosition.raiseX, ladderPosition.raiseY, ladderPosition.raiseZ = getVehicleComponentRotation (source, "Ladder_raise")
ladderPosition.retracted = getVehicleComponentVisible (source, "Extend_Retracted")
ladderPosition.midExtend = getVehicleComponentVisible (source, "#Extend_midextent")
ladderPosition.fullExtend = getVehicleComponentVisible (source, "#Extend_extended")
-- Add the handlers and syncing stuff
if not ladderManipulator then
ladderManipulator = addEventHandler ("onClientRender", root, manipulateLadder)
end
if not retractManipulator then
retractManipulator = addEventHandler ("onClientKey", root, extractRetractLadder)
end
if not ladderSync then
ladderSync = setTimer (syncLadders, 500, 0)
end
-- This will prevent the camera movement with numpad keys
toggleControl ("special_control_left", false)
toggleControl ("special_control_right", false)
toggleControl ("special_control_down", false)
toggleControl ("special_control_up", false)
triggerEvent("newMessage", root, nil, player, "* LADDER * You may control your ladder with numpad keys while stationary", "call", 0, 255, 255)
end
end
addEventHandler ("onClientVehicleEnter", root, initializeLadder)
-- Sync of the streamed-in firetruck ladders
addEvent ("SAES:sendSyncedLadders", true)
local function fetchSyncedLadders(ladders, pivX, pivY, pivZ, raiX, raiY, raiZ, isRetracted, midExtended, fullExtended)
if isElement (ladders) and isElementStreamedIn (ladders) then
setVehicleComponentRotation (ladders, "ladder_pivot", pivX, pivY, pivZ)
setVehicleComponentRotation (ladders, "Ladder_raise", raiX, raiY, raiZ)
if isRetracted == true and isMidExtended == false and isFullExtended == false then
setVehicleComponentVisible (ladders, "Extend_Retracted", false); setVehicleComponentVisible (ladders, "#Extend_midextent", true); setVehicleComponentVisible (ladders, "#Extend_extended", false)
elseif isRetracted == false and isMidExtended == true and isFullExtended == false then
setVehicleComponentVisible (ladders, "Extend_Retracted", false); setVehicleComponentVisible (ladders, "#Extend_midextent", false); setVehicleComponentVisible (ladders, "#Extend_extended",true)
else
setVehicleComponentVisible (ladders, "Extend_Retracted", true); setVehicleComponentVisible (ladders, "#Extend_midextent", false); setVehicleComponentVisible (ladders, "#Extend_extended", false)
end
end
end
addEventHandler ("SAES:sendSyncedLadders", localPlayer, fetchSyncedLadders)
Server --[[
+----------------------------------------------------------------------------
| SAES:RPG v1
| ========================================
| by Mega9
| (c) 2008 vces.net, All rights reserved.
| http://www.vces.net
| ========================================
+-----------------------------------------------------------------------------
| You are not allowed to adapt, copy, redistribute this script.
| You are not allowed to use this script outside servers ran by www.vces.net
+-----------------------------------------------------------------------------
]]--
addEvent ("SAES:requestLadderSync", true)
local function requestLadderSync(streamedClients, firetruckLadder, pivX, pivY, pivZ, raiX, raiY, raiZ, isRetracted, isMidExtended, isFullExtended)
for i, p in ipairs (streamedClients) do
if client ~= p[1] then
triggerClientEvent (p[1], "SAES:sendSyncedLadders", p[1], firetruckLadder, pivX, pivY, pivZ, raiX, raiY, raiZ, isRetracted, isMidExtended, isFullExtended)
end
end
end
addEventHandler ("SAES:requestLadderSync", root, requestLadderSync)