Advertisement
Anaristos

Untitled

Oct 20th, 2012
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.70 KB | None | 0 0
  1. require("CLRPackage")
  2. --
  3. import "System.Text.RegularExpressions"
  4. --
  5. require("re")
  6. --
  7. Area = class()
  8. --
  9. Areas = LinqArray()
  10. --
  11. function Area:init(flevel, tlevel, llock, name, eploc, sid, zid)
  12. --
  13.     self.FromLevel  = flevel or 0
  14.     self.Tolevel    = tlevel or 0
  15.     self.LevelLock  = llevel or 0
  16.     self.Name       = name   or ""
  17.     self.EntryPoint = eploc  or ""
  18.     self.ShortID    = sid    or ""
  19.     self.ZoneID     = zid    or -1
  20. --
  21. end
  22. --
  23. function Area:load()
  24. --
  25.     local ssa = sqlServer.ctor("MOBILEOFFICE\\SQLSERVEREXPRESS","Aardwolf")
  26.  
  27.     ssa.Open()
  28.    
  29.     local result = ssa.execProc("cd_get_area_new_tbl")
  30.    
  31.     for i = 0, #result
  32.         do
  33.             Areas:add(
  34.                            Area(
  35.                                  result[i].Fromlevel
  36.                                 ,result[i].ToLevel
  37.                                 ,result[i].LevelLock
  38.                                 ,result[i].Area
  39.                                 ,result[i].EntryPoint
  40.                                 ,result[i].ShortID
  41.                                 ,result[i].ZoneID
  42.                                )
  43.                        )
  44.         end
  45.        
  46.     ssa.Close()
  47. --
  48. end
  49. --
  50. Room = class()
  51. --
  52. Rooms = LinqArray()
  53. --
  54. function Room:init(objid, name, idname, refnum, userstr, userint, zid)
  55. --
  56.     self.ObjId      = objid   or 0
  57.     self.Name       = name    or ""
  58.     self.IDName     = idname  or ""
  59.     self.RefNum     = refnum  or -1
  60.     self.UserStr    = userstr or ""
  61.     self.UserInt    = userint or 0
  62.     self.ZoneID     = zid     or -1
  63. --
  64. end
  65. --
  66. function Room:load()
  67.  
  68.     local ssa = sqlManager.ctor("C:\\Tony Gomez\\SQLite3\\Databases\\AardwolfV3.dbm")
  69.  
  70.     ssa.Open()
  71.    
  72.     local sql = "SELECT [ObjId], [Name], [IDName], [RefNum], [UserStr], [UserInt], [ZoneID] "
  73.           sql = sql.."FROM [ObjectTbl] WHERE [Name] != '' AND [UserInt] & 128 = 0 ORDER BY [ObjId]"
  74.    
  75.     local result = ssa.execSelect(sql)
  76.    
  77.     for i = 0, #result
  78.         do
  79.             Rooms:add(
  80.                           Room(
  81.                                  result[i].ObjId
  82.                                 ,result[i].Name
  83.                                 ,result[i].IDName
  84.                                 ,result[i].RefNum
  85.                                 ,result[i].UserStr
  86.                                 ,result[i].UserInt
  87.                                 ,result[i].ZoneID
  88.                                )
  89.                        )
  90.         end
  91.        
  92.     ssa.Close()
  93. --
  94. end
  95. --
  96. Zone = class()
  97. --
  98. Zones = LinqArray()
  99. --
  100. function Zone:init(zid, name, parent)
  101. --
  102.     self.ZoneId  = zid    or -1
  103.     self.Name    = name   or ""
  104.     self.Parent  = parent or -1
  105. --
  106. end
  107. --
  108. function Zone:load()
  109.  
  110.     local ssa = sqlManager.ctor("C:\\Tony Gomez\\SQLite3\\Databases\\AardwolfV3.dbm")
  111.  
  112.     ssa.Open()
  113.    
  114.     local sql = "SELECT [ZoneId], [Name], [Parent] FROM [ZoneTbl] ORDER BY [ZoneId]"
  115.    
  116.     local result = ssa.execSelect(sql)
  117.    
  118.     for i = 0, #result
  119.         do
  120.             Zones:add(
  121.                           Zone(
  122.                                  result[i].ZoneId
  123.                                 ,result[i].Name
  124.                                 ,result[i].Parent
  125.                                )
  126.                        )
  127.         end
  128.        
  129.     ssa.Close()
  130. --
  131. end
  132. --
  133. Area:load()
  134. --
  135. Room:load()
  136. --
  137. Zone:load()
  138. --
  139. function querydbm(req, room, zone)
  140. -- 
  141.     dbm_grl = function(room)
  142.              
  143.              local w = function(w)    return w.Name:lower():find(room:lower()) end
  144.              local s = function(s)    return { ri = s.ObjId, rv = s.RefNum, rn = s.Name, rz = s.ZoneID } end
  145.              local c = function(r, z) return r.rz == z.ZoneId end
  146.              local r = function(r, z) return { ri = r.ri, rv = r.rv, rn = r.rn, zn = z.Name } end
  147.              
  148.              local rooms = Rooms:where(w):select(s):join(Zones,c,r)
  149.              
  150.              return rooms, rooms:count(), rooms:max(function(m) return m.rn:len() end)
  151.              
  152.              end
  153.    
  154.     dbm_srl = function(room, zname)
  155.    
  156.               local w1 = function(w)    return w.Name:lower():find(room:lower()) end
  157.               local w2 = function(w)    return w.Name:lower():find(zone) end
  158.               local s1 = function(s)    return { ri = s.ObjId, rv = s.RefNum, rn = s.Name, rz = s.ZoneID } end
  159.               local s2 = function(s)    return { zn = s.Name, zz = s.ZoneId } end
  160.               local c  = function(r, z) return r.rz == z.zz end
  161.               local r =  function(r, z) return { ri = r.ri, rv = r.rv, rn = r.rn, zn = z.zn } end
  162.              
  163.               local zone = re.match((zname:lower()):gsub("'","''"),"'the '? {.*}")
  164.              
  165.               local rooms = Rooms:where(w1):select(s1):join(Zones:where(w2):select(s2),c,r)
  166.              
  167.               return rooms, rooms:count(), rooms:max(function(m) return m.rn:len() end)
  168.    
  169.               end
  170.    
  171.     dbm_mrl = function(room)
  172.    
  173.               local regex = Regex("(?i)^"..room.."(?:$| \\(g\\)| \\([^\\)]+\\)| \\[\\*\\*\\> pk \\<\\*\\*\\]| \\[\\*\\*\\> cmaze \\<\\*\\*\\])")
  174.              
  175.               local w = function(w)    return regex:Match(w.Name).Success end
  176.               local s = function(s)    return { ri = s.ObjId, rv = s.RefNum, rn = s.Name, rz = s.ZoneID } end
  177.               local c = function(r, z) return r.rz == z.zz end
  178.               local r = function(r, z) return { ri = r.ri, rv = r.rv, rn = r.rn, zn = z.Name } end
  179.              
  180.               local rooms = Rooms:where(w):select(s):join(Zones,c,r)
  181.              
  182.               return rooms, rooms:count(), rooms:max(function(m) return m.rn:len() end)
  183.    
  184.               end
  185.    
  186.     dbm_zrl = function(room,zname)
  187.    
  188.               local regex = Regex("(?i)^"..room.."(?:$| \\(g\\)| \\([^\\)]+\\)| \\[\\*\\*\\> pk \\<\\*\\*\\]| \\[\\*\\*\\> cmaze \\<\\*\\*\\])")
  189.              
  190.               local w1 = function(w)    return regex:Match(w.Name).Success end
  191.               local w2 = function(w)    return w.Name:lower():find(zone) end
  192.               local s1 = function(s)    return { ri = s.ObjId, rv = s.RefNum, rn = s.Name, rz = s.ZoneID } end
  193.               local s2 = function(s)    return { zn = s.Name, zz = s.ZoneId } end
  194.               local r  = function(r)    return r.rz end
  195.               local z  = function(z)    return z.zz end
  196.               local rz = function(r, z) return { ri = r.ri, rv = r.rv, rn = r.rn, zn = z.zn } end
  197.              
  198.               local zone = re.match((zname:lower()):gsub("'","''"),"'the '? {.*}")
  199.              
  200.               local rooms = Rooms:where(w1):select(s1):join(Zones:where(w2):select(s2),r,z,rz)
  201.              
  202.               return rooms, rooms:count(), rooms:max(function(m) return m.rn:len() end)
  203.    
  204.               end
  205. --
  206.     local reqtab = {dbm_grl, dbm_srl, dbm_mrl, dbm_zrl }
  207.    
  208.     if type(req) == "number" and req >= 0 and req <= 3  then
  209.         return reqtab[req + 1](room, zone)
  210.         else return "" 
  211.     end
  212. --
  213. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement