Lua-Fehler: string erwartet, got nil

Ich brauche Hilfe mit meinen scripts.
Ich habe versucht, fast alles, aber ich kann nicht herausfinden, was das problem ist.
Ich will look.lua um zu überprüfen, ob str = str.."\nIt's "..getPokemonAge(thing.uid).." old."
Kehrt mit der null, dann ignoriert es und geht weiter mit dem script.

Dies ist der Fehler, bekomme ich auf der Konsole:

[04/12/2012 20:43:42] [Error - CreatureScript Interface] 
[04/12/2012 20:43:42] data/creaturescripts/scripts/look.lua:onLook
[04/12/2012 20:43:42] Description: 
[04/12/2012 20:43:42] data/lib/011-string.lua:16: bad argument #1 to 'find' (string expected, got nil)
[04/12/2012 20:43:42] stack traceback:
[04/12/2012 20:43:42]   [C]: in function 'find'
[04/12/2012 20:43:42]   data/lib/011-string.lua:16: in function '(for generator)'
[04/12/2012 20:43:42]   data/lib/011-string.lua:16: in function 'explode'
[04/12/2012 20:43:42]   data/lib/age system.lua:2: in function 'getPokemonYears'
[04/12/2012 20:43:42]   data/lib/age system.lua:42: in function 'getPokemonAge'
[04/12/2012 20:43:42]   data/creaturescripts/scripts/look.lua:32: in function <data/creaturescripts/scripts/look.lua:1>

011-string.lua

local i, pos, tmp, t = 0, 1, "", {}
        for s, e in function() return string.find(str, sep, pos) end do
            tmp = str:sub(pos, s - 1):trim()
            table.insert(t, tmp)
            pos = e + 1

            i = i + 1

        end

Aussehen.lua

str = str.."\nIt's "..getPokemonAge(thing.uid).." old."

Alter-system.lua

function getPokemonYears(pokeball)
local data = string.explode(getItemAttribute(pokeball, "pokeballinfo"), "/")
-- data[1] = dia, data[2] = mes, data[3] = ano
local yearnow = math.floor(tonumber(os.date("%Y")))
local monthnow = math.floor(tonumber(os.date("%m")))
local daynow = math.floor(tonumber(os.date("%d")))
local ano = math.floor(tonumber(data[3]))
local mes = math.floor(tonumber(data[2]))
local dia = math.floor(tonumber(data[1]))
local years = 0
if yearnow == ano then years = monthnow-mes end
if yearnow > ano then years = (12-mes) + monthnow end
return years
end

function getPokemonMonths(pokeball)
local data = string.explode(getItemAttribute(pokeball, "pokeballinfo"), "/")
local yearnow = math.floor(tonumber(os.date("%Y")))
local monthnow = math.floor(tonumber(os.date("%m")))
local daynow = math.floor(tonumber(os.date("%d")))
local ano = math.floor(tonumber(data[3]))
local mes = math.floor(tonumber(data[2]))
local dia = math.floor(tonumber(data[1]))

if (yearnow == ano) and (monthnow==mes) and (daynow<dia+2.5) then months = 0 end
if (yearnow == ano) and (monthnow==mes) and (daynow>dia+2.5) then months = (daynow-dia)/2.5 end
if (yearnow == ano) and (monthnow>mes) then months = math.floor((30-dia)/2.5) + daynow/2.5 end
if (yearnow > ano) then
days = math.floor(monthnow*30+daynow)
months = math.floor(days/2.5)
end
if tostring(months):len() > 3 then months2 = tonumber(string.sub(tostring(months), 1, 3))
else months2 = months end
return months
end


function getPokemonAge(pokeball)
return ""..getPokemonYears(pokeball).." year, "..getPokemonMonths(pokeball).." months"
end
  • Es klingt wie getItemAttribute(pokeball, "pokeballinfo") zurück nil.
  • aber wie, wenn die Rückgabe nil einfach zu ignorieren und fortzufahren, wenn nicht retirning nil ist, dann vieuw
  • aber wie, wenn die Rückgabe nil einfach zu ignorieren, und fahren Sie also, wenn nicht nil then return ""..getPokemonYears(pokeball).." Jahr, "..getPokemonMonths(pokeball).." Monaten" und bei seiner Rückkehr nil ist, dann nicht str = str.."\nIt ' s "..getPokemonAge(Sache.uid).." alt."
  • Es gibt viel zu viel code, das Parsen und die nutzlos-code aus und erhalten Sie viel mehr Antworten.
  • getan mahi als u bat
  • wie sind Sie he ' Ing in den verschiedenen Dateien, die Sie erstellt haben?
  • Können Sie einige Beispiel-Daten?
  • Ihren pokeball zu haben scheint, die "pokeballinfo" - Attribut verpasst.
  • Sie müssen Einrücken von code für Sie lesbar sein. Sie beschreiben, welche Dateien geladen werden, in welcher Reihenfolge. Sie zeigen an, was die Zeilennummern werden. Es ist fast unmöglich, herauszufinden, was der code überhaupt tun soll, denn Sie haben lediglich kleine, isolierte Schnipsel.

Schreibe einen Kommentar