AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Define For Zombie Swarm (https://forums.alliedmods.net/showthread.php?t=100316)

DoviuX 08-13-2009 09:03

Define For Zombie Swarm
 
Can Some One help my Define On this Mod That only Humans can do this stuff ?

Code:

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


#define MAXPERKS 5
#define MAXRANKS 4


#define HEAL_TIME 7
#define MEDIC_HEAL_COOLDOWN 10.0
#define HEALING_DISTANCE 70.0
#define BAR_REMOVE 0  // Don't change!!!

#define PLUGIN        "ACHIEVEMENTS Mod"
#define AUTHOR        "xbatista"
#define VERSION        "1.0"


const m_pClientActiveItem = 374;

new const g_medic_pack_model[] = "models/Umbrella/p_medic.mdl";

new const g_medkit_heal[] = "umbrella/medic_healing.wav"
new const Promotion[] = "Umbrella/promoted.wav";

new const PERKS[MAXPERKS][] =
{
    "Field Medic",
    "Support Specialist",
    "Sharpshooter",
    "Commando",
    "Berserker"
}
enum // Player perks
{
        MEDIC = 0,
        SUPPORT,
        SHARPSHOOTER,
        COMMANDO,
        BERSERKER
};

#define COMMANDO_WEAPONS ((1<<CSW_AUG)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_M4A1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90))
#define SHARPSHOOTER_WEAPONS ((1<<CSW_DEAGLE)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_GLOCK18)|(1<<CSW_USP)|(1<<CSW_P228)|(1<<CSW_SCOUT)|(1<<CSW_AWP)|(1<<CSW_G3SG1)|(1<<CSW_SG550))
#define SUPPORT_WEAPONS ((1<<CSW_XM1014)|(1<<CSW_M3)|(1<<CSW_M249))
#define DMG_HEGRENADE (1<<24)

new const BERSERKER_RANKS[MAXRANKS] = { 30, 100, 500, 0 /* don't change '0'! */ } // How much kills needed with knife,grenade to gain berserker level
new const COMMANDO_RANKS[MAXRANKS] = { 50, 600, 2000, 0 /* don't change '0'! */ } // How much kills needed with assault,smgs to gain commando level
new const SHARPSHOOTER_RANKS[MAXRANKS] = { 50, 200, 800, 0 /* don't change '0'! */ } // How much kills needed with handguns,snipers to gain sharpshooter level
new const SUPPORT_RANKS[MAXRANKS] = { 30, 150, 700, 0 /* don't change '0'! */ } // How much kills needed with pump,auto-pump,machine gun to gain support specialist level
new const MEDIC_RANKS[MAXRANKS] = { 300, 2000, 10000, 0 /* don't change '0'! */ } // How much need points to heal to gain medic level

new const SHARPSHOOTER_HEADSHOT_RANKS[MAXRANKS] = { 10, 100, 350, 0 /* don't change '0'! */ } // How much HEADSHOT kills needed with handguns,snipers to gain sharpshooter level

new const MEDIC_HEAL_HP[MAXRANKS] = { 100, 125, 150, 180 } // How much hp heal each medic level (medic perk)
new const COMMANDO_EXTRA_SPAWN_HP[MAXRANKS] = { 0, 15, 30, 60 } // Extra hp on spawn each commando level (commando perk)
new const Float: SUPPORT_DAMAGE_PERCENT[MAXRANKS] = { 0.0, 15.0, 35.0, 80.0 } // extra damage for pump,auto-pump,machine gun each support level (support perk)
new const Float: SHARPSHOOTER_DAMAGE_PERCENT[MAXRANKS] = { 0.0, 20.0, 50.0, 100.0 } // extra damage for pistols,snipers each sharpshooter level (sharpshooter perk)
new const Float: COMMANDO_DAMAGE_PERCENT[MAXRANKS] = { 0.0, 20.0, 40.0, 90.0 } // extra damage for assault,smgs each commando level (commando perk)
new const Float: BERSERKER_KNIFE_DAMAGE[MAXRANKS] = { 0.0, 400.0, 800.0, 1400.0 } // extra damage for knife each berserker level (berserker perk)
new const Float: BERSERKER_GRENADE_DAMAGE[MAXRANKS] = { 0.0, 6.0, 10.0, 17.0 } // extra damage for grenade each berserker level (berserker perk)
new const SHARPSHOOTER_AVOID[MAXRANKS] = { 5, 15, 30, 40 } // How much chance in % to avoid enemy attack each sharpshooter level (sharpshooter perk)
new const SHARPSHOOTER_SCOUT_PERCENT[MAXRANKS] = { 10, 15, 40, 90 } // How much chance in % to get free scout each sharpshooter level (sharpshooter perk)
new const Float: BERSERKER_SPEED[MAXRANKS] = { 0.0, 20.0, 40.0, 60.0 } // How much extra speed give with knife each berserker level (berserker perk)
new const BERSERKER_FLASHBANG_PERCENT[MAXRANKS] = { 5, 15, 40, 100 } // How much chance in % to get free flashbang each berserker level (berserker perk)

// Medic Stuff
new g_ent[33];
new bool:g_healing[33];
new bool:g_being_healed[33];
new bool:g_healing_teammate[33];
new g_target[33];
new Float: g_LastHeal[33];

// Other Stuff
new g_assault_global_kills[33];
new g_support_global_kills[33];
new g_snipers_global_kills[33];
new g_snipers_headshot_global_kills[33];
new g_medic_points[33];
new g_hegrenade_global_kills[33];

new g_assault_rank[33];
new g_support_rank[33];
new g_snipers_rank[33];
new g_hegrenade_rank[33];
new g_medic_rank[33];
new g_PlayerPerk[33];
new g_PerkKey[33];
new bool: g_PerkChoosen[33];

new cvar_help_url;
new configfile[200];
new g_iCurWeapon[33];
new g_iMaxPlayers;
new g_freezetime2, saverank;
new g_Vault;
new g_msgid_BarTime;

public plugin_init()
{
        register_plugin(PLUGIN, VERSION, AUTHOR)
        register_cvar("pk_version", VERSION, FCVAR_SPONLY|FCVAR_SERVER)
        set_cvar_string("pk_version", VERSION)

        register_clcmd("say /achievements","player_info");
        register_clcmd("say achievements","player_info");
        register_clcmd("say /achievements2","player_info2");
        register_clcmd("say achievements2","player_info2");
       
        register_clcmd("say /info","show_mod_info");
        register_clcmd("say info","show_mod_info");
       
        register_clcmd("say /amenu","main_player_menu");
        register_clcmd("say amenu","main_player_menu");
       
        register_clcmd("say /achievement","main_perk_menu");
        register_clcmd("say achievements","main_perk_menu");
       
        saverank = register_cvar("pm_saverank","0"); // Save Rank by : 1 = SteamID, 0 = IP.
        cvar_help_url = register_cvar("pm_help_url", "http://92.61.36.146/cstrike/webshit2/information_desert.html");
        // <-- URL for information about MOD!
       
        register_event("DeathMsg", "Ev_DeathMsg", "a");
        register_logevent("Logevent_Round_Start", 2, "1=Round_Start");
        register_logevent("EventRoundEnd", 2, "1=Round_End");
        register_event("HLTV", "Event_New_Round", "a", "1=0", "2=0");
        register_event("CurWeapon",        "Ev_CurWeapon",        "be", "1=1");
       
        register_forward(FM_CmdStart, "FwdCmdStart");

       
        RegisterHam(Ham_TakeDamage, "player", "Fwd_PlayerDamaged")
        RegisterHam(Ham_Spawn, "player", "fwd_PlayerSpawned", 1);
       
       
        g_msgid_BarTime = get_user_msgid("BarTime");
        g_iMaxPlayers = get_maxplayers();
}
public plugin_cfg()
{
    //Open our vault and have g_Vault store the handle.
    g_Vault = nvault_open( "new_mod" );

    //Make the plugin error if vault did not successfully open
    if ( g_Vault == INVALID_HANDLE )
        set_fail_state( "Error opening Mod nVault, file does not exist!" );
}
public plugin_end()
{
    //Close the vault when the plugin ends (map change\server shutdown\restart)
    nvault_close( g_Vault );
}
public plugin_precache()
{
        precache_model(g_medic_pack_model);
        precache_sound(Promotion);
        precache_sound(g_medkit_heal);
}
public client_authorized(id)
{
        g_PlayerPerk[id] = 0
        LoadRank(id)
}
public client_disconnect(id)
{
        SaveRank(id)
}
public show_mod_info(id)
{
        new url[100];
        get_pcvar_string(cvar_help_url,url,charsmax(url));
       
        if ( !equal(url,"") )
        {
                formatex(configfile,charsmax(configfile),"%s",url);
                show_motd(id, configfile);
        }
}
public main_player_menu(id)
{
        new menu = menu_create("Main Desert Mod Menu :" , "player_menu");
        menu_additem(menu ,"Choose your Perk", "1" , 0);
        menu_additem(menu ,"Perk Effects/Info", "2" , 0);
        menu_additem(menu ,"Perk Stats/Info", "3" , 0);
        menu_additem(menu ,"Mod Information", "4" , 0);


        menu_setprop(menu , MPROP_EXIT , MEXIT_ALL);
        menu_display(id , menu , 0);
}
public player_menu(id , menu , item)
{
        if(item == MENU_EXIT)
        {
                menu_destroy(menu);
                return PLUGIN_HANDLED;
        }
        new data[6], iName[64];
        new access, callback;
        menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);

        new key = str_to_num(data);

        switch(key)
    {
                case 1: main_perk_menu(id)
                case 2: player_info(id)
                case 3: player_info2(id)
                case 4: show_mod_info(id)
        }
       
        menu_destroy(menu);
        return PLUGIN_HANDLED;
}
public main_perk_menu(id)
{
        new szMsg[60]
        formatex(szMsg, 59, "Current Perk : \r%s", PERKS[g_PlayerPerk[id]])
       
        new menu = menu_create(szMsg , "perk_menu");
        menu_additem(menu ,"Field Medic", "1" , 0);
        menu_additem(menu ,"Support Specialist", "2" , 0);
        menu_additem(menu ,"Sharpshooter", "3" , 0);
        menu_additem(menu ,"Commando", "4" , 0);
        menu_additem(menu ,"Berserker", "5" , 0);
       
        menu_setprop(menu , MPROP_EXIT , MEXIT_ALL);
        menu_display(id , menu , 0);
}
public perk_menu(id , menu , item)
{
        if(item == MENU_EXIT)
        {
                menu_destroy(menu);
                return PLUGIN_HANDLED;
        }
        new data[6], iName[64];
        new access, callback;
        menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);

        new key = str_to_num(data);
        key--
        if(g_PlayerPerk[id] != key)
        {
                g_PerkChoosen[id] = true;
                g_PerkKey[id] = key
                client_printcolor(id, "/ctrPerk choosen : /g%s", PERKS[key])
        }
        else
        {
                main_perk_menu(id)
                client_printcolor(id, "/ctrPerk already choosen : /g%s", PERKS[key])
        }
       
        menu_destroy(menu);
        return PLUGIN_HANDLED;
}
public player_info(id)
{
        new szMotd[1536], szTitle[64], iPos = 0
        format(szTitle, 63, "Player Perk Effects")
        iPos += format(szMotd[iPos], 2047-iPos, "<html><body bgcolor=^"#474642^"><font size=^"2^" face=^"verdana^" color=^"FFFFFF^">")

        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<b><font color=^"#FF0000^">Perk Effects :</font></b><br>")
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#FFFF00^">*Field Medic*</font><br>")
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "Heals %d amount of health<br>", MEDIC_HEAL_HP[g_medic_rank[id]])
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#FFFF00^">*Support Specialist*</font><br>")
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "+%d%% extra damage with Pump, Machine Gun, Auto-Pump<br>", floatround(SUPPORT_DAMAGE_PERCENT[g_support_rank[id]]))
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#FFFF00^">*Sharpshooter*</font><br>")
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "+%d%% extra damage with Handguns, Snipers<br>", floatround(SHARPSHOOTER_DAMAGE_PERCENT[g_snipers_rank[id]]))
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "+%d%% to avoid enemies attack<br>", SHARPSHOOTER_AVOID[g_snipers_rank[id]])
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "%d%% to get a free Scout<br>", SHARPSHOOTER_SCOUT_PERCENT[g_snipers_rank[id]])
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#FFFF00^">*Commando*</font><br>")
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "+%d%% extra damage with Assault,Smgs rifles<br>", floatround(COMMANDO_DAMAGE_PERCENT[g_assault_rank[id]]))
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "+%d extra health on spawn<br>", COMMANDO_EXTRA_SPAWN_HP[g_assault_rank[id]])
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#FFFF00^">*Berserker*</font><br>")
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "+%d%% extra damage with knife,grenade<br>", floatround(BERSERKER_KNIFE_DAMAGE[g_hegrenade_rank[id]]))
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "%dx damage with grenade<br>", floatround(BERSERKER_GRENADE_DAMAGE[g_hegrenade_rank[id]]))
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "+%d extra speed with knife<br>", floatround(BERSERKER_SPEED[g_hegrenade_rank[id]]))
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "%d%% to get a free Flash Nade<br>", BERSERKER_FLASHBANG_PERCENT[g_hegrenade_rank[id]])
       
        show_motd(id, szMotd, szTitle)
        return PLUGIN_HANDLED;
}
public player_info2(id)
{
        new szMotd[1536], szTitle[64], iPos = 0
        format(szTitle, 63, "Player Stats/Info")
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<html><body bgcolor=^"#474642^"><font size=^"2^" face=^"verdana^" color=^"FFFFFF^">")

        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<b><font color=^"#FF0000^">Next Level Requirements :</font></b><br>")
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#FFFF00^">*Field Medic*</font><br>")
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#00FF00^">|Heal %d health on your teammates|</font><br>", MEDIC_RANKS[g_medic_rank[id]])
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "[%d / %d]<br>", g_medic_points[id], MEDIC_RANKS[g_medic_rank[id]])
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#FFFF00^">*Support Specialist*</font><br>")
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#00FF00^">|Get %d kills with Pump, Machine Gun, Auto-Pump|</font><br>", SUPPORT_RANKS[g_support_rank[id]])
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "[%d / %d]<br>", g_support_global_kills[id], SUPPORT_RANKS[g_support_rank[id]])
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#FFFF00^">*Sharpshooter*</font><br>")
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#00FF00^">|Get %d kills with Handguns, Snipers|</font><br>", SHARPSHOOTER_RANKS[g_snipers_rank[id]])
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#00FF00^">|Get %d headshot kills with Handguns, Snipers|</font><br>", SHARPSHOOTER_HEADSHOT_RANKS[g_snipers_rank[id]])
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "[%d / %d]<br>", g_snipers_global_kills[id], SHARPSHOOTER_RANKS[g_snipers_rank[id]])
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "[%d / %d]<br>", g_snipers_headshot_global_kills[id], SHARPSHOOTER_HEADSHOT_RANKS[g_snipers_rank[id]])
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#FFFF00^">*Commando*</font><br>")
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#00FF00^">|Get %d kills with Assauult,Smgs rifles|</font><br>", COMMANDO_RANKS[g_assault_rank[id]])
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "[%d / %d]<br>", g_assault_global_kills[id], COMMANDO_RANKS[g_assault_rank[id]])
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#FFFF00^">*Berserker*</font><br>")
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#00FF00^">|Get %d kills with knife,grenade|</font><br>", BERSERKER_RANKS[g_hegrenade_rank[id]])
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "[%d / %d]<br><br>", g_hegrenade_global_kills[id], BERSERKER_RANKS[g_hegrenade_rank[id]])
       
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<b><font color=^"#FF0000^">Ranking :</font></b><br>")
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "Field Medic Lv %d<br>", g_medic_rank[id])
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "Support Specialist Lv %d<br>", g_support_rank[id])
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "Sharpshooter Lv %d<br>", g_snipers_rank[id])
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "Commando Lv %d<br>", g_assault_rank[id])
        iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "Berserker Lv %d<br>", g_hegrenade_rank[id])
       
        show_motd(id, szMotd, szTitle)
        return PLUGIN_HANDLED;
}
public Ev_CurWeapon(id)
{
        if(!is_user_alive(id))
                return PLUGIN_HANDLED;
       
        new weapon = read_data(2)
       
        if( g_iCurWeapon[id] == weapon )
        {
                // player hasn't changed his weapon
                // he has just fired or reloaded or zoomed
                // don't add speed to him
                return PLUGIN_HANDLED;
        }
       
        g_iCurWeapon[id] = weapon
       
        if ( !g_freezetime2 && get_user_weapon(id) == CSW_KNIFE && g_PlayerPerk[id] == BERSERKER )
        {
                set_user_maxspeed(id, get_user_maxspeed(id) + BERSERKER_SPEED[g_hegrenade_rank[id]] );
        }
       
        return PLUGIN_CONTINUE;
}
public Event_New_Round()
{
        g_freezetime2 = true;
}
public Logevent_Round_Start()
{
        g_freezetime2 = false;
       
        for(new id = 1; id <= g_iMaxPlayers; id++)
        {
                if( is_user_alive(id) )
                {
                        g_iCurWeapon[id] = 0
                        // This should trigger a CurWeapon event
                        set_pdata_cbase(id, m_pClientActiveItem, -1, 5)
        }
    }
}
public EventRoundEnd()
{
        for(new id = 1; id <= g_iMaxPlayers; id++)
        {
                if( pev_valid(g_ent[id]) )
                {
                        engfunc(EngFunc_RemoveEntity, g_ent[id]);
                        g_ent[id] = 0;
                }
        }
}
public FwdCmdStart(client, uc_handle, seed)
{
        if( !(1 <= client <= g_iMaxPlayers) || !is_user_alive(client) || g_being_healed[client] || g_PlayerPerk[client] != MEDIC ) return FMRES_IGNORED;
                       
        new button = get_uc(uc_handle, UC_Buttons);
        new oldbuttons = pev(client, pev_oldbuttons);
        static target, body;
        new Float:dist = get_user_aiming(client, target, body);
        static Float: Time;
        Time = get_gametime();
//        new iplayersID[32];
//        static enemy;
//        new xPlayers;
//        get_players(iplayersID, xPlayers, "a");
//        new origin[3];
//        get_user_origin( client, origin );

        if( (button & IN_USE) && !(oldbuttons & IN_USE) && dist < HEALING_DISTANCE )
        {
                if( (1 <= target <= g_iMaxPlayers) && is_user_alive(target) && !g_being_healed[target] && !g_healing[target] && Time - MEDIC_HEAL_COOLDOWN > g_LastHeal[client] && get_user_team(client) == get_user_team(target) )
                {
                        static name[32] ; get_user_name(target, name, charsmax(name));
                        static name2[32] ; get_user_name(client, name2, charsmax(name2));
                        client_print(client, print_center, "Your target: %s", name);
                        client_print(target, print_center, "You healer: %s", name2);
                               
                        emit_sound(target, CHAN_ITEM, g_medkit_heal, 1.0, ATTN_NORM, 0, PITCH_NORM);
               
                                                               
                        g_healing_teammate[client] = true
                        g_healing[client] = true;
                        g_target[client] = target;
                                                       
                        g_being_healed[target] = true;
                               
                        ManageBar(client, HEAL_TIME);
                        ManageBar(target, HEAL_TIME);
                                                                                               
                        set_task(float(HEAL_TIME), "TaskFinishHeal", client);
                       
                        g_LastHeal[client] = Time
                }
        }
        else if( g_healing[client] && !(button & IN_USE) )
        {
                new targeti = g_target[client];
                                               
                g_healing[client] = false;
                                               
                g_being_healed[targeti] = false;
               
                ManageBar(client, BAR_REMOVE);
                ManageBar(targeti, BAR_REMOVE);
                                               
                remove_task(client);
        }
        if( (button & IN_USE) && !(oldbuttons & IN_USE) )
        {
//                new targetorigin[3], iNum, distancebetween
//                for ( iNum = 0; iNum < xPlayers; iNum++ )
//                {
//                enemy = iplayersID[iNum]
//                get_user_origin( enemy, targetorigin )
//                distancebetween = get_distance( origin, targetorigin )
                if(!g_being_healed[client] && !g_healing[client] && Time - MEDIC_HEAL_COOLDOWN > g_LastHeal[client] )
                {
                        emit_sound(client, CHAN_ITEM, g_medkit_heal, 1.0, ATTN_NORM, 0, PITCH_NORM);

                                                               
                        g_healing_teammate[client] = false;
                        g_healing[client] = true;
                                                               
                        if ( !(button & IN_JUMP) && !(button & IN_DUCK) && !(button & IN_FORWARD) && !(button & IN_BACK) &&
                        !(button & IN_MOVELEFT) && !(button & IN_MOVERIGHT) && !(button & IN_ATTACK) && !(button & IN_ATTACK2))
                        {
                                client_print(client,  print_center, "Healing Self");
                        }
                        ManageBar(client, HEAL_TIME);
                                                               
                        set_task(float(HEAL_TIME), "TaskFinishHeal2", client);
                       
                        g_LastHeal[client] = Time
                }
//                }
        }
        else if ( g_healing[client] && !(button & IN_USE) )
        {
                g_healing[client] = false;
                                                               
                ManageBar(client, BAR_REMOVE);
                                               
                remove_task(client);
        }
        if ( g_healing[client] )
        {
                if ( g_healing_teammate[client] && dist > HEALING_DISTANCE )
                {
                        new targeti = g_target[client];
                                               
                        g_healing[client] = false;
                                               
                        g_being_healed[targeti] = false;
                                               
                        ManageBar(client, BAR_REMOVE);
                        ManageBar(targeti, BAR_REMOVE);
                                               
                        remove_task(client);
                }
                if ( !g_healing_teammate[client] )
                {
                        if ( (button & IN_JUMP) || (button & IN_DUCK) || (button & IN_FORWARD) || (button & IN_BACK) ||
                        (button & IN_MOVELEFT) || (button & IN_MOVERIGHT) || (button & IN_ATTACK) || (button & IN_ATTACK2))
                        {
                                g_healing[client] = false;
                                       
                                ManageBar(client, BAR_REMOVE);
                                                               
                                remove_task(client);
                        }
                }
        }
                       
        return FMRES_IGNORED;
}
public fwd_PlayerSpawned(id)
{
        if (g_zombie[id])
                return;
        if ( !is_user_alive(id) )
                return;
       
        if ( g_PerkChoosen[id] )
        {
                g_PlayerPerk[id] = g_PerkKey[id]
                client_printcolor(id, "/ctrNow you are : /g%s", PERKS[g_PlayerPerk[id]])
                g_PerkChoosen[id] = false;
        }
       
        new hp = get_user_health(id)
       
        ResetItems(id);
        if ( g_PlayerPerk[id] == MEDIC )
        {
                new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
                       
                if ( pev_valid(ent) )
                {
                        engfunc(EngFunc_SetModel, ent, g_medic_pack_model);
                                       
                        set_pev(ent, pev_movetype, MOVETYPE_FOLLOW);
                        set_pev(ent, pev_aiment, id);
                                       
                        g_ent[id] = ent;
                }
        }
               
        else if ( g_PlayerPerk[id] == COMMANDO)
        {
                set_user_health(id, hp + COMMANDO_EXTRA_SPAWN_HP[g_assault_rank[id]]);
        }       
               
        else if ( g_PlayerPerk[id] == SHARPSHOOTER && !user_has_weapon(id, CSW_SCOUT)
        && random_num(0, 100) < SHARPSHOOTER_SCOUT_PERCENT[g_snipers_rank[id]])
        {
                set_task(10.0, "Delayed_Scout", id)
        }
        else if ( g_PlayerPerk[id] == BERSERKER && !user_has_weapon(id, CSW_FLASHBANG)
        && random_num(0, 100) < BERSERKER_FLASHBANG_PERCENT[g_hegrenade_rank[id]])
        {
                set_task(10.0, "Delayed_Frost", id)
        }
/*                if ( g_shotguns_rank[id] == 1 )
                {
                        set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransTexture, 130);
                }
                else if ( g_shotguns_rank[id] == 2 )
                {
                        set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransTexture, 100);
                }
                else if ( g_shotguns_rank[id] == 3 )
                {
                        set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransTexture, 55);
                }*/
}
public Delayed_Scout(id)
{
        if ( is_user_alive(id) && g_PlayerPerk[id] == SHARPSHOOTER && !user_has_weapon(id, CSW_SCOUT) )
        {
                give_item(id, "weapon_scout")
                cs_set_user_bpammo(id, CSW_SCOUT, 90)
        }
}
public Delayed_Frost(id)
{
        if ( is_user_alive(id) && g_PlayerPerk[id] == BERSERKER && !user_has_weapon(id, CSW_FLASHBANG) )
        {
                give_item(id, "weapon_flashbang")
                give_item(id, "weapon_flashbang")
        }
}
public Fwd_PlayerDamaged(id, inflictor, attacker, Float:damage, damagebits)
{
        if ( !(1 <= attacker <= g_iMaxPlayers) )
                return HAM_IGNORED;
       
        new clip, ammo, weapon = get_user_weapon(attacker,clip,ammo);
       
        if ( random_num(0, 100) < SHARPSHOOTER_AVOID[g_snipers_rank[id]] && g_PlayerPerk[id] == SHARPSHOOTER )
        {
                SetHamParamFloat(4, 0.0)
                return HAM_HANDLED;
        }
        if ( weapon == SHARPSHOOTER_WEAPONS && g_PlayerPerk[attacker] == SHARPSHOOTER )
        {
                SetHamParamFloat(4, damage + damage / 100.0 * SHARPSHOOTER_DAMAGE_PERCENT[g_snipers_rank[attacker]])
                return HAM_HANDLED;
        }
        if ( weapon == COMMANDO_WEAPONS && g_PlayerPerk[attacker] == COMMANDO )
        {
                SetHamParamFloat(4, damage + damage / 100.0 * COMMANDO_DAMAGE_PERCENT[g_assault_rank[attacker]])
                return HAM_HANDLED;
        }
        if ( weapon == SUPPORT_WEAPONS && g_PlayerPerk[attacker] == SUPPORT)
        {
                SetHamParamFloat(4, damage + damage / 100.0 * SUPPORT_DAMAGE_PERCENT[g_support_rank[attacker]])
                return HAM_HANDLED;
        }

        if( damagebits & DMG_HEGRENADE && id != attacker && g_PlayerPerk[attacker] == BERSERKER)
        {
                SetHamParamFloat(4, damage * BERSERKER_GRENADE_DAMAGE[g_hegrenade_rank[attacker]]);
                return HAM_HANDLED;
        }
       
        if ( weapon == CSW_KNIFE && g_PlayerPerk[attacker] == BERSERKER)
        {
                SetHamParamFloat(4, damage + damage / 100.0 * BERSERKER_KNIFE_DAMAGE[g_hegrenade_rank[attacker]])
                return HAM_HANDLED;
        }
       
        return HAM_IGNORED;
}
public Ev_DeathMsg()
{
        new i_attacker = read_data(1);
        new i_victim = read_data(2);
        new i_headshot = read_data(3);
        new szWeapon[20]
        read_data(4, szWeapon, 19)
        static name[32] ; get_user_name(i_attacker, name, charsmax(name));
       
        ResetItems(i_victim);
        if ( !(1 <= i_attacker <= g_iMaxPlayers) || i_victim == i_attacker )
                return;
       
        if ( i_headshot )
        {
                if ( equali(szWeapon, "scout") || equali(szWeapon, "awp") || equali(szWeapon, "sg550") || equali(szWeapon, "g3sg1")
                || equali(szWeapon, "glock18") || equali(szWeapon, "deagle") || equal(szWeapon, "p228") || equal(szWeapon, "elite") || equal(szWeapon, "usp") || equal(szWeapon, "fiveseven") )
                {
                        g_snipers_global_kills[i_attacker]--
                        g_snipers_headshot_global_kills[i_attacker]++
                }
        }

        if ( equali(szWeapon, "ak47") || equali(szWeapon, "m4a1") || equal(szWeapon, "sg552") || equal(szWeapon, "aug") || equal(szWeapon, "galil") || equal(szWeapon, "famas") || equal(szWeapon, "p90") || equal(szWeapon, "mp5navy")
        || equal(szWeapon, "ump45") || equal(szWeapon, "tmp") || equal(szWeapon, "mac10"))
        {
                g_assault_global_kills[i_attacker]++
               
                if ( g_assault_rank[i_attacker] < MAXRANKS-1 && g_assault_global_kills[i_attacker] >= COMMANDO_RANKS[g_assault_rank[i_attacker]] )
                {
                        g_assault_rank[i_attacker]++
                       
                        client_cmd(i_attacker, "spk %s", Promotion)
                        client_printcolor(0, "/y%s has been promoted to /g%d /ctrCommando /yRank!", name, g_assault_rank[i_attacker])
                }
        }
        else if ( equali(szWeapon, "m249") || equali(szWeapon, "m3") || equali(szWeapon, "xm1014") )
        {
                g_support_global_kills[i_attacker]++
                       
                if ( g_support_rank[i_attacker] < MAXRANKS-1 && g_support_global_kills[i_attacker] >= SUPPORT_RANKS[g_support_rank[i_attacker]] )
                {
                        g_support_rank[i_attacker]++
                       
                        client_cmd(i_attacker, "spk %s", Promotion)
                        client_printcolor(0, "/y%s has been promoted to /g%d /ctrSupport Specialist /yRank!", name, g_support_rank[i_attacker])
                }
        }
        else if ( equali(szWeapon, "scout") || equali(szWeapon, "awp") || equali(szWeapon, "sg550") || equali(szWeapon, "g3sg1")
        || equali(szWeapon, "glock18") || equali(szWeapon, "deagle") || equal(szWeapon, "p228") || equal(szWeapon, "elite") || equal(szWeapon, "usp") || equal(szWeapon, "fiveseven"))
        {
                g_snipers_global_kills[i_attacker]++
               
                if ( g_snipers_rank[i_attacker] < MAXRANKS-1 && g_snipers_global_kills[i_attacker] >= SHARPSHOOTER_HEADSHOT_RANKS[g_snipers_rank[i_attacker]] && g_snipers_headshot_global_kills[i_attacker] >= SHARPSHOOTER_HEADSHOT_RANKS[g_snipers_rank[i_attacker]] )
                {
                        g_snipers_rank[i_attacker]++
                       
                        client_cmd(i_attacker, "spk %s", Promotion)
                        client_printcolor(0, "/y%s has been promoted to /g%d /ctrSharpshooter /yRank!", name, g_snipers_rank[i_attacker])
                }
        }
        else if ( equali(szWeapon, "grenade") || equali(szWeapon, "knife") )
        {
                g_hegrenade_global_kills[i_attacker]++
                       
                if ( g_hegrenade_rank[i_attacker] < MAXRANKS-1 && g_hegrenade_global_kills[i_attacker] >= BERSERKER_RANKS[g_hegrenade_rank[i_attacker]] )
                {
                        g_hegrenade_rank[i_attacker]++
                       
                        client_cmd(i_attacker, "spk %s", Promotion)
                        client_printcolor(0, "/y%s has been promoted to /g%d /ctrBerserker /yRank!", name, g_hegrenade_rank[i_attacker])
                }
        }
}
// Medic Stuff
public TaskFinishHeal(client)
{
        if( pev_valid(g_ent[client]) )
        {
                engfunc(EngFunc_RemoveEntity, g_ent[client]);
                g_ent[client] = 0;
        }
       
        new target = g_target[client];
       
        new health;
        health = get_user_health(target)
        static name[32] ; get_user_name(client, name, charsmax(name));
       
        if ( health < MEDIC_HEAL_HP[g_medic_rank[client]])
        {
                g_medic_points[client] += 100
                set_user_health(target, MEDIC_HEAL_HP[g_medic_rank[client]]);
                if ( g_medic_rank[client] < MAXRANKS-1 && g_medic_points[client] >= MEDIC_RANKS[g_medic_rank[client]] )
                {
                        g_medic_rank[client]++
                       
                        client_cmd(client, "spk %s", Promotion)
                        client_printcolor(0, "/y%s has been promoted to /g%d /ctrMedic Rank /yRank!", name, g_medic_rank[client])
                }
        }
                       
        ManageBar(client, BAR_REMOVE);
        ManageBar(target, BAR_REMOVE);
                       
        g_healing[client] = false;
                       
        g_being_healed[target] = false;
}
public TaskFinishHeal2(client)
{
        if( !(1 <= client <= g_iMaxPlayers) ) return PLUGIN_CONTINUE;
       
        if( pev_valid(g_ent[client]) )
        {
                engfunc(EngFunc_RemoveEntity, g_ent[client]);
                g_ent[client] = 0;
        }
       
        new health;
        health = get_user_health(client)
       
        if ( health < MEDIC_HEAL_HP[g_medic_rank[client]])
        {
                set_user_health(client, MEDIC_HEAL_HP[g_medic_rank[client]]);
        }
                       
        ManageBar(client, BAR_REMOVE);
                       
        g_healing[client] = false;

        return PLUGIN_CONTINUE;
}
 
ResetItems(client)
{
        if( !(1 <= client <= g_iMaxPlayers) ) return;
       
        if( pev_valid(g_ent[client]) )
        {
                engfunc(EngFunc_RemoveEntity, g_ent[client]);
                g_ent[client] = 0;
        }
                       
        if( g_being_healed[client] )
        {
                new target = g_target[client];
                                       
                g_being_healed[target] = false;
                                       
                g_healing[client] = false;
                                       
                ManageBar(client, BAR_REMOVE);
                ManageBar(target, BAR_REMOVE);
        }
                       
        if( g_healing[client] )
        {
                new target = g_target[client];
                                       
                g_healing[client] = false;
                                       
                g_being_healed[target] = false;
                                       
                ManageBar(client, BAR_REMOVE);
                ManageBar(target, BAR_REMOVE);
        }
                       
        remove_task(client);
}
 
ManageBar(const client, bartime)
{
        new count = 1
        new players[32];
        if (client) players[0] = client; else get_players(players,count,"ch");
        for (new i=0;i<count;i++)
        if (is_user_connected(players[i]))
        {
                message_begin(MSG_ONE_UNRELIABLE, g_msgid_BarTime, _, players[i]);
                write_short(bartime);
                message_end();
        }
}
// Save Player Info
SaveRank(id)
{
        if ( get_pcvar_num(saverank) )
        {
                new authid[32]
                get_user_authid(id, authid, 31)
                new szData[256];
                new szKey[64];
               
                formatex( szKey , 63 , "%s-ID" , authid);
                formatex( szData , 255 , "%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#" , g_assault_global_kills[id], g_support_global_kills[id], g_snipers_global_kills[id], g_snipers_headshot_global_kills[id],
                g_hegrenade_global_kills[id], g_assault_rank[id], g_support_rank[id], g_snipers_rank[id], g_hegrenade_rank[id], g_medic_points[id], g_medic_rank[id] );
   
                nvault_set( g_Vault , szKey , szData );
        }
        else
        {
                new authip[32]
                get_user_ip(id,authip,31,1)
                new szData[256];
                new szKey[64];
       
                formatex( szKey , 63 , "%s-IP" , authip);
                formatex( szData , 255 , "%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#" , g_assault_global_kills[id], g_support_global_kills[id], g_snipers_global_kills[id], g_snipers_headshot_global_kills[id],
                g_hegrenade_global_kills[id], g_assault_rank[id], g_support_rank[id], g_snipers_rank[id], g_hegrenade_rank[id], g_medic_points[id], g_medic_rank[id] );
   
                nvault_set( g_Vault , szKey , szData );
        }
}
// Load Player Info
LoadRank(id)
{
        if ( get_pcvar_num(saverank) )
        {
                new authid[32]
                get_user_authid(id, authid, 31)

                new szData[256];
                new szKey[40];

                formatex( szKey , 39 , "%s-ID" , authid );

                formatex(szData , 255, "%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#", g_assault_global_kills[id], g_support_global_kills[id], g_snipers_global_kills[id], g_snipers_headshot_global_kills[id],
                g_hegrenade_global_kills[id], g_assault_rank[id], g_support_rank[id], g_snipers_rank[id], g_hegrenade_rank[id], g_medic_points[id], g_medic_rank[id] )
               
                nvault_get(g_Vault, szKey, szData, 255)

                replace_all(szData , 255, "#", " ")
                new assault_global[32], support_global[32], snipers_global[32], snipers_headshot_global[32],
                hegrenade_global[32], assault_rank[32], support_rank[32],
                snipers_rank[32], hegrenade_rank[32], medic_global[32], medic_rank[32];
                parse(szData, assault_global, 31, support_global, 31, snipers_global, 31, snipers_headshot_global, 31, hegrenade_global, 31,
                assault_rank, 31, support_rank, 31, snipers_rank, 31, hegrenade_rank, 31, medic_global, 31, medic_rank, 31 )
               
                g_assault_global_kills[id] = str_to_num(assault_global)
                g_support_global_kills[id] = str_to_num(support_global)
                g_snipers_global_kills[id] = str_to_num(snipers_global)
                g_snipers_headshot_global_kills[id] = str_to_num(snipers_headshot_global)
                g_hegrenade_global_kills[id] = str_to_num(hegrenade_global)
                g_medic_points[id] = str_to_num(medic_global)
               
                g_assault_rank[id] = str_to_num(assault_rank)
                g_support_rank[id] = str_to_num(support_rank)
                g_snipers_rank[id] = str_to_num(snipers_rank)
                g_hegrenade_rank[id] = str_to_num(hegrenade_rank)
                g_medic_rank[id] = str_to_num(medic_rank)
        }
        else
        {
                new authip[32]
                get_user_ip(id,authip,31,1)

                new szData[256];
                new szKey[40];

                formatex( szKey , 39 , "%s-IP" , authip );

                formatex(szData , 255, "%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#", g_assault_global_kills[id], g_support_global_kills[id], g_snipers_global_kills[id], g_snipers_headshot_global_kills[id],
                g_hegrenade_global_kills[id], g_assault_rank[id], g_support_rank[id], g_snipers_rank[id], g_hegrenade_rank[id], g_medic_points[id], g_medic_rank[id] )
               
                nvault_get(g_Vault, szKey, szData, 255)

                replace_all(szData , 255, "#", " ")
                new assault_global[32], support_global[32], snipers_global[32], snipers_headshot_global[32],
                hegrenade_global[32], assault_rank[32], support_rank[32],
                snipers_rank[32], hegrenade_rank[32], medic_global[32], medic_rank[32];
                parse(szData, assault_global, 31, support_global, 31, snipers_global, 31, snipers_headshot_global, 31, hegrenade_global, 31,
                assault_rank, 31, support_rank, 31, snipers_rank, 31, hegrenade_rank, 31, medic_global, 31, medic_rank, 31 )
               
                g_assault_global_kills[id] = str_to_num(assault_global)
                g_support_global_kills[id] = str_to_num(support_global)
                g_snipers_global_kills[id] = str_to_num(snipers_global)
                g_snipers_headshot_global_kills[id] = str_to_num(snipers_headshot_global)
                g_hegrenade_global_kills[id] = str_to_num(hegrenade_global)
                g_medic_points[id] = str_to_num(medic_global)
               
                g_assault_rank[id] = str_to_num(assault_rank)
                g_support_rank[id] = str_to_num(support_rank)
                g_snipers_rank[id] = str_to_num(snipers_rank)
                g_hegrenade_rank[id] = str_to_num(hegrenade_rank)
                g_medic_rank[id] = str_to_num(medic_rank)
        }
}
stock client_printcolor(const id, const input[], any:...)
{
        new count = 1, players[32];
        static msg[191];
        vformat(msg,190,input,3);
        replace_all(msg,190,"/g","^4");// green txt
        replace_all(msg,190,"/y","^1");// orange txt
        replace_all(msg,190,"/ctr","^3");// team txt
        replace_all(msg,190,"/w","^2");// team txt
        if (id) players[0] = id; else get_players(players,count,"ch");
        for (new i=0;i<count;i++)
                if (is_user_connected(players[i]))
                {
                        message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
                        write_byte(players[i]);
                        write_string(msg);
                        message_end();
                }
}


5c0r-|3i0 08-13-2009 22:18

Re: Define For Zombie Swarm
 
YOu can't do this for Zombie Swarm unless you integrate this to Zombie Swarm...
Or you just have to make a new natives ( Don't ask me ..)... I saw a lot of Lithuanian are trying to copy someone's mod called Umbrella Swarm...And now ??
btw, DO you know anything about scripting ??

xbatista 08-15-2009 03:45

Re: Define For Zombie Swarm
 
I am making new version,in there will be all defines for all mods ;)

DoviuX 08-15-2009 07:02

Re: Define For Zombie Swarm
 
But Iam Bored To Wait :/

Arkshine 08-15-2009 07:06

Re: Define For Zombie Swarm
 
So learn to code in waiting of the mod, so it will be more easy for you to modify plugins later.


All times are GMT -4. The time now is 15:08.

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