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

[REQ] Set Flag


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
ApoziX
Member
Join Date: Sep 2018
Old 11-27-2018 , 13:29   [REQ] Set Flag
Reply With Quote #1

Hello Someone can help me
I want Only Flag T To use that plugin

Thanks for helpers +rep

PHP Code:
#include <sourcemod>
#include <sdktools>
#include <tf2>
#include <tf2_stocks>
#include <clients>
#include <sdkhooks>

int OwnerOffset;
ConVar sm_dispenser_limit;
ConVar sm_sentry_limit;
ConVar sm_instant_upgrade;

public 
Plugin myinfo ={
    
name "Multiple buildings",
    
author "shewowkees",
    
description "self explanatory",
    
version "1.1",
    
url "noSiteYet"
};

public 
void OnPluginStart(){

    
sm_dispenser_limit CreateConVar("sm_dispenser_limit""5""Self explanatory");
    
sm_sentry_limit CreateConVar("sm_sentry_limit""5""Self explanatory");
    
sm_instant_upgrade CreateConVar("sm_instant_upgrade","0","Self explanatory");

    
HookEvent("player_builtobject",Evt_BuiltObject,EventHookMode_Pre);

    
RegConsoleCmd("sm_destroy_dispensers"Command_destroy_dispensers);
    
RegConsoleCmd("sm_destroy_sentries"Command_destroy_sentries);

    
OwnerOffset FindSendPropInfo("CBaseObject""m_hBuilder");

    for(
int client=1;client<MaxClients;client++){
        if(!
IsValidEntity(client)){
            continue;
        }
        if(!
IsClientConnected(client)){
            continue;
        }

        
SDKUnhook(clientSDKHook_WeaponSwitchWeaponSwitch);
        
SDKHookEx(clientSDKHook_WeaponSwitchWeaponSwitch);
    }
}



public 
void OnClientPostAdminCheck(client){
    
SDKHookEx(clientSDKHook_WeaponSwitchWeaponSwitch);
}
public 
Action Evt_BuiltObject(Event event, const char[] namebool dontBroadcast){
    
int ObjIndex event .GetInt("index");

    if(
GetConVarInt(sm_instant_upgrade)>0){

        
SetEntProp(ObjIndexProp_Send"m_iUpgradeMetal"600);
        
SetEntProp(ObjIndex,Prop_Send,"m_iUpgradeMetalRequired",0);

    }



    return 
Plugin_Continue;
}


public 
Action WeaponSwitch(clientweapon){
    
//Safety Checks
    
if(!IsClientInGame(client)){
        return 
Plugin_Continue;
    }
    if(
TF2_GetPlayerClass(client)!=TFClass_Engineer){
        return 
Plugin_Continue;
    }
    if(!
IsValidEntity(GetPlayerWeaponSlot(client,1))){
        return 
Plugin_Continue;
    }
    if(!
IsValidEntity(GetPlayerWeaponSlot(client,3))){
        return 
Plugin_Continue;
    }
    if(!
IsValidEntity(GetPlayerWeaponSlot(client,4))){
        return 
Plugin_Continue;
    }
    if(!
IsValidEntity(weapon)){
        return 
Plugin_Continue;
    }

    
//if the building pda is opened
    //Switches some buildings to sappers so the game doesn't count them as engie buildings
    
if(GetPlayerWeaponSlot(client,3)==weapon){
        
function_AllowBuilding(client);
        return 
Plugin_Continue;
    }
//else if the client is not holding the building tool
    
else if(GetEntProp(weapon,Prop_Send,"m_iItemDefinitionIndex")!=28){
        
function_AllowDestroying(client);
        return 
Plugin_Continue;
    }
    return 
Plugin_Continue;

}






public 
Action Command_destroy_dispensers(int clientint args){

    for(
int i=1;i<2048;i++){

        if(!
IsValidEntity(i)){
            continue;
        }

        
decl String:netclass[32];
        
GetEntityNetClass(inetclasssizeof(netclass));

        if ( !
strcmp(netclass"CObjectDispenser") == 0){
            continue;
        }

        if(
GetEntDataEnt2(iOwnerOffset)!=client){
            continue;
        }
        
SetVariantInt(9999);
        
AcceptEntityInput(i,"RemoveHealth");
    }

    return 
Plugin_Handled;


}

public 
Action Command_destroy_sentries(int clientint args){

    for(
int i=1;i<2048;i++){

        if(!
IsValidEntity(i)){
            continue;
        }

        
decl String:netclass[32];
        
GetEntityNetClass(inetclasssizeof(netclass));

        if ( !(
strcmp(netclass"CObjectSentrygun") == 0) ){
            continue;
        }

        if(
GetEntDataEnt2(iOwnerOffset)!=client){
            continue;
        }
        
SetVariantInt(9999);
        
AcceptEntityInput(i,"RemoveHealth");
    }

    return 
Plugin_Handled;

}

public 
void function_AllowBuilding(int client){

    
int DispenserLimit GetConVarInt(sm_dispenser_limit);
    
int SentryLimit GetConVarInt(sm_sentry_limit);

    
int DispenserCount 0;
    
int SentryCount 0;

    for(
int i=0;i<2048;i++){

        if(!
IsValidEntity(i)){
            continue;
        }

        
decl String:netclass[32];
        
GetEntityNetClass(inetclasssizeof(netclass));
        if ( !(
strcmp(netclass"CObjectSentrygun") == || strcmp(netclass"CObjectDispenser") == 0) ){
            continue;
        }

        if(
GetEntDataEnt2(iOwnerOffset)!=client){
            continue;
        }


        
int type=view_as<int>(function_GetBuildingType(i));

        
//Switching the dispenser to a sapper type
        
if(type==view_as<int>(TFObject_Dispenser)){
            
DispenserCount=DispenserCount+1;
            
SetEntProp(iProp_Send"m_iObjectType"TFObject_Sapper);
            if(
DispenserCount>=DispenserLimit){
                
//if the limit is reached, disallow building
                
SetEntProp(iProp_Send"m_iObjectType"type);

            }

        
//not a dispenser,
        
}else if(type==view_as<int>(TFObject_Sentry)){
            
SentryCount++;
            
SetEntProp(iProp_Send"m_iObjectType"TFObject_Sapper);
            if(
SentryCount>=SentryLimit){
                
//if the limit is reached, disallow building
                
SetEntProp(iProp_Send"m_iObjectType"type);
            }
        }
    
//every building is in the desired state


    
}
}
public 
void function_AllowDestroying(int client){
    for(
int i=1;i<2048;i++){

        if(!
IsValidEntity(i)){
            continue;
        }

        
decl String:netclass[32];
        
GetEntityNetClass(inetclasssizeof(netclass));

        if ( !(
strcmp(netclass"CObjectSentrygun") == || strcmp(netclass"CObjectDispenser") == 0) ){
            continue;
        }

        if(
GetEntDataEnt2(iOwnerOffset)!=client){
            continue;
        }

        
SetEntProp(iProp_Send"m_iObjectType"function_GetBuildingType(i));
    }

}

public 
TFObjectType function_GetBuildingType(int entIndex){
    
//This function relies on Netclass rather than building type since building type
    //gets changed
    
decl String:netclass[32];
    
GetEntityNetClass(entIndexnetclasssizeof(netclass));

    if(
strcmp(netclass"CObjectSentrygun") == 0){
        return 
TFObject_Sentry;
    }
    if(
strcmp(netclass"CObjectDispenser") == 0){
        return 
TFObject_Dispenser;
    }

    return 
TFObject_Sapper;



__________________
Looking To Start A TF2 Community
My Discord | My Steam

Last edited by ApoziX; 11-28-2018 at 13:02.
ApoziX is offline
 



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 15:13.


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