- Dołączył
- Luty 20, 2012
- Posty
- 30
- Liczba reakcji
- 2
Witam. Dzisiaj z nud?w napisa?em skrypt zarz?dzania baz? danych z poziomu serwera.
Spos?b dzia?ania:
Zabezpieczenia skryptu:
Skrypt:
Tworzymy plik onSay.lua i zapisujemy go w folderze data\talkactions\script\sql\onSay.lua
Do pliku wklejamy nast?puj?c? tre??.
W pliku talkactions.xml dopisujemy:
Dobra to by by?o na tyle, jakby?cie zauwa?yli jaki? b??d to piszcie. Pisa?em na szybko ten post (w po?piechu). Pozdrawiam.
Spos?b dzia?ania:
- W przypadku polecenia SELECT skrypt wykona funkcj? db.getResult - sk?adnia wygl?da w nast?puj?cy spos?b !sql SELECT * FROM players WHERE name = 'Specc'; level
Pojawi nam si? na ekranie level postaci (w tym przypadku o nicku Specc) - !sql polecenie; co ma by? wy?wietlone. R?wnie? mo?emy u?y? komendy !sql SELECT level FROM players WHERE name = 'Specc' - W przypadku innych polece? kt?re zmieniaj? warto?ci w bazie danych skrypt wykona funkcj? db.executeQuery - sk?adnia wygl?da tak !sql UPDATE players SET level = '666' WHERE name = 'Specc'
Czyli zamieni warto?? dla kolumny level gracza o nicku Specc.
Zabezpieczenia skryptu:
- zabezpieczenia przez Group ID,
- zabezpieczenie przez Access,
- zabezpieczenie nickiem (nowe nicki dodaje si? w skrypcie tablica name),
- je?li osoba nieodpowiednia (tj. bez odpowiedniego GID, Accessu czy nicku w skrypcie) b?dzie pr?bowa?a wykona? operacje zostanie wyrzucona z serwera. Skrypt zawiera r?wnie? warunek, kt?ry odpowiada za to i? po 3 pr?bach wpisania tej komendy - banuje (lecz funkcja nie jest dodana w skrypcie bo jej nie do ko?ca ogarniam [nie dzia?a?a na moim serwerze testowym]).
Skrypt:
Tworzymy plik onSay.lua i zapisujemy go w folderze data\talkactions\script\sql\onSay.lua
Do pliku wklejamy nast?puj?c? tre??.
PHP:
local config = {
storage = 9999,
}
local name = {
"Specc",
}
function onSay(cid, words, param)
local user = {
groupid = getPlayerGroupId(cid),
access = getPlayerAccess(cid),
name = getPlayerName(cid)
}
local zapytanie = string.explode(param, ";")
local polecenie = string.explode(param, " ")
if (user.groupid == 6) and (user.access == 5) and (isInArray(name, user.name)) then
if (polecenie[1] == "SELECT") then
if (polecenie[2] == "*") then
local result = db.getResult(zapytanie[1])
local zaznacz = result:getDataString(zapytanie[2])
doPlayerSendCancel(cid, zaznacz)
return true
else
local result = db.getResult(zapytanie[1])
local zaznacz = result:getDataString(polecenie[2])
doPlayerSendCancel(cid, zaznacz)
end
else
db.executeQuery(zapytanie[1])
doPlayerSendCancel(cid, zapytanie[1])
return true
end
else
local playerStorage = getCreatureStorage(cid, config.storage)
if (playerStorage < 3 ) then
doPlayerSetStorageValue(cid, config.storage, playerStorage+1)
doRemoveCreature(cid)
return true
else
-- tutaj mo?ecie doda? funkcj? banuj?c?, lecz nie doko?ca j? ogarn??em wi?c pozostawiam to wam ;)
doRemoveCreature(cid)
return true
end
end
end
W pliku talkactions.xml dopisujemy:
PHP:
<talkaction log="yes" words="!sql" event="script" value="sql/onSay.lua"/>
Dobra to by by?o na tyle, jakby?cie zauwa?yli jaki? b??d to piszcie. Pisa?em na szybko ten post (w po?piechu). Pozdrawiam.
