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

Wysłany: 2015-07-01, 20:00


GamerHD11







Wiek: 24
Na forum: 4260 dni
Posty: 259
Nick w MP: SzokoHD

Piwa: 23

Respekt: 50

No wi?c tak. Znalaz?em przerobiony skrypt syncedfire przez http://Ricka i zmieni?em w nim tylko, ?e zamiast sprawdza? getelementdaty sprawdza czy gracz jest w acl. Niestety skrypt nie dzia?a, nie pokazuje ?adnych b??d?w. U?ytkownik, kt?ry wystawia? ten skrypt w innym dziale napisa?, ?e mu dzia?a wi?c nie wiem.

Tutaj macie all pliki .lua :

local Config={}
Config[1]={MiniScale=1MaxScale=2,Maxdistance=10}


function ShowFireValue() 
local CameraX,CameraY,CameraZ getCameraMatrix ()
for _col in pairs(getElementsByType("colshape")) do
local X,Y,getElementPosition(col)
local Distance getDistanceBetweenPoints3D(X,Y,Z,CameraX,CameraY,CameraZ)

if Distance Config[1].Maxdistance then return end
if isLineOfSightClear(X,Y,Z,CameraX,CameraY,CameraZ,true,true,false,true,false,false,false,localplayer ) == false then return end
local BoneX,BoneY,BoneZ getElementPosition(col)
local screenX,screenY getScreenFromWorldPosition(BoneX,BoneY,BoneZ+0.5)
local accname getAccountName getPlayerAccount element ) )
if not(screenXthen return end
if getElementData(col,"fire:Endvalue") and isObjectInACLGroup("user."..accnameaclGetGroup("SAFD")) then
dxDrawText (getElementData(col,"fire:Endvalue").."%"screenXscreenYscreenXscreenYtocolor 255255255150 ), 1"defalut-bold""center","center")
end
end
    end
    addEventHandler("onClientRender",getRootElement(), ShowFireValue



-- EDYTOWAL http://Rick

Ogien = {
{-2310.35,-119.44,35.32},
{-2024.79,158.14,28.88},
{-1916.93,867.40,35.45},
{-1916.93,867.40,35.45},
{-1916.93,867.40,35.45},
{-1716.72,-94.59,3.57},
{-2088.60,289.56,35.55},
{-2399.59,699.83,35.20},
{-2839.39,457.04,4.60},
{-1072.91,-1153.63,129.24},
{-1068.30,-1153.47,129.26},
{-600.04,-1099.59,23.57},
{-619.23,-475.20,25.55},
{-619.00,-489.55,25.54},
{-427.82,-391.72,16.26},
{-770.05,-159.64,66.26},
{-148.37,1133.05,19.77},
{-2800.01,2328.29,84.74},
{-2472.31,1550.24,36.80},
{-2478.05,1546.59,36.80},
{-2473.31,1537.30,36.80},
{-2409.87,974.64,45.37},
{-2413.21,-559.72,128.77},
{-2793.11,173.55,6.31},
{-2432.85,162.85,35.20},
}




local fireModel 8501
local fires = {}
addEvent("onFireExtinguished",true)
addEvent("onFireCreate",true)


local function isFireNearby(x,y,z)  -- todo d,i
  local cs=createColSphere(x,y,z,3)
  local obiekty=getElementsWithinColShape(cs"object")
  destroyElement(cs)
  for i,v in ipairs(obiekty) do
      if (getElementModel(v)==fireModelthen return true end
  end
  return false
end

function createFire(x,y,z,d,i)
    if (isFireNearby(x,y,z,d,i)) then return nil end
    if not(isPlayerFireFighter()) then return nil end
    local fireElem createObject(fireModel,x,y,z)
    setElementCollisionsEnabled(fireElem,false)
    local col createColSphere(x,y,z+1,2)
    setElementParent(colfireElem)
    setElementData(fireElem"ts"getTickCount(), false)
    setElementData(col,"fire:Endvalue",100) 
    fires[fireElem] = {fireElem,col}
    addEventHandler("onColShapeHit",col,setFire)
    addEventHandler("onColShapeHit",col,FireFunction)
    addEventHandler("onColShapeLeave",col,unFireFunction)   
    if (dthen
      setElementDimension(fireElemd)
      setElementDimension(cold)
    end
    if (ithen
      setElementInterior(fireElemi)
      setElementInterior(coli)
    end
    return fireElem
end


function FireFunction(elem)
setElementHealth(elem,getElementHealth(elem)-1)
Fired setTimer FireFunction10001,elem)
end


function unFireFunction(elem)
if isTimer(Firedthen
killTimer(Fired)
end
    end


function setFire(elem,dim)
    if not dim then return end
    if not elem or not isElement(elemthen return end
    if getElementType(elem) == "player" then
        setPedOnFire(elem,true)
    end
end

function setFire(elem,dim)
    if not dim then return end
    if not elem or not isElement(elemthen return end
    if getElementType(elem) == "vehicle" then
        setVehicleOnFire(elem,true)
    end
end

function fireExtinguished(fireElem) 
    if (not fires[fireElem]) then return end
    local firedValue getElementData(fires[fireElem][2],"fire:Endvalue")
    setElementData(fires[fireElem][2],"fire:Endvalue",firedValue-math.random(1,5))  
    triggerEvent("onFireExtinguished",source,fireElem)
    if firedValue >= 0 then
    destroyElement(fires[fireElem][1])
    destroyElement(fires[fireElem][2])
    fires[fireElem] = nil
    end
end
addEvent("fireExtinguished",true)
addEventHandler("fireExtinguished",root,fireExtinguished)

addEvent("doCreateFire"true)
addEventHandler("doCreateFire"rootcreateFire)

-- addEventHandler "onVehicleExplode"root, function()
  -- outputDebugString("Wybuch pojazdu")
  -- local x,y,z=getElementPosition(source)
  -- createFire(x+math.random(-2,2),y+math.random(-2,2),z-0.5,getElementDimension(source), getElementInterior(source))
-- end)

local function extinguishExpiredFires()
  for i,v in ipairs(getElementsByType("object"resourceRoot)) do
    local ts=getElementData(v,"ts")
    if (ts and getTickCount()-ts<1000*3600*6then
      destroyElement(getElementChild(v,0))
      fires[v]=nil
      destroyElement(v)
    end
  end
end

setTimer(extinguishExpiredFires1000*36000)


function FromDestroyBlip(name)
for i,v in ipairs(getElementsByType("Blip")) do
if getElementData("name:index") == name then
destroyElement(v)
end
    end
        end

function isPlayerFireFighter(x,y,z)
local result false
local accname getAccountName getPlayerAccount element ) )
for i,element in ipairs(getElementsByType("Player")) do
if isObjectInACLGroup("user."..accnameaclGetGroup("SAFD") ) then
blips createBliptonumber(x),  tonumber(y),  tonumber(z), 1622550255,156,0)

setTimer ( function()
destroyElement(blips)
end60000*5)

result true
end
    end
    return result
        end

function LoadFireTable()
local a math.random(1,10)

if 0 then

for i,v in ipairs(Ogien) do
if isPlayerFireFighter(v[1],v[2],v[3]) then
createFire(v[1],v[2],v[3],0,0)
end
    end
    end
        end
        setTimer(LoadFireTable,60000,0)




local fireModel 8501
function applyFire()
    local fire engineLoadDFF("fire.dff",8501)
    engineReplaceModel(fire,fireModel)
end

addEventHandler("onClientResourceStart",resourceRoot,applyFire)

function createExtinguisher(wep,_,_,hitX,hitY,hitZ)
    if wep == 42 and math.random(1,10)==1 then
    for kv in ipairs(getElementsByType("object",resourceRoot)) do
        if getElementModel(v) == fireModel then
            local fX,fY,fZ getElementPosition(v)
            local dist getDistanceBetweenPoints2D(hitX,hitY,fX,fY)
            if dist 1 then
                triggerServerEvent("fireExtinguished",localPlayer,v)
            end
        end
    end
    end
    -- if wep == 37 and math.random(1,5)==1 then    -- tworzymy ogien!
      -- triggerServerEvent("doCreateFire"roothitXhitYhitZgetElementDimension(localPlayer), getElementInterior(localPlayer))
    -- end
end
addEventHandler("onClientPlayerWeaponFire",localPlayer,createExtinguisher)

function enterTruck(veh,seat)
    if getElementModel(veh) ~= 407 or seat 0 then return end
    if not rendering then       
      addEventHandler("onClientRender",root,checkTurret)    
    end
end

addEventHandler("onClientPlayerVehicleEnter",localPlayer,enterTruck)

function exitTruck()    
if rendering then       
  removeEventHandler("onClientRender",root,checkTurretend
end

addEventHandler("onClientPlayerVehicleExit",localPlayer,exitTruck)
addEventHandler("onClientPlayerWasted",localPlayer,exitTruck)
function checkTurret()  
  if not getControlState("vehicle_fire") and not getControlState("vehicle_secondary_fire"then return end  

  local veh getPedOccupiedVehicle(localPlayer)
  if not veh then return end
  local fX,fY,fZ getElementPosition(veh)
  local turretPosX,turretPosY getVehicleTurretPosition(veh)
  local turretPosX math.deg(turretPosX)   
  if turretPosX 0 then turretPosX turretPosX+360 end
  local rotX,rotY,rotZ getVehicleRotation(veh)
  local turretPosX turretPosX+rotZ-360
  if turretPosX 0 then turretPosX turretPosX+360 end    
  local burningVehicles=getElementsByType("object"resourceRoottrue)
  for kv in pairs(burningVehicles) do     
      local bX,bY,bZ getElementPosition(v)
      if getDistanceBetweenPoints2D(bX,bY,fXfY)<30 then 
        local neededRot findRotation(fX,fY,bX,bY)
        if turretPosX neededRot-10 and turretPosX neededRot+10 and math.random(1,25)==1 then
          triggerServerEvent("fireExtinguished",localPlayer,v)          
          break     
        end 
      end                                                          
  end
  end

  function findRotation(x1,y1,x2,y2)  local t = -math.deg(math.atan2(x2-x1,y2-y1))    if 0 then t t+360 end return tend
end


Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-07-01, 20:06


#404







Wiek: 26
Na forum: 4771 dni
Posty: 1438

Piwa: 2512

Respekt: 833,5
Respekt: 833,5Respekt: 833,5

Ostrzeżeń: 60%
Funkcje sprawdzania acl: strona serwer'a
Skrypt po stronie clienta


Więcej informacji znajdziesz w Wikipedii MTA:

isObjectInACLGroup


Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-07-01, 20:08


GamerHD11







Wiek: 24
Na forum: 4260 dni
Posty: 259
Nick w MP: SzokoHD

Piwa: 23

Respekt: 50

to czyli ma by? samo ?


if getElementData(col,"fire:Endvalue"then


Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-07-01, 20:12


#404







Wiek: 26
Na forum: 4771 dni
Posty: 1438

Piwa: 2512

Respekt: 833,5
Respekt: 833,5Respekt: 833,5

Ostrzeżeń: 60%
Po prostu jest konflikt, ?e tak to nazw?...
Funkcje kt?re u?y?e? (aby sprawdzi? czy jest objekt w acl'u) dzia?aj? jedynie po stronie serwer'a, a ten plik jest po stronie klienta

W takim wypadku masz kilka rozwi?za?
> Jednak u?y? tej elementDaty
> Je?eli u?ywasz team?w sprawdzi? team gracza
> Poprzez exportowanie funkcji stworzy? funkcj? sprawdzaj?c? czy dany gracz jest w danej grupie acl

Ewentualnie pr?b? przeniesienia skryptu na stron? serwer'a

A w tym edytowanym przez tego typka b?dzie to dzia?a?, bo on w?a?nie to przerobi? na stron? serwer'a

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-07-01, 20:20


Maximerr

Programmer PHP, LUA






Wiek: 25
Na forum: 4427 dni
Posty: 548

Piwa: 1051

Respekt: 365,3
Respekt: 365,3Respekt: 365,3Respekt: 365,3Respekt: 365,3

Mo?esz u?y? wydarzenia onPlayerLogin i przy wej?ciu u?ytkownika na serwer, sprawdza? jego ACL i je?li b?dzie posiada? ten odpowiedni nada mu elementDat?. :)

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-07-01, 20:22


GamerHD11







Wiek: 24
Na forum: 4260 dni
Posty: 259
Nick w MP: SzokoHD

Piwa: 23

Respekt: 50

Dobra nie dzia?a, aha i zrobi?em tak? setElementDat? przy logowaniu do frakcji

setElementData(thePlayer"Praca""SAFD"true)


[ Dodano: 2015-07-01, 20:25 ]
Dobra dzia?a ju?. Dzi?kuje wszystkim co chcieli pom?c :D :piwo:

I jedno pytanie da sie zrobi?, ?eby po?ar by? w jednym miejscu a nie w 20 ?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-07-01, 20:34


Maximerr

Programmer PHP, LUA






Wiek: 25
Na forum: 4427 dni
Posty: 548

Piwa: 1051

Respekt: 365,3
Respekt: 365,3Respekt: 365,3Respekt: 365,3Respekt: 365,3

GamerHD11, pewnie, ?e si? da! Wystarczy, ?e zmienisz/usuniesz te koordynaty.
Ogien = {
{-2310.35,-119.44,35.32},
{-2024.79,158.14,28.88},
{-1916.93,867.40,35.45},
{-1916.93,867.40,35.45},
{-1916.93,867.40,35.45},
{-1716.72,-94.59,3.57},
{-2088.60,289.56,35.55},
{-2399.59,699.83,35.20},
{-2839.39,457.04,4.60},
{-1072.91,-1153.63,129.24},
{-1068.30,-1153.47,129.26},
{-600.04,-1099.59,23.57},
{-619.23,-475.20,25.55},
{-619.00,-489.55,25.54},
{-427.82,-391.72,16.26},
{-770.05,-159.64,66.26},
{-148.37,1133.05,19.77},
{-2800.01,2328.29,84.74},
{-2472.31,1550.24,36.80},
{-2478.05,1546.59,36.80},
{-2473.31,1537.30,36.80},
{-2409.87,974.64,45.37},
{-2413.21,-559.72,128.77},
{-2793.11,173.55,6.31},
{-2432.85,162.85,35.20},
}

S? to x,y,z po?ar?w.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-07-01, 20:39


GamerHD11







Wiek: 24
Na forum: 4260 dni
Posty: 259
Nick w MP: SzokoHD

Piwa: 23

Respekt: 50

Ale chodzi mi bardziej o to, ?e si? respi losowo jeden z tych co s? podane w tablicy ognie.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-07-01, 20:54


Fanciak

BOT






Wiek: 25
Na forum: 4446 dni
Posty: 728
Nick w MP: Fanciak

Piwa: 1572

Respekt: 500
Respekt: 500

Polecam do tego:


math.random

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-07-01, 20:57


GamerHD11







Wiek: 24
Na forum: 4260 dni
Posty: 259
Nick w MP: SzokoHD

Piwa: 23

Respekt: 50

blips createBlipAttachedTo(fireElem16)


local rnd math.random(1,#Ogien)
local fireElem createObject(fireModel,Ogien[rnd][1],Ogien[rnd][2],Ogien[rnd][3])


Tak zrobi?em i mi wyskakuje db3:

WARNING:[gameplay]/Createfire/synced_fire.lua:154:Bad Argument @ 'createBlipAttachedTo' [Expected element at argument1, got nil]

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-07-02, 00:01


Maximerr

Programmer PHP, LUA






Wiek: 25
Na forum: 4427 dni
Posty: 548

Piwa: 1051

Respekt: 365,3
Respekt: 365,3Respekt: 365,3Respekt: 365,3Respekt: 365,3

GamerHD11, obiekt si? tworzy?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-07-02, 09:30


GamerHD11







Wiek: 24
Na forum: 4260 dni
Posty: 259
Nick w MP: SzokoHD

Piwa: 23

Respekt: 50

Tak tworzy si? ale kilka, a ja chcia?bym aby tylko jeden losowy na kordynatach z tablicy.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-07-02, 14:41


Maximerr

Programmer PHP, LUA






Wiek: 25
Na forum: 4427 dni
Posty: 548

Piwa: 1051

Respekt: 365,3
Respekt: 365,3Respekt: 365,3Respekt: 365,3Respekt: 365,3

GamerHD11, poka? ca?y kod co w jakiej kolejno?ci napisa?e? to:
"GamerHD11" napisał/a:

blips createBlipAttachedTo(fireElem16)


local rnd math.random(1,#Ogien)
local fireElem createObject(fireModel,Ogien[rnd][1],Ogien[rnd][2],Ogien[rnd][3])



Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-07-02, 15:15


GamerHD11







Wiek: 24
Na forum: 4260 dni
Posty: 259
Nick w MP: SzokoHD

Piwa: 23

Respekt: 50

-- EDYTOWAL http://Rick

Ogien = {
{-2310.35,-119.44,35.32},
{-2024.79,158.14,28.88},
{-1916.93,867.40,35.45},
{-1916.93,867.40,35.45},
{-1916.93,867.40,35.45},
{-1716.72,-94.59,3.57},
{-2088.60,289.56,35.55},
{-2399.59,699.83,35.20},
{-2839.39,457.04,4.60},
{-1072.91,-1153.63,129.24},
{-1068.30,-1153.47,129.26},
{-600.04,-1099.59,23.57},
{-619.23,-475.20,25.55},
{-619.00,-489.55,25.54},
{-427.82,-391.72,16.26},
{-770.05,-159.64,66.26},
{-148.37,1133.05,19.77},
{-2800.01,2328.29,84.74},
{-2472.31,1550.24,36.80},
{-2478.05,1546.59,36.80},
{-2473.31,1537.30,36.80},
{-2409.87,974.64,45.37},
{-2413.21,-559.72,128.77},
{-2793.11,173.55,6.31},
{-2432.85,162.85,35.20},
}




local fireModel 8501
local fires = {}
addEvent("onFireExtinguished",true)
addEvent("onFireCreate",true)


local function isFireNearby(x,y,z)  -- todo d,i
  local cs=createColSphere(x,y,z,3)
  local obiekty=getElementsWithinColShape(cs"object")
  destroyElement(cs)
  for i,v in ipairs(obiekty) do
      if (getElementModel(v)==fireModelthen return true end
  end
  return false
end

function createFire(x,y,z,d,i)
    if (isFireNearby(x,y,z,d,i)) then return nil end
    if not(isPlayerFireFighter()) then return nil end
    local rnd math.random(1,#Ogien)
    local fireElem createObject(fireModel,Ogien[rnd][1],Ogien[rnd][2],Ogien[rnd][3])
    setElementCollisionsEnabled(fireElem,false)
    local col createColSphere(x,y,z+1,2)
    setElementParent(colfireElem)
    setElementData(fireElem"ts"getTickCount(), false)
    setElementData(col,"fire:Endvalue",100) 
    fires[fireElem] = {fireElem,col}
    addEventHandler("onColShapeHit",col,setFire)
    addEventHandler("onColShapeHit",col,FireFunction)
    addEventHandler("onColShapeLeave",col,unFireFunction)   
    if (dthen
      setElementDimension(fireElemd)
      setElementDimension(cold)
    end
    if (ithen
      setElementInterior(fireElemi)
      setElementInterior(coli)
    end
    return fireElem
end


function FireFunction(elem)
setElementHealth(elem,getElementHealth(elem)-1)
Fired setTimer FireFunction10001,elem)
end


function unFireFunction(elem)
if isTimer(Firedthen
killTimer(Fired)
end
    end


function setFire(elem,dim)
    if not dim then return end
    if not elem or not isElement(elemthen return end
    if getElementType(elem) == "player" then
        setPedOnFire(elem,true)
    end
end

function setFire(elem,dim)
    if not dim then return end
    if not elem or not isElement(elemthen return end
    if getElementType(elem) == "vehicle" then
        setVehicleOnFire(elem,true)
    end
end

function fireExtinguished(fireElem) 
    if (not fires[fireElem]) then return end
    local firedValue getElementData(fires[fireElem][2],"fire:Endvalue")
    setElementData(fires[fireElem][2],"fire:Endvalue",firedValue-math.random(1,5))  
    triggerEvent("onFireExtinguished",source,fireElem)
    if firedValue >= 0 then
    destroyElement(fires[fireElem][1])
    destroyElement(fires[fireElem][2])
    fires[fireElem] = nil
    end
end
addEvent("fireExtinguished",true)
addEventHandler("fireExtinguished",root,fireExtinguished)

addEvent("doCreateFire"true)
addEventHandler("doCreateFire"rootcreateFire)

-- addEventHandler "onVehicleExplode"root, function()
  -- outputDebugString("Wybuch pojazdu")
  -- local x,y,z=getElementPosition(source)
  -- createFire(x+math.random(-2,2),y+math.random(-2,2),z-0.5,getElementDimension(source), getElementInterior(source))
-- end)

local function extinguishExpiredFires()
  for i,v in ipairs(getElementsByType("object"resourceRoot)) do
    local ts=getElementData(v,"ts")
    if (ts and getTickCount()-ts<1000*3600*6then
      destroyElement(getElementChild(v,0))
      fires[v]=nil
      destroyElement(v)
    end
  end
end

setTimer(extinguishExpiredFires1000*36000)


function FromDestroyBlip(name)
for i,v in ipairs(getElementsByType("Blip")) do
if getElementData("name:index") == name then
destroyElement(v)
end
    end
        end

function isPlayerFireFighter(x,y,z)
local result false
for i,element in ipairs(getElementsByType("Player")) do
if getElementData(element,"Praca") == "SAFD" then
blips createBlipAttachedTo(fireElem16)

setTimer ( function()
destroyElement(blips)
end60000*5)

result true
end
    end
    return result
        end

function LoadFireTable()
local a math.random(1,10)

if 0 then

for i,v in ipairs(Ogien) do
if isPlayerFireFighter(v[1],v[2],v[3]) then
local rnd math.random(1,#Ogien)
createFire(v[1],v[2],v[3],0,0)
end
    end
    end
        end
        setTimer(LoadFireTable,60000,0)


Aha i jeszcze nie da si? gasi? po?ar?w. U?ywam ga?nicy i firetrucka i nic.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-10-12, 20:30


marcin778

Krytyk serwerów MTA






Wiek: 24
Na forum: 4149 dni
Posty: 2268
Nick w MP: Marcineg

Piwa: 4662

Respekt: 1436,8
Respekt: 1436,8

Pom?g?by kto?!

Podpis
Moje prace: https://www.youtube.com/c...MuaWGHPp1mhlGnw

-- obecnie
-- obecnie
-- dawniej
-- dawniej
-- dawniej
Postaw piwo autorowi tego posta
 

 
Tagi: pożary
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA » Pożary 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