Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE MudletPackage>
- <MudletPackage version="1.001">
- <ScriptPackage>
- <Script isActive="yes" isFolder="no">
- <name>Level Database</name>
- <packageName></packageName>
- <script>-------------------------------------------------
- -- Script for Avatar Character Database --
- -- --
- -- Capture Levels, Monitor Gains, averages --
- -------------------------------------------------
- DBman = DBman or {}
- local LevelDB = db:create("Level Database",
- {
- Levels = {
- LevelTime = db:Timestamp("CURRENT_TIMESTAMP"),
- CharName = "",
- CharRace = "",
- CharClass = "",
- HpGain = 0,
- MpGain = 0,
- MvGain = 0,
- PracGain = 0,
- TotalHP = 0,
- TotalMP = 0,
- TotalMV = 0,
- TotalPrac = 0,
- LevelGained = 0,
- SublevelGained = 0,
- AdjustedLevel = 0,
- LevelArea = "",
- _index = { {"CharName", "AdjustedLevel"} }
- }})
- function DBman.GetDatabase()
- local LevelDB = db:get_database("Level Database")
- return LevelDB;
- end
- function DBman.AddLevel(charname,charrace,charclass,level,sublevel,area,hp,maxhp,mana,maxmana,moves,maxmoves,pracs,totalpracs)
- --echo ("this is what we got given - name" .. charname .. "\n race " .. charrace .. "\n class ".. charclass .. "\n level ".. level .. "\n sublevel ".. sublevel .. "\n area ".. area .. "\n hp ".. hp .. "\n maxhp ".. maxhp .. mana .. maxmana .. moves .. maxmoves .. pracs .. totalpracs)
- local templevel,adjustedsub = 0,0
- if (tonumber(sublevel) == 999) then
- echo("you are over 999.. calculating..\n")
- results = (db:fetch(LevelDB.Levels,{db:eq(LevelDB.Levels.CharName, charname), db:eq(LevelDB.Levels.AdjustedLevel,db:aggregate(LevelDB.Levels.AdjustedLevel, "MAX",db:eq(LevelDB.Levels.CharName, charname)))}))
- if(results == nil) then
- --
- adjustedsub = 999
- else
- for K,V in ipairs(results) do
- adjustedsub = tonumber(V.AdjustedLevel)
- end
- adjustedsub = tonumber(adjustedsub) + 1
- end
- templevel = 999
- elseif tonumber(sublevel) == 1 and tonumber(level)<51 then
- echo("Lowmortal alert\n")
- templevel = tonumber(level)
- adjustedsub = level
- else
- echo("you are small. maths be simple\n")
- templevel = tonumber(sublevel)
- adjustedsub = templevel
- end
- echo("You are level " .. adjustedsub)
- db:add(LevelDB.Levels, {
- CharName = charname,
- CharRace = charrace,
- CharClass = charclass,
- LevelGained = level,
- SublevelGained = templevel,
- LevelArea = area,
- HpGain = tonumber(hp),
- MpGain = tonumber(mana),
- MvGain = tonumber(moves),
- PracGain = tonumber(pracs),
- TotalHP = tonumber(maxhp),
- TotalMP = tonumber(maxmana),
- TotalMV = tonumber(maxmoves),
- TotalPrac = tonumber(totalpracs),
- AdjustedLevel = tonumber(adjustedsub)
- })
- echo("level added")
- StatTable.AdjustedLevel = adjustedsub
- end
- --get the max adjusted level of a character
- function DBman.GetMax(char)
- LevelDB = db:get_database("Level Database")
- results = (db:fetch(LevelDB.Levels,{db:eq(LevelDB.Levels.CharName, char), db:eq(LevelDB.Levels.AdjustedLevel,db:aggregate(LevelDB.Levels.AdjustedLevel, "MAX",db:eq(LevelDB.Levels.CharName, char)))}))
- for K,V in ipairs(results) do
- echo(char .. " " .. V.AdjustedLevel)
- end
- end
- --set the maxlevel of a user
- function DBman.SetMax(char, level)
- LevelDB = db:get_database("Level Database")
- results = (db:fetch(LevelDB.Levels,{db:eq(LevelDB.Levels.CharName, char), db:eq(LevelDB.Levels.AdjustedLevel,db:aggregate(LevelDB.Levels.AdjustedLevel, "max",db:eq(LevelDB.Levels.CharName, char)))}))
- for K,V in ipairs(results) do
- echo(char .. " " .. V.AdjustedLevel)
- V.AdjustedLevel = tonumber(level)
- end
- db:update(LevelDB.Levels, results[1])
- end
- --popup for all know characters to show stats
- function DBman.GetData()
- temp = (db:fetch_sql(LevelDB.Levels, "Select Distinct CharName from Levels"))
- flatbox = Geyser.MiniConsole:new({
- name="flatbox",
- titleText = "Playerstats for recorded levels",
- x="15%", y="10%",
- width="40c", height="30c",
- })
- flatbox:setColor("DimGray")
- clearWindow("flatbox")
- --labelinuserw = Geyser.Label:new({
- --- name = "LabelinUserWindow",
- -- x="0",y="0",width="100%" , height = "100%",
- -- color="DimGray", fontSize=20,
- -- },flatbox)
- flatbox:cecho("<white:DimGray>\n\nChoose one of the following characters:\n\n")
- flatbox:setFontSize(12)
- setFgColor("flatbox", 255,255,255)
- setBgColor("flatbox", 105,105,105)
- for i,o in ipairs(temp) do
- echoLink("flatbox", "- ".. o.CharName:title().."\n", [[DBman.GetAvg("]]..o.CharName..[[") hideWindow("flatbox")]], o.CharName.." Level Stats", true)
- end
- echoLink("flatbox", "* EXIT\n", [[hideWindow("flatbox")]], "Exit", true)
- resetFormat()
- end
- --get average level gains for a character
- function DBman.GetAvg(character)
- LevelDB = db:get_database("Level Database")
- AvHp = db:aggregate(LevelDB.Levels.HpGain, "AVG",db:eq(LevelDB.Levels.CharName, character))
- AvMp = db:aggregate(LevelDB.Levels.MpGain, "AVG",db:eq(LevelDB.Levels.CharName, character))
- Levels = db:aggregate(LevelDB.Levels.HpGain, "COUNT",db:eq(LevelDB.Levels.CharName, character))
- send("gt " .. character .. " Recorded " .. Levels .. " levels - average HP:" .. string.format("%.2f",AvHp) .. " MP:" .. string.format("%.2f",AvMp))
- end
- function DBman.GetAreas(character)
- send("gt LEVELS FOR " .. character .. "\n")
- LevelDB = db:get_database("Level Database")
- AreaTable = db:fetch(LevelDB.Levels,db:eq(LevelDB.Levels.CharName, character),{LevelDB.Levels.LevelArea})
- TempEntry = {}
- testarea = ""
- counter = 0
- for H,J in ipairs(AreaTable) do
- if (J.LevelArea == testarea) then
- TempEntry[counter].count = TempEntry[counter].count +1
- else
- counter = counter + 1
- testarea = J.LevelArea
- table.insert(TempEntry,{name = J.LevelArea,count = 1})
- end
- end
- for A,B in ipairs(TempEntry) do
- send("gt " .. B.name .. " " .. B.count .. "\n")
- end
- end
- function DBman.AddNewLevel(charname,charrace,charclass,level,sublevel,area)
- --echo ("this is what we got given - name" .. charname .. "\n race " .. charrace .. "\n class ".. charclass .. "\n level ".. level .. "\n sublevel ".. sublevel .. "\n area ".. area .. "\n hp ".. hp .. "\n maxhp ".. maxhp .. mana .. maxmana .. moves .. maxmoves .. pracs .. totalpracs)
- local templevel,adjustedsub = 0,0
- if (tonumber(sublevel) == 999) then
- echo("you are over 999.. calculating..\n")
- results = (db:fetch(LevelDB.Levels,{db:eq(LevelDB.Levels.CharName, charname), db:eq(LevelDB.Levels.AdjustedLevel,db:aggregate(LevelDB.Levels.AdjustedLevel, "MAX",db:eq(LevelDB.Levels.CharName, charname)))}))
- if(results == nil) then
- --
- adjustedsub = 999
- else
- for K,V in ipairs(results) do
- adjustedsub = tonumber(V.AdjustedLevel)
- end
- adjustedsub = tonumber(adjustedsub) + 1
- end
- templevel = 999
- elseif tonumber(sublevel) == 1 and tonumber(level)<51 then
- echo("Lowmortal alert\n")
- templevel = tonumber(level)
- adjustedsub = level
- else
- echo("you are small. maths be simple\n")
- templevel = tonumber(sublevel)
- adjustedsub = templevel
- end
- echo("You are level " .. adjustedsub)
- db:add(LevelDB.Levels, {
- CharName = charname,
- CharRace = charrace,
- CharClass = charclass,
- LevelGained = level,
- SublevelGained = templevel,
- LevelArea = area,
- HpGain = tonumber(StatTable.HPGain),
- MpGain = tonumber(StatTable.MPGain),
- MvGain = tonumber(StatTable.MVGain),
- PracGain = tonumber(StatTable.PracGain),
- TotalHP = tonumber(StatTable.HPMax),
- TotalMP = tonumber(StatTable.MPMax),
- TotalMV = tonumber(StatTable.MVMax),
- TotalPrac = tonumber(StatTable.PracMax),
- AdjustedLevel = tonumber(adjustedsub)
- })
- echo("level added")
- StatTable.AdjustedLevel = adjustedsub
- StatTable.HPGain = 0
- StatTable.HPMax = 0
- StatTable.MPGain = 0
- StatTable.MPMax = 0
- StatTable.MVGain = 0
- StatTable.MVMax = 0
- StatTable.PracGain = 0
- StatTable.PracMax = 0
- end
- </script>
- <eventHandlerList />
- </Script>
- </ScriptPackage>
- <TriggerPackage>
- <Trigger isActive="yes" isFolder="no" isTempTrigger="no" isMultiline="no" isPerlSlashGOption="no" isColorizerTrigger="no" isFilterTrigger="no" isSoundTrigger="no" isColorTrigger="no" isColorTriggerFg="no" isColorTriggerBg="no">
- <name>level gain</name>
- <script>StatTable.RunLevels = (StatTable.RunLevels + 1)
- StatTable.RunHP = (StatTable.RunHP + matches[2])
- StatTable.RunMP = (StatTable.RunMP + matches[4])
- StatTable.RunMV = (StatTable.RunMV + matches[6])
- StatTable.RunPrac = (StatTable.RunPrac + matches[8])
- RunLevelsLabel:echo(StatTable.RunLevels .. " Levels")
- RunStatsLabel:echo(StatTable.RunHP .. "HP / " .. StatTable.RunMP .. "MP" )
- --new shit to try and solve level database issues
- StatTable.HPGain = matches[2]
- StatTable.HPMax = matches[3]
- StatTable.MPGain = matches[4]
- StatTable.MPMax = matches[5]
- StatTable.MVGain = matches[6]
- StatTable.MVMax = matches[7]
- StatTable.PracGain = matches[8]
- StatTable.PracMax = matches[9]
- --function DBman.AddLevel(charname,charrace,charclass,level,sublevel,area,hp,maxhp,mana,maxmana,moves,maxmoves,pracs,totalpracs)
- --echo("raw" .. gmcp.Char.Status.character_name .. gmcp.Char.Status.race .." " .. gmcp.Char.Status.class .." ".. gmcp.Char.Status.level .." "..gmcp.Char.Status.sublevel .." "..gmcp.Char.Status.area_name .." "..matches[2] .." "..matches[3] .." "..matches[4] .." " ..matches[5] .." " ..matches[6] .." " ..matches[7] .." " .. matches[8] .." " .. matches[9])
- --tempTimer( 5, [[DBman.AddLevel(gmcp.Char.Status.character_name,gmcp.Char.Status.race,gmcp.Char.Status.class,gmcp.Char.Status.level,gmcp.Char.Status.sublevel,gmcp.Char.Status.area_name,matches[2],matches[3],matches[4],matches[5],matches[6],matches[7],matches[8],matches[9])]] )
- tempTimer( 5, [[DBman.AddNewLevel(gmcp.Char.Status.character_name,gmcp.Char.Status.race,gmcp.Char.Status.class,gmcp.Char.Status.level,gmcp.Char.Status.sublevel,gmcp.Char.Status.area_name)]] )</script>
- <triggerType>0</triggerType>
- <conditonLineDelta>0</conditonLineDelta>
- <mStayOpen>0</mStayOpen>
- <mCommand></mCommand>
- <packageName></packageName>
- <mFgColor>#ff0000</mFgColor>
- <mBgColor>#ffff00</mBgColor>
- <mSoundFile></mSoundFile>
- <colorTriggerFgColor>#000000</colorTriggerFgColor>
- <colorTriggerBgColor>#000000</colorTriggerBgColor>
- <regexCodeList>
- <string>^Your gain is: (\d+)\/(\d+) hp, (\d+)\/(\d+) m, (\d+)\/(\d+) mv (\d+)\/(\d+) prac.</string>
- <string>^You raise a level!! Your gain is: (\d+)\/(\d+) hp, (\d+)\/(\d+) m, (\d+)\/(\d+) mv (\d+)\/(\d+) prac.</string>
- </regexCodeList>
- <regexCodePropertyList>
- <integer>1</integer>
- <integer>1</integer>
- </regexCodePropertyList>
- </Trigger>
- </TriggerPackage>
- </MudletPackage>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement