Szerző Téma: setElementData probléma  (Megtekintve 1359 alkalommal)

setElementData probléma
« Dátum: 2018. január 24. - 16:54:55 »
0 Show voters
 
 

function giveItemInCharge(client, item, amount, slot)
if itemNames[item] then
   if amount then
      if stackableItems [item] then
         local items = getElementData (client, \"items\")
         local itemAndAmount = split (items[slot], \"x\")
         items[slot] = \"\"..itemAndAmount[1]..\"x\"..tostring(tonumber(itemAndAmount[2]) + tonumber(amount))..\"\"
         setElementData (client, \"items\", items, true)
      end      
   end
end
end

 
Teszteltem, ha iprintet rakok az összes feltétel mögé, akkor kiírja az iprint szöveget, tehát minden feltétel tovább engedi.
Ha a setElementData sor után iprint-tel egyből kiírom a getElementData-t akkor az adott értéket rendesen mutatja, de ha azután még ehhez akarok hozzáadni azt már nem csinálja meg.
Valamiért nem marad meg a setElementData fogalmam sincs miért. Kliens oldalon változatlanul az előző értéket írja ha lekérem, pedig szinkronizálva van. Mi lehet a baj? Semmi hibát nem ír ki.
« Utoljára szerkesztve: 2018. január 24. - 17:01:34 írta tomimester »

setElementData probléma
« Válasz #1 Dátum: 2018. január 24. - 18:23:54 »
0 Show voters
True nélkül is szinkronizálja tudtommal az értéket.
 



   
      synchronize: Determines whether or not the data will be synchronized with the server (client-side variation) and remote clients (both variations).
   

[/quote]
 
Ha elsőként állítod be akkor jó értéket kapsz clienten is? És a gond akkor jelentkezik mikor felülszeretnéd írni?

setElementData probléma
« Válasz #2 Dátum: 2018. január 24. - 19:56:28 »
0 Show voters

function testItems(player)
iprint (getElementData(player, \"items\"))
end
addCommandHandler (\"testitems\", testItems)

 
Ezt ugyan abba a fájlba raktam, ahol maga az elementData-t felülíró x utáni számot lecserélő / hozzáadó van.
Megnéztem, itt is az előző értéket mutatja, szerver oldalon.
De ha a setelementdata után egyből odarakom:
 

local items = getElementData (client, \"items\")
local itemAndAmount = split (items[slot], \"x\")
items[slot] = \"\"..itemAndAmount[1]..\"x\"..tostring(tonumber(itemAndAmount[2]) + tonumber(amount))..\"\"
setElementData (client, \"items\", items)
iprint (getElementData(client, \"items\"))

 
Akkor a sor végi iprint a jó értéket mutatja. De a \"testitems\" command pedig a rosszat, pedig ugyan az a 2 sor. Terhát szerver oldalon se jó.
« Utoljára szerkesztve: 2018. január 24. - 19:58:56 írta tomimester »

setElementData probléma
« Válasz #3 Dátum: 2018. január 24. - 20:59:28 »
+1 Show voters
Megoldva:
Az a function ami triggerelte a giveItemInCharge() functiont tele volt feltételekkel, és a feltételek után, azokon kívül volt egy setElementData, tehát miután triggerelt, még beállította magának az azelőtt lekért itemeket.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal