Sziasztok lenne egy ilyen scriptem.
Ennek az lenne a lényege ha megtalálja az olyan játékost akinek a serial és az sqlben mentett serial (az sql-ben LE VAN MENTVE A SERIALOM IS!) egyezik akkor kiírja hogy sikeres és annak a játékosnak az acc id-jét akivel a serial egyezik. (Szintén sql-be mentve van!)
local newsql = trigger,etcc.. (a rendes scriptben ez működik itt! nem ez van ideírva!)
function loginCallback(mtaserial) -- az mta serial külső forrásból van ide behozva amit át is hoz ide,outputchatbox-al megnéztem --
local kecskeROW = dbQuery(newsql,\"SELECT * FROM account WHERE mtaserial = ? \",mtaserial)
local res,rows,err = dbPoll(kecskeROW,0)
if rows > 0 then -- itt errorodzik ERROR: attemp to index local ROWS !
outputChatBox(\"Sikeres. A te acc id-d: \"..rows[\"accID\"])
end
end
Nem értem, hogy most akkor a loginCallback function az egy sql callback vagy nem. Mert ha az tényleg callback akkor elsőnek poll-olni kell az mtaserial változód.
De ha ahogy írtad és outputchatbox-al kiírja rendesen a serialod akkor jó csak furán van elnevezve.
A gond ott kell, hogy legyen hogy ebben a sorban:
local kecskeROW = dbQuery(newsql,\"SELECT * FROM account WHERE mtaserial = ? \",mtaserial)
Küldesz egy sql lekérdezést, majd a következőben:
local res,rows,err = dbPoll(kecskeROW,0)
Egyből megnézed az eredményt. (A 0 azt jelenti hogy mennyi időt várjon az eredményre) Azonnal nyilván nem fogja vissza az eredményt a MySQL szervered. Így vagy mondasz neki egy hosszabb időt (mondjuk 500 ms) vagy vársz örökké. De ezek nem jó megoldások mert addig fogják a scriptet nem haladhat tovább.
Itt egy példa (3.), hogy hogy kell callbacket használni
function aaa()
dbQuery( myCallback, connection, \"SELECT * FROM table_name\" )
end
function myCallback(qh)
local result = dbPoll( qh, 0 ) -- Timeout doesn\'t matter here because the result will always be ready
end
A callbackek csak annyik, hogy elküldöd az SQL lekérést majd fut tovább a scripted nem áll meg és amikor kész az eredmény (kész eredmény timedout is lehet) akkor meghívja a myCallback funkciódat. (qh a queryhandler abba van az eredmény vagy hiba)