-
Üdv.
Elkezdtem írni egy setlevel parancsot és ott leragadtam hogy amikor leellenőrzi a szintet hogy 0 és 5 között álló szám e és hogy nem string, egyfolytában azt írja hogy \"Nincs ilyen szint!\".
Valaki megtudná nézni hogy mit írtam el benne?
addCommandHandler(\"setlevel\",
function (source, commandName, otherPlayer, level)
if otherPlayer and level then
if isElement(getPlayerFromName(otherPlayer)) then
if type(level) == \"string\" or tonumber(level) < 0 or tonumber(level) > 5 then
outputChatBox(\"#E74C3CNincs ilyen szint!\", source, 0, 0, 0, true)
else
outputChatBox(\"Jó szint\")
end
else
outputChatBox(\"#E74C3CNincs ilyen játékos!\", source, 0, 0, 0, true)
end
else
outputChatBox(\"#00B7FFHasználat: #FFFFFF/setlevel <Játékos> <Szint>\", source, 0, 0, 0, true)
end
end
)
-
Válasz igen egyszerű, maga a paraméter, amiket megadsz string típusúak, ergo a következő feltétel mindig igaz lesz, és kiírja a hibát:
type(level) == \"string\"
A kód tökéletesen fog futni, ha kiveszed a feltételt belőle, és nem fog semmilyen hibát sem eredményezni.
-
Átalakítottam inkább egy felfokozás és lefokozás parancsra.
És most erre pedig a consol azt írja hogy hibás argument van a getElementData-ba.
Megnéznéd ezt is?
addCommandHandler(\"promote\",
function (source, commandName, otherPlayer)
if otherPlayer then
if isElement(getPlayerFromName(otherPlayer)) then
if playerszint == 5 then
outputChatBox(\"#E74C3CEzt a játékost nem fokozhatod fel!\", source, 0, 0, 0, true)
else
local oldlevel = getElementData(getPlayerFromName(otherPlayer), \"AdminLevel\")
setElementData(getPlayerFromName(otherPlayer), \"AdminLevel\", getElementData(getPlayerFromName(otherPlayer)) + 1)
outputChatBox(\"#FFFFFF\".. getPlayerName(source) ..\" #00B7FFmegváltoztatta #FFFFFF\".. getPlayerName(getPlayerFromName(otherPlayer)) ..\" #00B7FFjátékos adminisztrátori szintjét. #FFFFFF(\".. oldlevel ..\" => \".. getElementData(getPlayerFromName(otherPlayer), \"AdminLevel\") ..\")\")
end
else
outputChatBox(\"#E74C3CNincs ilyen játékos!\", source, 0, 0, 0, true)
end
else
outputChatBox(\"#00B7FFHasználat: #FFFFFF/promote <Játékos>\", source, 0, 0, 0, true)
end
end
)
addCommandHandler(\"demote\",
function (source, commandName, otherPlayer)
if otherPlayer then
if isElement(getPlayerFromName(otherPlayer)) then
if getElementData(getPlayerFromName(otherPlayer, \"AdminLevel\")) == 0 then
outputChatBox(\"#E74C3CEzt a játékost nem fokozhatod le!\", source, 0, 0, 0, true)
else
local oldlevel = getElementData(getPlayerFromName(otherPlayer), \"AdminLevel\")
setElementData(getPlayerFromName(otherPlayer), \"AdminLevel\", getElementData(getPlayerFromName(otherPlayer)) - 1)
outputChatBox(\"#FFFFFF\".. getPlayerName(source) ..\" #00B7FFmegváltoztatta #FFFFFF\".. getPlayerName(getPlayerFromName(otherPlayer)) ..\" #00B7FFjátékos adminisztrátori szintjét. #FFFFFF(\".. oldlevel ..\" => \".. getElementData(getPlayerFromName(otherPlayer), \"AdminLevel\") ..\")\")
end
else
outputChatBox(\"#E74C3CNincs ilyen játékos!\", source, 0, 0, 0, true)
end
else
outputChatBox(\"#00B7FFHasználat: #FFFFFF/demote <Játékos>\", source, 0, 0, 0, true)
end
end
)
-
Hiba:
setElementData(getPlayerFromName(otherPlayer), \"AdminLevel\", getElementData(getPlayerFromName(otherPlayer)) + 1)
Helyesen:
setElementData(getPlayerFromName(otherPlayer), \"AdminLevel\", getElementData(getPlayerFromName(otherPlayer), \"AdminLevel\") + 1)
(mind a kettő parancsnál)
Ha már úgy is lemented lokális változóba a régi adminszintet, akkor:
setElementData(getPlayerFromName(otherPlayer), \"AdminLevel\", oldlevel + 1)
-
Valamiért még mindig hibát ír a consol erre a sorokra.
setElementData(getPlayerFromName(otherPlayer), \"AdminLevel\", oldlevel + 1)
setElementData(getPlayerFromName(otherPlayer), \"AdminLevel\", oldlevel - 1)
Error:
attempt to perform aritmetic on local \'oldlevel\' (a boolean value)
local oldlevel = getElementData(getPlayerFromName(otherPlayer), \"AdminLevel\")
-
Vagy nincs létrehozva, vagy pedig alakítsd át számmá (tonumber). (inkább az elsőnek van nagyobb lehetősége)
-
[mod]Megoldódott? Helyezhető? [/mod]