saving data - Lua: Why does my table revert to nil after one remove? -
the following part of script use indicate items (in case, mobs in mud) not in tabled database.
if mqtable[1] == nil note("no mobs missing database!") else if "%1" ~= "" mindex = "%1" mdesc = mqtable[tonumber(mindex)] end if "%2" ~= "" mlvl = "%2" end if "%3" ~= "" mkeyw = "%3" end if not mindex , mqtable[1] tprint(mqtable) elseif mindex , not mlvl note(mdesc) elseif mindex , mlvl , not mkeyw note("syntax is: mqmob [index] [level] [keywords]") else mobtable[mdesc]={level = mlvl, keywords = mkeyw} table.save(mobtable,savepath.."/mobs/"..areazone..".tbl") note(mqtable[tonumber(mindex)] .. " saved. level: ".. mlvl .. " -- keywords: " .. mkeyw) table.remove(mqtable, tonumber(mindex)) mobtable = table.load(savepath .. "/mobs/" .. areazone .. ".tbl") mlvl, mkeyw, mdesc = nil, nil, nil end assume undefined functions working intended , not appear root cause. "%1", "%2", , "%3" passed parameters through trigger. essentially, if function, 3 parameters called foo(blah, bleh, blargh).
problem
if type mqmob (which fires above script), displays within room mobs have not been added table. use mqmob <index> <level> <keyword> add mob table. once has been done, however, script refuses work, , regardless of number of items on table, mqmob returns nil. why table being wiped after storing 1 bit of information?
example
i in room , see following:
a rat dwells here. mouse chases after cheese. spider makes home in corner. flea leaps playfully. say have a spider makes home in corner. in database. remaining 3 descriptions placed mqtable, , when call mqmob, displays:
1="a rat dwells here." 2="a mouse chases after cheese." 3="a flea leaps playfully." now, type mqmob 1 20 rat create mobtable["a rat dwells here."] {level = 20, keywords = rat}. once that, if type mqmob again, returns nil.
explanation of variables
mobtable merely table contains mob's description key, , corresponding level , keywords values. example:
mobtable = {"a rat nibbles on cheese." = {keyword = "rat", level = 20}} mqtable populated when there no corresponding match in mobtable. essentially, trigger fires, compares keys in mobtable, , if not found, populates mqtable. prevent me unnecessary work of adding mobs in mobtable.
the problem keep running add 1 mob, when run print command second time, returns nil. however, can still add , view individual indexes in mqtable. doesn't seem able print anymore.
Comments
Post a Comment