Advertisement
XaskeL

metatables lua mta sa oop

May 19th, 2021
1,328
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 0.98 KB | None | 0 0
  1. IElementData =
  2. {
  3.     SetData = function ( self, k, v )
  4.         self.Data [ k ] = v;
  5.        
  6.         return self;
  7.     end;
  8.    
  9.     GetData = function ( self, k )
  10.         return self.Data [ k ];
  11.     end;
  12. };
  13.  
  14. Element =
  15. {
  16.     Element = function ( self )
  17.        
  18.     end;
  19. };
  20.  
  21. setmetatable( Element, { __call = Element.Element, __index = IElementData } );
  22.  
  23. Player =
  24. {
  25.     Player = function ( self, name )
  26.         local object = setmetatable(
  27.             {
  28.                 Data = { };        
  29.             },
  30.        
  31.             {
  32.                 __index = self
  33.             }
  34.         );
  35.        
  36.         object.name = name;
  37.        
  38.         return object;
  39.     end;
  40.    
  41.     GetName = function ( self )
  42.         return self.name;
  43.     end;
  44. };
  45.  
  46. setmetatable( Player, { __call = Player.Player, __index = Element } );
  47.  
  48. local pPlayer = Player( "XaskeL" );
  49.  
  50. print( pPlayer:GetName( ) );
  51.  
  52. pPlayer:SetData( "job", true );
  53.  
  54. print( pPlayer:GetData( "job") );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement