[YARDIM] Account Data

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı hasan-yilmaz4006

  • Yeni Üye
  • *
    • İleti: 43
: 27 Ekim 2020, 22:00:05
Selamlar normalde roleplay için script yapıyorum fakat freeroama geçmeyi planlıyorum. Normalde MYSQL kullanıyorduk fakat freeroamda sanırım setAccountData fonksiyonları var bu fonksiyonlardan örnekler verebilir misiniz?
 


MTASATURK

[YARDIM] Account Data
« : 27 Ekim 2020, 22:00:05 »

Çevrimdışı Ky

  • Uzman Üye
  • *
    • İleti: 614
Yanıtla #1 : 27 Ekim 2020, 22:10:08
Linki görebilmek için Kayıt olun yada Giriş yapın.
 


Çevrimdışı hasan-yilmaz4006

  • Yeni Üye
  • *
    • İleti: 43
Yanıtla #2 : 27 Ekim 2020, 22:19:47
Linki görebilmek için Kayıt olun yada Giriş yapın.
Linki görebilmek için Kayıt olun yada Giriş yapın.
biliyorum wikiden yaptım fakat boolean hatası veriyor.
Kod
function surekontrol(thePlayer,commandName, account, targetPlayer)
targetPlayer = findPlayerByPartialNick(thePlayer, targetPlayer)
account = getAccountName(getPlayerAccount(thePlayer))
sure = getAccountData(account, "shamalsure")
if not targetPlayer then
outputChatBox("#dede03[Kullanım]#FFFFFF /surekontrol [ID]",thePlayer, 255, 255, 255, true)
return
end
if (account) then
if targetPlayer then
outputChatBox("#dede03[!]#FFFFFF Bu oyuncunun toplam Shamal sürme  süresi: "..sure.."", thePlayer, 255, 255, 255, true)
end
end
end
addCommandHandler("surekontrol", surekontrol)
Düzenleme: Boolean hatasını targetPlayer kısmında vermiyor o fonksiyonu belirttim hatası yok. Datalarda veriyor
 


Çevrimdışı wicky

  • hasssssssikome
  • Acemi Üye
  • *
    • İleti: 169
Yanıtla #3 : 27 Ekim 2020, 22:38:31
syntax;
Kod
setAccountData(account theAccount, string dataKey, string data)
hesaba bir data kaydeder, setElementData gibi ama aralarında bir iki fark var;
1 - setAccountData ile kaydedilen veriler hesap silinmedikçe ve ya setAccountData ile silinmedikçe sonsuza dek durur
2 - setAccountData'da sadece veri olarak string kaydedebilirsin, nedeni ise; setAccountData verileri sqlite'a kaydeder. Eğer tablo vs... kaydetmek istersen toJSON kullanabilirsin

bir kaç örnek;
Kod
addCommandHandler('data',
function(source, cmd, process, data, value)
local sourceAccount = getPlayerAccount(source)

if (process == 'set') then
-- eğer data'yı silmek istersen value kısmına nil vererek silebilirsin
setAccountData(sourceAccount, data, value)
elseif (process == 'get') then
print(getAccountData(sourceAccount, data))
end
end)

toJSON/fromJSON kullanarak;
Kod
function onPlayerQuit()
local x, y, z = getElementPosition(source)

local lastSave = -- JSON verisine dönüştüreceğimiz tablo
{
money  = getPlayerMoney(source),
armor  = getPedArmor(source),
health = getElementHealth(source),

x = x,
y = y,
z = z;
}

-- toJSON bize verilen değerin JSON formatını verir, sadece temel veri tiplerini (string, number, boolean) JSON formatına dönüştürebilirsin
setAccountData(getPlayerAccount(source), 'lastSave', toJSON(playerSave))
end
addEventHandler('onPlayerQuit', root, onPlayerQuit)

addEventHandler('onPlayerLogin', root,
function(_, playerAccount)
local lastSave = fromJSON(getAccountData(playerAccount, 'lastSave'))
-- getAccountData'nın bize verdiği değerin tipi string, biz bunu fromJSON ile tabloya çeviriyoruz

setPedArmor(source, lastSave.armor)
setElementHealth(source, lastSave.health)
setPlayerMoney(source, lastSave.money)

setElementPosition(source, lastSave.x, lastSave.y, lastSave.z)
end)

JSON: makineler ve programlama dilleri arasında veri paylaşımını sağlayan veri değişim formatıdır, XML gibi ama daha pratik ve kullanışlı

toJSON: MTA fonksiyonudur, verilen Lua verisini JSON'a çevirir
fromJSON: Bu da aynı şekilde MTA fonksiyonudur, toJSON ile ve ya başka JSON formatlarını fromJSON ile Lua verisine çevirebilirsin

örnek;
Kod
local json = fileCreate('test.json')
fileWrite(json, toJSON({'öncelikle', 'selamün', 'aleyküm'}))
fileClose(json)
-- test.json dosyasını açıp bak

local json = fileOpen('test.json')
local data = fileRead(json, fileGetSize(json))
print(type(data)) -- string
data = fromJSON(data)
print(type(data)) -- table
iprint(data)
--[[
öncelikle
selamün
aleyküm
]]
 


Çevrimdışı hasan-yilmaz4006

  • Yeni Üye
  • *
    • İleti: 43
Yanıtla #4 : 29 Ekim 2020, 18:02:35
Linki görebilmek için Kayıt olun yada Giriş yapın.
syntax;
Kod
setAccountData(account theAccount, string dataKey, string data)
hesaba bir data kaydeder, setElementData gibi ama aralarında bir iki fark var;
1 - setAccountData ile kaydedilen veriler hesap silinmedikçe ve ya setAccountData ile silinmedikçe sonsuza dek durur
2 - setAccountData'da sadece veri olarak string kaydedebilirsin, nedeni ise; setAccountData verileri sqlite'a kaydeder. Eğer tablo vs... kaydetmek istersen toJSON kullanabilirsin

bir kaç örnek;
Kod
addCommandHandler('data',
function(source, cmd, process, data, value)
local sourceAccount = getPlayerAccount(source)

if (process == 'set') then
-- eğer data'yı silmek istersen value kısmına nil vererek silebilirsin
setAccountData(sourceAccount, data, value)
elseif (process == 'get') then
print(getAccountData(sourceAccount, data))
end
end)

toJSON/fromJSON kullanarak;
Kod
function onPlayerQuit()
local x, y, z = getElementPosition(source)

local lastSave = -- JSON verisine dönüştüreceğimiz tablo
{
money  = getPlayerMoney(source),
armor  = getPedArmor(source),
health = getElementHealth(source),

x = x,
y = y,
z = z;
}

-- toJSON bize verilen değerin JSON formatını verir, sadece temel veri tiplerini (string, number, boolean) JSON formatına dönüştürebilirsin
setAccountData(getPlayerAccount(source), 'lastSave', toJSON(playerSave))
end
addEventHandler('onPlayerQuit', root, onPlayerQuit)

addEventHandler('onPlayerLogin', root,
function(_, playerAccount)
local lastSave = fromJSON(getAccountData(playerAccount, 'lastSave'))
-- getAccountData'nın bize verdiği değerin tipi string, biz bunu fromJSON ile tabloya çeviriyoruz

setPedArmor(source, lastSave.armor)
setElementHealth(source, lastSave.health)
setPlayerMoney(source, lastSave.money)

setElementPosition(source, lastSave.x, lastSave.y, lastSave.z)
end)

JSON: makineler ve programlama dilleri arasında veri paylaşımını sağlayan veri değişim formatıdır, XML gibi ama daha pratik ve kullanışlı

toJSON: MTA fonksiyonudur, verilen Lua verisini JSON'a çevirir
fromJSON: Bu da aynı şekilde MTA fonksiyonudur, toJSON ile ve ya başka JSON formatlarını fromJSON ile Lua verisine çevirebilirsin

örnek;
Kod
local json = fileCreate('test.json')
fileWrite(json, toJSON({'öncelikle', 'selamün', 'aleyküm'}))
fileClose(json)
-- test.json dosyasını açıp bak

local json = fileOpen('test.json')
local data = fileRead(json, fileGetSize(json))
print(type(data)) -- string
data = fromJSON(data)
print(type(data)) -- table
iprint(data)
--[[
öncelikle
selamün
aleyküm
]]
bunu clientside yapamıyor muyuz
 


Çevrimdışı mantar_

  • Yeni Üye
  • *
    • İleti: 13
Yanıtla #5 : 05 Kasım 2020, 00:18:03
Biraz geç oldu fakat client tarafından server'a triggerlayıp yapabilirsin.

Client Tarafı


Server Tarafı
 


MTASATURK

Ynt: [YARDIM] Account Data
« Yanıtla #5 : 05 Kasım 2020, 00:18:03 »