AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Error 052: Multi-dimensional arrays must be fully initialized (https://forums.alliedmods.net/showthread.php?t=195696)

SkatInfinity 09-10-2012 11:47

Error 052: Multi-dimensional arrays must be fully initialized
 
I really don't know what's wrong.

I get the error here ↓

Code:

new g_iWeapName[g_iWeapCount][] =

{
        "weapon_fiveseven",
        "weapon_deagle",
        "weapon_awp",
        "weapon_m3",
        "weapon_m4a1",
        "",
        "weapon_hegrenade",
        ""
};

and here ↓

Code:

new const g_iWeapShort[g_iWeapCount][] =
{
        "%",
        "%",
        "%",
        "%",
        "%",
        "%",
        " Bullets",
        " Bullets",
        " Bullets",
        " Bullets",
        " Bullets"
       
}


Liverwiz 09-10-2012 12:20

Re: Error 052: Multi-dimensional arrays must be fully initialized
 
g_iWeapCount has to be constant.
Either make it a conostant/defined or get rid of it in defining the arrays. I suggest the later.
You should also make the first array const as well

SkatInfinity 09-10-2012 14:09

Re: Error 052: Multi-dimensional arrays must be fully initialized
 
I've tried and can't get that to work correctly.

YamiKaitou 09-10-2012 14:15

Re: Error 052: Multi-dimensional arrays must be fully initialized
 
PHP Code:

new g_iWeapCount 11

new g_iWeapName[g_iWeapCount][] =
{
    
"weapon_fiveseven",
    
"weapon_deagle",
    
"weapon_awp",
    
"weapon_m3",
    
"weapon_m4a1",
    
"",
    
"weapon_hegrenade",
    
"",
    
"",
    
"",
    
""
}

new const 
g_iWeapShort[g_iWeapCount][] =
{
    
"%",
    
"%",
    
"%",
    
"%",
    
"%",
    
"%",
    
" Bullets",
    
" Bullets",
    
" Bullets",
    
" Bullets",
    
" Bullets"


You must define all of the values in the array

SkatInfinity 09-10-2012 14:30

Re: Error 052: Multi-dimensional arrays must be fully initialized
 
I've got more errors when i did that.

Liverwiz 09-10-2012 16:17

Re: Error 052: Multi-dimensional arrays must be fully initialized
 
Quote:

Originally Posted by SkatInfinity (Post 1796146)
I've got more errors when i did that.

post your whole code.

fysiks 09-10-2012 19:40

Re: Error 052: Multi-dimensional arrays must be fully initialized
 
Dimensions cannot be variables. They must be constants.

SkatInfinity 09-11-2012 01:41

Re: Error 052: Multi-dimensional arrays must be fully initialized
 
Here you go

Code:

/****************************
 * HnS: Cash Mod - V0.0.8
 * by ReCon aka NiQu
 *
 * Based Of Version: 0.0.7
 *
 * Do not try to add items/abilities/skills without
 * the knowledge of how to do it.
 *
 * Original ^2HerrCashMod Made by Herr | Lille^3
 *
 *
 * Thanks to TandborsteN for laserbeam.
 ****************************/

native add_user_immune( iPlayer );
native remove_user_immune( iPlayer );

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

#define PLUGIN "HnS: Cash Mod"
#define VERSION "0.0.7"
#define AUTHOR "ReCon"
#define PREFIX "CashMod"

#define XTRA_OFS_PLAYER            5
#define m_flNextAttack            83
#define m_afButtonPressed        246
#define m_iFOV                    363

const MAX_CLIENTS = 33;

new g_first_time[33];

enum _:g_iWeapCount
{
        WEAPON_FS,
        WEAPON_DEAGLE,
        WEAPON_AWP,
        WEAPON_SHOTGUN,
        SPACE,
        HE_GRENADE,
        SPACE,
        BULLET_FS,
        BULLET_DEAGLE,
        BULLET_AWP,
        BULLET_SHOTGUN,
        WEAPON_M4A1,
        BULLET_M4A1 }       
new const g_iWeapons [g_iWeapCount] [] =
{        "Five Seven",
        "Deagle",
        "AWP",
        "SHOTGUN",
        "M4A1",
        "",
        "HE Grenade",
        "",
        "Five Seven Bullet",
        "Deagle Bullet",
        "AWP Bullet",
        "SHOTGUN Bullet",
        "M4A1 Bullet"       
};
new const g_iFirstWCost[g_iWeapCount] =
{
        2000, //Cost of first level of Five Seven
        3500, //Cost of first level of Deagle
        8000, //Cost of first level of AWP
        6500, //Cost of first level of M3
        4000, //cost of first level of M4A1
        1,
        400, //Cost of first level of HE Grenade
        1,
        2500, //Cost of first level of Five Seven Bullet
        4000, //Cost of first level of Deagle Bullet
        8500, //Cost of first level of AWP Bullet
        7000, //Cost of first level of M3 Bullet
        4500 //Cost of first level of M4A1 Bullet
}

new const g_iWeapShort [g_iWeapCount] [] =
{
        "%",
        "%",
        "%",
        "%",
        "%",
        "%",
        "Bullets",
        "Bullets",
        "Bullets",
        "Bullets",
        "Bullets"       
}
new const g_iWeapMaxVal[g_iWeapCount] =
{
        60,
        60,
        25,
        25,
        1,
        80,
        1,
        3,
        3,
        2,
        2
}

new g_iWeapMaxLevel[g_iWeapCount] =
{
        6,
        6,
        5,
        6,
        1,
        8,
        1,
        3,
        3,
        2,
        2
}

new g_iWeapClass [g_iWeapCount] =
{
        CSW_FIVESEVEN,
        CSW_DEAGLE,
        CSW_AWP,
        CSW_M3,
        CSW_M4A1,
        2, //Space,
        CSW_HEGRENADE,
        2, //Space,
        1, //Bullet,
        1, //Bullet,
        1, //Bullet,
        1, //Bullet       
}
new const g_iWeapName [g_iWeapCount] [] =
{
        "weapon_fiveseven",
        "weapon_deagle",
        "weapon_awp",
        "weapon_m3",
        "weapon_m4a1",
        "",
        "weapon_hegrenade",
        ""
};
enum _:g_iItemCount
{
        HEALTH,
        ARMOR,
        RESPAWN_CHANCE,
        FALL_DMG_REDUCE,
        STEALTH,
        FASTER_RUNNING,
        EXTRA_DAMAGE,
        NO_FOOTSTEPS,
        NO_FLASH,
        SCOPE,
        NO_PAIN,
        UNDER_COVER_SUITE,
        ANTI_FROSTNADE,
        Laserbeam,
        Heatseek_HE
}

new const g_iItems[g_iItemCount][] =
{
        "Extra Health",
        "Extra Armor",
        "Respawn Chance",
        "Fall Damage Reducer",
        "Stealth",
        "Faster Running",
        "Extra Damage",
        "No Footsteps",
        "No Flash",
        "Deagle Scope",
        "No Pain Shock",
        "Camofluage",
        "Anti-Frostnade",
        "LaserBeam",
        "Heeatseeking Grenade"
}

new const g_iFirstCost[g_iItemCount] =
{
        1000, //Cost of first level of Health
        750, //Cost of first level of Armor
        5000, //Cost of first level of Respawn Chance
        1500, //Cost of first level of Fall Damage Reducer
        5000, //Cost of first level of Stealth
        3000, //Cost of first level of Faster Running
        3000, //Cost of first level of Extra Damage
        1500, //Cost of No Footsteps
        20000, //Cost of No Flash
        10000, //Cost of Deagle Scope
        30000, //Cost of No Pain Shock
        45000, //Cost of Camofluage
        40000, //Cost of Anti Frostnade
        15000, //Cost of first level of LaserBeam
        25000 //Cost of Heatseeking Grenade
}

new const g_iItemShort[g_iItemCount][] =
{
        " HP",
        " AP",
        "%",
        "%",
        "%",
        "%",
        " DMG",
        "CT Only",
        "CT Only",
        "CT & T",
        "CT & T",
        "%",
        "CT & T",
        "CT & T",
        "CT & T"
}

new const g_iItemMaxVal[g_iItemCount] =
{
        150,
        150,
        60,
        50,
        60,
        8,
        45,
        1,
        1,
        1,
        1,
        1,
        1,
        3,
        1
}

new const g_iItemMaxLevel[g_iItemCount] =
{
        6,
        6,
        6,
        5,
        6,
        4,
        5,
        1,
        1,
        1,
        1,
        1,
        1,
        3,
        1
}

new g_iCash[MAX_CLIENTS + 1];
new g_iItemLevel[MAX_CLIENTS + 1][g_iItemCount];
new g_iWeapLevel[MAX_CLIENTS + 1][g_iWeapCount];
new g_iAuthID[33][36];
new bool:g_iRevivedOnce[32];
new Float:g_gametime;
new Float:g_gametime2;
new grenade[32];
new bool:g_track[33];
new bool:g_track_enemy;
new g_vault;
new g_msgScreenFade;
new g_sync_check_data;
new last;
new g_Admin[33];
new g_LoggedIn[32];
new g_serverType;
new sLaserShooterUsed[32];
new sLaserNextUse[33];
new hook_to[33][3];
new const sShootSound[] = "weapons/rocketfire1.wav";
new beamsprite;
new bool:gHasHe[33];

public plugin_precache()
{
        beamsprite = precache_model("sprites/dot.spr");
        precache_sound( sShootSound );
}

public plugin_init()
{
        register_plugin(PLUGIN, VERSION, AUTHOR)
       
        //Register Spawn
        RegisterHam( Ham_Spawn, "player", "FwdPlayerSpawn", 1 );
       
        //Open MainMenu
        new command[]                        = "Cash_StartMenu";
        register_clcmd( "say /mm", command );
        register_clcmd( "say /cash", command );
        register_clcmd( "say /cashmod", command );
        register_clcmd( "say /hnsc", command );
        register_clcmd( "say /hnscash", command );
       
        //Register Death
        register_event( "DeathMsg", "Event_DeathMsg", "a" );
       
        //Register Round Start
        register_logevent( "eRound_start", 2, "1=Round_Start" );
       
        //Register Kill
        RegisterHam(Ham_Killed, "player", "FwdPlayerDeath", 1);
       
        //Register Take Damage
        RegisterHam(Ham_TakeDamage, "player", "FwdPlayerTakeDMG", 1);
       
        //Register PostThink for scope
        RegisterHam(Ham_Player_PostThink, "player", "Player_PostThink");
       
        //Register PreThink
        RegisterHam(Ham_Player_PreThink, "player", "Player_PreThink");
       
        //Register Weapon Switch
        register_event( "CurWeapon" , "fw_EvCurWeapon" , "be" , "1=1" );
       
        register_forward(FM_Think, "fwdThink", 0);
       
        //Get user screenfade
        g_msgScreenFade = get_user_msgid("ScreenFade");
       
        //Register ScreenFade
        register_event("ScreenFade", "eventFlash", "be", "4=255", "5=255", "6=255", "7>199");
       
        //Registers two different TextMSG
        register_event("TextMsg", "fire_in_the_hole", "b", "2&#Game_radio", "4&#Fire_in_the_hole");
        register_event("TextMsg", "fire_in_the_hole2", "b", "3&#Game_radio", "5&#Fire_in_the_hole");
       
        //Register when someone/something throws grenade
        register_event("99", "grenade_throw2", "b");
       
        //Register Commands
        register_concmd("cm_givecash", "CmdGiveCash", ADMIN_RCON, "<nick, #userid, authid> <cash>");
        register_concmd("cm_removecash", "CmdRemoveCash", ADMIN_RCON, "<nick, #userid, authid> <cash>");
       
        //Open nvault
        g_vault = nvault_open("cashmod_recon");
   
        if( g_vault == INVALID_HANDLE )
        {
                set_fail_state( "Error opening nVault" );
        }
}

public plugin_end()
{
        nvault_close(g_vault);
}

public plugin_natives()
{
        register_library("cashmod");
       
        register_native("cm_get_user_cash", "_get_cash");
        register_native("cm_set_user_cash", "_set_cash");
        register_native("cm_get_user_admin", "_get_user_admin");
        register_native("cm_save", "_save");
        register_native("cm_load", "_load");
        register_native("cm_first_time", "_first_time");
        register_native("cm_has_user_nofrost", "_has_user_nofrost");
}

public _has_user_nofrost(iPlugin, iParams)
{
        new client = get_param(1);
        if(g_iItemLevel[client][ANTI_FROSTNADE] != 0)
        {
                return true;
        }
        else{
                return false;
        }
        return PLUGIN_CONTINUE;       
}
public _get_health_level(iPlugin, iParams)
{
        return g_iItemLevel[get_param(1)][HEALTH];
}

public _first_time(iPlugin, iParams)
{
        return g_first_time[get_param(1)];
}

public _save(iPlugin, iParams)
{
        Save(get_param(1));
}

public _load(iPlugin, iParams)
{
        Load(get_param(1));
}

public _set_server_type(iPlugin, iParams)
{       
        g_serverType = max(0, get_param(1));
        return g_serverType;
}

public _get_server_type(iPlugin, iParams)
{
        return g_serverType;
}

public _set_cash(iPlugin, iParams)
{               
        new iPlayer = get_param(1);
        if( !iPlayer )
                return PLUGIN_CONTINUE;
       
        g_iCash[iPlayer] = max(0, get_param(2));
        return g_iCash[iPlayer];
}

public _get_cash(iPlugin, iParams)
{
        return g_iCash[get_param(1)];
}

public _set_user_status(iPlugin, iParams)
{
        new iPlayer = get_param(1);
        if( !iPlayer )
                return PLUGIN_CONTINUE;
               
        g_LoggedIn[iPlayer] = max(0, get_param(2));
        return g_LoggedIn[iPlayer];
}

public _get_user_status(iPlugin, iParams)
{
        return g_LoggedIn[get_param(1)];
}

public _get_user_admin(iPlugin, iParams)
{
        return g_Admin[get_param(1)];
}

public Player_PostThink(id)
{
        DoZoom2(id);
}

public fwdThink(entid)
{
        static szClassname[33];
        pev(entid, pev_classname, szClassname, 32);
       
        static szModel[23];
        pev(entid, pev_model, szModel, 22);
       
        if( equali(szClassname, "grenade", 0)
        && equali(szModel, "models/w_hegrenade.mdl", 0) &&
        g_iItemLevel[pev(entid, pev_owner)][Heatseek_HE] >= 1)
        {
                static Float:vOrigin[3];
                pev(entid, pev_origin, vOrigin);
               
                set_pev(entid, pev_renderfx, kRenderFxGlowShell);
                set_pev(entid, pev_rendercolor, {148.0, 0.0, 211.0});
                set_pev(entid, pev_rendermode, kRenderNormal);
                set_pev(entid, pev_renderamt, 100);
               
                static player;
                player = 0;
                static Float:vClosest[3];
                vClosest = Float:{4096.0, 4096.0, 4096.0};
                while( (player = engfunc(EngFunc_FindEntityInSphere, player, vOrigin, 512.0)) )
                {
                        if( !is_user_alive(player) )
                        {
                                continue;
                        }
                               
                        pev(player, pev_classname, szClassname, 6);
                        if( equali(szClassname, "player", 0) )
                        {
                                if( get_user_team(player) != get_user_team(pev(entid, pev_owner)) )
                                {
                                        static Float:vOrigin2[3];
                                        pev(player, pev_origin, vOrigin2);
                                       
                                        static hitplayer;
                                        hitplayer = fnTraceLine(entid, vOrigin, vOrigin2);
                                       
                                        if( vector_distance(vOrigin, vOrigin2)
                                        <
                                        vector_distance(vOrigin, vClosest)
                                        && hitplayer == player )
                                        {
                                                vClosest = vOrigin2;
                                        }
                                }
                        }
                }
                if( vClosest[0] != 4096.0 )
                {
                        entity_set_follow_origin(entid, vClosest, 350.0);
                }
        }
}

fnTraceLine(ignoreEnt, const Float:vStart[3], const Float:vEnd[3], Float:vReturn[3]={0.0, 0.0, 0.0})
{
        engfunc(EngFunc_TraceLine, vStart, vEnd, ignoreEnt == -1 ? 1 : 0, ignoreEnt);
       
        new ent = global_get(glb_trace_ent);
        global_get(glb_trace_endpos, vReturn);

        return pev_valid(ent) ? ent : 0;
}

stock entity_set_follow_origin(entity, Float:Origin[3], Float:speed)
{
        if(!pev_valid(entity)) return 0;
       
        new Float:entity_origin[3];
        pev(entity, pev_origin, entity_origin);
       
        new Float:diff[3];
        diff[0] = Origin[0] - entity_origin[0];
        diff[1] = Origin[1] - entity_origin[1];
        diff[2] = Origin[2] - entity_origin[2];
       
        new Float:length = floatsqroot(floatpower(diff[0], 2.0) + floatpower(diff[1], 2.0) + floatpower(diff[2], 2.0));
       
        new Float:Velocity[3];
        Velocity[0] = diff[0] * (speed / length);
        Velocity[1] = diff[1] * (speed / length);
        Velocity[2] = diff[2] * (speed / length);
       
        set_pev(entity, pev_velocity, Velocity);
       
        return 1;
}

public Player_PreThink(id)
{
        new nbut = pev(id, pev_button);
        new obut = pev(id, pev_oldbuttons);
        if((nbut & IN_RELOAD) && !(obut & IN_RELOAD))
        {
                if( sLaserShooterUsed[id] != 0 && is_user_alive(id) && sLaserNextUse[id])
                {
                        hook_to[id][0]=999999;
                        new player, body;
                        get_user_aiming(id, player, body);
                        if(is_user_connected(id) && is_user_connected(player))
                        {
                                sLaserShooterUsed[id] -= 1;
                                       
                                //Get Id's origin
                                static origin1[3];
                                get_user_origin(id,origin1);
                               
                                if(hook_to[id][0]==999999)
                                {
                                        static origin2[3];
                                        get_user_origin(id,origin2,3);
                                        hook_to[id][0]=origin2[0];
                                        hook_to[id][1]=origin2[1];
                                        hook_to[id][2]=origin2[2];
                                }
                                //Create RED beam
                                message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
                                write_byte(1);                //TE_BEAMENTPOINT
                                write_short(id);        // start entity
                                write_coord(hook_to[id][0]);
                                write_coord(hook_to[id][1]);
                                write_coord(hook_to[id][2]);
                                write_short(beamsprite);
                                write_byte(1);                // framestart
                                write_byte(1);                // framerate
                                write_byte(2);                // life in 0.1's
                                write_byte(40);                // width
                                write_byte(0);                // noise
                                write_byte(255);        // red
                                write_byte(0);                // green
                                write_byte(0);                // blue
                                write_byte(200);        // brightness
                                write_byte(40);                // speed
                                message_end();
                                new CurrentHealth[32];
                                CurrentHealth[player] = get_user_health(player);
                                new Randnum = random_num(45, 99);
                                new TakenHealth = CurrentHealth[player] - Randnum;
                                new AttackerName[33];
                                get_user_name(id, AttackerName, 31);
                                emit_sound( id, CHAN_BODY, sShootSound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
                                sLaserNextUse[id] = false;
                                set_task(0.5, "tskLaserNextUse", 10000 + id);
                                if(is_user_alive(player))
                                {
                                        if( CurrentHealth[player] < Randnum)
                                        {
                                                new GivenFrags = get_user_frags(id) + 1;
                                                set_user_frags(id, GivenFrags);
                                                g_iCash[id] += 20;
                                               
                                                Print(id, "^x03 You have been given^x04 20^x03 Cash for killing^x04 '%s'^x03 with a^x04 Laserbeam!", player);
                                                Print(player, "^x01 You have been killed by %s with a laserbeam!", AttackerName);
                                                make_deathmsg(id, player, 0, "Laser Beam");
                                                user_silentkill(player);
                                        }
                                        else{
                                                set_user_health(player, TakenHealth);
                                                Print(player, "^x03 You have been hurted for^x04 %i HP^x03 from^x04 %s's^x03 Laserbeam!", Randnum, AttackerName);
                                                Print(id, "^x04 You have hurted %s for ^x04 %i HP", player, Randnum);
                                        }
                                }
                        }
                }
        }
}

public tskLaserNextUse(id)
{
        id -= 10000;
       
        sLaserNextUse[id] = true;
}

public client_authorized( iPlayer )
{
        get_user_authid(iPlayer, g_iAuthID[ iPlayer ] , charsmax( g_iAuthID[] ) );
        Load(iPlayer);
       
        if ( access(iPlayer, ADMIN_LEVEL_A) )
                g_Admin[iPlayer] = true;
}

public client_disconnect( iPlayer )
{       
        Save(iPlayer);
}

public Load(iPlayer)
{
        static data[256], timestamp;
        if( nvault_lookup(g_vault, g_iAuthID[iPlayer], data, sizeof(data) - 1, timestamp) )
        {
                ParseLoadData(iPlayer, data);
        }
        else
        {
                NewUser(iPlayer);
        }
}

public NewUser(iPlayer)
{
        g_first_time[iPlayer] = 1;
       
        g_iCash[iPlayer] = 200;
       
        for( new iItem = 0; iItem < g_iItemCount; iItem++ )
        {
                g_iItemLevel[iPlayer][iItem] = 0;
        }
        for( new iWeap = 0; iWeap < g_iWeapCount; iWeap++ )
        {
                g_iWeapLevel[iPlayer][iWeap] = 0;
        }
}

ParseLoadData(iPlayer, data[256])
{
        static num[6];
        strbreak(data, num, sizeof(num) - 1, data, sizeof(data) - 1);
       
        g_iCash[iPlayer] = str_to_num(num);
       
        for( new iItem = 0; iItem < g_iItemCount; iItem++ )
        {
                strbreak(data, num, sizeof(num) - 1, data, sizeof(data) - 1);
                g_iItemLevel[iPlayer][iItem] = clamp(str_to_num(num), 0, g_iItemMaxLevel[iItem]);
        }
       
        for( new iWeap = 0; iWeap < g_iWeapCount; iWeap++ )
        {
                strbreak(data, num, sizeof(num) - 1, data, sizeof(data) - 1);
                g_iWeapLevel[iPlayer][iWeap] = clamp(str_to_num(num), 0, g_iWeapMaxLevel[iWeap]);
        }
}

public Save(iPlayer)
{
        static data[256];
        new len = formatex(data, sizeof(data) - 1, "%i", g_iCash[iPlayer]);
       
        for( new iItem = 0; iItem < g_iItemCount; iItem++ )
        {
                len += formatex(data[len], sizeof(data) - len - 1, " %i", g_iItemLevel[iPlayer][iItem]);
        }
       
        for( new iWeap = 0; iWeap < g_iWeapCount; iWeap++ )
        {
                len += formatex(data[len], sizeof(data) - len - 1, " %i", g_iWeapLevel[iPlayer][iWeap]);
        }
       
        nvault_set(g_vault, g_iAuthID[ iPlayer ], data);
}

public fw_EvCurWeapon( iPlayer )
{
        //If player bought faster running
        if( g_iItemLevel[iPlayer][FASTER_RUNNING] >= 1 )
        {
                //Call a function to set speed
                Set_Speed(iPlayer);
        }
}

public FwdPlayerTakeDMG(iPlayer, inflictor, attacker, Float:damage, damagebits)
{
        //If player is alive and the damage is done by falling
        if(is_user_alive(iPlayer) && (damagebits & DMG_FALL) )
        {
                //If player is either ct or T
                new CsTeams:team = cs_get_user_team(iPlayer);
                if( team == CS_TEAM_CT || team == CS_TEAM_T )
                {       
                        //Percentage Calculation
                        new iPercent = g_iItemMaxVal[FALL_DMG_REDUCE] * g_iItemLevel[iPlayer][FALL_DMG_REDUCE] / g_iItemMaxLevel[FALL_DMG_REDUCE];
                       
                        //Fall Damage Reducer
                        SetHamParamFloat(4, damage * (1.0 - (float(iPercent) / 100.0)));
                }
        }
       
        if( ( 1 <= attacker <= get_maxplayers() && iPlayer != attacker ) )
        {
                new Float:fMultiplier = g_iItemLevel[iPlayer][EXTRA_DAMAGE] * 0.10 + 1.0;
                SetHamParamFloat( 4, damage * fMultiplier );
        }
       
        if( g_iItemLevel[iPlayer][NO_PAIN] >= 1 )
        {
                set_pdata_float(iPlayer, 108, 1.0);
        }
        return HAM_HANDLED;
}

public FwdPlayerDeath(iPlayer, Killer, Shouldgib)
{
        //If the player hasnt already been respawned
        if( !g_iRevivedOnce[iPlayer] )
        {
                //If player is either ct or t
                new CsTeams:team = cs_get_user_team(iPlayer);
                if( team == CS_TEAM_T || team == CS_TEAM_CT )
                {
                        //Percentage Calculation
                        new iPercent = g_iItemMaxVal[RESPAWN_CHANCE] * g_iItemLevel[iPlayer][RESPAWN_CHANCE] / g_iItemMaxLevel[RESPAWN_CHANCE];
                       
                        //Percentage Usage
                        if( random_num(1, 100) <= iPercent )
                        {
                                //Set respwan in 1 second
                                set_task(1.0, "Task_Respawn", iPlayer);
                        }
                }
        }
}

public Task_Respawn(iPlayer)
{
        //Respawn Player
        ExecuteHamB(Ham_CS_RoundRespawn, iPlayer);
       
        //Print to the player that he/she got respawned
        Print(iPlayer, "^x03You got respawned!");
       
        //Disable respawn until next round
        g_iRevivedOnce[iPlayer] = true;
}

public eRound_start()
{
        //Bunc of variables
        new iPlayers[32], iNum, iPid;
       
        //Get all players
        get_players( iPlayers, iNum, "a" );
       
        //Browse through all players
        for( new i; i < iNum; i++ )
        {
                iPid = iPlayers[i];
               
                //Enable respawn
                g_iRevivedOnce[iPid] = false;
        }
}


public Event_DeathMsg()
{
        //Get the killer
        new killer = read_data(1);
       
        //Get the victim + a variable
        new victim = read_data(2);
        new vic_name[128];
        new format_text[128];
        get_user_name(victim, vic_name, 127);
       
       
        //Make sure that the killer exists
        if( 1 <= killer <= get_maxplayers() )
        {
                //If victim is not killer
                if( victim != killer )
                {
                        //If victim is not a teammate of killer
                        if( cs_get_user_team( victim ) != cs_get_user_team( killer ) )
                        {
                                //If killer is still alive
                                if( is_user_alive( killer ) )
                                {
                                        //Add cash to the killer
                                        if( g_Admin[killer] && g_iCash[killer] < 99938 )
                                        {
                                                g_iCash[killer] += 60;
                                                formatex(format_text, sizeof(format_text) - 1, "^x03You recieved 60 cash for killing^x04 %s", vic_name);
                                        }
                                        else
                                        {
                                                g_iCash[killer] += 40;
                                                formatex(format_text, sizeof(format_text) - 1, "^x03You recieved 40 cash for killing^x04 %s", vic_name);
                                        }
                                        //Get the victims name
                                        get_user_name(victim, vic_name, 127);
                                       
                                        //Print out" to the player that he/she got cash
                                        Print(killer, format_text, vic_name);
                                }
                               
                        }
                       
                }
               
        }
       
}

public Cash_StartMenu(iPlayer)
{
        //Menu Title
        new title[512]; formatex(title, sizeof(title) - 1, "\r%s \w- \yMain Menu \w- \yBy \rReCon & TandborsteN ^nYour Cash: %i", PREFIX, g_iCash[iPlayer]);
       
        //Create the menu
        new menu = menu_create(title, "StartMenu_Handle");
       
        //Create Items Menu
        menu_additem(menu, "\wInfo", "1", 0);
        menu_additem(menu, "\wPlayer Info", "2", 0);
        menu_addblank(menu, 0);
        menu_additem(menu, "\wWeapon Shop", "3", 0);
        menu_additem(menu, "\wItem Shop", "4", 0);
        menu_addblank(menu, 1);
        menu_addblank(menu, 1);
        menu_addblank(menu, 1);
       
        //Display the menu
        menu_display(iPlayer, menu, 0);
}

public StartMenu_Handle(iPlayer, 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:
                {
                        show_motd(iPlayer, "cashmod/info.motd", "CashMod Info");
                }
                case 2:
                {
                        Cash_PlayerMenu(iPlayer);
                }
                case 3:
                {
                        Cash_WeaponMenu(iPlayer);
                }
                case 4:
                {
                        Cash_MainMenu(iPlayer);
                }
        }
        return PLUGIN_HANDLED;
}

public Cash_PlayerMenu(iPlayer)
{
        new title[170]; formatex(title, sizeof(title) - 1, "\r%s - \w \yPlayer Menu", PREFIX);
        new menu = menu_create(title, "Cash_PlayerHandle");
       
        new players[32], pnum, tempid;
        new szName[32], szTempid[10];
   
        get_players(players, pnum);
       
        for( new i; i<pnum; i++ )
        {
                tempid = players[i];
               
                get_user_name(tempid, szName, 31);
                num_to_str(tempid, szTempid, 9);
               
                menu_additem(menu, szName, szTempid, 0);
        }
       
        menu_display(iPlayer, menu, 0);
}

public Cash_PlayerHandle(iPlayer, menu, item)
{
        if( item == MENU_EXIT )
        {
                menu_destroy(menu);
                Cash_StartMenu(iPlayer);
                return PLUGIN_HANDLED;
        }
       
        new data[6], iName[64];
        new access, callback;
        menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
       
        new tempid = str_to_num(data);
        new tempname[32]; get_user_name(tempid, tempname, 31);
       
        static motd[2500];
        new len = formatex(motd, sizeof(motd) - 1,        "<html>");
        len += format(motd[len], sizeof(motd) - len - 1,        "<body style=^"background-color:#030303; color:#FF8F00^">");
        len += format(motd[len], sizeof(motd) - len - 1,        "<p align=^"center^">");
        len += format(motd[len], sizeof(motd) - len - 1,        "Player Info for %s.<br><br>", tempname);
        len += format(motd[len], sizeof(motd) - len - 1,        "Player Cash: %i.<br><br>", g_iCash[tempid]);
        len += format(motd[len], sizeof(motd) - len - 1,        "<b>Weapon Chance</b>:<br>");
        for( new iWeap = 0; iWeap < g_iWeapCount; iWeap++ )
        {
                if( g_iWeapClass[iWeap] != 2 )
                {
                        len += format(motd[len], sizeof(motd) - len - 1,        "%s  -  Level: %i/%i <br>", g_iWeapons[iWeap], g_iWeapLevel[tempid][iWeap], g_iWeapMaxLevel[iWeap]);
                }
        }
       
        len += format(motd[len], sizeof(motd) - len - 1,        "<br><br><b>Other Items:</b><br>");
        for( new iItem = 0; iItem < g_iItemCount; iItem++ )
        {
                len += format(motd[len], sizeof(motd) - len - 1,        "%s  -  Level: %i/%i <br>", g_iItems[iItem], g_iItemLevel[tempid][iItem], g_iItemMaxLevel[iItem]);
        }
        len += format(motd[len], sizeof(motd) - len - 1,        "</p>");
        len += format(motd[len], sizeof(motd) - len - 1,        "</body>");
        len += format(motd[len], sizeof(motd) - len - 1,        "</html>");
       
        show_motd(iPlayer, motd, "Player Info");
       
        menu_destroy(menu);
        return PLUGIN_HANDLED;
}

public Cash_WeaponMenu(iPlayer)
{
        //Menu Title
        new title[170]; formatex(title, sizeof(title) - 1, "\r%s \w- \yWeapon Menu \w- \yBy \rReCon ^nYour Cash: %i", PREFIX, g_iCash[iPlayer]);
       
        //Create the menu
        new menu = menu_create(title, "WeaponMenu_Handle");
        new iNumber[5], iCost, szOption[80], Amount, Level, Level2;
       
       
        //Browse through all menu items
        for( new iWeap = 0; iWeap < g_iWeapCount; iWeap++ )
        {
                //Bunch of variables
                num_to_str(iWeap, iNumber, 4);
                Level = g_iWeapLevel[iPlayer][iWeap];
                Level2 = g_iWeapLevel[iPlayer][iWeap] + 1;
                iCost = g_iFirstWCost[iWeap] * (1 << (Level2 - 1));
                Amount = g_iWeapMaxVal[iWeap] * g_iWeapLevel[iPlayer][iWeap] / g_iWeapMaxLevel[iWeap];
               
                //If the player already have maxlevel
                if( g_iWeapLevel[iPlayer][iWeap] >= g_iWeapMaxLevel[iWeap] )
                {
                        if( g_iWeapClass[iWeap] == 2 )
                        {
                                formatex(szOption, 79, "");
                        }
                        else
                        {
                                formatex(szOption, 79, "\y%s: \wLevel %i \r(%i%s)", g_iWeapons[iWeap], Level, Amount, g_iWeapShort[iWeap]);
                        }
                }
                //If the player cant afford the item
                else if( g_iCash[iPlayer] < iCost )
                {
                        if( g_iWeapClass[iWeap] == 2 )
                        {
                                formatex(szOption, 79, "");
                        }
                        else
                        {
                                formatex(szOption, 79, "\d%s: \wLevel %i \r(%i%s) \y%i Cash", g_iWeapons[iWeap], Level, Amount, g_iWeapShort[iWeap], iCost);
                        }
                }
                //If the player has not maxed out the item
                else if( g_iWeapLevel[iPlayer][iWeap] < g_iWeapMaxLevel[iWeap] )
                {
                        if( g_iWeapClass[iWeap] == 2 )
                        {
                                formatex(szOption, 79, "");
                        }
                        else
                        {
                                formatex(szOption, 79, "\r%s: \wLevel %i \r(%i%s) \y%i Cash", g_iWeapons[iWeap], Level, Amount, g_iWeapShort[iWeap], iCost);
                        }
                }
               
                //Add all the menu items
                if( g_iWeapClass[iWeap] == 2 )
                {
                        menu_addblank(menu, 0);
                }
                else
                {
                        menu_additem(menu, szOption, iNumber);
                }
        }
       
        //Display the menu
        menu_display(iPlayer, menu, 0);
}

public WeaponMenu_Handle(iPlayer, menu, item)
{
        //Get the menu data
        if( item == MENU_EXIT )
        {
                menu_destroy(menu);
                Cash_StartMenu(iPlayer);
                return PLUGIN_HANDLED;
        }
       
        //Bunc of variables
        new data[6], iName[64];
        new access, callback;
        menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
       
        new iWeap = str_to_num( data ), iCost, Level;
        Level = g_iWeapLevel[iPlayer][iWeap] + 1;
        iCost = g_iFirstWCost[iWeap] * (1 << (Level - 1));
       
        if( iWeap == BULLET_FS && g_iWeapLevel[iPlayer][WEAPON_FS] <= 0 || iWeap == BULLET_DEAGLE && g_iWeapLevel[iPlayer][WEAPON_DEAGLE] <= 0 || iWeap == BULLET_AWP && g_iWeapLevel[iPlayer][WEAPON_AWP] <= 0  || iWeap == BULLET_M4A1 && g_iWeapLevel[iPlayer][WEAPON_M4A1] <= 0 )
        {
                Print(iPlayer, "^x03You don't have this weapons!");
                Cash_WeaponMenu(iPlayer);
                return PLUGIN_HANDLED;
        }
       
        //If player has maxed out the item
        if( g_iWeapLevel[iPlayer][iWeap] == g_iWeapMaxLevel[iWeap] )
        {
                Print(iPlayer, "^x03You have the max level of %s!", g_iWeapons[iWeap]);
        }
        //If the player cant afford the item
        else if( g_iCash[iPlayer] < iCost )
        {
                Print(iPlayer, "^x03You dont have enough cash to buy %s Level: %i", g_iWeapons[iWeap], Level);
        }
        //Take Cash, Print and give level
        else
        {
                //Take cash
                g_iCash[iPlayer] -= iCost;
               
                //Give a level
                g_iWeapLevel[iPlayer][iWeap] += 1;
               
                //Print out to the player that he/she bought an item with corresponding level
                Print(iPlayer, "^x03You bought %s Level: %i", g_iWeapons[iWeap], Level);
        }
       
        Cash_WeaponMenu(iPlayer);
        return PLUGIN_HANDLED;
}

public Cash_MainMenu(iPlayer)
{
        //Menu Title
        new title[70]; formatex(title, sizeof(title) - 1, "\r%s \w- \yMain Menu \w- \yBy \rReCon^nYour Cash: %i", PREFIX, g_iCash[iPlayer]);
       
        //Create the menu
        new menu = menu_create(title, "MainMenu_Handle");
        new iNumber[5], iCost, szOption[80], Amount, Level, Level2;
       
       
        //Browse through all menu items
        for( new iItem = 0; iItem < g_iItemCount; iItem++ )
        {
                //Bunch of variables
                num_to_str(iItem, iNumber, 4);
                Level = g_iItemLevel[iPlayer][iItem];
                Level2 = g_iItemLevel[iPlayer][iItem] + 1;
                iCost = g_iFirstCost[iItem] * (1 << (Level2 - 1));
                Amount = g_iItemMaxVal[iItem] * g_iItemLevel[iPlayer][iItem] / g_iItemMaxLevel[iItem];
               
                if( iItem == EXTRA_DAMAGE && g_serverType == 1 )
                {
                        return PLUGIN_CONTINUE;
                }
               
                //If the player already have maxlevel
                if( g_iItemLevel[iPlayer][iItem] >= g_iItemMaxLevel[iItem] )
                {
                        if( iItem == NO_FOOTSTEPS || iItem == NO_FLASH || iItem == SCOPE || iItem == NO_PAIN || iItem == ANTI_FROSTNADE || iItem == Laserbeam )
                        {
                                formatex(szOption, 79, "\y%s: \dLevel %i \r(%s)", g_iItems[iItem], Level, g_iItemShort[iItem]);
                        }
                        else
                        {
                                formatex(szOption, 79, "\y%s: \dLevel %i \r(%i%s)", g_iItems[iItem], Level, Amount, g_iItemShort[iItem]);
                        }
                }
                //If the player cant afford the item
                else if( g_iCash[iPlayer] < iCost )
                {
                        if( iItem == NO_FOOTSTEPS || iItem == NO_FLASH || iItem == SCOPE || iItem == NO_PAIN || iItem == ANTI_FROSTNADE || iItem == Laserbeam )
                        {
                                formatex(szOption, 79, "\d%s: \wLevel %i \r(%s) \y%i Cash", g_iItems[iItem], Level, g_iItemShort[iItem], iCost);
                        }
                        else
                        {
                                formatex(szOption, 79, "\d%s: \wLevel %i \r(%i%s) \y%i Cash", g_iItems[iItem], Level, Amount, g_iItemShort[iItem], iCost);
                        }
                }
                //If the player has not maxed out the item
                else if( g_iItemLevel[iPlayer][iItem] < g_iItemMaxLevel[iItem] )
                {
                        if( iItem == NO_FOOTSTEPS || iItem == NO_FLASH || iItem == SCOPE || iItem == NO_PAIN || iItem == ANTI_FROSTNADE || iItem == Laserbeam )
                        {
                                formatex(szOption, 79, "\r%s: \wLevel %i \r(%s) \y%i Cash", g_iItems[iItem], Level, g_iItemShort[iItem], iCost);
                        }
                        else
                        {
                                formatex(szOption, 79, "\r%s: \wLevel %i \r(%i%s) \y%i Cash", g_iItems[iItem], Level, Amount, g_iItemShort[iItem], iCost);
                        }
                }
               
                //Add all the menu items
                menu_additem(menu, szOption, iNumber);
        }
       
        //Display the menu
        menu_display(iPlayer, menu, 0);
       
        return PLUGIN_HANDLED;
}

public MainMenu_Handle(iPlayer, menu, item)
{
        //Get the menu data
        if( item == MENU_EXIT )
        {
                menu_destroy(menu);
                Cash_StartMenu(iPlayer);
                return PLUGIN_HANDLED;
        }
       
        //Bunc of variables
        new data[6], iName[64];
        new access, callback;
        menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
       
        new iItem = str_to_num( data ), iCost, Level;
        Level = g_iItemLevel[iPlayer][iItem] + 1;
        iCost = g_iFirstCost[iItem] * (1 << (Level - 1));
       
        //If player has maxed out the item
        if( g_iItemLevel[iPlayer][iItem] == g_iItemMaxLevel[iItem] )
        {
                Print(iPlayer, "^x03You have the max level of %s!", g_iItems[iItem]);
        }
        //If the player cant afford the item
        else if( g_iCash[iPlayer] < iCost )
        {
                Print(iPlayer, "^x03You dont have enough cash to buy %s Level: %i", g_iItems[iItem], Level);
        }
        //Take Cash, Print and give level
        else
        {
                //Take cash
                g_iCash[iPlayer] -= iCost;
               
                //Give a level
                g_iItemLevel[iPlayer][iItem] += 1;
               
                //Print out to the player that he/she bought an item with corresponding level
                Print(iPlayer, "^x03You bought %s Level: %i", g_iItems[iItem], Level);
        }
       
        Cash_MainMenu(iPlayer);
        return PLUGIN_HANDLED;
}

public FwdPlayerSpawn(iPlayer)
{
        //If player is alive when spawned
        if( is_user_alive(iPlayer) )
        {

                        //If player has bought extra health
                        if( g_iItemLevel[iPlayer][HEALTH] >= 1 )
                        {
                                //Set health to its self and add the extra health
                                set_user_health(iPlayer, get_user_health(iPlayer) + g_iItemMaxVal[HEALTH] * g_iItemLevel[iPlayer][HEALTH] / g_iItemMaxLevel[HEALTH]);
                        }
                        //If player has bought extra armor
                        if( g_iItemLevel[iPlayer][ARMOR] >= 1 )
                        {
                                //Set armor to its self and add the extra armor
                                set_user_armor(iPlayer, g_iItemMaxVal[ARMOR] * g_iItemLevel[iPlayer][ARMOR] / g_iItemMaxLevel[ARMOR]);
                        }
                        //If player has bought stealth
                        if( g_iItemLevel[iPlayer][STEALTH] >= 1 )
                        {
                                //Call a function to set stealth
                                Set_Stealth(iPlayer);
                               
                        }
                        //If player has bought faster running
                        if( g_iItemLevel[iPlayer][FASTER_RUNNING] >= 1 )
                        {
                                //Call a function to set speed
                                Set_Speed(iPlayer);
                        }
                        //If player has bought no footsteps
                        if( g_iItemLevel[iPlayer][NO_FOOTSTEPS] >= 1 )
                        {
                                set_user_footsteps(iPlayer, 1);
                        }
                        //If player has bought undercover suite
                        if( g_iItemLevel[iPlayer][UNDER_COVER_SUITE] >= 1 )
                        {
                                remove_task(iPlayer);
                                set_task(9.0, "Set_Undercover", iPlayer);
                        }
                        //If player has bought Antifrost nade
                        if( g_iItemLevel[iPlayer][ANTI_FROSTNADE] >= 1 )
                        {
                                add_user_immune(iPlayer)
                        }
                        else
                        {
                                remove_user_immune(iPlayer);
                        }
                        //If player has bought Laserbeam
                        if( g_iItemLevel[iPlayer][Laserbeam] >= 1 )
                        {
                                sLaserShooterUsed[iPlayer] = g_iItemLevel[iPlayer][Laserbeam];
                                sLaserNextUse[iPlayer] = true;
                        }
                       
                        //Give weapons, the check if the player bought is in the function
                        remove_task(iPlayer);
                        set_task(10.0, "Set_Weapons", iPlayer);
        }
}

public Set_Undercover(iPlayer)
{
        //Percentage Calculation
        new iPercent = g_iItemMaxVal[UNDER_COVER_SUITE] * g_iItemLevel[iPlayer][UNDER_COVER_SUITE] / g_iItemMaxLevel[UNDER_COVER_SUITE];
       
        //Get Players Team
        new CsTeams:team = cs_get_user_team(iPlayer);
       
        //Percentage Usage
        if( random_num(1, 100) <= iPercent )
        {
                //If player is alive
                if( is_user_alive(iPlayer) )
                        {
                        if(team == CS_TEAM_CT)
                        {
                                cs_set_user_model(iPlayer, "leet");
                                Print(iPlayer, "^x03You  look like a Terrorist");
                        }
                        else if(team == CS_TEAM_T)
                        {
                                cs_set_user_model(iPlayer, "gign");
                                Print(iPlayer, "^x03You look like a Counter-Terrorist!");
                        }
                }
        }
}

public Set_Stealth(iPlayer)
{               
        new StealthAmt = g_iItemLevel[iPlayer][STEALTH] * 25;
        new NewStealth = 255 - StealthAmt;
                       
        set_user_rendering( iPlayer, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, NewStealth );
}

public Set_Speed(iPlayer)
{
        //Percentage Calculation
        new iPercent = g_iItemMaxVal[FASTER_RUNNING] * g_iItemLevel[iPlayer][FASTER_RUNNING] / g_iItemMaxLevel[FASTER_RUNNING];
       
        //Speed Calculation
        new iSpeed = iPercent * 250 / 100;
       
        //Set Speed
        set_user_maxspeed(iPlayer, 250.0 + iSpeed);
}

public calc_value(const level, const max_level, const max_value)
{
        return (max_value * level / max_level);
}

public Set_Weapons(iPlayer)
{
        //Browse through all menu items
        new iNumber[5];
        for( new iWeap = 0; iWeap < g_iWeapCount; iWeap++ )
        {
                //Bunch of variables
                num_to_str(iWeap, iNumber, 4);
               
                //Bullets
                new iBullets;
               
                if( iWeap == WEAPON_FS && g_iWeapLevel[iPlayer][BULLET_FS] >= 1 )
                {
                        iBullets = g_iWeapLevel[iPlayer][BULLET_FS] + 1;
                }
                else if( iWeap == WEAPON_DEAGLE && g_iWeapLevel[iPlayer][BULLET_DEAGLE] >= 1 )
                {
                        iBullets = g_iWeapLevel[iPlayer][BULLET_DEAGLE] + 1;
                }
                else if( iWeap == WEAPON_AWP && g_iWeapLevel[iPlayer][BULLET_AWP] >= 1 )
                {
                        iBullets = g_iWeapLevel[iPlayer][BULLET_AWP] + 1;       
                }
                else if ( iWeap == WEAPON_SHOTGUN && g_iWeapLevel[iPlayer][BULLET_SHOTGUN] >= 1 )
                {
                        iBullets = g_iWeapLevel[iPlayer][BULLET_SHOTGUN] +1;
                }
                  else if ( iWeap == WEAPON_M4A1 && g_iWeapLevel[iPlayer][BULLET_M4A1] >= 1 )
                {
                        iBullets = g_iWeapLevel[iPlayer][BULLET_M4A1] + 1;       
                }
                if( iBullets == 0 )
                {
                        iBullets = 1;
                }
               
                if( g_iWeapLevel[iPlayer][iWeap] >= 1 )
                {
                        static percent;
                        percent = calc_value(g_iWeapLevel[iPlayer][iWeap], g_iWeapMaxLevel[iWeap], g_iWeapMaxVal[iWeap]);
                       
                        //new Chance = g_iWeapLevel[iPlayer][iWeap] * g_iWeapMaxVal[iWeap];
                        //new randonnumb = random_num(1, 100);
                       
                        new message[72];
                       
                        if(is_user_connected(iPlayer))
                        {
                                if( percent > 0 && (percent == 100 || random_num(1, 100) <= percent ) )
                                {
                                        if( iWeap == HE_GRENADE && !user_has_weapon(iPlayer, g_iWeapClass[HE_GRENADE]) )
                                        {       
                                                give_item(iPlayer, g_iWeapName[HE_GRENADE]);
                                                formatex(message, sizeof(message) - 1, "^x03You recieved a HE Grenade ^x04[%i%%%%].", percent);
                                               
                                                if(g_iItemLevel[iPlayer][Heatseek_HE] >= 1)
                                                {
                                                        gHasHe[iPlayer] = true;
                                                }
                                        }
                                        else
                                        {
                                                give_item(iPlayer, g_iWeapName[iWeap]);
                                                cs_set_weapon_ammo(find_ent_by_owner(iPlayer, g_iWeapName[iWeap], iPlayer), iBullets);
                                                cs_set_user_bpammo(iPlayer, g_iWeapClass[iWeap], 0);
                                                formatex(message, sizeof(message) - 1, "^x03You recieved a %s with %i bullets ^x04[%i%%%%].", g_iWeapons[iWeap], iBullets, percent);
                                        }
                                        Print(iPlayer, message);
                                }
                        }
                }
        }
        return PLUGIN_HANDLED;
}

//The following functions are used to give and remove, dont touch!
public CmdGiveCash(iPlayer, level, cid)
{
        if( !cmd_access(iPlayer, level, cid, 3) ) return PLUGIN_HANDLED;
       
        static arg[35];
        read_argv(1, arg, sizeof(arg) - 1);
       
        new target = cmd_target(iPlayer, arg, CMDTARGET_NO_BOTS);
        if( !target ) return PLUGIN_HANDLED;
       
        read_argv(2, arg, sizeof(arg) - 1);
        new CASH = str_to_num(arg);
       
        if( CASH <= 0 )
        {
                console_print(iPlayer, "Not enough cash!");
                if( CASH < 0 )
                {
                        console_print(iPlayer, "Use cm_removecash instead!");
                }
                return PLUGIN_HANDLED;
        }
       
        if( CASH >= 99999 )
        {
                console_print(iPlayer, "To much cash!");
                return PLUGIN_HANDLED;
        }
       
        g_iCash[target] += CASH;
       
        static name[2][32];
        get_user_name(iPlayer, name[0], sizeof(name[]) - 1);
        get_user_name(target, name[1], sizeof(name[]) - 1);
       
        client_print(iPlayer, print_console, "%s You gave %s %i cash!", PREFIX, name[1], CASH);
       
        static steamid[2][35];
        get_user_authid(iPlayer, steamid[0], sizeof(steamid[]) - 1);
        get_user_authid(target, steamid[1], sizeof(steamid[]) - 1);
       
        log_amx("%s (%s) gave %i XP to %s (%s)", name[0], steamid[0], CASH, name[1], steamid[1]);
       
        return PLUGIN_HANDLED;
}

public CmdRemoveCash(iPlayer, level, cid)
{
        if ( !cmd_access(iPlayer, level, cid, 3) ) return PLUGIN_HANDLED;
       
        static arg[35];
        read_argv(1, arg, sizeof(arg) - 1);
       
        new target = cmd_target(iPlayer, arg, CMDTARGET_OBEY_IMMUNITY|CMDTARGET_NO_BOTS|CMDTARGET_ALLOW_SELF);
        if( !target ) return PLUGIN_HANDLED;
       
        read_argv(2, arg, sizeof(arg) - 1);
        new Cash = str_to_num(arg);
       
        if ( Cash <= 0 ) return PLUGIN_HANDLED;
        g_iCash[target] -= Cash;
       
        new t_name[60];
        get_user_name(target, t_name, 59);

        client_print(iPlayer, print_console, "%s You removed %i cash from %s!", PREFIX, Cash, t_name);
       
        return PLUGIN_CONTINUE;
}

public bad_fix2() {
        new Float:gametime = get_gametime();
        if(gametime - g_gametime2 > 2.5)
                for(new i = 0; i < 32; i++)
                        grenade[i] = 0;
}

public eventFlash( id ) {
        new Float:gametime = get_gametime();
        if(gametime != g_gametime) {
                g_gametime = gametime;
                for(new i = 0; i < 33; i++)
                        g_track[i] = false;
                g_track_enemy = false;
        }   
        if(g_iItemLevel[id][NO_FLASH] >= 1) {
                g_track_enemy = true;

                message_begin(MSG_ONE, g_msgScreenFade, {0,0,0}, id);
                write_short(1);
                write_short(1);
                write_short(1);
                write_byte(0);
                write_byte(0);
                write_byte(0);
                write_byte(255);
                message_end();
        }
}

public flash_delay() {
        if(g_track_enemy == false) {
                for(new i = 0; i < 33; i++) {
                        if(g_track[i] == true && is_user_connected(i)) {
                                message_begin(MSG_ONE, g_msgScreenFade, {0,0,0}, i) ;
                                write_short(1);
                                write_short(1);
                                write_short(1);
                                write_byte(0);
                                write_byte(0);
                                write_byte(0);
                                write_byte(255);
                                message_end();
                        }
                }
        }
}

public grenade_throw2() {
        if(g_sync_check_data == 0)
                return PLUGIN_CONTINUE;
        g_sync_check_data--;
        if(read_datanum() < 2)
                return PLUGIN_HANDLED_MAIN;

        if(read_data(1) == 11 && (read_data(2) == 0 || read_data(2) == 1))
                add_grenade_owner(last);

        return PLUGIN_CONTINUE;
}

public fire_in_the_hole() {
        new name[32];
        read_data(3, name, 31);
        new temp_last = get_user_index(name);
        new junk;
        if((temp_last == 0) || (!is_user_connected(temp_last)))
                return PLUGIN_CONTINUE;
        if(get_user_weapon(temp_last,junk,junk) == CSW_FLASHBANG) {
                last = temp_last;
                g_sync_check_data = 2;
        }
        return PLUGIN_CONTINUE;
}

public fire_in_the_hole2() {
        new name[32];
        read_data(4, name, 31);
        new temp_last = get_user_index(name);
        new junk;
        if((temp_last == 0) || (!is_user_connected(temp_last)))
                return PLUGIN_CONTINUE;
        if(get_user_weapon(temp_last,junk,junk) == CSW_FLASHBANG) {   
                last = temp_last;
                g_sync_check_data = 2;
        }
        return PLUGIN_CONTINUE;
}

public add_grenade_owner(owner)
{
        new Float:gametime = get_gametime();
        g_gametime2 = gametime;
        for(new i = 0; i < 32; i++)
        {
                if(grenade[i] == 0)
                {
                        grenade[i] = owner;
                        return;
                }
        }
}

// from XxAvalanchexX "Flashbang Dynamic Light"
public fw_emitsound(entity,channel,const sample[],Float:volume,Float:attenuation,fFlags,pitch) {
        if(!equali(sample,"weapons/flashbang-1.wav") && !equali(sample,"weapons/flashbang-2.wav"))
                return FMRES_IGNORED;

        new Float:gametime = get_gametime();

        //in case no one got flashed, the sound happens after all the flashes, same game time
        if(gametime != g_gametime) {
                return FMRES_IGNORED;
        }
        return FMRES_IGNORED;
}
// NoFlash Blinding - End

public DoZoom2(id)
{
       
        if(        !is_user_alive(id)
        ||        get_pdata_float(id, m_flNextAttack, XTRA_OFS_PLAYER) >= 0.0
        ||        ~get_pdata_int(id, m_afButtonPressed, XTRA_OFS_PLAYER) & IN_ATTACK2
        &&        g_iItemLevel[id][SCOPE] <= 0 )
        {
                return 0;
        }
        else if(pev(id,pev_button) & IN_ATTACK2 && get_user_weapon(id) == CSW_DEAGLE && g_iItemLevel[id][SCOPE] >= 1)
        {
               
                new iFov
                switch( get_pdata_int(id, m_iFOV, XTRA_OFS_PLAYER) )
                {
                        case 40:iFov = 15
                        case 15:iFov = 0
                        default:iFov = 40
                }
       
                set_pev(id, pev_fov, iFov)
                set_pdata_int(id, m_iFOV, iFov, XTRA_OFS_PLAYER)
               
                set_pdata_float(id, m_flNextAttack, 0.25)
                emit_sound(id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100)
        }
        return PLUGIN_CONTINUE;
}

Print(iPlayer, const sMsg[], any:...)
{
        static i; i = iPlayer ? iPlayer : get_Player();
        if ( !i ) return;
       
        new sMessage[256];
        new len = formatex(sMessage, sizeof(sMessage) - 1, "^x04%s ", PREFIX);
        vformat(sMessage[len], sizeof(sMessage) - 1 - len, sMsg, 3);
        sMessage[192] = '^0';
               
        static msgid_SayText;
        if ( !msgid_SayText ) msgid_SayText = get_user_msgid("SayText");
       
        new const team_Names[][] =
        {
                "",
                "TERRORIST",
                "CT",
                "SPECTATOR"
        };
               
        new sTeam = get_user_team(i);
       
        team_Info(i, iPlayer, team_Names[0]);
               
        message_begin(iPlayer ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, msgid_SayText, _, iPlayer);
        write_byte(i);
        write_string(sMessage);
        message_end();
               
        team_Info(i, iPlayer, team_Names[sTeam]);
}

team_Info(receiver, sender, sTeam[])
{
        static msgid_TeamInfo;
        if ( !msgid_TeamInfo ) msgid_TeamInfo = get_user_msgid("TeamInfo");
       
        message_begin(sender ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, msgid_TeamInfo, _, sender);
        write_byte(receiver);
        write_string(sTeam);
        message_end();
}

get_Player()
{
        for ( new iPlayer = 1; iPlayer <= get_maxplayers(); iPlayer++ )
        {
                return iPlayer;
        }
       
        return 0;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1053\\ f0\\ fs16 \n\\ par }
*/


Hunter-Digital 09-11-2012 10:20

Re: Error 052: Multi-dimensional arrays must be fully initialized
 
Your g_iWeapShort array doesn't have all elements filled.
The same for all following arrays as well.
When you add enums to g_iWeapCount you need to add values to the all arrays that use it as well !

Also your g_iWeapCount's WEAPON_M4A1 enum is in the wrong place.

SkatInfinity 09-11-2012 10:49

Re: Error 052: Multi-dimensional arrays must be fully initialized
 
Thank you, so much! I finally got it fixed! :D


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

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