Jump to content

Sergo86

Members
  • Posts

    58
  • Joined

  • Last visited

Everything posted by Sergo86

  1. Получить текущие настройки авто)
  2. Ха, ну к примеру getVehicleHandling)
  3. спс, а проверку нужно делать?
  4. и что лучше использовать setVehicleHandling или setModelHandling ?
  5. Как мне сделать, чтобы при въезде на маркер устанавливался двигатель(всмысле увеличивалась макс.скорость к примеру)не ко всем авто с одинаковыми id, а только тому кто попал на маркер. Если не сложно то напишите примерчик)
  6. Я имел в виду может есть ещё способы кроме бота?
  7. Каким ещё способом можно сделать этот скрипт?
  8. Помогите сделать скрипт - работа механика, если не сложно)
  9. У меня есть такой скрипт ) приходится верт подрывать)))
  10. Всмысле создать бота как невидимого водилу который будет держать угол поворота?
  11. Почему когда я выхожу из авто, картинка остаётся и почему немного подлагивает?
  12. Можно ли при выходе из авто сделать сохранение угла поворота колёс?
  13. Типа на L нажимаешь машина блокируется)
  14. Объясните пожалуйста что это значит? Сервер сторона -- player element data -- -- cl_ownedvehicle -- vehicle element data -- -- cl_vehicleowner -- cl_vehiclelocked -- cl_enginestate -- resource starts - ends function initCarLocks () -- Initilize Player Element Data local players = getElementsByType ( "player" ) for k,p in ipairs(players) do removeElementData ( p, "cl_ownedvehicle" ) bindKey ( p, "l", "down", doToggleLocked ) end -- Initilize Vehicle Element Data local vehicles = getElementsByType ( "vehicle" ) for k,v in ipairs(vehicles) do removeElementData ( v, "cl_vehicleowner" ) removeElementData ( v, "cl_vehiclelocked" ) removeElementData ( v, "cl_enginestate" ) setVehicleLocked ( v, false ) setVehicleOverrideLights ( v, 0 ) end end addEventHandler ( "onResourceStart", getResourceRootElement ( getThisResource () ), initCarLocks ) addEventHandler ( "onResourceStop", getResourceRootElement ( getThisResource () ), initCarLocks ) -- player joins function cl_PlayerJoin ( ) bindKey ( source, "l", "down", doToggleLocked ) end addEventHandler ( "onPlayerJoin", getRootElement(), cl_PlayerJoin ) -- player quits function cl_PlayerQuit ( ) -- check for owned car local ownedVehicle = getElementData ( source, "cl_ownedvehicle" ) if (ownedVehicle ~= false) then cl_RemoveVehicleOwner ( ownedVehicle ) end end addEventHandler ( "onPlayerQuit", getRootElement(), cl_PlayerQuit ) -- player dies function cl_PlayerWasted ( ) -- check for owned car local ownedVehicle = getElementData ( source, "cl_ownedvehicle" ) if (ownedVehicle ~= false) then cl_RemoveVehicleOwner ( ownedVehicle ) end end addEventHandler ( "onPlayerWasted", getRootElement(), cl_PlayerWasted ) -- player tries to enter vehicle function cl_VehicleStartEnter ( enteringPlayer, seat, jacked ) local theVehicle = source local theOwner -- locked and not owner entering if ( getElementData ( theVehicle, "cl_vehiclelocked" ) == true ) then theOwner = getElementData ( theVehicle, "cl_vehicleowner" ) if theOwner ~= false and theOwner ~= enteringPlayer then -- make sure they dont enter --cancelEvent(); end end end addEventHandler ( "onVehicleStartEnter", getRootElement(), cl_VehicleStartEnter ) -- player enters a vehicle function cl_PlayerDriveVehicle ( player, seat, jacked ) -- Driver Enter if ( seat == 0 ) then oldVehicle = getElementData ( player, "cl_ownedvehicle" ) -- not entering player's own owned vehicle if ( (cl_VehicleLocked(source) == true) and (cl_VehicleOwner(source) ~= player) ) then removePlayerFromVehicle( player ) Err_Msg("this vehicle is locked.", player) return false end -- set element data for vehicle and owner cl_SetVehicleOwner ( source, player ) end return true end addEventHandler ( "onVehicleEnter", getRootElement(), cl_PlayerDriveVehicle ) -- vehicle respawns function cl_VehicleRespawn ( exploded ) cl_RemoveVehicleOwner ( source ) end addEventHandler ( "OnVehicleRespawn", getRootElement(), cl_VehicleRespawn ) -- vehicle explosion function cl_VehicleExplode ( ) local theOwner = getElementData ( source, "cl_vehicleowner" ) if ( theOwner ~= false ) then cl_RemoveVehicleOwner ( source ) end end addEventHandler ( "onVehicleExplode", getRootElement(), cl_VehicleExplode ) -- set vehicle owner function cl_SetVehicleOwner ( theVehicle, thePlayer ) local oldVehicle = getElementData ( thePlayer, "cl_ownedvehicle" ) if ( oldVehicle ~= false ) then -- unlock old car removeElementData ( oldVehicle, "cl_vehicleowner" ) removeElementData ( oldVehicle, "cl_vehiclelocked" ) removeElementData ( oldVehicle, "cl_enginestate" ) setVehicleLocked ( oldVehicle, false ) -- set vars for new car end setElementData ( theVehicle, "cl_vehicleowner", thePlayer ) setElementData ( theVehicle, "cl_vehiclelocked", false ) setElementData ( thePlayer, "cl_ownedvehicle", theVehicle ) setElementData( theVehicle, "cl_enginestate", true ) end function cl_RemoveVehicleOwner ( theVehicle ) local theOwner = getElementData ( theVehicle, "cl_vehicleowner" ) if ( theOwner ~= false ) then removeElementData ( theOwner, "cl_ownedvehicle" ) removeElementData ( theVehicle, "cl_vehicleowner" ) removeElementData ( theVehicle, "cl_vehiclelocked" ) removeElementData ( owned, "cl_enginestate" ) end setVehicleLocked ( theVehicle, false ) end -- flash the lights twice function cl_FlashLights ( thePlayer ) setTimer ( doToggleLights, 300, 4, thePlayer, true ) end -- flash once function cl_FlashOnce ( thePlayer ) setTimer ( doToggleLights, 300, 2, thePlayer, true ) end -- get vehicle owner ( according to vehicle's element data ) function cl_VehicleOwner ( theVehicle ) return getElementData( theVehicle, "cl_vehicleowner" ) end -- is vehicle locked ( according to vehicle's element data ) function cl_VehicleLocked ( theVehicle ) return getElementData( theVehicle, "cl_vehiclelocked" ) end -- messaging functions -- send red error message function Err_Msg ( strout, thePlayer ) outputChatBox ( strout, thePlayer, 200, 0, 10 ) end -- send message to all occupants of vehicle function Car_Msg ( strout, theVehicle ) numseats = getVehicleMaxPassengers ( theVehicle ) for s = 0, numseats do local targetPlayer = getVehicleOccupant ( theVehicle, s ) if targetPlayer ~= false then outputChatBox ( strout, targetPlayer, 30, 144, 255 ) end end end -- send aquamarine message to player function Info_Msg ( strout, thePlayer ) outputChatBox ( strout, thePlayer, 102, 205, 170 ) end -- commands function doToggleLocked ( source ) local theVehicle , strout if ( getElementType(source) == "vehicle" ) then theVehicle = source end if ( getElementType(source) == "player" ) then theVehicle = getElementData ( source, "cl_ownedvehicle" ) end if ( theVehicle ) then local vehiclename = getVehicleName ( theVehicle ) -- already locked if ( getElementData ( theVehicle, "cl_vehiclelocked") == true ) then doUnlockVehicle ( source ) else doLockVehicle ( source ) end else Err_Msg("You must have a vehicle to lock or unlock it.", source) end end function doLockVehicle ( source ) local theVehicle , strout if ( getElementType(source) == "vehicle" ) then theVehicle = source end if ( getElementType(source) == "player" ) then theVehicle = getElementData ( source, "cl_ownedvehicle" ) end if ( theVehicle ) then local vehiclename = getVehicleName ( theVehicle ) -- already locked if ( getElementData ( theVehicle, "cl_vehiclelocked") == true ) then strout = "Your " .. vehiclename .. " is already locked." Err_Msg(strout, source) else setElementData ( theVehicle, "cl_vehiclelocked", true) setVehicleLocked ( theVehicle, true ) Car_Msg( "current vehicle " .. vehiclename .. " locked.", theVehicle) Info_Msg ( "locked vehicle " .. vehiclename .. ".", source ) if ( getVehicleController ( theVehicle ) == false ) then cl_FlashLights ( source ) end end else Err_Msg("You must have a vehicle to lock it.", source) end end function doUnlockVehicle ( source ) local theVehicle, strout if ( getElementType(source) == "vehicle" ) then theVehicle = source end if ( getElementType(source) == "player" ) then theVehicle = getElementData ( source, "cl_ownedvehicle" ) end if ( theVehicle ) then local vehiclename = getVehicleName ( theVehicle ) if ( getElementData ( theVehicle, "cl_vehiclelocked") == false ) then strout = "Your " .. vehiclename .. " is already unlocked." Err_Msg(strout, source) else setElementData ( theVehicle, "cl_vehiclelocked", false) setVehicleLocked ( theVehicle, false ) Car_Msg( "current vehicle " .. vehiclename .. " unlocked.", theVehicle ) Info_Msg ( "unlocked vehicle " .. vehiclename .. ".", source ) if ( getVehicleController ( theVehicle ) == false ) then cl_FlashOnce ( source ) end end else Err_Msg("You must have a vehicle to unlock it.", source) end
  15. Вот так: function VehicleLightState ( playerSource ) local theVehicle = getPedOccupiedVehicle ( playerSource ) -- Check if the player is in any vehicle and if he is the driver if theVehicle and getVehicleController ( theVehicle ) == playerSource then local state = getVehicleLightState ( theVehicle ) if ( getVehicleOverrideLights ( veh ) ~= 2 ) then guiCreateStaticImage( 20, 200, 100, 100, "imagename.png", false ) end ???
  16. спс) а можно поточнее?
  17. Как сделать, чтобы при включении фар появлялась картинка.
  18. Как мне сделать проверку на открытые двери в авто, например при открытой двери будет играть звук.
  19. Ку всем, есть скрипт бензина, с dxdraw полосой уровня бензина).Как мне заменить полосу на шкалу к примеру на эту http://images.yandex.ru/yandsearch?text=%D1%88%D0%BA%D0%B0%D0%BB%D0%B0%20%D0%B1%D0%B5%D0%BD%D0%B7%D0%B8%D0%BD%D0%B0&pos=13&rpt=simage&img_url=http%3A%2F%2Fstorage.pressfoto.ru%2F2012.04%2F12183668186a6b281f9bc4f610196af46185a4e45f8_s.jpg Вот код: Клиент local carFuel = {}; addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), function() local xml = xmlLoadFile("carData.xml"); local xmlNodes = xmlNodeGetChildren(xml); for i,node in ipairs(xmlNodes) do carFuel[tonumber(xmlNodeGetAttribute(node,'id'))] = tonumber(xmlNodeGetAttribute(node,'fuel')); end xmlUnloadFile(xml); end ) addEvent("onPedSyphonFuel",true); function startSyphon() if not isPedInVehicle(localPlayer) then if isPedOnGround(localPlayer) then local px, py, pz = getElementPosition(localPlayer); local rot = getPedRotation(localPlayer); local a = math.rad(90 - rot); local dx = math.cos(a) * 1.5; local dy = math.sin(a) * 1.5; local ppx = math.cos(a) * 0.2; local ppy = math.sin(a) * 0.2; local ex = px-dx; local ey = py+dy; px = px-ppx; py = py+ppy; hit, x, y, z, elementHit = processLineOfSight(px, py, pz+1, ex, ey, pz); if elementHit then if getElementType(elementHit) == 'vehicle' then triggerServerEvent('pedSyphonVehicle',localPlayer,elementHit); end end end end end addEventHandler("onPedSyphonFuel",getRootElement(),startSyphon); addCommandHandler('syphon',startSyphon) addEvent("onPedReFuel",true); function fillHerUp() local vehicle = getPedOccupiedVehicle(localPlayer); if not isPedInVehicle(localPlayer) then if isPedOnGround(localPlayer) then local px, py, pz = getElementPosition(localPlayer); local rot = getPedRotation(localPlayer); local a = math.rad(90 - rot); local dx = math.cos(a) * 1.5; local dy = math.sin(a) * 1.5; local ppx = math.cos(a) * 0.2; local ppy = math.sin(a) * 0.2; local ex = px-dx; local ey = py+dy; px = px-ppx; py = py+ppy; hit, x, y, z, elementHit = processLineOfSight(px, py, pz+1, ex, ey, pz); if elementHit then if getElementType(elementHit) == 'vehicle' then triggerServerEvent('pedRefuelVehicle',localPlayer,elementHit); end end end end end addEventHandler("onPedReFuel",getRootElement(),fillHerUp); addCommandHandler('refuel',fillHerUp) function drawGUI() local vehicle = getPedOccupiedVehicle(localPlayer); if vehicle then local x,y = guiGetScreenSize(); if getVehicleType(vehicle) ~= 'Automobile' and getVehicleType(vehicle) ~= 'Bike' and getVehicleType(vehicle) ~= 'Monster Truck' and getVehicleType(vehicle) ~= 'Quad' then return end local driver = getVehicleController(vehicle); if driver ~= localPlayer then return end --### if getVehicleEngineState(vehicle) == false then return end --### dxDrawRectangle(x-30,(y/2)-75,20,142,0x66224466); local maxFuel = carFuel[0]; local curFuel = getElementData(vehicle,'fuel'); if curFuel == false then return end if carFuel[getElementModel(vehicle)] then maxFuel = carFuel[getElementModel(vehicle)]; end local fuel = (curFuel/maxFuel)*100; local colour = nil; if fuel > 90 then colour = 0x9922CC33; dxDrawRectangle(x-28,(y/2)-71,16,21,colour); end if fuel > 75 then if colour == nil then colour = 0x99009900; end dxDrawRectangle(x-28,(y/2)-48,16,21,colour); end if fuel > 60 then if colour == nil then colour = 0x99339900; end dxDrawRectangle(x-28,(y/2)-25,16,21,colour); end if fuel > 45 then if colour == nil then colour = 0x99999900; end dxDrawRectangle(x-28,(y/2)-2,16,21,colour); end if fuel > 30 then if colour == nil then colour = 0x99996600; end dxDrawRectangle(x-28,(y/2)+21,16,21,colour); end if colour == nil then if fuel > 15 then colour = 0x99993300; else colour = 0x99990000; end end dxDrawRectangle(x-28,(y/2)+44,16,21,colour); --dxDrawText(tostring(fuel)..'%',x-105,y-50); end end addEventHandler("onClientRender",getRootElement(),drawGUI); addEventHandler("onClientElementStreamIn",getRootElement(),function () if getElementType(source) ~= 'vehicle' then return end if getVehicleType(source) ~= 'Automobile' and getVehicleType(source) ~= 'Bike' and getVehicleType(source) ~= 'Monster Truck' and getVehicleType(source) ~= 'Quad' then return end triggerServerEvent('giveVehicleFuelOnSpawn',source); end); Сервер local carFuel = {}; local gasStations = {}; local gasStationsBlip = {}; local gasStationsMarkers = {}; addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), function() local xml = xmlLoadFile("carData.xml"); local xmlNodes = xmlNodeGetChildren(xml); for i,node in ipairs(xmlNodes) do carFuel[tonumber(xmlNodeGetAttribute(node,'id'))] = tonumber(xmlNodeGetAttribute(node,'fuel')); end xmlUnloadFile(xml); local xml = xmlLoadFile("garageData.xml"); local xmlNodes = xmlNodeGetChildren(xml); for i,node in ipairs(xmlNodes) do local name = xmlNodeGetAttribute(node,'name'); local x = tonumber(xmlNodeGetAttribute(node,'x')); local y = tonumber(xmlNodeGetAttribute(node,'y')); local z = tonumber(xmlNodeGetAttribute(node,'z')); gasStationsBlip[name] = createBlip(x,y,z,51,0,0,0,0,0,0,0); local moreKids = xmlNodeGetChildren(node); gasStationsMarkers[name] = {}; for i,v in ipairs(moreKids) do local mx = tonumber(xmlNodeGetAttribute(v,'x')); local my = tonumber(xmlNodeGetAttribute(v,'y')); local mz = tonumber(xmlNodeGetAttribute(v,'z')); gasStationsMarkers[name][i] = createMarker(mx,my,mz,'corona',3,128,128,0,64); setElementData(gasStationsMarkers[name][i],'gasStation',true); end end xmlUnloadFile(xml); end ) function fuelUse(p) local vehicle = getPedOccupiedVehicle(p); if vehicle then setTimer(fuelUse,1000,1,p); if getVehicleType(vehicle) ~= 'Automobile' and getVehicleType(vehicle) ~= 'Bike' and getVehicleType(vehicle) ~= 'Monster Truck' and getVehicleType(vehicle) ~= 'Quad' then return end if getVehicleController(vehicle) ~= p then return end --### if getVehicleEngineState(vehicle) == false then return end --### local fuel = getCarFuel(vehicle) if fuel == 0 then setVehicleEngineState(vehicle,false); return end --### --[[local speedX, speedY, speedZ = getElementVelocity(vehicle); vel = (speedX^2 + speedY^2 + speedZ^2)^(0.5)+(math.random(100,1000)/25000);]] local newX,newY,newZ = getElementPosition(vehicle); local oldX = getElementData(vehicle,'oldX') or newX; local oldY = getElementData(vehicle,'oldY') or newY; local oldZ = getElementData(vehicle,'oldZ') or newZ; local vel = (getDistanceBetweenPoints2D(oldX,oldY,newX,newY)/70)+(math.random(100,1000)/50000); local oldX = setElementData(vehicle,'oldX',newX); local oldY = setElementData(vehicle,'oldY',newY); local oldZ = setElementData(vehicle,'oldZ',newZ) --if vel < 0.01 then return end --### local remainingFuel = takeCarFuel(vehicle,vel); if remainingFuel < 0.001 then remainingFuel = 0; outputChatBox('Your car has ran out of fuel.',v); setVehicleEngineState(vehicle,false); end end end function startFuelUse(p,seat,jacked) if getVehicleType(source) ~= 'Automobile' and getVehicleType(source) ~= 'Bike' and getVehicleType(source) ~= 'Monster Truck' and getVehicleType(source) ~= 'Quad' then return end if seat ~= 0 then return end if getCarFuel(source) <= 0 then setVehicleEngineState(source,false); end setTimer(fuelUse,1000,1,p); end addEventHandler("onVehicleEnter",getRootElement(),startFuelUse) function switchEngine(playerSource) local theVehicle = getPedOccupiedVehicle(playerSource); if theVehicle and getVehicleController(theVehicle) == playerSource then local state = getVehicleEngineState(theVehicle) if state then setVehicleEngineState(theVehicle, false); outputChatBox('Car engine turned off.',playerSource); else if getCarFuel(theVehicle) <= 0 then return end setVehicleEngineState(theVehicle, true); outputChatBox('Car engine turned on.',playerSource); end end end addCommandHandler("engine",switchEngine); addEvent('pedSyphonVehicle',true); function pedSyphon(v) if getCarFuel(source) >= carFuel[-1] then outputChatBox("You are holding as much fuel as you can carry.",source); return end local n = math.random(100,200)/1000; local left = takeCarFuel(v,n); local total = addCarFuel(source,n); if left <= 0 then outputChatBox("That car has no more fuel left.",source); return end triggerClientEvent("onPedSyphonFuel",source); end addEventHandler('pedSyphonVehicle',getRootElement(),pedSyphon); addEvent('pedRefuelVehicle',true); function pedSyphon(v) if getCarFuel(source) <= 0 then outputChatBox("You have no more fuel left.",source); return end local maxFuel = carFuel[0]; if carFuel[getElementModel(v)] then maxFuel = getFuel[getElementModel(v)]; end if getCarFuel(v) >= maxFuel then outputChatBox("That car is fully refueled.",source); return end local n = math.random(100,200)/1000; local left = takeCarFuel(source,n); local total = addCarFuel(v,n); triggerClientEvent("onPedReFuel",source); end addEventHandler('pedRefuelVehicle',getRootElement(),pedSyphon); addEvent('onVehicleRefuel',true); function vehicleRefuel(v,m) if not getElementData(m,'gasStation') then return end if getElementType(v) ~= 'vehicle' then return end if getVehicleType(v) ~= 'Automobile' and getVehicleType(v) ~= 'Bike' and getVehicleType(v) ~= 'Monster Truck' and getVehicleType(v) ~= 'Quad' then return end local driver = getVehicleOccupants(v); if not driver[0] then return end if not isElementWithinMarker(v,m) then return end --### local maxFuel = carFuel[0]; if getPlayerMoney(driver[0]) < 25 then outputChatBox("You can't afford any more fuel.",p); return end if carFuel[getElementModel(v)] then maxFuel = carFuel[getElementModel(v)]; end if getCarFuel(v) >= maxFuel then return end addCarFuel(v,15); takePlayerMoney(driver[0],25); if getCarFuel(v) >= maxFuel then outputChatBox("Your car has been fully refueled.",p); takeCarFuel(v,getCarFuel(v)-maxFuel); return end setTimer(vehicleRefuel,500,1,v,m); end addEventHandler('onVehicleRefuel',getRootElement(),vehicleRefuel); function hitTheMarker(e) setTimer(vehicleRefuel,1500,1,e,source); end addEventHandler('onMarkerHit',getRootElement(),hitTheMarker); function getCarFuel(v) if getElementType(v) == 'vehicle' then if getVehicleType(v) == 'Automobile' or getVehicleType(v) == 'Bike' or getVehicleType(v) == 'Monster Truck' or getVehicleType(v) == 'Quad' then local fuel = getElementData(v,'fuel'); local model = getElementModel(v); if not carFuel[model] then model = 0; end if not fuel then if carFuel[model] then fuel = carFuel[model]; setElementData(v,'fuel',carFuel[model]); else fuel = carFuel[0]; setElementData(v,'fuel',carFuel[0]); end end return fuel; end elseif getElementType(v) == 'player' then local fuel = getElementData(v,'fuel'); if not fuel then setElementData(v,'fuel',0); return 0; end return fuel; end end function addCarFuel(v,a) if getElementType(v) == 'vehicle' then if getVehicleType(v) == 'Automobile' or getVehicleType(v) == 'Bike' or getVehicleType(v) == 'Monster Truck' or getVehicleType(v) == 'Quad' then local fuel = getElementData(v,'fuel'); local model = getElementModel(v); if not carFuel[model] then model = 0; end if not fuel then if carFuel[model] then fuel = carFuel[model]; setElementData(v,'fuel',carFuel[model]); else fuel = carFuel[0]; setElementData(v,'fuel',carFuel[0]); end end fuel = fuel + a; if fuel > carFuel[model] then fuel = carFuel[model]; end setElementData(v,'fuel',fuel); return fuel; end elseif getElementType(v) == 'player' then local fuel = getElementData(v,'fuel'); if not fuel then fuel = 0; end fuel = fuel + a; if fuel > carFuel[-1] then fuel = carFuel[-1]; end setElementData(v,'fuel',fuel); return fuel; end end function takeCarFuel(v,a) if getElementType(v) == 'vehicle' then if getVehicleType(v) == 'Automobile' or getVehicleType(v) == 'Bike' or getVehicleType(v) == 'Monster Truck' or getVehicleType(v) == 'Quad' then local fuel = getElementData(v,'fuel'); local model = getElementModel(v); if not carFuel[model] then model = 0; end if not fuel then if carFuel[model] then fuel = carFuel[model]; setElementData(v,'fuel',carFuel[model]); else fuel = carFuel[0]; setElementData(v,'fuel',carFuel[0]); end end fuel = fuel - a; if fuel < 0 then fuel = 0; end setElementData(v,'fuel',fuel); return fuel; end elseif getElementType(v) == 'player' then local fuel = getElementData(v,'fuel'); if not fuel then fuel = 0; end fuel = fuel - a; if fuel < 0 then fuel = 0; end setElementData(v,'fuel',fuel); return fuel; end end addEvent('giveVehicleFuelOnSpawn',true); addEventHandler('giveVehicleFuelOnSpawn',getRootElement(),function() getCarFuel(source); end);
×
×
  • Create New...