Dixers
No-Life
Wiek: 26 Na forum: 4313 dni Posty: 549
Nick w MP: Dixers
Piwa : 412
Witam serdecznie. Nie dzia?a mi save pojazd?w do XML w tym o to skrypcie. Poka?? tak?e, jak zrobi?em XML, oraz meta, bo mo?e to tam jest b??d:
Skrypt:
cars ={}
buycarpickup ={}
maxcars = 0
addEventHandler ( "onResourceStart" , getResourceRootElement (),
function ()
local root = xmlLoadFile ( "cars.xml" )
local houseroot = xmlFindChild ( root , "cars" , 0 )
if ( houseroot ) then
for i , v in ipairs ( xmlNodeGetChildren ( houseroot )) do
local carmodel = xmlNodeGetAttribute ( v , "model" )
local x = xmlNodeGetAttribute ( v , "x" )
local y = xmlNodeGetAttribute ( v , "y" )
local z = xmlNodeGetAttribute ( v , "z" )
local color1 = xmlNodeGetAttribute ( v , "color1" )
local color2 = xmlNodeGetAttribute ( v , "color2" )
local owner = xmlNodeGetAttribute ( v , "owner" )
local price = xmlNodeGetAttribute ( v , "price" )
local lock = xmlNodeGetAttribute ( v , "lock" )
local a = xmlNodeGetAttribute ( v , "a" )
cars [ i ] = createVehicle ( tonumber ( carmodel ), tonumber ( x ), tonumber ( y ), tonumber ( z ), 0 , 0 , tonumber ( a ) )
setElementInterior ( cars , 0 )
setElementData ( cars , "xpos" , tonumber ( x ))
setElementData ( cars , "ypos" , tonumber ( y ))
setElementData ( cars , "zpos" , tonumber ( z ))
setElementData ( cars , "angle" , tonumber ( a ))
setElementData ( cars , "owner" , owner )
setElementData ( cars , "price" , tonumber ( price ))
setElementData ( cars , "lock" , tonumber ( lock ))
setElementData ( cars , "num" , i )
setVehicleColor ( cars , tonumber ( color1 ), tonumber ( color2 ), 0 , 0 )
if( lock == 1 ) then
setVehicleLocked ( cars , true )
end
if getElementData ( cars , "owner" ) == "Nobody" then
buycarpickup = createPickup ( x , y , z , 3 , 1274 )
attachElements ( buycarpickup , cars , 0 , 0 , 1.9 )
end
maxcars = maxcars + 1
end
outputDebugString ( "Pojazdy zosta?y wczytane!" )
end
end
)
function saveCars ()
local root = xmlLoadFile ( "cars.xml" )
local houseroot = xmlFindChild ( root , "cars" , 0 )
if ( houseroot ) then
for i , v in ipairs ( xmlNodeGetChildren ( houseroot )) do
local color1 , color2 , color3 , color4 = getVehicleColor ( cars )
xmlNodeSetAttribute ( v , "model" , getElementModel ( cars ) )
xmlNodeSetAttribute ( v , "x" , getElementData ( cars , "xpos" ) )
xmlNodeSetAttribute ( v , "y" , getElementData ( cars , "ypos" ) )
xmlNodeSetAttribute ( v , "z" , getElementData ( cars , "zpos" ) )
xmlNodeSetAttribute ( v , "a" , getElementData ( cars , "angle" ) )
xmlNodeSetAttribute ( v , "color1" , color1 )
xmlNodeSetAttribute ( v , "color2" , color2 )
xmlNodeSetAttribute ( v , "owner" , getElementData ( cars , "owner" ) )
xmlNodeSetAttribute ( v , "price" , getElementData ( cars , "price" ) )
xmlNodeSetAttribute ( v , "lock" , getElementData ( cars , "lock" ) )
end
xmlSaveFile ( root )
end
end
function adminCreateVehicle ( source , cmd )
local accName = getAccountName ( getPlayerAccount ( source ) )
if isObjectInACLGroup ( "user." .. accName , aclGetGroup ( "RCON" ) ) then
local root = xmlLoadFile ( "cars.xml" )
local houseroot = xmlFindChild ( root , "cars" , 0 )
local createdcar = xmlCreateChild ( houseroot , "vehicle" )
local carmodel = xmlNodeSetAttribute ( createdcar , "model" , "451" )
local x , y , z = getElementPosition ( source )
local xa , ya , a = getElementRotation ( source )
xmlNodeSetAttribute ( createdcar , "x" , x )
xmlNodeSetAttribute ( createdcar , "y" , y )
xmlNodeSetAttribute ( createdcar , "z" , z )
xmlNodeSetAttribute ( createdcar , "a" , a )
xmlNodeSetAttribute ( createdcar , "color1" , "0" )
xmlNodeSetAttribute ( createdcar , "color2" , "0" )
xmlNodeSetAttribute ( createdcar , "owner" , "Nobody" )
xmlNodeSetAttribute ( createdcar , "price" , "0" )
xmlNodeSetAttribute ( createdcar , "lock" , "0" )
cars [ maxcars + 1 ] = createVehicle ( 451 , x , y , z , 0 , 0 , a )
setElementData ( cars [ maxcars + 1 ], "xpos" , x )
setElementData ( cars [ maxcars + 1 ], "ypos" , y )
setElementData ( cars [ maxcars + 1 ], "zpos" , z )
setElementData ( cars [ maxcars + 1 ], "angle" , a )
setElementData ( cars [ maxcars + 1 ], "owner" , "Nobody" )
setElementData ( cars [ maxcars + 1 ], "price" , 0 )
setElementData ( cars [ maxcars + 1 ], "lock" , 0 )
xmlSaveFile ( root )
maxcars = maxcars + 1
else
outputChatBox ( "Nie masz praw do tej komendy." , source , 255 , 255 , 127 )
end
end
addCommandHandler ( "create" , adminCreateVehicle )
addCommandHandler ( "save" , saveCars )
function getCar ( car )
return cars [ car ]
end
function enterVehicle ( source , seat , jacked )
local playercar = getPedOccupiedVehicle ( source )
if( seat == 0 ) then
if ( getElementData ( playercar , "owner" )) then
if( getElementData ( playercar , "owner" ) ~= "Nobody" ) then
if( getElementData ( playercar , "owner" ) == getPlayerName ( source )) then
outputChatBox ( "Witaj w swoim samochodzie!" , source , 255 , 255 , 127 )
else
outputChatBox ( "Ten pojazd nalezy do gracza: " .. getElementData ( playercar , "owner" ).. "" , source , 255 , 255 , 127 )
end
else
local price = getElementData ( playercar , "price" )
triggerClientEvent ( source , "showBuyCar" , source , price )
toggleAllControls ( source , false , true , false )
return true
end
end
end
end
addEventHandler ( "onVehicleEnter" , getRootElement (), enterVehicle )
function AcceptToBuyCar ( )
local playercar = getPedOccupiedVehicle ( source )
if( getElementData ( playercar , "owner" ) == "Nobody" ) then
if( getPlayerMoney ( source ) > tonumber ( getElementData ( playercar , "price" ))) then
setElementData ( playercar , "owner" , getPlayerName ( source ))
takePlayerMoney ( source , tonumber ( getElementData ( playercar , "price" )))
toggleAllControls ( source , true )
outputChatBox ( "Kupile? pojazd!" , source , 243 , 149 , 72 )
destroyElement ( buycarpickup [ getElementData ( playercar , "num" )])
saveCars ()
else
outputChatBox ( "Nie masz tyle pini?dzy." , source , 243 , 149 , 72 )
setControlState ( source , "enter_exit" , true )
end
end
end
addEvent ( "acceptBuyCar" , true )
addEventHandler ( "acceptBuyCar" , root , AcceptToBuyCar )
function playerCarLock ( source , cmd )
for i , v in ipairs ( cars ) do
if( getElementData ( cars , "owner" ) == getPlayerName ( source )) then
setVehicleLocked ( cars , true )
setElementData ( cars , "lock" , 1 )
outputChatBox ( "Pojazd zamniety" , source , 243 , 149 , 72 )
saveCars ()
end
end
end
addCommandHandler ( "zamknij" , playerCarLock )
function playerCarUnLock ( source , cmd )
for i , v in ipairs ( cars ) do
if( getElementData ( cars , "owner" ) == getPlayerName ( source )) then
setVehicleLocked ( cars , false )
setElementData ( cars , "lock" , 0 )
outputChatBox ( "Otworzono pojazd" , source , 243 , 149 , 72 )
saveCars ()
end
end
end
addCommandHandler ( "otworz" , playerCarUnLock )
cars.xml
Kod:
<car>
<cars>
</cars>
</car>
meta.xml
Kod:
<meta>
<script src="cars_main.lua" />
<script src="cars_client.lua" type="client" />
<script src="cars_commands.lua" />
<export function="saveCars" />
<file src="cars.xml" />
</meta>
Za pomoc stawiam piwka i reputacje +5