Jump to content

System prywatnych pojazdów


Recommended Posts

Witam. Pisze skrypt na prywatne pojazdy które zapisują się w pliku xml. Ale mam mały problem. Polega on na tym że kiedy wybieram pojazd z gridlisty i klikam stwórz to po stronie serwera dodaje się wszystko do pliku xml ale pojazd się nie tworzy.

Kod po stronie klienta w którym dodaje pojazdy do gridlisty i potem pobieram pojazd do stworzenia.

  
function pokazPanel()  
guiSetInputEnabled(true)  
guiSetVisible(GUIEditor.tabpanel[1],true)  
showCursor(true)  
for i = 0, 211 do  
if ( getVehicleNameFromModel ( 400 + i ) ~= "" ) then  
local row = guiGridListAddRow(GUIEditor.gridlist[2])  
guiGridListSetItemText (GUIEditor.gridlist[2], row,1, getVehicleNameFromModel(400+i), false, false )  
guiGridListSetItemText (GUIEditor.gridlist[2], row,2, 400+i, false, false )  
end  
end  
end  
addEvent("Panel:Pokaz_Osobowe",true)  
addEventHandler("Panel:Pokaz_Osobowe",getRootElement(),pokazPanel)  
  
function AutaClientTworz()  
local nazwa = guiGridListGetItemText ( GUIEditor.gridlist[2], guiGridListGetSelectedItem ( GUIEditor.gridlist[2] ), 2 )  
if nazwa ~= "" then  
triggerServerEvent("AutaServer:Tworz",getLocalPlayer(),getLocalPlayer(),nazwa)  
else  
outputChatBox("*Musisz wybrać pojazd z listy!", source, 255, 255, 255)  
end  
end  
addEventHandler("onClientGUIClick",GUIEditor.button[1],AutaClientTworz,false) 

I kod po stronie serwera w którym dodaje pojazd do pliku xml i tworze go.

function AutaServerTworz(nazwa)  
if (not isPedInVehicle(source)) then  
if (hasObjectPermissionTo (source,"command.aexec",false)) then  
local x,y,z = getElementPosition (source)  
local PojazdCount = tonumber(getPojazdCount())  
local root = xmlLoadFile ("auta.xml")  
local PojazdRoot = xmlFindChild (root,"autka",0)  
local newPojazd = xmlCreateChild (PojazdRoot,"auta")  
xmlNodeSetAttribute (newPojazd,"x",x)  
xmlNodeSetAttribute (newPojazd,"y",y)  
xmlNodeSetAttribute (newPojazd,"z",z)  
xmlNodeSetAttribute (newPojazd,"model",nazwa)  
xmlNodeSetAttribute (newPojazd,"owner","")  
pojazd = createVehicle (nazwa, x, y+5, z)  
outputChatBox ("* Pomyślnie stworzono pojazd prywanty. ID pojazdu: "..PojazdCount,source,255,255,255,false)  
xmlSaveFile (root)  
xmlUnloadFile (root)  
setTimer ( onStart, 2000, 1 )  
else  
outputChatBox ("* Nie posiadasz dostępu do stawiania aut!",source,255,255,255,false)  
end  
else  
outputChatBox ("* Musisz wyjść z pojazdu!",thePlayer,255,255,255,false)  
end  
end  
addEvent("AutaServer:Tworz", true)  
addEventHandler("AutaServer:Tworz", root, AutaServerTworz) 

Bardzo proszę o pomoc.

Link to comment

Jak dodałem tą linijkę to na czacie nic się nie wyświetliło ale w debugscript wyskoczył taki błąd: Bad argument @ 'outputChatBox' [Expected string at argument 1, got player].

Napiszę jeszcze jaki błąd wyskakuje podczas tworzenia pojazdu.

Bad argument @ 'createVehicle' [Expected number at argument 1, got player].

Proszę o pomoc.

Link to comment

Dzięki to już działa. Ale mam teraz mały problem z ustawieniem właściciela.

tutaj macie kod:

function WlascicielZmien(nick) 
local root = xmlLoadFile ("auta.xml") 
local PojazdHeadRootNode = xmlFindChild (root,"autka",0) 
local idPojazdu = tonumber(getPojazdCount()) 
local vehicle = getPedOccupiedVehicle(source) 
if vehicle then 
local PojazdRootNode = xmlFindChild (PojazdHeadRootNode,"auta",tonumber(idPojazdu))   
xmlNodeSetAttribute (PojazdRootNode,"owner",nick) 
outputChatBox("* Pomyślnie zmieniono właściciela pojazdu. Nowym włascicielem jest "..nick..".", source, 255, 255, 255) 
else 
outputChatBox("* Musisz być w pojeździe!", source, 255, 255, 255) 
end 
end 
addEvent("AutaServer:ZmienOwnera", true) 
addEventHandler("AutaServer:ZmienOwnera", root, WlascicielZmien) 

a co do linijki w której pobieram id Pojazdu to tak wygląda ten kod:

function getPojazdCount () 
  local root = xmlLoadFile ("auta.xml") 
  local PojazdyRoot = xmlFindChild (root,"autka",0) 
  local allPojazdy = xmlNodeGetChildren (PojazdyRoot) 
  autka = 0 
  for i,v in ipairs (allPojazdy) do 
    autka = autka+1 
  end 
  xmlUnloadFile (root) 
  return autka 
end  

Błędy wyskakujące podczas zmiany właściciela:

Bad argument @ 'xmlNodeSetAttribute'

Proszę o pomoc :)

Link to comment

Fakt troszkę nie przemyślałem :)

Zrobiłem to teraz w ten sposób że podczas tworzenia pojazdu przydziela mu już ID a potem jak zmieniam właściciela to pobieram te ID. Tylko troszkę coś to nie działa. To znaczy ID przydziela normalnie ale jak zmieniam właściciela to dalej ten sam błąd co wyżej. Ale macie tutaj kod:

function WlascicielZmien(nick) 
local root = xmlLoadFile ("auta.xml") 
local PojazdHeadRootNode = xmlFindChild (root,"autka",0) 
local vehicle = getPedOccupiedVehicle(source) 
if vehicle then 
local idPojazdu = xmlNodeGetAttribute (PojazdHeadRootNode,"numer") 
xmlNodeSetAttribute (idPojazdu,"owner",nick) 
outputChatBox("* Pomyślnie zmieniono właściciela pojazdu. Nowym włascicielem jest "..nick..".", source, 255, 255, 255) 
else 
outputChatBox("* Musisz być w pojeździe!", source, 255, 255, 255) 
end 
end 
addEvent("AutaServer:ZmienOwnera", true) 
addEventHandler("AutaServer:ZmienOwnera", root, WlascicielZmien) 

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...