Advertisement
cressidagp

storageHandler

Dec 30th, 2024
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.11 KB | None | 0 0
  1. ARCMERCS = {}
  2.  
  3. --- LoadMercsOnMapChange
  4. ---   This function loads all mercenaries of a player when enter world or map change.
  5. ---
  6. --- Parameter(s)
  7. ---   event
  8. ---   plr
  9. ---
  10. --- Return value
  11. ---   None.
  12. ---
  13. function ARCMERCS.LoadMercsOnMapChange( event, plr )
  14.  
  15.     local p = tostring(plr:GetGUID())
  16.    
  17.     local result = WorldDBQuery("SELECT entry, display, angle, stance FROM arcmercs.mercenaries WHERE ownerGuid = '"..p.."' AND groupId = 1")
  18.    
  19.     if result then
  20.    
  21.         local rowcount = result:GetRowCount()
  22.        
  23.         local level = plr:GetLevel()
  24.        
  25.         local id = 0
  26.        
  27.         repeat
  28.            
  29.             rowcount = rowcount - 1
  30.            
  31.             local entry = result:GetColumn( 0 ):GetUShort()
  32.            
  33.             local display = result:GetColumn( 1 ):GetULong()
  34.            
  35.             local angle = result:GetColumn( 2 ):GetFloat()
  36.            
  37.             if entry ~= 0 then
  38.            
  39.                 local merc = plr:CreateGuardian( entry, 0, angle, level ) -- duration = 0 for never despawn
  40.                
  41.                 merc:SetModel( display )
  42.                
  43.                 if stance ~= 0 then
  44.                
  45.                     local q = WorldDBQuery("SELECT slot1, slot2, slot3 FROM arcmercs.weapons WHERE entry = "..entry.." AND display = "..merc:GetDisplay().." AND stance = "..stance.."")
  46.                    
  47.                     if q then
  48.                    
  49.                         merc:EquipWeapons( q:GetColumn( 0 ):GetULong(), q:GetColumn( 1 ):GetULong(), q:GetColumn( 2 ):GetULong() )
  50.                        
  51.                     end
  52.                    
  53.                 end            
  54.                
  55.                 merc:SetByteValue( 0x7A, 0, 1 ) -- set weapons at hand
  56.                
  57.                 local m = tostring(merc:GetGUID())
  58.  
  59.                 if entry == 43284 or entry == 43285 then
  60.                
  61.                     id = id + 1
  62.                
  63.                     WorldDBQuery("UPDATE arcmercs.mercenaries SET mercGuid = '"..m.."' WHERE ownerGuid = '"..p.."' AND groupId = 1 AND id = '"..id.."'")
  64.                    
  65.                     merc:SetByteValue( 0x0006 + 0x0011, 1, 1 ) -- set class: warrior
  66.                    
  67.                     local guid = tostring(merc)
  68.                    
  69.                     if not ARCMERCS[guid].soldierStance then
  70.                    
  71.                         ARCMERCS[guid].soldierStance = 1
  72.                        
  73.                     end
  74.                    
  75.                 end
  76.                
  77.             end
  78.            
  79.             result:NextRow()
  80.        
  81.         until rowcount == 0
  82.        
  83.         print("[ArcMercs]: mercenaries of "..plr:GetName().." loaded. ") -- for debug
  84.        
  85.     end
  86.    
  87. end
  88.  
  89. RegisterServerHook( 4, ARCMERCS.LoadMercsOnMapChange );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement