Raised This Month: $51 Target: $400
 12% 

(Request) FriendlyFire for CS/TT Only?


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Ark_Procession
Senior Member
Join Date: Jun 2020
Location: Argentina
Old 12-10-2020 , 18:10   (Request) FriendlyFire for CS/TT Only?
Reply With Quote #1

Hello

Can anyone make a plugin so friendlyfire is only for a specific team?

EG:

HTML Code:
friendlyfire_team 1   // friendlyfire for both teams
friendlyfire_team 2 // friendly fire only for Terrorist
friendlyfire_team 3 //friendlyfire only for Counter-Terrorist

Thanks!

Last edited by Ark_Procession; 12-10-2020 at 18:10.
Ark_Procession is offline
Ark_Procession
Senior Member
Join Date: Jun 2020
Location: Argentina
Old 12-23-2020 , 14:42   Re: (Request) FriendlyFire for CS/TT Only?
Reply With Quote #2

bump, could not find this anywhere!
Ark_Procession is offline
Godofwar
AlliedModders Donor
Join Date: Dec 2015
Location: Germany
Old 12-24-2020 , 05:36   Re: (Request) FriendlyFire for CS/TT Only?
Reply With Quote #3

you should ask here: https://amxx-bg.info/viewforum.php?f=33 register Account, use Translator, there you get faster help....
Godofwar is offline
Napoleon_be
Veteran Member
Join Date: Jul 2011
Location: Belgium
Old 12-24-2020 , 09:15   Re: (Request) FriendlyFire for CS/TT Only?
Reply With Quote #4

I'm don't feel like editing this atm, so i'll just share it here just in case someone wants to use/edit it. This code should def. help others.

This code has been tested a while ago, so it should do the job. Right now, it enables friendlyfire and set the gamemode to free for all. Players will have models depending on the weapon they're carrying. Damage to players of the same team, will deal the same amount of damage it would do to an enemy from the other team.

PHP Code:
/* Credits to
    ConnorMcLeod:
        - I got the Free For All code from his plugin: https://forums.alliedmods.net/showthread.php?t=80208

*/

#include <amxmodx>
#include <cstrike>
#include <hamsandwich>
#include <fun>

#pragma semicolon 1

#define PLUGIN "FFA: WeaponBased PlayerModels"
#define VERSION "1.0.0"
#define AUTHOR "NapoleoN#"

enum _:ModelsInfo
{
    
szModelName[32],
    
iWeaponID,
    
CsTeams:csTeams
}

new 
szWeapons[][ModelsInfo] =
{
    { 
"wbknife"CSW_KNIFE CS_TEAM_UNASSIGNED },             // Knife
    
"wbawp"CSW_AWP CS_TEAM_UNASSIGNED },            // AWP
    
"wbfamas"CSW_FAMASCS_TEAM_CT },                 // Famas
    
"wbm4a1"CSW_M4A1CS_TEAM_CT },                    // M4A1
    
"wbak47"CSW_AK47CS_TEAM_T },                     // AK47
    
"wbgalil"CSW_GALILCS_TEAM_T },                     // Galil
    
"wbtmp"CSW_TMPCS_TEAM_CT },                     // TMP
    
"wbump45"CSW_UMP45 CS_TEAM_UNASSIGNED},             // Ump45
    
"wbscout"CSW_SCOUT CS_TEAM_UNASSIGNED},             // Scout
    
"wbxm1014"CSW_XM1014 CS_TEAM_UNASSIGNED},            // XM1014
    
"wbaug"CSW_AUGCS_TEAM_CT },                    // AUG
    
"wbsg550"CSW_SG550CS_TEAM_CT },                // SG550
    
"wbmp5navy"CSW_MP5NAVY CS_TEAM_UNASSIGNED},            // MP5 Navy
    
"wbm249"CSW_M249 CS_TEAM_UNASSIGNED},                 // M249
    
"wbm3"CSW_M3 CS_TEAM_UNASSIGNED},                // M3
    
"wbg3sg1"CSW_G3SG1CS_TEAM_T },                    // G3SG1
    
"wbsg552"CSW_SG552CS_TEAM_T }                     // SG552
};

new 
iMsgRadar;
new 
iMaxPlayers;

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR);

    
register_event("CurWeapon""CheckWeapons""be""1=1");

    
RegisterHam(Ham_TakeDamage"player""PreTakeDamage");
    
RegisterHam(Ham_TraceAttack"player""TraceAttack");

    
iMsgRadar get_user_msgid("Radar");
    
register_message(iMsgRadar"RadarMessage");

    
server_cmd("mp_friendlyfire 1");

    
iMaxPlayers get_maxplayers();
}

precache_player_model(szModel[])
{
    static 
szFile[128];
    
formatex(szFilecharsmax(szFile), "models/player/%s/%s.mdl"szModelszModel);
    
precache_model(szFile);
    
replace(szFilecharsmax(szFile), ".mdl""T.mdl");

    if(
file_exists(szFile))
    {
        
precache_model(szFile);
    }
}

public 
plugin_precache()
{
    for(new 
isizeof(szWeapons); i++)
    {
        
precache_player_model(szWeapons[i][szModelName]);
    }
}

public 
client_putinserver(id)
{
    
client_cmd(id"hideradar");
}

public 
RadarMessage(iMsgIDMsgDestid)
{
    return 
PLUGIN_HANDLED;
}

public 
CheckWeapons(id)
{
    new 
iUserWeapon get_user_weapon(id);
    new 
CsTeams:csTeam cs_get_user_team(id);

    for (new 
isizeof(szWeapons) ; i++)
    {
        if (
iUserWeapon == szWeapons[i][iWeaponID])
        {
            if((
szWeapons[i][csTeams] == CS_TEAM_UNASSIGNED) || (csTeam == szWeapons[i][csTeams]))
            {
                
cs_set_user_model(id szWeapons[i][szModelName]);
            }
            else
            {
                
cs_reset_user_model(id);
            }

            break;
        }
    }
}

public 
PreTakeDamage(iVictimiInflictoriAttackerFloat:fDamageDamageBits)
{
    if(
iVictim != iAttacker && (<= iAttacker <= iMaxPlayers))
    {
        new 
CsTeams:csVictimTeam cs_get_user_team(iVictim);
        if(
csVictimTeam == cs_get_user_team(iAttacker))
        {
            
cs_set_user_team(iVictimcsVictimTeam == CS_TEAM_T CS_TEAM_CT CS_TEAM_T);
            
ExecuteHamB(Ham_TakeDamageiVictimiInflictoriAttackerfDamageDamageBits);
            
cs_set_user_team(iVictimcsVictimTeam);
            return 
HAM_SUPERCEDE;
        }
    }
    return 
HAM_IGNORED;
}

public 
TraceAttack(iVictimiAttackerFloat:fDamageFloat:fDirection[3], TraceHandleDamageBits)
{
    if( 
iVictim != iAttacker && (<= iAttacker <= iMaxPlayers))
    {
        new 
CsTeams:csVictimTeam cs_get_user_team(iVictim);
        if(
csVictimTeam == cs_get_user_team(iAttacker))
        {
            
cs_set_user_team(iVictimcsVictimTeam == CS_TEAM_T CS_TEAM_CT CS_TEAM_T);
            
ExecuteHamB(Ham_TraceAttackiVictimiAttackerfDamagefDirectionTraceHandleDamageBits);
            
cs_set_user_team(iVictimcsVictimTeam);
            return 
HAM_SUPERCEDE;
        }
    }
    return 
HAM_IGNORED;

These 2 are the ones you should be looking at:

PHP Code:
RegisterHam(Ham_TakeDamage"player""PreTakeDamage");
RegisterHam(Ham_TraceAttack"player""TraceAttack"); 
__________________

Last edited by Napoleon_be; 12-24-2020 at 09:17.
Napoleon_be is offline
Send a message via Skype™ to Napoleon_be
Ark_Procession
Senior Member
Join Date: Jun 2020
Location: Argentina
Old 12-24-2020 , 12:25   Re: (Request) FriendlyFire for CS/TT Only?
Reply With Quote #5

Quote:
Originally Posted by Napoleon_be View Post
I'm don't feel like editing this atm, so i'll just share it here just in case someone wants to use/edit it. This code should def. help others.

This code has been tested a while ago, so it should do the job. Right now, it enables friendlyfire and set the gamemode to free for all. Players will have models depending on the weapon they're carrying. Damage to players of the same team, will deal the same amount of damage it would do to an enemy from the other team.

PHP Code:
/* Credits to
    ConnorMcLeod:
        - I got the Free For All code from his plugin: https://forums.alliedmods.net/showthread.php?t=80208

*/

#include <amxmodx>
#include <cstrike>
#include <hamsandwich>
#include <fun>

#pragma semicolon 1

#define PLUGIN "FFA: WeaponBased PlayerModels"
#define VERSION "1.0.0"
#define AUTHOR "NapoleoN#"

enum _:ModelsInfo
{
    
szModelName[32],
    
iWeaponID,
    
CsTeams:csTeams
}

new 
szWeapons[][ModelsInfo] =
{
    { 
"wbknife"CSW_KNIFE CS_TEAM_UNASSIGNED },             // Knife
    
"wbawp"CSW_AWP CS_TEAM_UNASSIGNED },            // AWP
    
"wbfamas"CSW_FAMASCS_TEAM_CT },                 // Famas
    
"wbm4a1"CSW_M4A1CS_TEAM_CT },                    // M4A1
    
"wbak47"CSW_AK47CS_TEAM_T },                     // AK47
    
"wbgalil"CSW_GALILCS_TEAM_T },                     // Galil
    
"wbtmp"CSW_TMPCS_TEAM_CT },                     // TMP
    
"wbump45"CSW_UMP45 CS_TEAM_UNASSIGNED},             // Ump45
    
"wbscout"CSW_SCOUT CS_TEAM_UNASSIGNED},             // Scout
    
"wbxm1014"CSW_XM1014 CS_TEAM_UNASSIGNED},            // XM1014
    
"wbaug"CSW_AUGCS_TEAM_CT },                    // AUG
    
"wbsg550"CSW_SG550CS_TEAM_CT },                // SG550
    
"wbmp5navy"CSW_MP5NAVY CS_TEAM_UNASSIGNED},            // MP5 Navy
    
"wbm249"CSW_M249 CS_TEAM_UNASSIGNED},                 // M249
    
"wbm3"CSW_M3 CS_TEAM_UNASSIGNED},                // M3
    
"wbg3sg1"CSW_G3SG1CS_TEAM_T },                    // G3SG1
    
"wbsg552"CSW_SG552CS_TEAM_T }                     // SG552
};

new 
iMsgRadar;
new 
iMaxPlayers;

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR);

    
register_event("CurWeapon""CheckWeapons""be""1=1");

    
RegisterHam(Ham_TakeDamage"player""PreTakeDamage");
    
RegisterHam(Ham_TraceAttack"player""TraceAttack");

    
iMsgRadar get_user_msgid("Radar");
    
register_message(iMsgRadar"RadarMessage");

    
server_cmd("mp_friendlyfire 1");

    
iMaxPlayers get_maxplayers();
}

precache_player_model(szModel[])
{
    static 
szFile[128];
    
formatex(szFilecharsmax(szFile), "models/player/%s/%s.mdl"szModelszModel);
    
precache_model(szFile);
    
replace(szFilecharsmax(szFile), ".mdl""T.mdl");

    if(
file_exists(szFile))
    {
        
precache_model(szFile);
    }
}

public 
plugin_precache()
{
    for(new 
isizeof(szWeapons); i++)
    {
        
precache_player_model(szWeapons[i][szModelName]);
    }
}

public 
client_putinserver(id)
{
    
client_cmd(id"hideradar");
}

public 
RadarMessage(iMsgIDMsgDestid)
{
    return 
PLUGIN_HANDLED;
}

public 
CheckWeapons(id)
{
    new 
iUserWeapon get_user_weapon(id);
    new 
CsTeams:csTeam cs_get_user_team(id);

    for (new 
isizeof(szWeapons) ; i++)
    {
        if (
iUserWeapon == szWeapons[i][iWeaponID])
        {
            if((
szWeapons[i][csTeams] == CS_TEAM_UNASSIGNED) || (csTeam == szWeapons[i][csTeams]))
            {
                
cs_set_user_model(id szWeapons[i][szModelName]);
            }
            else
            {
                
cs_reset_user_model(id);
            }

            break;
        }
    }
}

public 
PreTakeDamage(iVictimiInflictoriAttackerFloat:fDamageDamageBits)
{
    if(
iVictim != iAttacker && (<= iAttacker <= iMaxPlayers))
    {
        new 
CsTeams:csVictimTeam cs_get_user_team(iVictim);
        if(
csVictimTeam == cs_get_user_team(iAttacker))
        {
            
cs_set_user_team(iVictimcsVictimTeam == CS_TEAM_T CS_TEAM_CT CS_TEAM_T);
            
ExecuteHamB(Ham_TakeDamageiVictimiInflictoriAttackerfDamageDamageBits);
            
cs_set_user_team(iVictimcsVictimTeam);
            return 
HAM_SUPERCEDE;
        }
    }
    return 
HAM_IGNORED;
}

public 
TraceAttack(iVictimiAttackerFloat:fDamageFloat:fDirection[3], TraceHandleDamageBits)
{
    if( 
iVictim != iAttacker && (<= iAttacker <= iMaxPlayers))
    {
        new 
CsTeams:csVictimTeam cs_get_user_team(iVictim);
        if(
csVictimTeam == cs_get_user_team(iAttacker))
        {
            
cs_set_user_team(iVictimcsVictimTeam == CS_TEAM_T CS_TEAM_CT CS_TEAM_T);
            
ExecuteHamB(Ham_TraceAttackiVictimiAttackerfDamagefDirectionTraceHandleDamageBits);
            
cs_set_user_team(iVictimcsVictimTeam);
            return 
HAM_SUPERCEDE;
        }
    }
    return 
HAM_IGNORED;

These 2 are the ones you should be looking at:

PHP Code:
RegisterHam(Ham_TakeDamage"player""PreTakeDamage");
RegisterHam(Ham_TraceAttack"player""TraceAttack"); 
Thanks man , it's not quite what i was looking for but worth checking in out.
Ark_Procession is offline
iceeedr
Veteran Member
Join Date: Apr 2017
Location: Brazil
Old 12-24-2020 , 15:32   Re: (Request) FriendlyFire for CS/TT Only?
Reply With Quote #6

Quote:
Originally Posted by Ark_Procession View Post
Hello

Can anyone make a plugin so friendlyfire is only for a specific team?

EG:

HTML Code:
friendlyfire_team 1   // friendlyfire for both teams
friendlyfire_team 2 // friendly fire only for Terrorist
friendlyfire_team 3 //friendlyfire only for Counter-Terrorist

Thanks!
PHP Code:
#include <amxmodx>
#include <cstrike>
#include <hamsandwich>

#define PLUGIN  "Custom FF"
#define VERSION "1.0.0-36"
#define AUTHOR  "iceeedR & ConnorMcLeod"

#define PlayerTeam(%0)          cs_get_user_team(%0)

new cVarFF

//#define USE_BOTS

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
RegisterHam(Ham_TakeDamage"player""PreTakeDamage")
    
RegisterHam(Ham_TraceAttack"player""CBasePlayer_TraceAttack")
    
register_event("HLTV","EventNewRnd""a""1=0""2=0")

    
#if defined USE_BOTS
    
register_event("TextMsg""Event_TextMsg_Game_connected""a""1=1""2=#Game_connected");
    
state Not_Registered
    
#endif

    
cVarFF register_cvar("friendlyfire_team""2"// 0 Disabled, 1  friendlyfire for both teams, 2 friendly fire only for Terrorist, 3friendlyfire only for Counter-Terrorist
}

public 
EventNewRnd()
{
    
server_cmd("mp_friendlyfire %i"get_pcvar_num(cVarFF) != 0)
}

#if defined USE_BOTS
public Event_TextMsg_Game_connected() <Registered> {}
public 
Event_TextMsg_Game_connected() <Not_Registered>
{
        new 
szName[32];
        
read_data(3szNamecharsmax(szName));
        new 
id find_player("ai"szName);
        if( 
id && IsCzBotid ) )
        {
            
HandleCzBotsHamForwards(id);
            
state Registered;
        }
}

IsCzBotid )
{
#if defined Ham_CS_Player_IsBot
        
static valid = -1;
        if( 
valid == -)
        {
            
valid IsHamValidHam_CS_Player_IsBot );
        }
        if( 
valid )
        {
            return 
ExecuteHam(Ham_CS_Player_IsBotid);
        }
        return 
ExecuteHam(Ham_Weapon_ExtractClipAmmoid0);
#else
        
return ExecuteHam(Ham_Weapon_ExtractClipAmmoid0);
#endif
}

HandleCzBotsHamForwardsid )
{
    
RegisterHamFromEntity(Ham_TraceAttackid"CBasePlayer_TraceAttack"false);
    
RegisterHamFromEntity(Ham_TakeDamageid"PreTakeDamage"false);
}
#endif

public CBasePlayer_TraceAttack(iVictimiAttackerFloat:flDamageFloat:vecDir[3], ptrbitsDamageType)
{
        if(
iVictim != iAttacker && (<= iAttacker <= 32) && get_pcvar_num(cVarFF) != 0)
        {
            switch(
get_pcvar_num(cVarFF))
            {
                case 
1:
                {
                    if(
PlayerTeam(iVictim) == PlayerTeam(iAttacker))
                    {
                        return 
HAM_IGNORED
                    
}
                }

                case 
2:
                {
                    if((
PlayerTeam(iVictim) == PlayerTeam(iAttacker)) && (PlayerTeam(iVictim) == CS_TEAM_CT && PlayerTeam(iAttacker) == CS_TEAM_CT))
                    {
                        return 
HAM_SUPERCEDE
                    
}
                }

                case 
3:
                {
                    if((
PlayerTeam(iVictim) == PlayerTeam(iAttacker)) && (PlayerTeam(iVictim) == CS_TEAM_T && PlayerTeam(iAttacker) == CS_TEAM_T))
                    {
                        return 
HAM_SUPERCEDE
                    
}
                }
            }
        }
        return 
HAM_IGNORED
}

public 
PreTakeDamage(iVictimiInflictoriAttackerFloat:fDamageDamageBits)
{
        if(
iVictim != iAttacker && (<= iAttacker <= 32) && get_pcvar_num(cVarFF) != 0)
        {
            switch(
get_pcvar_num(cVarFF))
            {
                case 
1:
                {
                    if(
PlayerTeam(iVictim) == PlayerTeam(iAttacker))
                    {
                        return 
HAM_IGNORED
                    
}
                }

                case 
2:
                {
                    if((
PlayerTeam(iVictim) == PlayerTeam(iAttacker)) && (PlayerTeam(iVictim) == CS_TEAM_CT && PlayerTeam(iAttacker) == CS_TEAM_CT))
                    {
                        return 
HAM_SUPERCEDE
                    
}
                }

                case 
3:
                {
                    if((
PlayerTeam(iVictim) == PlayerTeam(iAttacker)) && (PlayerTeam(iVictim) == CS_TEAM_T && PlayerTeam(iAttacker) == CS_TEAM_T))
                    {
                        return 
HAM_SUPERCEDE
                    
}
                }
            }
        }
        return 
HAM_IGNORED

__________________


Quote:
Originally Posted by fysiks View Post
Please stop trying to help. You appear to just be posting random stuff. Wait until you actually understand more about AMX Mod X and how the game works.
https://iceeedr.com.br/

Last edited by iceeedr; 12-26-2020 at 11:08.
iceeedr is offline
Send a message via Skype™ to iceeedr
Napoleon_be
Veteran Member
Join Date: Jul 2011
Location: Belgium
Old 12-24-2020 , 19:42   Re: (Request) FriendlyFire for CS/TT Only?
Reply With Quote #7

I told you it was not what you were looking for lol, iceeedr helped you out though.
__________________
Napoleon_be is offline
Send a message via Skype™ to Napoleon_be
Ark_Procession
Senior Member
Join Date: Jun 2020
Location: Argentina
Old 12-25-2020 , 13:18   Re: (Request) FriendlyFire for CS/TT Only?
Reply With Quote #8

Quote:
Originally Posted by Napoleon_be View Post
I told you it was not what you were looking for lol, iceeedr helped you out though.
lol i know, thank you very much, i appreciate the help
Ark_Procession is offline
Ark_Procession
Senior Member
Join Date: Jun 2020
Location: Argentina
Old 12-25-2020 , 13:25   Re: (Request) FriendlyFire for CS/TT Only?
Reply With Quote #9

Quote:
Originally Posted by iceeedr View Post
PHP Code:
#include <amxmodx>
#include <cstrike>
#include <hamsandwich>

#define PLUGIN  "Custom FF"
#define VERSION "1.0.0-36"
#define AUTHOR  "iceeedR & ConnorMcLeod"

#define PlayerTeam(%0)          cs_get_user_team(%0)

new cVarFF

//#define USE_BOTS

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
RegisterHam(Ham_TakeDamage"player""PreTakeDamage")
    
RegisterHam(Ham_TraceAttack"player""CBasePlayer_TraceAttack")
    
register_event("HLTV","EventNewRnd""a""1=0""2=0")

    
#if defined USE_BOTS
    
register_event("TextMsg""Event_TextMsg_Game_connected""a""1=1""2=#Game_connected");
    
state Not_Registered
    
#endif

    
cVarFF register_cvar("friendlyfire_team""2"// 0 Disabled, 1  friendlyfire for both teams, 2 friendly fire only for Terrorist, 3friendlyfire only for Counter-Terrorist
}

public 
EventNewRnd()
{
    
server_cmd("mp_friendlyfire %i"get_pcvar_num(cVarFF) != 0)
}

#if defined USE_BOTS
public Event_TextMsg_Game_connected() <Registered> {}
public 
Event_TextMsg_Game_connected() <Not_Registered>
{
        new 
szName[32];
        
read_data(3szNamecharsmax(szName));
        new 
id find_player("ai"szName);
        if( 
id && IsCzBotid ) )
        {
            
HandleCzBotsHamForwards(id);
            
state Registered;
        }
}

IsCzBotid )
{
#if defined Ham_CS_Player_IsBot
        
static valid = -1;
        if( 
valid == -)
        {
            
valid IsHamValidHam_CS_Player_IsBot );
        }
        if( 
valid )
        {
            return 
ExecuteHam(Ham_CS_Player_IsBotid);
        }
        return 
ExecuteHam(Ham_Weapon_ExtractClipAmmoid0);
#else
        
return ExecuteHam(Ham_Weapon_ExtractClipAmmoid0);
#endif
}

HandleCzBotsHamForwardsid )
{
    
RegisterHamFromEntity(Ham_TraceAttackid"CBasePlayer_TraceAttack"false);
    
RegisterHamFromEntity(Ham_TakeDamageid"PreTakeDamage"false);
}
#endif

public CBasePlayer_TraceAttack(iVictimiAttackerFloat:flDamageFloat:vecDir[3], ptrbitsDamageType)
{
        if(
iVictim != iAttacker && (<= iAttacker <= 32) && get_pcvar_num(cVarFF) != 0)
        {
            switch(
get_pcvar_num(cVarFF))
            {
                case 
1:
                {
                    if(
PlayerTeam(iVictim) == PlayerTeam(iAttacker))
                    {
                        return 
HAM_SUPERCEDE
                    
}
                }

                case 
2:
                {
                    if((
PlayerTeam(iVictim) == PlayerTeam(iAttacker)) && (PlayerTeam(iVictim) == CS_TEAM_CT && PlayerTeam(iAttacker) == CS_TEAM_CT))
                    {
                        return 
HAM_SUPERCEDE
                    
}
                }

                case 
3:
                {
                    if((
PlayerTeam(iVictim) == PlayerTeam(iAttacker)) && (PlayerTeam(iVictim) == CS_TEAM_T && PlayerTeam(iAttacker) == CS_TEAM_T))
                    {
                        return 
HAM_SUPERCEDE
                    
}
                }
            }
        }
        return 
HAM_IGNORED
}

public 
PreTakeDamage(iVictimiInflictoriAttackerFloat:fDamageDamageBits)
{
        if(
iVictim != iAttacker && (<= iAttacker <= 32) && get_pcvar_num(cVarFF) != 0)
        {
            switch(
get_pcvar_num(cVarFF))
            {
                case 
1:
                {
                    if(
PlayerTeam(iVictim) == PlayerTeam(iAttacker))
                    {
                        return 
HAM_SUPERCEDE
                    
}
                }

                case 
2:
                {
                    if((
PlayerTeam(iVictim) == PlayerTeam(iAttacker)) && (PlayerTeam(iVictim) == CS_TEAM_CT && PlayerTeam(iAttacker) == CS_TEAM_CT))
                    {
                        return 
HAM_SUPERCEDE
                    
}
                }

                case 
3:
                {
                    if((
PlayerTeam(iVictim) == PlayerTeam(iAttacker)) && (PlayerTeam(iVictim) == CS_TEAM_T && PlayerTeam(iAttacker) == CS_TEAM_T))
                    {
                        return 
HAM_SUPERCEDE
                    
}
                }
            }
        }
        return 
HAM_IGNORED

Hi! thanks for the plugin

unfortunately it doesn't work after setting the cvar, damage still applies no matter what team is set to.
Ark_Procession is offline
Natsheh
Veteran Member
Join Date: Sep 2012
Old 12-25-2020 , 14:50   Re: (Request) FriendlyFire for CS/TT Only?
Reply With Quote #10

here now it makes more sense...

note : mp_friendlyfire cvar should be 1 inorder for mp_friendlyfire_team to take effect!

HTML Code:
mp_friendlyfire_team 0   // friendlyfire for both teams
mp_friendlyfire_team 1 // friendly fire only for Terrorist
mp_friendlyfire_team 2 //friendlyfire only for Counter-Terrorist
PHP Code:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta> 

#define PLUGIN  "Custom FF"
#define VERSION "1.0.0-37"
#define AUTHOR  "iceeedR & ConnorMcLeod"

#define OFFSET_TEAM 114
#define PlayerTeam(%0)          get_pdata_int(%0,OFFSET_TEAM)

enum (+=1)
{
    
TEAM_UNA 0,
    
TEAM_T,
    
TEAM_CT,
    
TEAM_SPEC
}

new 
cVarFFcVarFF_team

//#define USE_BOTS

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
RegisterHam(Ham_TakeDamage"player""PreTakeDamage")
    
RegisterHam(Ham_TraceAttack"player""CBasePlayer_TraceAttack")

    
#if defined USE_BOTS
    
register_event("TextMsg""Event_TextMsg_Game_connected""a""1=1""2=#Game_connected");
    
state Not_Registered
    
#endif

    
cVarFF_team register_cvar("mp_friendlyfire_team""2"// 0 for both, 1 friendly fire only for Terrorist, 2 friendlyfire only for Counter-Terrorist
    
cVarFF get_cvar_pointer("mp_friendlyfire");
}


#if defined USE_BOTS
public Event_TextMsg_Game_connected() <Registered> {}
public 
Event_TextMsg_Game_connected() <Not_Registered>
{
        new 
szName[32];
        
read_data(3szNamecharsmax(szName));
        new 
id find_player("ai"szName);
        if( 
id && IsCzBotid ) )
        {
            
HandleCzBotsHamForwards(id);
            
state Registered;
        }
}

IsCzBotid )
{
#if defined Ham_CS_Player_IsBot
        
static valid = -1;
        if( 
valid == -)
        {
            
valid IsHamValidHam_CS_Player_IsBot );
        }
        if( 
valid )
        {
            return 
ExecuteHam(Ham_CS_Player_IsBotid);
        }
        return 
ExecuteHam(Ham_Weapon_ExtractClipAmmoid0);
#else
        
return ExecuteHam(Ham_Weapon_ExtractClipAmmoid0);
#endif
}

HandleCzBotsHamForwardsid )
{
    
RegisterHamFromEntity(Ham_TraceAttackid"CBasePlayer_TraceAttack"false);
    
RegisterHamFromEntity(Ham_TakeDamageid"PreTakeDamage"false);
}
#endif

public CBasePlayer_TraceAttack(iVictimiAttackerFloat:flDamageFloat:vecDir[3], ptrbitsDamageType)
{
        static 
cVarFF_team_value;
        
cVarFF_team_value get_pcvar_num(cVarFF_team);
        if(
iVictim != iAttacker && (<= iAttacker <= 32) && get_pcvar_num(cVarFF) == && cVarFF_team_value && PlayerTeam(iVictim) == PlayerTeam(iAttacker))
        {
            switch(
cVarFF_team_value)
            {
                case 
1:
                {
                    if(
PlayerTeam(iAttacker) != TEAM_T)
                    {
                        
SetHamParamFloat(30.0)
                        return 
HAM_SUPERCEDE
                    
}
                }

                case 
2:
                {
                    if(
PlayerTeam(iAttacker) != TEAM_CT)
                    {
                        
SetHamParamFloat(30.0)
                        return 
HAM_SUPERCEDE
                    
}
                }
            }
        }
        return 
HAM_IGNORED
}

public 
PreTakeDamage(iVictimiInflictoriAttackerFloat:fDamageDamageBits)
{
        static 
cVarFF_team_value;
        
cVarFF_team_value get_pcvar_num(cVarFF_team);
        if(
iVictim != iAttacker && (<= iAttacker <= 32) && get_pcvar_num(cVarFF) == && cVarFF_team_value && PlayerTeam(iVictim) == PlayerTeam(iAttacker))
        {
            switch(
cVarFF_team_value)
            {
                case 
1:
                {
                    if(
PlayerTeam(iAttacker) != TEAM_T)
                    {
                        
SetHamParamFloat(40.0)
                        return 
HAM_SUPERCEDE
                    
}
                }

                case 
2:
                {
                    if(
PlayerTeam(iAttacker) != TEAM_CT)
                    {
                        
SetHamParamFloat(40.0)
                        return 
HAM_SUPERCEDE
                    
}
                }
            }
        }
        return 
HAM_IGNORED

__________________
@Jailbreak Main Mod v2.7.0 100%
@User Tag Prefix 100% done !
@Mystery Box 100% done !
@VIP System 100% done !


Last edited by Natsheh; 12-26-2020 at 17:10.
Natsheh is offline
Send a message via MSN to Natsheh Send a message via Skype™ to Natsheh
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 19:48.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode