Advertisement
Syndran

Mudlet Level Database for Avatar

Apr 29th, 2020
531
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
XML 9.09 KB | None | 0 0
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE MudletPackage>
  3. <MudletPackage version="1.001">
  4.     <ScriptPackage>
  5.         <Script isActive="yes" isFolder="no">
  6.             <name>Level Database</name>
  7.             <packageName></packageName>
  8.             <script>-------------------------------------------------
  9. --   Script for Avatar Character Database      --
  10. --                                             --
  11. -- Capture Levels, Monitor Gains, averages     --
  12. -------------------------------------------------
  13. DBman = DBman or {}
  14.  
  15. local LevelDB = db:create("Level Database",
  16.   {
  17.     Levels = {
  18.               LevelTime = db:Timestamp("CURRENT_TIMESTAMP"),
  19.               CharName = "",
  20.               CharRace = "",
  21.               CharClass = "",
  22.               HpGain = 0,
  23.               MpGain = 0,
  24.               MvGain = 0,
  25.               PracGain = 0,
  26.               TotalHP = 0,
  27.               TotalMP = 0,
  28.               TotalMV = 0,
  29.               TotalPrac = 0,
  30.               LevelGained = 0,
  31.               SublevelGained = 0,
  32.               AdjustedLevel = 0,
  33.               LevelArea = "",
  34.              
  35.              _index = { {"CharName", "AdjustedLevel"} }
  36.           }})
  37.  
  38.  
  39.  
  40. function DBman.GetDatabase()
  41.  
  42.   local LevelDB = db:get_database("Level Database")
  43.   return LevelDB;
  44.  
  45. end
  46.  
  47. function DBman.AddLevel(charname,charrace,charclass,level,sublevel,area,hp,maxhp,mana,maxmana,moves,maxmoves,pracs,totalpracs)
  48.  
  49. --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)
  50. local templevel,adjustedsub = 0,0
  51.  
  52. if (tonumber(sublevel) == 999) then
  53. echo("you are over 999.. calculating..\n")
  54.  
  55.  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)))}))
  56.  
  57. if(results == nil) then
  58. --
  59.   adjustedsub = 999
  60. else
  61.  
  62.     for K,V in ipairs(results) do
  63.       adjustedsub = tonumber(V.AdjustedLevel)
  64.     end
  65.   adjustedsub = tonumber(adjustedsub) + 1
  66. end
  67.  
  68. templevel = 999
  69.  
  70. elseif tonumber(sublevel) == 1 and tonumber(level)&lt;51 then
  71. echo("Lowmortal alert\n")
  72. templevel = tonumber(level)
  73. adjustedsub = level
  74.  
  75. else  
  76. echo("you are small. maths be simple\n")
  77. templevel = tonumber(sublevel)
  78. adjustedsub = templevel
  79.  
  80. end
  81. echo("You are level " .. adjustedsub)
  82. db:add(LevelDB.Levels, {
  83.   CharName = charname,
  84.   CharRace = charrace,
  85.   CharClass = charclass,
  86.   LevelGained = level,
  87.   SublevelGained = templevel,
  88.   LevelArea = area,
  89.   HpGain = tonumber(hp),
  90.   MpGain = tonumber(mana),
  91.   MvGain = tonumber(moves),
  92.   PracGain = tonumber(pracs),
  93.   TotalHP = tonumber(maxhp),
  94.   TotalMP = tonumber(maxmana),
  95.   TotalMV = tonumber(maxmoves),
  96.   TotalPrac = tonumber(totalpracs),
  97.   AdjustedLevel = tonumber(adjustedsub)
  98.  
  99.   })
  100. echo("level added")
  101. StatTable.AdjustedLevel = adjustedsub
  102. end
  103.  
  104. --get the max adjusted level of a character
  105. function DBman.GetMax(char)
  106.  
  107.   LevelDB = db:get_database("Level Database")
  108.  
  109.   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)))}))
  110.  
  111.   for K,V in ipairs(results) do
  112.     echo(char .. "  " .. V.AdjustedLevel)
  113.   end
  114.  
  115. end
  116.  
  117. --set the maxlevel of a user
  118. function DBman.SetMax(char, level)
  119. LevelDB = db:get_database("Level Database")
  120.   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)))}))
  121.   for K,V in ipairs(results) do
  122.     echo(char .. "  " .. V.AdjustedLevel)
  123.     V.AdjustedLevel = tonumber(level)
  124.   end
  125.  db:update(LevelDB.Levels, results[1])
  126. end
  127.  
  128. --popup for all know characters to show stats
  129. function DBman.GetData()
  130. temp = (db:fetch_sql(LevelDB.Levels, "Select Distinct CharName from Levels"))
  131.  
  132. flatbox = Geyser.MiniConsole:new({
  133.   name="flatbox",
  134.   titleText = "Playerstats for recorded levels",
  135.   x="15%", y="10%",
  136.   width="40c", height="30c",
  137. })
  138. flatbox:setColor("DimGray")
  139. clearWindow("flatbox")
  140.  
  141. --labelinuserw = Geyser.Label:new({
  142.  --- name = "LabelinUserWindow",
  143.  -- x="0",y="0",width="100%" , height = "100%",
  144. --  color="DimGray", fontSize=20,
  145.  -- },flatbox)
  146. flatbox:cecho("&lt;white:DimGray&gt;\n\nChoose one of the following characters:\n\n")
  147. flatbox:setFontSize(12)
  148. setFgColor("flatbox", 255,255,255)
  149. setBgColor("flatbox", 105,105,105)
  150.  
  151. for i,o in ipairs(temp) do
  152.  
  153.   echoLink("flatbox", "- ".. o.CharName:title().."\n", [[DBman.GetAvg("]]..o.CharName..[[") hideWindow("flatbox")]], o.CharName.." Level Stats", true)
  154. end
  155.  
  156. echoLink("flatbox", "* EXIT\n", [[hideWindow("flatbox")]], "Exit", true)
  157.  
  158. resetFormat()
  159. end
  160.  
  161. --get average level gains for a character
  162. function DBman.GetAvg(character)
  163.  
  164. LevelDB = db:get_database("Level Database")
  165. AvHp = db:aggregate(LevelDB.Levels.HpGain, "AVG",db:eq(LevelDB.Levels.CharName, character))
  166. AvMp = db:aggregate(LevelDB.Levels.MpGain, "AVG",db:eq(LevelDB.Levels.CharName, character))
  167. Levels = db:aggregate(LevelDB.Levels.HpGain, "COUNT",db:eq(LevelDB.Levels.CharName, character))
  168. send("gt " .. character .. " Recorded " .. Levels .. " levels - average HP:" .. string.format("%.2f",AvHp) .. " MP:" .. string.format("%.2f",AvMp))
  169.  
  170. end
  171.  
  172. function DBman.GetAreas(character)
  173. send("gt LEVELS FOR " .. character .. "\n")
  174. LevelDB = db:get_database("Level Database")
  175. AreaTable = db:fetch(LevelDB.Levels,db:eq(LevelDB.Levels.CharName, character),{LevelDB.Levels.LevelArea})
  176.  
  177.  
  178. TempEntry = {}
  179. testarea = ""
  180. counter = 0
  181.  
  182. for H,J in ipairs(AreaTable) do
  183.  
  184. if (J.LevelArea == testarea) then
  185. TempEntry[counter].count = TempEntry[counter].count +1
  186. else
  187. counter = counter + 1
  188. testarea = J.LevelArea
  189. table.insert(TempEntry,{name = J.LevelArea,count = 1})
  190. end
  191. end
  192.  
  193. for A,B in ipairs(TempEntry) do
  194. send("gt " .. B.name .. "         "  .. B.count .. "\n")
  195. end
  196.  
  197. end
  198.  
  199. function DBman.AddNewLevel(charname,charrace,charclass,level,sublevel,area)
  200.  
  201. --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)
  202. local templevel,adjustedsub = 0,0
  203.  
  204. if (tonumber(sublevel) == 999) then
  205. echo("you are over 999.. calculating..\n")
  206.  
  207.  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)))}))
  208.  
  209. if(results == nil) then
  210. --
  211.   adjustedsub = 999
  212. else
  213.  
  214.     for K,V in ipairs(results) do
  215.       adjustedsub = tonumber(V.AdjustedLevel)
  216.     end
  217.   adjustedsub = tonumber(adjustedsub) + 1
  218. end
  219.  
  220. templevel = 999
  221.  
  222. elseif tonumber(sublevel) == 1 and tonumber(level)&lt;51 then
  223. echo("Lowmortal alert\n")
  224. templevel = tonumber(level)
  225. adjustedsub = level
  226.  
  227. else  
  228. echo("you are small. maths be simple\n")
  229. templevel = tonumber(sublevel)
  230. adjustedsub = templevel
  231.  
  232. end
  233. echo("You are level " .. adjustedsub)
  234. db:add(LevelDB.Levels, {
  235.   CharName = charname,
  236.   CharRace = charrace,
  237.   CharClass = charclass,
  238.   LevelGained = level,
  239.   SublevelGained = templevel,
  240.   LevelArea = area,
  241.   HpGain = tonumber(StatTable.HPGain),
  242.   MpGain = tonumber(StatTable.MPGain),
  243.   MvGain = tonumber(StatTable.MVGain),
  244.   PracGain = tonumber(StatTable.PracGain),
  245.   TotalHP = tonumber(StatTable.HPMax),
  246.   TotalMP = tonumber(StatTable.MPMax),
  247.   TotalMV = tonumber(StatTable.MVMax),
  248.   TotalPrac = tonumber(StatTable.PracMax),
  249.   AdjustedLevel = tonumber(adjustedsub)
  250.  
  251.   })
  252. echo("level added")
  253. StatTable.AdjustedLevel = adjustedsub
  254.  
  255.  
  256. StatTable.HPGain = 0
  257. StatTable.HPMax = 0
  258. StatTable.MPGain = 0
  259. StatTable.MPMax = 0
  260. StatTable.MVGain = 0
  261. StatTable.MVMax = 0
  262. StatTable.PracGain = 0
  263. StatTable.PracMax = 0
  264.  
  265. end
  266. </script>
  267.             <eventHandlerList />
  268.         </Script>
  269.     </ScriptPackage>
  270. <TriggerPackage>
  271.         <Trigger isActive="yes" isFolder="no" isTempTrigger="no" isMultiline="no" isPerlSlashGOption="no" isColorizerTrigger="no" isFilterTrigger="no" isSoundTrigger="no" isColorTrigger="no" isColorTriggerFg="no" isColorTriggerBg="no">
  272.             <name>level gain</name>
  273.             <script>StatTable.RunLevels = (StatTable.RunLevels + 1)
  274. StatTable.RunHP = (StatTable.RunHP + matches[2])
  275. StatTable.RunMP = (StatTable.RunMP + matches[4])
  276. StatTable.RunMV = (StatTable.RunMV + matches[6])
  277. StatTable.RunPrac = (StatTable.RunPrac + matches[8])
  278. RunLevelsLabel:echo(StatTable.RunLevels .. " Levels")
  279. RunStatsLabel:echo(StatTable.RunHP .. "HP / " .. StatTable.RunMP .. "MP" )
  280. --new shit to try and solve level database issues
  281. StatTable.HPGain = matches[2]
  282. StatTable.HPMax = matches[3]
  283. StatTable.MPGain = matches[4]
  284. StatTable.MPMax = matches[5]
  285. StatTable.MVGain = matches[6]
  286. StatTable.MVMax = matches[7]
  287. StatTable.PracGain = matches[8]
  288. StatTable.PracMax = matches[9]
  289. --function DBman.AddLevel(charname,charrace,charclass,level,sublevel,area,hp,maxhp,mana,maxmana,moves,maxmoves,pracs,totalpracs)
  290. --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])
  291. --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])]] )
  292. 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>
  293.             <triggerType>0</triggerType>
  294.             <conditonLineDelta>0</conditonLineDelta>
  295.             <mStayOpen>0</mStayOpen>
  296.             <mCommand></mCommand>
  297.             <packageName></packageName>
  298.             <mFgColor>#ff0000</mFgColor>
  299.             <mBgColor>#ffff00</mBgColor>
  300.             <mSoundFile></mSoundFile>
  301.             <colorTriggerFgColor>#000000</colorTriggerFgColor>
  302.             <colorTriggerBgColor>#000000</colorTriggerBgColor>
  303.             <regexCodeList>
  304.                 <string>^Your gain is: (\d+)\/(\d+) hp, (\d+)\/(\d+) m, (\d+)\/(\d+) mv (\d+)\/(\d+) prac.</string>
  305.                 <string>^You raise a level!!  Your gain is: (\d+)\/(\d+) hp, (\d+)\/(\d+) m, (\d+)\/(\d+) mv (\d+)\/(\d+) prac.</string>
  306.             </regexCodeList>
  307.             <regexCodePropertyList>
  308.                 <integer>1</integer>
  309.                 <integer>1</integer>
  310.             </regexCodePropertyList>
  311.         </Trigger>
  312.     </TriggerPackage>
  313. </MudletPackage>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement