GTA Közösség - A magyar GTA fórum

Multi Theft Auto (MTA) => MTA: Szerverfejlesztés => Segítségkérés => A témát indította: tomimester - 2018. Január 24. - 16:54:55

Cím: setElementData probléma
Írta: tomimester - 2018. Január 24. - 16:54:55
 
 

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.
Cím: setElementData probléma
Írta: AlexSwamp - 2018. Január 24. - 18:23:54
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?
Cím: setElementData probléma
Írta: tomimester - 2018. Január 24. - 19:56:28

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ó.
Cím: setElementData probléma
Írta: tomimester - 2018. Január 24. - 20:59:28
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.