|
Senior Member
|

08-06-2011
, 08:32
Re: [Help]How Do i Set X Class to T and Y Class To Ct
|
#2
|
Quote:
Originally Posted by abdul-rehman
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_Kill, gCvar_Knife, gCvar_HS, gCvar_Enable, g_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( 1 ); new headshot = read_data( 3 ); new clip, ammo, weapon = get_user_weapon(attacker, clip, ammo);
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_print( id, print_chat, "%s Congratulations! You are a level %i %s!", PREFIX, PlayerLevel[id], CLASSES[PlayerClass[id]]); } } ShowHud(id); }
public ShowHud(id) { set_hudmessage(255, 0, 0, 0.75, 0.01, 0, 6.0, 15.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_print( id, print_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 , 5 , szName , 63 , callback);
new i = str_to_num(szCommand); if(PlayerClass[id] != i) { PlayerClass[id] = i; client_print( id, print_chat, "%s You are now a %s", PREFIX, CLASSES[i]);
} else { client_print( id, print_chat, "%s You are already a %s", PREFIX, CLASSES[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(id, AuthID, 34); new vaultkey[64], vaultdata[256]; format(vaultkey, 63, "%s-Mod", AuthID); format(vaultdata, 255, "%i#%i#", PlayerXP[id], PlayerLevel[id]); nvault_set(g_Vault, vaultkey, vaultdata); return PLUGIN_CONTINUE; }
public LoadData(id) { new AuthID[35]; get_user_authid(id,AuthID,34); new vaultkey[64], vaultdata[256]; format(vaultkey, 63, "%s-Mod", AuthID); format(vaultdata, 255, "%i#%i#", PlayerXP[id], PlayerLevel[id]); nvault_get(g_Vault, vaultkey, vaultdata,255);
replace_all(vaultdata, 255, "#", " ");
new playerxp[32], playerlevel[32];
parse(vaultdata, playerxp, 31, playerlevel, 31);
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_exp( id, level,cid ) { if( ! cmd_access ( id, level, cid, 3 ) ) return PLUGIN_HANDLED;
new target[32], amount[21], reason[21];
read_argv( 1, target, 31 ); read_argv(2, amount, 20 ); read_argv( 3, reason, 20 );
new player = cmd_target( id, target, 8 );
if( ! player ) return PLUGIN_HANDLED;
new admin_name[32], player_name[32]; get_user_name( id, admin_name, 31 ); get_user_name( player, player_name, 31 );
new expnum = str_to_num( amount );
PlayerXP[player] += expnum;
switch( get_cvar_num ( "amx_show_activity" ) ) { case 1: client_print( 0, print_chat, "ADMIN: gave %i points for %s.", expnum, player_name ); case 2: client_print( 0, print_chat, "ADMIN %s: gave %i points for %s.", admin_name, expnum, player_name ); }
client_print( player, print_chat, "[%s] You received %i points. (Total: %d)", PREFIX, expnum, PlayerXP[player] ); SaveData( id );
return PLUGIN_CONTINUE; } public cmd_take_exp( id, level,cid ) { if( ! cmd_access ( id, level, cid, 3 ) ) return PLUGIN_HANDLED;
new target[32], amount[21], reason[21];
read_argv( 1, target, 31 ); read_argv( 2, amount, 20 ); read_argv( 3, reason, 20 );
new player = cmd_target( id, target, 8 );
if( ! player ) return PLUGIN_HANDLED;
new admin_name[32], player_name[32]; get_user_name( id, admin_name, 31 ); get_user_name( player, player_name, 31 );
new expnum = str_to_num( amount );
PlayerXP[player] -= expnum;
switch(get_cvar_num("amx_show_activity")) { case 1: client_print( 0, print_chat, "ADMIN: took %i points from %s.", expnum, player_name ); case 2: client_print( 0, print_chat, "ADMIN %s: took %i points from %s.", admin_name, expnum, player_name ); }
client_print( player, print_chat, "%s You lost %i points. (Total: %d)", PREFIX, expnum, PlayerXP[player] ); SaveData( id );
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(id, 0.75); } case 3: { //Level 3 set_user_gravity(id, 0.6875); } case 10: { //Level 4 set_user_gravity(id, 0.1); } } } if (PlayerClass[id] == CLASS_SpeedKnifer) { switch(PlayerLevel[id]) { case 5: { set_user_maxspeed(id , Float:300.0); } case 10: set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 0); } } 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; } } } }
|
|