Ruga Posted April 18, 2013 Share Posted April 18, 2013 (edited) Меня вот интересует, каким образом работает xmlDestroyNode, я реально не допонимаю... вот код, с внесением строк в xml local root = xmlLoadFile ("cars.xml") local houseroot = xmlFindChild (root,"cars",0) local createdcar = xmlCreateChild ( houseroot, "vehicle" ) local carmodel = xmlNodeSetAttribute ( createdcar, "model", "562" ) local x, y, z = getElementPosition ( thePlayer ) local xa,ya,a = getElementRotation ( thePlayer ) xmlNodeSetAttribute ( createdcar, "x", x ) xmlNodeSetAttribute ( createdcar, "y", y ) xmlNodeSetAttribute ( createdcar, "z", z ) xmlNodeSetAttribute ( createdcar, "a", angle ) xmlNodeSetAttribute ( createdcar, "color1", "0" ) xmlNodeSetAttribute ( createdcar, "color2", "0" ) xmlNodeSetAttribute ( createdcar, "owner", "0" ) xmlNodeSetAttribute ( createdcar, "type", "8" ) xmlNodeSetAttribute ( createdcar, "price", "500" ) xmlNodeSetAttribute ( createdcar, "lock", "0" ) cars[maxcars+1] = createVehicle ( 562,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",pose) setElementData (cars[maxcars+1],"price",500) setElementData (cars[maxcars+1],"type",8) setElementData (cars[maxcars+1],"lock",0) xmlSaveFile(root) maxcars = maxcars+1 saveCars () как можно, с помощью xmlDestroyNode их удалить?(( не сталкивался с этим, до сей момента(((( тоесть так же подгружаем источник сам файл, подгружаем нужную строку а каким способом удалять из строки данные или же всю строку целиком?(( Edited April 22, 2013 by Guest Link to comment
Flaker Posted April 18, 2013 Share Posted April 18, 2013 Относительно твоего кода: xmlDestroyNode( createdcar ) В аргументе просто ссылка на нод должна быть... Главное сохранять не забывай. Link to comment
Ruga Posted April 18, 2013 Author Share Posted April 18, 2013 вот спасибо)) сейчас попробую))))) Link to comment
Ruga Posted April 18, 2013 Author Share Posted April 18, 2013 всего то нужно было немного подумать)) Flaker, я тебе от души благодарен всегда приходишь на помощ)) вот вообщем что вышло)) local root = xmlLoadFile ("cars.xml") local houseroot = xmlFindChild (root,"cars",0) local createdcar = xmlFindChild ( houseroot, "vehicle",0) xmlDestroyNode( createdcar ) xmlSaveFile(root) maxcars = maxcars+1 saveCars () насколько правильно, или нет, но это работает и без ошибок, может еще когда нибудь что нибудь выдаст но на данный момент дебаг молчит))) Link to comment
Ruga Posted April 18, 2013 Author Share Posted April 18, 2013 теперь осталось только разобраться, что бы удалял он не по очереди, а по модели в которой сидит игрок, тоесть есть маркер на него заезжает тс, и дестрой ее а не очередь которой добавлялась запись (( Link to comment
Ruga Posted April 18, 2013 Author Share Posted April 18, 2013 (edited) код function selCarsPay (source,command) local playercar = getPedOccupiedVehicle ( source ) if exports.povoPeds:playerToPoint ( source, 3, getElementPosition ( markers ) ) then if(tonumber(getElementData ( playercar, "type" )) ~= -- s8) --> then return end if(tonumber(getElementData ( playercar, "owner" )) == 0) then return en if(tonumber(getElementData ( playercar, "owner" )) ~= tonumber(getElementData ( source, "playerid" ))) then return end givePlayerMoney ( source, getElementData ( playercar, "price" )/100*50 ) local root = xmlLoadFile ("cars.xml") local houseroot = xmlFindChild (root,"cars",0) local createdcar = xmlFindChild ( houseroot, "vehicle",0) xmlDestroyNode(createdcar ) xmlSaveFile(root) maxcars = maxcars+1 saveCars () destroyElement(playercar) end end addCommandHandler ("sellcar", selCarsPay) 5 строку не знаю почему так пишет, там условие неравенства к 8 Edited April 18, 2013 by Guest Link to comment
Flaker Posted April 18, 2013 Share Posted April 18, 2013 Присваивай каждой машине уникальный номер ( ID ). В XML документе по ID машины ищи какую удалить... Link to comment
Ruga Posted April 18, 2013 Author Share Posted April 18, 2013 допустим вот так ?)) xmlNodeSetAttribute ( createdcar, "ID", math.random(1000,99999) ) а каким способом поиск сделать? Link to comment
Kenix Posted April 18, 2013 Share Posted April 18, 2013 Ид должен быть уникальным. Не логично использовать math.random т.к ид может повторяться. Link to comment
Ruga Posted April 18, 2013 Author Share Posted April 18, 2013 а ведь у каждой машины есть вроде имя, как его можно записать? через xmlNodeSetAttribute ... Link to comment
Flaker Posted April 18, 2013 Share Posted April 18, 2013 Имя не уникально... Тебе ID нужно... Самый простой вариант: В цикле пробегись по всем машинам в XML, и найди нужный ID Link to comment
Ruga Posted April 18, 2013 Author Share Posted April 18, 2013 for id, но как id присваивать машинам если через рандом и правда выходит не красиво, а в xml записывается кар после покупки, тоесть id нужно присвоить атрибутом xml Link to comment
Ruga Posted April 18, 2013 Author Share Posted April 18, 2013 может создать отдельный xml куда ид по возрастанию будет записывать, и сделать при спавне новой кар присваивание ей этого самого ид, к примеру ид записано 3, при покупке туда пишется 4 и присваиваем кару ид 4, тоесть по возрастанию, но это в теории хорошо))) Link to comment
Ruga Posted April 18, 2013 Author Share Posted April 18, 2013 что наподобие)) local root = xmlLoadFile ("cars.xml") local houseroot = xmlFindChild (root,"cars",0) local createdcar = xmlCreateChild ( houseroot, "vehicle" ) local carmodel = xmlNodeSetAttribute ( createdcar, "model", "562" ) local xmlFileIDCars = xmlLoadFile ( "IDS.xml" ) local idnumber = xmlFindChild ( xmlFileIDCars, "id", 0 ) local numberid = xmlNodeGetValue ( idnumber ) local idcars = numberid + 1 -- и вместе с атрибутами потом вставить xmlNodeSetAttribute ( createdcar, "id", idcars ) но не уверен что будет работать, проверить не могу пока((( Link to comment
Ruga Posted April 18, 2013 Author Share Posted April 18, 2013 мм.. не хватает xmlNodeSetValue ( idnumber, tostring(idcars) ) и вместо xmlNodeSetAttribute ( createdcar, "id", idcars ) вот так xmlNodeSetAttribute ( createdcar, "id", ""..tostring(idcars).."" ) и все обязано будет работать, я так думаю)) Link to comment
Ruga Posted April 18, 2013 Author Share Posted April 18, 2013 хм))) ну вроде все ребят)) Спасибо вам за дельные советы)) вообщем создал допольнительный XML дабы черпать оттуда id, и сделал цикл for i,v in ipairs (cars) do if(getElementData ( cars, "id" ) == getElementData ( playercar, "id" )) then теперь удаляет только то авто которое нужно, по его ID)) вообщем спасибо))) 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