Jump to content
GIGN Forum

War3ft V3.0rc10


JAKuT
 Share

Recommended Posts

Lūdzu palīdziet man kāds.

Kā uz šitā war3 rc10 var uzlikt savu exp systemu... nu nevis lai tur baigi maz krāt vaig, bet daudz.

jo es negribu lai jau 1 dienā ir 10 lvl

Pimērs: 1lvl-2500 2lvl-7000 3lvl-25000 4lvl-60000 5lvl-125000 6lvl-240000 7lvl-420000 8lvl-600000 9lvl-800000 10lvl-1000000

Kā lai es tā uztaisu? varat lūdzu palīdzēt :(

Un pateikt kurā failā lai es mainu exp lai tā būtu, jo vsp nesaprotu!

un vēl par shopmenu un shopmenu2

ir 2 screen es gribu lai tā būtu es itkā uztaisīju lai tā rakstas, bet par to naudas izmaksu kur jādara??

Link to comment
Share on other sites

Rekur ir 2 faili, kuri es domāju ka šite kaut kur.

//    Warcraft 3 Frozen Throne Configuration File


// Saving Options

wc3_save_xp        1        // Enables saving of experience (default is 0)
wc3_save_xp_db        0        // How should we save XP? (0 = SQLite, 1 = MySQL)

wc3_save_by        2        // What should I save this as?  steam id = 0, IP = 1, name = 2 (default is 0)
wc3_save_pruning    0        // Automatically prunes the database of old users at a mapchange (default is 0)
wc3_days_before_delete    30        // However many days before deleting XP or pruning from the database (default is 31)
wc3_save_end_round    1        // Save xp at the end of each round (may cause lag, default is 1)


// SQL Database Information

wc3_sql_dbhost        "localhost"    // Host Name
wc3_sql_dbuser        "root"        // User Name
wc3_sql_dbpass        ""        // Password
wc3_sql_dbname        "war3ft"        // Database Name


// Admin Options

wc3_admin_flag        "m"        // Admin flag required to give/take XP (default is m)


// Experience Options

wc3_xp_multiplier    1.0        // set the level required to gain a level as a multiple (default 1.0)
wc3_xp_weap_multiplier    1        // Award XP based on the weapon used (default is 1)
wc3_min_players        2        // Minimum amount of players needed b4 awarding XP (default is 2)
wc3_ignore_bots        0        // Ignore bots, spectators, and HLTV when calculating minimum players required to gain XP? (default is 0)
wc3_xp_auto_average    0        // With this option set to 1, the joining players will receive the average amount of XP that all of the players have (SHORT TERM XP ONLY, default is 0)
wc3_show_objectives    1        // If enabled, will display message in chat to show XP they gain for completing certain objectives (default is 1)
wc3_show_kill_obj    0        // Shows how much XP you gain for killing someone (each kill, default is 0)
wc3_xp_radius        750        // Radius to give XP to teammates near where the special objective is completed (rescued hosties, bomb planted, killed vip, vip escaped, default is 750)


// Game Play Enhancements

wc3_races        8        // Number of races (if races are less than 5, the second shopmenu will be disabled (4 is standard war3), default is 8)
wc3_grenade_protection    0        // Only 1 HE grenade will be allowed for purchase per round (default is 0)
wc3_spec_position    0        // 0 is for left, 1 is for right (where to put the information for those spectating, default is 0)
wc3_buy_zone        0        // Restrict purchasing shopmenu items to within the buyzone? (default is 0)
wc3_buy_time        0        // Restrict purchasing shopmenu items to within the buytime? (default is 0)
wc3_buy_dead        1        // Allow users to purchause items when dead? (default is 1)
wc3_show_player        1        // Show teammate and enemy information in the center of the screen when they are on target? (not for DOD, default is 1)
wc3_query_client    1        // Check user's cl_minmodel cvar every second (default is 1)
wc3_cheats        0        // Enable cheats for wc3? (default is 0)
wc3_psychostats        1        // Print psychostats information to log files for wc3 abilities? (default is 0)
wc3_start_level        0        // What level should all players start at when joining? (default is 0)

// Icon Options (displayed above player's head)

wc3_race_icon        1        // Allow users to type /icons to show player icons above the player (default is 1)
wc3_level_icon        1        // Allow users to type /icons to see player levels above the player (default is 1)


// Chameleon Race Configuration Options - see _chameleon.txt for more information

wc3_cham_random        1        // Should the 9th race have random skills each round?, if so the next 4 option are irrelevant (default is 1)
wc3_cham_skill1        14        // What skill ID for skill 1?
wc3_cham_skill2        0        // What skill ID for skill 2?
wc3_cham_skill3        6        // What skill ID for skill 3?
wc3_cham_ultimate    7        // What skill ID for the user's ultimate?
wc3_cham_passive    20        // What skill ID for the user's passive skill?


// Skill and Ultimate configurations

wc3_ult_delay        10.0        // Amount of time (in seconds) to delay the ultimates at the start of each round (default is 15.0)
wc3_ult_cooldown    20.0        // Cooldown of all ultimates (default is 35.0)
wc3_blink_protection    0        // slays people who abuse blink on some maps (skywalking, map exploiting, default is 1)
wc3_blink_dizziness    0        // What type of diziness? (0 is flashbang effect, 1 is fading blue screen, default is 0)
wc3_entangle_drop    0        // Should the player's primary weapon be dropped when they are entangled? (default is 0)


// Item configurations

wc3_glove_timer        7        // Interval between receiving a new grenade with the Flaming Gloves of Warmth (default is 10)
wc3_glove_orc_damage    1        // When using gloves, should orcs be given the critical dmg? (Default is 0)
wc3_boots        0.30        // Percentage increase given by boots (.10 = 10%, default is 0.10)
wc3_claw        10        // Damage done by Claws of Attack (default is 6)
wc3_health        50        // Health bonus given for periapt of health (default is 15)
wc3_frost        80.0        // Speed of victim when attacked with Orb of Frost (default is 125.0)
wc3_mask        0.50        // Percentage of life gained back by mask of death (default is 0.3)
wc3_cloak        150        // Invisibility given with cloak, lower is more invisible (default is 150)
wc3_sock        0.8        // Gravity level for Sock of the Feather (default is 0.5)
wc3_tome        3        // XP given for purchasing tome of experience (default is 50)


// Bot Configuration Options

wc3_bot_buy_item    0.33        // Chance of a bot buying a shopmenu item at the beginning of the round (default is 0.33)


// DOD Options

wc3_dod_start_money    800        // Starting money for dod

un

/*
*    XP Functions
*/

#define XP_NEARBY_RADIUS        250

// START FROM CSX.INC - This is a hack b/c we can't include CSX and DODX in the same plugin :/
forward bomb_planting(planter);
forward bomb_planted(planter);
forward bomb_defusing(defuser);
forward bomb_defused(defuser);
// END FROM CSX.INC

// Called when a user begins defusing the bomb
public bomb_defusing( defuser )
{
    if ( !WC3_Check() )
    {
        return;
    }

    // Make sure that this isn't called more than once per round
    if ( !bHasBegunPlantingOrDefusing[defuser] )
    {
        new iBonusXP = XP_Give( defuser, DEFUSING_BOMB );

        if ( iBonusXP != 0 )
        {
            client_print( defuser, print_chat, "%s You have been awarded %d XP for starting to defuse the bomb", g_MODclient, iBonusXP );
        }
    }

    bHasBegunPlantingOrDefusing[defuser] = true;
}

// Called when a user defuses the bomb
public bomb_defused( defuser )
{
    if ( !WC3_Check() )
    {
        return;
    }

    new iBonusXP = XP_Give( defuser, DEFUSED_BOMB );

    if ( iBonusXP != 0 )
    {
        client_print( defuser, print_chat, "%s You have been awarded %d XP for defusing the bomb", g_MODclient, iBonusXP );
    }

    g_iPlayerRole[defuser] = 0;
}

// Called when a user begins planting the bomb
public bomb_planting( planter )
{
    if ( !WC3_Check() )
    {
        return;
    }

    // Make sure that this isn't called more than once per round
    if ( !bHasBegunPlantingOrDefusing[planter] )
    {
        new iBonusXP = XP_Give( planter, PLANTING_BOMB );

        if ( iBonusXP != 0 )
        {
            client_print( planter, print_chat, "%s You have been awarded %d XP for starting to plant the bomb", g_MODclient, iBonusXP );
        }
    }

    g_iPlayerRole[planter] = PLR_BOMB_PLANTER;
    bHasBegunPlantingOrDefusing[planter] = true;
}

// Called when a user has planted the bomb
public bomb_planted( planter )
{
    if ( !WC3_Check() )
    {
        return;
    }

    new iBonusXP = XP_Give( planter, PLANT_BOMB );

    if ( iBonusXP != 0 )
    {
        client_print( planter, print_chat, "%s You have been awarded %d XP for planting the bomb", g_MODclient, iBonusXP );
    }

    g_iPlayerRole[planter] = 0;
    p_data_b[planter][PB_ISPLANTING] = false;

    // Serpent Ward Check
    SH_BombPlanted();
}

// Called on certain player events
public on_PlayerAction()
{
    if ( !WC3_Check() )
    {
        return;
    }

    new sArg[64], sAction[64], sName[64];
    new iUserId, id;

    read_logargv( 0,sArg,64 );
    read_logargv( 2,sAction,64 );
    parse_loguser( sArg,sName,64,iUserId );
    id = find_player( "k", iUserId );

    if ( id == 0 )
    {
        return;
    }

    // If the round is over do not award XP!
    if ( g_EndRound )
    {
        return;
    }

    // Spawned with the bomb 
    if (equal(sAction,"Spawned_With_The_Bomb"))
    {
        g_iPlayerRole[id] = PLR_BOMB_CARRIER;
        new iBonusXP = XP_Give( id, SPAWN_BOMB );

        if ( iBonusXP != 0 && get_pcvar_num( CVAR_wc3_show_objectives ) )
        {
            client_print( id, print_chat, "%s You have been awarded %d XP for spawning with the bomb", g_MODclient, iBonusXP );
        }
    }
    // Dropped bomb 
    else if (equal(sAction,"Dropped_The_Bomb"))
    {
        g_iPlayerRole[id] = 0;
        new iBonusXP = XP_Give( id, -1 * BOMB_PICKUP );

        if ( iBonusXP != 0 && get_pcvar_num( CVAR_wc3_show_objectives ) )
        {
            client_print( id, print_chat, "%s You have lost %d XP for dropping the bomb", g_MODclient, -1 * iBonusXP );
        }
    }
    // Picked up bomb 
    else if (equal(sAction,"Got_The_Bomb"))
    { 
        g_iPlayerRole[id] = PLR_BOMB_CARRIER;
        new iBonusXP = XP_Give( id, BOMB_PICKUP );

        if ( iBonusXP != 0 && get_pcvar_num( CVAR_wc3_show_objectives ) )
        {
            client_print( id, print_chat, "%s You have been awarded %d XP for picking up the bomb", g_MODclient, iBonusXP );
        }
    }
    // Hostage touched 
    else if (equal(sAction,"Touched_A_Hostage"))
    {
        g_iPlayerRole[id] = PLR_HOSTAGE_RESCUER;
        new iBonusXP = XP_Give( id, TOUCH_HOSTAGE );

        if ( iBonusXP != 0 && get_pcvar_num( CVAR_wc3_show_objectives ) )
        {
            client_print( id, print_chat, "%s You have been awarded %d XP for starting to rescue a hostage", g_MODclient, iBonusXP );
        }
    }
    // Hostage rescued 
    else if (equal(sAction,"Rescued_A_Hostage"))
    {
        new iBonusXP = XP_Give( id, RESCUE_HOSTAGE );

        if ( iBonusXP != 0 && get_pcvar_num( CVAR_wc3_show_objectives ) )
        {
            client_print( id, print_chat, "%s You have been awarded %d XP for rescuing a hostage", g_MODclient, iBonusXP );
        }
    }
    // Hostage killed 
    else if (equal(sAction,"Killed_A_Hostage"))
    {
        new iBonusXP = XP_Give( id, -1 * KILL_HOSTAGE );

        if ( iBonusXP != 0 && get_pcvar_num( CVAR_wc3_show_objectives ) )
        {
            client_print( id, print_chat, "%s You have lost %d XP for killing a hostage", g_MODclient, -1 * iBonusXP );
        }
    }
    // VIP spawn 
    else if (equal(sAction,"Became_VIP"))
    { 
        g_iPlayerRole[id] = PLR_VIP;
        new iBonusXP = XP_Give( id, SPAWN_VIP );

        if ( iBonusXP != 0 && get_pcvar_num( CVAR_wc3_show_objectives ) )
        {
            client_print( id, print_chat, "%s You have gained %d XP for spawning as the VIP", g_MODclient, iBonusXP );
        }
    }
    // VIP escaped 
    else if (equal(sAction,"Escaped_As_VIP"))
    {
        new iBonusXP = XP_Give( id, ESCAPE_VIP );

        if ( iBonusXP != 0 && get_pcvar_num( CVAR_wc3_show_objectives ) )
        {
            client_print( id, print_chat, "%s You have gained %d XP for escaping as the VIP", g_MODclient, iBonusXP );
        }
    }
}

XP_onDeath( iVictim, iAttacker, iWeaponIndex, iHeadshot )
{

    // We don't want to give XP to the world
    if ( iAttacker == 0 )
    {
        return;
    }

    // We don't want to give XP to suiciders
    else if ( iAttacker == iVictim )
    {
        return;
    }
    
    new iLevel = p_data[iVictim][P_LEVEL]
    new iBonusXP, iXP = floatround( XP_GivenByLevel( iLevel ) * fWpnXPMultiplier[iWeaponIndex] );

    // Check for a team kill
    if ( get_user_team( iAttacker ) == get_user_team( iVictim ) )
    {
        // Remove XP since he killed his teammate
        iBonusXP = XP_Give( iAttacker, -1 * iXP );

        // This message should be displayed no matter what XP_kill_objectives is, b/c it's a no-no
        if ( iBonusXP != 0 )
        {
            client_print( iAttacker, print_chat, "%s You have lost %d XP for killing a teammate", g_MODclient, -1 * iBonusXP );
        }

    }

    // Otherwise the player killed the other team
    else
    {
        // Award XP for a kill
        iBonusXP = XP_Give( iAttacker, iXP );
        
        if ( iBonusXP != 0 && get_pcvar_num( CVAR_wc3_show_kill_obj ) )
        {
            client_print( iAttacker, print_chat, "%s You have been awarded %d XP for killing the enemy", g_MODclient, iBonusXP );
        }

        // User had a headshot?  Give bonus XP!
        if ( iHeadshot )
        {
            iBonusXP = XP_Give( iAttacker, KILL_HEADSHOT );
            
            if ( iBonusXP != 0 && get_pcvar_num( CVAR_wc3_show_kill_obj ) )
            {
                client_print( iAttacker, print_chat, "%s You have been awarded %d XP for getting a headshot", g_MODclient, iBonusXP );
            }
        }

        new iAssistLevel, iAssistXP, iVictimMaxHealth;
        new Float:fMultiplier;

        // Award XP for other people doing damage to this victim
        for ( new i = 0; i < MAXPLAYERS; i++ )
        {
            // Then this player dealt some damage to this player this round
            if ( g_iDamageDealt[i][iVictim] > 0 && iAttacker != i )
            {
                iVictimMaxHealth = get_user_maxhealth( iVictim );
                fMultiplier = float( g_iDamageDealt[i][iVictim] ) / float( iVictimMaxHealth );
                
                iAssistLevel = p_data[i][P_LEVEL];
                iAssistXP = XP_GivenByLevel( iAssistLevel );

                // Need a ratio of XP to award to person who dealt damage
                iBonusXP = XP_Give( i, ( floatround( float( iAssistXP ) * fMultiplier ) / 2 ) );

                if ( iBonusXP != 0 && get_pcvar_num( CVAR_wc3_show_kill_obj ) )
                {
                    client_print( i, print_chat, "%s You have been awarded %d XP for a kill assist!", g_MODclient, iBonusXP );
                }

                // victim may respawn, so reset the counter
                g_iDamageDealt[i][iVictim] = 0;
            }
        }

        if ( g_MOD == GAME_CSTRIKE || g_MOD == GAME_CZERO )
        {
            
            // User killed a hostage rescuer
            if ( g_iPlayerRole[iVictim] == PLR_HOSTAGE_RESCUER )
            {
                iBonusXP = XP_Give( iAttacker, KILL_HOSTAGE_SAVER );
                
                if ( iBonusXP != 0 && get_pcvar_num( CVAR_wc3_show_kill_obj ) )
                {
                    client_print( iAttacker, print_chat, "%s You have been awarded %d XP for killing the hostage rescuer", g_MODclient, iBonusXP );
                }
            }
            // User killed the bomb defuser
            else if ( g_iPlayerRole[iVictim] == PLR_BOMB_DEFUSER )
            {
                iBonusXP = XP_Give( iAttacker, KILL_DEFUSER );
                
                if ( iBonusXP != 0 && get_pcvar_num( CVAR_wc3_show_kill_obj ) )
                {
                    client_print( iAttacker, print_chat, "%s You have been awarded %d XP for killing the bomb defuser", g_MODclient, iBonusXP );
                }
            }
            // User killed the bomb planter
            else if ( g_iPlayerRole[iVictim] == PLR_BOMB_PLANTER )
            {
                iBonusXP = XP_Give( iAttacker, KILL_PLANTER );
                
                if ( iBonusXP != 0 && get_pcvar_num( CVAR_wc3_show_kill_obj ) )
                {
                    client_print( iAttacker, print_chat, "%s You have been awarded %d XP for killing the bomb planter", g_MODclient, iBonusXP );
                }
            }
            // User killed the bomb carrier
            else if ( g_iPlayerRole[iVictim] == PLR_BOMB_CARRIER )
            {
                iBonusXP = XP_Give( iAttacker, KILL_BOMB_CARRIER );
                
                if ( iBonusXP != 0 && get_pcvar_num( CVAR_wc3_show_kill_obj ) )
                {
                    client_print( iAttacker, print_chat, "%s You have been awarded %d XP for killing the bomb carrier", g_MODclient, iBonusXP );
                }
            }
            // user killed the VIP
            else if ( g_iPlayerRole[iVictim] == PLR_VIP )
            {
                iBonusXP = XP_Give( iAttacker, KILL_VIP );
                
                if ( iBonusXP != 0 && get_pcvar_num( CVAR_wc3_show_objectives ) )
                {
                    client_print( iAttacker, print_chat, "%s You have been awarded %d XP for killing the VIP", g_MODclient, iBonusXP );
                }
            }
        }
        

        else if ( g_MOD == GAME_DOD )
        {


        }

        // Player died, so lets reset their data
        g_iPlayerRole[iVictim] = 0;
    }
}


XP_WinRound( iWinner )
{
    
    new players[32], numberofplayers, i, id;
    get_players( players, numberofplayers );

    for ( i = 0; i < numberofplayers; i++ )
    {
        id = players[i];

        // Is the user on the correct team?
        if ( get_user_team( id ) == iWinner )
        {

            new iBonusXP = XP_Give( id, WIN_ROUND );

            if ( get_pcvar_num( CVAR_wc3_show_objectives ) )
            {                
                client_print( id, print_chat, "%s %L", g_MODclient, id, "AWARD_FOR_WINNING_ROUND", iBonusXP );
            }
        }
    }
}

XP_GetByLevel( iLevel )
{
    if ( iLevel < 0 || iLevel > 10 )
    {
        return 0;
    }

    // Change based on XP multiplier!
    new Float:fXPMult = get_pcvar_float( CVAR_wc3_xp_multiplier );

    if ( get_pcvar_num( CVAR_wc3_save_xp ) )
    {
        return floatround( iXPLevelSaved[iLevel] * fXPMult );
    }

    return floatround( iXPLevelShortTerm[iLevel] * fXPMult );
}


XP_GivenByLevel( iLevel )
{
    if ( iLevel < 0 || iLevel > 10 )
    {
        return 0;
    }

    if ( get_pcvar_num( CVAR_wc3_save_xp ) )
    {
        return iXPGivenSaved[iLevel];
    }

    return iXPGivenShortTerm[iLevel];
}

bool:XP_MinPlayers()
{
    new iNum = 0;

    // Don't ignore bots
    if ( get_pcvar_num( CVAR_wc3_ignore_bots ) == 0 )
    {
        iNum = get_playersnum();
    }

    // Ignore bots, spectators, and HLTV
    else
    {
        new players[32];
        if ( g_MOD == GAME_CSTRIKE || g_MOD == GAME_CZERO )
        {
            new iNumCT;
            get_players( players, iNum, "ce", "TERRORIST" );
            get_players( players, iNumCT, "ce", "CT" );
            iNum += iNumCT;
        }

        else if ( g_MOD == GAME_DOD )
        {
            new iNumAxis;
            get_players( players, iNum, "ce", "Allies" );
            get_players( players, iNumAxis, "ce", "Axis" );
            iNum += iNumAxis;
        }
    }

    if ( iNum < get_pcvar_num( CVAR_wc3_min_players ) )
    {
        return false;
    }

    return true;
}

// Function will verify if the user's level/information is correct and checks to see if the user has gained a level
XP_Check( id, bShowGained = true )
{
    new iOldLevel = p_data[id][P_LEVEL], i;
    
    // Make sure the user doesn't have negative experience
    if ( p_data[id][P_XP] < 0 )
    {
        p_data[id][P_XP] = 0;
    }

    // Determine what the user's level should be
    for ( i = 0; i <= MAX_LEVELS; i++ )
    {
        // User has enough XP to advance to the next level
        if ( p_data[id][P_XP] >= XP_GetByLevel( i ) )
        {
            p_data[id][P_LEVEL] = i;
        }

        // On this increment the user doesn't have enough XP to advance to the next level
        else
        {
            break;
        }
    }

    // User gained a level
    if ( p_data[id][P_LEVEL] > iOldLevel && p_data[id][P_RACE] != 0 && bShowGained )
    {
        WC3_StatusText( id, TXT_TOP_CENTER, "%L", id, "YOU_GAINED_A_LEVEL" );
        
        // Only play the sound if the user is alived!!
        if ( is_user_alive( id ) )
        {
            emit_sound( id, CHAN_STATIC, g_szSounds[SOUND_LEVELUP], 1.0, ATTN_NORM, 0, PITCH_NORM );
        }
    }

    // We might need to lower the skills the user has ( can occur if you load XP info from a database and the XP multiplier has changed )
    new iSkillsUsed = SM_TotalSkillPointsUsed( id );
    new iSkillID, iSkillLevel;
    new bool:bSkillRemoved = false;

    while ( iSkillsUsed > p_data[id][P_LEVEL] )
    {
        // We might need to remove the ult first!
        if ( p_data[id][P_LEVEL] < MIN_ULT_LEVEL )
        {
            new iUltimateID = SM_GetSkillOfType( id, SKILL_TYPE_ULTIMATE );
            
            // Then we need to remove this!
            if ( SM_GetSkillLevel( id, iUltimateID, 0 ) == 1 )
            {
                // Remove the ult
                SM_SetSkillLevel( id, iUltimateID, 0, 0 );

                bSkillRemoved = true;

                // Clear ult icon!
                ULT_ClearIcons( id );

                // Get our current skills used
                iSkillsUsed = SM_TotalSkillPointsUsed( id );

                // Restart the loop!
                continue;
            }
        }

        iSkillID = SM_GetRandomSkill( id );
        iSkillLevel = SM_GetSkillLevel( id, iSkillID, 1 );

        // We don't want a passive skill or a skill that is level 0 so keep trying
        while ( SM_GetSkillType( iSkillID ) == SKILL_TYPE_PASSIVE || iSkillLevel == 0 )
        {
            iSkillID = SM_GetRandomSkill( id );
            iSkillLevel = SM_GetSkillLevel( id, iSkillID, 2 );
        }
        
        // OK at this point we have a valid skill, lets remove a level!
        SM_SetSkillLevel( id, iSkillID, iSkillLevel - 1, 1 );

        bSkillRemoved = true;

        // Get our current skills used
        iSkillsUsed = SM_TotalSkillPointsUsed( id );
    }
    
    // Need to reset all skill data for the given race if we've removed a skill
    if ( bSkillRemoved )
    {
        WC3_InitPlayerSkills( id );
    }

    // OK lets check the total skills the user has, and maybe show them the selectskills menu
    new iTotalSkillsUsed = SM_TotalSkillPointsUsed( id );

    if ( iTotalSkillsUsed < p_data[id][P_LEVEL] )
    {
        MENU_SelectSkill( id );
    }

    WC3_ShowBar( id );
}

XP_Configure()
{

    // Configure based on weapon multiplier

    // Counter-Strike and Condition Zero weapons
    if ( g_MOD == GAME_CSTRIKE || g_MOD == GAME_CZERO )
    {
        fWpnXPMultiplier[CSW_USP            ]    = 2.5;
        fWpnXPMultiplier[CSW_DEAGLE            ]    = 2.5;
        fWpnXPMultiplier[CSW_GLOCK18        ]    = 2.5;
        fWpnXPMultiplier[CSW_ELITE            ]    = 3.5;
        fWpnXPMultiplier[CSW_P228            ]    = 2.5;
        fWpnXPMultiplier[CSW_FIVESEVEN        ]    = 2.5;

        fWpnXPMultiplier[CSW_XM1014            ]    = 1.25;
        fWpnXPMultiplier[CSW_M3                ]    = 1.5;

        fWpnXPMultiplier[CSW_MP5NAVY        ]    = 1.0;
        fWpnXPMultiplier[CSW_UMP45            ]    = 1.25;
        fWpnXPMultiplier[CSW_P90            ]    = 1.25;
        fWpnXPMultiplier[CSW_TMP            ]    = 1.5;
        fWpnXPMultiplier[CSW_MAC10            ]    = 1.5;
        fWpnXPMultiplier[CSW_GALIL            ]    = 1.15;
        fWpnXPMultiplier[CSW_FAMAS            ]    = 1.15;

        fWpnXPMultiplier[CSW_AWP            ]    = 1.0;
        fWpnXPMultiplier[CSW_M4A1            ]    = 1.0;
        fWpnXPMultiplier[CSW_AK47            ]    = 1.0;
        fWpnXPMultiplier[CSW_AUG            ]    = 1.0;
        fWpnXPMultiplier[CSW_SG552            ]    = 1.0;
        fWpnXPMultiplier[CSW_G3SG1            ]    = 1.0;
        fWpnXPMultiplier[CSW_SG550            ]    = 1.0;
        fWpnXPMultiplier[CSW_M249            ]    = 1.25;
        fWpnXPMultiplier[CSW_SCOUT            ]    = 3.0;

        fWpnXPMultiplier[CSW_HEGRENADE        ]    = 1.75;
        fWpnXPMultiplier[CSW_KNIFE            ]    = 6.0;

        fWpnXPMultiplier[CSW_C4                ]    = 2.0;
        fWpnXPMultiplier[CSW_SMOKEGRENADE    ]    = 1.0;
        fWpnXPMultiplier[CSW_FLASHBANG        ]    = 1.0;
    }

    // Day of Defeat weapons
    else if ( g_MOD == GAME_DOD )
    {
        fWpnXPMultiplier[DODW_AMERKNIFE            ] = 6.0;
        fWpnXPMultiplier[DODW_GERKNIFE            ] = 6.0;
        fWpnXPMultiplier[DODW_BRITKNIFE            ] = 6.0;
        fWpnXPMultiplier[DODW_GARAND_BUTT        ] = 6.0;

        fWpnXPMultiplier[DODW_HANDGRENADE        ] = 1.75;
        fWpnXPMultiplier[DODW_STICKGRENADE        ] = 1.75;
        fWpnXPMultiplier[DODW_STICKGRENADE_EX    ] = 1.75;
        fWpnXPMultiplier[DODW_HANDGRENADE_EX    ] = 1.75;

        fWpnXPMultiplier[DODW_COLT                ] = 1.0;
        fWpnXPMultiplier[DODW_LUGER                ] = 1.0;
        fWpnXPMultiplier[DODW_GARAND            ] = 1.0;
        fWpnXPMultiplier[DODW_SCOPED_KAR        ] = 1.0;
        fWpnXPMultiplier[DODW_THOMPSON            ] = 1.0;
        fWpnXPMultiplier[DODW_STG44                ] = 1.0;
        fWpnXPMultiplier[DODW_SPRINGFIELD        ] = 1.0;
        fWpnXPMultiplier[DODW_KAR                ] = 1.0;
        fWpnXPMultiplier[DODW_BAR                ] = 1.0;
        fWpnXPMultiplier[DODW_MP40                ] = 1.0;
        fWpnXPMultiplier[DODW_MG42                ] = 1.0;
        fWpnXPMultiplier[DODW_30_CAL            ] = 1.0;
        fWpnXPMultiplier[DODW_SPADE                ] = 1.0;
        fWpnXPMultiplier[DODW_M1_CARBINE        ] = 1.0;
        fWpnXPMultiplier[DODW_MG34                ] = 1.0;
        fWpnXPMultiplier[DODW_GREASEGUN            ] = 1.0;
        fWpnXPMultiplier[DODW_FG42                ] = 1.0;
        fWpnXPMultiplier[DODW_K43                ] = 1.0;
        fWpnXPMultiplier[DODW_ENFIELD            ] = 1.0;
        fWpnXPMultiplier[DODW_STEN                ] = 1.0;
        fWpnXPMultiplier[DODW_BREN                ] = 1.0;
        fWpnXPMultiplier[DODW_WEBLEY            ] = 1.0;
        fWpnXPMultiplier[DODW_BAZOOKA            ] = 1.0;
        fWpnXPMultiplier[DODW_PANZERSCHRECK        ] = 1.0;
        fWpnXPMultiplier[DODW_PIAT                ] = 1.0;
        fWpnXPMultiplier[DODW_SCOPED_FG42        ] = 1.0;
        fWpnXPMultiplier[DODW_FOLDING_CARBINE    ] = 1.0;
        fWpnXPMultiplier[DODW_KAR_BAYONET        ] = 1.0;
        fWpnXPMultiplier[DODW_SCOPED_ENFIELD    ] = 1.0;
        fWpnXPMultiplier[DODW_MILLS_BOMB        ] = 1.0;
        fWpnXPMultiplier[DODW_ENFIELD_BAYONET    ] = 1.0;
        fWpnXPMultiplier[DODW_MORTAR            ] = 1.0;
        fWpnXPMultiplier[DODW_K43_BUTT            ] = 1.0;
    }

    fWpnXPMultiplier[CSW_WORLDSPAWN        ]    = 0.0;
    fWpnXPMultiplier[CSW_LIGHTNING        ]    = 1.0;
    fWpnXPMultiplier[CSW_SUICIDE        ]    = 1.0;
    fWpnXPMultiplier[CSW_IMMOLATE        ]    = 1.0;
    fWpnXPMultiplier[CSW_LOCUSTS        ]    = 1.0;
    fWpnXPMultiplier[CSW_SERPENTWARD    ]    = 1.0;
    fWpnXPMultiplier[CSW_SHADOW            ]    = 1.0;    
    fWpnXPMultiplier[CSW_THORNS            ]    = 1.0;
    fWpnXPMultiplier[CSW_CARAPACE        ]    = 1.0;
    fWpnXPMultiplier[CSW_CARRION        ]    = 1.0;
    fWpnXPMultiplier[CSW_ORB            ]    = 1.0;
    fWpnXPMultiplier[CSW_CONCOCTION        ]    = 1.0;
    fWpnXPMultiplier[CSW_BANISH            ]    = 1.0;
}

// Reset the user's XP to 0
public XP_Reset(id)
{

    p_data[id][P_LEVEL]        = 0;
    p_data[id][P_XP]        = 0;
    SM_ResetSkillLevels( id );

    // Save after resetting the user's XP
    DB_SaveXP( id, true );

    WC3_ShowBar( id );

    client_print( id, print_chat, "%s %L", g_MODclient, id, "YOUR_XP_HAS_BEEN_RESET" );

    // Reset the skills...

    SHARED_INVIS_Set( id );

    // Undead's Unholy Aura
    SHARED_SetGravity( id );

    // Set the user's speed
    SHARED_SetSpeed( id );

    return PLUGIN_CONTINUE;
}    

// Function from war3x thanks ryan!!!
public XP_GetAdminFlag()
{

    new szFlags[24];
    get_pcvar_string( CVAR_wc3_admin_flag, szFlags, 23 );

    return ( read_flags( szFlags ) );
}

stock XP_Give( id, iBonusXP )
{

    if ( !WC3_Check() || !id )
    {
        return 0;
    }

    // Make sure we have the minimum amount of players
    if ( !XP_MinPlayers() )
    {
        return 0;
    }

    // Bonus calculated by:
    // Bonus XP * (lvl of player/10 + 1.0)
    // I.E. if Player is level 10, then it will be Bonus XP * 2.0
    
    if ( iBonusXP != 0 )
    {
        new Float:fCurrentLevel = float( p_data[id][P_LEVEL] );
        new Float:iLevelMultiplier = ( fCurrentLevel / 10.0 ) + 1.0;
        new iRealBonusXP = floatround(iLevelMultiplier * iBonusXP);
        
        p_data[id][P_XP] += iRealBonusXP;

        XP_Check( id );

        return iRealBonusXP;
    }

    return 0;
}

Edited by JAKuT
Link to comment
Share on other sites

Vēl atradu.. bet nezinu kā būtu pareizi.. ;/

/*
*    XP Header File
*/

// Objective Modifiers
#define DEFUSING_BOMB        10            // XP awarded when the user starts to defuse the bomb
#define DEFUSED_BOMB        20            // XP awarded when the user defuses the bomb
#define PLANTING_BOMB        10            // XP awarded when the user starts planting the bomb
#define PLANT_BOMB            20            // XP awarded when the user plants the bomb
#define SPAWN_BOMB            10            // XP awarded when the user spawns with the bomb
#define BOMB_PICKUP            10            // XP awarded when the user picks up the bomb
#define TOUCH_HOSTAGE        10            // XP awarded when the user touches a hostage
#define RESCUE_HOSTAGE        20            // XP awarded when the user rescues the hostage
#define KILL_HOSTAGE        10            // XP lost when killing a hostage
#define SPAWN_VIP            10            // XP awarded for spawning as the VIP
#define ESCAPE_VIP            20            // XP awarded for escaping as the VIP
#define OBJ_RADIUS            500            // Nearby radius to award XP for helping complete objectives

// Kill modifiers
#define KILL_HEADSHOT        10            // XP awarded for getting a headshot
#define KILL_HOSTAGE_SAVER    10            // XP awarded for killing the hostage saver
#define    KILL_DEFUSER        10            // XP awarded for killing the defuser
#define KILL_PLANTER        10            // XP awarded for killing the planter
#define KILL_BOMB_CARRIER    10            // XP awarded for killing the bomb carrier
#define KILL_VIP            20            // XP awarded for killing the VIP
#define KILL_RADIUS            250            // Nearby radius to award XP

#define WIN_ROUND            20            // XP awarded for winning the round


// Holds information about the player
enum
{
    PLR_BOMB_DEFUSER = 1,
    PLR_BOMB_PLANTER,
    PLR_HOSTAGE_RESCUER,
    PLR_VIP,
    PLR_BOMB_CARRIER,
};

new g_iPlayerRole[33];
new bool:bHasBegunPlantingOrDefusing[33];

// Holds the XP Multipliers per weapon
new Float:fWpnXPMultiplier[CSW_WAR3_MAX+1] =        {1.0};

// Amount of XP needed to gain a level
new iXPLevelShortTerm[11]                = {0,150,300,600,1000,1500,2100,2800,3400,4500,5500};
new iXPLevelSaved[11]                    = {0,100,200,400,800,1600,3200,6400,12800,25600,51200};

// Amount of XP awarded when killing a user of this level
new iXPGivenShortTerm[11]                = {10,15,25,35,40,50,60,70,80,90,95};
new iXPGivenSaved[11]

Link to comment
Share on other sites

  • 1 year later...

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...