Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2018-10-20, 13:33


kxkuba







Wiek: 38
Na forum: 3344 dni
Posty: 6

Piwa: 1

Respekt: 50

Witajcie :)
Ostatnio mam du?? rozmin? nad tym fragmentem kodu. Szuka?em w googlach itp. czyta?em na Wiki Ale nadal nie rozumiem :\
Kod ten (jest to tylko fragment) jest odpowiedzialny za Wczytanie do gracza inforamcji z bazy danych. Baza danych jest podpi?ta w innym kodzie kt?ry zosta? wyeksportowany.
Problem zaczyna si? ju? w pierwszej funkcjii

function loadPlayerData(element)
    if not getElementData(element, 'p:logged') then
        local uid = getElementData(element, 'p:uid')
        if not uid then return end


Przysi?gam szuka?em wsz?dzie na temat getElementData Ale albo jestem jaki? u?omny albo nwm mo?e wolno ?api? ale nie czaj? jak dzia?a ta funkcja :P
Dalej w tej funkcji pojawia si? argument "element"?
I najwi?kszy problem sprawia mi co oznacza napis p:money , p:reputation
I szuka?em w dokumentacji LUA na temat tonumber Ale te? niezbyt czaj?.
Ciekawi mnie w jaki spos?b ten kod okre?la ?e akurat nam zalogowanemu przydzieli? wszystkie wytyczne z bazy danych. Z g?ry dzi?kuje :)

Ca?a cz??? kodu.


function loadPlayerData(element)
    if not getElementData(element, 'p:logged') then
        local uid = getElementData(element, 'p:uid')
        if not uid then return end
    
        -- load player data
        local result = exports['og-connect']:dbGet('select * from og_characters where uid=?', uid)
        if result and #result > 0 then
            setElementModel(element, result[1]['skin'])
        
            setElementData(element, 'p:money', tonumber(result[1]['money']))
            setElementData(element, 'p:reputation', tonumber(result[1]['reputation']))
            setElementData(element, 'p:weave', tonumber(result[1]['weave']))
            setElementData(element, 'p:mandate', tonumber(result[1]['mandate']))
        
            setElementData(element, 'p:licenseA', tonumber(result[1]['licenseA']))
            setElementData(element, 'p:licenseB', tonumber(result[1]['licenseB']))
            setElementData(element, 'p:licenseC', tonumber(result[1]['licenseC']))
            setElementData(element, 'p:licenseD', tonumber(result[1]['licenseD']))
            setElementData(element, 'p:licenseL', tonumber(result[1]['licenseL']))
            setElementData(element, 'p:licenseH', tonumber(result[1]['licenseH']))
        
            setElementData(element, 'p:logged', true)
        
            outputDebugString('og-core/playerData.lua - Pomy?lnie wczytano dane gracza '.. getPlayerName(element) ..'.')
        end



Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-10-20, 14:05


Avenged

Młodszy Szkrypter






Wiek: 24
Na forum: 3651 dni
Posty: 654
Nick w MP: Avenged

Piwa: 1572

Respekt: 326,3
Respekt: 326,3Respekt: 326,3Respekt: 326,3

elementdata to jest tak jakby przechowywnie danych tymczasowo - to co w niej zapisujesz resetuje sie po opuszczeniu serwera. Mo?na tam zapisa? w sumie wszystko co tylko chcesz



function test()
    if getElementData(element, "zdobyl") then 
          outputChatBox("Posiadasz juz zdobyty.", element)
    else 
         setElementData(element, "zdobyl", true)
         outputChatBox("Zdobywasz. ", element)
    end 
end 


tutaj masz mniej wiecej przykladowe

ta nazwa pomiedzy ' ' przyk?adowo jak m?wisz 'p:reputation' to nadaje graczowi eldate reputacja, aby? m?g? pobiera? j? w r??nych miejscach (scoreboard/prace etc.) bez zb?dnych zapyta? do bazy danych za ka?dym razem. Nazwa? mo?esz to sobie jak tylko chcesz




Argument 'element' to jest element na kt?ry nadajesz ten 'zapis' i z kt?rego b?dziesz to p??niej pobiera?, przyk?adowo mo?esz to nada? na markery/colshape'y/pojazdy/graczy itd

[ Dodano: 2018-10-20, 14:09 ]
A co do pobierania danych tylko dla nas to masz tutaj zapytanie SQL:


 local uid = getElementData(element, 'p:uid') -- pobieramy UID gracza
        if not uid then return end -- jesli nie ma uid to przerywamy funkcje
    
        local result = exports['og-connect']:dbGet('select * from og_characters where uid=?', uid) -- where uid? czyli tlumaczac na polskie pobieramy * (wszystko z tabeli) gdzie uid jest r?wne uid pobranego ze zmiennej


[ Dodano: 2018-10-20, 14:13 ]
Funkcja tonumber nie musi by? zawsze u?ywana przy kodzie lecz mo?na jej u?ywa? poniewa? czasami bez tonumber nam co? nie zadzia?a - zwraca to samo co bez tonumber. Przyk?adowo:


 local zmienna = 1 

print(tonumber(zmienna)) -- zwroci nam '1' 



A tutaj:

 local zmienna =1 

print(zmienna) -- zwroci nam tez '1' 


Podpis
LUA, JS, PHP



Zapraszam do skorzystania z moich usług: Klik

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
kxkuba
Wysłany: 2018-10-21, 16:26


kxkuba







Wiek: 38
Na forum: 3344 dni
Posty: 6

Piwa: 1

Respekt: 50

"BarteQ03" napisał/a:

ta nazwa pomiedzy ' ' przyk?adowo jak m?wisz 'p:reputation' to nadaje graczowi eldate reputacja, aby? m?g? pobiera? j? w r??nych miejscach (scoreboard/prace etc.) bez zb?dnych zapyta? do bazy danych za ka?dym razem. Nazwa? mo?esz to sobie jak tylko chces


Nadal nie zatrybi?o.

function loadPlayerData(element)
    if not getElementData(element, 'p:logged') then
        local uid = getElementData(element, 'p:uid')
        if not uid then return end


W tym przypadku czym jest p:logged zmienn? o jakiej? warto?ci czy jakim? argumentem kt?ry na dobr? spraw? mo?e nazywa? si? dowolnie?

    
        -- load player data
        local result = exports['og-connect']:dbGet('select * from og_characters where uid=?', uid)
        if result and #result > 0 then
            setElementModel(element, result[1]['skin'])
        
            setElementData(element, 'p:money', tonumber(result[1]['money']))
            setElementData(element, 'p:reputation', tonumber(result[1]['reputation']))
            setElementData(element, 'p:weave', tonumber(result[1]['weave']))
            setElementData(element, 'p:mandate', tonumber(result[1]['mandate']))
        
            setElementData(element, 'p:licenseA', tonumber(result[1]['licenseA']))
            setElementData(element, 'p:licenseB', tonumber(result[1]['licenseB']))
            setElementData(element, 'p:licenseC', tonumber(result[1]['licenseC']))
            setElementData(element, 'p:licenseD', tonumber(result[1]['licenseD']))
            setElementData(element, 'p:licenseL', tonumber(result[1]['licenseL']))
            setElementData(element, 'p:licenseH', tonumber(result[1]['licenseH']))
        
            setElementData(element, 'p:logged', true)
        
            outputDebugString('og-core/playerData.lua - Pomy?lnie wczytano dane gracza '.. getPlayerName(element) ..'.')
        end

Bo tutaj w tym miejscu zapisujemy do "element" warto?ci naszych danych z bazy danych ?eby by?o ju? to w programu i ?eby nie wysy?a? stale zapyta? do bazy danych.
Ale nasuwa mi si? pytanie czy w takim przypadku po zmianie warto?ci w bazie danych b?d? one aktualne? Bo zapytanie by?o wys?ane od razu jednorazowo na pocz?tku .
I jak np. wypisa? na ekran tak? warto?? z getElementData.
Z g?ry dzi?kuj? i leci piwerko :) Ju? du?o mi pomog?e?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-10-21, 22:42


PolskiSebek12

Programista






Wiek: 28
Na forum: 4488 dni
Posty: 343
Nick w MP: CrosRoad95

Piwa: 3887

Respekt: 288,8
Respekt: 288,8Respekt: 288,8Respekt: 288,8

Ostrzeżeń: 100%
przegl?daj kod og-rpg, przynajmniej b?dziesz wiedzia? jak NIE pisa? skrypt?w

Podpis
Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 2 piw(a):
TeeNekk, Zbigniewqq
Wysłany: 2018-10-23, 18:16


OchIAch







Wiek: 27
Na forum: 3255 dni
Posty: 144
Nick w MP: OchIAch

Piwa: 1312

Respekt: 105,3
Respekt: 105,3

Ostrzeżeń: 100%
Chce nawi?za? do 1 odpowiedzi, mo?e si? to przyda? kiedy? tw?rcy tematu. ElData NIE resetuje sie po wyj?ciu z serwera.

Podpis
Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-10-23, 18:20


Avenged

Młodszy Szkrypter






Wiek: 24
Na forum: 3651 dni
Posty: 654
Nick w MP: Avenged

Piwa: 1572

Respekt: 326,3
Respekt: 326,3Respekt: 326,3Respekt: 326,3

OchIAch, je?li gracz kt?remu nada?e? eldate wyjdzie z serwera to si? mu usunie ;)

Podpis
LUA, JS, PHP



Zapraszam do skorzystania z moich usług: Klik

Postaw piwo autorowi tego posta
 

 
Tagi: niezrozumiały :: kod :: og-rpg
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku