ATAC requires AMX Mod X 1.76c or above with FakeMeta module enabled.
To install the mod, follow these directions:
Configuration is done 98% through atac.cfg file in amxmodx/configs/atac. The other 2% is done in the atac.inc file in amxmodx/scripting/include which just involves changing the defines at the top of the file. This is only required if your not happy with how many registered punishments/hooks are allowed.
ATAC | ||
---|---|---|
Name | Information | Default Value |
atac_disabled | Switches ATAC off or on | 0 |
atac_menu | Switches punishment menu on or off | 1 |
atac_menu_overwrite | Switches menu overwriting on or off | 0 |
atac_show_punishment | Shows which punishment was selected | 1 |
atac_immunity_flags | Sets the access level flags needed for a player to have immunity | a |
atac_admins_immune | Sets admin immunity type: 0=OFF, 1=NO KICK/BAN, 2=ON (Admins require flag "a") | 1 |
atac_tk_avoidance | Increases Team Killers TK's upon disconnect when trying to avoid punishment: 0=OFF, 1=ON | 1 |
atac_store_kills | Switches storage of kills per map on or off | 1 |
atac_tk_afterdeath | Sets to count a TA/TK when attacker/killer dies beforehand (ie grenades, or other projectiles) | 0 |
atac_ban_type | Sets banning type: 0=OFF, 1=IP, 2=AUTHID, 3=AUTO-DETECT | 3 |
atac_ban_time | Sets amount of time (minutes) you want to ban a user after their Team Kills have reached the limit (0=PERMANENT BAN) | 120 |
atac_team_attacks | Sets amount of Team Attacks you want to be counted as a Team Kill (0=OFF) | 5 |
atac_team_kills | Sets amount of Team Kills you want allowed before user is kicked/banned (0=OFF) | 3 |
Punishments | ||
atac_slap_amount | Sets how many slaps to give a killer [atac_slap plugin] | 10 |
atac_slap_power | Sets how much health to take away from killer, for each slap [atac_slap plugin] | 5 |
atac_jail_time | Sets the amount of time you want the killer jailed for, in seconds [atac_jail plugin] | 45 |
atac_bomb_mode | Sets whether Time bomber can affect others: 0=Killer *ONLY*, 1=Killer can blow up others [atac_bomb plugin] | 0 |
atac_bomb_range | Sets explosion range to kill others [atac_bomb plugin] | 1000 |
atac_fire_mode | Sets whether killer who is on Fire can affect others: 0=Killer *ONLY*, 1=Killer can ignite others [atac_fire plugin] | 0 |
Team Attack Addon [atac_ta plugin] | ||
atac_slap_attacker | Sets slapping on attacker: 0=OFF, 1=ON (Note: no health is deducted) | 0 |
atac_slayon_maxattacks | Sets slaying on maximum Team Attacks: 0=OFF, 1=ON | 0 |
atac_health_restore | Sets health restoration on victim: 0=OFF, 1=ON | 0 |
atac_mirror_damage | Sets mirror damage on attacker: 0=OFF, 1=ON | 0 |
atac_noattack_within | Sets no Team Attack timelimit in seconds from beginning of spawn (0=OFF) | 5 |
Hud Messages Addon [atac_hudmsg plugin] | ||
atac_hudtext | Sets hud notification type: 0=HudText (Default), 1=SayText (Yellow), 2=SayText (Green), 3=SayText (Team Colour) | 0 |
Server Commands | ||
---|---|---|
Command | Information | Version Implemented |
atac |
off - disables ATAC on - enables ATAC version - displays ATAC version settings - displays ATAC settings players - displays all players team attacks/kills status punishments - displays punishments registered addons - displays addons registered credits - displays credits team - displays current development team |
3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 |
Client Commands | ||
say /atacstatus | Shows your Team Attack and Team Kill status | 3.0 |
atac_addmetk | Allows admins to increment their own Team Kills, mainly used for testing purposes [atac_cmds plugin] | 3.0 |
Natives | ||
---|---|---|
Command | Information | Version Implemented |
atac_register_punishment() | Register a punishment returns -1 on failure. Allows hooking any forward from [Punishments] | 3.0 |
atac_register_addon() | Register a addon returns -1 on failure. Allows hooking any forward from [Addons] | 3.0 |
is_punishment_valid( index ) | Returns -1 on failure or plugin index if punishment is valid | 3.0 |
get_maxpunishments() | Returns maximum amount of punishments registered | 3.0 |
get_atac_attacks( id ) | Gets the amount of Team Attacks done by a player | 3.0 |
set_atac_attacks( attacker, victim, amount=-1) | Sets the amount of Team Attacks done by a player | 3.0 |
get_atac_kills( id ) | Gets the amount of Team Kills done by a player | 3.0 |
set_atac_kills( killer, victim, amount=-1, special=-1 ) | Sets the amount of Team Kills done by a player. special -1 - No action, 0 - Simulate a real team kill longs the killer & victim teams match!, 1 - Fun Menu, 2+ - Activate a specific punishment |
3.0 |
Forwards | ||
atac_punishment_name( victim ) | Called when ATAC builds it's Team Kill Menu. You must return with EngFunc_AllocString! [Punishments] | 3.0 |
atac_player_punish( killer, victim ) | Called when a punishment is chosen. [Punishments] | 3.0 |
atac_player_reset( killer, victim ) | Called when a player dies and just before a player respawns. [Punishments] | 3.0 |
atac_player_spawn( killer, victim ) | Called when a player (re)spawns. [Punishments] | 3.0 |
atac_team_attack( attacker, victim, damage ) | Called when a team attack occurs. [Addons] | 3.0 |
atac_team_kill( killer, victim ) | Called when a team kill occurs. [Addons] | 3.0 |
atac_punished( killer, const name[], const authid[], bantype ) | Called when a team kill increment occurs. This forward can supercede ATAC's banning system by: return PLUGIN_HANDLED [Addons] |
3.0 |
atac_punishment_activated( punishment_id, killer, victim ) | Called when a punishment activates. [Addons] | 3.0.1 |
Example Registering a Punishment:
#include <amxmodx> #include <fakemeta> #include <atac> #define PLUGIN "Some Name" #define VERSION "Some Number" #define AUTHOR "Some Name" public plugin_init() { register_plugin( PLUGIN, VERSION, AUTHOR ) atac_register_punishment() } public atac_punishment_name( id ) { // Setup menu text new text[ 64 ] formatex( text, 63, "%L", id, "SOME_MACRO" ) // You must do this, else ATAC won't decode your string return engfunc( EngFunc_AllocString, text ) } public atac_player_punish( killer, victim ) { // Saves duplicating data exec_punishment( killer ) // You don't have to return a hook but it saves catching events return ATAC_HOOK_RESET } public atac_player_spawn( killer, victim ) { // Saves duplicating data exec_punishment( killer ) // You don't have to return a hook but it saves catching events return ATAC_HOOK_RESET } public atac_player_reset( killer, victim ) { client_print( 0, print_chat, "Punishment ended for: %i", killer ) } exec_punishment(id) { client_print( 0, print_chat, "Executing punishment on: %i", id ) }
Example Registering Team Damage Attack:
#include <amxmodx> #include <atac> #define PLUGIN "Some Name" #define VERSION "Some Number" #define AUTHOR "Some Name" public plugin_init() { register_plugin( PLUGIN, VERSION, AUTHOR ) atac_register_addon() } public atac_team_attack( attacker, victim, damage ) { client_print( 0, print_chat, "Attacker: %i - Victim: %i - Damage: %i", attacker, victim, damage ) }
Adding support for external modifications is quite simple. All you need to do is this (Example):
set_pev( id, pev_dmg_inflictor, index ) // FakeMeta Module way set_pev( id, pev_health, value ) // Fun Module way set_user_health( id, value )
As soon as health is changed ATAC intercepts the call and checks whether its a team mate attacking.
MODs that enhance gameplay which allows for team mate attacking/killing would need to disable ATAC else it'll just spoil the MOD, here is how:
new atac_active atac_check() { atac_active = get_cvar_pointer( "atac_disabled" ) if ( !get_pcvar_num( atac_active ) ) server_cmd( "atac off" ) }
DO NOT ASK: any ATAC TEAM member to write direct support for your PLUGIN inside of ATAC itself, it will never happen since as of this version ATAC supports near enough any Half-Life 1 modification. Writing direct support for certain PLUGIN's is pointless since they mainly support only one particular MOD!
* Copyright © 2006-2008, ATAC Team
*
* ATAC (Advanced Team Attack Control) is free software;
* you can redistribute it and/or modify it under the terms of the
* GNU General Public License as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ATAC (Advanced Team Attack Control); if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
People who contributed/inspired ATAC are:
3.0.1: 28/03/08 Updated documentation, added Back to Top at the end of each section. Added missing cvars to the table. Fixed an issue with Jail punishment, where in rare instances you maynot spawn with any weapons. Added CVAR "atac_hudtext" to atac_hudmsg plugin as requested by Jay-izi. Allows using SayText, read addons.cfg for more details. Changed forward: "atac_punished(killer, const name[], const authid[])" to "atac_punished(killer, const name[], const authid[], bantype)". Added new forward "atac_punishment_activated(punishment_id, killer, victim)". Called when a punishment activates. Fixed punishments: atac_slap2one, atac_slap, and atac_slay. They shouldn't return ATAC_HOOK_RESET. Added CVAR "atac_tk_avoidance". Increase Team Killers TK's upon disconnect when trying to avoid punishment. Updated addon "atac_cmds" due to native changes. Changed native "set_atac_kills(killer, amount=-1, victim=0, item=0)" to "set_atac_kills(killer, victim, amount=-1, special=-1)". Changed native "set_atac_attacks(attacker, amount, victim=0)" to "set_atac_attacks(attacker, victim, amount=-1)". Added CVAR "atac_show_punishment". Allows you to see which punishment was selected. Updated addon "atac_cmds" so you can define your own access flags, see "atac_commands.cfg" for more details. Changed CVAR "atac_nocount_death" to "atac_tk_afterdeath". Fixed victim menu so if 2+ victims are looking at the same killer record, it now updates. Fixed victim menu so it auto-closes when the killer disconnects. Fixed punishments not being saved on disconnecting client if they were dead. Removed multi_print function, not required due to console_print. Changed register_clcmd and register_srvcmd into one register_concmd (Thx DevconeS for pointing this out). Added CVAR "atac_immunity_flags". Users can now specify the specific flags they want to have immunity. Updated the kick message for when a player is kicked or banned (not via AMXBans). Added the killer's current Team Kill count to the title of the punishment menu. Fixed possible menu exploit which a victim could expose. Updated Polish translation thanks to Sn!ff3r. Fixed multiple issues when a player reaches max Team Kills and the "kick" option is chosen. Minor change to atac_version CVAR so the version immediately changes upon map change. Added Portuguese - Brazil (pt) thanks to guilherme. Added Finnish (fi) thanks to Cofeiini. Added Romanian (ro) thanks to Nem0. Added Portuguese (bp) thanks to Arion. Fixed IP banning system. Fixed Polish translation thanks to zuk4u. Updated ATAC Timebomb to 1.1 which fixes potential double death icon bug. Updated ATAC Badaim to 1.1 which is now converted to FakeMeta scheme. Updated ATAC AMXBans to 1.1 which fixes possible incorrect banning procedure. 3.0: 04/10/07 Public Release for Series 3.