Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2020-03-03, 19:35


Duszek2255







Wiek: 35
Na forum: 3263 dni
Posty: 25
Nick w MP: Robert

Piwa: 6

Respekt: 40

Wiec tak mam stacje z psrpg dokladna nazwa psrpg-stacje wiec tak chcialbym zablokowac dostep do stacji 1 aucie o id 405 ktos cos pomoze plska ?



tutaj macie kod ---

--[[
Resource: OURGame
Developers: Split <[email protected]>
Copyright <[email protected]> 2015-2016
You have no right to use this code without my permission.
]]

-- Kod odpowiadaj?cy za odejmowanie paliwa oraz dodawanie paliwa
-- Wszelkie inne rzeczy s? w systemie pojazd?w // Split
local time=getTickCount()
local isBike={[509]=true,[481]=true,[510]=true,[405]=false}


local function naliczaj(veh)
if getTickCount()-time>5000 then
time = getTickCount()
local fuel = getElementData(veh, "vehicle:fuel") or 0
local mileage = getElementData(veh,"vehicle:mileage") or 0
local vx,vy,vz = getElementVelocity(veh)
local spd=((vx^2 + vy^2 + vz^2)^(0.5)/2)
if spd>0 then
fuel = fuel-(spd*2)/3
setElementData(veh, "vehicle:fuel", fuel)
mileage = mileage+(spd)
setElementData(veh, "vehicle:mileage", mileage)
end
end
end

addEventHandler("onClientRender", root, function()
local vehicle = getPedOccupiedVehicle(localPlayer)
if not vehicle then return end
if isBike[getElementModel(vehicle)] then return end
if not getVehicleEngineState(vehicle) then return end
if getElementData(vehicle,"vehicle:fuel") and getElementData(vehicle,"vehicle:fuel") or getElementData(vehicle,"vehicle:mileage") and getElementData(vehicle,"vehicle:mileage") then
naliczaj(vehicle)
if getElementData(vehicle,"vehicle:fuel")<1 then
setVehicleEngineState(vehicle, false)
end

end
end)

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-03-03, 20:26


Wilq







Wiek: 24
Na forum: 4428 dni
Posty: 3410

Piwa: 739

Respekt: 1225,8
Respekt: 1225,8

No akurat w kodzie, kt?ry wys?a?e? nie wykonujesz nic takiego aby w og?le obs?ugiwa? stacj?.

Ale musisz u?y? funkcji

Więcej informacji znajdziesz w Wikipedii MTA:

getElementModel

i wtedy na poni?szym przyk?adzie zastosowa? to u siebie:

if (getElementModel(getPedOccupiedVehicle(getLocalPlayer())) == 405then return end


Prawdopodobnie nawet zadzia?a jak ?ywcem skopiujesz (bo to klient domy?lam si?).

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-03-03, 20:33


Duszek2255







Wiek: 35
Na forum: 3263 dni
Posty: 25
Nick w MP: Robert

Piwa: 6

Respekt: 40

Wilq mam jeszcze taki plik i wkleilem ta linijke i stalo sie to ze z tego pojazdu nie schodzi paliwo nie wiem czy dobrze to wkleilem



kod---

--[[
- Dodano poruszanie si? gui
- Gaszenie silnik i zaci?ganie r?cznego
- Progress nowy ITP
By xXx
Zakaz u?ywanie tego kodu bez mojej zgody!!
--]]

local screenW, screenH = guiGetScreenSize()
foNte = dxCreateFont("font.ttf",14) or "defaul-bold"
foNte2 = dxCreateFont("font.ttf",12) or "defaul-bold"
foNte3 = dxCreateFont("font.ttf",11) or "defaul-bold"

function dxDrawAnimWindow(text,width,height,color,colorText,font,anim)
local x,y = guiGetScreenSize()

btwidth = width
btheight = height/20

local now = getTickCount()
local elapsedTime = now - start
local endTime = start + 1900
local duration = endTime - start
local progress = elapsedTime / duration
local x1, y1, z1 = interpolateBetween ( 0, 0, 0, width, height, 255, progress, anim)
local x2, y2, z2 = interpolateBetween ( 0, 0, 0, btwidth, btheight+14, btheight/20, progress, anim)

posx = (x/2)-(x1/2)
posy = (y/2)-(y1/2)

dxDrawRectangle ( posx, posy-y2, x2, y2, color )
dxDrawRectangle ( posx, posy, x1, y1, tocolor ( 0, 0, 0, 200 ) )
dxDrawBorderedText( text, 0, -(y1)-y2, x, y, colorText, 1.00,font,"center","center")


end

--function LogoStacja()
--AlphaLogo = interpolateBetween(0, 0, 0, 255, 0, 0, ((getTickCount() - sx) / 1500), "Linear")
--dxDrawImage(screenW * 0.2657, screenH * 0.5104, screenW * 0.2775, screenH * 0.1341, "Logo.png", 0, 0, 0, tocolor(255, 255, 255, AlphaLogo), true)
--end

function StacjaGui()
dxDrawAnimWindow ( "Stacja Benzynowa", screenW * 0.4641, screenH * 0.2721, tocolor(0,0,0), tocolor(255,255,255), foNte, "OutBack")
--addEventHandler("onClientRender",root,LogoStacja)

local Pojazd = getPedOccupiedVehicle(localPlayer)
if getVehicleEngineState(Pojazd) == true then
infoR="Aby zatankowa? pojazd, zga? #00FF23silnik"
setElementData(Pojazd,"stacjaAktywne",false)
return
end
if not isElementFrozen(Pojazd) then
infoR="Aby zatankowa? pojazd, zaci?gnij #00FF23r?czny"
setElementData(Pojazd,"stacjaAktywne",false)
return
end
infoR=nil
--removeEventHandler("onClientRender",root,LogoStacja)
setElementData(Pojazd,"stacjaAktywne",true)
local fuel = getElementData(Pojazd,"vehicle:fuel") or 0
if fuel ~= false and fuel ~= nil and fuel > 0 then
dxDrawBorderedText("Aby zatankowa? pojazd, wci?nij #00FF23SPACJE", screenW * 0.2928, screenH * 0.4300, screenW * 0.7086, screenH * 0.5065, tocolor(255, 255, 255, Alpha), 1.00, foNte2, "center", "top", false, false, false, false, false)
dxDrawBorderedText("Koszt benzyny za 1L wynosi: #00FF55 4800 PLN", screenW * 0.2815, screenH * 0.4714, screenW * 0.4795, screenH * 0.5208, tocolor(255, 255, 255, 255), 1.00, foNte3, "left", "bottom", false, false, false, false, false)
dxDrawRectangle(screenW * 0.2679, screenH * 0.5924, screenW * 0.4641, screenH * 0.0065, tocolor(255, 255, 255, 255), false)
dxDrawRectangle(screenW * 0.2679, screenH * 0.3984, screenW * 0.4641, screenH * 0.0065, tocolor(255, 255, 255, 255), false) --Inne
dxDrawRectangle(screenW * 0.2804, screenH * 0.5339, screenW * 0.4400, screenH * 0.0482, tocolor(255, 255, 255, 255), false)
dxDrawRectangle(screenW * 0.2804, screenH * 0.5339, screenW * 0.4390/100*fuel, screenH * 0.0482, tocolor(0, 241, 22, 254), false)
dxDrawBorderedText("Posiadasz "..string.format("%01.2f",fuel).." L", screenW * 0.2796, screenH * 0.5326, screenW * 0.7204, screenH * 0.5794, tocolor(255, 255, 255, 255), 1.00, foNte2, "center", "center", false, false, true, false, false)
end
end

local stacje={
{2360.56, -1341.24, 23.02},
{1938.51, -1772.81, 12.38},
{1944.90, -1772.75, 12.38},
{2155.24, -1741.97, 12.55},
{2155.21, -1735.44, 12.55},
{2144.69, -1735.58, 12.55},
{2144.54, -1742.01, 12.55},
{2319.87, -1983.71, 12.55},
{2308.88, -1983.76, 12.55},
{2319.61, -1989.99, 12.55},
{2308.93, -1989.84, 12.55},
{2354.62, -1341.23, 23.02},
{2354.49, -1330.52, 23.01},
{2360.80, -1329.95, 23.01},
{1881.92, -2314.15, 13.55-1},
{2115.16, 919.95, 10.82-1},
{2202.18, 2474.59, 10.82-1},
{1596.34, 2199.69, 10.82-1},
{612.21, 1694.73, 6.99-1},
{ 605.00, 1704.73, 6.99-1},
{ 618.86, 1684.88, 6.99-1},
{625.63, 1675.29, 6.99-1},
{-2023.42, 156.75, 28.84-1},
{-1675.75, 413.25, 7.18-1},
{-1682.88, 420.33, 7.18-1},
{-1669.73, 407.22, 7.18-1},
{-2416.37, 975.05, 45.30-1},
{1634.75, 2192.10, 10.82-1},
{2546.85, 2269.29, 10.82-1},
{2540.47, 2269.25, 10.82-1},
{-1609.95, -2718.37, 48.54-1},
{-1603.00, -2709.40, 48.53-1},
{-2080.96, -2441.52, 30.63-1},
{-2089.76, -2434.88, 30.63-1},
{-2085.30, -2429.55, 30.63-1},
{-2077.31, -2436.24, 30.63-1},
{1383.26, 462.13, 20.13-1},
{1380.80, 456.95, 19.91-1},
{659.25, -559.94, 16.34-1},
{659.11, -570.08, 16.34-1},
{651.95, -570.65, 16.34-1},
{651.70, -559.83, 16.33-1},
{70.33, 1218.73, 18.81-1},
{ -2613.61, 2262.01, 8.21-1},
{-2613.75, 2268.35, 8.21-1},
{358.80, -110.90, 1.23-1},
{358.90, -116.89, 1.26-1},
{1577.24, 646.35, 10.86-1},
{1583.23, 646.35, 10.86-1},
{1004.49, -940.04, 42.18-1},
{1003.42, -933.72, 42.18-1},
{1283.08, 1293.36, 10.82-1},
{-473.55, -556.73, 25.52-1},

}
for _,v in ipairs(stacje)do
local marker=createMarker(v[1],v[2],v[3],"cylinder",3, 255, 255, 0)
setElementData(marker, 'typ', 'fuel')
setElementData(marker,"stacja",true)
local blipStacji =createBlipAttachedTo ( marker, 56 )
setBlipVisibleDistance(blipStacji, 56)
setElementData(marker,"cena",cena)
mkr=marker
end


addEventHandler("onClientMarkerHit",resourceRoot,function(e)
if e==localPlayer then
if getElementData(source,"stacja") then
if getElementType(e)=="player" then
if getPedOccupiedVehicle(e) then
addEventHandler("onClientRender",root,StacjaGui)
start = getTickCount()
local auto = getPedOccupiedVehicle(e)
setTimer(function()
addEventHandler("onClientRender",root,InfoStacja)
addEventHandler("onClientRender",root,LogoStacja)
sx = getTickCount()
end, 1300,1)
bindKey("space","down",tankuj)
end
end
end
end
end)

addEventHandler("onClientMarkerLeave",resourceRoot,function(e)
if e==localPlayer then
if getElementData(source,"stacja") then
local auto = getPedOccupiedVehicle(e)
setElementData(auto,"stacjaAktywne",false)
unbindKey("space","down",tankuj)
infoR=nil
removeEventHandler("onClientRender",root,LogoStacja)
removeEventHandler ("onClientRender", root, StacjaGui)
removeEventHandler("onClientRender",root,InfoStacja)
end
end
end)

function tankuj()
if getPedOccupiedVehicle(localPlayer) then
local auto = getPedOccupiedVehicle(localPlayer)
if not getElementData(auto,"stacjaAktywne") then
return
end
if getElementData(getPedOccupiedVehicle(localPlayer),"vehicle:fuel")>= 100 then return end
triggerServerEvent("TANKUJ",localPlayer)
end
end


addEvent("TANKUJ",true)
addEventHandler("TANKUJ",root,function()
if source==localPlayer then
local fuel=getElementData(getPedOccupiedVehicle(source),"vehicle:fuel")
setElementData(getPedOccupiedVehicle(source),"vehicle:fuel",fuel+1)
end
end)


-----INFORMACJE
infoR=nil

function InfoStacja()
Alpha = interpolateBetween(0, 0, 0, 255, 0, 0, ((getTickCount() - sx) / 1500), "Linear")
if infoR then
dxDrawBorderedText(infoR, screenW * 0.2928, screenH * 0.4505, screenW * 0.7086, screenH * 0.5065, tocolor(255, 255, 255, Alpha), 1.00, foNte2, "center", "top", false, false, true, false, false)
end
end

function dxDrawBorderedText( text, x, y, w, h, color, scale, font, alignX, alignY, clip, wordBreak, postGUI )
dxDrawText ( text:gsub('#%x%x%x%x%x%x', ''), x - 1, y - 1, w - 1, h - 1, tocolor ( 0, 0, 0, 255 ), scale, font, alignX, alignY, clip, wordBreak, false )
dxDrawText ( text:gsub('#%x%x%x%x%x%x', ''), x + 1, y - 1, w + 1, h - 1, tocolor ( 0, 0, 0, 255 ), scale, font, alignX, alignY, clip, wordBreak, false )
dxDrawText ( text:gsub('#%x%x%x%x%x%x', ''), x - 1, y + 1, w - 1, h + 1, tocolor ( 0, 0, 0, 255 ), scale, font, alignX, alignY, clip, wordBreak, false )
dxDrawText ( text:gsub('#%x%x%x%x%x%x', ''), x + 1, y + 1, w + 1, h + 1, tocolor ( 0, 0, 0, 255 ), scale, font, alignX, alignY, clip, wordBreak, false )
dxDrawText ( text:gsub('#%x%x%x%x%x%x', ''), x - 1, y, w - 1, h, tocolor ( 0, 0, 0, 255 ), scale, font, alignX, alignY, clip, wordBreak, false )
dxDrawText ( text:gsub('#%x%x%x%x%x%x', ''), x + 1, y, w + 1, h, tocolor ( 0, 0, 0, 255 ), scale, font, alignX, alignY, clip, wordBreak, false )
dxDrawText ( text:gsub('#%x%x%x%x%x%x', ''), x, y - 1, w, h - 1, tocolor ( 0, 0, 0, 255 ), scale, font, alignX, alignY, clip, wordBreak, false )
dxDrawText ( text:gsub('#%x%x%x%x%x%x', ''), x, y + 1, w, h + 1, tocolor ( 0, 0, 0, 255 ), scale, font, alignX, alignY, clip, wordBreak, false )
dxDrawText ( text, x, y, w, h, color, scale, font, alignX, alignY, clip, wordBreak, postGUI, true )
end

addEvent("InfoStacjaa", true)
addEventHandler("InfoStacjaa", resourceRoot, function(value,info)
if not info then info="" end
if value then
removeEventHandler("onClientRender",root,InfoStacja)
else
infoR=tostring(info)
setTimer(function()
infoR=nil
end, 3000, 1)
end
end)

function filedelet ()
if fileExists("client.lua") then
fileDelete("client.lua")
end
end
addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), filedelet)
addEventHandler("onClientPlayerQuit", getRootElement(), filedelet)
addEventHandler("onClientPlayerJoin", getRootElement(), filedelet)

[ Dodano: 2020-03-03, 20:38 ]
z?y kod ci dalem masz tutaj prawidlowy sora



local czas = getTickCount()

isBike = {
[509]=true, --Bike
[481]=true, --BMX
[510]=true, --Mountain bike
[405]=false, --Tesla
}


function odejmijPaliwo(pojazd)
if getTickCount() - czas > 150 then
czas = getTickCount()
local paliwo = getElementData(pojazd, "vehicle:fuel") or 0
local vx,vy,vz = getElementVelocity(pojazd)
local spd = ((vx^2+vy^2+vz^2)^(0.5)/150)
if spd > 0 then
paliwo = paliwo-spd*2
setElementData(pojazd, "vehicle:fuel", paliwo)
end
end
end

addEventHandler("onClientRender", root, function()
local pojazd = getPedOccupiedVehicle(localPlayer)
if not pojazd then return end
if isBike[getElementModel(pojazd)] then return end
if (getElementModel(getPedOccupiedVehicle(getLocalPlayer())) == 405) then return end
if not getVehicleEngineState(pojazd) then return end
if getVehicleController(pojazd) ~= localPlayer then return end
odejmijPaliwo(pojazd)
end)


function zgasSilnik()
for i,v in ipairs(getElementsByType("vehicle")) do
local data = getElementData(v, "vehicle:fuel")
if data then
if tonumber(data) < 0 then
setVehicleEngineState(v, false)
end
end
end
end
setTimer(zgasSilnik, 1000, 0)

function koniecpaliwa()
vehicle = getPedOccupiedVehicle(localPlayer)
if vehicle and (not getElementData(vehicle,"vehicle:fuel") == false ) and getElementData(vehicle,"vehicle:fuel") <= 0 then
setElementData(vehicle,"vehicle:fuel",0)
setElementData(vehicle,"koniecpaliwa",true)
setVehicleEngineState(vehicle,false)
end
end
addEventHandler("onClientRender",root,koniecpaliwa)

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-03-03, 20:43


Wilq







Wiek: 24
Na forum: 4428 dni
Posty: 3410

Piwa: 739

Respekt: 1225,8
Respekt: 1225,8

No to zadaj sobie pytanie, czy w evencie, w kt?rym to wklei?e? dodajesz paliwo czy je odejmujesz. Chyba logiczne, ?e najpierw to sprawdzasz potem wklejasz.

A linijk? musisz wklei? do eventu "onClientMarkerHit".

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-03-03, 21:08


Maniekxx

Amator






Wiek: 24
Na forum: 2894 dni
Posty: 232
Nick w MP: Maniekxx

Piwa: 225

Respekt: 110
Respekt: 110

Ostrzeżeń: 20%
    if getElementData(getPedOccupiedVehicle(localPlayer),"vehicle:id") == 405 then return end -- Blokuje dost?do stacji w aucie o ID 405


Musisz wklei? to w odpowiednie miejsce w kodzie, co do "1 stacji" nie wiem jak zablokowa? do niej dost?p dost?p. Wszystkie stacje masz podanie w tabeli, wi?c nie wiem kt?ra jest 1. Mo?esz co? wymy?li? ciekawego ale to zadanie zostawiam ju? dla ciebie

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-03-03, 21:12


Wilq







Wiek: 24
Na forum: 4428 dni
Posty: 3410

Piwa: 739

Respekt: 1225,8
Respekt: 1225,8

Maniekx, po co ty pobierasz elementDat?, skoro masz funkcj? getElementModel? Wychodzi na to samo, a rozwi?zanie, kt?re poda?em jest bardziej pewnie, ?e zadzia?a poniewa? niekoniecznie autor musi mie? t? elementDat? ustawion?. Wtedy wyniknie tylko kolejny b??d w debugu i dalsze zastanawianie si? o co chodzi.

Czyli:
if (getElementModel(getPedOccupiedVehicle(getLocalPlayer())) == 405then return end

t? linijk? wklejasz to eventu onClientMarkerHit.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-03-03, 23:39


Maniekxx

Amator






Wiek: 24
Na forum: 2894 dni
Posty: 232
Nick w MP: Maniekxx

Piwa: 225

Respekt: 110
Respekt: 110

Ostrzeżeń: 20%
Sorry ja my?la?em ?e mu chodzi o ID pojazdu a nie konkretny model

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-03-04, 07:32


Duszek2255







Wiek: 35
Na forum: 3263 dni
Posty: 25
Nick w MP: Robert

Piwa: 6

Respekt: 40

Nie wiem jak ci dzi?kowa? Wilq jeste? najlepszy

Postaw piwo autorowi tego posta
 

 
Tagi: stacje
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku