Raised This Month: $ Target: $400
 0% 

[Help]How Do i Set X Class to T and Y Class To Ct


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
2reason2kill
Senior Member
Join Date: Feb 2011
Old 08-06-2011 , 08:32   Re: [Help]How Do i Set X Class to T and Y Class To Ct
Reply With Quote #10

Quote:
Originally Posted by abdul-rehman View Post
Show full code, i m pretty sure round start event doesnt pass a player id, so you have to loop through all of them.
This Code Was My First So The Code will Be Ugly...

PHP Code:
#pragma semicolon 1

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

#define MAXCLASSES 3
#define PREFIX "[Knife Mod]"

enum {
    
PLAYERLEVEL_1,
    
PLAYERLEVEL_2,
    
PLAYERLEVEL_3// How many Levels
    
PLAYERLEVEL_4,
    
PLAYERLEVEL_5,
    
PLAYERLEVEL_6,
    
PLAYERLEVEL_7,
    
PLAYERLEVEL_8,
    
PLAYERLEVEL_9,
    
PLAYERLEVEL_10
}
enum {
    
CLASS_None 0,
    
CLASS_SpeedKnifer,
    
CLASS_HighGravity
}


new 
teleport_counter;
new 
Float:g_lastusetime[33];

new 
pcv_teleport_cooldown;

new 
BubbleSprite;


new const 
CLASSES[MAXCLASSES][] = {
    
"None",
    
"Speed Knifer",
    
"High Gravity"

};

new const 
LEVELS[10] = {
    
0
    
200
    
400
    
800,
    
1600,
    
3200,
    
5400,
    
6400,
    
7950,
    
10000
    
};

new 
PlayerXP[33], PlayerLevel[33], PlayerClass[33];
new 
gCvar_KillgCvar_KnifegCvar_HSgCvar_Enableg_Vault;
new 
bool:NewClass[33];

public 
plugin_init() {
    
register_plugin("Knife Mod""1.0""2Reason2Kill");
    
    
RegisterHam(Ham_Spawn"player""fwdPlayerSpawn"1);

    
register_event("DeathMsg""eDeath""a");
    
register_event("ResetHUD""skill""be"); 
    
register_logevent("RoundStart"2"1=RoundStart");

    
gCvar_Enable    register_cvar("xp_save""1");
    
gCvar_Kill    register_cvar("xp_per_kill""20");
    
gCvar_HS    register_cvar("xp_hs_bonus""20");
    
gCvar_Knife    register_cvar("xp_Knife_bonus""20");
    
g_Vault        nvault_open("animod");
   
    
    
pcv_teleport_cooldown register_cvar("xp_teleport_cooldown""10");
    
    
register_concmd("amx_take_exp""cmd_take_exp"ADMIN_KICK"<target> <amount>"); 
    
register_concmd("amx_give_exp""cmd_give_exp"ADMIN_KICK"<target> <amount>");
    
    
register_clcmd("say Changeclass",    "ChangeClass");
    
register_clcmd("say_team Changeclass""ChangeClass");
    
register_clcmd("say xp",    "ShowHud");
    
register_clcmd("say_team /xp",    "ShowHud");
    
register_clcmd("say class",    "ChangeClass");
    
register_clcmd("say_team /class""ChangeClass");
    
register_clcmd("say exp",    "ShowHud");
    
register_clcmd("say_team /exp",    "ShowHud");
    
register_clcmd("jump""ActivateTeleport");
    
register_event("CurWeapon""event_curweap on""be""1=1");
    
register_clcmd("/help""Help");
}
public 
plugin_precache()
{
    
precache_sound("warcraft3/blinkarrival.wav");
    
    
BubbleSprite precache_model("sprites/blueflare2.spr");
}

public 
fwdPlayerSpawn(id)
{
    if(
NewClass[id])
    {
        
ShowMenu(id);
    }
    else
    {
        
ShowHud(id);
        
skill(id);
    }
}

public 
Help(id)
{
    
show_motd(id"Help.txt" "How To Play?");
}

public 
eDeath()
{
    new 
attacker read_data);
    new 
headshot read_data);
    new 
clipammoweapon get_user_weapon(attackerclipammo);

    
PlayerXP[attacker] += get_pcvar_num(gCvar_Kill);

    if(
headshot)
        
PlayerXP[attacker] += get_pcvar_num(gCvar_HS);

    if(
weapon == CSW_KNIFE)
        
PlayerXP[attacker] += get_pcvar_num(gCvar_Knife);

    
ShowHud(attacker);
    
SaveData(attacker);
    
    
CheckLevel(attacker);
}

public 
CheckLevel(id)
{
    while(
PlayerXP[id] >= LEVELS[PlayerLevel[id]])
    {
        
PlayerLevel[id] += 1;
        if(
PlayerLevel[id] != 1)
        {
            
client_printidprint_chat"%s Congratulations! You are a level %i %s!"PREFIXPlayerLevel[id], CLASSES[PlayerClass[id]]);
        }
    }
    
    
ShowHud(id);
}

public 
ShowHud(id)
{
    
set_hudmessage(255000.750.0106.015.0);
    
show_hudmessage(id"Level: %i^nXP: %i^nClass: %s"PlayerLevel[id], PlayerXP[id], CLASSES[PlayerClass[id]]);
}

public 
ChangeClass(id)
{
    if(
is_user_alive(id))
    {
        
NewClass[id] = true;
        
client_printidprint_chat"%s You can choose a new class upon spawn."PREFIX);
    }
    else
    {
        
ShowMenu(id);
    }

    return 
PLUGIN_CONTINUE;
}

public 
ShowMenu(id)
{
    new 
menu menu_create("Class Menu" "Class_Handle");
    
menu_additem(menu ,"Speed Knifer""1" 0);
    
menu_additem(menu ,"Hige Gravity""2" 0);
    
menu_additem(menu ,"Jumper""3" 0);
    
menu_additem(menu ,"High HP""4" 0);

    
menu_setprop(menu MPROP_EXIT MEXIT_ALL);
    
menu_display(id menu 0);

    return 
PLUGIN_CONTINUE;
}

public 
Class_Handle(id menu item)  {
    if(
item == MENU_EXIT
        
menu_destroy(menu);

    new 
szCommand[6] , szName[64];
    new 
access callback;

    
menu_item_getinfo(menu item access szCommand szName 63 callback);

    new 
str_to_num(szCommand);
    if(
PlayerClass[id] != i
    {
        
PlayerClass[id] = i;
    
        
client_printidprint_chat"%s You are now a %s"PREFIXCLASSES[i]);
    

    } 
    else
    {
        
client_printidprint_chat"%s You are already a %s"PREFIXCLASSES[i]);
    }
    
    
ShowHud(id);
    
CheckLevel(id);
    
NewClass[id] = false;
    
menu_destroy(menu);
    return 
PLUGIN_CONTINUE;
}

public 
client_connect(id)
{
    if(
get_pcvar_num(gCvar_Enable) == 1)
        
LoadData(id);
        
    
NewClass[id] = true;
}

public 
client_disconnect(id)
{
    if(
get_pcvar_num(gCvar_Enable) == 1)
        
SaveData(id);

    
PlayerXP[id]    = 0;
    
PlayerLevel[id]    = 0;
    
PlayerClass[id]    = 0;
}

public 
SaveData(id) {
    new 
AuthID[35];
    
get_user_authid(idAuthID34);
    
    new 
vaultkey[64], vaultdata[256];
    
format(vaultkey63"%s-Mod"AuthID);
    
format(vaultdata255"%i#%i#"PlayerXP[id], PlayerLevel[id]);
    
nvault_set(g_Vaultvaultkeyvaultdata);
    return 
PLUGIN_CONTINUE;
}

public 
LoadData(id) {
    new 
AuthID[35];
    
get_user_authid(id,AuthID,34);
    
    new 
vaultkey[64], vaultdata[256];
    
format(vaultkey63"%s-Mod"AuthID);
    
format(vaultdata255"%i#%i#"PlayerXP[id], PlayerLevel[id]);
    
nvault_get(g_Vaultvaultkeyvaultdata,255);

    
replace_all(vaultdata255"#"" ");

    new 
playerxp[32], playerlevel[32];

    
parse(vaultdataplayerxp31playerlevel31);

    
PlayerXP[id] = str_to_num(playerxp);
    
PlayerLevel[id] = str_to_num(playerlevel);

    return 
PLUGIN_CONTINUE;
}

// Give/Take XP addaon by [X]-RayCat
public cmd_give_expidlevel,cid ) {
    if( ! 
cmd_access idlevelcid) )
        return 
PLUGIN_HANDLED;

    new 
target[32], amount[21], reason[21];

    
read_argv1target31 );
    
read_argv(2amount20 );
    
read_argv3reason20 );

    new 
player cmd_targetidtarget);

    if( ! 
player 
        return 
PLUGIN_HANDLED;

    new 
admin_name[32], player_name[32];
    
get_user_nameidadmin_name31 );
    
get_user_nameplayerplayer_name31 );

    new 
expnum str_to_numamount );

    
PlayerXP[player] += expnum;

    switch( 
get_cvar_num "amx_show_activity" ) ) 
    {
        case 
1client_print0print_chat"ADMIN: gave %i points for %s."expnumplayer_name );
        case 
2client_print0print_chat"ADMIN %s: gave %i points for %s."admin_nameexpnumplayer_name );
    }

    
client_printplayerprint_chat"[%s] You received %i points. (Total: %d)"PREFIXexpnumPlayerXP[player] );
    
SaveDataid );

    return 
PLUGIN_CONTINUE;
}
 
public 
cmd_take_expidlevel,cid ) {
    if( ! 
cmd_access idlevelcid) )
       return 
PLUGIN_HANDLED;

    new 
target[32], amount[21], reason[21];

    
read_argv1target31 );
    
read_argv2amount20 );
    
read_argv3reason20 );

    new 
player cmd_targetidtarget);

    if( ! 
player 
       return 
PLUGIN_HANDLED;

    new 
admin_name[32], player_name[32];
    
get_user_nameidadmin_name31 );
    
get_user_nameplayerplayer_name31 );

    new 
expnum str_to_numamount );

    
PlayerXP[player] -= expnum;

    switch(
get_cvar_num("amx_show_activity"))
    {
        case 
1client_print0print_chat"ADMIN: took %i points from %s."expnumplayer_name );
        case 
2client_print0print_chat"ADMIN %s: took %i points from %s."admin_nameexpnumplayer_name );
    }

    
client_printplayerprint_chat"%s You lost %i points. (Total: %d)"PREFIXexpnumPlayerXP[player] );
    
SaveDataid );

    return 
PLUGIN_CONTINUE;
}  
public 
skill(id)
{
    if(!
is_user_alive(id))
        return 
0;
    

    if (
PlayerClass[id] == CLASS_HighGravity)
    {
        switch(
PlayerLevel[id])
        {
            case 
1,2
            {
                
//Level 1 and 2
                
set_user_gravity(id0.75);
            }
            case 
3
            {
                
//Level 3
                
set_user_gravity(id0.6875);
            }
            case 
10:
            {
            
                
//Level 4
                
set_user_gravity(id0.1);
            }
        }
    }
    
    if (
PlayerClass[id] == CLASS_SpeedKnifer)
    {
        switch(
PlayerLevel[id])
        {
            case 
5:
            {
                
set_user_maxspeed(id Float:300.0);
            }
            case 
10:
            
set_user_rendering(idkRenderFxGlowShell000kRenderTransAlpha0); 
            }
            
        }
    
    
    return 
1;
}
public 
RoundStart(id)
{
    if(
is_user_connected(id))
    {
        switch(
cs_get_user_team(id))
        {
            case 
CS_TEAM_CT:
            {
                
PlayerClass[id] == CLASS_SpeedKnifer;
            }
            case 
CS_TEAM_T:
            {
                
PlayerClass[id] == CLASS_HighGravity;
            }
        }
    }

2reason2kill is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 03:27.


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