-
Hali. A napokban kezdtem el az MTA-val foglalkozni. Már csináltam egy ilyen nagyon kezdő login/register scriptet, ahol lementi az illetó életét, armor-ját, admin szintjét, illetve pénzét. Úgy gondoltam, hogy ne mindig az internal.db-t kelljen átírni, kis segítséggel csináltam egy /adminszint parancsot. Mivel egyedül vagyok, így nem nagyon tudom tesztelni máson, csak magamon a dolgokat, viszont amikor beírom hogy /adminszint jacob 5 , akkor kidob a konzolba egy hibát. ( attempt to compare number with string ), ami a \"if ( level >=0 and level <=8 ) then,, sorra mutat, pedig 0-8 közötti számot írok be. Egyik kérdésem az lenne, hogy hogyan lehetne kijavítani a hibát? Illetve tudtok-e olyan programokat, amivel \"házilag\" lehet MySQL-t készíteni? ugyanis gyakorolni szeretnék csak, úgyhogy szervert rendelni nem szeretnék.. ( wamp kilőve, nem indul el, hibát jelez az isucrtbase.terminate hibát. ) Válaszotokat előre is köszönöm, illetve további szép napot!
addCommandHandler(\"adminszint\",
function(player, command, targetName, level)
if getPlayerName(player) == \"Jacob\" then
if ( targetName ~= nil and level ~= nil ) then
local target = getPlayerFromName(targetName)
if ( target ~= false ) then
if ( level >=0 and level <=8 ) then
setElementData(target, \"ig.admin\", level)
outputChatBox(\"#4286f4[Admin System]:#ffffff Sikeresen módosítóttad \"..targetName..\" adminisztrátori szinjét! #ff4f4f[\"..level..\"]\", player, 255, 255, 255, true)
outputChatBox(\"#4286f4[Admin System]:#ffffff Adminisztrátori szinted módosításra került! #ff4f4f[\"..level..\"]\", target, 255, 255, 255, true)
else
outputChatBox(\"#4286f4[Admin System]:#ffffff Az adminisztrátori szintnek 0 és 8 között kell lennie!\", player, 255, 255, 255, true)
end
else
outputChatBox(\"#4286f4[Admin System]:#ffffff A kiválasztott játékos jelenleg nem elérhető!\", player, 255, 255, 255, true)
end
else
outputChatBox(\"#4286f4[Admin System]: #ff4f4fHasználat: #ffffff/adminszint <név> <szint 0-tól 8-ig>!\", player, 255, 255, 255, true)
end
end
end
)
-
Az lehet, hogy te számot írsz be, de azt a játék neved stringnek (szövegnek veszi) és ezért ír rá hibát. tonumber kell neked a level értékre (próbáld ki, hogy most akár \'asd\' szöveget is betudnál írni és ugyan az lenne a \"hiba\") .
xampp pl. Ha pedig esetleg felraksz egy sima mysql szervert (mert azt is lehet), akkor pedig mondjuk egy külső programmal tudod kezelni kényelmesen.
-
Még egy egyszerű kis kérdésem lenne. Ugye az adminisztrátori parancsokat külön lua fájlban tárolom el, viszont ugyan arról a meta xml-ról, illetve ugyan abban a mappában vannak. A reglog.lua-ban ( register /login ) ugye kilépéskor/belépéskor lementi az adott dolgokat, és köztük van egy ilyen kis sor is: adminszint = getAccountData(playeraccount, \"ig.admin\", getElementData(source, \"ig.admin\")) Majd ugye egy másik lua fájlban, amint említettem vannak az admin parancsok. Úgy gondoltam úgy oldom meg, hogy if adminszint >= 1 then .... end. Most viszont erre egy, az előzőhöz hasonló hibát jelez. ( Attempt to compare number with nil ). Ez lenne az utolsó kérdésem, illetve az előzőre visszatérve azt is köszönöm, működött minden! :)
-
Egy lua fájlból nem érsz el egy másik lua fájlban lévő változót. Szóval az adminparancsosban is:
adminszint = getAccountData(playeraccount, \"ig.admin\")
(a playeraccount változót is hozd létre elötte ahogy az első lua fájlban.)
-
Csáó. Megcsináltam itt is, viszont sajnos így se jó :( Már elindításnál egy warningot dob ki , a képen a konzol látható, amit kiír, az error akkor jön ki, amikor beírom hogy /javitas a kocsiban )
EDIT: Megoldottam egy function-nal! Köszönöm a segítséget! :)
function isAdmin(player, level)
if getElementData(player, \"ig.admin\") >= level then return true
else return false
end
end
-
Kliens vagy szerver oldali szkript? (Kliensen nem is működne nagyon)
addCommandHandler(\"adminszint\",
function(player, command, targetName, level, targetaccount)
local playeraccount = getPlayerAccount ( player )
local adminszint = getAccountData(playeraccount, \"ig.admin\", getElementData(source, \"ig.admin\"))
if (getPlayerName(player) == \"Jacob\" and adminszint >= 7 ) then
if ( targetName ~= nil and level ~= nil ) then
local target = getPlayerFromName(targetName)
if ( target ~= false ) then
if ( tonumber(level) >=0 and tonumber(level) <=8 ) then
setElementData(target, \"ig.admin\", level)
outputChatBox(\"#4286f4[Admin System]:#ffffff Sikeresen módosítóttad \"..targetName..\" adminisztrátori szinjét! #ff4f4f[\"..level..\"]\", player, 255, 255, 255, true)
outputChatBox(\"#4286f4[Admin System]:#ffffff Adminisztrátori szinted módosításra került #ff4f4f\" ..getPlayerName(player)..\" #ffffffáltal! #ff4f4f[\"..level..\"]\", target, 255, 255, 255, true)
else
outputChatBox(\"#4286f4[Admin System]:#ffffff Az adminisztrátori szintnek 0 és 8 között kell lennie!\", player, 255, 255, 255, true)
end
else
outputChatBox(\"#4286f4[Admin System]:#ffffff A kiválasztott játékos jelenleg nem elérhető!\", player, 255, 255, 255, true)
end
else
outputChatBox(\"#4286f4[Admin System]: #ff4f4fHasználat: #ffffff/adminszint <név> <szint 0-tól 8-ig>!\", player, 255, 255, 255, true)
end
end
end
)
function myCommandHandler(thePlayer, command)
local x, y, z = getElementPosition(thePlayer)
local RaceVehicle = createVehicle ( 411