TheTroll Posted March 31, 2014 Share Posted March 31, 2014 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
WhoAmI Posted March 31, 2014 Share Posted March 31, 2014 Po stronie serwera po linijce z createVehicle wklej outputChatBox ( name ) i powiedz co wyświetla na czacie. Link to comment
TheTroll Posted April 1, 2014 Author Share Posted April 1, 2014 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
WhoAmI Posted April 1, 2014 Share Posted April 1, 2014 Zamień to triggerServerEvent("AutaServer:Tworz",getLocalPlayer(),getLocalPlayer(),nazwa) na to triggerServerEvent("AutaServer:Tworz",getLocalPlayer(),nazwa) i będzie działać, Pozdrawiam. Link to comment
TheTroll Posted April 2, 2014 Author Share Posted April 2, 2014 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
WhoAmI Posted April 2, 2014 Share Posted April 2, 2014 Poproszę zawartość a raczej strukturę pliku XML. Link to comment
TheTroll Posted April 2, 2014 Author Share Posted April 2, 2014 Tak wygląda plik xml. <auta> <autka> <auta x="-2424.1513671875" y="-614.8876953125" z="132.55892944336" model="404" owner=""></auta> </autka> </auta> Link to comment
WhoAmI Posted April 2, 2014 Share Posted April 2, 2014 Nie jestem pewien ale to local PojazdRootNode = xmlFindChild (PojazdHeadRootNode,"auta",tonumber(idPojazdu)) Wyszukuje wpis ostatni, bo nadajesz mu index funkcją pobierającą wszystkie auta. Link to comment
TheTroll Posted April 2, 2014 Author Share Posted April 2, 2014 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
WhoAmI Posted April 2, 2014 Share Posted April 2, 2014 Na tym moja pomoc się kończy. XML nigdy nie używałem i wątpię, że kiedykolwiek używać będę. Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now