Akuba icon

Weapon Replace FF2 thing

Akuba | PRO | 11/10/15 07:20:14 PM UTC | 0 ⭐ | 7580 👁️ | Never ⏰ | []
Pawn |

3.11 KB

|

None

|

0 👍

/

0 👎

#include <sourcemod>
#include <freak_fortress_2>
#include <tf2_stocks>
#include <tf2items>
 
public OnPluginStart()
{
    HookEvent("player_spawn", event_player_spawn, EventHookMode_Pre);
}
 
public Action:event_player_spawn(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client=GetClientOfUserId(GetEventInt(event, "userid"));
    CreateTimer(0.15, CheckItems, client);
    return Plugin_Continue;
}
 
public Action:CheckItems(Handle:timer, any:client)
{
    if(!IsValidClient(client) || !IsPlayerAlive(client) || FF2_GetBossIndex(client)!=-1)
    {
        return Plugin_Continue;
    }
 
    new weapon=GetPlayerWeaponSlot(client, TFWeaponSlot_Primary);
    new index=-1;
 
    if(weapon && IsValidEdict(weapon))
    {
        index=GetEntProp(weapon, Prop_Send, "m_iItemDefinitionIndex");
        switch(index)
        {
            case 230:  //The Sydney Sleeper
            {
                TF2_RemoveWeaponSlot(client, TFWeaponSlot_Primary);
                SpawnWeapon(client, "tf_weapon_sniperrifle", 14, 1, 0, ""); //Sniper Rifle
            }
        }
    }
 
    weapon=GetPlayerWeaponSlot(client, TFWeaponSlot_Melee);
    if(weapon && IsValidEdict(weapon))
    {
        index=GetEntProp(weapon, Prop_Send, "m_iItemDefinitionIndex");
        switch(index)
        {
            case 649:  //Spy-cicle
            {
                TF2_RemoveWeaponSlot(client, TFWeaponSlot_Melee);
                weapon=SpawnWeapon(client, "tf_weapon_knife", 4, 1, 0, "");  //Knife
            }
        }
    }
 
    weapon=GetPlayerWeaponSlot(client, 4);
    if(weapon && IsValidEdict(weapon))
    {
        index=GetEntProp(weapon, Prop_Send, "m_iItemDefinitionIndex");
        switch(index)
        {
            case 60:  //Cloak and Dagger
            {
                TF2_RemoveWeaponSlot(client, 4);
                SpawnWeapon(client, "tf_weapon_invis", 30, 1, 0, ""); //Watch
            }
        }
    }
    return Plugin_Continue;
}
 
stock bool:IsValidClient(client, bool:replaycheck=true)
{
    if(client<=0 || client>MaxClients)
    {
        return false;
    }
 
    if(!IsClientInGame(client))
    {
        return false;
    }
 
    if(GetEntProp(client, Prop_Send, "m_bIsCoaching"))
    {
        return false;
    }
 
    if(replaycheck)
    {
        if(IsClientSourceTV(client) || IsClientReplay(client))
        {
            return false;
        }
    }
    return true;
}
 
stock SpawnWeapon(client, String:name[], index, level, qual, String:att[])
{
    new Handle:hWeapon=TF2Items_CreateItem(OVERRIDE_ALL|FORCE_GENERATION);
    if(hWeapon==INVALID_HANDLE)
    {
        return -1;
    }
 
    TF2Items_SetClassname(hWeapon, name);
    TF2Items_SetItemIndex(hWeapon, index);
    TF2Items_SetLevel(hWeapon, level);
    TF2Items_SetQuality(hWeapon, qual);
    new String:atts[32][32];
    new count=ExplodeString(att, ";", atts, 32, 32);
 
    if(count % 2)
    {
        --count;
    }
 
    if(count>0)
    {
        TF2Items_SetNumAttributes(hWeapon, count/2);
        new i2;
        for(new i; i<count; i+=2)
        {
            new attrib=StringToInt(atts[i]);
            if(!attrib)
            {
                LogError("Bad weapon attribute passed: %s ; %s", atts[i], atts[i+1]);
                CloseHandle(hWeapon);
                return -1;
            }
 
            TF2Items_SetAttribute(hWeapon, i2, attrib, StringToFloat(atts[i+1]));
            i2++;
        }
    }
    else
    {
        TF2Items_SetNumAttributes(hWeapon, 0);
    }
 
    new entity=TF2Items_GiveNamedItem(client, hWeapon);
    CloseHandle(hWeapon);
    EquipPlayerWeapon(client, entity);
    return entity;
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎