Szerző Téma: setlevel parancs probléma  (Megtekintve 1143 alkalommal)

Nem elérhető Cody

setlevel parancs probléma
« Dátum: 2015. Március 31. - 23:35:25 »
0 Show voters
Ü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
)

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
setlevel parancs probléma
« Válasz #1 Dátum: 2015. Április 01. - 00:52:43 »
0 Show voters
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.

Nem elérhető Cody

setlevel parancs probléma
« Válasz #2 Dátum: 2015. Április 01. - 09:17:09 »
0 Show voters
Á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
)
« Utoljára szerkesztve: 2015. Április 01. - 10:22:32 írta Cody »

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
setlevel parancs probléma
« Válasz #3 Dátum: 2015. Április 01. - 12:55:20 »
0 Show voters
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)
« Utoljára szerkesztve: 2015. Április 01. - 12:58:59 írta DrAkE »

Nem elérhető Cody

setlevel parancs probléma
« Válasz #4 Dátum: 2015. Április 01. - 14:35:53 »
0 Show voters
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\")
« Utoljára szerkesztve: 2015. Április 01. - 14:39:36 írta Cody »

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
setlevel parancs probléma
« Válasz #5 Dátum: 2015. Április 01. - 15:23:17 »
0 Show voters
Vagy nincs létrehozva, vagy pedig alakítsd át számmá (tonumber). (inkább az elsőnek van nagyobb lehetősége)

setlevel parancs probléma
« Válasz #6 Dátum: 2015. Április 02. - 13:30:37 »
0 Show voters
[mod]Megoldódott? Helyezhető? [/mod]

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal