Advertisement
Guest User

Untitled

a guest
Oct 20th, 2014
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.62 KB | None | 0 0
  1. ANTI_TEAMKILL_TEAMS_TABLE = ANTI_TEAMKILL_TEAMS_TABLE || { };
  2.  
  3. //
  4. // Added so that DarkRP has time to create the teams before we access the values.
  5. // Other hooks that may work: InitPostEntity, Initialize ( may run too early )
  6. //
  7. hook.Add( "CreateTeams", "ParseTableAtRightTime", function( )
  8.     ANTI_TEAMKILL_TEAMS_TABLE = {
  9.         // Please note, your team system may require an ID to compare instead of a string name
  10.         // as depicted below; If you use string identifiers, or string identifiers are returned
  11.         // when you print( Entity( 1 ):Team( ) ), you'd put those identifiers below. IF they are
  12.        // referenced as numerical ids, you may need to parse the identifiers by wrapping them in
  13.        // square-brackets ( [ ] ).
  14.        //
  15.        // PARSED AS NUMERICAL KEY EXAMPLE ( Rest of the script will work as is ):
  16.  
  17.         TEAM_CINFANTRY1 = 1;
  18.         TEAM_CINFANTRY2 = 1;
  19.         TEAM_CINFANTRY3 = 1;
  20.         TEAM_CINFANTRY4 = 1;
  21.         TEAM_CINFANTRY5 = 1;
  22.         TEAM_CINFANTRY6 = 1;
  23.         TEAM_CINFANTRY7 = 1;
  24.         TEAM_CINFANTRY8 = 1;
  25.         TEAM_CINFANTRY9 = 1;
  26.         TEAM_CINFANTRY10 = 1;
  27.         TEAM_CRECON1 = 1;
  28.         TEAM_CRECON2 = 1;
  29.         TEAM_CRECON3 = 1;
  30.         TEAM_CRECON4 = 1;
  31.         TEAM_CRECON5 = 1;
  32.         TEAM_CRECON6 = 1;
  33.         TEAM_CRECON7 = 1;
  34.         TEAM_CRECON8 = 1;
  35.         TEAM_CRECON9 = 1;
  36.         TEAM_CRECON10 = 1;
  37.         TEAM_CBALLISTIC1 = 1;
  38.         TEAM_CBALLISTIC2 = 1;
  39.         TEAM_CBALLISTIC3 = 1;
  40.         TEAM_CBALLISTIC4 = 1;
  41.         TEAM_CBALLISTIC5 = 1;
  42.         TEAM_CBALLISTIC6 = 1;
  43.         TEAM_CBALLISTIC7 = 1;
  44.         TEAM_CBALLISTIC8 = 1;
  45.         TEAM_CBALLISTIC9 = 1;
  46.         TEAM_CBALLISTIC10 = 1;
  47.         TEAM_CSUPPORT1 = 1;
  48.         TEAM_CSUPPORT2 = 1;
  49.         TEAM_CSUPPORT3 = 1;
  50.         TEAM_CSUPPORT4 = 1;
  51.         TEAM_CSUPPORT5 = 1;
  52.         TEAM_CSUPPORT6 = 1;
  53.         TEAM_CSUPPORT7 = 1;
  54.         TEAM_CSUPPORT8 = 1;
  55.         TEAM_CSUPPORT9 = 1;
  56.         TEAM_CSUPPORT10 = 1;
  57.         TEAM_CMARKSMAN1 = 1;
  58.         TEAM_CMARKSMAN2 = 1;
  59.         TEAM_CMARKSMAN3 = 1;
  60.         TEAM_CMARKSMAN4 = 1;
  61.         TEAM_CMARKSMAN5 = 1;
  62.         TEAM_CMARKSMAN6 = 1;
  63.         TEAM_CMARKSMAN7 = 1;
  64.         TEAM_CMARKSMAN8 = 1;
  65.         TEAM_CMARKSMAN9 = 1;
  66.         TEAM_CMARKSMAN10 = 1;
  67.         TEAM_CSPECIAL1 = 1;
  68.         TEAM_CSPECIAL2 = 1;
  69.         TEAM_CSPECIAL3 = 1;
  70.         TEAM_CSPECIAL4 = 1;
  71.         TEAM_CSPECIAL5 = 1;
  72.         TEAM_CSPECIAL6 = 1;
  73.         TEAM_CSPECIAL7 = 1;
  74.         TEAM_CSPECIAL8 = 1;
  75.         TEAM_CSPECIAL9 = 1;
  76.         TEAM_CSPECIAL10 = 1;
  77.  
  78.         TEAM_RINFANTRY1 = 2;
  79.         TEAM_RINFANTRY2 = 2;
  80.         TEAM_RINFANTRY3 = 2;
  81.         TEAM_RINFANTRY4 = 2;
  82.         TEAM_RINFANTRY5 = 2;
  83.         TEAM_RINFANTRY6 = 2;
  84.         TEAM_RINFANTRY7 = 2;
  85.         TEAM_RINFANTRY8 = 2;
  86.         TEAM_RINFANTRY9 = 2;
  87.         TEAM_RINFANTRY10 = 2;
  88.         TEAM_RRECON1 = 2;
  89.         TEAM_RRECON2 = 2;
  90.         TEAM_RRECON3 = 2;
  91.         TEAM_RRECON4 = 2;
  92.         TEAM_RRECON5 = 2;
  93.         TEAM_RRECON6 = 2;
  94.         TEAM_RRECON7 = 2;
  95.         TEAM_RRECON8 = 2;
  96.         TEAM_RRECON9 = 2;
  97.         TEAM_RRECON10 = 2;
  98.         TEAM_RBALLISTIC1 = 2;
  99.         TEAM_RBALLISTIC2 = 2;
  100.         TEAM_RBALLISTIC3 = 2;
  101.         TEAM_RBALLISTIC4 = 2;
  102.         TEAM_RBALLISTIC5 = 2;
  103.         TEAM_RBALLISTIC6 = 2;
  104.         TEAM_RBALLISTIC7 = 2;
  105.         TEAM_RBALLISTIC8 = 2;
  106.         TEAM_RBALLISTIC9 = 2;
  107.         TEAM_RBALLISTIC10 = 2;
  108.         TEAM_RSUPPORT1 = 2;
  109.         TEAM_RSUPPORT2 = 2;
  110.         TEAM_RSUPPORT3 = 2;
  111.         TEAM_RSUPPORT4 = 2;
  112.         TEAM_RSUPPORT5 = 2;
  113.         TEAM_RSUPPORT6 = 2;
  114.         TEAM_RSUPPORT7 = 2;
  115.         TEAM_RSUPPORT8 = 2;
  116.         TEAM_RSUPPORT9 = 2;
  117.         TEAM_RSUPPORT10 = 2;
  118.         TEAM_RMARKSMAN1 = 2;
  119.         TEAM_RMARKSMAN2 = 2;
  120.         TEAM_RMARKSMAN3 = 2;
  121.         TEAM_RMARKSMAN4 = 2;
  122.         TEAM_RMARKSMAN5 = 2;
  123.         TEAM_RMARKSMAN6 = 2;
  124.         TEAM_RMARKSMAN7 = 2;
  125.         TEAM_RMARKSMAN8 = 2;
  126.         TEAM_RMARKSMAN9 = 2;
  127.         TEAM_RMARKSMAN10 = 2;
  128.         TEAM_RSPECIAL1 = 2;
  129.         TEAM_RSPECIAL2 = 2;
  130.         TEAM_RSPECIAL3 = 2;
  131.         TEAM_RSPECIAL4 = 2;
  132.         TEAM_RSPECIAL5 = 2;
  133.         TEAM_RSPECIAL6 = 2;
  134.         TEAM_RSPECIAL7 = 2;
  135.         TEAM_RSPECIAL8 = 2;
  136.         TEAM_RSPECIAL9 = 2;
  137.         TEAM_RSPECIAL10 = 2;
  138. end );
  139.  
  140.  
  141. //
  142. // When making hooks, it is best to remain non-intrusive. Other hooks may be running to determine damage in addition to this one.
  143. // To remain non-intrusive we create the scenario which matches the logic we're using; nothing else should be touched.
  144. //
  145.  
  146. //
  147. // Perform the action that prevents team-damage between like-teams
  148. //
  149. hook.Add("PlayerShouldTakeDamage", "PlayerShouldTakeDamage:AvoidTeamDamage", function( _victim, _attacker )
  150.     // Make sure both victim and attacker are valid entities and that they're both player entities -- The victim can be assumed a player because of the hook. We're just calling it to remain uniform.
  151.     if ( IsValid( _victim ) && IsValid( _attacker ) && _victim:IsPlayer( ) && _attacker:IsPlayer( ) ) then
  152.         // If both victim and attacker team data matches, don't allow damage. This is the ONLY test we need to perform.
  153.        if ( ANTI_TEAMKILL_TEAMS_TABLE[ _victim:Team( ) ] == ANTI_TEAMKILL_TEAMS_TABLE[ _attacker:Team( ) ] ) then
  154.            return false;
  155.        end
  156.    end
  157. end );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement