Jump to content

[Решено]подскажите)) xmlDestroyNode


Recommended Posts

Меня вот интересует, каким образом работает 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 by Guest
Link to comment

всего то нужно было немного подумать)) 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

теперь осталось только разобраться, что бы удалял он не по очереди, а по модели в которой сидит игрок,

тоесть есть маркер на него заезжает тс, и дестрой ее а не очередь которой добавлялась запись ((

Link to comment

код

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 by Guest
Link to comment

for id, но как id присваивать машинам если через рандом и правда выходит не красиво, а в xml записывается кар после покупки, тоесть id нужно присвоить атрибутом xml

Link to comment

может создать отдельный xml куда ид по возрастанию будет записывать, и сделать при спавне новой кар присваивание ей этого самого ид, к примеру ид записано 3, при покупке туда пишется 4 и присваиваем кару ид 4, тоесть по возрастанию, но это в теории хорошо)))

Link to comment

что наподобие))

  
  
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

мм.. не хватает

xmlNodeSetValue ( idnumber, tostring(idcars) )

и вместо

xmlNodeSetAttribute ( createdcar, "id", idcars )

вот так

xmlNodeSetAttribute ( createdcar, "id", ""..tostring(idcars).."" )

и все обязано будет работать, я так думаю))

Link to comment

хм))) ну вроде все ребят)) Спасибо вам за дельные советы))

вообщем создал допольнительный XML дабы черпать оттуда id,

и сделал цикл

for i,v in ipairs (cars) do

if(getElementData ( cars, "id" ) == getElementData ( playercar, "id" )) then

теперь удаляет только то авто которое нужно, по его ID)) вообщем спасибо)))

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...